130

Интуитивно понятно, что параллельная передача данных должна быть быстрее, чем последовательная передача данных; параллельно вы передаете много битов одновременно, тогда как в последовательном вы делаете один бит за раз.

Так что же делает интерфейсы SATA быстрее PATA, устройства PCI-e быстрее PCI и последовательные порты быстрее параллельных?

5 ответов5

142

Вы не можете сформулировать это так.

Последовательная передача медленнее, чем параллельная передача при той же частоте сигнала. При параллельной передаче вы можете передавать одно слово за цикл (например, 1 байт = 8 бит), но при последовательной передаче только его часть (например, 1 бит).

Причина, по которой современные устройства используют последовательную передачу, заключается в следующем:

  • Вы не можете увеличивать частоту сигнала для параллельной передачи без ограничений, потому что, по замыслу, все сигналы от передатчика должны поступать в приемник одновременно. Это не может быть гарантировано для высоких частот, так как вы не можете гарантировать, что время прохождения сигнала будет одинаковым для всех сигнальных линий (представьте разные пути на материнской плате). Чем выше частота, тем более крошечные различия имеют значение. Следовательно, приемник должен ждать, пока все сигнальные линии не установятся - очевидно, ожидание снижает скорость передачи.

  • Еще один хороший момент (из этого поста) заключается в том, что необходимо учитывать перекрестные помехи с параллельными сигнальными линиями. Чем выше частота, тем более выраженными будут перекрестные помехи, а вместе с тем и выше вероятность искажения слова и необходимости его повторной передачи. 1

Таким образом, даже если вы передаете меньше данных за цикл при последовательной передаче, вы можете перейти на гораздо более высокие частоты, что приводит к более высокой чистой скорости передачи.


1 Это также объясняет, почему кабели UDMA (Parallel ATA с повышенной скоростью передачи) имели в два раза больше проводов, чем штырьков. Каждый второй провод был заземлен для уменьшения перекрестных помех.

69

Проблема в синхронизации.

Когда вы отправляете параллельно, вы должны измерить все линии в один и тот же момент, так как вы идете быстрее, размер окна в этот момент становится все меньше и меньше, в конце концов он может стать настолько маленьким, что некоторые провода могут все еще стабилизироваться. в то время как другие закончили, прежде чем у вас закончилось время.

При отправке в последовательном режиме вам больше не нужно беспокоиться о стабилизации всех линий, только одна строка. Кроме того, экономически выгоднее, чтобы одна линия стабилизировалась в 10 раз быстрее, чем добавлять 10 линий с той же скоростью.

Некоторые вещи, такие как PCI Express, делают лучшее из обоих миров, они выполняют параллельный набор последовательных подключений (16-кратный порт на вашей материнской плате имеет 16 последовательных подключений). При этом каждая строка не обязательно должна быть идеально синхронизирована с другими строками, если только контроллер на другом конце может переупорядочивать "пакеты" данных, когда они поступают в правильном порядке.

Страница How Stuff Works для PCI-Express дает очень хорошее объяснение того, как PCI Express в последовательном соединении может быть быстрее, чем PCI или PCI-X параллельно.


Версия TL; DR: проще установить одно соединение в 16 раз быстрее, чем 8 соединений в 2 раза быстрее, как только вы достигнете очень высоких частот.

18

Параллель не медленна по своей сути, но она создает проблемы, которых нет в последовательной связи.

Но многие из самых быстрых ссылок все еще параллельны: лицевая шина вашего компьютера, как правило, сильно параллельна и обычно является одной из самых быстрых взаимосвязей в компьютере. Волоконно-оптические соединения также могут быть высокопараллельными, передавая несколько длин волн по одному волокну. Это дорого и потому не типично. Наиболее распространенная форма Gigabit Ethernet - это 4 параллельных канала 250 Мбит Ethernet в одном проводе.

Наиболее выраженная проблема, вызванная параллелизмом, - это "перекрестные помехи": когда ток сигнала начинается или прекращается, он на мгновение вызывает небольшой ток на проводах рядом с ним. Чем быстрее сигнал, тем чаще это происходит, и тем сложнее его отфильтровать. Параллельная IDE попыталась минимизировать эту проблему, удвоив количество проводов в ленточном кабеле и подключив каждый второй провод к земле. Но это решение только поможет вам. Длинные кабели, сгибы и петли, а также близость к другим ленточным кабелям делают это ненадежным решением для очень высокоскоростных сигналов.

Но если вы используете только одну сигнальную линию, тогда вы можете переключать ее так быстро, как позволит ваше оборудование. Это также решает тонкие проблемы синхронизации с некоторыми сигналами, проходящими быстрее, чем другие.

Два провода всегда теоретически в два раза быстрее, чем один, но каждая добавляемая вами сигнальная линия слегка усложняет физику, чего может быть лучше избежать.

