Архитектура двойной независимой шины

Содержание

Общая информация

Применение динамического выполнения резко повышает частоту запросов процессорного ядра к шине за данными памяти и инструкциями, поскольку ядро одновременно обрабатывает несколько инструкций. Для обхода узкого места - внешней шины - кристалл процессорного ядра использует архитектуру двойной независимой шины (Dual Independent Bus). Одна из этих шин используется только для связи с кристаллами вторичного кэша, расположенными в том же корпусе микросхемы, а у Pentium-2 - на общем картридже. Эта шина является локальной и в геометрическом смысле - проводники имеют длину порядка единиц сантиметров, что позволяет ее использовать на частоте ядра процессора. Значительный объем вторичного кэша позволяет удовлетворять большинство запросов к памяти сугубо локально, при этом коэффициент загрузки шины достигает 90%. Вторая шина процессорного кристалла выходит на внешние выводы микросхемы, она и является системной шиной процессора Pentium Pro. Эта шина работает на внешней частоте независимо от внутренней шины. Загрузка процессором внешней шины для обычных рядовых применений составляет порядка 10% от ее пропускной способности, а для серверных применений может достигать 60% при четырехпроцессорной конфигурации. Таким образом, ограниченная пропускная способность внешней шины (533 Мбайт/с в пике пакетной передачи при частоте шины 66 МГц) перестает сильно сдерживать производительность процессора. Снижение нагрузки на внешнюю шину позволяет эффективно использовать многопроцессорную архитектуру.

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

Системная шина Pentium Pro и Pentium-2 более эффективна для объединения процессоров по симметричной архитектуре, чем шины предыдущих процессоров, оптимизированные для обмена с памятью. Она позволяет без дополнительных схем объединять до четырех процессоров.

Сигналы системной шины объединяются в группы запросов (Request) и ответов (Response). Каждое устройство-агент, подключенное к этой шине (например, любой из процессоров), до инициализации запроса должно получить через механизм арбитража право на использование шины запроса. Запрос выходит за два смежных такта: в первом такте передается адрес, тип обращения (чтение-запись памяти или ввода/вывода) и тому подобная информация. Во втором такте передается уникальный идентификатор транзакции, длина запроса, разрешенные байты шины и т. п. Через три такта после запроса проверяется состояние ошибки (error status) для защиты от ошибок передачи или нарушений протокола. Любая обнаруженная ошибка вызывает повтор запроса, а вторая ошибка для того же запроса вызывает исключение контроля (machine check exception).

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

Протокол шины Pentium Pro

В фазе завершения все агенты, отвечающие на данный запрос, при необходимости могут выставить на шину коды завершения. Другие процессоры в этой фазе управляют линиями Hit# и HitM# в зависимости от попадания запроса в их внутренний кэш. Агент, не успевающий ответить за отведенные четыре такта, может выставить одновременно сигналы Hit# и HitM# для задержки фазы завершения на число тактов, кратное двум. В случае кэш-попадания запрос к памяти удовлетворит процессор, поскольку передачи кэш-кэш происходят быстрее. Однако при попадании в модифицированную строку (HitM#) циклы обращения к памяти неизбежны.
На шине одновременно может присутствовать множество запросов и ответов, однако логический анализатор, "понимающий" протокол шины Pentium Pro, способен разложить их всех на соответствующие транзакции.
Вернуться к содержанию

Состав и назначение сигналов системной шины процессоров поколения P6

