<<
>>

Микроархитектура Р6

Микроархитектуру Р6 поддерживают такие процессоры Intel, как Pentium Pro, Pentium II (Xeon), Celeron, Pentium III (Xeon). Эта микроархитектура является, по определению Intel, трехходовой (three-way) суперскалярной конвейерной архи- тектурой.
Термин «трехходовая» означает поддержку технологий параллельного вычисления, позволяющих процессору одновременно (за один такт) обрабатывать до трех инструкций. Проблема оптимальной обработки потока машинных команд является ключевой при разработке любого процессора. Поэтому для большей яс- ности необходимо показать эту проблему в развитии. В компьютере фон-нейма- новской архитектуры существуют две основные стадии исполнения команды — выборка очередной команды из памяти и собственно ее исполнение. В первых про- цессорах Intel все блоки процессора работали последовательно, начиная с этапа выборки очередной команды из памяти и заканчивая этапом завершения ее обра- ботки процессором. Напоминание об этом осталось в названии регистра IP/EIP — (Instruction Pointer — указатель инструкции).
До появления процессоров Intel с конвейерной архитектурой данный регистр непосредственно указывал на оче- редную команду, подлежащую выполнению. Процессоры Intel относятся к группе CISC-процессоров, в которых для выполнения одной команды может требоваться от единиц до нескольких десятков процессорных тактов. При такой обработке ко- манд увеличение производительности может быть достигнуто только повышени- ем частоты генерации машинных тактов. Простое увеличение частоты работы про- цессора не имеет смысла, так как есть физически обусловленная верхняя граница, до которой ее можно поднимать. По этому пути разработчики Intel шли до процес- сора i80386 включительно. В ходе исполнения команды есть и другое узкое мес- то — выборка команды из памяти. Это затратная по времени операция.
Частичное решение проблемы было найдено еще на заре развития компьютерной техники в виде буфера упреждающей выборки. Развитием этой и реализацией других идей стал конвейер — специальное устройство, существующее на уровне архитектуры исполнительной части компьютера. Благодаря конвейеру исполнение команды разбивается на несколько стадий, каждая из которых реализует некоторую эле- ментарную операцию общего процесса обработки команды. Впервые для процес- соров Intel конвейер был реализован в архитектуре процессора i8О486, Конвейер i8О486 имеет пять ступеней, которые соответствуют перечисленным далее стади- ям обработки машинной команды. . 1. Выборка команды из кэш-памяти или из оперативной памяти. 2. Декодирование команды. ■ 3. Генерация адреса, в ходе которой определяются адреса операндов в памяти и вы- полняется выборка операндов. 4. Выполнение операции с помощью АЛУ. 5. Запись результата (место записи результата зависит от алгоритма работы кон- кретной машинной команды). В чем преимущество такого подхода? Очередная команда после ее выборки попадает в блок декодирования. Таким образом блок выборки освобождается и мо- жет выбрать следующую команду. В результате на конвейере могут находиться в различной стадии выполнения пять команд. Скорость вычисления в результате существенно возрастает. В процессорах Pentium конвейерная архитектура была усовершенствована и по- лучила название суперскалярной. В отличие от скалярной архитектуры i80'486 (с одним конвейером), первые модели процессоров Pentium имели два конвейера. В идеале такой суперскалярный процессор должен выполнять две команды за ма- шинный такт. Но не все так просто. Реально два конвейера Pentium не были функ- ционально равнозначными. В связи с этим они даже имели разные названия — u-конвейер (главный) и v-конвейер (второстепенный). Главный конвейер был пол- нофункциональным и мог выполнять любые машинные команды. Функциональ- ность второстепенного конвейера была ограничена основными целочисленными командами и одной командой с плавающей точкой (FХСН).
Внутренняя структура обоих конвейеров такая же, как у i8О486 с одним общим блоком выборки команд. Для того чтобы два разных по функциональным возможностям конвейера могли обеспечить предельную эффективность (две выполненных команды за такт рабо- ты процессора), необходимо было группировать команды из входного потока в со- вместимые пары. Важно заметить, что исходная последовательность команд вход- ного потока была неизменной. Если процессору не удавалось собрать совместимую пару, то выполнялась одна команда на u-конвейере. Оставшуюся команду процес- сор пытался «спарить» со следующей командой входного потока. Вернемся к процессорам микроархитектуры Р6. Они имеют другую структуру конвейера. Собственно конвейера в понимании i8О486 и первых Pentium уже нет. Конвейеризация заключается в том, что весь процесс обработки команд разбит на 12 стадий, которые исполняются различными блоками процессора. Сколько именно команд обрабатывается процессором, сказать трудно. Термин трехходовой озна- чает лишь то, что для исполнения из входного потока выбираются до трех команд. Известен верхний предел — в процессоре в каждый момент времени могут нахо- диться до 30 команд в различной стадии исполнения. Детали этого процесса скры- ты за понятием динамическое исполнение с нарушением исходного порядка следова- ния машинных команд (out of order), что означает исполнение команд в порядке, определяемом исполнительным устройством процессора, а не исходной последо- вательностью команд. В основу технологии динамического исполнения положе- ны три концепции: • Предсказание правильного адреса перехода. Основная задача механизма пред- сказания — исключить перезагрузку конвейера. Под переходом понимается зап- ланированное алгоритмом изменение последовательного характера выполне- ния программы. Как показывает статистика, типичная программа на каждые 6-8 команд содержит 1 команду перехода. Последствия обработки перехода предсказать несложно: при наличии конвейера через каждые 6-8 команд его нужно очищать и заполнять заново в соответствии с адресом перехода.
Все пре- имущества конвейеризации теряются. Поэтому в архитектуру Pentium в состав устройства выборки/декодирования (см. главу 1) был введен блок предсказа- ния переходов. Вероятность правильного предсказания составляет около 80 %. Ш Динамический анализ потока данных. Анализ проводится с целью определения зависимостей команд программы от данных и регистров процессора с последу- ющей оптимизацией выполнения потока команд. Главный критерий здесь — максимально полная загрузка процессора. Для реализации данного критерия допускается нарушение исходного порядка следования команд. Сбоя при этом не7 происходит, так как внешне логика работы программы не нарушается. 39999- Подобная внутренняя неупорядоченность исполнения команд позволяет дер- жать процессор загруженным даже тогда, когда данные в кэш-памяти второго уровня отсутствуют и необходимо тратить время на обращение за ними в опе- ративную память. * Спекулятивное исполнение — способность процессора исполнять машинные команды на участках программы с условными переходами и циклами до того, как эти переходы будут разрешены алгоритмом программы. Если переход пред- сказан правильно, то процессор к этому моменту уже имеет исполненный код, в противном случае весь конвейер нужно очищать, загружать и исполнять код новой ветви программы, что очень накладно. Рассмотрим порядок функционирования исполнительного устройства микро- архитектуры Рб и реализацию с его помощью описанных ранее технологий. Это рассмотрение не является строгим, кое-где для лучшего понимания оно упрощено. Для иллюстрации будем использовать схему, представленную на рис. 2.3 и являю- щуюся развитием схемы на рис. 1.2 (см. главу 1). Из схемы видно, что структурно процессор микроархитектуры Р6 состоит из нескольких подсистем. Подсистема памяти состоит из системной шины, кэша второго уровня L2, устрой- ства шинного'интерфейса, кэша первого уровня L1 (инструкций и данных), уст- ройства связи с памятью и буфера переупорядочивания запросов к памяти. ⅜ Устройство выборки/декодированиясостоит из устройства выборки команд, блока предсказания переходов, в который входят блоки меток перехода и вы- числения адреса следующей инструкции, устройства декодирования, устрой- ства микропрограммного управления и таблицы псевдонимов регистров.
Буфер команд. ⅞ Устройство диспетчеризации/исполнения содержит буфер микроопераций, го- товых к исполнению, и пять исполнительных устройств (два — для исполне- ния целочисленных операций, два — для исполнения операций с плавающей точкой, а также устройство связи с памятью). Необходимо заметить, что здесь допущена вольность в трактовке назначения исполнительных устройств: выде- лены устройства для выполнения обычных команд (целочисленных и с плава- ющей точкой) и MMX-команд (также целочисленных и с плавающей точкой). Реальное деление несколько иное. Такое допущение сделано исключительно с учебной целью — для более осознанного перехода от архитектуры к системе команд ассемблера. ш Блок удаления и восстановления. Рассмотрим подсистему памяти. Для бесперебойной работы процессора в мик- роархитектуре Рб используется два уровня кэш-памяти[1]. Кэш-память первого уров- ня состоит из кэшей команд и данных размером по 8 Кбайт, расположенных внутри процессора в непосредственной близости к его исполнительной части. Кэш-память второго уровня является внешней по отношению к процессору (но в едином кон-

структиве с ним), имеет значительно б ольший размер (256 Кбайт, 512 Кбайт или 1 Мбайт) и соединена с ядром процессора посредством 64-разрядной шины. Раз- деление кэш-памяти на две части (для кода и данных) обеспечивает бесперебой- ную поставку машинных инструкций и элементов данных в исполнительное устрой- ство процессора. Исходные данные для кэш-памяти первого уровня предоставляет кэш-память второго уровня. Заметьте, что информация из нее поступает на уст- ройство шинного интерфейса и далее в соответствующую кэш-память первого уровня по 64-разрядной шине. При этом благодаря более быстрому обновлению содержимого кэш-памяти первого уровня обеспечивается высокий темп работы процессора. Устройство шинного интерфейса обращается к оперативной памяти системы через внешнюю системную шину.

