Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Процессорное ядро Hammer.




 

Процесс обработки данных процессором включает несколько характерных этапов. В простейшем случае можно выделить как минимум четыре этапа обработки команды:

· выборка из кэша;

· декодирование;

· выполнение;

· запись результатов.

Сначала инструкции и данные забираются из кэша L1, который разделен на кэш данных D-cache и кэш инструкций I-cache, — этот процесс называется выборкой. Затем выбранные из кэша инструкции декодируются в понятные для данного процессора примитивы (машинные команды) — этот процесс называется декодированием. Далее декодированные команды поступают на исполнительные блоки процессора, выполняются, а результат записывается в оперативную память.

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

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

Рис 3. Обработка данных микропроцессором

 

Схема работы ядра нового процессора в полной мере соответствует рассмотренной схеме классического процессора. Поток инструкций в формате x86-64 ISA поступает в схему предпроцессора (Front End) из кэша L1. Кэш первого уровня (L1) остался точно таким же, как и в процессорах семейства K, то есть имеет общий размер 128 Кбайт и разделен на кэш данных (D-cache) и кэш инструкций (I-cache), каждый размером по 64 Кбайт. Кэш L1 остался ассоциативным двухканальным с размером кэш-блока 64 байт. Кэш инструкций поддерживает два набора дескрипторов (тэгов): fetch port (порт выборки) и snoop (слежение).

Кэш данных поддерживает 40-битный физический и 48-битный линейный адреса и уже три типа тэгов: port A, port B и snoop. Кроме того, кэш данных поддерживает две 64-битные операции записи/чтения за один такт в различные банки кэша. Ну и последнее, что следует отметить, говоря о кэше данных, — это задержки (latency) по выборке. При обращении к выровненным данным (zero segment base) задержка составляет три такта, а при обращении к невыровненным данным (quadword boundary) добавляется еще один такт.

Кэш второго уровня (L2) может иметь максимальный размер до 1 Мбайт. по отношению к кэшу L1 он является эксклюзивным, 16-канальным, ассоциативным.

Из новшеств можно отметить новую схему pseudo-LRU (псевдосхема), позволяющую наполовину уменьшить количество LRU-битов (служебных битов, используемых в протоколе работы кэша). Кроме того, кэш L2 содержит указатели предсказания ветвлений (branch prediction bits) и предварительно декодированные инструкции (IC precode). Еще одним нововведением является увеличенная вдвое (по сравнению с процессором Athlon XP) скорость передачи между кэшами L2 и L1.

Рассмотрев структуру кэшей L1 и L2, вернемся к описанию логики работы процессора. Как и в большинстве современных х86-совместимых процессоров, имеющих внутреннюю RISC-архитектуру, в процессоре Hammer внешние CISC-команды декодируются во внутренние RISC-инструкции, для чего используется декодер команд.

Сначала инструкции x86 разделяются на большие (Large x86 Instruction) и маленькие (Small x86 Instruction). Большие, или сложные, инструкции поступают в программный (Microcode Engine) декодер, а маленькие, или простые, инструкции — в аппаратный (Fastpath) декодер. Оба декодера выполняют одну и ту же задачу — транслируют x86-инструкции в простейшие машинные команды (микрооперации), называемые Ops. Сами х86-команды могут быть переменной длины, а вот длина микроопераций уже фиксированная.

Простые инструкции при декодировании представляются с помощью двух-трех Ops-команд, и с этой задачей вполне может справиться аппаратный декодер, построенный на логических схемах. Сложные команды при декодировании могут представляться несколькими десятками и даже сотнями:Ops-инструкций. Для того чтобы их декодировать, используется специализированный программный декодер, представляющий собой своеобразный процессор. Такой декодер содержит программный код, хранящийся в MIS (Microcode Instruction Sequencer), на основе которого воспроизводится последовательность:Ops-инструкций.

Каждый из двух декодеров может обрабатывать инструкцию длиной до 16 байт и выдавать по три Ops-инструкции за такт, поэтому в общей сложности оба декодера производят шесть декодированных инструкций за каждый такт процессора.

Попутно отметим, что декодер в ядре Hammer претерпел существенные изменения. Именно в него были добавлены две ступени конвейера по сравнению архитектурой К7. Кроме того, известно, что если в ядре процессоров К7 команды SSE декодировались с использованием Microcode Engine, то есть считались сложными, то в ядре Hammer эти команды декодируются с использованием Fastpath, то есть являются простыми.

После прохождения декодера Ops-инструкции (по три за каждый такт) поступают во временный буфер хранения, называемый Instruction Control Unit (ICU). Этот буфер рассчитан на хранение 72 декодированных инструкций. Впрочем, хранение — это не единственное предназначение ICU, а его главная задача заключается в диспетчеризации трех инструкций за такт по функциональным устройствам. То есть ICU распределяет инструкции в зависимости от их назначения и посылает инструкции для работы с целыми числами в целочисленный планировщик (Int Scheduler), а инструкции для работы с вещественными числами — в планировщик для работы с вещественными числами (FPU Scheduler).