Таблица 1. Описание сигналов системной шины
Сигнал I/O Назначение
A[35:3]# I/O Address - сигналы шины адреса. Когда сигнал AdS# активен, на шине присутствует адрес, когда пассивен - информация о типе транзакции.
По окончании действия сигнала Reset# процессор с шины адреса получает конфигурационную информацию.
A20M# I A20 Mask - маскирование бита A20 физического адреса для эмуляции адресного пространства 8086 в реальном режиме (его использование в защищенном режиме приведет к непредсказуемым результатам).
Во время действия сигнала Reset# используется для конфигурирования умножителя частоты.
AdS# I/O Address Strobe - строб адреса, вводимый инициатором обмена как индикатор действительности адреса. По этому сигналу все агенты шины начинают проверять проверку паритета и протокола, декодирование адреса, внутреннее слежение и другие операции, связанные с новой транзакцией.
AErr# I/O Address Parity Error - ошибка паритета на шине адреса.
В зависимости от конфигурирования по включению питания сигнал может приводить к аварийному прекращению транзакции.
AP[1:0]# I/O Address Parity - биты паритета шины адреса. AP1# относится к AP[35:24]#, AP0# - к A[23:3]#. Сигнал корректного паритетат должен иметь низкий уровень, если низкий уровень имеет нечетное количество контролируемых им линий.
BClk I Bus Clock - синхронизация шины.
Значения всех синхронных сигналов действительны по положительному перепаду этого сигнала.
BErr# I/O Bus Error - неисправимая ошибка шины.
BInit# I/O Bus Initialization - инициализация шины. Если при конфигурировании использование сигнала разрешено, то он вызывает прерывание текущей транзакции с потерей данных и сброс в исходное состояние управляющих автоматов всех агентов шины и их циклических идентификаторов арбитража.
BNR# I/O Block Next Request - запрос блокировки следующей транзакции.
Вводится любым агентом шины как запрос на приостановку, когда он не может воспринять следующую транзакцию.
BP[3:2]# I/O Breakpoint - сигналы от процессоров, указывающие на попадание в точку останова.
BPM[1:0]# I/O Breakpoint Monitor - сигналы от процессоров, указывающие на попадание в точку останова или срабатывание счетчиков. используемых для мониторинга производительности процессора.
BPri# I Bus priority Request - сигнал, используемый для арбитража запросов на владение шиной.
BR0#
BR[3:1]#1
I/O
I
Bus Request - запрос шины.
Эти сигналы процессоры соединяются с линиями шины BReq[3:0]#
BSel# O Bus Select - Задает частоту системной шины процессора.
BSel1# BSel0# Частота системной шины, МГц
0066
01100
10-
11133
CPUPres# O CPU Present - признак наличия процессора в сокете.
D[63:0]# I/O Data - сигналы шины данных.
Источник данных при передаче указывает на их действительность сигналом DRdy#.
DBsy# I/O Data Bus Busy - шина данных занята.
Используется агентом, передающим данные, для указания на занятость шины данных
DEFER# I Сигнал, указывающий на то, что исходный порядок выполнения транзакций не гарантируется.
DEP[7:0]# I/O Data Bus ECC Protection - дополнительные сигналы защиты шины данных ECC-кодом.
DRdy# I/O Data Ready - готовность данных. Устанавливается источником данных для указания на присутствие достоверных данных на шине.
FErr# O Floating-point Error - ошибка FPU.
Flush# I Асинхронный сигнал на очистку внутреннего кэша. По этому сигналу выполняются все обратные записи и аннулируются строки кэша обоих уровней.
Новые строки не выделяются до окончания действия сигнала.
Значение сигнала во время окончания действия сигнала Reset# используется для конфигурирования процессора.
FRCErr# I/O Functional Redundancy Checking Error - сигнал ошибки, обнаруженной проверочным процессором в функционально-избыточной системе.
Hit#,HitM# I/O Сигналы результатов операции слежения за транзакцией. Hit# (Snopp hit) указывает на кэш-попадание. HitM#(Hit Modified) указывает на попадание в модифицированную строку, запрещая другим контроллерам шины обращаться к этим данным до выполнения обратной записи.
IErr# O Internal Error - сигнал обнаружения внутренней ошибки. Обычно появляется вместе с транзакцией Shutdown. Сигнал ошибки сохраняется до его программного сброса обработчиком NMI или аппаратного сброса сигналами Reset#, BInit# или Init#
IgnNE# I Ignore Numeric Error - игнорирование ошибки сопроцессора - запрет вырабатывать исключения. Используется для совместимости с AT, где вместо исключения вырабатывается аппаратное прерывание.
Во время действия сигнала Reset# используется для конфигурирования умножителя частоты.
Init# I Initialization - "Мягкая" инициализация процессора. Сигнал приводит к сбросу общих регистров и переходу по вектору, заданному при конфигурировании по включению. Содержимое кэш-памяти, буферов записи и регистров FPU не затрагивается. Если сигнал активен во время окончания действия сигнала Reset#, процессор выполняет BIST
LInt[1:0]
(NMI,IntR)
I Local APIC Interrupt - входы прерываний локальных контроллеров APIC. Если работа APIC запрещена, LInt0 становится сигналом IntR, LInt1 - сигналом NMI. По сигналу Reset# работа APIC разрешается и входы работают в режиме APIC, который может быть отменен программно.
Во время действия сигнала Reset# используются для конфигурирования умножителя частоты.
Lock# I/O Блокировка шины на время транзакции.
PICClk I APIC Clock - синхронизация шины APIC. В режиме FRC частота должна быть равной 1/4 BClk.
PICD[1:0] I/O APIC Data - двунаправленная последовательная шины обмена сообщениями APIC.
PRdy# O Probe Ready - сигнал готовности зонда, используемый аппаратными средствами отладки. Указывает на остановку нормального исполнения в ответ на сигнал R/S#(вход в зондовый режим).
Preq# I Probe Request - запрос зонда на отладочную операцию.
PwrGood I Power Good - сигнал исправности питания, указывающий на стабильность питающих напряжений и сигнала синхронизации.
Req[4:0]# I/O Request Command - запрос команды. Вводится текущим владельцем шины для определения типа активной транзакции.
Reset# I Сброс процессора - конфигурирование процессора, инициализация регистров, очистка кэша обоих уровней (без выполнения обратной записи) и переход к вектору сброса (по умолчанию 0FFFFFFF0h).
RP# I/O Request Parity - бит паритета запроса, защищающий линии AdS# и Req[4:0]#. Сигнал корректного паритета должен иметь низкий уровень, если низкий уровень имеет нечетное количество контролируемых им линий.
RS[2:0]# I Response Status - состояние ответчика. Сигналы управляются агентом, отвечающим за завершение текущей транзакции.
RsP# I Response Parity - бит паритета для сигналов RS[2:0]#.
SlotOcc#2 O Slot Occuped - слот занят. Низкий уровень сигнала свидетельствует о наличии процессора или терминатора в слоте Pentium-2. Используется с комбинацией сигналов VID[4:0] для определения наличия процессорного ядра в слоте: при VID[4:0]=11111 в слоте терминатор.
Slp#2 I Sleep - сигнал, переводящий процессор из состояния Stop Grant в состояние Sleep (спящий режим).
SMI# I System Management Interrupt - сигнал прерывания для входа в режим SMM.
StpClk# I Stop Clock - асинхронный сигнал, переводящий процессор в состояние Stop Grant с малым потреблением .
TCk I Test Clock - вход синхронизации шины тестирования Test Bus, называемой также TAP (Test Access Port).
TDI I Test Data In - последовательный вход данных интерфейса JTAG.
TDO O Test Data Out - последовательный выход данных интерфейса JTAG.
TestHi I Сигнал, подключаемый к источнику 2,5 В через резистор 1-10 кОм.
TestLo I Сигнал, подключаемый к шине GND.
ThermTrip# O Thermal Trip - сигнал останова процессора по перегреву. Если внутренняя температура поднимается примерно до 130oC, процессор останавливается и формирует данный сигнал, который может быть сброшен только сигналом Reset# после снижения температуры ниже этого порога.
TMS I Test Mode State - выбор режима тестирования по JTAG.
TRdy# I Target Ready - сигнал, которым целевое устройство указывает на готовность приема данных к записи или неявной обратной записи.
TRst# I Test Reset - сигнал сброса логики TAP (самосброс происходит автоматически по включению).
VID[4:0] O Voltage ID - выводы идентификации для автоматической установки уровня питающего напряжения. Эти выводы могут либо быть свободными, либо подключаться к шине GND.
Блок питания должен установить соответствующее напряжение, либо отключиться.
UP# O Upgrade Present - признак установки в сокет 8 процессора OverDrive.
1
Процессор Pentium-2 не имеет сигналов BR[3:2] - его шины допускает объединение только двух симметричных процессоров.
2 Процессор Pentium Pro не имеет сигналов Slp# и SlotOcc#.

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

