Системная шина — это единая компьютерная шина , которая соединяет основные компоненты компьютерной системы, сочетая в себе функции шины данных для передачи информации, адресной шины для определения того, куда ее следует отправлять или читать, и шины управления для определения ее операция. Этот метод был разработан для снижения затрат и улучшения модульности, и, хотя он был популярен в 1970-х и 1980-х годах, более современные компьютеры используют множество отдельных шин, адаптированных к более конкретным потребностям.
Шина системного уровня (в отличие от внутренних шин передачи данных ЦП ) соединяет ЦП с памятью и устройствами ввода-вывода. [1] Обычно шина системного уровня предназначена для использования в качестве объединительной платы . [2]
Многие из компьютеров были основаны на первом проекте отчета по отчету EDVAC, опубликованном в 1945 году. В так называемой архитектуре фон Неймана был центральный блок управления и арифметико-логический блок (АЛУ, который он назвал центральной арифметической частью). были объединены с памятью компьютера и функциями ввода и вывода, чтобы сформировать хранимую программу компьютера . [3] В отчете представлена общая организация и теоретическая модель компьютера, но не реализация этой модели. [4] Вскоре конструкции интегрировали блок управления и АЛУ в так называемый центральный процессор (ЦП).
Компьютеры 1950-х и 1960-х годов, как правило, создавались по индивидуальному заказу. Например, процессор, память и блоки ввода/вывода представляли собой один или несколько шкафов, соединенных кабелями. Инженеры использовали общепринятые методы стандартизированных пучков проводов и расширили концепцию, поскольку в этих ранних машинах для крепления печатных плат использовались объединительные платы . Название «шина» уже использовалось для обозначения « шин », по которым электроэнергия подавалась к различным частям электрических машин, включая ранние механические калькуляторы. [5] Появление интегральных схем значительно уменьшило размер каждого компьютерного блока, а шины стали более стандартизированными. [6] Стандартные модули можно было соединять между собой более единообразным образом, их было легче разрабатывать и поддерживать.
Чтобы обеспечить еще большую модульность при снижении стоимости, шины памяти и ввода-вывода (а также необходимые шины управления и питания ) иногда объединялись в одну унифицированную системную шину. [7] Модульность и стоимость стали важны, поскольку компьютеры стали достаточно маленькими, чтобы поместиться в одном шкафу (и клиенты ожидали аналогичного снижения цен). Digital Equipment Corporation (DEC) еще больше снизила стоимость серийных миникомпьютеров и разместила ввод-вывод в шине памяти, так что устройства выглядели как ячейки памяти. Это было реализовано в Unibus PDP -11 примерно в 1969 году, устранив необходимость в отдельной шине ввода-вывода. [8] Даже компьютеры, такие как PDP-8, без ввода-вывода с отображением в памяти, вскоре были оснащены системной шиной, которая позволяла подключать модули к любому слоту. [9] Некоторые авторы назвали это новой упрощенной «моделью» компьютерной архитектуры. [10]
Многие ранние микрокомпьютеры (с центральным процессором, как правило, на одной интегральной схеме ) были построены с одной системной шиной, начиная с шины S-100 в компьютерной системе Altair 8800 примерно в 1975 году. [11] IBM PC использовал стандартную отраслевую архитектуру. (ISA) в качестве системной шины в 1981 году. Пассивные объединительные платы ранних моделей были заменены стандартом размещения ЦП и ОЗУ на материнской плате , с размещением только дополнительных дочерних плат или карт расширения в слотах системной шины.
Multibus стал стандартом Института инженеров по электротехнике и электронике как стандарт IEEE 796 в 1983 году. [ 12] Компания Sun Microsystems разработала SBus в 1989 году для поддержки карт расширения меньшего размера. [13] Самый простой способ реализовать симметричную многопроцессорную обработку заключался в подключении более одного процессора к общей системной шине, которая использовалась в 1980-х годах. Однако общая шина быстро стала узким местом, и были изучены более сложные методы подключения. [14]
Даже в очень простых системах шина данных в разное время управляется памятью программ, ОЗУ и устройствами ввода-вывода. Чтобы предотвратить конфликты на шине данных, в любой момент только одно устройство управляет шиной данных. В очень простых системах только шина данных должна быть двунаправленной. В очень простых системах регистр адреса памяти всегда управляет шиной адреса, блок управления всегда управляет шиной управления, а декодер адреса выбирает, какому конкретному устройству разрешено управлять шиной данных во время этого цикла шины. В очень простых системах каждый цикл команд начинается с цикла чтения памяти, когда программная память передает команду на шину данных, в то время как регистр команд фиксирует эту команду из шины данных. Некоторые инструкции продолжаются циклом ЗАПИСИ в память, когда регистр данных памяти передает данные по шине данных в выбранное ОЗУ или устройство ввода-вывода. Другие инструкции продолжаются с другого цикла чтения памяти, в котором выбранное ОЗУ, память программ или устройство ввода-вывода передает данные на шину данных, в то время как регистр данных памяти фиксирует эти данные из шины данных.
Более сложные системы имеют шину с несколькими главными устройствами — они не только имеют множество устройств, каждое из которых управляет шиной данных, но также имеют множество мастеров шины , каждое из которых управляет адресной шиной. Адресная шина, как и шина данных в системах отслеживания шины, должна быть двунаправленной шиной, часто реализуемой как шина с тремя состояниями . Чтобы предотвратить конфликты на адресной шине, арбитр шины выбирает, какому конкретному мастеру шины разрешено управлять адресной шиной во время этого цикла шины.
Intel использовала термин Dual Independent Bus (DIB) для двух разных целей. Первый произошел, когда Intel перешла с одной локальной шины на DIB, используя внешнюю переднюю шину для основной системной памяти и устройств ввода-вывода, а внутреннюю заднюю шину для кэша ЦП L2 . Это было введено в Pentium Pro в 1995 году. [15] [16] [17]
В 2005 и 2006 годах Intel представила наборы микросхем 8500 и 5000, где DIB обозначал две передние шины набора микросхем, что удваивает пропускную способность системы по сравнению с использованием всего одной FSB, общей для всех процессоров. Однако информация, необходимая для обеспечения согласованности кэша общих данных, расположенных в разных кэшах, должна отправляться широковещательно (отслеживаться) для проверки состояния кэша других процессоров FSB, что снижает доступную пропускную способность. Чтобы уменьшить когерентный трафик, в наборы микросхем более высокого класса был включен отслеживающий фильтр , чтобы информация о состоянии кэша была доступна на наборе микросхем. В 2007 году Intel расширила идею нескольких шин в наборе микросхем 7300 четырьмя независимыми системными шинами, назвав ее выделенными высокоскоростными межсоединениями (DHSI). [18]
Подход к системной шине устарел в современных персональных и серверных компьютерах, в которых вместо этого используются высокопроизводительные технологии межсоединения, такие как HyperTransport и Intel QuickPath Interconnect , в то время как архитектура системной шины продолжает использоваться в более простых встроенных микропроцессорах. Системная шина может даже быть внутренней по отношению к одной интегральной схеме, образуя систему на кристалле . Примеры включают AMBA , CoreConnect и Wishbone . [19]
Интерфейс Direct Media — это пример системной шины (помимо линий PCIE с прямым доступом ), реализованной Intel и известной как минимум с 2004 года. В основном он используется для доступа к устройствам ввода-вывода с отображением в памяти и связи ЦП с набором микросхем .