Архитектура AMD K10 или гадания на кофейной гущи


АРХИТЕКТУРА AMD К10
ИЛИ ГАДАНИЯ НА КОФЕЙНОЙ ГУЩИ


Первые размышления о новой архитектуре процессора AMD у меня возникли после прочтения статьи в журнале «Компьютерра» за 11.10.2005 под названием «Архитектура CPU».На последней
врезки этой статьи были описаны некоторые предположительные характеристики нового процессора К9 , в принципе данные приведённые в первой части врезки, хорошо соотносились с моим представлением о будущем процессоре, вторая же часть, при попытке хоть как то присовокупить к первой, ни коем образом не подходила. Вот примерное описание К9 в моей интерпретации :
1. К9 полностью базируется на ядре К8
2. Ширина линии увеличена до 5 конвейеров (в К8 линия из 3-х конвейеров)
3. В свете последних веяний естественно двухядерным
4. Увеличение стадий в конвеере до 15-20
5. Декодер может выдавать до 5-и инструкций за такт
Возможно в первом варианте К9 был одноядерным и вот почему, вспомните с каким процессором, а точнее с каким ядром, должен был конкурировать К8 в 2005 году, название ему Tejas , а тактовая частота должна была составить свыше 5 ГГц. Посмотрите результаты тестов разогнанных Р4 до 5 ГГц и сравните с любым Athlon64 FX-57 или FX-60 на номинальной частоте и это сравнение не в пользу Athlon64, а с учётом, что ядро Tejas должно было ринуться и дальше шансов у К8 не было.
Следующий раунд моих размышлений состоялся уже в декабре 2005, к тому времени у меня появился доступ в Интернет и в моём распоряжении оказались несколько заметок относительно нового процессора AMD. Очень коротко о том, что мне удалось узнать:
1. По поводу некой возможности будущего процессора, когда одно ядро может перебрасывать часть микроопераций другому ядру, в AMD заявили, что они изучают подобную технологию, мало того выдали на гора пару цифр, ядро увеличиться на 50% при этом производительность увеличиться на 85% ( правда не уточнялось по отношению к какому процессору одно или двухядерному применимы эти цифры)
2. По заявлению представителей AMD будущий процессор будет блочной архитектуры
3. В будущем AMD собирается ввести новую парадигму сравнения процессоров, а именно к интеловскому производительность + ватт добавят деньги и всё будет выглядеть так производительность + ватт + деньги
Давайте посмотрим можно ли всю новую информацию как то приложить к нашему новому процессору, тому который я описал выше и начнём не с первого пункта, а с третьего, для лучшего понимания проблематики
После первого прочтения статьи, а это был краткий перевод брифинга с новым техническим директором AMD Филом Хестером в принципе всё не плохо соотносилось с новым процессором , который я себе представлял, а на новый способ сравнения процессоров я смотрел как на обычный рекламный ход, вроде как из вашего суперпопугая мы вырастим гиперпопугай. Хотя как раз этот гиперпопугай мне не давал покоя и после не продолжительных размышлений всё таки удалось сравнить эффективность процессора. Представьте некую программу которая на 50% хорошо распараллелилась, а другие 50% ну не как, так и осталась однопоточной. Посмотрим как
будет вести себя наш двухядерный процессор на этой программе. Первый кусок кода процессор проглотит с максимальным темпом, загрузив при этом оба ядра, а на втором будет работать только одно ядро, вообщем это понятно всем, а вот теперь разделите сумму денег, затраченную на приобретение процессора, на количество транзисторов в вашем процессоре и посмотрите сколько этих самых транзисторов будет работать в нашей гипотетической программе. После решения этой задачи оказывается, что если процессор стоил для вас 500$, то эффективная стоимость вашего процессора в конкретном приложении равна всего 375$ и чем хуже программы, которые вы применяете, распараллелены, тем ниже будет эффективная стоимость вашего процессора. Кстати в таком случаи одноядерный процессор будет всегда эффективней многоядерного, просто потому что в любых программах, будь то однопоточные или многопоточные, он будет загружен на все сто. Таким образом мерить новые многоядерные процессоры подобным способом будет не выгодно, к слову сказать непонятно, а как Интел собирается измерять своим суперпопугаем, ведь по соотношению производительность + ватт мобильные процессоры порой будут выглядеть лучше своих “настольныx" визави, но при этом могут выдавать худшие результаты по чистой производительности.
Вот тут мне вспомнилась интересная особенность (пункт 1), которая может быть в новом процессоре, а именно возможность переброски микроинструкций из одного ядра в другое. Здесь возникает ряд вопросов:
1. Что бы появилось возможность переброски хотя бы одной микроинструкции, в одном из ядер после декодирования должна появиться как бы “лишняя” микрооперация, то есть декодер ядра должен выдавать на гора больше микроинструкции, чем могут проглотить исполнительные устройства этого ядра.
2. Как процессор будет разруливать ситуацию когда оба ядра выдадут одновременно такие “лишние“ микроинструкции.
3. С какой скоростью будет переброшены микроинструкции из одного ядра в другое, точнее с какими задержками.
Если по первым двум пунктам ещё можно что то придумать, то с последним полная не увязка.
Что бы перебросить микроинструкцию с начало на обработку в соседнее ядро нужно как минимум один такт, так ведь ещё необходимо вернуть результаты вычислений обратно для проверки правильности этих самых результатов, вот вам ещё один такт. В итоге получается два такт, да за эти два такта на одном ядре можно просчитать не только эту микроинструкцию но ещё несколько, при этом без всякого рода дополнительных диспетчеров, дополнительных шин. Короче и этот пункт пришлось выбросить.
Остался третий пункт (по счёту второй) утверждение функционеров AMD по поводу блочной архитектуре будущего процессора. Это утверждение ни как не вяжется с монолитной структурой К8, у него даже управляющая логика работает не с отдельной микроинструкцией, а с макроинструкцией, состоящей в свою очередь из трёх микроинструкций. Вообщем всё действительно новое, что узнал о будущем процессоре ни как не подходило к тому процессору который я себе представлял.
Следующую порцию информации о строении микропроцессоров хотя и не имеющего ни какого отношения к процессорам AMD я почерпнул из статьи Павла Болотова “Alpha:история в фактах и комментариях” опубликованной на сайте ФЦентра. В процессе прочтения этой интереснейшей статьи, в особенности той части где были описания внутреннего устройства Alpha, мне всё чаще стали приходить мысли о том, как же эти два процессора Alpha и Athlon похоже в своём развитии и отчасти в строении. Сравните хотя бы EV6 и К7, нет я не хочу сказать что они одинаковы, вычислительные ядра этих процессоров уникальны просто потому, что эти процессоры относятся к разным программным архитектурам, но посмотрите хотя бы устройство кеша первого уровня или на взаимоотношения между кешами первого и второго уровней, а про шину и говорить не приходится она была лицензирована AMD у DEC. Далее в исторической хронологии EV7 и K8, посмотрите, каким образом получились эти два процессора, у обоих само вычислительное ядро модернизировалось не значительно, зато у обоих появились встроенные контролёры памяти, дополнительные шины и коммутаторы, вся разница в позиционировании этих процессоров, один чисто серверный, другой массовый. Поэтому будущее развитие процессоров AMD я начал искать в истории развитии Alpha, но там была только Alpha EV8 и её развитие мало подходило к тому, что я себе представлял на тот момент, вообщем опять тупик.
Февраль и почть весь март у меня не работал компьютер, доступ к интернету был весьма ограничен и вот как то одним мартовским днём набираю в поиковике фразу “Архитектура К9” и почти по первой же ссылка вижу вот этот текст, копирую без изменение, единственное все пункты пронумеровал.


Можете расценивать эту информацию как фэйк или сказочку на ночь, можете вообще не принимать всерьез – все равно это не более чем отдаленные слухи и в достоверности информации ручаться никто не будет.
Однако, если вам не все равно, можете все же почитать, что поговаривают о технологических особенностях процессоров AMD следующего поколения – то бишь, K9.
Итак, очередная порция предварительных данных/слухов:

1. По всей видимости, K9 будет содержать встроенный контроллер памяти DDR II
2. В процессоре будет реализовано спекулятивное декодирование ветвлений (до 8-ми ветвлений). Кроме того, видимо, будет некий "кэш состояний" для быстрого отката назад в случае неправильно предсказанного ветвления...
3. Предположительно, в процессоре будет” х87 блока, три блока SSE2 и три блока ALU. При этом, декодеры смогут "упаковывать" их в группы по трое (FPU + SSE2 + ALU) для достижения максимальной производительности.
4. Возможно, в процессоре K9 будет использоваться старый патент AMD, описывающий способ упаковки кристалла с интегрированным в крышку элементом Пельте
5. Не исключено, что в процессоре будет несколько буферов – что-то вроде кэша L0. Например, такой буфер размером 4 Кб будет расположен перед и после FPU. Задача - сделать работу FPU (SSE2, 3DNow) по возможности непрерывной
6. Не исключено. что К9 будет поддерживать кэш третьего уровня. Задача данного кэша - хранить код с комментариями. То есть, процессор при загрузке данных позволит декодеру "распоряжаться" прямо в кэше третьего уровня, расставляя комментарии непосредственно в специальных полях
7. По неподтвержденным данным, длина конвейера - 15 стадий ALU, 20 стадий FPU
8. Возможно, что I-cache и декодер будут работать на удвоенной скорости
9. Говорят, что AMD рассматривает идею разместить кэш L3 на кристалле, с применением памяти 1T-SRAM.
10. По поводу Hyper Transport II - вроде бы, будет использоваться что-то похожее на Octal Data Rate (Yellowstone). Ожидаемая частота несущей - около 1 ГГц. Результирующая пропускная способность одной шины - порядка 25 Гб/с при конфигурации 16 х 16.
11. Протокол межпроцессорного взаимодействия (ныне MOESI) будет дополнен и улучшен
12.Поговаривают, что благодаря сверхбыстрой межпроцессорной шине, у К9 будет интереснейшая возможность: два процессора смогут делиться друг с другом свободными исполнительными блоками. К примеру, в одном сильно нагружено FPU, во втором оно простаивает: второй процессор сможет получать задания от декодера первого процессора

Хотя эта заметка и датирована 24.04.2003, но кое что из неё почерпнуть всё же можно. И так начнём.
Первые два пункта пока особого интереса не представляют, а вот третьи пункт интересен, в особенности вот этим “ 3 (!) полноценных”, что мы знаем о блоке х87 в Athlon64, он состоит из трёх исполнительных узкоспециализированных устройств, при этом таких блоков 3, так же 3 ALU, про
блок SSE2 вопрос спорный, вам ни чего это не напоминает , это полные наборы исполнительных
устройств трёх К8 , при этом сюда не плохо подходит пункт 5 , как раз именно таким вычислительным блокам, больше напоминающий почти целые процессоры и будут нужны такие кеши, здесь мне вдруг вспомнилось внутреннее устройство Alpha EV6 с её кластерами . Возникает вопрос, что же за декодер будет в таком процессоре, ведь ему (декодеру) нужно за один такт выдавать аж целых девять микроинструкций. Понятно, что даже 32 битная выборка такой декодер не спасёт , да и эффективность такого устройства сомнительна, вот именно сейчас и посмотрите на пункт 8, зачем делать сверхсложный декодер когда, его можно слегка расширить и запустить на более высокой частоте относительно частоты исполнительных устройств. Вот и по тихоньку начел вырисовывается наш новый процессор. Посмотрим теперь на пункт 12, ту интересную особенность про которую пишут многие источники, как раз именно в таком процессоре такую возможность и можно применить, так как у этого процессора единая управляющая логика и ни каких вам шин не нужно, кстати в одной из заметок промелькнуло название этой технологии, не знаю как она звучит на английском но на русском это так “кластерная мультитрейдовасть” если не ошибаюсь. По всей видимость это что то среднее между «мультипроцессирование на уровне микросхем»(CMP) ( IBM, AMD,Intel и ряд других компаний её применяют сейчас) , Hyper-Threading и являеться реализацией технологии SMT — Simultaneous Multi-Threading от DEC только для х86 совместимых процессоров, архитектура которых изначально не была заточена под такую технологию в отличии от Alpha в которой видимо изначально, с самых первых процессоров, залаживалась такая способность. При чём вы спросите здесь
Hyper-Threading , а вот при чём в один из кластеров можно будет помещать микроинструкции от разных трейдов в любом случаи проверять и слаживать во едино будет одно устройство некий глобальный диспетчер. Сейчас предлагаю повнимательней прочитать пункт 2, ведь наш гипотетический процессор всё больше становится похож на Р4 то есть на длинноконвеерный процессор, а одним из слабых мест Р4 был как раз его длинный конвейер и всё что связано с этим ,тот же механизм реплея. Избежать не правильных предсказаний ветвлений, как раз и призван механизм из пункта 2, тем более у нас есть единый механизм управления и масса исполнительный устройств, парой другой которых можно и пожертвовать ради того, что бы в конце вычислений мы гарантированно получили правильный результат.
Давайте рассмотрим работу процессора с самого начала. Процесс предекодирования начинается как и
в К8 с кеш L2 , где при перемещении в L1 инструкции тегируються, при этом к привычным тегам будут добавлены теги принадлежности к трейду, видимо до трёх трейдов. Декодер, работающий на удвоенной частоте относительно вычислительных кластеров, за один такт выбирает блок инструкций,
размер блока сказать не могу возможно он останется как в К8 равный 16 байт, в любом случаи на выходе из декодера получается до пяти внутренних микрокоманд, при этом в случаи попадания инструкции ветвления декодер запустит процесс декодирования по всем ветвям, до 8-ми ветвлений. Состав декодера может бы разным, хотя вероятней всего добавятся блоки DirectPath или DirectPath Double.В конце описания декодера нужно заметить, что функции упаковывания микроинструкций в одну линию, как это было в К8, не будет. Дальше микроинструкций попадают в кеш-буфер. Кеш-буфер возможно будет называться кеш L1. Его размер в принципе может быть не большим, главной особенностью данного кеша должна быть полная ассоциативность, одно из задач этого буфера нивелировать проседания декодера в различных ситуациях, вспомните хотя бы про инструкцию null в
К8 да и в К7, которая применяется при невозможности декодеров заполнить линию рабочими инструкциями. Следующей задачей данного кеша является сбор как можно больше декодированных инструкций дабы планировщик имел более полное представление о задаче с которой он работает, ведь ему (диспетчеру) в идеальном случаи придётся вывести линию из девяти микроинструкций на один трейд, распределив микрооперации по кластерам. Переходим к диспечеру-планировщику, по его
структуре сказать практически не чего, описаний подобных устройств я не нашел, в статьях про единственного представителя процессоров с подобной функциональностью Alpha EV8, это устройство как правело не рассматривалось. По этому рассмотрим только функции которые он может выполнять. Первое выборка из кеш-буфера, второе генерирование макроинструкцией, до трёх, каждая микроинструкция будет состоять из трёх микроопераций как в К8. Дальше макроинструкции поступают в устройство сильно напоминающее Instructions Control Unit (ICU), я его поместил в тот же блок “Диспечер-планировщик” хотя он может быть и выделен в отдельный блок. Данный блок будет отличатся от блока в К8 лишь в тем, что в К8 этот блок работает в один такт только с одной макроинструкцией, а наш блок будет работать с тремя макроинструкциями, кстати этот же блок в последствии будет проводить проверку на правильность результатов вычислений. Так же как и в К8 в
этом блоке будет накапливаться очередь состоящая из трёх макроинструкцией в одном ряду. Дальше эти макроинструкции по три за один такт передаются кластерам, в каждый кластер по одной макроинструкции. Дальнейшая работа над макроинструкциями будет сильно напоминать на работу в К8 начиная с блока ICU, единственное, логика блока ICU в кластере будет упрощена, там не будет проверки результатов вычислений, которую выполняет блок ICU “Диспечера-планировщика”. Возможно блок ICU в кластере сможет ещё раз переупорядочивать макроинструкции в очереди, дабы увеличить темп загрузки своих исполнительных устройств. Так же в каждом кластере будут присутствовать кеш L0 одна из возможных задач которого состоит в том, что бы сохранять копии инструкций до полной отставки, эти копии потребуются в том случаи если например данные необходимые для вычислений не успели прибыть к исполнительному устройству или не правильно было сделано предсказание перехода, вообщем этот кеш может заменить собой систему реплея в Р4, в тоже время он будет выполнять свои прямые обязанности. Какова система отставки копий микроинструкций из L0 потерявших свою актуальность сказать не могу, возможно такие копии хранится не будут, в любом случаи для нашего длинноконвеерного процессора необходима система, работа которой напоминала реплей в Р4, хотя имея сверхскоростной декодер и систему экстренной переброски микроинструкции в ICU “Диспечера-планировщика” можно обойтись и этим, тем более логика рабаты самого процессора будет отличаться не значительно от К8. Вот собственно и всё что касается работы процессора. Организации кеше и их взаимодействия внятно представить не получилась, хотя возможно именно из-за неординарности организации кеше и введут улучшенный протокол когерентности (пункт 11).
Для демонстрации ,как будет работать подобный процессор предлагаю просмотреть статью на сайте http://www.toms-hardware.ru под названием “Заглядываем в будущее : тестирование ПК с тремя физическими ядрами” , спросите, как увидеть результаты нашего процессора, да очень просто в любом тесте выбираете лучшей это и будут результаты нашего процессора, грубо говоря нашему процессору наплевать с каким приложением работать с одно или многотрейдовыми в любом случаи загрузка процессора будет блеска к максимальной, ведь у нас одно ядро, пускай и с логической многоядерностью, а не два или четыре реальных процессора с собственной логикой управления на ядро, хочу так же добавить что те объяснения которые даёт автор этому странному тестированию, не выдерживают не какой критики, так как три ядра в нынешний техпроцесс если и войдут то для AMD будут не посильной ношей у неё и так не хватает производственных мощностей, а тут такой монстр. Если же говорить о будущем техпроцессе то там в легкую вмещаются четыре ядра, что AMD нам всем продемонстрирует в начале 2007 года. Здаётся мне что всезнающие господа с toms-hardware могли получить некую информацию о будущем процессоре AMD и что он может быть трёх ядерным .
В заключении хочу сказать, что я не открыл Америки просто из тех сведений которые я получил из разных источников у меня получился вот такой процессор, кстати логика работы внутри блоков может быть совершенно другой, главное сама концепция процессора. Именно такой процессор идеально подходит и к заявленной блочности, и к новой парадигме измерения, в ближайшее время, которую хочет ввести AMD, и к многотрейдовым вычислениям которые нам навязывают, в особенности Intel. Вообщем, я бы с большим удовольствием в свой системник поставил, именно такой процессор, а не тупой двух и тем более четырёх ядерный процессор, а вы только представьте, какие возможности у такого процессора в плане энергосбережения, с его возможностью отключения целых кластеров, варьированием частот разных блоков, это же вообще какая то сказка.
P.S. Больно не хочется верить в то, что AMD на протяжении пяти с лишнем лет, если считать с даты выхода К8, занималась тем что расширяла свой нынешний процессор пусть и двухядерный, ведь Intel для подобного потребовалось всего каких то два года
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал

Возможно вас заинтересует

Популярные новости

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