Планировщик для работы с вещественными числами (FPU Scheduler) рассчитан на 36 инструкций (как и в архитектуре К7), и его основная задача заключается в том, чтобы распределять команды по исполнительным блокам по мере их готовности. Просматривая все 36 поступающих инструкций, FPU-планировщик переупорядочивает следование команд, строя спекулятивные предположения о дальнейшем ходе программы, чтобы создать несколько полностью независимых друг от друга очередей инструкций, которые можно выполнять параллельно. В процессоре Hammer имеется три исполнительных блока для работы с вещественными числами (FADD, FMUL, FMISC), поэтому FPU-планировщик должен формировать по три инструкции за такт, направляя их на исполнительные блоки.

Все целочисленные инструкции направляются в планировщик инструкций для работы с целыми числами (Int Scheduler), образованный тремя станциями резервирования (RES), каждая из которых рассчитана на восемь инструкций. Все три станции, таким образом, образуют планировщик на 24 инструкции (емкость аналогичного планировщика в процессоре архитектуры К7 составляла 18 инструкций). Этот планировщик выполняет те же функции, что и FPU-планировщик. Различие заключается в том, что в процессоре имеется семь функциональных исполнительных блоков для работы с целыми числами (три устройства ALU, три устройства AGU и одно устройство MULT).

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

Исполнительные устройства также претерпели некоторые изменения по сравнению с процессором архитектуры К7. Как уже отмечалось, для работы с вещественными числами реализовано три функциональных устройства FPU, каждое из которых представляет собой 17-ступенчатый конвейер (как и в архитектуре К7), то есть для работы с вещественными числами предусмотрено три разделенных конвейера. Подобная реализация блока FPU позволяет выполнять до трех вещественных операций за такт, причем такая производительность является рекордной для х86-совместимых процессоров.

Блок операций с целыми числами также полностью конвейеризирован, но по сравнению с процессором Athlon XP длина конвейера увеличена с 10 до 12 ступеней. Блок состоит из трех распараллеленных частей, что в итоге позволяет выполнять три целочисленные операции за один такт (кроме умножения). Для умножения требуется три такта в случае 32-битных чисел и пять тактов в случае 64-битных.

Говоря об архитектурных особенностях процессора Hammer, нельзя не упомянуть об изменениях, коснувшихся кэша TLB (Translation Look-aside Buffers). Кэш TLB — это специальный кэш процессора, хранящий карту декодированных адресов инструкций и данных, что позволяет значительно сократить время доступа к ним. Этот кэш предназначен для уменьшения времени преобразования виртуального адреса данных или инструкций в физический. Дело в том, что процессор, в силу своих особенностей, не может хранить и использовать физические адреса, а пользуется виртуальной адресацией. Преобразование виртуального адреса в физический занимает приблизительно три такта процессора. TLB-кэш хранит результаты предыдущих преобразований, благодаря чему преобразование адреса данных, использовавшихся ранее, возможно осуществлять за один такт.

Процессоры Hammer имеют двухуровневый TLB (L1 TLB и L2 TLB), также разделяющийся на буфер данных и буфер инструкций. L1 TLB кэширует 40 адресов инструкций и 40 адресов данных. Этот кэш является полностью ассоциативным и поддерживает страницы емкостью как 4 К, так и 2/4 M.

Кэш L2 TLB является четырехканальным ассоциативным кэшем с поддержкой страниц, емкостью 4 К. Этот кэш рассчитан на 512 записей, что в два раза больше, чем в процессоре Athlon XP.

 

1.7 От «небольшого отличия» к «великим переменным»

Удлинение конвейеров дало AMD возможность несколько увеличить тактовую частоту, но в Hammer сделана ставка не только на увеличение тактовой частоты, но и на увеличение количества инструкций за такт.

Рис.4 Выполнение команд в K7

 

Один из способов увеличения количества выполняемых за один такт инструкций, как говорилось выше, заключается в увеличении количества исполнительных устройств. В архитектуре K7 имеется три арифметико-логических устройства (АЛУ - для операций с целыми числами), три устройства адресации (Address Generation Units, AGUs - для операций выгрузки из кэша и для записи в кэш), и три устройства для операций с плавающей точкой. Ничего не стоило бы оснастить Hammer вдвое большим количеством устройств, но, к сожалению, на производительности это существенно не отразилось бы. Даже обеспечить работой все исполнительные устройства Athlon довольно сложно, как сложно вообще обеспечить работой исполнительные устройства любого современного процессора, включая Pentium 4. Именно поэтому увеличение частоты FSB приводит к существенному улучшению производительности, ведь именно от нее зависит насколько вы сможете загрузить работой исполнительные устройства.

Intel решает эту проблему с помощью технологии Hyper-Threading. Благодаря ей многопроцессорная операционная система использует один процессор как два, и выдает одновременно два потока команд. Смысл технологии заключается в том, что в большинстве случаев исполнительные устройства процессора далеки от полной загруженности. От передачи на выполнение вдвое большего потока команд повышается загрузка исполнительных устройств. В результате новой технологии Intel ожидал прироста производительности на 10-20 процентов.

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

Рис. 5. Исполнительные устройства Hammer аналогичны Athlon

 

AMD решила эту проблему со свойственной ей оригинальностью. Было решено оставить такое же количество исполнительных устройств, что и в K7, а увеличить количество выполняемых за такт операций, за счет улучшения архитектуры К7.

Тремя основными улучшениями улучшения новой являетюся:

· встроенный контроллер памяти и северный мост

· доработано устройство предсказания ветвлений

· то, что AMD любит называть "большой загрузкой буфера быстрого преобразования адреса (translation lookaside buffer, TLB)"

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных