Системная шина — это единая компьютерная шина , которая соединяет основные компоненты компьютерной системы, объединяя функции шины данных для передачи информации, адресной шины для определения того, куда ее следует отправлять или откуда считывать, и шины управления для определения ее работы. Эта технология была разработана для снижения затрат и улучшения модульности, и хотя она была популярна в 1970-х и 1980-х годах, более современные компьютеры используют множество отдельных шин, адаптированных к более конкретным потребностям.
Шина системного уровня ( в отличие от внутренних шин каналов передачи данных ЦП ) соединяет ЦП с памятью и устройствами ввода-вывода. [1] Обычно шина системного уровня предназначена для использования в качестве объединительной платы . [2]
Многие из компьютеров были основаны на Первом проекте отчета по отчету EDVAC, опубликованном в 1945 году. В том, что стало известно как архитектура фон Неймана , центральный блок управления и арифметико-логическое устройство (АЛУ, которое он назвал центральной арифметической частью) были объединены с памятью компьютера и функциями ввода и вывода , чтобы сформировать компьютер с хранимой программой . [3] Отчет представил общую организацию и теоретическую модель компьютера, однако не реализацию этой модели. [4] Вскоре проекты объединили блок управления и АЛУ в то , что стало известно как центральный процессор (ЦП).
Компьютеры в 1950-х и 1960-х годах, как правило, конструировались по принципу ad-hoc. Например, процессор, память и блоки ввода/вывода представляли собой один или несколько шкафов, соединенных кабелями. Инженеры использовали распространенные методы стандартизированных пучков проводов и расширили концепцию, поскольку объединительные платы использовались для размещения печатных плат в этих ранних машинах. Название «шина» уже использовалось для « шинных шин », которые передавали электроэнергию к различным частям электрических машин, включая ранние механические калькуляторы. [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]
Даже в очень простых системах в разное время шина данных управляется программной памятью, ОЗУ и устройствами ввода-вывода. Чтобы предотвратить конфликт шины на шине данных, в любой момент времени только одно устройство управляет шиной данных. В очень простых системах только шина данных должна быть двунаправленной шиной. В очень простых системах регистр адреса памяти всегда управляет адресной шиной, блок управления всегда управляет управляющей шиной, а декодер адреса выбирает, какому конкретному устройству разрешено управлять шиной данных во время этого цикла шины. В очень простых системах каждый цикл инструкций начинается с цикла READ памяти, где программная память передает инструкцию на шину данных, в то время как регистр инструкций фиксирует эту инструкцию на шине данных. Некоторые инструкции продолжаются циклом WRITE памяти, где регистр данных памяти передает данные на шину данных в выбранное ОЗУ или устройство ввода-вывода. Другие инструкции продолжаются другим циклом READ памяти, где выбранное ОЗУ, программная память или устройство ввода-вывода передает данные на шину данных, в то время как регистр данных памяти фиксирует эти данные на шине данных.
Более сложные системы имеют многомастерную шину — они не только имеют много устройств, каждое из которых управляет шиной данных, но также имеют много мастеров шины , каждое из которых управляет адресной шиной. Адресная шина, а также шина данных в системах отслеживания шины должны быть двунаправленными, часто реализуемыми как трехсостоянная шина . Чтобы предотвратить конфликт шин на адресной шине, арбитр шины выбирает, какому конкретно мастеру шины разрешено управлять адресной шиной во время этого цикла шины.
Intel использовала термин Dual Independent Bus (DIB) для двух различных целей. Первая возникла, когда Intel перешла с одной локальной шины на DIB, используя внешнюю фронтальную шину для основной системной памяти и устройств ввода-вывода, а внутреннюю тыльную шину для кэша L2 CPU . Это было введено в Pentium Pro в 1995 году. [15] [16] [17]
В 2005 и 2006 годах Intel представила чипсеты 8500 и 5000, где DIB ссылался на две передние шины на чипсете, что удваивает пропускную способность системы по сравнению с использованием только одной FSB, общей для всех процессоров. Однако информация, необходимая для обеспечения согласованности кэша общих данных, расположенных в разных кэшах, должна быть отправлена в широковещательном режиме (snooped) для проверки состояния кэша процессоров других FSB, что снижает доступную пропускную способность. Чтобы уменьшить трафик согласованности, в чипсеты более высокого класса был включен фильтр snoop , чтобы иметь информацию о состоянии кэша, доступную на чипсете. В 2007 году Intel расширила идею нескольких шин в чипсете 7300 с четырьмя независимыми FSB, назвав это выделенными высокоскоростными межсоединениями (DHSI). [18]
Подход системной шины устарел в современных персональных и серверных компьютерах, которые вместо этого используют более производительные технологии соединения, такие как HyperTransport и Intel QuickPath Interconnect , в то время как архитектура системной шины продолжала использоваться на более простых встроенных микропроцессорах. Системная шина может быть даже внутренней для одной интегральной схемы, создавая систему на кристалле . Примерами являются AMBA , CoreConnect и Wishbone . [19]
Direct Media Interface — пример системной шины (помимо линий PCIE с прямым доступом ), реализованной Intel и известной как минимум с 2004 года. Она в основном используется для доступа к устройствам ввода-вывода, отображенным в памяти , и для связи ЦП с чипсетом .