Шина Req[4:0]# во время первого такта фазы запроса несет часть информации о транзакции, достаточную для инициирования цикла слежения. При транзакции доступа к памяти здесь же передается информация о размере адресного пространства - 4 Гбайт (32-битный адрес) или 64 Гбайт (36-битный адрес). Во время второго такта фазы запроса по этим линиям передается дополнительная информация, включающая длину поля данных. Возможно задание длины 0-8 байт, 16 или 32 байта.

Шина А[35:3]# используется многофункционально. Во время первого такта фазы запроса содержит адрес памяти или ввода/вывода, а для транзакции с отложенным ответом - ее идентификатор. Во время второго такта фазы запроса эта шина несет информацию об атрибутах транзакции (Attr[7:0]#=A[31:24]#), ее идентификаторе (DID[7:0]#=A[23:16]#), участвующих байтах (ВЕ[7:0]#=А[15:8]#) и дополнительных функциях (EXF[4:0]#=A[7:3]#). По окончании действия сигнала Reset# процессоры с линий А[35:3]# получают информацию о конфигурации по включению.

К атрибутам Attr[7:0]# относятся параметры, определяющие возможность кэширования (включая и политику записи), защиту записи и другие.

Сигналы разрешения использования байт ВЕ[7:0]# указывают на действительность данных: ВЕ0# - на линиях D[7:0]#, BE1# - на D[15:8]#,..., BE7# - на D[63:56]#. В цикле специальной транзакции сигналы ВЕ[7:0]# кодирует состояние в соответствии с табл. 4.36.
Таблица 2. Специальные циклы процессора Pentium Pro
BE[7:0] Специальный цикл
0000 0000 Reserved
0000 0001 Shutdown
0000 0010 Flush
0000 0011 Halt
0000 0100 Sync
0000 0101 Flush acknowledge
0000 0110 Stop clock acknowledge
0000 0111 SMI Acknowlege

