Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение icon

Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение


Скачать 412.31 Kb.
НазваниеАрхитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение
страница5/10
Размер412.31 Kb.
ТипРеферат
1   2   3   4   5   6   7   8   9   10

Рис. 4.8.

используемый кешом команд. Декодер перекодирует выбранные команды так , что процессор мог их выполнять. ROM контроль содержит микрокод с контролем последовательности операций, который может быть эффективен для реализации в архитектурой процессора. Контроль ROM имеет директиву контроля над обоими конвейерами.

Процессор Pentium содержит конвейер плавающей точки, который обеспечивает выполнение существенных эффективных предыдущих вычислений процессора.


^ 4.4. Микроархитектура процессоров семейства Р6

Процессор Pentium представляет coбой довольно простое и весьма ограниченное приближение к суперскалярной архитектуре. Два его конвейера нельзя считать полностью независимыми, поскольку в случае остановки одного из них другой также должен быть остановлен и, таким образом, динамический запуск команд на исполнение (т. е. запуск команд с нарушением последовательности их расположения в программе) не представляется возможным. Более того, блок арифметики с плавающей точкой не является полностью автономным, а связан с конвейерами целочисленных операций. Следовательно, инструкции целочисленной арифметики и арифметики с плавающей точкой не могут исполняться параллельно. Процессоры Р6, напротив, можно смело отнести к ЦП с суперскалярной архитектурой, позволяющей формировать за один машинный такт сразу несколько результатов (естественно, спустя некоторое время, называемое временем старта. Кроме того, эти процессоры отличается повышенной тактовой частотой. На рис. 4.9 приведена блок-схема процессора Pentium Pro.

Разработчики Pentium Pro полностью развязали схемы диспетчеризации потока команд и их исполнения. Инструкции х86 преобразуются в последовательность внутренних микроопераций, по сути не отличающихся от традиционных микрокоманд. Затем эти микрокоманды поступают в буфер изменения порядка с 40 входами, где они хранятся до тех пор, пока не будут «готовы» к обработке необходимые операнды. Из этого буфера инструкции передаются в блок резервирования с 20 входами, где и ожидают, когда освободится необходимое операционное устройство. Подобная структура позволяет исполнять микрооперации с нарушением порядка и загружать одновременно несколько операционных устройств. Ко всему прочему в такой структуре ЦП микрооперации фиксирован ной длины обрабатывать проще, чем сложные команды класса х86, имеющие формат переменной длины (рис. 4.9) .

Увеличение тактовой частоты Pentium Pro достигается за счет глубокой конвейеризации. Поскольку блок резервирования обладает высокой гибкостью, можно считать, что конвейер не имеет фиксированного числа ступеней, но минимальное число тактов, в течение которых может быть вы полнена команда, составляет 12. Такие фазы, как обращение к кэшу и декодирование команды, требуют 2,5 такта каждая.

^ Структурная схема микропроцессора Pentium Pro





64


128


32


Загрузка Загрузка данных


64





64

адрес 36 данные 64 данные 64


БЗД – блок записи данных

БФАЗД – блок формирования записи данных

БФАЗ – блок формирования адреса загрузки

ФТ – фиксированная точка

ПТ – плавающая точка

А - арифметика

Рис. 4.9.


Для достижения максимальной производительности Pentium Pro разработчики разместили кэш-память второго уровня на отдельном кристалле, который монтируется в один корпус с чипом центрального процессора. Благодаря тому, что соединения между ними не выходят за пределы корпуса (т. е. имеют минимальную протяженность) и выполнены по схеме точка - точка, инженеры компании смогли использовать в интерфейсе типа процессор - кэш нестандартные уровни сигналов и получить высокую пропускную способность тракта. Чип кэша второго уровня выпускается в двух модификациях: емкостью 256 и 512 Кбайт - и обеспечивает передачу 8 байт за такт даже при рабочей частоте процессора 200 МГц.

Для примера рассмотрим микроархитектуру процессора Pentium II. Основная отличительная черта процессоров семейства Р6 — использование алгоритмов "динамического выполнения команд" (dynamic execution), которые построены на основе трех базовых концепций: предсказании переходов (branch prediction), динамическом анализе потока данных (dynamic data flow analysis) и спекулятивном выполнении инструкций (speculative execution).

Предсказание переходов — это концепция, которая реализована не только в микроархитектуре процессоров семейства Р6, но и в микроархитектуре ряда других высокопроизводительных процессоров (например, процессоров мэйнфреймов). Суть ее заключается в следующем. На вход процессора поступает поток инструкций для их последующего исполнения. Инструкции поступают в том порядке, в котором они содержатся в коде программы, исполняемой в данный момент процессором. Как только на входе процессора появляется очередная порция инструкций для исполнения, ее содержимое анализируется с целью найти точки ветвления в исполняемом потоке инструкций и предсказать наиболее вероятные пути (ветви), по которым пойдет обработка инструкций после этих точек ветвления. Инструкции, принадлежащие ветвям с наибольшей вероятностью выполнения, тут же ставятся в очередь на исполнение.

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

Конечно, такое преждевременное исполнение инструкций может оправдать себя только в том случае, если алгоритм нахождения наиболее вероятных ветвей работает достаточно хорошо. Действительно, если ветвь угадана неверно, то процессору придется исполнить инструкции, принадлежащие как неверно угаданной, так и альтернативной ветви, проделав тем самым двойную работу. Если бы такая ситуация наблюдалась часто, то использование этой методики было бы невыгодно. Судя по тому, что концепция "предсказания переходов" активно используется производителями процессоров, соответствующая алгоритмика развита достаточно хорошо. В\ процессоре Pentium II за предсказание переходов "отвечает" Fetch/Decode Unit (модуль загрузки/декодирования инструкций).

Динамический анализ потока данных включает в себя выполняемый в режиме реального времени анализ зависимости инструкций от исходных данных и значений регистров процессора, а также определение возможности исполнения и непосредственное исполнение инструкций в порядке, отличном от порядка их первоначальной постановки в очередь на исполнение, (out-of-ordere execution).

Dispatch/Execute Unit (модуль диспетчеризации/исполнения инструкций) процессора Pentium II может одновременно следить за ходом исполнения множества инструкций и выполнять их в таком порядке, который позволяет оптимизировать загрузку вычислительных ресурсов процессора. В это же самое время Dispatch/Execute Unit следит за целостностью данных, над которыми проводятся вычисления.

Выполнение инструкций в порядке, отличном от порядка их постановки в очередь на исполнение (out-of-order execution), позволяет избежать простоя вычислительных ресурсов даже в том случае, когда в L1-кэше нет данных, необходимых для исполнения инструкции, или между инструкциями есть зависимость данных, и зависимая инструкция не может быть исполнена. Например, в результате исполнения инструкции "А" получаются данные, которые используются при исполнении инструкции "В"; соответственно, инструкция "В" не может быть исполнена раньше, чем инструкция "А".

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

В процессоре Pentium II спекулятивное выполнение инструкций возможно благодаря тому, что этап "диспетчеризации и выполнения инструкций" (dispatching and executing of instructions) отделен от этапа "завершения и возвращения результатов" (commitment of results).

Используя динамический анализ потока данных, Dispatch/Execute Unit процессора исполняет все инструкции, находящиеся в пуле инструкций (instruction pool) и готовые к исполнению, после чего записывает результаты их исполнения во временные регистры.

В это время Retire Unit (модуль завершения и удаления инструкций) последовательно просматривает пул инструкций и ищет исполненные инструкции, которые не имеют зависящих от них других инструкций, следовательно, могут считаться исполненными и готовыми к извлечению из пула инструкций. Найденные инструкции извлекаются из пула инструкций, в том порядке, в каком они поступили в очередь на исполнение, результаты их исполнения возвращаются (commited), записываются в оперативную память и/или в IA-регистры (Intel Architecture registers — регистры общего назначения процессора) и регистры данных математического сопроцессора (FPU — floating-point unit)), после чего инструкции удаляются из пула инструкций.

Алгоритмика динамического выполнения команд, включающая предсказание переходов, динамический анализ потока данных и спекулятивное выполнение инструкций, снимает ограничения традиционного "линейного" подхода, при котором весь цикл исполнения состоял из двух этапов — загрузки и выполнения инструкций, а сами инструкции обрабатывались в том порядке, в котором они поступали в очередь на исполнение.


Ядро и подсистемы памяти Pentium


Системная шина




Рис.4.10.


Процессор Pentium II построен на основе семи базовых модулей (рис. 4.10) — Fetch/Decode Unit (модуль загрузки/декодирования инструкций), Dispatch/Execute Unit (модуль диспетчеризации/исполнения инструкций), Retire Unit (модуль завершения и удаления инструкций). Instruction Pool (пул инструкций, его также называют Reorder Buffer — буфер переупорядочивания инструкций). Bus Interface Unit (модуль внешнего интерфейса), LI ICache (L1-кэш для инструкций) и LI DCache (L1-кэш для данных).

Fetch/Decode Unit предназначен для приема входного потока инструкций исполняемой программы, поступающего из L1-кэша инструкций, и их последующего декодирования в поток микроопераций (рис. 4.11).

Этот модуль работает следующим образом. Прежде всего, блок Next_IP вычисляет индекс (порядковый номер) инструкции, содержащейся в L1-кэше инструкций, которая должна быть обработана следующей — то есть извлечена из L1-кэша инструкций и передана для последующего декодирования.

