K8

Поделись знанием:
Перейти к: навигация, поиск
<<   AMD K8   >>
Центральный процессор
Производство: 2003 по настоящее время
Производитель: AMD
Частота ЦП: 1,6—3,2 ГГц
Частота FSB: 800—1000 МГц
Технология производства:
130—65 нм
Наборы инструкций: AMD64 (x86-64)
Ядра:
  • Sempron
  • Mobile Sempron
  • Opteron
  • Athlon 64/FX/X2
  • Mobile Athlon 64
  • Turion 64/X2

K8 — x86 совместимая микроархитектура центрального процессора, разработанная корпорацией AMD. Впервые представлена 22 апреля 2003 года: были выпущены первые процессоры Opteron, предназначенные для серверного рынка. На основе этой микроархитектуры выпускались семейства микропроцессоров Opteron, Athlon 64, Athlon 64 X2, Turion 64. Является кардинально переработанным, значительно улучшенным и расширенным вариантом микроархитектуры предыдущего поколения AMD K7. В новых процессорах удалось преодолеть ряд проблем, являвшихся ахиллесовой пятой K7, а также внесён ряд принципиально новых решений.





Основные тезисы

Микропроцессоры K8 являются суперскалярными, мультиконвейерными процессорами с предсказанием ветвлений и спекулятивным исполнением. Как и процессоры AMD K7 и Intel P6 они теоретически способны исполнять до 3-х инструкций за один такт. Как и любой современный x86-процессор, K8 вначале перекодирует внешний сложный CISC набор x86 инструкций во внутренние RISC-подобные микрооперации, которые, в свою очередь, уже идут на исполнение. Для повышения производительности в рамках микроархитектуры реализовано спекулятивное исполнение с предсказанием ветвлений и Out-of-Order запуском микроопераций, для снижения влияния зависимостей по данным используются техники переименования регистров, Result forwarding и ряд других.

Конвейер K8

В микроархитектуре K8 используется конвейер с 12 стадиями, значительная часть которых приходится на декодер инструкций.

Выборка и декодирование инструкций

Основная проблема декодирования инструкций x86 заключается в том, что они имеют различную длину (от 1 до 15 байт). В K8 эта проблема решается путём разделения процесса разметки потока инструкций и собственно декодирования на две отдельные подзадачи исполняемые в разных блоках процессора. Дело в том, что перед помещением в кэш первого уровня для инструкций (L1I) проходят через процедуру предекодирования в темпе по 4 байт инструкций за такт. А информация о разметке помещается в специальный массив тегов ассоциированный с L1. Благодаря этому упрощается дальнейшее, рабочее декодирование и сокращается конвейер. Такое решение является уникальным, так как в иных процессорах x86 (за исключением K7) используются иные техники решения этой проблемы. Так в процессорах Intel P6 разметка осуществляется «на лету», а в Intel NetBurst инструкции проходят декодирование до сохранения в L1 (вместо стандартного кэша инструкций используется специальная, довольно сложная структура хранящая уже декодированные микрооперации — кэш трасс).

K8 располагает двухканальным наборно-ассоциативным кэшем полезным объёмом 64 Кбайт со строкой равной 64 байт. Однако помимо собственно инструкций в процессоре также хранится массив тегов разметки — 3 бит на один байт L1, то есть порядка 21 Кбайт, а также дескрипторы предсказателя ветвлений — порядка 8 Кбайт.

Из L1 инструкции выбираются сразу 16-байтными блоками, которые отправляются одновременно, через специальный буфер (fetch-буфер), на исполнительный конвейер и в блок предсказания ветвлений (branch predictor). В предсказателе ветвлений блок инструкций анализируется с использованием специального буфера адресов переходов (BTB) размером 2048 записей и ассоциированных с ним таблиц истории переходов (BHT) полной ёмкостью 16К записей, а также некоторых вспомогательных устройств. В случае если в блоке инструкции содержался переход, то выборка следующего блока будет выполнена уже с предсказанного адреса. К сожалению branch predictor — слишком сложное устройство, чтобы работать в полном темпе процессора, поэтому все предсказания выполняются с латентностью 2 такта, то есть, если процессор встречает переход, то следующая выборка из L1 будет выполнена только через такт. В большинстве случаев эта задержка нивелируется тем что в одном 16-байт блоке содержится много инструкций, и общий темп выборки является опережающим.

Из fetch-буфера инструкции попадают на декодер. Каждую инструкцию x86 K8 относит к одному из трёх классов:

  • DirectPath — инструкции перекодирующиеся в один МОП (микрооперацию);
  • DirectPathDouble — инструкции перекодирующиеся в 2 МОПа; и
  • VectorPath — инструкции декодирующиеся в набор более чем из 2-х МОПов.

DirectPath и DirectPathDouble считаются простыми, а VectorPath сложными. Фактически в K8 имеется 2 различных блока декодеров работающие параллельно и дополняющие друг друга. Основной блок представляет собой комплекс из трёх простых декодеров работающих совместно и декодирующих до трёх DirectPath и DirectPathDouble инструкций за такт, в любой комбинации. Второй блок занимается исключительно VectorPath-инструкциями и декодирует по одной такой инструкции за такт. Когда работает VectorPath-декодер, соответствующие стадии простых декодеров блокируются. Таким образом декодер K8 можно считать довольно эффективным и производительным устройством умеющим перекодировать до трёх простых или одной сложной инструкции за такт. Результаты декодирования, МОПы через промежуточные буферы перепаковываются в специальные группы по три МОПа в группе (лайны). Мопы в группе следуют строго в порядке изначального кода программы, перестановка не производится. Мопы DirectPath и DirectPathDouble инструкций могут смешиваться как угодно (кроме инструкции умножения, которая декодируется в 2 МОПа и всегда помещается в один лайн), мопы одной DirectPathDouble инструкции даже могут быть расположены в разных лайна, но все мопы VectorPath инструкций должны следовать в целом числе групп и не могут смешиваться с мопами от простых инструкций, что ведёт к некоторой фрагментации и неполному заполнению групп, но впрочем не является частой ситуацией, так как абсолютное большинство инструкций в K8 являются простыми.

Исполнение и отставка

Интересной особенностью K8 является то, что процессор внутри себя оперирует целыми группами по 3 МОПа, что позволяет значительно уменьшить количество управляющей логики процессора. В процессорах Intel хотя МОПы и идут на некоторых стадиях конвейера группами, но всё равно каждый МОП отслеживается отдельно. Ещё одно большое отличие K8 от процессоров Intel, то что он отходит от принципа максимального упрощения микроопераций. Дело в том что система команд x86 как CISC содержит большое количество инструкций типа Load-Op (загрузка+исполнение) и Load-Op-Store (загрузка+исполнение+выгрузка). Так как все современные x86 процессоры внутри являются RISC, то такие инструкции внутри процессора разбиваются на большое количество МОПов каждый из которых выполняет некоторое своё простое действие, так инструкция типа add eax, mem; будет разложена по крайней мере на 2 МОПа — загрузку из памяти и собственно сложения, то есть количество МОПов которые необходимо исполнить может значительно превысить количество исходных x86 инструкций, они заполнят внутренние тракты и буферы процессора не позволяя добиться скорости в 3 операции за такт.

В процессорах микроархитектуры K7 и K8 разработчики решили обойти эту проблему, сделав МОП двухкомпонентным. Каждый МОП в этих процессорах состоит из двух элементарных инструкций, одна микроинстрокция целочисленной либо плавающей арифметики + одна микроинструкция адресной арифметики. Таким образом инструкции типа Load-Op и Load-Op-Store могут декодироваться в K8 всего в один МОП, что экономит ресурсы процессора и соответственно позволяет повысить эффективность его работы.

При необходимости, один из компонентов МОПа может не использоваться и будет заполнен пустышкой. Так инструкция типа Load будет перекодирована только в один МОП содержащий, только адресную компоненту. Нужно сказать, что в новых процессорах Intel для ряда инструкций типа Load-Op также применён подобный механизм слияния микроопераций в один МОП с последующим его разделением перед запуском МОПа на исполнение, который они назвали microfusion.

Группа из трёх двухкомпонентных МОПов выходит с декодера и дальше контролируется процессором как единое целое с помощью специального блока — ICU (Instruction Control Unit). Группы мопов проходят стадии переименования регистров и выделения ресурсов, затем размещаются в ROB (Re-Order Buffer). В ROB группы инструкций хранятся до момента отставки, отставка инструкций производится сразу всей группой только когда все МОПы в группе будут исполнены и только в порядке очерёдности заданной исходной программой. Ёмкость ROB в K8 равна 24 группы, что соответствует 72 МОПам либо 144 микрооперациям. В процессоре K8 используется статическая схема распределения инструкций по исполнительным блокам, то есть то в какую группу ФУ[неизвестный термин] будет запущен МОП напрямую зависит от положения этого МОПа в группе. Всего в процессоре имеется три планировщика инструкций целочисленной и адресной арифметики, по числу МОПов в группе.

Из ROB инструкции копируются в буферы планировщиков. В процессоре имеется три очереди планировщиков для Int-операций и три для адресных операций, каждая ёмкостью 8 микроопераций. В общем случае из каждой очереди инструкции могут быть запущены на исполнение в ФУ независимо друг от друга и с использованием Out-Of-Order. То есть инструкции направляются в ФУ в том порядке, в котором необходимо процессору. Процессор содержит три 64-х битных АЛУ и три AGU (Address Generation Unit) подключённых попарно каждый к своему планировщику.

Планировка и исполнение МОПов плавающей арифметики производится в отдельном специальном устройстве. Для их исполнения процессор содержит одно устройство FMUL, одно FADD и одно FMISC (являющееся вспомогательным).

Напишите отзыв о статье "K8"

Ссылки

  • [www.ixbt.com/cpu/amd-hammer-family2.shtml Исследование архитектуры AMD64]
  • [www.amd.com/ru-ru/Processors/ProductInformation/0,,30_118_9484,00.html Семейство процессоров AMD Athlon™ 64]

Отрывок, характеризующий K8

– Он верно вам говорил про свою детскую любовь к Наташе?
– А была детская любовь? – вдруг неожиданно покраснев, спросил князь Андрей.
– Да. Vous savez entre cousin et cousine cette intimite mene quelquefois a l'amour: le cousinage est un dangereux voisinage, N'est ce pas? [Знаете, между двоюродным братом и сестрой эта близость приводит иногда к любви. Такое родство – опасное соседство. Не правда ли?]
– О, без сомнения, – сказал князь Андрей, и вдруг, неестественно оживившись, он стал шутить с Пьером о том, как он должен быть осторожным в своем обращении с своими 50 ти летними московскими кузинами, и в середине шутливого разговора встал и, взяв под руку Пьера, отвел его в сторону.
– Ну что? – сказал Пьер, с удивлением смотревший на странное оживление своего друга и заметивший взгляд, который он вставая бросил на Наташу.
– Мне надо, мне надо поговорить с тобой, – сказал князь Андрей. – Ты знаешь наши женские перчатки (он говорил о тех масонских перчатках, которые давались вновь избранному брату для вручения любимой женщине). – Я… Но нет, я после поговорю с тобой… – И с странным блеском в глазах и беспокойством в движениях князь Андрей подошел к Наташе и сел подле нее. Пьер видел, как князь Андрей что то спросил у нее, и она вспыхнув отвечала ему.
Но в это время Берг подошел к Пьеру, настоятельно упрашивая его принять участие в споре между генералом и полковником об испанских делах.
Берг был доволен и счастлив. Улыбка радости не сходила с его лица. Вечер был очень хорош и совершенно такой, как и другие вечера, которые он видел. Всё было похоже. И дамские, тонкие разговоры, и карты, и за картами генерал, возвышающий голос, и самовар, и печенье; но одного еще недоставало, того, что он всегда видел на вечерах, которым он желал подражать.
Недоставало громкого разговора между мужчинами и спора о чем нибудь важном и умном. Генерал начал этот разговор и к нему то Берг привлек Пьера.


На другой день князь Андрей поехал к Ростовым обедать, так как его звал граф Илья Андреич, и провел у них целый день.
Все в доме чувствовали для кого ездил князь Андрей, и он, не скрывая, целый день старался быть с Наташей. Не только в душе Наташи испуганной, но счастливой и восторженной, но во всем доме чувствовался страх перед чем то важным, имеющим совершиться. Графиня печальными и серьезно строгими глазами смотрела на князя Андрея, когда он говорил с Наташей, и робко и притворно начинала какой нибудь ничтожный разговор, как скоро он оглядывался на нее. Соня боялась уйти от Наташи и боялась быть помехой, когда она была с ними. Наташа бледнела от страха ожидания, когда она на минуты оставалась с ним с глазу на глаз. Князь Андрей поражал ее своей робостью. Она чувствовала, что ему нужно было сказать ей что то, но что он не мог на это решиться.
Когда вечером князь Андрей уехал, графиня подошла к Наташе и шопотом сказала:
– Ну что?
– Мама, ради Бога ничего не спрашивайте у меня теперь. Это нельзя говорить, – сказала Наташа.
Но несмотря на то, в этот вечер Наташа, то взволнованная, то испуганная, с останавливающимися глазами лежала долго в постели матери. То она рассказывала ей, как он хвалил ее, то как он говорил, что поедет за границу, то, что он спрашивал, где они будут жить это лето, то как он спрашивал ее про Бориса.
– Но такого, такого… со мной никогда не бывало! – говорила она. – Только мне страшно при нем, мне всегда страшно при нем, что это значит? Значит, что это настоящее, да? Мама, вы спите?
– Нет, душа моя, мне самой страшно, – отвечала мать. – Иди.
– Все равно я не буду спать. Что за глупости спать? Maмаша, мамаша, такого со мной никогда не бывало! – говорила она с удивлением и испугом перед тем чувством, которое она сознавала в себе. – И могли ли мы думать!…
Наташе казалось, что еще когда она в первый раз увидала князя Андрея в Отрадном, она влюбилась в него. Ее как будто пугало это странное, неожиданное счастье, что тот, кого она выбрала еще тогда (она твердо была уверена в этом), что тот самый теперь опять встретился ей, и, как кажется, неравнодушен к ней. «И надо было ему нарочно теперь, когда мы здесь, приехать в Петербург. И надо было нам встретиться на этом бале. Всё это судьба. Ясно, что это судьба, что всё это велось к этому. Еще тогда, как только я увидала его, я почувствовала что то особенное».
– Что ж он тебе еще говорил? Какие стихи то эти? Прочти… – задумчиво сказала мать, спрашивая про стихи, которые князь Андрей написал в альбом Наташе.
– Мама, это не стыдно, что он вдовец?
– Полно, Наташа. Молись Богу. Les Marieiages se font dans les cieux. [Браки заключаются в небесах.]
– Голубушка, мамаша, как я вас люблю, как мне хорошо! – крикнула Наташа, плача слезами счастья и волнения и обнимая мать.
В это же самое время князь Андрей сидел у Пьера и говорил ему о своей любви к Наташе и о твердо взятом намерении жениться на ней.