Идентификатор отложенной транзакции DID[7:0]# является маркером, который несет идентификатор инициатора транзакции (DID[7:4]#) и идентификатор связанной с ним транзакции DID[3:0]#. Таким образом, шина допускает наличие до 16 инициаторов (контроллеров шины, включая и процессор), каждый из которых может выставлять до 16 присутствующих на шине запросов транзакций. Идентификатор транзакции может использоваться повторно только после ухода этой транзакции с шины. Бит DID [7] задает тип агента: 0 - симметричный, 1 - приоритетный. DID[6:4]# задает идентификатор агента. Симметричные агенты используют свои двухбитные идентификаторы арбитража. Итого, реально на шине могут присутствовать до четырех симметричных агентов - процессоров и до восьми несимметричных агентов - контроллеров шины.

Сигналы расширенных функций EXF[4:0]# включают:

Сигналы запроса шины BReq[3:0]# используются для арбитража симметричных агентов. Агент n запрашивает шину, управляя сигналом BReqn#, а остальные линии BReq[3:0]# рассматривает как входные. Симметричные агенты поддерживают распределенный механизм арбитража на основе циклического изменения идентификатора приоритета. "Вращающийся" идентификатор представляет собой внутреннее состояние всех симметричных агентов для определения агента с наименьшим приоритетом для последующего события арбитража. По включении питания вращающийся идентификатор устанавливается в значение "З", позволяя агенту-0 иметь высший приоритет из всех симметричных агентов. По очередному событию арбитража новый идентификатор станет равным номеру агента - текущего владельца шины, в результате чего, отдав управление шиной при следующем событии, он получит самый низкий приоритет. Очередное событие случается, когда агент выставляет запрос к свободной шине или текущий владелец снимает свой запрос. По состоянию линий BReq[3:0] и значению идентификатора, известного всем агентам, они одновременно (по одинаковым правилам) определяют нового владельца шины. Владелец шины может удерживать управление шиной, сохраняя активное значение своего сигнала запроса. Однако, обнаружив запрос от других агентов, он по возможности должен отдать управление шиной. Такой механизм подразумевает корректность поведения всех симметричных агентов и соблюдения ими правил обращения с сигналами BReq[3:0].

Для подключения к шине арбитража BReq[3:0]# используются сигналы процессора BR0# (I/O) и BR[3:1]# (I). При наличии в системе нескольких процессоров-симметричных агентов они подключаются к шине в соответствии с табл. 4.37.
Таблица 3. Соединение сигналов запроса шины
Сигнал шины Агент 0 Агент 1 Агент 2 Агент 3
BReq0# BR3#* BR2# BR1# BR0#
BReq1# BR1# BR0# BR3# BR2#
BReq2# BR2# BR1# BR0# BR3#
BReq3# BR3# BR2# BR1# BR0#
* для Pentium-2 используется сигнал BR1#.

