close
Без категория

Новият процесор на AMD – Ryzen 7 1800X

1800x

Този път AMD не са се старали да правят предвиждания за бъдещото развитие на технологиите и да изграждат архитектурата си спрямо него, а са се съсредоточили върху „сега“ – какво е нужно за да работят нещата добре сега и как да се постигне. За разлика от експерименталният Bulldozer, Zen е „класическа“ архитектура, насочена към постигане на максимална еднонишкова производителност, като за първи път компанията използва SMT – simultaneous multithreading, за да подобри многонишковата ефективност, като процесорното ядро поддържа работа на два инструкционни потока едновременно. В много отношения Zen е близък до *Bridge архитектурите на Intel, естествено със свой поглед над нещата.

fig2

Фронтендът на ядрото при x86 процесорите един от основните проблеми за постигнето на максимална енергоефективност, тъй като именно той се грижи за транслирането на х86/х86-64 командите във вътрешни RISC-подобни микрооперации. Задача, която при конкурентните RISC процесори не се налага да се изпълняват. От ефективността на тази част зависи в доста голяма степен и ефективността на процесора като цяло. Zen разполага с 4 декодера, подобно на моделите на Intel от SandyBridge насам, както и подобно на оригиналниа Bulldozer и наследника му Vishera. Макар и това да изглежда като отстъпление на фона на 2х3-те декодера във Steamroller, всъщност съобразно целите на процесора това е адекватно решение. Декодерите могат да взимат инструкции и от двете нишки едновременно, като резултатът от работата е диспечерирането на до 8 микрооперации на такт към опашка за микрооперации (MicroOp Queue) с размер 72 записа. Типичната стойност обаче е 4 микрооперации на такт, тъй като повечето х86 инструкции се декодират до 1 микрооперация, малка част от тях се декодират в 2, а за останaлите сложни инструкции, които се декодират в повече микрооперации се грижи микрокод, който отново може да генерира до 4 операции за такт. Декодерите се поддържат от 64 КБ инструкционен кеш с 4-кратна асоциативност, както и от два отделни блока за предсказване на разклонения (по един за нишка), които би трябвало да са със значително подобрена ефективност спрямо тези в по-старите модели на компанията.

Голямата разлика обаче е в наличието на отделен кеш за микрооперации, които съдържа скорошно декодирани такива, които се очаква да се използват отново. Това е особено полезно при изпълняването на различни цикли в програмата, а и на всякакъв код с често повторение на операции. Когато преведените инструкции могат да се извелкат от този кеш, декодерите се изключват, което води до сериозно намаляване на консумацията.

От опашката за микрооперации се подават по 6 операции за такт към буфера за завършване (retirement buffer), в който се изпълнява преподреждането и преименуването на микрооперациите и регистири или другояче казано – цялата „магия“ на непоредното изпълнение. Размерът на буфера е 192 операции, което е значително повече от 128-те в Bulldozer и е на нивото на Broadwell архитектурата на Intel, но изостава от 224-те в Skylake. Заедно с това този буфер може да приключи до 8 операции на такт.

Оттук нататък почват големите разлики както в сравнение с архитектурата на Интел, така и в сравнение предишните няколко поколения на AMD. При архитектурата на Intel инструкциите се разпределят към съответно 5 (Sandy-/Ivybridge) или 7 (от Хасуел нататък) порта, към които са закачени както целочислени, така и блокове с плаваща запетея. При Zen, както и всички архитектури на AMD поне от K7 насам, инстуркциите се разпределят поотделно към целочислените блокове и блоковете с плаваща запетая, които имат отделни диспечери. За разлика от Bulldozer, Zen има само един целочислен клъстер, а не 2, който разполага с общо 168 регистъра, срещу 2 х 96 за по-старата архитектура. Целочисленият клъстер разполага с общо 6 порта, към които са свързани 4 АЛУ (аритметико-логически устройства) и 2 АГУ(адресогенериращи устройства). За сравнение всеки от двата клъстера на Булдозер разполага с по 4 порта, към 2 АЛУ и 2 АГУ. В това отношение Zen е приблизително еквивалентен на 1,5 клъстера на по-стария модел. Диспечерите на всеки порт поддържат до 14 инструкции (срещу 10 в BD).

fig5

Всички АЛУ могат да изпълняват прости аритметически и логически операции, както и премествания на битове. 2 от тях могат да обработват разклонения и само едно от тях може да изпълнява умножение и едно – деление. Двете разклонения могат да са както от 2 различни нишки, така и от една и съща нишка. Архитектурите на Intel след Haswell също могат да обработват по 2 разклонения, но при тях единият порт обслужва целочислени, а другият – с плаваща запетая.

Zen може поддържа до 72 заявки за зареждане от паметта и до 44 заявки за съхраняване в паметта, като опашката за заявки е единствената която е статично поделена между двете нишки (по 22 на нишка). Поддържа се преподреждане както на заявките за зареждане, така и на тези за съхранение. Инструкциите за работа с паметта могат да бъдат подавани към произволен от двата диспечера, свързани с АГУ. На този фон Hasell поддържа съответно 72 и 42 операции към паметта, а Skylake 72 и 56, а Bulldozer 42/24.

Частта с плаваща запетая на процесора се управлява от 2 опашки с по 96 елемента, като само една от тях подава инструкции към модулите, докато другата се използва само за съхранение на операциите, докато не се освободи място за тях в другата. Тези опашки се захранват с по 4 инструкции на такт, като и могат да разпределят също до 4 инструкции на такт. Блокът с плаваща запетая разполага с общо 4 отделни векторни блока, като те включват 2 FMA блока, които могат да изпълняват както уможение и събиране по отделно, така и слято умножение със събиране. Другите два блока могат да изпълняват само събиране. Особеното в случая е, че при работа с FMА инструкции, двата блока за събиране спират да работят, защото всеки от векторните АЛУ разполага с по 2 порта за четене. FMA е 3-операндна инструкция, съответно има нужда от 3 порта за да бъде изпълнена за един такт. При това положение FMA блока ползва един от портовете на блока за събиране, поради което и последния не може да изпълнява отделни инструкции. Освен тези блокове към портовете са закачени още и едно АГУ, което е заето само със изпъкнение на инструкции за съхранение на данните и 2 блока за AES криптиране. Общо налични са 160 регистъра, което е по-малко от 176-те в Pilderiver архитектурата на AMD.

Отличителна особеност на блоковете с плаваща запетая на Zen е, че те са 128-битови. Архитектурата поддържа изпълнение на 256-битови AVX и AVX2 инструкции, но те (и свързаните с тях операции с паметта) се декодират в 2 отделни 128-битови инструкции. Подобно беше поведението и на по-старата архитектура Bulldozer, но там имахме само 2 броя FMA 128-битови блока. За сравнение от Haswell нататък архитектурите на Intel разполагат също с по 2 FMA блока, но те са 256-битови и могат да обработва по една цяла 256-битова AVX/2 инструкция за такт. В това отношение решението на AMD предлага доста повече гъвкавост, тъй като далеч не във всички ситуации може да се ползва FMA, а заедно с това все още има страшно много SSE/2/3 код, който 128-битов. В този смисъл Zen губи като максимална пикова произоводителност (2х128-бита FMA, срещу 2х256-бита FMA), но за сметка на това в по-старият код, както и в смесения код, не използващ FMA) би следвало да се представя сравнимо или по-добре.


източник: http://hardwarebg.com

Tags : am4amdryzenzenпроцесор