assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 7
Текст из файла (страница 7)
Главный критерий здесь —максимально полная загрузка процессора. Для реализации данного критериядопускается нарушение исходного порядка следования команд. Сбоя при этомне7 происходит, так как внешне логика работы программы не нарушается. 39999-Архитектура 1А-3233Подобная внутренняя неупорядоченность исполнения команд позволяет держать процессор загруженным даже тогда, когда данные в кэш-памяти второгоуровня отсутствуют и необходимо тратить время на обращение за ними в оперативную память.ш Спекулятивное исполнение — способность процессора исполнять машинныекоманды на участках программы с условными переходами и циклами до того,как эти переходы будут разрешены алгоритмом программы. Если переход предсказан правильно, то процессор к этому моменту уже имеет исполненный код,в противном случае весь конвейер нужно очищать, загружать и исполнять кодновой ветви программы, что очень накладно.Рассмотрим порядок функционирования исполнительного устройства микроархитектуры Рб и реализацию с его помощью описанных ранее технологий.
Эторассмотрение не является строгим, кое-где для лучшего понимания оно упрощено.Для иллюстрации будем использовать схему, представленную на рис. 2.3 и являющуюся развитием схемы на рис. 1.2 (см. главу 1). Из схемы видно, что структурнопроцессор микроархитектуры Р6 состоит из нескольких подсистем.• Подсистема памяти состоит из системной шины, кэша второго уровня L2, устройства шинного^интерфейса, кэша первого уровня L1 (инструкций и данных), устройства связи с памятью и буфера переупорядочивания запросов к памяти.Ш Устройство выборки/декодирования состоит из устройства выборки команд,блока предсказания переходов, в который входят блоки меток перехода и вычисления адреса следующей инструкции, устройства декодирования, устройства микропрограммного управления и таблицы псевдонимов регистров.'•'• Буфер команд.Устройство диспетчеризации/исполнения содержит буфер микроопераций, готовых к исполнению, и пять исполнительных устройств (два — для исполнения целочисленных операций, два — для исполнения операций с плавающейточкой, а также устройство связи с памятью).
Необходимо заметить, что здесьдопущена вольность в трактовке назначения исполнительных устройств: выделены устройства для выполнения обычных команд (целочисленных и с плавающей точкой) и ММХ-команд (также целочисленных и с плавающей точкой).Реальное деление несколько иное. Такое допущение сделано исключительнос учебной целью — для более осознанного перехода от архитектуры к системекоманд ассемблера.iis Блок удаления и восстановления.Рассмотрим подсистему памяти.
Для бесперебойной работы процессора в микроархитектуре Рб используется два уровня кэш-памяти1. Кэш-память первого уровня состоит из кэшей команд и данных размером по 8 Кбайт, расположенных внутрипроцессора в непосредственной близости к его исполнительной части. Кэш-памятьвторого уровня является внешней по отношению к процессору (но в едином конКэширование — способ увеличения быстродействия системы за счет хранения часто используемыхданных и кодов в так называемой кэш-памяти, находящейся внутри процессора (кэш-память первого уровня) либо в непосредственной близости от него (кэш-память второго уровня).2 Зак. 25634Глава 2.
Программно-аппаратная архитектура IA-32 процессоров IntelЦентральный процессор (Pentium Pro/11/lll)Внутренняя шина данных и результатов:полнительные ус тройства{елочисленноеустройствоMMX-расширениецелочисленногоустройстваСопроцессорMMX-расширениесопроцессораУстройствосвязис памятьюБуфер микроопераций, готовых к исполнениюБуфер команд (переупорядоченных)Блок удаления микрооперацийБлок удаленияи восстановленияРегистрымикропроцессораТаблица псевдонимов регистровУстройство декодированияДекодерДекодерДекодерпростыхпростыхсложныхинструкцийинструкций инструкцийУстройствовыборки командБуферпереупорядочиваниязапросов к памятиУстройствоMt1кропрограммногоуправленияБлокмикрокомандКэш команд(L1)Устройство шинного интерфейсанШина кэша 12 (64 бита)=>!Системная шинаРис.
2.3. Структурная схема процессора семейства Р6 (Pentium Pro/11/lll)структиве с ним), имеет значительно б ольший размер (256 Кбайт, 512 Кбайт или1 Мбайт) и соединена с ядром процессора посредством 64-разрядной шины. Разделение кэш-памяти на две части (для кода и данных) обеспечивает бесперебойную поставку машинных инструкций и элементов данных в исполнительное устройство процессора.
Исходные данные для кэш-памяти первого уровня предоставляеткэш-память второго уровня. Заметьте, что информация из нее поступает на устройство шинного интерфейса и далее в соответствующую кэш-память первогоуровня по 64-разрядной шине. При этом благодаря более быстрому обновлениюсодержимого кэш-памяти первого уровня обеспечивается высокий темп работыпроцессора.Устройство шинного интерфейса обращается к оперативной памяти системычерез внешнюю системную шину.
Эта 64-разрядная шина ориентирована на обработку запросов, то есть каждый шинный запрос обрабатывается отдельно и требу-Архитектура 1А-3235ет обратной реакции. Пока устройство шинного интерфейса ожидает ответа на одинзапрос шины, возможно формирование многочисленных дополнительных запросов.
Все они обслуживаются в порядке поступления. Считываемые по запросу данные помещаются в кэш второго уровня. То есть процессор посредством устройствашинного интерфейса читает команды и данные из кэша второго уровня. Устройствошинного интерфейса взаимодействует с кэшем второго уровня через 64-разрядную шину кэша, которая также ориентирована на обработку запросов и функционирует на тактовой частоте процессора.
Доступ к кэшу первого уровня осуществляется через внутренние шины на тактовой частоте процессора. Синхронная работас системной памятью кэш-памяти обоих уровней осуществляется благодаря специальному протоколу MESI [7], [13].Запросы от команд на получение операндов из памяти в исполнительном устройстве процессора обслуживаются посредством устройства связи с памятью и буфера переупорядочивания запросов к памяти. Эти два устройства специально включены в схему для того, чтобы обеспечить бесперебойное снабжение исполняемыхкоманд необходимыми данными. Особо стоит подчеркнуть роль буфера переупорядочивания запросов к памяти.
Он отслеживает все запросы к операндам в памяти и выполняет функции планирующего устройства. Если нужные для очереднойоперации данные в кэш-памяти первого уровня (L1) отсутствуют, то буфер переупорядочивания запросов к памяти автоматически передает информацию о неудачном обращении к данным кэшу второго уровня (L2). Если и в кэше L2 нужныхданных не оказалось, то буфер переупорядочивания запросов к памяти заставляетустройство шинного интерфейса сформировать запрос к оперативной памяти компьютера.Устройство выборки/декодирования извлекает одну 32-байтную строку кэшакоманд ( L1) за такт и передает в декодер, который преобразует ее в последовательность микроопераций. Поток микроопераций (пока он еще соответствует последовательности исходных команд) поступает в буфер команд.
Устройство выборкикоманд вычисляет указатель на следующую команду, подлежащую выборке, наосновании информации трех источников: буфера меток перехода, состояния прерывания/исключения и сообщения от исполнительного целочисленного устройства об ошибке в предсказании метки перехода. Важная часть этого процесса —предсказание метки перехода, которое выполняется по специальному алгоритму.В его основе лежит работа с буфером меток перехода, который содержит информацию о последних 256 переходах. Если очередная команда, выбираемая из памяти,является командой перехода, то содержащийся в ней адрес перехода сравниваетсяс адресами, уже находящимися в буфере меток перехода.
Если этот адрес уже естьв буфере меток переходов, то он станет адресом следующей команды, с которойустройство выборки будет извлекать очередную команду. Если искомого адресаперехода в буфере нет, то выборка команд из памяти будет продолжена до момента исполнения команды перехода исполнительным устройством. В результате ееисполнения становится ясно, было ли правильным решение об адресе начала выборки следующих команд после выборки команды перехода. Если предсказанныйпереход оказывается неверным, то конвейер сбрасывается и загружается зановов соответствии с адресом перехода.
Цель предсказания переходов — в том, чтобы36Глава 2. Программно-аппаратная архитектура IA-32 процессоров Intelустройство исполнения постоянно было занято полезной работой и сброс конвейера производился как можно реже.Устройство выборки команд выбирает команды для исполнения и помещаетих в устройство декодирования.
Устройство декодирования состоит из трех параллельно работающих декодеров (два простых и один сложный). Именно эти декодеры воплощают в жизнь понятие исполнения с нарушением исходного порядка следования команд (out of order) и являются теми самыми тремя входами (threeway) в исполнительное устройство процессора. Декодеры преобразуют командыпроцессора в микрооперации. Микрооперации представляют собой примитивныекоманды, которые выполняются пятью исполнительными устройствами процессора, работающими параллельно. Многие машинные команды преобразуютсяв одиночные микрооперации (это делает простой декодер), а некоторые машинные команды — в последовательность от двух и более (оптимально — четырех) микроопераций (это делает сложный декодер).
Информация о последовательности микроопераций для реализации конкретной машинной команды содержится в устройствемикропрограммного управления. Кроме команд, декодеры обрабатывают также префиксы команд. Декодер команд может формировать до шести микроопераций затакт — по одной от простых декодеров и до четырех от сложного декодера. Длядостижения наибольшей производительности работы декодеров необходимо, чтобы на их вход поступали команды, которые декодируются шестью микрооперациями в последовательности 4 + 1 + 1. Если время работы программы критично, тоимеет смысл провести ее оптимизацию, заключающуюся в переупорядочиванииисходного набора команд таким образом, чтобы группы команд формировали последовательности микроопераций по схеме 4 + 1 + 1.