Философские аспекты архитектур микропроцессоров;-) [черновик]
смотрю я - ни у кого не получается нормально рассказать про процы не получается
<br/><br/>тут собраны полезные материалы, собранные с разных источников, и немного объединены комментариями
<br/><br/>Постоянно скатываются с главного - количества и качества исполнительных устройств и подсистемы подачи данных в процессор - на всякие схемы работы вспомогательных блоков. Вместо копания в схеме реализации какого-то блока необходимо простое численное сравнение и оценка "хорошо-плохо".
<br/>Нечего разбирать количество и качество декодеров и портов запуска – они не являются определяющими и критичными в микроархитектуре, а выбираются под известный разработчикам темп исполнения на соответствующих устройствах.
<br/><br/>поэтому рассмотрим "философские аспекты архитектур микропроцессоров"...
смотрю я - ни у кого не получается нормально рассказать про процы не получается
тут собраны полезные материалы, собранные с разных источников, и немного объединены комментариями
Постоянно скатываются с главного - количества и качества исполнительных устройств и подсистемы подачи данных в процессор - на всякие схемы работы вспомогательных блоков. Вместо копания в схеме реализации какого-то блока необходимо простое численное сравнение и оценка "хорошо-плохо".
Нечего разбирать количество и качество декодеров и портов запуска – они не являются определяющими и критичными в микроархитектуре, а выбираются под известный разработчикам темп исполнения на соответствующих устройствах.
поэтому рассмотрим "философские аспекты архитектур микропроцессоров";-)
Без истории и футуризма(предсказаний) тоже не обойдется.
лекции про микропроцессоры
Исходные принципы
1.все пляшет от техпроцесса и производства - это определяет сколько вы произведете квадратных мм кремния с какой себестоимостью.
2.Огромный и подавляющий рыночный (в том числе и в прямом смысле - подавляющий другие архитектуры) успех имеет CISC архитектура i386, описывающая систему команд 32-битного "х86"-совместимого процессора(CPU, включающего ALU/AGU/ControlUnit) + "х87"-совместимого математического сопроцессора(FPU). Создана она в бородатом 1985 году. Ключевые особенности адресации команд, сегментации памяти, сами х86 команды не менялись со времен i386 — это был последний революционный процессор.
3.остальное - технические реализации архитектуры (AKA микроархитектура - хотя термин IMHO бессмысленный) - определяют как эффективно будут использоваться кусочек кремния
1.Про техпроцесс, оборудование фабрик(чистые комнаты, литографические сканеры), количество и качество фабрик.
В производстве 99% микропроцессоров используют, грубо говоря, 2 технологии - от Intel и от IBM/AMD/CMC (для Transmeta делала Fujitsu и TSMC).
Можно сказать, что в действительно массовом производстве последние отстают на всего полшага - когда Intel делает 0,065 мкм процессоры, то AMD - 0,09++ мкм (+ дает SOI).
0.045 мкм: идеями, над которыми экспериментируют компании, ответственные за прогресс полупроводниковой отрасли, является замена оксида кремния в качестве изолятора на материал с более высоким коэффициентом диэлектрической проницаемости — (так называемый High-k диэлектрик) в сочетании с металлическим затвором и использование транзисторов с несколькими затворами.
AMD применит усовершенствованную технологию SOI (так называемая — полностью обедненная) и локально напряженный кремний (разряжение и сжатие будет создаваться непосредственно в областях, через которые протекает «нужный» ток).
Влияние различных методов совершенствования техпроцессов на потребительские свойства микросхем
Уменьшение проектных нормУвеличение количества слоев металлизацииМедные соединения вместо алюминиевыхLow-k диэлектрик для изоляции межтранзисторных соединенийКремний на изоляторе (SOI)Напряженный кремний (Strained Silicon)High-k диэлектрик в качестве материала изолятора в транзисторахМногозатворные транзисторы (Multi Gates)
Скорость переключения транзисторов (частотный потенциал)повышаетсяснижаются задержки распространения сигналов в пределах микросхемыповышается (40 %)повышается (20–40%)повышается (20–35 %)Повышается (15–20 % по версии Intel, 24 % — AMD, IBM)исследуется (возможно ухудшение отдельных характеристик, связанных с производительностью)повышается
Энергопотребление и тепловыделение снижается (степень снижения определяется успешностью решения сопутствующих технологических проблем) зависит от конкретной реализацииснижаетсяснижается за счет снижения тока утечки между слоями металлизацииснижается за счет снижения тока утечки транзистора в выключенном состояниине меняетсяснижаетсяснижается
Сопутствующие технологические проблемымножество, на данный момент наиболее критичным считается увеличение тока утечки через «истончающийся» слой диэлектрикаусложняется проектирование, отладка и производство, растет число этапов формирования кристаллана данный момент решены (создание электрического контакта меди и кремния, в результате обернулись преимуществами — отпала необходимость в планаризации слоев)нет, но продолжается поиск материалов с еще более низким коэффициентом диэлектрической проницаемостина данный момент решены (получение надежного контакта слоя кремния с изолирующей пленкой)реализована только «первая очередь» этой технологии, в дальнейшем обещан творческий подход к деформации кристаллической решеткинаходится на стадии разработкинаходится на стадии разработки
Себестоимость готовых чиповснижаетсяЗависит от конкретной реализации. Как правило, снижается благодаря существенному уменьшению площади кристалласнижаетсяповышаетсяповышается (первоначально около 10 %)практически не меняетсяповышаетсяповышается (требуется усовершенствование литографического оборудования для формирования объемных структур)
Кем используетсявсемиAthlon XP и 64 содержат 9 слоев, Pentium 4, ядро Prescott — 7 слоевIBM с 1998 года, AMD с 2000, Intel с 2002,в настоящее время — для всех техпроцессов с нормами от 0,13 мкм и меньше используются медные соединенияДиэлектрики с k<3.6 используются в настоящее время всеми компаниями, производящими как центральные, так и графические процессорыIBM с 1999 года (линейка PowerPC), AMD с 2003 года (Opteron, Athlon 64)с 2004 года Intel (90 нм Pentium 4, Pentium D), AMD (130 нм Athlon 64 FX55, 90 нм Athlon 64 Venice и San Diego, Athlon 64 X2)2007–2008 год (?) Intel (45 нм)2007–2008 год (?) AMD, IBM (45 нм)
Процессоры рождаются в виде кристаллов на круглой кремниевой пластине. При динейном увеличении размеров пощадь соответсвенно растет в квадрате - поэтому и выгодно применять бОльшие пластины. Сейчас стандарт - 300 мм. Intel готовится и агитирует за 450 мм.
При одинаковой сложности кристалла процессора более мелкий техпроцесс (без учета добавления дорогих присадок) и пластины бОльшей площади дают низкую себестоимость.
Количество фабрик у Интел 20-30, у AMD 1,5-2! Фабрики примерно одинаковые по производительности. При этом AMD занимает четверть рынка процессоров! Конечно, часть фабрик Intel делают flash, микросхемы и чипсеты, но для этого используют не самое передовое оборудование.
Intel всегда лидировал по внедрению новых техпроцессов
AMD совершело скачки, когда строило с новую фабрику. Собственно можно считать, что AMD всегда будет делать менее «жирные» (по количеству транзисторов) (а значит и дешевые) и более эффективные процессоры.
3. Реализации Intel, AMD, Via, Transmeta
Разделим процессор на 2 независимые части (прямо как у самого 8086), с которыми можно разобраться независимо: доставка данных и обработка.
Подсистема доставки данных прошла долгую количественную эволюцию, но принципиально все процессоры имеют L1, L2 кеши, интерфейс с шиной, на которой сидит контроллер памяти. Эволюция шла по принципу наращивания объемов кешей и скоростей шин. Наибольший прирост производительности дает приращение L1 кеша.
Особенности конкретных реализаций и способов повышения производительность
В системе с процессором 386, грубо говоря, все компоненты работали на единой предельной частоте, ограничиваемой существовавшим техпроцессом - 25,33, позже 40 МГЦ - исполнительные блоки процессора, процессорная шина, чипы памяти, новая шина ввода/вывода - MCA.
486 процессор внес незначительное прибавление в систему команд, но первые версии - 486DX с частотами 25,33,40 МГЦ - ознаменовали главное новшество - интеграцию на 1 кристалле собственно CPU (включающего ALU/AGU/ControlUnit), FPU и кэш 8Кб. Возникла КОНВЕЙЕРИЗАЦИЯ.
Позже появились процессоры с удвоением и утроением частоты. Теперь ядро работало на более высоких высотах относительно памяти, локальных шин VESA и PCI.
Вовсю конвейеризация пригодилась в 486 с множителями 3 и 4 (AMD 5x86-133-P75 - работал как 133=33*4 или даже 160=40*4).
Фактически все современные x86-процессоры "в глубине души" являются полноценными RISC’ами - исходный x86-код они в любом случае преобразуют на лету во внутреннее RISC-подобное представление. Различия между RISC- и CISC-архитектурами почти стираются - просто у RISC’ов декодер, превращающий исходный машинный код в содержимое очередей планировщиков, устроен гораздо проще, чем "расковыривающий" хитро упакованные x86-инструкции CISC-подобный декодер AMD Athlon и Intel Pentium.
Pentium ознаменовал переход к суперскалярности - появилось 2 конвейера, хотя один был урезанным.
FPU оставался несуперскалярным и неконвейеризованным.
Рос кэш 1 уровня - с 16 до 32 Кб (у Pentium MMX), изменялась внутренняя структура - удлинялся конвейер (для достижения частот до 266 МГц - Mobile Pentium MMX)
Процессорная шина данных стала 64-битной, то есть Pentium был быстрее многих 486 процессоров в том числе и за счет ширины шины.
Р6 впервые стала преобразовывать сложные CISC х86 команды во внутренние, более простые RISC-подобные микрокоманды.
реализация P6 включает в себя в практичеси неизменном виде 2 конвейера ALU + впервые на x86 конвейеризованный FPU
первый суперскаляр с OoO
PentiumPro (кэш 256/512 Кб в корпусе), PII (PPro + модуль MMX, кэш на процессорной плате), PIII( PII + модуль SSE), PIII-2 (PIII + кэш на кристалле, а не на процессорной плате), PIII-3 (PIII-2 + модуль SSE2, увеличенный кэш до 512 Кб)
Частота FSB росла от 66 до 133 МГц
AMD создало само создало интересный процессор K5 - RISC-подобное ядро с 4 конвейерами и обычным FPU (от 486),
но трудности с техпроцессом и наращиванием частоты сделали его неконкурентным. Рещив не тратить человеческие ресурсы на развитие K5, они купили готовый процессор - x86 реализацию компании NexGen (она разорилась, попытавшись выпускать x86 процессоры с собственным разъемом). Получился AMD K6. К сожалению FPU был только неконвейризованным. А для соревнования с появившимся PII в новых приложениях - прежде всего играх, ставших killer-app для FPU - этого уже было мало. Слегка спасал кэш 1 уровня в 64 Кб. Перейдя на 0,25 мкм техпроцесс, удалось нарастить частоту. Платформа Super7 позволила ускорить работу с памятью - до 100 МГц . Блок 3DNow! - аналог SSE появился своевременно, но быстрого успеха не принес. Фактором, определяющим дешевизну К6-2 по сравнению с PII, является более низкая стоимость производства из-за меньшей площади кристалла (70 мм2 против 130 мм2 у Celeron).
Cyrix продолжал вылизывать классическую CISC x86 архитектуру (увеличение количества внутренних регистров, переименование регистров, оптимизация архитектуры). Они создали ядро M1 aka 6x86, которое применялось в поздних 486 (получалось быстрое продвинутое ядро на медленной 32-битной шине), и в Socket7 процессорах, где выступало чуть быстрее равночастнотных Pentium.
Cyrix/Centaur С3/C5 – грубо говоря, 6x86MX(M2) на шине от P3 (AGTL) и новом техпроцессе
Cyrix/Centaur С7 – грубо говоря, 6x86MX(M2) на шине от P4 (Netburst QDR) и новом техпроцессе
Развивая P6 и видя слабость K6, у Intel началось головокружение от успехов. Попытки задавить всех велись в 2 направлениях. Неправильно оценив перспективы памяти типа RDRAM по сравнению с DDR SDRAM, Intel поставил на нее и отказался от SDRAM. Его спасли только Via, развивавшая чипсеты Apollo в настольном сегменте, и ServerWorks, делавшая чипсеты для серверов. Intel сопротивлялся этой помощи не сильно;-), пока не создал серию 810/815.
В сегменте серверов делался Itanium (AFAIK Intel называл эту архитектуру P7), который должен был "убить" все RISC-архитектуры, повторив ситуацию в настольном сегменте, где Intel оставил AMD/Cyrix/Centaur/Rise/Winchip крохи рынка и разорил их. Itanium сам по себе был неплох: 64-битный, построенный по принципам VLIW, созданный для работы в многопроцессорных конфигурациях, с мощными блоками FPU, одновременное вычисление нескольких веток программного кода. В конце концов Itanium должен был принести IA64 в настольный сегмент. Itanium убил пару-тройку неплохих RISC-архитектур (тех производителей, кто вошел в альянс по его разработке), испугал остальных производителей. И кто знает, если бы в этом массовом убийстве не погибла Alpha, то ее талантливые разработчики не перешли бы в AMD и не создали бы K7/K8.
Но убило Itanium не медленное масштабирование, сдерживаемое экспансией x86-процессоров в верхний сегмент. Его убило нежелание заказчиков выкидывать все работающее серверное оборудование и программное обеспечение других архитектур, стоящее десятки и сотни миллионов долларов и покупать все новое, связанное с Itanium - под IA64 VLIW-архитектуру необходимо было все перекомпилировать заново.
Тем временем инженеры Alpha принесли свои разработки в AMD: процессорные шины EV6, EV7 -LDT(HyperTransport), интегрированные контроллеры памяти, многопроцессорность, мощные блоки FPU, улучшенная суперскалярность (до 3 конвейеров), опыт работы с 64-битными процессорами.
Можно сказать, что RISC-K7 был бы процессором-спасителем для Alpha (усилил бы позиции в нижнем ценовом сегменте), но стал x86-спасителем для AMD.
муки инфраструктуры
широкому распространению Slot A Athlon’ов сильно помешала из рук вон плохая поддержка со стороны производителей чипсетов и материнских плат.
К7 содержит три конвейерных блока IEU (Integer Execution Unit) исполнения целочисленных команд. Таким образом, Athlon в состоянии выполнить до трех таких инструкций за такт, тогда как Pentium III не больше двух.
К7 содержит 3 узла вычислений с плавающей точкой (fpu), любой из которых способен принимать на вход инструкции каждый такт работы процессора. При этом один узел предназначен исключительно для выполнения команды FSTORE! Назначение этого узла - обеспечивать обмен между регистрами и памятью в то время, как процессор выполняет другие инструкции. Такой подход, хотя и не повышает пиковую производительность, позволяет достичь более высокой средней производительности, что во многих случаях важнее. Остальные два fpu состоят из блока сложения (adder) и блока умножения (multiplier). Оба блока используют конвейеры (fully pipelined). Архитектура каждого fpu такова, что он может принимать на вход каждый такт одну инструкцию сложения и одну умножения, что дает пиковую производительность 1000MFLOPS при 500МГц. Ближайшим аналогом с точки зрения архитектуры является Pentium II, у которого также присутствуют adder и multiplier. Однако существуют два основных отличия. Во-первых, у PII только adder является полностью конвейеризованным (fully pipelined), multiplier же может принимать инструкцию на вход только каждый второй такт. Во-вторых, каждый узел fpu PII может принимать только одну инструкцию за такт, таким образом, пиковая производительность составляет 500MFLOPS при 500МГц.
Поддержка point-to-point SMP - К7 более эффективен в системах с большим числом процессоров, чем решения на базе Slot1.
Это был первый полноценный суперскалярный конвейерный микропроцессор с внеочередным исполнением операций, разработанный в компании. В микроархитектуре процессора K7 нашли отраженме все те основные принципы, которые были до этого реализованы в процессоре Intel Pentium Pro (P6). Однако конкретные подходы разработчиков AMD отличались большей простотой и изобретательностью, направленной на снижение сложности процессора и увеличение его производительности. Разработчики частично пожертвовали гибкостью и динамическими элементами архитектуры, но при этом уделили внимание скорости выполнения многих инструкций (в особенности операций арифметики с плавающей точкой), значительно увеличили размер кэшей 1-го уровня (ограничившись при этом низким уровнем ассоциативности) и ввели важный механизм объединения адресной и арифметической микрооперации в один общий МОП (Load-Op, Op-Store, Load-Op-Store).
Netburst
Базовым параметром архитектуры процессора P-4 является повышенная тактовая частота (в 1.4-1.5 раза по сравнению с классическими процессорами, исполненными по той же электронной технологии). Это влечёт за собой увеличение числа этапов конвейеров, а также, в ряде случаев, качественную переделку тех или иных подсистем, которые не могли бы быть реализованы для такой частоты традиционным образом. При сравнении длин конвейеров и времён выполнения различных действий нужно учитывать, что время такта в процессоре P-4 не превышает 0.7-0.75 от времени такта прочих процессоров, организованных классическим способом.
Чередование плохих-хороших поколений в зависимости от техпроцесса - willamete(0.18 ), Northwood(0.13), Prescott(0.09), Cedarmill(0.065).
Не сумев оторваться от конкурентов с помощью Itanium, Intel создал качественно новую реализацию x86 - микроархитектуру Netburst.
принципиальных элементов архитектуры NetBurst (Pentium 4), как Trace-cache, Replay, форсированная тактовая частота, Hyper-Threading
впервые массовые процессоры в показателях своей производительности весьма заметно зависели от того, проводилась ли оптимизация программного обеспечения под конкретную архитектуру
Основная задача микроархитектуры Pentium 4 состоит в повышении производительности путем увеличения частоты. Для повышения частоты важно как можно быстрее исполнять основные целочисленные операции. Но блоки целочисленных операций существенно отличаются по сложности, поскольку отличаются по сложности исполняемые ими операции: часть из них более сложна, часть менее.
Впрочем, инженеры Intel нашли своеобразный, но эффективный способ увеличить темп обработки операций с целыми числами. Все микрооперации, которые идут на ALU, могут быть исполнены двумя видами устройств: одним устройством slow ALU, и двумя устройствами fast ALU. Первое устройство представляет собой ALU, которое может обработать сравнительно большое число целочисленных операций; в частности, на нем исполняются наиболее сложные целочисленные операции.
Два устройства fast ALU интереснее и заметно более специализированны. Они предназначены для обработки простых целочисленных операций – например, сложение двух целых чисел. Но зато это самое сложение они делают гораздо быстрее, чем slow ALU, поскольку работают на удвоенной частоте процессора. То есть, процессор частотой 3GHz содержит некоторое количество устройств, которые работают на частоте 6GHz. Эти два устройства не идентичны друг другу: fast ALU 0 более универсальное, нежели fast ALU 1, и умеет исполнять большее количество команд. Fast ALU обрабатывает числа по "половинкам". Зато делает это не каждый такт, а вдвое быстрее, по полутактам (они именуются "тиками", tick). На fast ALU обрабатываются далеко не все операции, а только самые простые, вроде сложения.
блока целочисленного умножения в Northwood-е нет !
без оптимизации программного обеспечения Pentium 4 не сможет продемонстрировать хорошую производительность
ядре Prescott блоки fast ALU имеют реализацию, отличную от реализации остальных блоков процессора, поскольку ради повышения рабочих частот здесь используется транзисторная логика, основанная на дифференциальных парах! Заметим, что "дифференциальная логика" может работать на заметно более высоких частотах, именно поэтому ее и применили в этих блоках. Но такая логика выделяет заметно больше тепла в пересчете на один транзистор, содержит ощутимо больше транзисторов и, к тому же, выделяет тепло даже на "холостых" циклах.
операции shift в Prescott-е относятся к fast ALU. появился блок целочисленного умножения
Это приводит к достаточно забавным следствиям: в частности, если раньше для повышения производительности было выгоднее код, содержащий shift, заменять на код, содержащий ADD, то в данном случае ситуация изменилась с точностью до наоборот.
Prescott в части времен исполнения инструкций стал гораздо больше похож на остальные х86 процессоры, чем Northwood: времена исполнения операций стали гораздо ближе друг к другу, практически нет таких разбросов, как были в Northwood-е.
Поэтому программное обеспечение, перекомпилированное для использования с ядром Northwood, для ядра Prescott имеет смысл перекомпилировать заново.
устройство fast ALU для обработки 64-х битных данных вполне может быть организовано аналогично устройству fast ALU в Northwood-е, то есть два "подустройства" шириной 32 бит, сдвинутых друг относительно друга
в ядре Northwood конвейер (та часть, которая расположена после Trace cache) занимает 20 стадий, а у ядра Prescott и того больше, 31 стадию.
модуль FPU один
Hyper Threading (НТ)
1. Ресурсы исполнительных блоков NetBurst на первый взгляд представляются избыточными, и их нехватка не должна сильно влиять на эффективность Hyper Threading. Особенно показательно это для целочисленных fast ALU блоков, которые могут выполнять микроопераций больше (до четырех за такт), чем им успевает "скармливать" Trace cache (до трех за такт).
2. Максимальный выигрыш от Hyper Threading по сравнению с последовательным исполнением потоков можно получить на неоптимизированных приложениях. Оптимизация, повышающая IPC одного потока, приводит к уменьшению пользы Hyper Threading. Более того, если разделяемые ресурсы процессора, за которые конкурируют нити, не ограничиваются только исполнительными устройствами (кэш, очереди, буфера и пр.), то, начиная с определенного уровня оптимизации, Hyper Threading будет только вредить: два потока последовательно будут выполняться быстрее, чем в режиме Hyper Threading.
Технология Hyper Threading сравнительно легко реализовывается в микроархитектуре NetBurst, благодаря таким специфическим чертам последней, как Trace cache. В самом деле, в традиционной архитектуре (такой, как Р6) декодер сильно связан с исполнительными устройствами. Чтобы исполнять два потока инструкций одновременно, их необходимо одновременно превращать в микрооперации, что труднодостижимо. Но хуже всего то, что их придется одновременно выбирать для обоих потоков, что, в связи с переменной длиной х86 инструкций, весьма небанальная задача.
Совсем иное дело в случае, если у нас есть Trace cache: у нас уже есть некоторое количество декодированных команд, которые принадлежат различным нитям программы (или различным программам). Исполнительное ядро оказывается сравнительно слабо связанным с декодером, и его работа напрямую от декодера не зависит (лишь бы в Trace cache содержалось достаточное количество уже декодированных инструкций).
разделение ресурсов влечет за собой некоторые подводные камни. Как мы видели выше, конкурентная борьба двух логических процессоров за разделяемые ресурсы приводит к тому, что доступный каждому потоку набор ресурсов меньше, чем в случае работы только одного потока. В частности, кэш данных первого уровня у ядра Northwood и без того не блещет размером, всего 8КВ. При применении технологии Hyper Threading эффективный размер кэша для каждого из потоков становится примерно вдвое меньше, 4КВ. Кстати, такая формулировка заставляет задуматься вот над чем: весьма вероятно, что существующее увеличение эффективности технологии Hyper Threading в ядре Prescott связано как с усовершенствованием этой технологии, так и с тем банальным фактом, что кэш первого уровня вдвое увеличился в размере. Что, в свою очередь, несколько уменьшило потери производительности от его дефицита.
Прирост от применения технологии Hyper Threading находится в диапазоне от 0% до 30%, в отдельных случаях возможно некоторое падение производительности. Эффективность технологии Hyper Threading находится в сильной зависимости от качества оптимизации программного обеспечения под эту технологию. Технология Hyper Threading не способна заменить настоящую двухпроцессорную систему, но и затраты на Hyper Threading невелики.
Реализованное в процессоре Pentium 4 устройство системы реплея является таким попыткой заново выполнить микрооперации, не слишком усложняя логику их обработки.
По сути, система реплея представляет кусок фиктивного конвейера, расположенный параллельно основному.
Весьма поучительно, что изначально вроде бы совершенно логичный способ организации работы длинного конвейера приводит к катастрофическим для производительности последствиям. Подробные причины этого мы откладываем до следующей главы, пока же важно осознать вот что: реплей является той ценой, которую приходится заплатить за длинный, сверхглубокий конвейер. Идеологическое решение о важности прежде всего высокой частоты работы заставило архитекторов сделать длинный конвейер. А длинный конвейер, в свою очередь, потребовал специальной системы "отката" в ситуациях, когда данные не доставлены к микрооперациям вовремя.
Особо отметим: штрафы, вызванные реплеем, не зависят от качества кода и количества "ветвлений" в нем. Реплей есть оборотная сторона медали по имени "Hyper Pipeline" – то, чем приходится расплачиваться за оптимистическую стратегию работы планировщика. А, в свою очередь, такая стратегия – единственно возможный вариант работы конвейера в ситуации, когда планировщик удален от исполнительных устройств, а расстояние (в стадиях) между ними превышает время исполнения большинства простых команд. Поскольку данные к исполняемым микрооперациям не могут быть доставлены мгновенно, происходит "холостой цикл" работы конвейера. Причем плохо не столько то, что отдельная операция переисполняется – тут деваться некуда, мы вынуждены это сделать – сколько то, что вслед за первой операцией переисполняется вся цепочка зависимых операций, сколько бы их ни было. То есть, первоначальную проблему с перезапуском микрооперации "наследует" остальная цепочка.
Если давать оценку реплею в целом, то "реплей – это плохо, но неизбежно".
несмотря на весьма заметное теоретическое преимущество в виде: более высокой частоты, более быстрой шины, большего и более быстрого кэша, большего значения IPC (instruction per cycle), процессор Pentium 4 в некоторых ситуациях уступает в результирующей производительности своему предшественнику (!), процессору Pentium III. Отметим, что реплей – зачастую гораздо более строгое объяснение, нежели полу-мифические "остановки и сброс конвейера на коде с большим количеством переходов"; объяснением, которое, будучи весьма привычным, часто является неверным.
У каждого планировщика есть своя система реплея. То есть, в ядре Northwood всего есть десять (!) фиктивных конвейеров, спрятанных от пользователя.
Масштабы неизвестной нам части процессора Pentium 4 откровенно ошеломляют. Поневоле начинаешь задаваться вопросом: неужели ЭТО можно назвать красивым архитектурным решением?
В ядре Prescott ситуация несколько изменилась: петель реплея у каждого планировщика только одна, но длина каждой больше, 18 тактов. Итого: пять фиктивных конвейеров. Вспоминая, что по меньшей мере часть их работает на удвоенной частоте (вместе с Fast ALU конвейерами), а используется при этом дифференциальная (LVS) логика, нас перестает удивлять нагрев ядра Prescott: он вполне понятен. Реплей заставляет конвейер работать "в холостом цикле" минимум дважды на каждую микрооперацию, попавшую на него. В результате, поскольку нужно совершать больше работы на одно и то же количество кода, выделяется больше тепла.
Вызовы функций есть во всех без исключения программах. Соответственно, во всех без исключения программах есть крайне благоприятные условия для возникновения реплея.
Наличие реплея существенным образом может снижать эффективность технологии Hyper Threading. В частности, при определенных условиях реплей способен "потерять" до 45% производительности (!) в ядре Northwood и до 20% в ядре Prescott. Более того, наблюдаемое повышение эффективности технологии Hyper Threading в ядре Prescott следует связывать скорее с усовершенствованием реплея, чем с улучшением собственно самой технологии Hyper Threading!
к сожалению, реплей ухудшает производительность Pentium 4. Оправдывает существование этого явления только то, что без него процессор Pentium 4 корректно работать попросту не смог бы.
Подводя итог можно сказать, что реплей не является самостоятельной чертой архитектуры NetBurst, призванной увеличить производительность процессоров. Скорее, реплей – это "обратная сторона медали" длинного конвейера, вспомогательный механизм, необходимый для исправления ошибок спекуляции. Снижение производительности за счёт реплея является расплатой за высокую тактовую частоту.
Правильный размер кеша и правильная частота – около 2-3 ГГц
Первая архитектура созданная на запланированно большую частоту (на меньшей работает с большим пенальти)
исполнительные устройства декодер
шина 400 (на самом деле 100 но с подключ 300) / 533 с уменьш латентностью / скачок 800
+ учет микроархитектуры (замена ALU сдвигом и наоборот, непроработанность HyperThreading 1 поколения )
Блекс и нищета медиакодирования
Расцвет Northwood Cedarmill
Неудачи Willamete/Prescott диктат производственников и излишних мощностей, но подкрепленные нормальным маркетинговым бюджетом
Ессно intel полагал что производя 90% процессоров может направлять индустрию софта, а оказалось – нет. Хотя если рассматривать весь парк техники вместе с архитектурой P6, то оптимизировать под
Плохая работа Netburst в мобильном сегменте принудила возродить PIII. Старое доброе ядро P6 реализации PIII-3, посаженное на широкую шину QDR400 от Netburst и снабженное кэшем 2-го уровня в 1 Мб, показало свой скрытый потенциал. В то же время блок FPU оставался слаб, а поддержка 64-бит потребовала бы полной переработки процессора. Это был хит. В специальных мобильно-настольных материнских платах с 2-х-канальной памятью и QDR1066 шиной в разгоне на воздухе до 2,5-3 ГГц, Pentium-M был сопоставим с раночастотным Athlon64 (опережая на целочисленных, отставая по FPU - в целом - паритет) Тут бы AMD не зевать, но инженерных ресурсов, видимо, опять не хватало и враг с таким потенциалом остался без должного внимания.
Pentium Pro Первый суперскалярный процессор архитектуры x86 с внеочередным исполнением операций (Out-of-Order execution). Имеет незначительные архитектурные расширения в сравнении с процессором предыдущего поколения Pentium: добавлены инструкции условной пересылки и новые инструкции сравнения. Исполнен в виде сборки с раздельными кристаллами процессора и L2-кэша. Использовался в основном для серверных применений, выпускался с кэшами различного размера вплоть до 1 МБ.
Pentium II Добавлен набор инструкций MMX. Увеличены кэши первого уровня, улучшено исполнение 16-разрядных кодов. Исполнен в виде дочерней платы с отдельным кристаллом L2-кэша, работающего на половинной частоте. Выпускался также в следующих вариантах: OverDrive, совместимый с разъёмом процессора Pentium Pro; Celeron без L2-кэша; Celeron и Dixon с интегрированным L2-кэшем уменьшенного размера; Xeon с полночастотным внешним кэшем увеличенного размера.
Pentium III Добавлен набор инструкций SSE и инструкции предвыборки из памяти. Первоначально исполнен в виде дочерней платы с отдельным кэшем, в последующих вариантах имеет встроенный полночастотный L2-кэш с 256-разрядной шиной. Выпускался также в следующих вариантах: Celeron с L2-кэшем уменьшенного размера; Xeon с полночастотным внешним кэшем увеличенного размера.
Pentium M Добавлен набор инструкций SSE2. Реализован механизм слияния микроопераций (micro-ops fusion), увеличены кэши первого уровня, ускорена работа с аппаратным стеком, существенно улучшен механизм предсказания переходов. В связи с ориентацией на мобильные применения внедрены радикальные технологии энергосбережения. Введена новая процессорная шина, заимствованная у процессора Pentium 4. Произведён ряд микроархитектурных усовершенствований, операции плавающего умножения и сложения разнесены на два отдельных порта запуска. Во второй модели процессора P-M (Dothan) устранены задержки из-за «частичной записи в регистр» («Partial register stall»), удвоен темп выполнения инструкции сложения MMX.
Pentium M2 (Core Duo) Добавлен набор инструкций SSE3. Существенно улучшен декодер с поддержкой механизма слияния микроопераций для инструкций SSE и обработкой упакованных инструкций SSE во всех каналах декодера. Ускорено выполнение некоторых инструкций, усовершенствован механизм предвыборки из памяти. Содержит на кристалле два процессорных ядра и общий L2-кэш. Поддерживает технологию виртуализации VT и усовершенствованные технологии энергосбережения.
сводная таблица основных процессоров семейства P6.
процессор кодовое обозначение нормы (мкм) кэши L1 I/D кэш L2 исполнение частота, ГГц архитектурные расширения микроархитектурные усовершенствования
P Pro P6 0.5 8/8 256 сборка 0.20 +условн.опер новая микроархитектура
P-II Deschutes 0.25 16/16 512 внешний L2 0.45 +MMX внешний L2, улучшенная 16бит
P-III Tualatin 0.13 16/16 512 1.40 +SSE быстрый L2, предвыборка
P-M Dothan 0.09 32/32 2048 2.26 +SSE2 µop fusion, улучшен предсказ. переходов
P-M2 Yonah 0.065 32/32 2048 2 ядра 2.33 +SSE3 SSE µop fusion, общий кэш L2
усовершенствования и исправления недостатков, проведённые поэтапно в процессорах семейства P6+ (P-M и P-M2):
•увеличены размеры и ассоциативность кэшей;
•увеличены размеры очередей внеочередного исполнения и различных внутренних таблиц;
•радикально улучшена подсистема предсказания переходов;
•введён механизм слияния микроопераций (micro-op fusion);
•ускорена работа с аппаратным стеком;
•значительно усовершенствован декодер машинных инструкций;
•добавлены режимы SSE2 и SSE3, проведён ряд усовершенствований в функциональных устройствах и портах запуска операций;
•заимствована внешняя шина FSB у процессора P-4;
•внедрены усовершенствованные технологии энергосбережения;
•реализована двухъядерность с общим L2-кэшем (в процессоре P-M2).
K8
При его создании основной упор был сделан на две ключевые технологии: 64-битный режим целочисленной и адресной арифметики AMD64 (x86-64), и интегрированный контроллер оперативной памяти, встроенный в процессорный чип. Создание расширенной архитектуры x86-64 позволило снять ограничения по адресации памяти, сдерживающие развитие десктопных процессоров, а реализация встроенного контроллера существенно снизила латентность доступа к оперативной памяти, тем самым дав значительный прирост в производительности на многих задачах. В дальнейшем архитектура x86-64 стала стандартной и была реализована в процессорах Intel P-4E и P8. Внедрение встроенного контроллера памяти в процессорах компании Intel также предполагается в ближайшие годы.
Помимо этих ключевых технологий, в процессоре K8 имеется ряд менее значимых отличий от K7:
•усовершенствован декодер машинных инструкций, большинство «сложных» инструкций, порождающих 2 МОПа, переведены в разряд «простых»;
•добавлены режимы SSE2 и (чуть позднее) SSE3;
•несколько улучшена подсистема предсказания переходов;
•увеличена длина очередей планировщика, проведены некоторые модификации в подсистеме внеочередного исполнения и в функциональных устройствах;
•расширена шина L2-кэша и уменьшено время доступа;
•обеспечено комплексирование в многопроцессорные конфигурации через интерфейс HyperTransport без использования внешней логики (чипсета);
•реализована двухъядерность с раздельными L2-кэшами и общим контроллером памяти (в процессоре K8 X2).
Кроме перечисленного, можно подчеркнуть ещё несколько отличительных черт процессоров K7/K8, способствующих повышению их производительности:
•частичное предекодирование инструкций перед помещением в I-кэш;
•возможность выполнения двух загрузок из L1-кэша за такт;
•малая длина конвейера непредсказанного перехода благодаря разделению подсистем целочисленно-адресной арифметики (ALU/AGU) и арифметики с плавающей точкой (FPU);
•наличие трёх симметричных устройств для выполнения целочисленных и адресных операций ALU/AGU.
Однако в архитектуре процессора K8 имеется и ряд недостатков, часть из которых обусловлена базовыми ограничениями микроархитектуры:
•статическое разбиение потока МОПов на группы по 3 элемента с привязкой очередей и функциональных устройств ALU/AGU к позициям этих элементов;
•слабая система предсказания переходов, использующая устаревшие алгоритмы;
•недостаточно совершенная аппаратная предвыборка из памяти;
•отсутствие механизмов переупорядочения обращений к памяти;
•взаимно эксклюзивная организация кэшей, ограничивающая скорость выборки из L2-кэша и увеличивающая время доступа;
•недостаточная ассоциативность L1-кэшей, снижающая их эффективность.
В целом процессор K8 составил хорошую конкуренцию процессорам P-4 и P-4E. Благодаря меньшей длине конвейеров и более эффективной реализации многих инструкций он оказался не столь требователен к оптимизации кодов и в ряде применений имеет более высокую производительность. Особенно это относится к игровым программам и некоторым десктопным приложениям. В настоящее время производится перевод процессоров K8 на использование оперативной памяти DDR2, обладающей повышенной пропускной способностью. Этот переход позволит несколько повысить производительность, особенно для двухъядерных вариантов (K8 X2). Дополнительным достоинством нынешних вариантов процессоров K8 является относительно невысокое энергопотребление и тепловыделение (в сравнении с процессорами P-4).
принципиальное исчезновение data/bus/memory bottleneck
Изначально двухъядерный - коммутатор
Внедрены мобильные технологии – Cool&Quiet
Многопроцессорная мощь – тоже принципиальное исчезновение data/bus/memory bottleneck - HyperTransport
Раннее внедрение x86-64 – сбил темп разработок Intel.
*****понятие 64-битный процессор относится прежде всего к целочисленной и адресной арифметике. Операнды команд SSE и SSE2/3 –128-битные. Устройства FPU изначально являются 80-битными. 128-битные SSE-команды разбиваются на два 64-битных МОПа и запускаются на исполнение последовательно в разных тактах.
На одной кремниевой подложке с ядром процессора расположен контроллер памяти. Данные из контроллера памяти через коммутатор направляются непосредственно в кэш первого уровня L1, минуя L2, что уменьшает задержку получения данных из оперативной памяти. В кэш второго уровня L2 попадают только данные, вытесненные из L1.
Hammer исполняет на 8% меньше микроопераций в наборе SPECint 2000.
Hammer исполняет на 28% (!!!) меньше микроопераций в SPECfp 2000.
В данном случае не производительность процессора стала хуже, а просто изменение методики разбиения команд х86 на µOps привело к уменьшению общего количества µOPs, в которые превращается программа.
AMD изменяла в K8 прежде всего именно декодер — можно бороться за то, чтобы исполнять как можно больше работы за такт. А можно подумать и сделать так, чтобы было меньше работы вообще.
Задержка умножения, тактов8 bit, 16 bit32 bit64 bit
Athlon XP3 такта4 тактаN/A
«Hammer»3 такта3 такта5 тактов
набор команд х86 считается «устаревшим», слышали многие. Но многие ли представляют себе, что является одним из основных «костылей», которые мешают наращивать производительность далее? Одним из главных «костылей» является тот факт, что архитектура х86 может иметь лишь 8 регистров общего назначения. При работе многих алгоритмов этого частенько не хватает — приходится тратить время и вычислительные ресурсы на то, чтобы «выкрутиться». Подчеркиваем, речь не идет о физических регистрах — со времен Р6 используется переименование регистров. Речь идет о том, что многие алгоритмы вынужденно усложнены в силу нехватки архитектурных 8 регистров общего назначения в х86. AMD предлагает возможность снизить остроту этой проблему, предоставляя дополнительных 8 регистров. Но поскольку совместимость с предыдущим программным обеспечением — обязательное требование для процессора общего назначения, то подобный подарок использовать в стандартном х86 не получится. Необходимо перейти на х86-64. Например, в Word больше 80% функций довольствуются 8 регистрами — а остальные функции вынуждены использовать «переименование регистров» и запоминать промежуточные данные. Соответственно, если регистров станет 16, то это устроит уже 96% встроенных функций Word. При этом понятно, что скорость исполнения вырастет, ибо не нужно прибегать к дорогостоящим (в смысле производительности) алгоритмическим методам, сохраняющим регистры.
Двухъядерные K8
K8L изначально проектируется как четырёхъядерный чип. Все четыре ядра будут находиться на одной кремниевой пластине, подключенные к общему кэшу третьего уровня, а также общим коммутатору и контроллеру памяти.
В процессоре K8L устройства FADD и FMUL расширятся до 128 бит
ширина SSE-устройств в будущем процессоре K8L будет расширена до 128 бит
В отличие от блока исполнения целочисленных команд с симметричными вычислительными каналами блок плавающей арифметики содержит три различных устройства FADD, FMUL и FMISC (он же FSTORE) для вещественного сложения, умножения и вспомогательных операций
Кроме расширения вещественных устройств в K8L будут расширены расположенные внутри блоков FADD и FMUL целочисленные устройства, занимающиеся выполнением команд SSE2, что приведёт к ускорению целочисленных приложений, использующих этот набор команд. Также K8L научится исполнять несколько дополнительных SSE-команд
В процессоре K8L появится общий для 4-х (или менее) ядер на подложке кэш третьего уровня размером 2 или более мегабайт. Кэш третьего уровня, судя по всему, так же, как и кэш второго уровня, будет эксклюзивным. Вместе с улучшенным коммутатором (enhanced crossbar) кэш третьего уровня поможет снять проблему невысокой скорости обмена изменёнными данными между кэшами соседних ядер, который у K8 производится с использованием шины памяти. Эта проблема в значительной мере снята в процессорах с ядром Conroe благодаря общему для двух ядер кэшу второго уровня. Таким образом, четырёхъядерный процессор K8L, скорее всего, будет по своим характеристикам обмена данных между ядрами ближе к ядру Conroe.
в подсистему памяти K8L будут внесены некоторые другие модернизации, такие как поддержка в перспективе памяти DDR3 и FBDIMM и поддержка HyperTransport 3.
K8L повторяет идеологию своего предшественника, однако имеет множество усовершенствований и отличительных признаков. Наиболее важными из них являются:
•реализация полночастотного 128-битного режима выполнения упакованных операций SSE (в двух каналах исполнения);
•увеличение ширины и пропускной способности доступа к L1-кэшу — теперь в каждом такте могут выполняться две 128-битные загрузки за такт либо одна загрузка и одна выгрузка (в процессоре P8 — только одна такая загрузка и одна выгрузка);
•увеличение длины выборки из кэша инструкций до 32 байтов;
•усовершенствование механизма предсказания переходов, добавление предсказателя косвенных переходов;
•появление механизма внеочеденой выборки данных из памяти;
•некоторое расширение системы команд.
Кроме того, изменилась структура и внешние интерфейсы процессора. Теперь базовый вариант содержит 4 процессорных ядра, имеющих раздельные L2-кэши по 512 Кбайт и общий кэш 3-го уровня размером 2 Мбайта (в последующих версиях процессора L3-кэш увеличится). Коммуникационные интерфейсы HyperTransport, используемые для ввода-вывода и для объединения в многопроцессорную систему с общей памятью, перешли на стандарт HT-3.0, обеспечивающий повышенную скорость обменов и улучшенную функциональность. Максимальная частота интерфейсов выросла до 2.6 ГГц, а пиковая скорость передачи данных - до 10.4 Гбайт/с (в каждом направлении). Число интерфейсов увеличилось с трёх до четырёх, что позволяет реализовывать полносвязные системы из 4 процессоров (сокетов) и повысить степень интеграции систем из 8 процессоров (сокетов).
В остальном микроархитектура процессора K8L повторяет архитектуру K8: сохранилась ширина выборки и обработки инструкций, равная трём, по-прежнему производится разбиение потока МОПов на группы по 3 элемента со статической привязкой очередей и устройств ALU/AGU к позициям этих элементов, не претерпела особых изменений система внеочередного исполнения операций (с разделением на подсистемы ALU/AGU и FPU). Также нет упоминаний о том, увеличилась ли ассоциативность кэшей 1-го уровня (увеличение уровня ассоциативности с 2 до 4 позволило бы заметно повысить эффективность использования этих кэшей).
Таким образом, новый процессор сохранил ряд недостатков предыдущей архитектуры. Также неоднозначным является решение уменьшить размер L2-кэша у каждого ядра до 512 Кбайт и объединить ядра на следующем, третьем уровне кэша. Размер L3-кэша (2 Мбайта) тоже весьма невелик — правда, он, по всей вероятности, реализован эксклюзивно по отношению к L2-кэшам, и поэтому его эффективный размер при тяжёлой нагрузке может увеличиться на сумму размеров L2-кэшей (т.е. до 4 Мбайт).
Самым принципиальным отличием процессорного ядра K8L от ядра K8 является удвоение скорости работы блока арифметики с плавающей точкой (для упакованных режимов SSE). Идея введения полночастотной 128-битной обработки SSE-регистров витала в воздухе в течение ряда лет и рассматривалась как естественный путь развития микроархитектуры процессора K8. И вот, наконец, она будет реализована — правда, лишь через год после внедрения этой идеи в процессор Intel Core (P8).
Упомянутые выше недостатки и ограничения микроархитектуры K8L (в первую очередь невысокая ширина обработки и недостаточно «динамическая» реализация целочисленной арифметики ALU в сочетании с относительно небольшим размером кэшей верхних уровней) не позволят новому процессору превзойти конкурирующую архитектуру Intel Core (P8) на целочисленных и игровых применениях — так что для таких задач следует ожидать отставания в производительности. Однако на ряде применений с активным использованием арифметики с плавающей точкой процессор K8L может достойно противостоять конкуренту, а в ряде случаев и превосходить его. Небольшое превосходство на таких задачах может быть обеспечено благодаря высокой эффективности встроенного контроллера памяти и большему размеру L1-кэша в сочетании с возможностью выполнять до двух загрузок из кэша за такт. Эти факторы позволят компенсировать общие недостатки архитектуры на достаточно регулярных кодах. Например, на задаче перемножения больших матриц можно ожидать достижения производительности на уровне 85% от пиковой, против оценки на уровне 80% для процессора P8 (при одинаковой тактовой частоте и сопоставимых размерах кэшей верхних уровней).
Core
Все внутренние шины и исполнительные устройства расширены в 2 раза.
ограничением Conroe, которое может проявляться в вещественных алгоритмах, использующих x87 команды (т.е. без применения SSE оптимизаций), является в два раза более низкий темп запуска команды умножения FMUL.
Процессоры с ядром Conroe обладают очень развитой системой кэширования: кэш первого уровня размером 32 КБ и ассоциативностью равной 8 и кэш второго уровня размером 2-4 МБ с ассоциативностью равной 16 соединены полноскоростной шиной шириной 256 бит. Процессор обладает высокоэффективными блоками предвыборки, которые могут агрессивно загружать данные не только из оперативной памяти, но и из кэша второго уровня в кэш первого уровня. Именно расширением системы кэширования в Conroe по большей части могут быть объяснены резко выросшие в SPEC INT результаты (до 40% в некоторых подтестах) по сравнению с предыдущим ядром Yonah.
нововведения, появившиеся в архитектуре P8 и отличающие её от промежуточной архитектуры P6+:
•увеличена «ширина обработки» до 4-5 инструкций за такт, введён механизм слияния в одну макрооперацию инструкций сравнения и перехода;
•увеличено число кластеров арифметико-логических функциональных устройств и портов запуска;
•увеличены размеры очередей внеочередного исполнения и различных таблиц;
•усовершенствованы подсистемы предсказания переходов и предвыборки данных;
•добавлен механизм устранения неоднозначностей при обращении в память;
•реализован полночастотный 128-битный режим выполнения упакованных операций
SSE во всех трёх каналах исполнения;
•увеличена ширина и пропускная способность доступа к L1-кэшу;
•введён 64-битный режим EM64T (x86-64), а также дополнительный режим SSE4.
Превосходство процессора P8 в производительности обусловлено в первую очередь динамической организацией его архитектуры, имеющей увеличенную ширину запуска и обработки инструкций, полночастотным выполнением упакованных 128-битных операций SSE, увеличенным размером L2-кэша, более совершенным предсказателем переходов и улучшенной подсистемой предвыборки данных. Поскольку процессор P8 построен на примерно тех же фундаментальных архитектурных принципах, что и K8, и имеет сопоставимую с ним длину конвейера, он не обладает «недостатками» процессора P-4 и поэтому страдает от недостаточной оптимизации кодов не в большей степени, чем K8. Кроме того, процессор P8 имеет пониженное энергопотребление и улучшенные механизмы управления питанием.
Ошибки Intel
преждевременные "похороны" Socket7, оживленного AMD и Cyrix и ставшего Super7
RDRAM
Itanium (AKA Itanic) IA64
неудачное ядро Prescott (неудача с реализацией Netburst на 0,09 мкм техпроцессе)
Промахи AMD (разница между ошибками и промахами составляет сотни миллионов долларов - поэтому у AMD только промахи, а не ошибки;-)
забрасывание чипсетного бизнеса (после 760-го чипсета)
отсутсвие термо- и механической защиты кристалла процессора K7
медленное масштабирование шин DDR333 и DDR400
задержка на полгода (неудача? собственных инженеров) с DDR2 - покупка контроллера памяти DDR2/3 у Rambus (чуть ли не единственное дело, за которое ее можно похвалить. Впрочем, еще хороша память XDR)
Как следствие - задержка в разработке K8L.
Будущее
X86 процессоры уже давно не X86 внутри - поэтому можно полностью отказаться от совместимости или ввести второй режим работы с собственной системой команд.
Проблема с программной поддержкой может быть решена введением что-то вроде другого HAL в операционную систему Windows, Linux
Оптимизировать программы? - офисным хватит производительности даже неоптимизированного или оптимизируемого на лету кода, а для игр - есть портирование, причем бОльшую трудность составит видео, чем процессор.
И вообще - Google наверняка скоро возродит инициативу .Net, когда в офисном пакете будем работать через браузер, а само приложение будет работать на стороне провайдера (Google)- отличий от терминальной сессии немного, а на ADSL соединении все будет летать.
В полнее вероятно развитие не-x86 процессоров, где CPU в привычном понимании выполняет вспомогательные и сервисные функции, а основная вычислительная работа выполняется в CPGU (Nvidia). В 2008 году Intel, AMD, Nvidia собираются представить процессор, объединяющий общее и графическое ядро. Наиболее конкретно AMD с проектом Fusion.
Внутри, начиная с 486 - RISC-подобные архитекуры, где x86
у Intel - в 486, pentium, PPro...core2, Netburst
у AMD - 486,5x86,K5, K6(ex-NexGen), K7, K8..K8L
у Via - С7 (ex-Centaur и/или ex-Cyrix)
Transmeta - VLIW архитектура Crusoe, на лету преобразовывающая код (необязательно x86) в собственную систему команд
Операции с плавающей точкойK7K6-2K6-3Celeron-APentium IIPentium III
Avg. FPU latency
Среднее число тактов на выполнение операции422444
x87 FMUL throughput (per issue)
Тактов на выполнение конвейеризованной операции (на узел)122222
x87 FADD throughput (per issue)
Тактов на выполнение конвейеризованной операции (на узел)122111
# of issues per cpu clock cycle
Число блоков, работающих каждый такт311111
Optimal x87 math ops per cycle
Оптимальное число инструкций с плавающей точкой на такт21/21/2111
информация о поддержке различных расширенных наборов команд различными десктопными (предназначенными для настольных ПК) процессорами.
ПроцессорMMXEMMX3DNow!SSEE3DNow!SSE2SSE3
Intel Pentium II+——————
Intel Celeron до 533 MHz+——————
Intel Pentium III+——+———
Intel Celeron 533—1400 MHz+——+———
Intel Pentium 4+——+—++/—*
Intel Celeron от 1700 MHz+——+—+—
Intel Celeron D +——+—++
Intel Pentium 4 eXtreme Edition+——+—++/—*
Intel Pentium eXtreme Edition +——+—++
Intel Pentium D +——+—++
AMD K6++—————
AMD K6-2+++————
AMD K6-III+++————
AMD Athlon+++—+——
AMD Duron до 900 MHz+++—+——
AMD Athlon XP+++++——
AMD Duron от 1000 MHz+++++——
AMD Athlon 64 / Athlon FX+++++++/—*
AMD Sempron ++++++/—*+/—*
AMD Athlon 64 X2 +++++++
VIA C3+++/—*+/—*———
* в зависимости от модификации
Пара слов о некоторых пикантных особенностях DDR и QDR протоколов
Как уже было сказано выше, в режиме DDR по шине за один такт передаётся удвоенный объём информации, а в режиме QDR — учетверённый. Правда, в документах, ориентированных больше на прославление достижений производителей, чем на объективное освещение реалий, почему-то всегда забывают указать одно маленькое «но»: режимы удвоенной и учетверённой скорости включаются только при пакетной передаче данных. То есть, если мы запросили из памяти парочку мегабайтов с адреса X по адрес Y — то да, эти два мегабайта будут переданы с удвоенной/учетверённой скоростью. А вот сам запрос на данные посылается по шине с «одинарной» скоростью — всегда! Соответственно, если запросов у нас много, а размер пересылаемых данных не очень велик, то количество данных, которые «путешествуют» по шине с одинарной скоростью (а запрос — это тоже данные) будет почти равно количеству тех, которые передаются со скоростью удвоенной или учетверённой.
Общая организация современного микропроцессора (из «Обзор микроархитектур современных десктопных процессоров» IXBT О.Бессонов 27/06/2006)
Большинство современных микропроцессоров относятся к классу конвейерных суперскалярных процессоров с внеочередным исполнением операций. Рассмотрим кратко каждую из этих трёх ключевых характеристик.
•Конвейерная организация процессора означает, что многие сложные действия разбиваются на этапы с небольшим временем выполнения. Каждый этап выполняется в отдельном устройстве (блоке). Максимальная длина этапа определяет время такта процессора. Требование снижения времени такта влечёт за собой необходимость увеличения числа этапов при выполнении сложных действий. Можно выделить два наиболее важных проявления конвейерной организации процессора — прохождение инструкции (операции) от момента считывания из кэша инструкций до полного завершения (отставки), и прохождение операции через функциональное устройство. Первое проявление обычно называют «конвейером процессора» либо «конвейером непредсказанного перехода» (что более правильно). Длина этого конвейера влияет на производительность только в случае неправильного предсказания перехода в программе, когда происходит отмена работы, выполненной во всех этапах, начиная с этого перехода (сброс конвейера). Длина конвейера функционального устройства, в свою очередь, определяет время ожидания результатов операции другой операцией, использующей эти результаты в качестве операндов. Такое старт-стопное время выполнения операции в функциональном устройстве называют латентностью. Обращение к кэшам всех уровней и к оперативной памяти также производится конвейерным образом. Большинство простых операций целочисленной арифметики и логики имеют латентность, равную единице — то есть они выполняются в функциональных устройствах синхронно, без конвейеризации.
•Суперскалярная организация означает, что на каждом этапе обрабатываются сразу несколько потоков инструкций (операций) впараллель — от выборки из кэша инструкций до полного завершения (отставки). Суперскалярность наряду с тактовой частотой является важнейшим показателем пропускной способности процессора. Уровень суперскалярности («ширина обработки», гарантированно обеспеченная на всех этапах) в современных производительных процессорах варьируется от 3 (P-III, P-4, K8 ) до 4-5 (P8, PPC970).
•Внеочередное исполнение операций означает, что операции не обязаны выполняться в функциональных устройствах строго в том порядке, который определён в программном коде. Более поздние (по коду) операции могут исполняться перед более ранними, если не зависят от порождаемых ими результатов. Процессор должен лишь гарантировать, чтобы результаты «внеочередного» выполнения программы совпадали с результатами «правильного» последовательно выполнения. Механизм внеочередного исполнения позволяет в значительной степени сгладить эффект от ожидания считывания данных из кэшей верхних уровней и из оперативной памяти, что может занимать десятки и сотни тактов. Также он позволяет оптимизировать выполнение смежных операций, особенно при наличии сложных зависимостей между ними в условиях высокой латентности исполнения в устройствах и недостаточного количества регистров.
Важной особенностью современных процессоров является также предварительное преобразование машинных инструкций в промежуточные операции (микрооперации), более удобные для обработки и исполнения. Иногда такие операции называют RISC-подобными, исходя из того, что архитектуры RISC (дословно «Компьютеры с сокращённым набором инструкций») разрабатывались как раз для того, чтобы обеспечить простоту, удобство и эффективность обработки машинных инструкций. Преобразование инструкций является необходимым для архитектуры x86 с её крайне нерегулярной и запутанной системой команд. Однако и для достаточно регулярной RISC-архитектуры PPC970 такое преобразование также производится — оно необходимо для разбиения некоторых сложных инструкций на простые операции.
В рассматриваемых процессорах эти промежуточные микрооперации обозначаются по-разному: uOP (Intel P-III, P-4, P8 ), MOP (AMD K8 ), IOP (IBM PPC970). Для унификации в дальнейшем во всех случаях будем называть эти микрооперации «МОПами» (либо просто «операциями»).
Итак, современный процессор состоит из различных блоков, или подсистем, работающих параллельно и независимо. Блоки могут являться конвейеризованными устройствами, работающими на тактовой частоте процессора (бывают также исключения, когда блок работает на половинной либо на удвоенной частоте). В процессоре имеется также большое количество очередей или буферов, которые необходимы в первую очередь для сглаживания задержек, возникающих при работе устройств. Конкретная операция может находиться в какой-либо очереди продолжительное время, ожидая готовности данных либо ресурсов для своего дальнейшего продвижения. Однако во многих случаях возможно и «гладкое» продвижения операции без ожиданий в очередях. Когда говорят о длине конвейера процессора, подразумевают как раз такой режим прохождения операции. Таким образом, длина конвейера — это минимальное время прохождения операции (в тактах) при условии, что нет никаких внешних причин для задержек.
******* Выражение «Кэш трасс в процессоре Pentium 4…» в этой статье поражает. Как можно Trace перевести «трасса» – загадка. То ли автор не знает английского, то ли у него он свой;-) Еще бы приплел сюда какую-нибудь «трассировку». Trace – как дословно, так и по смыслу значит «след, остаток». То есть получаем «Отслеживающий кэш инструкций»
тут собраны полезные материалы, собранные с разных источников, и немного объединены комментариями
Постоянно скатываются с главного - количества и качества исполнительных устройств и подсистемы подачи данных в процессор - на всякие схемы работы вспомогательных блоков. Вместо копания в схеме реализации какого-то блока необходимо простое численное сравнение и оценка "хорошо-плохо".
Нечего разбирать количество и качество декодеров и портов запуска – они не являются определяющими и критичными в микроархитектуре, а выбираются под известный разработчикам темп исполнения на соответствующих устройствах.
поэтому рассмотрим "философские аспекты архитектур микропроцессоров";-)
Без истории и футуризма(предсказаний) тоже не обойдется.
лекции про микропроцессоры
Исходные принципы
1.все пляшет от техпроцесса и производства - это определяет сколько вы произведете квадратных мм кремния с какой себестоимостью.
2.Огромный и подавляющий рыночный (в том числе и в прямом смысле - подавляющий другие архитектуры) успех имеет CISC архитектура i386, описывающая систему команд 32-битного "х86"-совместимого процессора(CPU, включающего ALU/AGU/ControlUnit) + "х87"-совместимого математического сопроцессора(FPU). Создана она в бородатом 1985 году. Ключевые особенности адресации команд, сегментации памяти, сами х86 команды не менялись со времен i386 — это был последний революционный процессор.
3.остальное - технические реализации архитектуры (AKA микроархитектура - хотя термин IMHO бессмысленный) - определяют как эффективно будут использоваться кусочек кремния
1.Про техпроцесс, оборудование фабрик(чистые комнаты, литографические сканеры), количество и качество фабрик.
В производстве 99% микропроцессоров используют, грубо говоря, 2 технологии - от Intel и от IBM/AMD/CMC (для Transmeta делала Fujitsu и TSMC).
Можно сказать, что в действительно массовом производстве последние отстают на всего полшага - когда Intel делает 0,065 мкм процессоры, то AMD - 0,09++ мкм (+ дает SOI).
0.045 мкм: идеями, над которыми экспериментируют компании, ответственные за прогресс полупроводниковой отрасли, является замена оксида кремния в качестве изолятора на материал с более высоким коэффициентом диэлектрической проницаемости — (так называемый High-k диэлектрик) в сочетании с металлическим затвором и использование транзисторов с несколькими затворами.
AMD применит усовершенствованную технологию SOI (так называемая — полностью обедненная) и локально напряженный кремний (разряжение и сжатие будет создаваться непосредственно в областях, через которые протекает «нужный» ток).
Влияние различных методов совершенствования техпроцессов на потребительские свойства микросхем
Уменьшение проектных нормУвеличение количества слоев металлизацииМедные соединения вместо алюминиевыхLow-k диэлектрик для изоляции межтранзисторных соединенийКремний на изоляторе (SOI)Напряженный кремний (Strained Silicon)High-k диэлектрик в качестве материала изолятора в транзисторахМногозатворные транзисторы (Multi Gates)
Скорость переключения транзисторов (частотный потенциал)повышаетсяснижаются задержки распространения сигналов в пределах микросхемыповышается (40 %)повышается (20–40%)повышается (20–35 %)Повышается (15–20 % по версии Intel, 24 % — AMD, IBM)исследуется (возможно ухудшение отдельных характеристик, связанных с производительностью)повышается
Энергопотребление и тепловыделение снижается (степень снижения определяется успешностью решения сопутствующих технологических проблем) зависит от конкретной реализацииснижаетсяснижается за счет снижения тока утечки между слоями металлизацииснижается за счет снижения тока утечки транзистора в выключенном состояниине меняетсяснижаетсяснижается
Сопутствующие технологические проблемымножество, на данный момент наиболее критичным считается увеличение тока утечки через «истончающийся» слой диэлектрикаусложняется проектирование, отладка и производство, растет число этапов формирования кристаллана данный момент решены (создание электрического контакта меди и кремния, в результате обернулись преимуществами — отпала необходимость в планаризации слоев)нет, но продолжается поиск материалов с еще более низким коэффициентом диэлектрической проницаемостина данный момент решены (получение надежного контакта слоя кремния с изолирующей пленкой)реализована только «первая очередь» этой технологии, в дальнейшем обещан творческий подход к деформации кристаллической решеткинаходится на стадии разработкинаходится на стадии разработки
Себестоимость готовых чиповснижаетсяЗависит от конкретной реализации. Как правило, снижается благодаря существенному уменьшению площади кристалласнижаетсяповышаетсяповышается (первоначально около 10 %)практически не меняетсяповышаетсяповышается (требуется усовершенствование литографического оборудования для формирования объемных структур)
Кем используетсявсемиAthlon XP и 64 содержат 9 слоев, Pentium 4, ядро Prescott — 7 слоевIBM с 1998 года, AMD с 2000, Intel с 2002,в настоящее время — для всех техпроцессов с нормами от 0,13 мкм и меньше используются медные соединенияДиэлектрики с k<3.6 используются в настоящее время всеми компаниями, производящими как центральные, так и графические процессорыIBM с 1999 года (линейка PowerPC), AMD с 2003 года (Opteron, Athlon 64)с 2004 года Intel (90 нм Pentium 4, Pentium D), AMD (130 нм Athlon 64 FX55, 90 нм Athlon 64 Venice и San Diego, Athlon 64 X2)2007–2008 год (?) Intel (45 нм)2007–2008 год (?) AMD, IBM (45 нм)
Процессоры рождаются в виде кристаллов на круглой кремниевой пластине. При динейном увеличении размеров пощадь соответсвенно растет в квадрате - поэтому и выгодно применять бОльшие пластины. Сейчас стандарт - 300 мм. Intel готовится и агитирует за 450 мм.
При одинаковой сложности кристалла процессора более мелкий техпроцесс (без учета добавления дорогих присадок) и пластины бОльшей площади дают низкую себестоимость.
Количество фабрик у Интел 20-30, у AMD 1,5-2! Фабрики примерно одинаковые по производительности. При этом AMD занимает четверть рынка процессоров! Конечно, часть фабрик Intel делают flash, микросхемы и чипсеты, но для этого используют не самое передовое оборудование.
Intel всегда лидировал по внедрению новых техпроцессов
AMD совершело скачки, когда строило с новую фабрику. Собственно можно считать, что AMD всегда будет делать менее «жирные» (по количеству транзисторов) (а значит и дешевые) и более эффективные процессоры.
3. Реализации Intel, AMD, Via, Transmeta
Разделим процессор на 2 независимые части (прямо как у самого 8086), с которыми можно разобраться независимо: доставка данных и обработка.
Подсистема доставки данных прошла долгую количественную эволюцию, но принципиально все процессоры имеют L1, L2 кеши, интерфейс с шиной, на которой сидит контроллер памяти. Эволюция шла по принципу наращивания объемов кешей и скоростей шин. Наибольший прирост производительности дает приращение L1 кеша.
Особенности конкретных реализаций и способов повышения производительность
В системе с процессором 386, грубо говоря, все компоненты работали на единой предельной частоте, ограничиваемой существовавшим техпроцессом - 25,33, позже 40 МГЦ - исполнительные блоки процессора, процессорная шина, чипы памяти, новая шина ввода/вывода - MCA.
486 процессор внес незначительное прибавление в систему команд, но первые версии - 486DX с частотами 25,33,40 МГЦ - ознаменовали главное новшество - интеграцию на 1 кристалле собственно CPU (включающего ALU/AGU/ControlUnit), FPU и кэш 8Кб. Возникла КОНВЕЙЕРИЗАЦИЯ.
Позже появились процессоры с удвоением и утроением частоты. Теперь ядро работало на более высоких высотах относительно памяти, локальных шин VESA и PCI.
Вовсю конвейеризация пригодилась в 486 с множителями 3 и 4 (AMD 5x86-133-P75 - работал как 133=33*4 или даже 160=40*4).
Фактически все современные x86-процессоры "в глубине души" являются полноценными RISC’ами - исходный x86-код они в любом случае преобразуют на лету во внутреннее RISC-подобное представление. Различия между RISC- и CISC-архитектурами почти стираются - просто у RISC’ов декодер, превращающий исходный машинный код в содержимое очередей планировщиков, устроен гораздо проще, чем "расковыривающий" хитро упакованные x86-инструкции CISC-подобный декодер AMD Athlon и Intel Pentium.
Pentium ознаменовал переход к суперскалярности - появилось 2 конвейера, хотя один был урезанным.
FPU оставался несуперскалярным и неконвейеризованным.
Рос кэш 1 уровня - с 16 до 32 Кб (у Pentium MMX), изменялась внутренняя структура - удлинялся конвейер (для достижения частот до 266 МГц - Mobile Pentium MMX)
Процессорная шина данных стала 64-битной, то есть Pentium был быстрее многих 486 процессоров в том числе и за счет ширины шины.
Р6 впервые стала преобразовывать сложные CISC х86 команды во внутренние, более простые RISC-подобные микрокоманды.
реализация P6 включает в себя в практичеси неизменном виде 2 конвейера ALU + впервые на x86 конвейеризованный FPU
первый суперскаляр с OoO
PentiumPro (кэш 256/512 Кб в корпусе), PII (PPro + модуль MMX, кэш на процессорной плате), PIII( PII + модуль SSE), PIII-2 (PIII + кэш на кристалле, а не на процессорной плате), PIII-3 (PIII-2 + модуль SSE2, увеличенный кэш до 512 Кб)
Частота FSB росла от 66 до 133 МГц
AMD создало само создало интересный процессор K5 - RISC-подобное ядро с 4 конвейерами и обычным FPU (от 486),
но трудности с техпроцессом и наращиванием частоты сделали его неконкурентным. Рещив не тратить человеческие ресурсы на развитие K5, они купили готовый процессор - x86 реализацию компании NexGen (она разорилась, попытавшись выпускать x86 процессоры с собственным разъемом). Получился AMD K6. К сожалению FPU был только неконвейризованным. А для соревнования с появившимся PII в новых приложениях - прежде всего играх, ставших killer-app для FPU - этого уже было мало. Слегка спасал кэш 1 уровня в 64 Кб. Перейдя на 0,25 мкм техпроцесс, удалось нарастить частоту. Платформа Super7 позволила ускорить работу с памятью - до 100 МГц . Блок 3DNow! - аналог SSE появился своевременно, но быстрого успеха не принес. Фактором, определяющим дешевизну К6-2 по сравнению с PII, является более низкая стоимость производства из-за меньшей площади кристалла (70 мм2 против 130 мм2 у Celeron).
Cyrix продолжал вылизывать классическую CISC x86 архитектуру (увеличение количества внутренних регистров, переименование регистров, оптимизация архитектуры). Они создали ядро M1 aka 6x86, которое применялось в поздних 486 (получалось быстрое продвинутое ядро на медленной 32-битной шине), и в Socket7 процессорах, где выступало чуть быстрее равночастнотных Pentium.
Cyrix/Centaur С3/C5 – грубо говоря, 6x86MX(M2) на шине от P3 (AGTL) и новом техпроцессе
Cyrix/Centaur С7 – грубо говоря, 6x86MX(M2) на шине от P4 (Netburst QDR) и новом техпроцессе
Развивая P6 и видя слабость K6, у Intel началось головокружение от успехов. Попытки задавить всех велись в 2 направлениях. Неправильно оценив перспективы памяти типа RDRAM по сравнению с DDR SDRAM, Intel поставил на нее и отказался от SDRAM. Его спасли только Via, развивавшая чипсеты Apollo в настольном сегменте, и ServerWorks, делавшая чипсеты для серверов. Intel сопротивлялся этой помощи не сильно;-), пока не создал серию 810/815.
В сегменте серверов делался Itanium (AFAIK Intel называл эту архитектуру P7), который должен был "убить" все RISC-архитектуры, повторив ситуацию в настольном сегменте, где Intel оставил AMD/Cyrix/Centaur/Rise/Winchip крохи рынка и разорил их. Itanium сам по себе был неплох: 64-битный, построенный по принципам VLIW, созданный для работы в многопроцессорных конфигурациях, с мощными блоками FPU, одновременное вычисление нескольких веток программного кода. В конце концов Itanium должен был принести IA64 в настольный сегмент. Itanium убил пару-тройку неплохих RISC-архитектур (тех производителей, кто вошел в альянс по его разработке), испугал остальных производителей. И кто знает, если бы в этом массовом убийстве не погибла Alpha, то ее талантливые разработчики не перешли бы в AMD и не создали бы K7/K8.
Но убило Itanium не медленное масштабирование, сдерживаемое экспансией x86-процессоров в верхний сегмент. Его убило нежелание заказчиков выкидывать все работающее серверное оборудование и программное обеспечение других архитектур, стоящее десятки и сотни миллионов долларов и покупать все новое, связанное с Itanium - под IA64 VLIW-архитектуру необходимо было все перекомпилировать заново.
Тем временем инженеры Alpha принесли свои разработки в AMD: процессорные шины EV6, EV7 -LDT(HyperTransport), интегрированные контроллеры памяти, многопроцессорность, мощные блоки FPU, улучшенная суперскалярность (до 3 конвейеров), опыт работы с 64-битными процессорами.
Можно сказать, что RISC-K7 был бы процессором-спасителем для Alpha (усилил бы позиции в нижнем ценовом сегменте), но стал x86-спасителем для AMD.
муки инфраструктуры
широкому распространению Slot A Athlon’ов сильно помешала из рук вон плохая поддержка со стороны производителей чипсетов и материнских плат.
К7 содержит три конвейерных блока IEU (Integer Execution Unit) исполнения целочисленных команд. Таким образом, Athlon в состоянии выполнить до трех таких инструкций за такт, тогда как Pentium III не больше двух.
К7 содержит 3 узла вычислений с плавающей точкой (fpu), любой из которых способен принимать на вход инструкции каждый такт работы процессора. При этом один узел предназначен исключительно для выполнения команды FSTORE! Назначение этого узла - обеспечивать обмен между регистрами и памятью в то время, как процессор выполняет другие инструкции. Такой подход, хотя и не повышает пиковую производительность, позволяет достичь более высокой средней производительности, что во многих случаях важнее. Остальные два fpu состоят из блока сложения (adder) и блока умножения (multiplier). Оба блока используют конвейеры (fully pipelined). Архитектура каждого fpu такова, что он может принимать на вход каждый такт одну инструкцию сложения и одну умножения, что дает пиковую производительность 1000MFLOPS при 500МГц. Ближайшим аналогом с точки зрения архитектуры является Pentium II, у которого также присутствуют adder и multiplier. Однако существуют два основных отличия. Во-первых, у PII только adder является полностью конвейеризованным (fully pipelined), multiplier же может принимать инструкцию на вход только каждый второй такт. Во-вторых, каждый узел fpu PII может принимать только одну инструкцию за такт, таким образом, пиковая производительность составляет 500MFLOPS при 500МГц.
Поддержка point-to-point SMP - К7 более эффективен в системах с большим числом процессоров, чем решения на базе Slot1.
Это был первый полноценный суперскалярный конвейерный микропроцессор с внеочередным исполнением операций, разработанный в компании. В микроархитектуре процессора K7 нашли отраженме все те основные принципы, которые были до этого реализованы в процессоре Intel Pentium Pro (P6). Однако конкретные подходы разработчиков AMD отличались большей простотой и изобретательностью, направленной на снижение сложности процессора и увеличение его производительности. Разработчики частично пожертвовали гибкостью и динамическими элементами архитектуры, но при этом уделили внимание скорости выполнения многих инструкций (в особенности операций арифметики с плавающей точкой), значительно увеличили размер кэшей 1-го уровня (ограничившись при этом низким уровнем ассоциативности) и ввели важный механизм объединения адресной и арифметической микрооперации в один общий МОП (Load-Op, Op-Store, Load-Op-Store).
Netburst
Базовым параметром архитектуры процессора P-4 является повышенная тактовая частота (в 1.4-1.5 раза по сравнению с классическими процессорами, исполненными по той же электронной технологии). Это влечёт за собой увеличение числа этапов конвейеров, а также, в ряде случаев, качественную переделку тех или иных подсистем, которые не могли бы быть реализованы для такой частоты традиционным образом. При сравнении длин конвейеров и времён выполнения различных действий нужно учитывать, что время такта в процессоре P-4 не превышает 0.7-0.75 от времени такта прочих процессоров, организованных классическим способом.
Чередование плохих-хороших поколений в зависимости от техпроцесса - willamete(0.18 ), Northwood(0.13), Prescott(0.09), Cedarmill(0.065).
Не сумев оторваться от конкурентов с помощью Itanium, Intel создал качественно новую реализацию x86 - микроархитектуру Netburst.
принципиальных элементов архитектуры NetBurst (Pentium 4), как Trace-cache, Replay, форсированная тактовая частота, Hyper-Threading
впервые массовые процессоры в показателях своей производительности весьма заметно зависели от того, проводилась ли оптимизация программного обеспечения под конкретную архитектуру
Основная задача микроархитектуры Pentium 4 состоит в повышении производительности путем увеличения частоты. Для повышения частоты важно как можно быстрее исполнять основные целочисленные операции. Но блоки целочисленных операций существенно отличаются по сложности, поскольку отличаются по сложности исполняемые ими операции: часть из них более сложна, часть менее.
Впрочем, инженеры Intel нашли своеобразный, но эффективный способ увеличить темп обработки операций с целыми числами. Все микрооперации, которые идут на ALU, могут быть исполнены двумя видами устройств: одним устройством slow ALU, и двумя устройствами fast ALU. Первое устройство представляет собой ALU, которое может обработать сравнительно большое число целочисленных операций; в частности, на нем исполняются наиболее сложные целочисленные операции.
Два устройства fast ALU интереснее и заметно более специализированны. Они предназначены для обработки простых целочисленных операций – например, сложение двух целых чисел. Но зато это самое сложение они делают гораздо быстрее, чем slow ALU, поскольку работают на удвоенной частоте процессора. То есть, процессор частотой 3GHz содержит некоторое количество устройств, которые работают на частоте 6GHz. Эти два устройства не идентичны друг другу: fast ALU 0 более универсальное, нежели fast ALU 1, и умеет исполнять большее количество команд. Fast ALU обрабатывает числа по "половинкам". Зато делает это не каждый такт, а вдвое быстрее, по полутактам (они именуются "тиками", tick). На fast ALU обрабатываются далеко не все операции, а только самые простые, вроде сложения.
блока целочисленного умножения в Northwood-е нет !
без оптимизации программного обеспечения Pentium 4 не сможет продемонстрировать хорошую производительность
ядре Prescott блоки fast ALU имеют реализацию, отличную от реализации остальных блоков процессора, поскольку ради повышения рабочих частот здесь используется транзисторная логика, основанная на дифференциальных парах! Заметим, что "дифференциальная логика" может работать на заметно более высоких частотах, именно поэтому ее и применили в этих блоках. Но такая логика выделяет заметно больше тепла в пересчете на один транзистор, содержит ощутимо больше транзисторов и, к тому же, выделяет тепло даже на "холостых" циклах.
операции shift в Prescott-е относятся к fast ALU. появился блок целочисленного умножения
Это приводит к достаточно забавным следствиям: в частности, если раньше для повышения производительности было выгоднее код, содержащий shift, заменять на код, содержащий ADD, то в данном случае ситуация изменилась с точностью до наоборот.
Prescott в части времен исполнения инструкций стал гораздо больше похож на остальные х86 процессоры, чем Northwood: времена исполнения операций стали гораздо ближе друг к другу, практически нет таких разбросов, как были в Northwood-е.
Поэтому программное обеспечение, перекомпилированное для использования с ядром Northwood, для ядра Prescott имеет смысл перекомпилировать заново.
устройство fast ALU для обработки 64-х битных данных вполне может быть организовано аналогично устройству fast ALU в Northwood-е, то есть два "подустройства" шириной 32 бит, сдвинутых друг относительно друга
в ядре Northwood конвейер (та часть, которая расположена после Trace cache) занимает 20 стадий, а у ядра Prescott и того больше, 31 стадию.
модуль FPU один
Hyper Threading (НТ)
1. Ресурсы исполнительных блоков NetBurst на первый взгляд представляются избыточными, и их нехватка не должна сильно влиять на эффективность Hyper Threading. Особенно показательно это для целочисленных fast ALU блоков, которые могут выполнять микроопераций больше (до четырех за такт), чем им успевает "скармливать" Trace cache (до трех за такт).
2. Максимальный выигрыш от Hyper Threading по сравнению с последовательным исполнением потоков можно получить на неоптимизированных приложениях. Оптимизация, повышающая IPC одного потока, приводит к уменьшению пользы Hyper Threading. Более того, если разделяемые ресурсы процессора, за которые конкурируют нити, не ограничиваются только исполнительными устройствами (кэш, очереди, буфера и пр.), то, начиная с определенного уровня оптимизации, Hyper Threading будет только вредить: два потока последовательно будут выполняться быстрее, чем в режиме Hyper Threading.
Технология Hyper Threading сравнительно легко реализовывается в микроархитектуре NetBurst, благодаря таким специфическим чертам последней, как Trace cache. В самом деле, в традиционной архитектуре (такой, как Р6) декодер сильно связан с исполнительными устройствами. Чтобы исполнять два потока инструкций одновременно, их необходимо одновременно превращать в микрооперации, что труднодостижимо. Но хуже всего то, что их придется одновременно выбирать для обоих потоков, что, в связи с переменной длиной х86 инструкций, весьма небанальная задача.
Совсем иное дело в случае, если у нас есть Trace cache: у нас уже есть некоторое количество декодированных команд, которые принадлежат различным нитям программы (или различным программам). Исполнительное ядро оказывается сравнительно слабо связанным с декодером, и его работа напрямую от декодера не зависит (лишь бы в Trace cache содержалось достаточное количество уже декодированных инструкций).
разделение ресурсов влечет за собой некоторые подводные камни. Как мы видели выше, конкурентная борьба двух логических процессоров за разделяемые ресурсы приводит к тому, что доступный каждому потоку набор ресурсов меньше, чем в случае работы только одного потока. В частности, кэш данных первого уровня у ядра Northwood и без того не блещет размером, всего 8КВ. При применении технологии Hyper Threading эффективный размер кэша для каждого из потоков становится примерно вдвое меньше, 4КВ. Кстати, такая формулировка заставляет задуматься вот над чем: весьма вероятно, что существующее увеличение эффективности технологии Hyper Threading в ядре Prescott связано как с усовершенствованием этой технологии, так и с тем банальным фактом, что кэш первого уровня вдвое увеличился в размере. Что, в свою очередь, несколько уменьшило потери производительности от его дефицита.
Прирост от применения технологии Hyper Threading находится в диапазоне от 0% до 30%, в отдельных случаях возможно некоторое падение производительности. Эффективность технологии Hyper Threading находится в сильной зависимости от качества оптимизации программного обеспечения под эту технологию. Технология Hyper Threading не способна заменить настоящую двухпроцессорную систему, но и затраты на Hyper Threading невелики.
Реализованное в процессоре Pentium 4 устройство системы реплея является таким попыткой заново выполнить микрооперации, не слишком усложняя логику их обработки.
По сути, система реплея представляет кусок фиктивного конвейера, расположенный параллельно основному.
Весьма поучительно, что изначально вроде бы совершенно логичный способ организации работы длинного конвейера приводит к катастрофическим для производительности последствиям. Подробные причины этого мы откладываем до следующей главы, пока же важно осознать вот что: реплей является той ценой, которую приходится заплатить за длинный, сверхглубокий конвейер. Идеологическое решение о важности прежде всего высокой частоты работы заставило архитекторов сделать длинный конвейер. А длинный конвейер, в свою очередь, потребовал специальной системы "отката" в ситуациях, когда данные не доставлены к микрооперациям вовремя.
Особо отметим: штрафы, вызванные реплеем, не зависят от качества кода и количества "ветвлений" в нем. Реплей есть оборотная сторона медали по имени "Hyper Pipeline" – то, чем приходится расплачиваться за оптимистическую стратегию работы планировщика. А, в свою очередь, такая стратегия – единственно возможный вариант работы конвейера в ситуации, когда планировщик удален от исполнительных устройств, а расстояние (в стадиях) между ними превышает время исполнения большинства простых команд. Поскольку данные к исполняемым микрооперациям не могут быть доставлены мгновенно, происходит "холостой цикл" работы конвейера. Причем плохо не столько то, что отдельная операция переисполняется – тут деваться некуда, мы вынуждены это сделать – сколько то, что вслед за первой операцией переисполняется вся цепочка зависимых операций, сколько бы их ни было. То есть, первоначальную проблему с перезапуском микрооперации "наследует" остальная цепочка.
Если давать оценку реплею в целом, то "реплей – это плохо, но неизбежно".
несмотря на весьма заметное теоретическое преимущество в виде: более высокой частоты, более быстрой шины, большего и более быстрого кэша, большего значения IPC (instruction per cycle), процессор Pentium 4 в некоторых ситуациях уступает в результирующей производительности своему предшественнику (!), процессору Pentium III. Отметим, что реплей – зачастую гораздо более строгое объяснение, нежели полу-мифические "остановки и сброс конвейера на коде с большим количеством переходов"; объяснением, которое, будучи весьма привычным, часто является неверным.
У каждого планировщика есть своя система реплея. То есть, в ядре Northwood всего есть десять (!) фиктивных конвейеров, спрятанных от пользователя.
Масштабы неизвестной нам части процессора Pentium 4 откровенно ошеломляют. Поневоле начинаешь задаваться вопросом: неужели ЭТО можно назвать красивым архитектурным решением?
В ядре Prescott ситуация несколько изменилась: петель реплея у каждого планировщика только одна, но длина каждой больше, 18 тактов. Итого: пять фиктивных конвейеров. Вспоминая, что по меньшей мере часть их работает на удвоенной частоте (вместе с Fast ALU конвейерами), а используется при этом дифференциальная (LVS) логика, нас перестает удивлять нагрев ядра Prescott: он вполне понятен. Реплей заставляет конвейер работать "в холостом цикле" минимум дважды на каждую микрооперацию, попавшую на него. В результате, поскольку нужно совершать больше работы на одно и то же количество кода, выделяется больше тепла.
Вызовы функций есть во всех без исключения программах. Соответственно, во всех без исключения программах есть крайне благоприятные условия для возникновения реплея.
Наличие реплея существенным образом может снижать эффективность технологии Hyper Threading. В частности, при определенных условиях реплей способен "потерять" до 45% производительности (!) в ядре Northwood и до 20% в ядре Prescott. Более того, наблюдаемое повышение эффективности технологии Hyper Threading в ядре Prescott следует связывать скорее с усовершенствованием реплея, чем с улучшением собственно самой технологии Hyper Threading!
к сожалению, реплей ухудшает производительность Pentium 4. Оправдывает существование этого явления только то, что без него процессор Pentium 4 корректно работать попросту не смог бы.
Подводя итог можно сказать, что реплей не является самостоятельной чертой архитектуры NetBurst, призванной увеличить производительность процессоров. Скорее, реплей – это "обратная сторона медали" длинного конвейера, вспомогательный механизм, необходимый для исправления ошибок спекуляции. Снижение производительности за счёт реплея является расплатой за высокую тактовую частоту.
Правильный размер кеша и правильная частота – около 2-3 ГГц
Первая архитектура созданная на запланированно большую частоту (на меньшей работает с большим пенальти)
исполнительные устройства декодер
шина 400 (на самом деле 100 но с подключ 300) / 533 с уменьш латентностью / скачок 800
+ учет микроархитектуры (замена ALU сдвигом и наоборот, непроработанность HyperThreading 1 поколения )
Блекс и нищета медиакодирования
Расцвет Northwood Cedarmill
Неудачи Willamete/Prescott диктат производственников и излишних мощностей, но подкрепленные нормальным маркетинговым бюджетом
Ессно intel полагал что производя 90% процессоров может направлять индустрию софта, а оказалось – нет. Хотя если рассматривать весь парк техники вместе с архитектурой P6, то оптимизировать под
Плохая работа Netburst в мобильном сегменте принудила возродить PIII. Старое доброе ядро P6 реализации PIII-3, посаженное на широкую шину QDR400 от Netburst и снабженное кэшем 2-го уровня в 1 Мб, показало свой скрытый потенциал. В то же время блок FPU оставался слаб, а поддержка 64-бит потребовала бы полной переработки процессора. Это был хит. В специальных мобильно-настольных материнских платах с 2-х-канальной памятью и QDR1066 шиной в разгоне на воздухе до 2,5-3 ГГц, Pentium-M был сопоставим с раночастотным Athlon64 (опережая на целочисленных, отставая по FPU - в целом - паритет) Тут бы AMD не зевать, но инженерных ресурсов, видимо, опять не хватало и враг с таким потенциалом остался без должного внимания.
Pentium Pro Первый суперскалярный процессор архитектуры x86 с внеочередным исполнением операций (Out-of-Order execution). Имеет незначительные архитектурные расширения в сравнении с процессором предыдущего поколения Pentium: добавлены инструкции условной пересылки и новые инструкции сравнения. Исполнен в виде сборки с раздельными кристаллами процессора и L2-кэша. Использовался в основном для серверных применений, выпускался с кэшами различного размера вплоть до 1 МБ.
Pentium II Добавлен набор инструкций MMX. Увеличены кэши первого уровня, улучшено исполнение 16-разрядных кодов. Исполнен в виде дочерней платы с отдельным кристаллом L2-кэша, работающего на половинной частоте. Выпускался также в следующих вариантах: OverDrive, совместимый с разъёмом процессора Pentium Pro; Celeron без L2-кэша; Celeron и Dixon с интегрированным L2-кэшем уменьшенного размера; Xeon с полночастотным внешним кэшем увеличенного размера.
Pentium III Добавлен набор инструкций SSE и инструкции предвыборки из памяти. Первоначально исполнен в виде дочерней платы с отдельным кэшем, в последующих вариантах имеет встроенный полночастотный L2-кэш с 256-разрядной шиной. Выпускался также в следующих вариантах: Celeron с L2-кэшем уменьшенного размера; Xeon с полночастотным внешним кэшем увеличенного размера.
Pentium M Добавлен набор инструкций SSE2. Реализован механизм слияния микроопераций (micro-ops fusion), увеличены кэши первого уровня, ускорена работа с аппаратным стеком, существенно улучшен механизм предсказания переходов. В связи с ориентацией на мобильные применения внедрены радикальные технологии энергосбережения. Введена новая процессорная шина, заимствованная у процессора Pentium 4. Произведён ряд микроархитектурных усовершенствований, операции плавающего умножения и сложения разнесены на два отдельных порта запуска. Во второй модели процессора P-M (Dothan) устранены задержки из-за «частичной записи в регистр» («Partial register stall»), удвоен темп выполнения инструкции сложения MMX.
Pentium M2 (Core Duo) Добавлен набор инструкций SSE3. Существенно улучшен декодер с поддержкой механизма слияния микроопераций для инструкций SSE и обработкой упакованных инструкций SSE во всех каналах декодера. Ускорено выполнение некоторых инструкций, усовершенствован механизм предвыборки из памяти. Содержит на кристалле два процессорных ядра и общий L2-кэш. Поддерживает технологию виртуализации VT и усовершенствованные технологии энергосбережения.
сводная таблица основных процессоров семейства P6.
процессор кодовое обозначение нормы (мкм) кэши L1 I/D кэш L2 исполнение частота, ГГц архитектурные расширения микроархитектурные усовершенствования
P Pro P6 0.5 8/8 256 сборка 0.20 +условн.опер новая микроархитектура
P-II Deschutes 0.25 16/16 512 внешний L2 0.45 +MMX внешний L2, улучшенная 16бит
P-III Tualatin 0.13 16/16 512 1.40 +SSE быстрый L2, предвыборка
P-M Dothan 0.09 32/32 2048 2.26 +SSE2 µop fusion, улучшен предсказ. переходов
P-M2 Yonah 0.065 32/32 2048 2 ядра 2.33 +SSE3 SSE µop fusion, общий кэш L2
усовершенствования и исправления недостатков, проведённые поэтапно в процессорах семейства P6+ (P-M и P-M2):
•увеличены размеры и ассоциативность кэшей;
•увеличены размеры очередей внеочередного исполнения и различных внутренних таблиц;
•радикально улучшена подсистема предсказания переходов;
•введён механизм слияния микроопераций (micro-op fusion);
•ускорена работа с аппаратным стеком;
•значительно усовершенствован декодер машинных инструкций;
•добавлены режимы SSE2 и SSE3, проведён ряд усовершенствований в функциональных устройствах и портах запуска операций;
•заимствована внешняя шина FSB у процессора P-4;
•внедрены усовершенствованные технологии энергосбережения;
•реализована двухъядерность с общим L2-кэшем (в процессоре P-M2).
K8
При его создании основной упор был сделан на две ключевые технологии: 64-битный режим целочисленной и адресной арифметики AMD64 (x86-64), и интегрированный контроллер оперативной памяти, встроенный в процессорный чип. Создание расширенной архитектуры x86-64 позволило снять ограничения по адресации памяти, сдерживающие развитие десктопных процессоров, а реализация встроенного контроллера существенно снизила латентность доступа к оперативной памяти, тем самым дав значительный прирост в производительности на многих задачах. В дальнейшем архитектура x86-64 стала стандартной и была реализована в процессорах Intel P-4E и P8. Внедрение встроенного контроллера памяти в процессорах компании Intel также предполагается в ближайшие годы.
Помимо этих ключевых технологий, в процессоре K8 имеется ряд менее значимых отличий от K7:
•усовершенствован декодер машинных инструкций, большинство «сложных» инструкций, порождающих 2 МОПа, переведены в разряд «простых»;
•добавлены режимы SSE2 и (чуть позднее) SSE3;
•несколько улучшена подсистема предсказания переходов;
•увеличена длина очередей планировщика, проведены некоторые модификации в подсистеме внеочередного исполнения и в функциональных устройствах;
•расширена шина L2-кэша и уменьшено время доступа;
•обеспечено комплексирование в многопроцессорные конфигурации через интерфейс HyperTransport без использования внешней логики (чипсета);
•реализована двухъядерность с раздельными L2-кэшами и общим контроллером памяти (в процессоре K8 X2).
Кроме перечисленного, можно подчеркнуть ещё несколько отличительных черт процессоров K7/K8, способствующих повышению их производительности:
•частичное предекодирование инструкций перед помещением в I-кэш;
•возможность выполнения двух загрузок из L1-кэша за такт;
•малая длина конвейера непредсказанного перехода благодаря разделению подсистем целочисленно-адресной арифметики (ALU/AGU) и арифметики с плавающей точкой (FPU);
•наличие трёх симметричных устройств для выполнения целочисленных и адресных операций ALU/AGU.
Однако в архитектуре процессора K8 имеется и ряд недостатков, часть из которых обусловлена базовыми ограничениями микроархитектуры:
•статическое разбиение потока МОПов на группы по 3 элемента с привязкой очередей и функциональных устройств ALU/AGU к позициям этих элементов;
•слабая система предсказания переходов, использующая устаревшие алгоритмы;
•недостаточно совершенная аппаратная предвыборка из памяти;
•отсутствие механизмов переупорядочения обращений к памяти;
•взаимно эксклюзивная организация кэшей, ограничивающая скорость выборки из L2-кэша и увеличивающая время доступа;
•недостаточная ассоциативность L1-кэшей, снижающая их эффективность.
В целом процессор K8 составил хорошую конкуренцию процессорам P-4 и P-4E. Благодаря меньшей длине конвейеров и более эффективной реализации многих инструкций он оказался не столь требователен к оптимизации кодов и в ряде применений имеет более высокую производительность. Особенно это относится к игровым программам и некоторым десктопным приложениям. В настоящее время производится перевод процессоров K8 на использование оперативной памяти DDR2, обладающей повышенной пропускной способностью. Этот переход позволит несколько повысить производительность, особенно для двухъядерных вариантов (K8 X2). Дополнительным достоинством нынешних вариантов процессоров K8 является относительно невысокое энергопотребление и тепловыделение (в сравнении с процессорами P-4).
принципиальное исчезновение data/bus/memory bottleneck
Изначально двухъядерный - коммутатор
Внедрены мобильные технологии – Cool&Quiet
Многопроцессорная мощь – тоже принципиальное исчезновение data/bus/memory bottleneck - HyperTransport
Раннее внедрение x86-64 – сбил темп разработок Intel.
*****понятие 64-битный процессор относится прежде всего к целочисленной и адресной арифметике. Операнды команд SSE и SSE2/3 –128-битные. Устройства FPU изначально являются 80-битными. 128-битные SSE-команды разбиваются на два 64-битных МОПа и запускаются на исполнение последовательно в разных тактах.
На одной кремниевой подложке с ядром процессора расположен контроллер памяти. Данные из контроллера памяти через коммутатор направляются непосредственно в кэш первого уровня L1, минуя L2, что уменьшает задержку получения данных из оперативной памяти. В кэш второго уровня L2 попадают только данные, вытесненные из L1.
Hammer исполняет на 8% меньше микроопераций в наборе SPECint 2000.
Hammer исполняет на 28% (!!!) меньше микроопераций в SPECfp 2000.
В данном случае не производительность процессора стала хуже, а просто изменение методики разбиения команд х86 на µOps привело к уменьшению общего количества µOPs, в которые превращается программа.
AMD изменяла в K8 прежде всего именно декодер — можно бороться за то, чтобы исполнять как можно больше работы за такт. А можно подумать и сделать так, чтобы было меньше работы вообще.
Задержка умножения, тактов8 bit, 16 bit32 bit64 bit
Athlon XP3 такта4 тактаN/A
«Hammer»3 такта3 такта5 тактов
набор команд х86 считается «устаревшим», слышали многие. Но многие ли представляют себе, что является одним из основных «костылей», которые мешают наращивать производительность далее? Одним из главных «костылей» является тот факт, что архитектура х86 может иметь лишь 8 регистров общего назначения. При работе многих алгоритмов этого частенько не хватает — приходится тратить время и вычислительные ресурсы на то, чтобы «выкрутиться». Подчеркиваем, речь не идет о физических регистрах — со времен Р6 используется переименование регистров. Речь идет о том, что многие алгоритмы вынужденно усложнены в силу нехватки архитектурных 8 регистров общего назначения в х86. AMD предлагает возможность снизить остроту этой проблему, предоставляя дополнительных 8 регистров. Но поскольку совместимость с предыдущим программным обеспечением — обязательное требование для процессора общего назначения, то подобный подарок использовать в стандартном х86 не получится. Необходимо перейти на х86-64. Например, в Word больше 80% функций довольствуются 8 регистрами — а остальные функции вынуждены использовать «переименование регистров» и запоминать промежуточные данные. Соответственно, если регистров станет 16, то это устроит уже 96% встроенных функций Word. При этом понятно, что скорость исполнения вырастет, ибо не нужно прибегать к дорогостоящим (в смысле производительности) алгоритмическим методам, сохраняющим регистры.
Двухъядерные K8
K8L изначально проектируется как четырёхъядерный чип. Все четыре ядра будут находиться на одной кремниевой пластине, подключенные к общему кэшу третьего уровня, а также общим коммутатору и контроллеру памяти.
В процессоре K8L устройства FADD и FMUL расширятся до 128 бит
ширина SSE-устройств в будущем процессоре K8L будет расширена до 128 бит
В отличие от блока исполнения целочисленных команд с симметричными вычислительными каналами блок плавающей арифметики содержит три различных устройства FADD, FMUL и FMISC (он же FSTORE) для вещественного сложения, умножения и вспомогательных операций
Кроме расширения вещественных устройств в K8L будут расширены расположенные внутри блоков FADD и FMUL целочисленные устройства, занимающиеся выполнением команд SSE2, что приведёт к ускорению целочисленных приложений, использующих этот набор команд. Также K8L научится исполнять несколько дополнительных SSE-команд
В процессоре K8L появится общий для 4-х (или менее) ядер на подложке кэш третьего уровня размером 2 или более мегабайт. Кэш третьего уровня, судя по всему, так же, как и кэш второго уровня, будет эксклюзивным. Вместе с улучшенным коммутатором (enhanced crossbar) кэш третьего уровня поможет снять проблему невысокой скорости обмена изменёнными данными между кэшами соседних ядер, который у K8 производится с использованием шины памяти. Эта проблема в значительной мере снята в процессорах с ядром Conroe благодаря общему для двух ядер кэшу второго уровня. Таким образом, четырёхъядерный процессор K8L, скорее всего, будет по своим характеристикам обмена данных между ядрами ближе к ядру Conroe.
в подсистему памяти K8L будут внесены некоторые другие модернизации, такие как поддержка в перспективе памяти DDR3 и FBDIMM и поддержка HyperTransport 3.
K8L повторяет идеологию своего предшественника, однако имеет множество усовершенствований и отличительных признаков. Наиболее важными из них являются:
•реализация полночастотного 128-битного режима выполнения упакованных операций SSE (в двух каналах исполнения);
•увеличение ширины и пропускной способности доступа к L1-кэшу — теперь в каждом такте могут выполняться две 128-битные загрузки за такт либо одна загрузка и одна выгрузка (в процессоре P8 — только одна такая загрузка и одна выгрузка);
•увеличение длины выборки из кэша инструкций до 32 байтов;
•усовершенствование механизма предсказания переходов, добавление предсказателя косвенных переходов;
•появление механизма внеочеденой выборки данных из памяти;
•некоторое расширение системы команд.
Кроме того, изменилась структура и внешние интерфейсы процессора. Теперь базовый вариант содержит 4 процессорных ядра, имеющих раздельные L2-кэши по 512 Кбайт и общий кэш 3-го уровня размером 2 Мбайта (в последующих версиях процессора L3-кэш увеличится). Коммуникационные интерфейсы HyperTransport, используемые для ввода-вывода и для объединения в многопроцессорную систему с общей памятью, перешли на стандарт HT-3.0, обеспечивающий повышенную скорость обменов и улучшенную функциональность. Максимальная частота интерфейсов выросла до 2.6 ГГц, а пиковая скорость передачи данных - до 10.4 Гбайт/с (в каждом направлении). Число интерфейсов увеличилось с трёх до четырёх, что позволяет реализовывать полносвязные системы из 4 процессоров (сокетов) и повысить степень интеграции систем из 8 процессоров (сокетов).
В остальном микроархитектура процессора K8L повторяет архитектуру K8: сохранилась ширина выборки и обработки инструкций, равная трём, по-прежнему производится разбиение потока МОПов на группы по 3 элемента со статической привязкой очередей и устройств ALU/AGU к позициям этих элементов, не претерпела особых изменений система внеочередного исполнения операций (с разделением на подсистемы ALU/AGU и FPU). Также нет упоминаний о том, увеличилась ли ассоциативность кэшей 1-го уровня (увеличение уровня ассоциативности с 2 до 4 позволило бы заметно повысить эффективность использования этих кэшей).
Таким образом, новый процессор сохранил ряд недостатков предыдущей архитектуры. Также неоднозначным является решение уменьшить размер L2-кэша у каждого ядра до 512 Кбайт и объединить ядра на следующем, третьем уровне кэша. Размер L3-кэша (2 Мбайта) тоже весьма невелик — правда, он, по всей вероятности, реализован эксклюзивно по отношению к L2-кэшам, и поэтому его эффективный размер при тяжёлой нагрузке может увеличиться на сумму размеров L2-кэшей (т.е. до 4 Мбайт).
Самым принципиальным отличием процессорного ядра K8L от ядра K8 является удвоение скорости работы блока арифметики с плавающей точкой (для упакованных режимов SSE). Идея введения полночастотной 128-битной обработки SSE-регистров витала в воздухе в течение ряда лет и рассматривалась как естественный путь развития микроархитектуры процессора K8. И вот, наконец, она будет реализована — правда, лишь через год после внедрения этой идеи в процессор Intel Core (P8).
Упомянутые выше недостатки и ограничения микроархитектуры K8L (в первую очередь невысокая ширина обработки и недостаточно «динамическая» реализация целочисленной арифметики ALU в сочетании с относительно небольшим размером кэшей верхних уровней) не позволят новому процессору превзойти конкурирующую архитектуру Intel Core (P8) на целочисленных и игровых применениях — так что для таких задач следует ожидать отставания в производительности. Однако на ряде применений с активным использованием арифметики с плавающей точкой процессор K8L может достойно противостоять конкуренту, а в ряде случаев и превосходить его. Небольшое превосходство на таких задачах может быть обеспечено благодаря высокой эффективности встроенного контроллера памяти и большему размеру L1-кэша в сочетании с возможностью выполнять до двух загрузок из кэша за такт. Эти факторы позволят компенсировать общие недостатки архитектуры на достаточно регулярных кодах. Например, на задаче перемножения больших матриц можно ожидать достижения производительности на уровне 85% от пиковой, против оценки на уровне 80% для процессора P8 (при одинаковой тактовой частоте и сопоставимых размерах кэшей верхних уровней).
Core
Все внутренние шины и исполнительные устройства расширены в 2 раза.
ограничением Conroe, которое может проявляться в вещественных алгоритмах, использующих x87 команды (т.е. без применения SSE оптимизаций), является в два раза более низкий темп запуска команды умножения FMUL.
Процессоры с ядром Conroe обладают очень развитой системой кэширования: кэш первого уровня размером 32 КБ и ассоциативностью равной 8 и кэш второго уровня размером 2-4 МБ с ассоциативностью равной 16 соединены полноскоростной шиной шириной 256 бит. Процессор обладает высокоэффективными блоками предвыборки, которые могут агрессивно загружать данные не только из оперативной памяти, но и из кэша второго уровня в кэш первого уровня. Именно расширением системы кэширования в Conroe по большей части могут быть объяснены резко выросшие в SPEC INT результаты (до 40% в некоторых подтестах) по сравнению с предыдущим ядром Yonah.
нововведения, появившиеся в архитектуре P8 и отличающие её от промежуточной архитектуры P6+:
•увеличена «ширина обработки» до 4-5 инструкций за такт, введён механизм слияния в одну макрооперацию инструкций сравнения и перехода;
•увеличено число кластеров арифметико-логических функциональных устройств и портов запуска;
•увеличены размеры очередей внеочередного исполнения и различных таблиц;
•усовершенствованы подсистемы предсказания переходов и предвыборки данных;
•добавлен механизм устранения неоднозначностей при обращении в память;
•реализован полночастотный 128-битный режим выполнения упакованных операций
SSE во всех трёх каналах исполнения;
•увеличена ширина и пропускная способность доступа к L1-кэшу;
•введён 64-битный режим EM64T (x86-64), а также дополнительный режим SSE4.
Превосходство процессора P8 в производительности обусловлено в первую очередь динамической организацией его архитектуры, имеющей увеличенную ширину запуска и обработки инструкций, полночастотным выполнением упакованных 128-битных операций SSE, увеличенным размером L2-кэша, более совершенным предсказателем переходов и улучшенной подсистемой предвыборки данных. Поскольку процессор P8 построен на примерно тех же фундаментальных архитектурных принципах, что и K8, и имеет сопоставимую с ним длину конвейера, он не обладает «недостатками» процессора P-4 и поэтому страдает от недостаточной оптимизации кодов не в большей степени, чем K8. Кроме того, процессор P8 имеет пониженное энергопотребление и улучшенные механизмы управления питанием.
Ошибки Intel
преждевременные "похороны" Socket7, оживленного AMD и Cyrix и ставшего Super7
RDRAM
Itanium (AKA Itanic) IA64
неудачное ядро Prescott (неудача с реализацией Netburst на 0,09 мкм техпроцессе)
Промахи AMD (разница между ошибками и промахами составляет сотни миллионов долларов - поэтому у AMD только промахи, а не ошибки;-)
забрасывание чипсетного бизнеса (после 760-го чипсета)
отсутсвие термо- и механической защиты кристалла процессора K7
медленное масштабирование шин DDR333 и DDR400
задержка на полгода (неудача? собственных инженеров) с DDR2 - покупка контроллера памяти DDR2/3 у Rambus (чуть ли не единственное дело, за которое ее можно похвалить. Впрочем, еще хороша память XDR)
Как следствие - задержка в разработке K8L.
Будущее
X86 процессоры уже давно не X86 внутри - поэтому можно полностью отказаться от совместимости или ввести второй режим работы с собственной системой команд.
Проблема с программной поддержкой может быть решена введением что-то вроде другого HAL в операционную систему Windows, Linux
Оптимизировать программы? - офисным хватит производительности даже неоптимизированного или оптимизируемого на лету кода, а для игр - есть портирование, причем бОльшую трудность составит видео, чем процессор.
И вообще - Google наверняка скоро возродит инициативу .Net, когда в офисном пакете будем работать через браузер, а само приложение будет работать на стороне провайдера (Google)- отличий от терминальной сессии немного, а на ADSL соединении все будет летать.
В полнее вероятно развитие не-x86 процессоров, где CPU в привычном понимании выполняет вспомогательные и сервисные функции, а основная вычислительная работа выполняется в CPGU (Nvidia). В 2008 году Intel, AMD, Nvidia собираются представить процессор, объединяющий общее и графическое ядро. Наиболее конкретно AMD с проектом Fusion.
Внутри, начиная с 486 - RISC-подобные архитекуры, где x86
у Intel - в 486, pentium, PPro...core2, Netburst
у AMD - 486,5x86,K5, K6(ex-NexGen), K7, K8..K8L
у Via - С7 (ex-Centaur и/или ex-Cyrix)
Transmeta - VLIW архитектура Crusoe, на лету преобразовывающая код (необязательно x86) в собственную систему команд
Операции с плавающей точкойK7K6-2K6-3Celeron-APentium IIPentium III
Avg. FPU latency
Среднее число тактов на выполнение операции422444
x87 FMUL throughput (per issue)
Тактов на выполнение конвейеризованной операции (на узел)122222
x87 FADD throughput (per issue)
Тактов на выполнение конвейеризованной операции (на узел)122111
# of issues per cpu clock cycle
Число блоков, работающих каждый такт311111
Optimal x87 math ops per cycle
Оптимальное число инструкций с плавающей точкой на такт21/21/2111
информация о поддержке различных расширенных наборов команд различными десктопными (предназначенными для настольных ПК) процессорами.
ПроцессорMMXEMMX3DNow!SSEE3DNow!SSE2SSE3
Intel Pentium II+——————
Intel Celeron до 533 MHz+——————
Intel Pentium III+——+———
Intel Celeron 533—1400 MHz+——+———
Intel Pentium 4+——+—++/—*
Intel Celeron от 1700 MHz+——+—+—
Intel Celeron D +——+—++
Intel Pentium 4 eXtreme Edition+——+—++/—*
Intel Pentium eXtreme Edition +——+—++
Intel Pentium D +——+—++
AMD K6++—————
AMD K6-2+++————
AMD K6-III+++————
AMD Athlon+++—+——
AMD Duron до 900 MHz+++—+——
AMD Athlon XP+++++——
AMD Duron от 1000 MHz+++++——
AMD Athlon 64 / Athlon FX+++++++/—*
AMD Sempron ++++++/—*+/—*
AMD Athlon 64 X2 +++++++
VIA C3+++/—*+/—*———
* в зависимости от модификации
Пара слов о некоторых пикантных особенностях DDR и QDR протоколов
Как уже было сказано выше, в режиме DDR по шине за один такт передаётся удвоенный объём информации, а в режиме QDR — учетверённый. Правда, в документах, ориентированных больше на прославление достижений производителей, чем на объективное освещение реалий, почему-то всегда забывают указать одно маленькое «но»: режимы удвоенной и учетверённой скорости включаются только при пакетной передаче данных. То есть, если мы запросили из памяти парочку мегабайтов с адреса X по адрес Y — то да, эти два мегабайта будут переданы с удвоенной/учетверённой скоростью. А вот сам запрос на данные посылается по шине с «одинарной» скоростью — всегда! Соответственно, если запросов у нас много, а размер пересылаемых данных не очень велик, то количество данных, которые «путешествуют» по шине с одинарной скоростью (а запрос — это тоже данные) будет почти равно количеству тех, которые передаются со скоростью удвоенной или учетверённой.
Общая организация современного микропроцессора (из «Обзор микроархитектур современных десктопных процессоров» IXBT О.Бессонов 27/06/2006)
Большинство современных микропроцессоров относятся к классу конвейерных суперскалярных процессоров с внеочередным исполнением операций. Рассмотрим кратко каждую из этих трёх ключевых характеристик.
•Конвейерная организация процессора означает, что многие сложные действия разбиваются на этапы с небольшим временем выполнения. Каждый этап выполняется в отдельном устройстве (блоке). Максимальная длина этапа определяет время такта процессора. Требование снижения времени такта влечёт за собой необходимость увеличения числа этапов при выполнении сложных действий. Можно выделить два наиболее важных проявления конвейерной организации процессора — прохождение инструкции (операции) от момента считывания из кэша инструкций до полного завершения (отставки), и прохождение операции через функциональное устройство. Первое проявление обычно называют «конвейером процессора» либо «конвейером непредсказанного перехода» (что более правильно). Длина этого конвейера влияет на производительность только в случае неправильного предсказания перехода в программе, когда происходит отмена работы, выполненной во всех этапах, начиная с этого перехода (сброс конвейера). Длина конвейера функционального устройства, в свою очередь, определяет время ожидания результатов операции другой операцией, использующей эти результаты в качестве операндов. Такое старт-стопное время выполнения операции в функциональном устройстве называют латентностью. Обращение к кэшам всех уровней и к оперативной памяти также производится конвейерным образом. Большинство простых операций целочисленной арифметики и логики имеют латентность, равную единице — то есть они выполняются в функциональных устройствах синхронно, без конвейеризации.
•Суперскалярная организация означает, что на каждом этапе обрабатываются сразу несколько потоков инструкций (операций) впараллель — от выборки из кэша инструкций до полного завершения (отставки). Суперскалярность наряду с тактовой частотой является важнейшим показателем пропускной способности процессора. Уровень суперскалярности («ширина обработки», гарантированно обеспеченная на всех этапах) в современных производительных процессорах варьируется от 3 (P-III, P-4, K8 ) до 4-5 (P8, PPC970).
•Внеочередное исполнение операций означает, что операции не обязаны выполняться в функциональных устройствах строго в том порядке, который определён в программном коде. Более поздние (по коду) операции могут исполняться перед более ранними, если не зависят от порождаемых ими результатов. Процессор должен лишь гарантировать, чтобы результаты «внеочередного» выполнения программы совпадали с результатами «правильного» последовательно выполнения. Механизм внеочередного исполнения позволяет в значительной степени сгладить эффект от ожидания считывания данных из кэшей верхних уровней и из оперативной памяти, что может занимать десятки и сотни тактов. Также он позволяет оптимизировать выполнение смежных операций, особенно при наличии сложных зависимостей между ними в условиях высокой латентности исполнения в устройствах и недостаточного количества регистров.
Важной особенностью современных процессоров является также предварительное преобразование машинных инструкций в промежуточные операции (микрооперации), более удобные для обработки и исполнения. Иногда такие операции называют RISC-подобными, исходя из того, что архитектуры RISC (дословно «Компьютеры с сокращённым набором инструкций») разрабатывались как раз для того, чтобы обеспечить простоту, удобство и эффективность обработки машинных инструкций. Преобразование инструкций является необходимым для архитектуры x86 с её крайне нерегулярной и запутанной системой команд. Однако и для достаточно регулярной RISC-архитектуры PPC970 такое преобразование также производится — оно необходимо для разбиения некоторых сложных инструкций на простые операции.
В рассматриваемых процессорах эти промежуточные микрооперации обозначаются по-разному: uOP (Intel P-III, P-4, P8 ), MOP (AMD K8 ), IOP (IBM PPC970). Для унификации в дальнейшем во всех случаях будем называть эти микрооперации «МОПами» (либо просто «операциями»).
Итак, современный процессор состоит из различных блоков, или подсистем, работающих параллельно и независимо. Блоки могут являться конвейеризованными устройствами, работающими на тактовой частоте процессора (бывают также исключения, когда блок работает на половинной либо на удвоенной частоте). В процессоре имеется также большое количество очередей или буферов, которые необходимы в первую очередь для сглаживания задержек, возникающих при работе устройств. Конкретная операция может находиться в какой-либо очереди продолжительное время, ожидая готовности данных либо ресурсов для своего дальнейшего продвижения. Однако во многих случаях возможно и «гладкое» продвижения операции без ожиданий в очередях. Когда говорят о длине конвейера процессора, подразумевают как раз такой режим прохождения операции. Таким образом, длина конвейера — это минимальное время прохождения операции (в тактах) при условии, что нет никаких внешних причин для задержек.
******* Выражение «Кэш трасс в процессоре Pentium 4…» в этой статье поражает. Как можно Trace перевести «трасса» – загадка. То ли автор не знает английского, то ли у него он свой;-) Еще бы приплел сюда какую-нибудь «трассировку». Trace – как дословно, так и по смыслу значит «след, остаток». То есть получаем «Отслеживающий кэш инструкций»
Лента материалов
Правила размещения комментариев
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.


Сейчас обсуждают