В этот день у графини Елены Васильевны был раут, был французский посланник, был принц, сделавшийся с недавнего времени частым посетителем дома графини, и много блестящих дам и мужчин. Пьер был внизу, прошелся по залам, и поразил всех гостей своим сосредоточенно рассеянным и мрачным видом.
Пьер со времени бала чувствовал в себе приближение припадков ипохондрии и с отчаянным усилием старался бороться против них. Со времени сближения принца с его женою, Пьер неожиданно был пожалован в камергеры, и с этого времени он стал чувствовать тяжесть и стыд в большом обществе, и чаще ему стали приходить прежние мрачные мысли о тщете всего человеческого. В это же время замеченное им чувство между покровительствуемой им Наташей и князем Андреем, своей противуположностью между его положением и положением его друга, еще усиливало это мрачное настроение. Он одинаково старался избегать мыслей о своей жене и о Наташе и князе Андрее. Опять всё ему казалось ничтожно в сравнении с вечностью, опять представлялся вопрос: «к чему?». И он дни и ночи заставлял себя трудиться над масонскими работами, надеясь отогнать приближение злого духа. Пьер в 12 м часу, выйдя из покоев графини, сидел у себя наверху в накуренной, низкой комнате, в затасканном халате перед столом и переписывал подлинные шотландские акты, когда кто то вошел к нему в комнату. Это был князь Андрей.
– А, это вы, – сказал Пьер с рассеянным и недовольным видом. – А я вот работаю, – сказал он, указывая на тетрадь с тем видом спасения от невзгод жизни, с которым смотрят несчастливые люди на свою работу.
Князь Андрей с сияющим, восторженным и обновленным к жизни лицом остановился перед Пьером и, не замечая его печального лица, с эгоизмом счастия улыбнулся ему.
– Ну, душа моя, – сказал он, – я вчера хотел сказать тебе и нынче за этим приехал к тебе. Никогда не испытывал ничего подобного. Я влюблен, мой друг.
Пьер вдруг тяжело вздохнул и повалился своим тяжелым телом на диван, подле князя Андрея.
– В Наташу Ростову, да? – сказал он.
– Да, да, в кого же? Никогда не поверил бы, но это чувство сильнее меня. Вчера я мучился, страдал, но и мученья этого я не отдам ни за что в мире. Я не жил прежде. Теперь только я живу, но я не могу жить без нее. Но может ли она любить меня?… Я стар для нее… Что ты не говоришь?…
– Я? Я? Что я говорил вам, – вдруг сказал Пьер, вставая и начиная ходить по комнате. – Я всегда это думал… Эта девушка такое сокровище, такое… Это редкая девушка… Милый друг, я вас прошу, вы не умствуйте, не сомневайтесь, женитесь, женитесь и женитесь… И я уверен, что счастливее вас не будет человека.
– Но она!
– Она любит вас.
– Не говори вздору… – сказал князь Андрей, улыбаясь и глядя в глаза Пьеру.
– Любит, я знаю, – сердито закричал Пьер.
– Нет, слушай, – сказал князь Андрей, останавливая его за руку. – Ты знаешь ли, в каком я положении? Мне нужно сказать все кому нибудь.
– Ну, ну, говорите, я очень рад, – говорил Пьер, и действительно лицо его изменилось, морщина разгладилась, и он радостно слушал князя Андрея. Князь Андрей казался и был совсем другим, новым человеком. Где была его тоска, его презрение к жизни, его разочарованность? Пьер был единственный человек, перед которым он решался высказаться; но зато он ему высказывал всё, что у него было на душе. То он легко и смело делал планы на продолжительное будущее, говорил о том, как он не может пожертвовать своим счастьем для каприза своего отца, как он заставит отца согласиться на этот брак и полюбить ее или обойдется без его согласия, то он удивлялся, как на что то странное, чуждое, от него независящее, на то чувство, которое владело им.
– Я бы не поверил тому, кто бы мне сказал, что я могу так любить, – говорил князь Андрей. – Это совсем не то чувство, которое было у меня прежде. Весь мир разделен для меня на две половины: одна – она и там всё счастье надежды, свет; другая половина – всё, где ее нет, там всё уныние и темнота…
– Темнота и мрак, – повторил Пьер, – да, да, я понимаю это.
– Я не могу не любить света, я не виноват в этом. И я очень счастлив. Ты понимаешь меня? Я знаю, что ты рад за меня.
– Да, да, – подтверждал Пьер, умиленными и грустными глазами глядя на своего друга. Чем светлее представлялась ему судьба князя Андрея, тем мрачнее представлялась своя собственная.


Для женитьбы нужно было согласие отца, и для этого на другой день князь Андрей уехал к отцу.
Отец с наружным спокойствием, но внутренней злобой принял сообщение сына. Он не мог понять того, чтобы кто нибудь хотел изменять жизнь, вносить в нее что нибудь новое, когда жизнь для него уже кончалась. – «Дали бы только дожить так, как я хочу, а потом бы делали, что хотели», говорил себе старик. С сыном однако он употребил ту дипломацию, которую он употреблял в важных случаях. Приняв спокойный тон, он обсудил всё дело.