Э. Таненбаум - Архитектура компьютера (1127755), страница 54
Текст из файла (страница 54)
3.39 изображена такая же схема, как и на рис. 3.35, только с дополнительным сигналом В1.ОСК, который указывает, что запрашивается передача блока. В данном примере считывание блока из 4 слов занимает 6 циклов вместо 12. Адрес денные МЕТЕО ЧIА!Т И.ОСК Рис. 3.39. Передача блока данных Существуют также другие типы циклов шины. Например, если речь идет о системах с двумя или несколькими центральными процессорами на одной шине, нужно быть уверенным, что в конкретный момент только один центральный процессор может использовать определенную структуру данных в памяти. Чтобы упорядочить этот процесс, в памяти должна содержаться переменная, которая принимает значение О, когда центральный процессор использует структуру данных, и 1, когда структура данных не используется.
Если центральному 216 Глава 3. Цифровой логический уровень Таймер й !ыт !МТА !РО Гйт !Р2 !Рз !й4 !Р5 !Рб !РТ йп Мй АО СЗ Клавиатура (=') Диск О-й Принтер +5 В Рис. 3.40. Контроллер прерываний 8259А До восьми контроллеров ввода-вывода могут быть непосредственно связаны с восемью входами 1йх (1птеггарГ Кег)аеас — запрос прерывания) микросхемы 8259А. Когда любое из этих устройств решит выполнить прерывание, оно запускает свою линию входа Если активизируется один или несколько входов, контроллер 8259А выдает сигнал 1ХТ (1ХТегпгрс — прерывание), который подается на соответствующий вход центрального процессора.
Если центральный процессор способен обработать прерывание, он посылает микросхеме 8259А импульс через вывод 1ХТА (1ХТеггпрт Аскпоту)едйе — подтверждение прерывания). В этот процессору нужно получить доступ к структуре данных, он должен считать переменную и, если она равна О, придать ей значение 1. Проблема заключается в том, что два центральных процессора могут считывать переменную на последовательных циклах шины.
Если каждый процессор обнаружит, что переменная равна О, а затем поменяет значение переменной на 1, как будто только он один использует эту структуру данных, то такая последовательность событий приведет к хаосу. Чтобы не допустить подобной ситуации, в многопроцессорных системах предусмотрен специальный цикл шины, который дает возможность любому процессору считать слово из памяти, проверить и изменить его, а затем записать обратно в память; весь этот процесс происходит без освобождения шиньг.
Такой цикл не дает возможности другим центральным процессорам использовать шину и, следовательно, мешать работе первого процессора. Еще один важный цикл шины — цикл обработки прерываний. Когда центральный процессор командует устройству ввода-вывода выполнить какое-то действие, он ожидает прерывания после завершения работы. Для сигтгала прерывания нужна шина.
Поскольку может сложиться ситуация, когда несколько устройств одновременно захотят выполнить прерывание, здесь имеют место те же проблемы разрешения конфликтных ситуаций, что и в обычных циклах шины. Чтобы избежать таких проблем, нужно каждому устройству приписать определенный приоритет и для распределения приоритетов поддерживать централизованный арбитраж.
Существует стандартный контроллер прерываний, который широко используется. В компьютерах 1ВМ РС и последующих моделях для этого служит микросхема 1пге1 8259А. Она изображена на рис. 3.40. Примеры центральных процессоров 217 момент микросхема 8259А должна определить, на какой именно вход поступил сигнал прерывания. Для этого она помещает номер входа на информационную шину. Эта операция требует особого цикла шины.
Центральный процессор использует этот номер для обращения к таблице указателей, которую называют таблицей векторов прерываний, чтобы найти адрес процедуры обработки этого прерывания. Микросхема 8259А содержит несколько регистров, которые центральный процессор может считывать и записывать, используя обычные циклы шины и выводы йЭ (ВеаП вЂ” чтение), ЖВ (ЪЪ'К!ге — запись), С5 (С)йр 5е!есг — выбор элемента памяти) и АО. Когда программное обеспечение обработало прерывание и готово получить следующее, оно записывает специальный код в один из регистров, который вызывает сброс сигнала 1МТ микросхемой 8259А, если не появляется другое прерывание.
Регистры также могут записываться для того, чтобы перевести микросхему 8259А в один из нескольких режимов, и для выполнения некоторых других функций. При наличии более 8 устройств ввода-вывода микросхемы 8259А могут соединяться каскадом. В самой экстремальной ситуации все 8 входов могут быть связаны с выходами еще 8 микросхем 8259А, соединяя до 64 устройств ввода- вывода в двухступенчатую систему прерывания. Микросхема 8259А содержит несколько выводов для каскадного соединения, но мы их опустили ради простоты.
Хотя мы никоим образом не исчерпали все вопросы разработки шин, изложенный материал дает достаточно информации для общего понимания принципов работы шины и принципов взаимодействия с шиной центрального процессора. Теперь мы перейдем от общего к частному и рассмотрим несколько конкретных примеров процессоров и их шин. Примеры центральных процессоров В этом разделе мы рассмотрим процессоры Репгшш 4, П!ггаЯРАВС П1 и 8051 на уровне аппаратного обеспечения. Репбит 4 Реп1шш 4 — прямой потомок процессора 8088, который использовался в первой модели 1ВМ РС.
Презентация Репйпгп 4 состоялась в ноябре 2000 года. Публике был представлен процессор с 42 млн транзисторов, частотой 1,5 ГГц и шириной строки 0,18 мкм. Понятие «ширина строки> означает ширину проводников между транзисторами (и одновременно определяет размер самих транзисторов). Чем меньше эта величина, тем больше транзисторов умещается на одной микросхеме. По сути, закон Мура прогнозирует способность инженеров к дальнейшему уменьшению ширины строки. Помимо прочего, уменьшение этой величины позволяет повысить тактовую частоту. Для сравнения, диаметр человеческого волоса составляет 20 — 100 мкм (причем светлые волосы тоньше темных). В течение трех последующих лет технологический процесс в 1пге! претерпевал изменения, в результате чего компания смогла приступить к выпуску процес- 218 Глава 3.
Цифровой логический уровень соров с 55 млн транзисторов, частотой до 3,2 ГГц и шириной строки 0,09 мкм. Хотя Репг1цш 4 очень сильно отличается от процессора 8088 с его 29 000 транзисторов, он полностью совместим с 8088 и может выполнять программы, написанные для 8088 (не говоря уже о программах для всех процессоров, появившихся между Репйцш П и 8088). С точки зрения программного обеспечения Репгшш 4 представляет собой 32-разрядную машину. Он поддерживает ту же стандартную промышленную архитектуру (1ЯА), что и процессоры 80386, 80486, Репг1цш, Репг1пш П, Репг1шп Рго и РепГ1цш П1, включая те же регистры, те же команды и такую же встроенную систему обработки значений с плавающей точкой стандарта 1ЕЕЕ 754. Помимо этого в Репгшш 4 предусмотрен набор специализированных команд для выполнения мультимедийных приложений.
С точки зрения аппаратного обеспечения Репг(пш 4 схож с 64-разрядными машинами, поскольку он может передавать данные в память и из памяти блоками по 64 бита. Хотя программист не замечает этих 64-разрядных передач, такая машина работает быстрее, чем обычная 32-разрядная. На уровне микроархитектуры Репг1цш 4 разительно отличается от всех своих предшественников. В Репг(пш П, Репйшп Рго и Репйшп П1 была реализована общая внутренняя микроархитектура Рб, различавшаяся в зависимости от модели процессора только по быстродействию и ряду второстепенных параметров. Процессоры Репг1пш 4 снабжены новой микроархитектурой под названием НегВцгзг, которая существенно отличается от Рб, в частности, она предусматривает большее количество ступеней конвейера и два АЛУ (каждое из которых работает в два раза быстрее тактовой частоты, обеспечивая возможность выполнения двух операций за один цикл), а также поддерживает технологию гиперпоточности.
Под гиперпоточностью понимается наличие двух наборов регистров и ряда других внутренних ресурсов, которые позволяют Репг)паап 4 переключаться между двумя программами с высочайшей скоростью — так, как будто в системе установлен не один, а два процессора. Микроархитектуру Репг1цш 4 мы обсудим в главе 4. Как бы то ни было, подобно своим предшественникам, Репг1пш 4 способен выполнять несколько команд за один цикл, а следовательно, является суперскалярной машиной. В процессорах Репг)цш 4 используется двухуровневый или трехуровневый кэш, в зависимости от модели. Во всех моделях присутствует встроенный в микросхему кэш типа ЖАМ первого уровня (1.1) объемом 8 Кбайт. В отличие от каша первого уровня, применяемого в Репйшп П1, который умеет только хранить байты памяти, кэш Репгипп 4 более функционален.
При выборке команд из памяти они преобразуются в микрооперации, предназначенные для выполнения в ИЗС-ядре процессора Репг(пш 4. Кэш первого уровня Репйшп 4 способен удерживать до 12 000 декодированных микроопераций, за счет чего необходимость в их повторном декодировании исчезает. Емкость каша второго уровня составляет от 256 Кбайт в старых моделях до 1 Мбайт в более современных. В каше второго уровня байты хранятся без декодирования. В таком каше могут одновременно размешаться элементы кода и данные. В модели Репгшш 4 Ех~геше Ейг1оп также реализован кэш третьего уровня емкостью 2 Мбайт, что еще больше повышает производительность.
Примеры центральных процессоров 219 Поскольку во всех микросхемах Реп11цш 4 предусмотрено по меньшей мере два уровня кэширования, в мультипроцессорных системах при изменении одним из процессоров слова, размещенного в кэше, могут возникать трудности. Если, предположим, другой процессор попытается считать это слово из памяти, он получит устаревшее значение, поскольку между изменением слова и его записью в память проходит некоторое время.