В компьютерной архитектуре, шина (сокращение от латинского omnibus, исторически также называемая магистралью данных) - это система связи, которая передает данные между компонентами внутри компьютер, или между компьютерами. Это выражение охватывает все связанные компоненты оборудования (провод, оптоволокно и т. Д.) И программное обеспечение, включая протоколы связи.
Ранние компьютерные шины были параллельные электрические провода с несколькими аппаратными соединениями, но теперь этот термин используется для любой физической схемы, которая обеспечивает ту же логическую функцию, что и параллельная электрическая шина . Современные компьютерные шины могут использовать как параллельное, так и последовательное соединение, и могут быть подключены либо в многоточечном соединении (электрическое параллельное соединение), либо в гирляндной цепи <20.>топологии или подключены коммутируемыми концентраторами, как в случае USB.
Компьютерные системы обычно состоят из трех основных частей:
Ранний компьютер мог содержать подключенный вручную ЦП из электронных ламп, магнитный барабан для основной памяти, и перфолента и принтер для чтения и записи данных соответственно. Современная система может иметь многоядерный ЦП, DDR4 SDRAM для памяти, твердотельный накопитель для вторичной памяти, видеокарта и ЖК-дисплей в качестве системы отображения, мышь и клавиатура для взаимодействия и Wi-Fi подключение для сети. В обоих примерах компьютерные шины той или иной формы перемещают данные между всеми этими устройствами.
В большинстве традиционных компьютерных архитектур ЦП и основная память, как правило, тесно связаны. Микропроцессор обычно представляет собой одну микросхему, которая имеет ряд электрических соединений на своих контактах, которые можно использовать для выбора «адреса» в основной памяти и еще один набор контактов для чтения и записи данных, хранящихся в этом месте. В большинстве случаев ЦП и память имеют общие характеристики сигнализации и работают в режиме синхронно. Шина, соединяющая ЦП и память, является одной из определяющих характеристик системы, и ее часто называют просто системной шиной.
. Можно разрешить периферийным устройствам обмениваться данными с памятью таким же образом, подключив адаптеры в в виде плат расширения напрямую к системной шине. Обычно это достигается через какой-то стандартизированный электрический соединитель, некоторые из которых образуют шину расширения или локальную шину. Однако, поскольку производительность разница между ЦП и периферийными устройствами сильно различается, обычно требуется какое-то решение, чтобы периферийные устройства не снижали общую производительность системы. Многие процессоры имеют второй набор контактов, аналогичный тем, которые используются для связи с памятью, но могут работать с очень разными скоростями и с использованием разных протоколов. Другие используют интеллектуальные контроллеры для размещения данных непосредственно в памяти, концепция, известная как прямой доступ к памяти. Большинство современных систем сочетают в себе оба решения там, где это необходимо.
По мере роста числа потенциальных периферийных устройств использование карты расширения для каждого периферийного устройства становилось все более неприемлемым. Это привело к появлению шинных систем, специально разработанных для поддержки нескольких периферийных устройств. Распространенными примерами являются порты SATA на современных компьютерах, которые позволяют подключать несколько жестких дисков без необходимости в карте. Однако эти высокопроизводительные системы, как правило, слишком дороги для реализации в устройствах низкого уровня, таких как мышь. Это привело к параллельной разработке ряда низкопроизводительных шинных систем для этих решений, наиболее распространенным примером является стандартизованная универсальная последовательная шина (USB). Все такие примеры могут упоминаться как периферийные шины, хотя эта терминология не является универсальной.
В современных системах разница в производительности между процессором и основной памятью настолько выросла, что увеличивающийся объем высокоскоростной памяти встроен непосредственно в центральный процессор, известный как кэш. В таких системах процессоры обмениваются данными с помощью высокопроизводительных шин, которые работают со скоростью, намного превышающей скорость памяти, и обмениваются данными с памятью с использованием протоколов, аналогичных тем, которые использовались исключительно для периферийных устройств в прошлом. Эти системные шины также используются для связи с большинством (или всеми) другими периферийными устройствами через адаптеры, которые, в свою очередь, взаимодействуют с другими периферийными устройствами и контроллерами. Такие системы архитектурно больше похожи на мультикомпьютеры, обменивающиеся данными по шине, а не по сети. В этих случаях шины расширения полностью разделены и больше не имеют общей архитектуры со своим центральным процессором (и фактически могут поддерживать множество различных процессоров, как в случае с PCI ). То, что раньше было системной шиной, теперь часто называют внешней шиной.
. С учетом этих изменений, классические термины «система», «расширение» и «периферийное устройство» больше не имеют одинаковых значений. Другие распространенные системы категоризации основаны на основной роли шины, соединяющей устройства внутри или снаружи, например, PCI по сравнению с SCSI. Однако для обоих можно использовать многие распространенные современные шинные системы; SATA и связанный с ним eSATA являются одним из примеров системы, которая раньше описывалась как внутренняя, в то время как некоторые автомобильные приложения используют в основном внешний IEEE 1394 в некотором роде. больше похоже на системную шину. Другие примеры, такие как InfiniBand и I²C, с самого начала были разработаны для внутреннего и внешнего использования.
Внутренняя шина, также известная как внутренняя шина данных, шина памяти, системная шина или внешняя шина, соединяет все внутренние компоненты компьютера, такие как ЦП и память, с материнской платой. Внутренние шины данных также называют локальными шинами, потому что они предназначены для подключения к локальным устройствам. Эта шина обычно довольно быстрая и не зависит от остальных операций компьютера.
Внешняя шина, или шина расширения, состоит из электронных каналов, которые соединяют различные внешние устройства, такие как принтер и т. Д., С компьютер.
Адресная шина - это шина, которая используется для указания физического адреса. Когда устройству с процессором или DMA требуется прочитать или записать в ячейку памяти, она указывает эту ячейку памяти на адресной шине (значение для чтения или записи отправляется на шина данных ). Ширина адресной шины определяет объем памяти, который может адресовать система. Например, система с 32-битной адресной шиной может адресовать 2 (4294967296) ячеек памяти. Если каждая ячейка памяти содержит один байт, размер адресуемой памяти составляет 4 ГиБ.
Ранние процессоры использовали провод для каждого бита ширины адреса. Например, 16-битная адресная шина имеет 16 физических проводов, составляющих шину. По мере того, как шины становились шире и длиннее, этот подход стал дорогим с точки зрения количества выводов микросхемы и следов на плате. Начиная с Mostek 4096 DRAM, мультиплексирование адресов, реализованное с помощью мультиплексоров, стало обычным явлением. В схеме мультиплексированного адреса адрес передается двумя равными частями по чередующимся циклам шины. Это вдвое сокращает количество сигналов адресной шины, необходимых для подключения к памяти. Например, 32-битная адресная шина может быть реализована с использованием 16 строк и отправкой первой половины адреса памяти, за которой сразу следует вторая половина адреса памяти.
Обычно 2 дополнительных контакта на шине управления - строб адреса строки (RAS) и строб адреса столбца (CAS) - используются, чтобы сообщить DRAM, отправляет ли адресная шина в данный момент первый половина адреса памяти или вторая половина.
Для доступа к отдельному байту часто требуется чтение или запись всей ширины шины (слово ) сразу. В этих случаях наименее значимые биты адресной шины могут даже не быть реализованы - вместо этого контролирующее устройство несет ответственность за изоляцию отдельного требуемого байта от всего передаваемого слова. Так обстоит дело, например, с локальной шиной VESA, в которой отсутствуют два младших бита, что ограничивает эту шину выровненной 32-битной передачей.
Исторически было также несколько примеров компьютеров, которые могли адресовать только слова - машинные слова.
Шины могут быть параллельными шинами, которые передают слова данных параллельно по нескольким проводам, или последовательные шины, которые переносят данные в последовательной битовой форме. Добавление дополнительных силовых и управляющих соединений, дифференциальных драйверов и соединений для передачи данных в каждом направлении обычно означает, что большинство последовательных шин имеют больше проводников, чем минимум из проводников, используемых в 1-Wire и UNI / O. По мере увеличения скорости передачи данных проблемы, связанные с синхронизацией, потребляемой мощностью, электромагнитными помехами и перекрестными помехами на параллельных шинах, становится все труднее и труднее обойти. Частичное решение этой проблемы заключалось в двойной прокачке шины. Часто последовательная шина может работать с более высокими общими скоростями передачи данных, чем параллельная шина, несмотря на меньшее количество электрических соединений, поскольку последовательная шина по своей сути не имеет временного сдвига или перекрестных помех. USB, FireWire и Serial ATA являются примерами этого. Многоточечные соединения плохо работают для быстрых последовательных шин, поэтому в большинстве современных последовательных шин используются конструкции гирляндного подключения или концентраторы.
Сетевые соединения, такие как Ethernet, обычно не считаются шинами, хотя различие в основном концептуальное, а не практическое. Атрибут, обычно используемый для характеристики шины, заключается в том, что шина обеспечивает питание подключенного оборудования. Это подчеркивает происхождение шины шины архитектуры шины как коммутируемое или распределенное питание. Сюда не входят такие схемы, как шины, такие как последовательный RS-232, параллельный Centronics, IEEE 1284 интерфейсы и Ethernet, поскольку для этих устройств также требовались отдельные источники питания. Устройства с универсальной последовательной шиной могут использовать питание от шины, но часто используют отдельный источник питания. Это различие иллюстрируется системой телефонной с подключенным модемом, где соединение RJ11 и связанная с ним схема модулированной сигнализации не считается шиной и аналогична соединение Ethernet. Схема подключения телефонной линии не рассматривается как шина в отношении сигналов, но центральный офис использует шины с переключающими планками для соединения между телефонами.
Однако это различие - «что питание обеспечивается шиной» - не имеет места во многих авиационных системах, где соединения данных, такие как ARINC 429, ARINC 629, MIL-STD-1553B (STANAG 3838) и EFABus (STANAG 3910 ) обычно называют «шинами данных» или, иногда, «шинами данных». ". Такие шины бортовых данных обычно характеризуются наличием нескольких устройств или элементов / блоков, заменяемых по линии (LRI / LRU), подключенных к общему, совместно используемому носителю. Они могут, как и в случае с ARINC 429, быть симплексными, то есть иметь LRI / LRU с одним источником или, как в ARINC 629, MIL-STD-1553B и STANAG 3910, быть дуплексными, позволяют всем подключенным LRI / LRU действовать в разное время (полудуплекс ) как передатчики и приемники данных.
Некоторые процессоры используют выделенный провод для каждого бита адресной шины, шины данных и шины управления. Например, 64-контактный STEbus состоит из 8 физических проводов, выделенных для 8-разрядной шины данных, 20 физических проводов, выделенных для 20-разрядной адресной шины, 21 физического провода, выделенного для шины управления, и 15 физических проводов, предназначенных для различных силовых шин.
Для мультиплексирования шины требуется меньше проводов, что снижает затраты на многие ранние микропроцессоры и микросхемы DRAM. Одна общая схема мультиплексирования, адресное мультиплексирование, уже упоминалась. Другая схема мультиплексирования повторно использует контакты адресной шины в качестве контактов шины данных, подход, используемый обычным PCI. Различные «последовательные шины» можно рассматривать как окончательный предел мультиплексирования, отправляя каждый из бит адреса и каждый бит данных по одному через один вывод (или одну дифференциальную пару).
Со временем несколько групп людей работали над различными стандартами компьютерных шин, в том числе Комитет по стандартам архитектуры шины IEEE (BASC), исследовательская группа IEEE «Superbus», инициатива открытых микропроцессоров. (OMI), инициатива открытых микросистем (OMI), «Банда девяти», разработавшая EISA и т. Д.
Ранний компьютер шин представляли собой пучки проводов, к которым компьютерная память и периферийные устройства. Анекдотично названные «цифровым стволом», они были названы в честь электрических силовых шин или шин. Почти всегда была одна шина для памяти и одна или несколько отдельных шин для периферийных устройств. Доступ к ним осуществлялся по отдельным инструкциям, с совершенно разными таймингами и протоколами.
Одной из первых сложностей было использование прерываний. Ранние компьютерные программы выполняли ввод-вывод посредством , ожидая в цикле готовности периферийного устройства. Это была пустая трата времени для программ, у которых были другие задачи. Кроме того, если программа попытается выполнить эти другие задачи, повторная проверка может занять слишком много времени, что приведет к потере данных. Таким образом, инженеры устроили так, чтобы периферийные устройства прерывали работу ЦП. Прерываниям необходимо было установить приоритет, потому что ЦП может выполнять код только для одного периферийного устройства за раз, а некоторые устройства более критичны по времени, чем другие.
В системах высшего класса появилась идея контроллеров каналов, которые по сути представляли собой небольшие компьютеры, предназначенные для обработки ввода и вывода данной шины. IBM представила их на IBM 709 в 1958 году, и они стали общей чертой их платформ. Другие высокопроизводительные поставщики, такие как Control Data Corporation, реализовали аналогичные конструкции. Как правило, контроллеры каналов будут делать все возможное, чтобы выполнять все операции шины внутри, перемещая данные, когда было известно, что ЦП занят в другом месте, если это возможно, и только при необходимости используя прерывания. Это значительно снизило нагрузку на ЦП и повысило общую производительность системы.
Одиночная системная шинаДля обеспечения модульности шины памяти и ввода-вывода могут быть объединены в единую системную шину . В этом случае можно использовать единую механическую и электрическую систему для соединения вместе многих компонентов системы или, в некоторых случаях, всех из них.
Позже компьютерные программы стали использовать общую память для нескольких процессоров. Доступ к этой шине памяти также должен быть приоритетным. Самый простой способ установить приоритеты прерываний или доступа к шине - использовать гирляндную цепочку . В этом случае сигналы будут естественно проходить через шину в физическом или логическом порядке, что устраняет необходимость в сложном планировании.
Digital Equipment Corporation (DEC) дополнительно снизили стоимость серийных миникомпьютеров и подключенных периферийных устройств к шине памяти, так что устройства ввода и вывода оказались ячейками памяти. Это было реализовано в Unibus из PDP-11 примерно в 1969 году.
Ранние системы микрокомпьютеров были по существу пассивной объединительной платой . подключен напрямую или через буферные усилители к контактам CPU. Память и другие устройства будут добавлены к шине с использованием тех же адресов и выводов данных, что и сам ЦП, подключенных параллельно. Связь контролировалась ЦП, который считывал и записывал данные с устройств, как если бы они были блоками памяти, используя одни и те же инструкции, синхронизируемые центральными часами, контролирующими скорость ЦП. Тем не менее, устройства прервали ЦП, передавая сигналы на отдельные выводы ЦП.
Например, контроллер дискового накопителя будет сигнализировать ЦП, что новые данные готовы к чтению, и в этот момент ЦП переместит данные, считывая «ячейку памяти», которая соответствует к дисководу. Почти все ранние микрокомпьютеры были построены таким образом, начиная с шины S-100 в компьютерной системе Altair 8800.
В некоторых случаях, особенно в IBM PC, хотя может использоваться аналогичная физическая архитектура, инструкции для доступа к периферийным устройствам (in
и out
) и память (mov
и другие) вообще не были унифицированы и по-прежнему генерируют отдельные сигналы ЦП, которые можно использовать для реализации отдельной шины ввода-вывода.
Эти простые шинные системы имели серьезный недостаток при использовании в компьютерах общего назначения. Все оборудование в автобусе должно было работать с одинаковой скоростью, так как оно использовало одни часы.
Увеличить скорость процессора становится сложнее, потому что скорость всех устройств также должна увеличиваться. Когда нецелесообразно или экономично иметь все устройства с такой скоростью, как ЦП, ЦП должен либо войти в состояние ожидания , либо временно работать с более низкой тактовой частотой, чтобы общаться с другими устройствами в компьютере. Хотя эта проблема допустима для встроенных систем, эта проблема долгое время не допускалась на компьютерах общего назначения, расширяемых пользователем.
Такие шинные системы также сложно сконфигурировать, если они построены из стандартного стандартного оборудования. Обычно для каждой добавляемой карты расширения требуется много перемычек для установки адресов памяти, адресов ввода / вывода, приоритетов прерываний и номеров прерываний.
шинные системы «второго поколения», такие как NuBus, решали некоторые из этих проблем. Обычно они разделяли компьютер на два «мира»: ЦП и память с одной стороны и различные устройства с другой. Контроллер шины принимает данные со стороны ЦП для перемещения на сторону периферийных устройств, тем самым перекладывая нагрузку на протокол связи с самого ЦП. Это позволило процессору и памяти развиваться отдельно от шины устройства или просто «шины». Устройства на шине могли общаться друг с другом без вмешательства процессора. Это привело к гораздо лучшей производительности в реальном мире, но также потребовало, чтобы карты были намного более сложными. Эти шины также часто решали проблемы скорости за счет «большего» размера тракта данных, переходя от 8-битных параллельных шин в первом поколении к 16- или 32-битным во втором, а также добавление настроек программного обеспечения (теперь стандартизованных как Plug-n-play ) для замены или замены перемычек.
Однако эти новые системы разделяли одно качество со своими более ранними собратьями: все в автобусе должны были говорить с одинаковой скоростью. В то время как ЦП был теперь изолирован и мог увеличивать скорость, ЦП и память продолжали увеличивать скорость намного быстрее, чем шины, с которыми они разговаривали. В результате скорость шины стала намного ниже, чем требовалось современной системе, и машинам не хватало данных. Наиболее частым примером этой проблемы было то, что видеокарты быстро превзошли даже более новые шинные системы, такие как PCI, и компьютеры начали включать AGP только для управления видео. открытка. К 2004 году AGP снова переросли высококачественные видеокарты и другое периферийное оборудование и были заменены новой шиной PCI Express.
Все большее количество внешних устройств также начали использовать свои собственные шинные системы. Когда дисковые накопители были впервые представлены, они добавлялись к машине с картой, вставленной в шину, поэтому компьютеры имеют так много слотов на шине. Но в течение 1980-х и 1990-х годов для удовлетворения этой потребности были введены новые системы, такие как SCSI и IDE, в результате чего большинство слотов в современных системах остались пустыми. Сегодня в типовой машине, вероятно, будет около пяти различных шин, поддерживающих различные устройства.
Автобусы «третьего поколения» появляются на рынке примерно с 2001 года, включая HyperTransport и InfiniBand. Они также имеют тенденцию быть очень гибкими с точки зрения их физических соединений, что позволяет использовать их как в качестве внутренних шин, так и для соединения различных машин вместе. Это может привести к сложным проблемам при попытке обслуживания различных запросов, поэтому большая часть работы над этими системами связана с проектированием программного обеспечения, а не с самим оборудованием. В целом, эти шины третьего поколения имеют тенденцию больше походить на сеть , чем на исходную концепцию шины, с более высокими затратами протокола, чем в ранних системах, а также позволяют нескольким устройствам использовать шину одновременно.
Автобусы, такие как Wishbone, были разработаны движением за аппаратное обеспечение с открытым исходным кодом с целью дальнейшего устранения юридических и патентных ограничений компьютерного дизайна.
Compute Express Link (CXL) - это открытый стандарт межсоединение для высокоскоростного CPU -to-device и CPU-to-memory, разработанные для повышения производительности центра обработки данных следующего поколения.
.