12

Последовательная передача данных не быстрее, чем параллельная. Это более удобно, и поэтому разработка направлена на создание быстрого внешнего последовательного интерфейса между блоками оборудования. Никто не хочет иметь дело с ленточными кабелями, которые имеют 50 или более проводников.

Между микросхемами на печатной плате гораздо проще работать с последовательным протоколом, таким как I2C, для которого требуется только два провода, чем маршрутизация многочисленных параллельных трасс.

Но на вашем компьютере есть множество примеров, где параллелизм используется для значительного увеличения пропускной способности. Например, слова не читаются один бит за раз из памяти. И на самом деле, кеши пополняются большими блоками. Растровые дисплеи являются еще одним примером: параллельный доступ к нескольким банкам памяти, чтобы получить пиксели быстрее, параллельно. Пропускная способность памяти критически зависит от параллелизма.

Это устройство ЦАП, рекламируемое Tektronix как «самый быстрый в мире коммерческий 10-разрядный высокоскоростной ЦАП», активно использует параллелизм для ввода данных, которые поступают в ЦАП более чем по 320 линиям, которые сокращаются до 10 благодаря двум этапам мультиплексирования. ведомые разными подразделениями мастера 12 ГГц, часы. Если бы самый быстрый в мире 10-битный ЦАП мог быть сделан с использованием одной последовательной линии ввода, то, вероятно, так и было бы.

10

Параллельно был очевидный способ увеличить скорость, когда логические элементы были достаточно медленными, чтобы можно было использовать аналогичные электрические методы для шин / кабелей и передачи на кристалле. Если вы уже переключаете провод так быстро, как позволяет ваш транзистор, то единственный способ масштабирования - использовать больше проводов.

Со временем закон Мура превзошел электромагнитные ограничения, поэтому передача по кабелю или даже по бортовым шинам стала узким местом по сравнению со скоростью на кристалле. OTOH, несоответствие скорости позволяет сложной обработке на концах использовать канал более эффективно.

  • Как только задержка распространения приближается к порядку нескольких часов, вы начинаете беспокоиться об аналоговых эффектах, таких как отражения =>, вам необходимо согласованное сопротивление по пути (особенно сложно для соединителей) и вы предпочитаете двухточечные провода многоточечным шинам. Вот почему для SCSI требовалось оконечное подключение, а для USB нужны концентраторы вместо простых сплиттеров.

  • На более высоких скоростях у вас есть несколько битов в полете в любой заданный момент времени по линии => вам нужно использовать конвейерные протоколы (именно поэтому протоколы Intel FSB стали ужасно сложными; я думаю, что пакетные протоколы, такие как PCIe, были реакцией на эту сложность).

    Другим эффектом является многоцикловый штраф за переключение направления потока сигнала, поэтому Firewire, SATA и PCIe с использованием выделенных проводов в каждом направлении превзошли USB 2.0.

  • Индуцированный шум, или перекрестные помехи, увеличивается с частотой. Самый большой прогресс в скорости произошел из-за использования дифференциальной сигнализации, которая значительно уменьшила перекрестные помехи (математически поле несбалансированного заряда уменьшается как R ^ 2, а поле диполя уменьшается как R ^ 3).

    Я думаю, что именно это вызвало впечатление «последовательный быстрее, чем параллельный» - скачок был настолько велик, что вы могли сократить до 1 или 2 дифференциальных пар и при этом быть быстрее, чем кабели LPT или IDE. Был также выигрыш от перекрестных помех из-за наличия только одной пары сигналов в кабеле, но это незначительно.

  • Задержка распространения провода варьируется (как из-за того, что длины проводов трудно согласовать при поворотах на 90º, разъемах и т.д., Так и из-за паразитных воздействий от других проводников), что делает синхронизацию проблемой.

    Решение состояло в том, чтобы иметь настраиваемые задержки на каждом приемнике и настраивать их при запуске и / или постоянно на основе самих данных. Кодирование данных, чтобы избежать полос 0 или 1, приводит к небольшим накладным расходам, но имеет электрические преимущества (избегает дрейфа постоянного тока, контролирует спектр) и, что наиболее важно, позволяет полностью отключить провод (ы) синхросигнала (что не так уж сложно для 40 сигналы, но очень важно, чтобы последовательный кабель имел 1 или 2 пары вместо 2 или 3).

Обратите внимание , что мы бросаем параллелизм в узком месте - современный BGA чипы имеют сотни или тысячи булавок, печатные платы имеют все больше и больше слоев. Сравните это со старыми 40-контактными микроконтроллерами и двухслойными печатными платами ...

Большинство из перечисленных методов стали незаменимыми как для параллельной, так и для последовательной передачи. Просто чем длиннее провода, тем привлекательнее становится увеличение скорости через меньшее количество проводов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .