Сравнение архитектур:
Данная статья не является техническим описанием процессоров AMD и Intel,
и предназначена только для более детального понимания работы продуктов этих разработчиков.
Итак, уже достаточно большое количество людей пользуется возможностями персональных компьютеров(ПК), но всё-же многим это только предстоит.
Микропроцессор компьютера, уже не раз сравнивали с двигателем автомобиля,
т.е. это является основой, во многом определяющей работу вашего ПК.
При покупке своего первого, или очередного ПК, нам на выбор предлагают
продукт одного из двух микропроцессорных гигантов Intel или AMD.
В прайс-листах мы можем увидеть название, модель, и технические характеристики
интересующих нас процессоров, но если неопытному пользователю это абсолютно ничего не говорит, то более опытным людям это многое объясняет, в рамках процессоров
одного производителя, но остаётся вопрос, в пользу какого производителя сделать выбор?
Что выбрать? Пример: AMD Athlon 64 3200+ (2GHz 512Kb) или же
Intel Pentium 4 3.2GHz 1Mb?
Если судить исключительно по характеристикам, то выбора то и нет. Тактовая частота
Pentium 4 более чем в полтора раза превышает частоту Athlon 64, а объём Кеш памяти
ровно в два раза больше. Так в чём же дело? Почему сразу не купить Intel? А дело в том
что процессора AMD во многих задачах показывают себя на много производительнее
своего конкурента. А причину этого Advanced Micro Device объясняет своим названием,
«продвинутые микро технологии» потому что они действительно более «продвинуты».
Начнём по порядку:
1. Организация доступа процессора к оперативной памяти. Все данные, и команды их обработки попадают в микропроцессор, из оперативной памяти, через контроллер памяти(КП). И сразу же мы
наблюдаем отличия архитектур. Intel использует классический доступ процессора к оперативно запоминающему устройству(ОЗУ). Данные из ОЗУ по шине памяти попадают
в чипсет, в котором находится контроллер памяти, тут существует некий буфер хранения,
в который также попадают команды и данные всех остальных устройств ПК. В процессор
все эти данные попадают по системной шине, т.е. данным ОЗУ приходится разделять пропускную способность системной шины, с данными периферийных устройств. Для
удобства работы самой системы, частота шины памяти работает синхронно частоте системной шины, но работа процессора была бы более эффективна, если частота системной шины будет немного превышать частоту шины памяти, т.к синхронность
частот обеспечивает одинаковую пропускную способность обеих шин, но процессор
получает данные не только из ОЗУ, а как я уже говорил и от периферии, поэтому ему требуется чуть большая пропускная способность, по этой причине разгон процессора
является более эффективным при разгоне FSB нежели увеличение коэффициента умножения.
Минусами этой архитектуры является долгий доступ к ОЗУ, т.к. данным
приходится проходить две шины, шину памяти и системную шину, вторым минусом
является разделение системной шины, с данными периферийных устройств.
Не даром компания AMD оставила эту архитектуру доступа к памяти в поколении процессоров К7, и в процессорах К8 использует более «продвинутую». О «продвинутости» которой свидетельствует заявление Intel о переходе на подобную архитектуру. Так что же это за новая «продвинутая» технология?
Всё просто, процессор AMD Athlon 64 имеет встроенный контролер памяти, т.о. запрос осуществляется непосредственно к ОЗУ, по шине памяти данные попадают не в чипсет,
а сразу в кеш память процессора, т.о. данным ОЗУ не приходится делиться почти итак всегда не хватающим ресурсом процессорной шины. Данным периферийных устройств
в личное пользование предоставлена шина HyperTransport.
Итог первого пункта: доступ к ОЗУ в процессоре AMD Athlon 64 3200+ более быстр и удобен, чем у процессора Intel Pentium 4 3.2GHz.
2. Организация кеш памяти.
По процессорной шине и шине HyperTransport все данные попадают в кеш.
Итак кеш. Насколько хороша не была - бы технология обращения процессора к ОЗУ,
доставка данных происходит всё равно очень медленно, поэтому разработчики процессоров помещают не большой объём ячеек, аналогичных ячейкам ОЗУ, на кристалл
процессора, по сравнению с ОЗУ, это очень маленький объём, но т.к. ячейки находятся
на самом кристалле скорость доступа к ним в сотни раз быстрей. Архитектуры процессоров AMD и Intel, отличаются практически во всём, и Кеш память не исключение.
Кеш память процессоров для массового рынка, состоит из двух уровней, L1 и L2.
Кеш память второго уровня L2 – это большая, и соответственно медленная кеш память,
вообще, чем больше объём памяти, тем меньше скорость доступа к хранящимся в ней данным. Соответственно кеш память L1 намного меньше, и намного быстрей.
Для процессоров Intel кеш память первого уровня делится на кеш инструкций, являющийся гордостью этого производителя «Trace Cashe», и кеш данных.
объём кеша данных в зависимости от ядра может быть равен 8 или 16Кб, процессора Intel Pentium 4 на ядре Норвуд, выпускаются с кешем данных 8Кб, а для процессоров на ядре
Прескот, была разблокирована технология HT(Гипер Трединг) это технология создания двух логических процессоров на базе одного физического, при которой количество исполнительных устройств не изменяется, а все буфера хранения промежуточных данных
разделяются на две части, предположительно именно по этой причине кеш данных начиная с ядра прескот был увеличен ровно в два раза.
Вся архитектура процессоров Intel(NetBurst), рассчитано на повышение производительности путём достижения максимальных частот. Trace Cashe как и следовало ожидать является сверх быстрым кешем, он отличается от всех ранее используемых классических кешей инструкций, Trace Cashe предназначен уже не для инструкций, а для декодированных микроопераций(МОП), в результате чего скорость этого кеша во много раз превышает скорость кеша инструкций AMD. Компания Intel, в отличии от AMD крайне скупо даёт описание своей архитектуры, но известно, что Trace Cashe рассчитан на 12 тысяч МОП. Единицей хранения этого кеша, является не одна, или блок инструкций,
а «трасса» последовательность микроопераций, которые предположительно, должны быть затребованы по порядку, одна за другой, что увеличивает скорость чтения данных.
Для процессоров AMD кеш память L1 также является разделённой, на кеш данных 64Кб
и кеш инструкций тоже 64Кб.
Кеш память второго уровня как уже было сказано имеет гораздо больший объём и гораздо большее время доступа. Объём кеша L2 для процессоров Intel в зависимости от ядра, может быть равен 512/1024/2048Кб . Для процессоров AMD, так же в зависимости от ядра 512 или 1024Кб. Как видно на первый взгляд, в объёме кеша L1 лидирует AMD, а в L2 лидирует Intel. Но объём ещё ни о чём не говорит. Целью данной статьи и является объяснение того, что качество зачастую оказывается важнее количества.
Поэтому дальше, о качестве и количестве:
ещё одним отличием рассматриваемых архитектур, является устройство кеша.
Архитектуры кеш памяти делятся на Эксклюзивную(исключающую) и Инклюзивную(включающую). Процессора Intel выполнены по инклюзивной архитектуре,
т.е. все данные хранятся в кеш памяти верхнего уровня (L2 – для Pentium 4, L3 – для Intel XEON) при запросе процессора нужные данные копируются в кеш нижнего уровня,
таким образом, суммарный объём кешируемой информации равен объёму кеша верхнего уровня, т.е. для процессора Intel Pentium 4 3.2GHz это 1Мб.
Процессора AMD выполнены по эксклюзивной архитектуре, т.е. если запрашиваемые данные находятся в L2, они пересылаются в L1 и на их место поступают новые данные,
т.о. суммарный объём кешируемой информации процессора AMD Athlon 64 3200+
равен 640Кб(128 + 512).
Как мы видим, даже суммарный объём кеш памяти по нынешним меркам очень мал,
и соответственно быстро заполняется. Как же определяется, какую информацию оставить, а какую заменить на нужную в данный момент? Для этого ведётся учёт пространственной
и временной локальности.
Пространственная локальность – если произошло обращение к некоторому адресу, то велика вероятность того, что следующее обращение будет к адресам расположенным рядом.
Временная локальность - если произошло обращение к некоторому адресу, то велика вероятность того, что обращение к этому адресу будет осуществляться повторно.
Для учёта этих особенностей программ, реализуется следующее. Пространство памяти разбивается на блоки одинакового размера 128 байт для Athlon 64 и 256 для Pentium 4.
При обращении к адресу происходит не только считывание данных по этому адресу, а в кеш память считываются данные всего блока, включающего этот адрес, так учитывается пространственная локальность. Сохранённые в кеш блоки остаются там на достаточно длительное время. Удаляются только тогда, когда требуется размещение новых блоков, а места в памяти уже нет – это учёт временной локальности.
Выше названы объемы одного блока для рассматриваемых процессоров, теперь можно уточнить, чем больше размер блока, тем лучше учитывается пространственная локальность, но тем меньше блоков можно сохранить в кеш, а значит уменьшается учёт временной локальности.
Как видно из выше изложенного, если исследуемые процессора будут выполнять программу, с большим количеством переходов, т.е. из одного блока потребуется читать меньше чем 128 байт, то объём полезной считанной информации для Pentium 4 с L2 = 1Мб
и Athlon 64 с L2 = 512Кб будет одинаковым.
Раз мы заговорили о полезном использовании объёма кеш памяти, стоит упомянуть о такой характеристике, как степень ассоциативности.
В так называемом полностью ассоциативном Кеше, данные с любого адреса ОЗУ могут быть размещены на любом не занятом адресе кеша, т.о. не надо удалять старые блоки, если в кеш имеется свободное место. Но реальный контроллер кеш памяти имеет ограничения на размещение данных в кеше, степень этого ограничения характеризуется параметром ассоциативность. Кеш со степенью ассоциативности равным 1 часто называют кешем прямого отображения. Любой из адресов ОЗУ может быть размещён только на одном адресе кеша, если этот адрес занят старым блоком, его приходится удалять даже при наличии свободного места на других адресах. Для памяти со степенью ассоциативности равной 2, данные из ОЗУ могут быть отображены не на один адрес кеша а на два.
т.о. чем выше степень ассоциативности, тем эффективней использование объёма кеш памяти. Достаточной считается степень ассоциативности равная 16 – она использует объём практически на 100%. Чем выше степень ассоциативности, тем сложнее организовать быстрое размещение и чтение данных из кеша. Поэтому разработчики стараются выбрать компромисс между скоростью и объёмом.
Следующим важным параметром кеша является латентность.
Латентность – это число тактов, которое требуется для считывания блока данных из кеша.
Теперь можно рассмотреть эти параметры для рассматриваемых процессоров:
Степень ассоциативности кеш памяти первого уровня:
Athlon 64 – 2;
Pentium 4 – 4;
Степень ассоциативности кеш памяти второго уровня:
Athlon 64 – 16;
Pentium 4 – 8;
Латентность кеш памяти первого уровня:
Athlon 64 – 3;
Pentium 4 – 4;
Латентность кеш памяти первого уровня:
Athlon 64 – 11-15;
Pentium 4 – 28(ядро Прескотт);
Латентность эксклюзивного кеша А64 в разных циклах чтения может быть различной,
больше, если для записи в L1 требуется освободить место, и меньше если в L1 есть место.
Все информация хранящаяся в кеш памяти процессора доставляется к исполнительным устройствам по Внешней Шине Данных(ВШД). Процесс работы ВШД для рассматриваемых процессоров так же различен. Процессора Pentium 4 имеют ВШД шириной 256 бит, т.е. за один такт по этой шине проходит 256 бит информации.
Для процессоров Pentium 4 ВШД может работать в двух режимах, режим «чтение» и режим «запись» для переключения режимов требуется некоторое время. Для процессоров Athlon 64 ВШД работает более «продвинуто», т.е. разрядность ВШД всего 64 бит, но самих ВШД две, одна работает в режиме «чтение», другая в режиме «запись».
Что же касается чтения данных, то и здесь есть отличия. Процессоры Athlon 64 имеют один общий контроллер кеш памяти, и при запросе процессора на чтение определённых данных, производится чтение по заранее известному адресу. При создании кеша процессора Pentium 4, как и для всей архитектуры этого ЦП, главным приоритетом было достижение максимальной скорости. Процессора этого семейства имеют два контролера кеш памяти для L1 и L2, т.о. запрос одновременно происходит к L1 и L2. Но при попытках
Intel достигнуть, высоких скоростей, они постоянно натыкаются на разные проблемы, которые не всегда удаётся решить, т.о. и здесь есть «недочёты» контроллеры этого процессора не знают место нахождения требуемых данных, и производят поиск по всему объёму кеша, кроме этого для достижения большей скорости при поиске данных производится анализ не всего блока данных, как у АМД, а младшей половины, т.е. 128 бит, из 256 для ядра Норвуд, и три четверти, для ядра Прескотт и более современных ядер архитектуры NetBurst. При этом возможна ситуация при которой будут найдены блоки с совпадающими данными в младших адресах, эта ситуация называется «Аллиасинг», при этом не возможно чтение ни одного из этих блоков, и для определения какой же блок был затребован происходит вмешательство дополнительной логики процессора, на что соответственно уходит некоторое время.
Итог второго пункта: суммарная кеш память процессоров Intel является более объёмной, чем у Advanced Micro Device, но это с учётом L2, а если мы вспомним такие параметры как степень ассоциативности и размер блока данных, то можно заметить, что у Intel объём кеша используется менее эффективно. Если же рассматривать L1 то тут перевес явно в сторону AMD, объём гораздо больше! Если же мы будем учитывать вдвое меньшую степень ассоциативности Athlon 64, то нельзя не учитывать вдвое больший объём
Pentium 4. И в итоге Advanced Micro Device опять оказались более «продвинуты».
3.Логика. Доставка данных к исполнительным устройствам. Исполнительные устройства процессора умеют работать только с декодированными МОП. Поэтому у процессоров Athlon 64 на выходе из кеш памяти происходит декодирование инструкций в МОП. У Pentium 4 это происходит при пересылке инструкций из L2 в Trace Cashe. Декодирование происходит с помощью декодеров, которых в обоих процессорах по три, но AMD и тут оказались универсальней. Инструкции образуют собой некую очередь, и каждый такт происходит декодирование трёх инструкций. У Pentium 4 этот процесс выглядит иначе, все инструкции классифицируются и попадают в одну из трёх специализированных очередей:
инструкции для команд работы с адресами, инструкции арифметических команд и инструкции логических команд. Т.о. каждый декодер специализирован, и обработка инструкции происходит быстрей нежели у Athlon 64, но в отличии от Athlon 64 у
Pentium 4 возможна ситуация когда одна или даже две очереди на несколько тактов опустеют, соответственно в эти такты будут декодированы не три инструкции, а две или одна.
Далее уже декодированные МОП попадают в Буфер Переупорядочивания(БП).
Такие же БП существуют и для команд, и для инструкций. Дело в том, что предположительно все команды, инструкции и микрооперации должны быть выполнены друг за другом, но возможны ситуации при которых данные требуемые для выполнения порядковой МОП ещё отсутствуют, поэтому из БП на выполнение отправляются операции не по порядковому номеру, а по очереди возможности их обработки. За этим следит специальное устройство «планировщик». Далее из БП МОП должны быть отправлены на исполнительные устройства, но несмотря на то что БП представляет собой один физический буфер, логически он разбивается на несколько частей, в каждую из которых попадают специализированные команды, из каждого такого специализированного буфера команды отправляются на исполнительные устройства. Для сравнения рассматриваемых процессоров уточним, в процессорах Pentium 4 существует 4 специализированных буфера и 7 исполнительных устройств, у Athlon 64, 7 специализированных буферов и 9 исполнительных устройств. Из каждого специализированного буфера, через специальный коммутатор каждый такт отправляется по одной МОП на одно из закреплённых за ним исполнительное устройство.
Итог третьего пункта: несмотря на то что многие менее важные для понимания работы процессора элементы логики были пропущены, соотношение 4 МОП на 7 исполнительных устройств, это гораздо хуже чем 7 на 9.
4.Исполнительные устройства.
Как уже было сказано Pentium 4 имеет 7 исполнительных устройств(ИУ), это 2 блока FPU,
3 ALU и 2 AGU. Athlon 64, имеет 9 ИУ, это 3 FPU, 3 ALU, 3 AGU.
Блоки AGU выполняют МОП команд адресации, ALU - МОП арифметико-логических команд, FPU в основном выполняют МОП набора дополнительных инструкций микропроцессора(3DNew! и SSE). Говоря о дальнейших отличиях рассматриваемых процессоров, следует отметить, что Pentium 4 хоть и содержит 3 ALU одновременно на нём могут быть исполнены только две МОП, т.к. каждая МОП может быть исполнена или на одном универсальном ALU или на двух быстрых. Поэтому сложные МОП отправляются на универсальное, а простые МОП на быстрые ALU. У AMD все ALU универсальны.
С количеством вроде разобрались, теперь рассмотрим качество, т.е. саму работу ИУ.
Все современные процессора используют конвеерную обработку МОП. Дело в том, что практически каждая инструкция для своего выполнения требует подготовку каких либо данных. Т.е. в процессорах не использующих конвеерную обработку, МОП попадая на ИУ, ждёт пока будут получены требуемые данные, и это ожидание в зависимости от места нахождения этих данных(L1,L2,ОЗУ) может быть очень долгим. соответственно во время ожидания ИУ будет занято этой МОП, что сильно снижает производительность процессора. Конвеерная обработка предполагает разбиение ИУ на некоторое количество ступеней Athlon 64 – 15 ступеней, Pentium 4(прескотт) – не менее 28 ступеней(длина конвеера производителем не разглашается, но в специальных тестированиях выявлено, что количество ступеней не меньше 2

Процессора Athlon 64 считаются коротко-конвеерными, а Pentium 4 длинно-конвеерными.
И в работе этих конвееров наблюдают следующие отличия:
Большая длина конвеера позволяет обеспечить большую тактовую частоту, но большая длина конвеера так же создаёт гораздо больше проблем. Длинные конвеера идеальны только в идеальных программах, каковых к сожалению не существует, в итоге во многих программах существуют команды условного перехода, т.е. в зависимости от какого-то условия дальнейшие команды должны быть загружены из одного из указанных адресов, в современных процессорах конечно присутствует специальное устройство которое по анализу кода программы и по результатам прошлых выполнений этой команды пытается определить на какой адрес наиболее вероятно произойдёт переход. Проблемой является то, что предсказание перехода работает только на относительно не сложных логических программах, в сложных программах это затруднено. Выделяют:
алгоритмически простые задачи – это видео рендеринг; и многие виды обработки растровой графики.
алгоритмически сложные задачи – это трансляторы; программы автоматического перевода, с одного языка на другой; системы искусственного интеллекта.
Соответственно можем выделить что Pentium 4 будет более эффективен в первом случае, а Athlon 64 во втором, так же существует ряд задач средней сложности в которой приписать лидерство одному из процессоров нельзя, это компьютерная графика, ОС и офисные программы. Сама же эффективность заключается в меньших потерях, т.к. если условный переход не будет угадан, произойдёт «перезагрузка конвеера», и первая из новых команд будет выполнена через количество тактов равное длинне конвеера, что хуже сказывается на длинно-конвеерных процессорах. И если условный переход возможно угадать, и предотвратить перезагрузку конвеера, то она всё равно будет происходить при каждой смене контекста(т.е. при переходе на очередной процесс выполняемый операционной системой, на момент написания статьи у меня в ОС Windows XP PE 27 процессов).
При попадании МОП на последнюю ступень конвеера в коротко-конвеерных процессорах происходит анализ, доступны ли данные, требуемые для выполнения МОП, если данные ещё не доступны, запуск МОП на конвеер во избежание ряда проблем приостанавливается. Уточним, что архитектура кеш памяти процессоров AMD устроена таким образом, что нужные данные всегда доступны на момент выполнения инструкции запросившей эти данные.
Если же говорить о длинно-конвеерных процессорах и в частности о семействе Intel Pentium 4, то тут длина конвеера не позволяет производить анализ доступности данных, т.к. это займёт очень много времени и ИУ придётся работать в холостую, т.о. коммутатор отправляющий очередную МОП на конвеер, не знает выполнены ли уже отправленные и продолжает отправлять новые не останавливаясь. Поэтому если данных требуемых для выполнения МОП нет, МОП не может быть выполнена и выпущена с конвеера, по этой причине в Pentium 4 реализован фиктивный конвеер(петля реплея), петля реплея представляет собой такой же, только логический конвеер на котором над МОП не выполняются ни какие операции, а просто происходит ожидание перед повторным запуском на основной конвеер. Количество ступеней петли реплея такое же как у основного конвеера, т.о. на основной конвеер коммутатор отправляет МОП либо из БП, либо из петли реплея, причём когда подходит время очередного запуска МОП находящейся на петле реплея она имеет больший приоритет, и коммутатор не выпускает очередную МОП из БП. Петля реплея создана для предотвращения неправильного выполнения МОП, и на первый взгляд является очень полезной разработкой. Но эта «полезная» разработка очень часто приводит к «вредным» последствиям. В исполняемых программах очень часто попадаются цепочки зависимых команд, и если данные первой МОП из этой цепочки ещё не доставлены то на реплей заворачивает вся цепочка, и поскольку между командой запроса данных, и командой обработки этих данных существует некоторый промежуток, то при выпуске этих МОП на основной конвеер в этот промежуток коммутатор вставляет очередную инструкцию, таким образом заполняются все ступени основного конвеера и все ступени петли реплея, в результате чего МОП которые уже получили данные, заворачивают на реплей по причине того что не могут быть выполнены раньше операции, которая уже завернула на реплей. В итоге реплей может в несколько раз понизить производительность процессора. Следует отметить что реплей происходит только на блоках ALU и FPU.
Ещё одной проблемой длинного конвеера является повышенное тепловыделение, т.к. завернувшие на реплей МОП выполняются основным конвеером минимум два раза, сильно напрягая ИУ, тем самым повышая тепловыделение.
Итог четвёртого пункта: уже как обычно Advanced Micro Device предлагает более продвинутое решение, но следует отметить, что в отличии от ядра Норвуд, в ядре Прескотт(и более новых ядрах) «вредный» эффект многих проблем гораздо ниже,
Intel не знает как решить эти проблемы, но знает как до минимума снизить потери, обеспеченные скоростной архитектурой NetBurst.
Итог статьи: в каждом пункте мы наблюдали некий перевес в пользу AMD, т.о. архитектуру Athlon 64 можно признать более удачной, соответственно количество «гига» герц Intel, всё же уступает «микро» технологиям AMD. Т.е. очивидно что в тактовой частоте, главное не количество тактов, а качество. Это же подтверждает отказ Intel от архитектуры NetBurst, и переход на более качественную Conroe.
Таким образом процессор Intel Pentium 4 3.2GHz 1Mb всё же можно порекомендовать для покупки, но только если заранее известна сфера задач в которой будет работать этот процессор и если в этой сфере задач он работает быстрей. Но это вероятней всего, если компьютер нужен исключительно для работы. Тут же скажем что для такого же если не больше, количества профессиональных задач можно рекомендовать AMD. В случае же если сфера задач компьютера не известна или очень обширна, то тут выбор предпочтений,
заметно большая производительность в ряде определённых задач но так же заметно большее отставание производительности в ряде всех остальных задач, которых замечу намного больше.
Автор – Rab lampi x
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают