Почему для PS4 нужен был именно Jaguar?

Лет пять назад, когда выбор гибридного процессора от ком­па­нии AMD для иг­ро­вой кон­со­ли So­ny Play­sta­tion 4 (PS4) ока­зал­ся сюр­при­зом, ана­лиз ар­хи­тек­тур­ных под­роб­но­стей по­лу­за­каз­но­го чи­па на вось­ми энер­го­эф­фек­тив­ных яд­рах Jaguar был оку­тан сек­рет­но­стью. Се­год­ня пос­ле бо­лее, чем уда­ч­но­го за­пус­ка чер­но-зе­ле­но-ко­рич­не­вы­ми се­мей­ства Sum­­mit Rid­­ge на ар­хи­тек­ту­ре Zen за­ве­сы мно­гих тайн слег­ка при­спу­ще­ны. Срав­ни­вая фун­к­ци­о­наль­ные воз­мож­нос­ти про­цес­со­ров AMD мож­но до­га­дать­ся о при­чи­нах столь не­о­жиданного выбора.

Как следует из презентации «AMD Ryzen CPU Optimization» сотрудников компании Кена Митчела (Ken Mit­chell) и Эл­ли­о­та Ки­ма (Elliot Kim), эволюция набора инструкций, им­пле­мен­ти­ро­ван­ных в про­цес­со­ры AMD на про­тя­же­нии по­след­них вось­ми лет не может быть представлена восходящей кривой. Появление се­мей­ст­ва Kabini, к ко­то­ро­му от­но­сят­ся и яд­ра Jaguar, используемые в Sony PlayStation 4, стало тестовым по­ли­го­ном для об­кат­ки новых тех­но­ло­гий, по­я­вив­ших­ся толь­ко в текущем году.

Появление семейства Kabini, к которому относятся и ядра Jaguar, используемые в Sony PlayStation 4, стало тестовым полигоном для обкатки новых технологий, появившихся только в текущем году

 

Даже беглый взгляд на слайд презентации позволяет увидеть, что гибридные процессоры Jaguar опередили свое вре­мя. В част­нос­ти, за счет внедрения следующих ассемблерных команд:

  • MOVBE (Move Big Endian) — пересылка с изменением порядка байтов, у Intel младший байт располагается в памяти по меньшему адресу (little endian), у некоторых других архитектур (игровые приставки не исключение!) старший байт располагается в памяти по меньшему адресу (big endian). Инструкция MOVBE позволяет вы­пол­нить конвертирование за одну инструкцию, совместив его с пересылкой, то есть быстро и просто.
  • XSAVEOPT (XSAVE Optional) — позволяет организовать сохранение и восстановление состояния процессора (например при переключении задач) с опциональным выбором элементов, которые требуется сохранить.
  • BMI (Bit Manipulation Instructions) — операции с единичными битами и битовыми полями. Особенно удобны при работе с битовыми полями, размер и позиция которых внутри регистров не кратны 8 а потому такие поля сложно обрабатывать обычными инструкциями.
  • F16C (Half-Precision Conversion — инструкции этой группы позволяют выполнять преобразование в формат половинной точности и обратно. Этот формат использует 16 бит на число с плавающей точкой, применяется когда скорость и компактность важнее точности.
Sony PlayStation 4

 

Особо стоит отметить, что инструкция XSAVEOPT стала дальнейшим развитием идеи XSAVE, используемой для со­хра­не­ния процессорного контекста при переключении задач в многозадачной среде. Она ори­ен­ти­ро­ва­на на до­сти­же­ние вы­со­кой производительности за счет исключения сохранения и вос­ста­нов­ле­ния таких эле­мен­тов кон­тек­с­та, со­хра­не­ни­ем которых можно пренебречь. Это происходит в таких слу­ча­ях, когда со­сто­я­ние не­ко­то­рых ре­гист­ров пре­ры­ва­ю­щая за­да­ча не изменяет.

Архитектура гибридного процессора AMD Jaguar из семейства Kabini

 

Согласно документации, XSAVEOPT — это Performance-Optimized версия XSAVE. Кроме избирательного со­хра­не­ния кон­тек­с­та, допускается иное (Implementation-Specific) различие между XSAVE и XSAVEOPT. Из это­го сле­ду­ет, что ин­ст­рук­ция XSAVEOPT позволяет организовать выборочное сохранение-восстановление за­дан­но­го под­мно­же­ства эле­мен­тов контекста процессора. Программист, зная, какие эле­мен­ты контекста ис­ка­жа­ет пре­ры­ва­ю­щая про­це­ду­ра, мо­жет за­дать с помощью маски сохранение только некоторых регистров. Не сле­ду­ет считать, что такой подход пол­но­стью ре­ша­ет проблему наличия «лишних операций» при ап­па­рат­ном со­хра­не­нии и вос­ста­нов­ле­нии контекста. Мас­ка по­зво­ля­ет выбрать только группу регистров, на­при­мер:

  • 0 = не сохранять все регистры SSE
  • 1 = сохранять все регистры SSE

В то время как программное решение позволяет действовать с точностью до регистра, например сохранить XMM0, XMM1 и не сохранять XMM2-XMM15.

Резюме

К сожалению, в процессоре Jaguar не была реализована инструкция RDSEED, которая, как и ранее пред­ло­жен­ная ко­ман­да RDRAND, генерирует случайное число, но в отличие от RDRAND для любой пары по­сле­до­ва­тель­но сге­не­ри­ро­ван­ных слу­чай­ных чи­сел, гарантирует, что каждое из них получено из аналогового ис­точ­ни­ка эн­тро­пии (non-de­­ter­­mi­­ni­s­tic).

Также пока остался открытым вопрос про эффективность реализации 256-битных вычислений, а равно их эму­ля­цию инструкциями меньшей разрядности. Тем не менее, по результатам анализа эволюции про­цес­сор­ных ко­манд на­пра­ши­ва­ет­ся прогноз и на комплектацию следующей игровой приставки от Sony. Бу­дет ли Play­Station 5 ис­поль­зо­вать ги­б­рид­ную архитектуру AMD покажет время.