Во время конфигурирования по включению центральный агент должен выставить сигнал BReq0#. Все симметричные агенты по сигналам, принятым со своих линий BR[3:0]#, определяют свой идентификатор (номер) агента (табл. 4.38).
Таблица 4. Определение идентификатора агента шины
Активный вход по сигналу Reset# Id агента
BR0# 0
BR1# 1
BR2# 2
BR3# 3
* для Pentium-2 используется сигнал BR1#.

Так как процессор Pentium-2 рассчитан на применение не более чем в двухпроцессорных симметричных системах, он имеет только сигналы BR0# и BR1#.
Вернуться к содержанию

Электрический интерфейс.

Электрический интерфейс процессоров шестого поколения заметно отличается от предыдущих. Для синхронных сигналов (большинства сигналов системной шины) используется вариант низковольтной логики GTL. Этот улучшенный вариант фирмой Intel назван GTL+. Для повышения помехозащищенности и снижения влияния отражения сигналов интерфейс требует соблюдения топологических и электрических правил подключения абонентов шины (рис.). Схемы передатчиков сигналов этого интерфейса имеют выходы типа ОК. Каждая сигнальная цепь должна иметь на обоих концах проводника резистор-терминатор, подтягивающий линию к высокому уровню Vtt. Входные схемы приемников являются дифференциальными, сигнал воспринимается относительно опорного уровня на входе VREF. Низкий уровень выходного напряжения не должен превышать 0,6 В, высокий определяется напряжением Vtt.

топология шины GTL+

Номинальное значение Vtt=1,5 В, Vref=2/3 Vtt.

Асинхронные сигналы процессора имеют уровни низковольтной CMOS-логики.
Синхронизация процессора осуществляется сигналом BClk. Положительный перепад этого сигнала синхронизирует все сигналы внешнего интерфейса GTL+. Ядро процессора синхронизируется с помощью умножителя частоты, выполненного по схеме генератора с ФАПЧ. Изменения частоты BClk корректно воспринимаются только во время действия сигнала Reset#. В это же время сигналы на входах A20M#, IgnNE#, LInt1/NMI и LInt0/IntR задают коэффициент умножения.

В симметричных мультипроцессорных системах фирма Intel не рекомендует использовать различающиеся внутренние частоты для процессоров, подключенных к одной шине (внешняя частота у них, естественно, должна быть единой). Возможность работы с разными частотами процессоров может не поддерживаться и операционной системой с SMP.
Вернуться к содержанию

Управление энергопотреблением.

Управление энергопотреблением более развито, чем у процессоров Pentium. Процессор Pentium Pro для немедленного снижения потребляемой мощности позволяет использовать режимы Stop Grant и Auto HALT PowerDown. Снижение потребления примерно в 10 раз достигается прекращением тактирования большинства узлов процессора.В режим Stop Grant процессор входит по сигналу на входе SlpClk#. В этом состоянии он прекращает исполнение инструкций и не обслуживает прерывания, однако продолжает слежение за шиной данных, отслеживая кэш-попадания.

В состояние пониженного потребления Auto HALT PowerDown процессор переходит при исполнении инструкции HALT. В этом состоянии процессор реагирует на все прерывания и также продолжает слежение за шиной.
Процессор Pentium-2 имеет дополнительные режимы пониженного потребления: Sleep и Deep Sleep.

В состоянии Sleep (спящий режим) процессор не тактирует свои внутренние узлы (кроме схемы умножителя частоты). Прерывания и циклы слежения не воспринимаются. Процессор может реагировать только на сигналы Slp#, StpClk# и Reset#. По снятию сигнала процессор возвращается в состояние Stop Grant и возобновляет тактирование своего блока управления шиной и APIC. В состояние "глубокого сна" Deep Sleep процессор переходит при остановке тактового сигнала на входе BClk. В этом режиме процессор не выполняет никаких функций и его ток потребления определяется только токами утечки внутренних схем.
Для питания ядра процессора и вторичного кэша используются раздельные шины питания Vccp и Vccs соответственно. Они могут использовать различные номиналы питающих напряжений (табл. 4.40). При совпадающих номиналах линии Vccs не используются.
Вернуться к содержанию


Источники информации:

Hosted by uCoz