Микроархитектура центрального процессора
Центральный процессор фирмы Intel
Для описание работы центрального процессора мы рассмотрим эволюцию процессоров фирмы Intel, поскольку эти процессора актуальны сегодня и прошли долгий путь, включая в себя большинство новых технологий.
I8086/x86
Рис.12 Процессор i8086
8-ми битный процессор, выполненный по архитектуре фон-неймановской машины, представлял собой два связанных блока. Первый – блок сопряжения с системной шиной (БШ) включал блок управление обменом информации (УОИ), второй вычислительный модуль (ВМ). Данный из общей памяти подавались через УОИ в буфер данных (БУФ данных). Буфер содержал сметь данных и команд. Эту смесь разбиралась в блоке предварительной выборки (БПВ) на данные и команды, после чего последовательно подавалась на входные регистры целочисленного арифметико-логического устройства (АЛУ). Управляющее устройство (УУ) выполняло на нем арифметические операции. После вычисления данные, с выходного регистра, возвращаются на входные регистры или общую память. Откуда, в зависимости от результата, либо выгружаются обратно в память, либо поступают на следующий этап обработки в АЛУ. Данный тип обработки получил название скалярной архитектуры (последовательная передача управления данными от одного блока к другому). Благодаря последовательному алгоритму передачи управления, можно было создавать процессоры с большим количеством изолированных друг от друга блоков.
I80286
Рис.13 i80286
Процессор был выполнен на основа гарвардской архитектуры, хотя работал с общей памятью. Процессор содержал 4 блока: БШ – блок управления системной шиной; БК – блок команд; БИ - блок исполнения; БФА-блок формирования адреса. БФА отвечал за формирование адресов блоков данных и команд. Благодаря ему входные данные сортировались на два типа – 16-битные данные и 8-битные команды. Каждый блок мог отдельно работать со своим типом данных, поскольку знал адрес.
Данные передавались от блока к блоку, и благодаря адресной шине. Каждый блок за один такт работы процессора выполнял свою работу со своими данными. Эта работа напоминала конвейер по сборке автомобилей, поэтому получила название – конвейерная обработка данных. Наличие адресной шины позволило разделить данные и команды, выделив для каждого типа свою шину. Особенности i80286 процессора: 24-битная адресная шина(16 + 8); 16-битная шина данных; 8-битная шина команд. Это был первый 16-битный процессор Intel на котором можно было выполнять как 8-битные, так и 16-битные команды.
I80386
Один из самых удачных и популярных процессоров 90-х годов прошлого века.
Рис.14 i80386
6 блоков работают параллельно в конвейерном режиме: БПВ-блок предварительной выборки; БШ – блок управления шиной; БДК – блок декодирования команд; БПЗ – блок проверки защиты; БИ – блок исполнения; Бсег –блок управления сегментной памяти Бстр – блок управления страничной памятью. Прямой доступ Кэш к общей памяти. Защищенный режим работы процессора.2-направленная 32-битная шина данных. 32-битная адресная шина 32-битная управляемая шина команд. Это был первый процессор на котором можно было установить UNIX подобные операционные системы (Linux например).
Наличие кеша – позволило разделить данные. Таким образом данные с управляющим битом 0 – определяются системой как реальный режим ядра операционной системы с полным доступом к оборудованию, а данные с битом 1 – режим пользователя с ограниченным доступом к оборудованию и данным. Более того, можно подменять пользовательские данные, изолируя действия одного пользователя на других. Два пользователя могут обращаться к одному и тому же адресу, но реально работать с различными ячейками памяти.
I80486
Первый процессор Intel, котором появился дополнительный блок для обработки чисел с плавающей запятой. Для его организации пришлось разделить общий кэш на кэш данных и кэш команд и добавить блок двухступенчатой выборки команд (БДВ), которая выбирает целочисленные команды и команды обработки чисел с плавающей запятой.
Рис.15 i80486
8 блоков: БШ – блок управления шиной; БПВ – блок предварительной выборки; БДВ – блок двойной выборки; БПЗ – блок проверки защиты; КК – кеш команд; БПЗ – блок обработки чисел с плавающей запятой; Блок обработки целочисленных данных; Бсег – блок сегментации; Бстр – блок обработки страниц.
Блок обработки чисел с плавающей запятой (БПЗ) выполнен как RISC процессор и блок обработки целочисленных данных (БЦ) выполненный по классической CISC схеме. Кеш команд представляет собой общую память для CISC процессора (БПЗ), а кэш микрокоманд – блок команд для RISC просессора. Суперскалярная технология – распараллеливание вычислительных блоков.
Pentium
Процессор, связанный с питерским ученым Пеньковским. Pentium первый комбинированный процессор c RISC ядром.
Рис.16 Pentium
В отличие от процессоров i486 в процессоре Pentium используется раздельная кэш-память команд и данных емкостью по 8 Кбайт, что обеспечивает независимость обращений. За один такт из каждой кэш-памяти могут считываться два слова. При этом кэш-память данных построена на принципах двухкратного расслоения, что обеспечивает одновременное считывание двух слов, принадлежащих одной строке кэш-памяти. Кэш-память команд хранит сразу три копии тегов, что позволяет в одном такте считывать два командных слова, принадлежащих либо одной строке, либо смежным строкам для обеспечения попарной выдачи команд, при этом третья копия тегов используется для организации протокола наблюдения за когерентностью состояния кэш-памяти. Для повышения эффективности перезагрузки кэш-памяти в процессоре применяется 64-битовая внешняя шина данных.
В процессоре предусмотрен механизм динамического прогнозирования направления переходов. С этой целью на кристалле размещена небольшая кэш-память, которая называется буфер целевых адресов переходов (БЦАП) и две независимые пары буферов предварительной выборки команд образующих блок двойной предварительной выборки (БДПВ) (по два 32-битовых буфера на каждый конвейер). Буфер целевых адресов переходов хранит адреса команд, которые находятся в буферах предварительной выборки. Работа буферов предварительной выборки организована таким образом, что в каждый момент времени осуществляется выборка команд только в один из буферов соответствующей пары. При обнаружении в потоке команд операции перехода вычисленный адрес перехода сравнивается с адресами, хранящимися в буфере БДПВ. В случае совпадения предсказывается, что переход будет выполнен, и разрешается работа другого буфера предварительной выборки, который начинает выдавать команды для выполнения в соответствующий конвейер. При несовпадении считается, что переход выполняться не будет и буфер предварительной выборки не переключается, продолжая обычный порядок выдачи команд. Это позволяет избежать простоев конвейеров при правильном прогнозе направления перехода. Окончательное решение о направлении перехода естественно принимается на основании анализа кода условия. При неправильно сделанном прогнозе содержимое конвейеров аннулируется и выдача команд начинается с необходимого адреса. Неправильный прогноз приводит к приостановке работы конвейеров на 3-4 такта.
Вместо CISC процессора используется Блок работы с плавающей запятой (БПЗ) – назначение которого преобразовывать CISC команды в RISC микрокоманды, размещённые в Пуле микрокоманд. Таким образом, на одной шине появилось 2 процессора – целочисленный (CISC) и вещественный (RISC).
Технология HyperThreading – многопоточность. Эта технология позволяет сохранять состояния двух потоков, переключаясь между ними. Многопоточность не является многозадачностью, но пока один процесс ждет слово – процессор может обрабатывать другой поток.
Athlon 64
Стоит отметить, что компания AMD изначально обладая значительно меньшими ресурсами, чем Intel, тем не менее, достигла достаточно больших успехов. Первым таким успехом было появление 386 процессора на частоте 40 мГц (для Intel она составляла 33 мГц), выполненном на 90 нм технологии. Следующим прорывом стало появление процессоров Athlon x64, поддерживающих расширенный набор команд, названный потом x64 набором команд. Архитектура Athlon 64 показана на Рис. 17
Рис 17 АМД
БД2 – блок декодирования макрокоманд включает 2 декодера, ПМК – пул микрокоманд.
АЛУ – арифметико-логическое устройство УГА – устройство генерации адресов.
Технология Hyper-Transport – использует архитектуру K8 с системой HyperTrasport – (возможность пакетной переброски данных). АЛУ со своими микроинструкциями (mop) + два декодера (DirectPath и DirectPath Double) + Планировщик mop + 2 Кеша + 24 очереди + 3 конвейера. Декодирование отнимает лишние такты, поэтому реально скорость обработки 1.5 -3 инструкции за такт, но работа на собственных инструкциях позволяет более эффективно использовать конвейеры и очереди.
Многоядерные процессоры