Индекс этой инструкции вычисляется блоком Next_IP на основе поступающей в него информации о прерываниях, которые были переданы в процессор для обработки, возможных предсказанных переходах (предсказание выполняется блоком Branch Target Buffer), и сообщениях о неправильно предсказанных переходах (branch-misprediction), которые поступают от целочисленных вычислительных ресурсов, расположенных в модуле Dispatch/Execute Unit. После вычисления индекса следующей обрабатываемой инструкции Li-кэш инструкций извлекает две строки кэшированных данных (cache line) — ту, которая соответствует вычисленному индексу, и следующую за ней, — а затем передает для декодирования извлеченные 16 байт, которые содержат IA-инструкции (Intel Architecture). Начало и конец IA-инструкций маркируются.

Далее маркированный поток байт обрабатывается сразу тремя параллельно работающими декодерами, которые отыскивают в нем IA-инструкции. Каждый декодер преобразует найденную IA-инструкцию в набор триадных микроопераций (uops) — триадных в том смысле, что микрооперация проводится над двумя исходными логическими операндами, а в результате ее выполнения получается только один логический результат. Микрооперация — это примитивная инструкция, которая может быть выполнена одним из вычислительных ресурсов, расположенных в модуле Dispatch/Execute Unit.

Из трех декодеров два — простые, которые могут преобразовывать только IA-инструкций, требующие выполнения одной микрооперации, а третий декодер — более совершенный; он может преобразовывать IA-инструкции, требующие выполнения от одной до четырех микроопераций. Таким образом, за один такт работы процессора все три декодера могут в сумме сгенерировать максимум шесть микроопераций. Для преобразования еще более сложных IA-инструкций используется микрокод, который содержится в блоке Microcode Instruction Sequencer и представляет собой набор предварительно запрограммированных последовательностей обычных микроопераций.


^ Устройство выборки/декодирования


от интерфейса шины






Указатель на следующую команду


Кэш команд





Буфер переходов

Декодер

команд

(х3)



Микрокод



Таблица псевдонимов

регистров




Рис. 4.11.


Полученные таким образом микрооперации передаются в блок Register Alias Table Allocate, где все содержащиеся в микрооперациях адреса lA-регистров преобразуются в адреса внутренних физических регистров процессора семейства Р6 — тем самым IA-архитектура и Рб-архитекура оказываются развязанными. Это существенно увеличивает возможности работы процессора при вычислениях, так как, во-первых, отпадает необходимость следить за целостностью содержимого IA-регистров при исполнении инструкций, во-вторых, адресное пространство перестает быть ограниченным возможностями IA-архитектуры и может быть значительно расширено, что приводит к росту скорости вычислений, и, в-третьих, такая переадресация обеспечивает возможность спекулятивного исполнения инструкций — далее все вычисления ведутся во внутренней Р6-архитектуре процессора, а IA-архитектура снова появляется "на сцене" только на этапе завершения инструкций в модуле Retire Unit.

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

Instruction Pool (Reorder Buffer). Основное назначение этого модуля — предоставить возможность исполнения микроопераций в произвольном порядке; в том числе, отличном от порядка их генерации.

В тот момент, когда микрооперации попадают в пул инструкций, порядок их следования в потоке соответствует тому порядку, в котором они были сгенерированы в результате декодирования IA-инструкций, поступивших на вход модуля Fetch/Decode Unit, — никакого изменения порядка следования пока не произошло. Пул инструкций представляет собой последовательный массив инструкций; при этом любая из этих инструкций может быть в любой момент времени обработана модулем Dispatch/Execute Unit или Retire Unit — то есть порядок обработки инструкций может быть произвольным и не зависит от первоначального порядка, в котором инструкции поступили в пул. Именно поэтому пул инструкций иногда называют еще буфером переупорядочивания инструкций (Reorder Buffer).

Dispatch/Execute Unit. Этот модуль проверяет состояние микроопераций, содержащихся в пуле инструкций, исполняет их, если есть такая возможность, и записывает полученные результаты обратно в пул инструкций (рис. 4.12).

Reservation Station — основной управляющий блок модуля Dispatch/Execute Unit. Именно он планирует порядок исполнения и занимается диспетчеризацией (распределением между вычислительными ресурсами) микроопераций. Этот блок последовательно просматривает пул инструкций в поисках микроопераций, которые готовы к исполнению — таковыми считаются микрооперации, у которых готовы (т.е. вычислены/загружены) исходные операнды, — и передает (распределяет, диспетчеризует) их на исполнение свободным вычислительными ресурсам, которые могут исполнить микрооперацию. Результаты исполнения микрооперации записываются в пул инструкций и хранятся там вместе с самой микрооперацией до тех пор, пока последняя не будет завершена — этим занимается уже модуль Retire Unit.

Следует подчеркнуть, что жесткого, заранее предопределенного порядка исполнения микроопераций не существует — они исполняются сразу же, как только бывают готовы их операнды и свободен соответствующий вычислительный ресурс. В том случае, если одному и тому же ресурсу может быть одновременно передано на исполнение более одной микрооперации, последние исполняются по принципу псевдо-FIFO (First In First Out) — первой исполняется та микрооперация, которая раньше попала в пул инструкций.

Reservation Station имеет пять портов, через которые организуется обмен данными с пятью вычислительными ресурсами. Поэтому Dispatch/Execute Unit может за один такт исполнить максимум пять микроопераций. Однако при реальной работе с постоянной равномерной нагрузкой на процессор наиболее типична ситуация, когда за один такт исполняется три микрооперации.


Структура устройства диспетчирования/выполнения




Обмен с

пулом

команд


Загрузка в регистры


Запись в память


Рис. 4.13.


Retire Unit — модуль (рис. 4.14), который знает как и когда завершить (commit) временные внутренние спекулятивные вычисления, выполненные в Р6-архитектуре, преобразовать их и вернуть окончательный результат в IA-архитектуре.

Retire Unit постоянно сканирует содержимое пула инструкций и проверяет статус хранящихся в нем микроопераций. Как только находится исполненная и готовая к удалению из пула микрооперация. Retire Unit преобразует результаты ее исполнения, хранящиеся во внутреннем представлении процессора (то есть во внутренних регистрах, в контексте Р6-архитектуры), к представлению в IA-архитектуре и записывает результат исполнения в оперативную память и/или в IA-регистры. После этого микрооперация удаляется из пула инструкций.


^ Устройство отката





Рис. 4.14.


Тонкость этой процедуры заключается в том, что результаты исполнения микроопераций должны быть возвращены в контексте IA-архитектуры в том же порядке, в каком эти микрооперации были сгенерированы в модуле Fetch/Decode Unit при декодировании входного потока инструкций исполняемой программы.

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

Retire Unit процессора Pentium II способен завершить и удалить до трех микроопераций за один такт работы процессора.


Интерфейс с шиной







Рис. 4.15.


Bus Interface Unit. Этот модуль (рис. 4.15) отвечает за обмен данными между Ll-кэшом инструкций, L1-кэшом данных, системной шиной и L2-кэшом.

При чтении из памяти должны быть заданы адрес памяти, размер блока считываемых данных и регистр-назначение. Команда чтения кодируется одной микрокомандой.

При записи надо задать адрес памяти, размер блока записываемых данных и сами данные. Поэтому команда записи кодируется двумя микрокомандами: первая генерирует адрес, вторая готовит данные. Эти микрокоманды планируются независимо и могут выполняться параллельно; они могут переупорядочиваться в буфере записи.

Запись в память никогда не выполняется опережающим образом, так как нет эффективного способа организации отката в случае неверного предсказания. Разные команды записи никогда не переупорядочиваются друг относительно друга. Буфер записи инициирует запись, только когда сформированы и адрес, и данные, и нет ожидающих выполнения более ранних команд записи.

При изучении вопроса о возможности и целесообразности переупорядочения доступа к памяти инженеры "Intel" пришли к следующим выводам.

Команда записи не должна обгонять идущую впереди команду записи, так как это может лишь незначительно увеличить производительность.

Можно запретить командам записи обгонять команды чтения из памяти, так как это приведет лишь к незначительной потере производительности.

Запрет командам чтения обгонять другие команды чтения или команды записи может повлечь существенные потери в производительности.

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

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

1   2   3   4   5   6   7   8   9   10

Похожие:

Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconАрхитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение
Так, разработаны новые микропроцессорные вычислительные средства, являющиеся основой микроэвм и персональных ЭВМ. В связи с этим...
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconУчебное пособие Москва-Рязань
Права человека: учебное пособие /Ю. С. Бадальянц, Д. А. Ягофаров. – Москва-Рязань: Издательство «Поверенный», 2006. – 519 с
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconУчебное пособие для вузов М.: Аспект Пресс, 2004. Оглавление введение
Охватывает период так называемой пражурналистики – с I в до н э. Под ней понимают возникновение первичных способов, средств, методов,...
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconУчебное пособие для студентов высших и средних специальных учебных заведений. М., 2001. Введение
Канке В. А. Философия: учебное пособие для студентов высших и средних специальных
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconИ. В. Паблик рилейшнз для менеджеров и маркетеров. М., 1997. Варакута С. А., Егоров Ю. Н. Связи с общественностью Уч пос-е. М.,2004. Чумиков А. Н., Бочаров М. П. Связи с общественностью: теория и практика. Учебное пособие
Чумиков А. Н., Бочаров М. П. Связи с общественностью: теория и практика. Учебное пособие. – М., 2006
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconУчебное пособие для участников торгов на мировых биржах Содержание введение 7
Охватывают вас во время игры, чтобы убедиться в логической обоснованности ваших решений. Вам нужна такая структура управления капиталом,...
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconЮ. Ф. Введение в актуарную математику > Кузнецова Н. Л., А. В. Сапожникова Актуарная математика. Учебное пособие

Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconУчебное пособие санкт-петербург
Учебное пособие предназначено для самостоятельной подготовки курсантов и проведения практических занятий на базе городской детской...
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconОбщая архитектура современных микропроцессорных систем
...
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconУчебное пособие для студентов химического факультета. Уфа: риц башГУ, 2012. 89с. Введение
Химическая технология. Часть Физико-химические закономерности в химической технологии: Учебное пособие для студентов химического...
Архитектура вычислительных систем. Учебное пособие. 2006 Содержание Введение iconУчебное пособие для самостоятельной работы Ставрополь 2010 ббк 63. 3 (2) Я73 удк 99 (С) р -82
Учебное пособие предназначено для студентов медицинских и фармацевтических вузов
Вы можете разместить ссылку на наш сайт:
Документы


При копировании материала укажите ссылку ©ignorik.ru 2015

контакты
Документы