Эта 64-разрядная шина ориентирована на обра- ботку запросов, то есть каждый шинный запрос обрабатывается отдельно и требу- ет обратной реакции. Пока устройство шинного интерфейса ожидает ответа на один запрос шины, возможно формирование многочисленных дополнительных запро- сов. Все они обслуживаются в порядке поступления. Считываемые по запросу дан- ные помещаются в кэш второго уровня. То есть процессор посредством устройства шинного интерфейса читает команды и данные из кэша второго уровня. Устройство шинного интерфейса взаимодействует с кэшем второго уровня через 64-разряд- ную шину кэша, которая также ориентирована на обработку запросов и функцио- нирует на тактовой частоте процессора. Доступ к кэшу первого уровня осуществ- ляется через внутренние шины на тактовой частоте процессора. Синхронная работа с системной памятью кэш-памяти обоих уровней осуществляется благодаря спе- циальному протоколу МЕSI [7], [13]. Запросы от команд на получение операндов из памяти в исполнительном устрой- стве процессора обслуживаются посредством устройства связи с памятъю и бу- фера переупорядочивания запросов к памяти. Эти два устройства специально вклю- чены в схему для того, чтобы обеспечить бесперебойное снабжение исполняемых команд необходимыми данными. Особо стоит подчеркнуть роль буфера переупо- рядочивания запросов к памяти. Он отслеживает все запросы к операндам в памя- ти и выполняет функции планирующего устройства. Если нужные для очередной операции данные в кэш-памяти первого уровня (L1) отсутствуют, то буфер пере- упорядочивания запросов к памяти автоматически передает информацию о неудач- ном обращении к данным кэшу второго уровня (L2). Если и в кэше L2 нужных данных не оказалось, то буфер переупорядочивания запросов к памяти заставляет устройство шинного интерфейса сформировать запрос к оперативной памяти компь- ютера. Устройство выборки/декодирования извлекает одну 32-бaйтнyю строку кэша команд ( L1) за такт и передает в декодер, который преобразует ее в последователь- ность микроопераций. Поток микроопераций (пока он еще соответствует после- довательности исходных команд) поступает в буфер команд. Устройство выборки команд вычисляет указатель на следующую команду, подлежащую выборке, на основании информации трех источников: буфера меток перехода, состояния пре- рывания/исключения и сообщения от исполнительного целочисленного устрой- ства об ошибке в предсказании метки перехода. Важная часть этого процесса — предсказание метки перехода, которое выполняется по специальному алгоритму. В его основе лежит работа с буфером меток перехода, который содержит информа- цию о последних 256 переходах. Если очередная команда, выбираемая из памяти, является командой перехода, то содержащийся в ней адрес перехода сравнивается с адресами, уже находящимися в буфере меток перехода. Если этот адрес уже есть в буфере меток переходов, то он станет адресом следующей команды, с которой устройство выборки будет извлекать очередную команду. Если искомого адреса перехода в буфере нет, то выборка команд из памяти будет продолжена до момен- та исполнения команды перехода исполнительным устройством. В результате ее исполнения становится ясно, было ли правильным решение об адресе начала вы- борки следующих команд после выборки команды перехода. Если предсказанный переход оказывается неверным, то конвейер сбрасывается и загружается заново в соответствии с адресом перехода. Цель предсказания переходов — в том, чтобы устройство исполнения постоянно было занято полезной работой и сброс конвей- ера производился как можно реже. Устройство выборки команд выбирает команды для исполнения и помещает их в устройство декодирования. Устройство декодирования состоит из трех па- раллельно работающих декодеров (два простых и один сложный). Именно эти де- кодеры воплощают в жизнь понятие исполнения с нарушением исходного поряд- ка следования команд (out of order) и являются теми самыми тремя входами (three way) в исполнительное устройство процессора. Декодеры преобразуют команды процессора в микрооперации. Микрооперации представляют собой примитивные команды, которые выполняются пятью исполнительными устройствами процес- сора, работающими параллельно. Многие машинные команды преобразуются в одиночные микрооперации (это делает простой декодер), а некоторые машин- ные команды — в последовательность от двух и более (оптимально — четырех) мик- роопераций (это делает сложный декодер). Информация о последовательности мик- роопераций для реализации конкретной машинной команды содержится в устройстве микропрограммного управления. Кроме команд, декодеры обрабатывают также пре- фиксы команд. Декодер команд может формировать до шести микроопераций за такт — по одной от простых декодеров и до четырех от сложного декодера. Для достижения наибольшей производительности работы декодеров необходимо, что- бы на их вход поступали команды, которые декодируются шестью микроопераци- ями в последовательности 4 + 1 + 1. Если время работы программы критично, то имеет смысл провести ее оптимизацию, заключающуюся в переупорядочивании исходного набора команд таким образом, чтобы группы команд формировали пос- ледовательности микроопераций по схеме 4 + 1 + 1. После того как команды раз- биты на микрооперации, порядок их выполнения трудно предсказать. При этом могут возникнуть проблемы с таким критичным ресурсом, как регистры. Суть здесь в том, что если в двух соседних фрагментах программы данные помещались в оди- наковые регистры, откуда они, возможно, записывались в некоторые области па- мяти, а после переупорядочивания эти фрагменты перемешались, то как разоб- раться в том, какие регистры и где использовались. Эта проблема носит название проблемы ложных взаимозависимостей и решается с помощью механизма переиме- нования регистров. Основу этого механизма составляет набор из 40 внутренних универсальных регистров, которые и задействуются в реальных вычислениях ис- полнительным устройством абсолютно прозрачно для программ. Универсальные регистры могут работать как с целыми числами, так и со значениями с плавающей точкой. Информация о действительных именах регистров процессора и их внут- ренних именах (номерах универсальных регистров) помещается в таблицу псев- донимов регистров. В заключение процесса декодирования устройство управления таблицей псев- донимов регистров добавляет к микрооперациям биты состояния и флаги, чтобы подготовить их к неупорядоченному выполнению, после чего посылает получив- шиеся микрооперации в буфер переупорядоченных команд. Нужно заметить, что новый порядок их следования не соответствует порядку следования соответству- ющих команд в исходной программе. Буфер переупорядоченных команд представ- ляет собой массив ассоциативной памяти, физически выполненный в гаде 40 регис- тров и представляющий собой кольцевую структуру, элементы которой содержат два типа микроопераций: ожидающие своей очереди на исполнение и уже частич- но выполненные, но не до конца из-за их переупорядочивания и зависимости от других частично или полностью не выполненных микроопераций. Устройство дис- петчеризации/исполнения может выбирать микрооперации из этого буфера в лю- бом порядке. Устройство диспетчеризации/исполнения планирует и исполняет неупорядо- ченную последовательность микроопераций из буфера переупорядоченных команд. Но оно не занимается непосредственной выборкой микроопераций из буфера пе- реупорядоченных команд, так как в нем могут содержаться и не готовые к испол- нению микрооперации. Этим занимается устройство, управляющее специальным буфером, который условно назовем буфером микроопераций, готовых к исполне- нию. Оно постоянно сканирует буфер переупорядоченных команд в поисках мик- роопераций, готовых к исполнению (фактически это означает доступность всех операндов), после чего посылает их соответствующим исполнительным устрой- ствам, если они не заняты. Результаты исполнения микроопераций возвращаются в буфер переупорядоченных команд и сохраняются там наряду с другими микро- операциями до тех пор, пока не будут удалены устройством удаления и восстанов- ления. Подобная схема планирования и исполнения программ реализует классичес- кий принцип неупорядоченного выполнения, при котором микрооперации посы- лаются исполнительным устройствам вне зависимости от их расположения в ис- ходном алгоритме. В случае, если к выполнению одновременно готовы две или более микрооперации одного типа (например, целочисленные), то они выполня- ются в соответствии с принципом FIFO (First In, First Out — первым пришел, пер- вым ушел), то есть в порядке поступления в буфер переупорядоченных команд. Непосредственно исполнительное устройство состоит из пяти блоков, каждый из которых обрабатывает свой тип микроопераций: два целочисленных устрой- ства, два устройства для вычислений с плавающей точкой и одно устройство связи с памятью. Таким образом, за один машинный такт одновременно исполняется пять микроопераций. Два целочисленных исполнительных устройства могут параллельно обрабаты- вать две целочисленные микрооперации. Одно из этих целочисленных исполни- тельных устройств специально предназначено для работы с микрооперациями пе- реходов. Оно способно обнаружить непредсказанный переход и сообщить об этом устройству выборки команд, чтобы перезапустить конвейер. Такая операция реа- лизована следующим образом. Декодер команд отмечает каждую микрооперацию перехода и адрес перехода. Когда целочисленное исполнительное устройство вы- полняет микрооперацию перехода, то оно определяет, был предсказан переход или нет. Если переход предсказан правильно, то микрооперация отмечается пригод- ной для использования, и выполнение продолжается по предсказанной ветви. Если переход предсказан неправильно, то целочисленное исполнительное устройство изменяет состояние всех последующих микроопераций с тем, чтобы удалить их из буфера переупорядоченных команд. После этого целочисленное устройство поме- щает метку перехода в буфер меток перехода, который, в свою очередь, совместно с устройством выборки команд перезапускает конвейер относительно нового ис- полнительного адреса. Устройство связи с памятью управляет загрузкой и сохранением данных для микроопераций. Для их загрузки в исполнительное устройство достаточно опре- делить только адрес памяти, поэтому такое действие кодируется одной микроопе- рацией. Для сохранения данных необходимо определять и адрес, и записываемые данные, поэтому это действие кодируется двумя микрооперациями. Та часть уст- ройства связи с памятью, которая управляет сохранением данных, имеет два бло- ка, позволяющие ему обрабатывать адрес и данные для микрооперации параллель- но. Это позволяет устройству связи с памятью выполнить загрузку и сохранение данных для микроопераций параллельно в одном такте. Исполнительные устройства с плавающей точкой аналогичны устройствам в бо- лее ранних моделях процессора Pentium. Было добавлено только несколько новых команд с плавающей точкой для организации условных переходов и перемеще- ний. Последний блок в этой схеме выполнения команд исходной программы — блок удаления и восстановления, задачей которого является возврат вычислительного процесса в рамки, определенные исходной последовательностью команд. Для это- го он постоянно сканирует буфер переупорядоченных команд на предмет обнару- жения полностью выполненных микроопераций, не имеющих связи с другими микрооперациями. Такие микрооперации удаляются из буфера переупорядочен- ных команд и восстанавливаются в порядке, соответствующем порядку следования команд исходной программы с учетом прерываний, исключений, точек прерыва- ния и переходов. Блок удаления и восстановления может удалить три микроопе- рации за один машинный такт. При восстановлении порядка следования команд блок удаления и восстановления записывает результаты в реальные регистры про- цессора и в оперативную память. Таким образом, система динамического исполнения команд позволяет органи- зовать прохождение команд программы через исполнительное устройство процес- сора эффективнее, чем это было в конвейере процессора i8О486 и первых процес- соров Pentium. ■
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Микроархитектура Р6:

  1. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  2. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  3. ПЕРЕДМОВА
  4. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»
  5. Розділ І. Загальні положення цивільного права
  6. Тема 1. Поняття цивільного права. Предмет та метод, система цивільного права. Функції та принципи цивільного права
  7. Тема 2. Цивільне законодавство України
  8. Тема 3. Поняття, елементи та види цивільних правовідносин
  9. Тема 4. Здійснення цивільних прав і виконання обов’язків
  10. Тема 5. Захист цивільних прав та інтересів