Эффективность многоядерной архитектуры процессоров
Избежать конфликтных ситуаций, возникающих при использовании технологии Hyper-Threading, можно в том случае, если изолировать в пределах одного процессора выполнение различных потоков инструкций. Фактически для этого потребуется использовать не одно, а два и более ядер процессора. Тогда в идеальном варианте каждый поток инструкций использует отведенное ему ядро процессора (и исполнительные блоки), что позволяет избежать конфликтных ситуаций и увеличить производительность процессора за счет параллельного выполнения потоков инструкций.
В рассмотренном на рис.5.6 примере показана эффективность применения двух независимых ядер в процессоре для выполнения двух потоков инструкций.
Применение в процессоре двухъядерной архитектуры позволило выполнить весь программный код не за семь (как в случае процессора с технологией Hyper-Threading), а за пять тактов.
Конечно, говорить о том, что двухъядерные процессоры в два раза производительнее одноядерных, нельзя. Причина заключается в том, что для реализации параллельного выполнения двух потоков необходимо, чтобы эти потоки были полностью или частично независимы друг от друга, и, кроме того, чтобы операционная система и само приложение поддерживали на программном уровне возможность распараллеливания задач.
В связи с этим стоит подчеркнуть, что сегодня далеко не все приложения удовлетворяют этим требованиям и поэтому не смогут получить выигрыша от использования двухъядерных процессоров. Должно пройти еще немало времени, чтобы были разработаны эффективные средства для разработки программ, которые могут выполняться параллельно во времени и ориентированных на параллельные вычислительные системы.
Впрочем, уже сегодня существует немало приложений, которые оптимизированы для выполнения в многопроцессорной среде, и такие приложения позволяют использовать преимущества двухъядерных и многоядерных микропроцессоров.
Регистровые структуры современных 32-разрядных
Процессоров
Современный 32-разрядный процессор имеет 32 программно-доступных регистра следующих видов:
· регистры общего назначения;
· регистр указателя команд;
· регистр флагов;
· регистры сегментации;
· регистры управления;
· регистры системного адреса;
· регистры отладки и тестирования;
Все 16-разрядные регистры младших моделей микропроцессоров 8086, 80*86 входят в состав набора 32-разрядных регистров. Рассмотрим эти регистры.
Регистры общего назначения. Восемь 32-х разрядных регистров общего назначения (РОН) предназначены для хранения данных и адресов (рис.5.7). Они поддерживают работу с данными разрядностью 1, 8, 16, 32 и 64 бита, битовыми полями длиной от 1 до 32 бит и адресными операндами размером 16 и 32 бита. Эти РОН называются: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.
Младшие 16 разрядов каждого регистра могут использоваться по отдельности, они называются: AX, BX, CX, DX, SI, DI, BP, SP. Также могут индивидуально использоваться младший (0-7) и старший (8-15) байты РОН AX, BX, CX, DX соответственно, их называют: AL, BL, CL, DL и AH, BH, CH, DH.
Индивидуальная доступность байтов РОН обеспечивает дополнительную гибкость для операций с данными.
Регистр указателя команд. Регистр указателя команд представляет собой 32-х разрядный регистр, который называют EIP (рис.5.8). Он содержит смещение следующей команды, которую нужно выполнить. Смещение всегда определяется относительно сегмента кода. Его младшие 16 бит называются IP и используются при шестнадцатиразрядной адресации.
Регистр флагов. Регистр флагов является 32-х разрядным и называется EFLAGS. Его разряды содержат признаки (условия) выполнения команд, управляют обработкой прерываний, последовательностью вызываемых команд, вводом/выводом и рядом других процедур. Младшие 16 разрядов EFLAGS представляют собой регистр FLAGS, который может использоваться при выполнении операций с младшими моделями процессоров 80*86.
Все флаги младшего байта регистра устанавливаются арифметическими или логическими операциями процессора. За исключением флага переполнения, все флаги старшего байта младшего слова отражают состояние микропроцессора и влияют на характер выполнения программ.
Описание разрядов регистра следующее:
M – виртуальный режим;
RF – возобновление задач;
NT – вложение задач;
IOPL – уровень привилегий ввода/вывода;
OF – переполнение;
DF – направление обработки;
IF – разрешение прерываний;
TF – трассировка;
SF – знак результата;
ZF – нулевой результат;
AF – вспомогательный перенос;
PF – паритет;
CF – перенос.
Сегментные регистры. Шесть 16-ти разрядных сегментных регистров содержат базовые адреса сегментов, определяющие сегменты памяти текущей адресации (рис.5.9). В защищенном режиме каждый сегмент может иметь размеры от одного байта до целого линейного и физического пространства машины (до 4 Гбайт). В режиме реальной адресации, максимальный размер сегмента ограничен на 64 Кб. Шесть сегментов определяются содержимым регистров CS, SS, DS, ES, FS и GS. Значение в CS указывает на текущий сегмент кода; содержимое SS указывает текущий сегмент стека, а значения в DS, ES, FS и GS – на сегменты данных.
Регистры дескриптора сегмента. Регистры дескриптора сегмента невидимы для программиста. В 32-х разрядном процессоре регистр дескриптора сегмента соотнесен с каждым видимым регистром селектора, как показано на рис.5.9. Каждый из них содержит 32-х битовый базовый адрес сегмента, его границу (предел) и другие необходимые признаки сегмента. Когда адрес сегмента загружается в сегментный регистр, ассоциативный (соотнесенный) регистр дескриптора автоматически модифицируется в соответствии с новой информацией.
Регистры процессора обработки чисел с плавающей точкой. Набор регистров, входящих в блок (FPU), изображен на рис.5.10. При работе FPU 80-разрядные регистры ST0-ST7 образуют кольцевой стек, в котором хранятся числа с плавающей точкой, представленные в формате с расширенной точностью.
При работе FPU 80-разрядные регистры ST0-ST7 образуют кольцевой стек, в котором хранятся числа с плавающей точкой, представленные в формате с расширенной точностью. Тег определяет, является ли регистр пустым (незаполненным) – код 11 или в него введено конечное число – 00 (достоверное значение), или нуль – 01, неопределенное значение (бесконечность) – 10 (нет числа и неподдерживаемый формат). Слово тегов позволяет оптимизировать функционирование FPU посредством идентификации пустых и непустых регист
ров данных, проверить содержимое регистра без сложного декодирования хранящихся в нем данных.
Системные регистры. Системные регистры управляют функционированием микропроцессора в целом и режимами работы отдельных внутренних блоков: процессора с плавающей точкой, кэш-памятью, диспетчера памяти. Эти регистры доступны только в защищенном режиме для программ.
Набор системных регистров включает регистры управления, регистры системных адресов и с сегментов.
Регистры управления 32-разрядные, служат для фиксации общего состояния процессора. Эти регистры вместе с регистрами системных адресов хранят информацию о состоянии процессора, которое затрагивает все задачи.
Регистры отладки и тестирования. Набор программно-доступных регистров поддерживает отладку программ и тестирования внутренних блоков процессора. Встроенный алгоритм самотестирования (BIST) в процессоре осуществляет поиск ошибки в микрокоде и в больших логических матрицах, а также тестирование кэш-памяти команд и данных, буферов ассоциативной трансляции (TLB) и устройств постоянной памяти. Внутренние счетчики контролируют работу процессора и проводят подсчет событий. Также введена новая функция – мониторинг термического состояния системной платы.
Дата добавления: 2021-12-14; просмотров: 284;