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

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

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

Как следует из презентации «AMD Ryzen CPU Optimization» сотрудников компании Кена Митчела (Ken Mitchell) и Эллиота Кима (Elliot Kim), эволюция набора инструкций, имплементированных в про­цес­со­ры AMD на протяжении последних восьми лет не может быть представлена восходящей кривой. Появление се­мей­ст­ва 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­stic).

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