assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 8
Текст из файла (страница 8)
После того как команды разбиты на микрооперации, порядок их выполнения трудно предсказать. При этоммогут возникнуть проблемы с таким критичным ресурсом, как регистры. Суть здесьв том, что если в двух соседних фрагментах программы данные помещались в одинаковые регистры, откуда они, возможно, записывались в некоторые области памяти, а после переупорядочивания эти фрагменты перемешались, то как разобраться в том, какие регистры и где использовались. Эта проблема носит названиепроблемы ложных взаимозависимостей и решается с помощью механизма переименования регистров. Основу этого механизма составляет набор из 40 внутреннихуниверсальных регистров, которые и задействуются в реальных вычислениях исполнительным устройством абсолютно прозрачно для программ.
Универсальныерегистры могут работать как с целыми числами, так и со значениями с плавающейточкой. Информация о действительных именах регистров процессора и их внутренних именах (номерах универсальных регистров) помещается в таблицу псевдонимов регистров.В заключение процесса декодирования устройство управления таблицей псевдонимов регистров добавляет к микрооперациям биты состояния и флаги, чтобыподготовить их к неупорядоченному выполнению, после чего посылает получившиеся микрооперации в буфер переупорядоченных команд.
Нужно заметить, чтоновый порядок их следования не соответствует порядку следования соответствующих команд в исходной программе. Буфер переупорядоченных команд представляет собой массив ассоциативной памяти, физически выполненный в виде 40 регистров и представляющий собой кольцевую структуру, элементы которой содержатАрхитектура 1А-3237два типа микроопераций: ожидающие своей очереди на исполнение и уже частично выполненные, но не до конца из-за их переупорядочивания и зависимости отдругих частично или полностью не выполненных микроопераций. Устройство диспетчеризации/исполнения может выбирать микрооперации из этого буфера в любом порядке.Устройство диспетчеризации/исполнения планирует и исполняет неупорядоченную последовательность микроопераций из буфера переупорядоченных команд.Но оно не занимается непосредственной выборкой микроопераций из буфера переупорядоченных команд, так как в нем могут содержаться и не готовые к исполнению микрооперации.
Этим занимается устройство, управляющее специальнымбуфером, который условно назовем буфером микроопераций, готовых к исполнению. Оно постоянно сканирует буфер переупорядоченных команд в поисках микроопераций, готовых к исполнению (фактически это означает доступность всехоперандов), после чего посылает их соответствующим исполнительным устройствам, если они не заняты. Результаты исполнения микроопераций возвращаютсяв буфер переупорядоченных команд и сохраняются там наряду с другими микрооперациями до тех пор, пока не будут удалены устройством удаления и восстановления.Подобная схема планирования и исполнения программ реализует классический принцип неупорядоченного выполнения, при котором микрооперации посылаются исполнительным устройствам вне зависимости от их расположения в исходном алгоритме. В случае, если к выполнению одновременно готовы две илиболее микрооперации одного типа (например, целочисленные), то они выполняются в соответствии с принципом FIFO (First In, First Out — первым пришел, первым ушел), то есть в порядке поступления в буфер переупорядоченных команд.Непосредственно исполнительное устройство состоит из пяти блоков, каждыйиз которых обрабатывает свой тип микроопераций: два целочисленных устройства, два устройства для вычислений с плавающей точкой и одно устройство связис памятью.
Таким образом, за один машинный такт одновременно исполняется пятьмикроопераций.Два целочисленных исполнительных устройства могут параллельно обрабатывать две целочисленные микрооперации. Одно из этих целочисленных исполнительных устройств специально предназначено для работы с микрооперациями переходов. Оно способно обнаружить непредсказанный переход и сообщить об этомустройству выборки команд, чтобы перезапустить конвейер. Такая операция реализована следующим образом. Декодер команд отмечает каждую микрооперациюперехода и адрес перехода. Когда целочисленное исполнительное устройство выполняет микрооперацию перехода, то оно определяет, был предсказан переход илинет. Если переход предсказан правильно, то микрооперация отмечается пригодной для использования, и выполнение продолжается по предсказанной ветви.
Еслипереход предсказан неправильно, то целочисленное исполнительное устройствоизменяет состояние всех последующих микроопераций с тем, чтобы удалить их избуфера переупорядоченных команд. После этого целочисленное устройство помещает метку перехода в буфер меток перехода, который, в свою очередь, совместнос устройством выборки команд перезапускает конвейер относительно нового исполнительного адреса.38Глава 2. Программно-аппаратная архитектура IA-32 процессоров IntelУстройство связи с памятью управляет загрузкой и сохранением данных длямикроопераций.
Для их загрузки в исполнительное устройство достаточно определить только адрес памяти, поэтому такое действие кодируется одной микрооперацией. Для сохранения данных необходимо определять и адрес, и записываемыеданные, поэтому это действие кодируется двумя микрооперациями. Та часть устройства связи с памятью, которая управляет сохранением данных, имеет два блока, позволяющие ему обрабатывать адрес и данные для микрооперации параллельно. Это позволяет устройству связи с памятью выполнить загрузку и сохранениеданных для микроопераций параллельно в одном такте.Исполнительные устройства с плавающей точкой аналогичны устройствам в более ранних моделях процессора Pentium.
Было добавлено только несколько новыхкоманд с плавающей точкой для организации условных переходов и перемещений.Последний блок в этой схеме выполнения команд исходной программы — блокудаления и восстановления, задачей которого является возврат вычислительногопроцесса в рамки, определенные исходной последовательностью команд.
Для этого он постоянно сканирует буфер переупорядоченных команд на предмет обнаружения полностью выполненных микроопераций, не имеющих связи с другимимикрооперациями. Такие микрооперации удаляются из буфера переупорядоченных команд и восстанавливаются в порядке, соответствующем порядку следованиякоманд исходной программы с учетом прерываний, исключений, точек прерывания и переходов. Блок удаления и восстановления может удалить три микрооперации за один машинный такт. При восстановлении порядка следования командблок удаления и восстановления записывает результаты в реальные регистры процессора и в оперативную память.Таким образом, система динамического исполнения команд позволяет организовать прохождение команд программы через исполнительное устройство процессора эффективнее, чем это было в конвейере процессора 180486 и первых процессоров Pentium.Микроархитектура NetBurstМикроархитектура NetBurst, реализованная в процессоре Pentium IV, являетсяразвитием идей микроархитектуры Р6, поэтому рассматривается довольно конспективно.
Судя по названию (net — сеть, burst — прорыв), микроархитектураNetBurst призвана обеспечить некий «сетевой прорыв». Очевидно, что этим разработчики хотели подчеркнуть те новые особенности процессора Pentium IV, которые позволяют организовать более быструю и эффективную работу приложений в современных сетевых и мультимедийных информационных средах. Отметимнаиболее важные свойства новой микроархитектуры.я Быстрая исполнительная часть процессора.
АЛУ процессора работает на удвоенной частоте процессора. За каждый такт процессора выполняются две основные целочисленные команды. Обеспечена более высокая пропускная способность потока команд через исполнительную часть процессора и уменьшеныразличные задержки.» Гиперконвейерная технология. Гиперконвейер Pentium IV состоит из 20 ступеней. Цель увеличения длины конвейера — упрощение задач, реализуемых каж-Архитектура IA-3239дой из его ступеней, и, как следствие, упрощение соответствующей аппаратнойлогики.Улучшенная технология динамического исполнения благодаря более глубокой«произвольности» в порядке исполнения кода и усовершенствованной системепредсказания переходов.
Размер буфера меток перехода увеличен до 4 Кбайт(Pentium III — 512 байт). Усовершенствован и сам алгоритм предсказания.В результате вероятность предсказания перехода возрастает до 95 %.Новая подсистема кэширования. Отсутствует кэш команд первого уровня. Вместо него введен кэш трасс.
Трассами называются последовательности микроопераций, в которые были декодированы ранее выбранные команды. Кэш трассспособен хранить до 12 Кбайт микроопераций и доставлять исполнительномуядру до 3 микроопераций за такт. Кэш второго уровня работает на полной частоте ядра процессора.Структурная схема процессора Pentium IV показана на рис. 2.4.Препроцессор (команды ->.микрооперации)Устройствовыборки/декодирования^КЭШуровня 2 (L2)КЭШ трассКЭШ данныхуровня 1 (L1)Системная шинаРис.