Первое поколение многоядерной архитектуры уже хорошо знакомо читателям по нашему циклу статей, посвященному двухъядерным процессорам Intel и AMD: и те и другие с технической точки зрения являются простым объединением на одном кристалле традиционной SMP-системы в миниатюре (два идентичных непересекающихся независимых ядра плюс, в случае AMD, обслуживающий ядра северный мост чипсета). Следующее поколение - это «существенно многоядерные» процессоры, в которых используется большой массив однотипных упрощенных ядер, объединенных общей логикой, интерфейсом шины и кэшем, - именно такое ядро (IBM Xenon) будет использовать в своих приставках Microsoft. Всего в Xenon три ядра, каждое из которых умеет работать с двумя программными потоками одновременно; причем ядра эти гиперконвейеризованы и лишены логики внеочередного исполнения команд, что упрощает их (одно ядро получается вдвое проще аналогичного ядра Intel Pentium 4 Prescott), позволяет работать на очень высокой (3,2 ГГц) частоте - но в то же время делает непригодным для целого ряда применений.
Out-of-Order execution и 'тупые блондинки' искусственного интеллекта
Внеочередное исполнение команд (Out-of-Order execution) означает, что процессор может переупорядочивать 'по своему вкусу' поток входных инструкций, при условии, что это не приведет к изменению результатов работы программы. Все современные x86-процессоры (и большинство RISC-) являются OoO-процессорами, а вот Xenon и Cell этой поддержки лишены: ее слишком сложно реализовывать в гиперконвейеризованных процессорах. Живой пример такой реализации - Pentium 4 - использует для этих целей весьма своеобразную систему 'реплея' (www.xbitlabs.com/articles/cpu/display/netburst-1.html), являющуюся, по мнению ряда экспертов, одной из главных причин высокого тепловыделения, огромной сложности и серьезных проблем с производительностью 'на мегагерц'. С другой стороны, отсутствие OoO мешает достигнуть высокой производительности при обращении к памяти (OoO-процессор может одновременно с поиском данных в кэше выполнять еще какие-то действия) и затрудняет проведение условных переходов. 'Упрощенный' не-OoO-процессор, встретив любую инструкцию перехода, загрузки или сохранения данных (а это частые гости в любом программном коде), вынужден приостанавливать выполнение текущей задачи до тех пор, пока не будет выполнена инструкция. Приплюсуйте сюда традиционные проблемы гиперконвейерной архитектуры (длиннющий конвейер, необходимый для того, чтобы достичь высоких тактовых частот), в которой любая подобного рода приостановка означает снижение скорости на данном участке кода в разы (!), - и вы поймете, что отсутствие OoO (которое, по некоторым наблюдениям, упрощает процессор в два-четыре раза) резко осложняет жизнь разработчикам, старающимся получить более или менее быстро работающий код. Фактически на Cell и Xenon быстро будут 'считаться' только всевозможные 'тяжелые' вычислительные спецэффекты, математические формулы (скажем, рэйтрейсинг сцены в реальном времени) да некоторые физические расчеты - и ничего больше! Все мы хорошо знаем, какие трудности испытывают в играх процессоры Pentium 4 (причем чем сложнее AI в игре, тем хуже ситуация), однако 'суперскалярные процессоры с упорядоченным выполнением команд' будут натыкаться на те же проблемы в удесятеренном масштабе (Pentium 4 зачастую верно 'угадывает' поведение программы в 'неприятных' для него местах; не-OoO-процессор спотыкается в таких местах всегда).
Так что же, все настолько печально и никакого толку от этих много-много-многогигагерцовых десятипоточных процессоров в играх не будет? Отнюдь. Например, 'незадействованные' ядра Cell или Xbox 360 могут блестяще заменить собой 'геометрические' блоки графических процессоров: все расчеты по вершинным шейдерам эти процессоры могут без заметных потерь производительности взять на себя. Есть даже предположения, что графический чип RSX в PlayStation 3 может и не иметь стандартных восьми вершинных конвейеров G70, а на их месте могут располагаться лишних 4-8 пиксельных конвейеров, которые при сохранении прежней себестоимости RSX значительно увеличат его производительность по сравнению с 'прародителем'. Кроме того, оказалось, что на Xenon и особенно на Cell очень удобно переложить и всю обработку объемного звука в играх. На этих процессорах неплохо считается игровая физика, воспроизводится и кодируется видео, осуществляется постпроцессинг в играх и рендеринг сцен без участия графического ускорителя. Но вот на 'AI следующего поколения' от Xenon и Cell можете даже не надеяться.
Sony (в альянсе с Toshiba и IBM) пошла еще дальше - оставив в процессоре лишь одно ядро «общего назначения» (как и в Xenon, гиперконвейеризованное, с упорядоченным выполнением инструкций и поддерживающее одновременную работу с двумя потоками данных) и добавив к нему аж восемь «ядрышек» - Synergetic Processing Elements, SPE, лишенных не только OoO-логики, но и таких «бесполезных» изобретений человечества, как MMU (Memory Management Unit, отвечает за реализацию механизмов виртуальной памяти), TLB (это кэш, используемый MMU) и… собственно кэшей вообще всех уровней. Фактически каждый SPE - это современный высокочастотный гиперконвейеризованный векторный аналог… 286-го процессора. Каждый такой SPE «изолирован» от внешней системы и может работать только со специальной «локальной» SRAM-памятью объемом 256 Кбайт, интегрированной в кристалл процессора. То, что находится за пределами этого «компьютера в миниатюре», со своим процессором и оперативной памятью, для SPE практически недоступно: все, что он может делать, - это отдельной специальной инструкцией пересылать, считывать или записывать данные в локальную память большими блоками либо работать в «потоковом» режиме, непрерывно принимая по шине данные, тут же выполняя над ними однотипную операцию и сразу же передавая данные обратно или другому SPE. Microsoft даже презрительно окрестила SPE разновидностью DSP-процессоров[Digital Signal Processors, специализированные программируемые микросхемы, предназначенные для выполнения над потоками данных одних и тех же операций], однако это утверждение весьма далеко от истины. SPE могут делать практически все, что угодно, причем стандартные алгоритмы написания хороших параллельных программ прекрасно ложатся на схему «один большой и главный процессор плюс много простых вспомогательных с локальной памятью»: если бы не пониженная «одинарная» (32-битная) точность вычислений с плавающей точкой, этот процессор ожидало бы большое будущее в научной сфере. Но для расчетов игровой физики и там, где высокая точность все равно не требуется (как в случае, например, рэйтрейсинга), Cell - процессор практически идеальный.
Cell - первый в мире процессор, который широко использует для своих целей оперативную память следующего поколения Rambus XDR с последовательной шиной передачи данных[Подробнее см. на offline.computerra.ru/2004/547/34190], работающей на полной частоте процессора - 3,2 ГГц. Контроллер памяти XDR интегрирован непосредственно в процессор Cell, всего поддерживается две 32-разрядные шины общей пропускной способностью 25,6 Гбайт/с - втрое-вчетверо выше, чем у самых быстрых процессоров Intel и AMD. Cell куда совершеннее даже такого шедевра компьютерной архитектуры, каким является AMD Athlon 64, поскольку объединяет в себе все положительные черты AMD’шной архитектуры (все-таки IBM и AMD - партнеры по разработке процессоров), на основе гораздо более высокопроизводительных (по сравнению с Hyper-Transport) последовательных интерфейсов RaSer от Rambus. Графический процессор подключается напрямую к Cell по шине с пропускной способностью 20 Гбайт/с в сторону Cell и 15 Гбайт/с в сторону GPU; а южный мост - по независимой шине с пропускной способностью 1,5 Гбайт/с. Это перекрывает достижения AMD по пиковой пропускной способности каналов ввода-вывода в полтора-четыре раза и делает оправданным применение в столь быстром графическом чипе, как RSX, технологии, аналогичной TurboCache (которую Nvidia использует в своих самых дешевых видеокартах) и позволяющей графическому процессору использовать в качестве видеопамяти обычную системную оперативную память.
***
Еще я бы отметил тщательно продуманные возможности для «неигрового» развлекательного применения PlayStation 3. Если видеовыход - то реализованный в виде двух портов цифрового интерфейса HDMI[См. «КТ» #541 (offline.computerra.ru/2004/541/33568) ], обеспечивающих с небольшим кабелем картинку вплоть до HDTV 1080p (самого «продвинутого» стандарта для видео высокого разрешения) и полноценный шестиканальный звук (декодируемый одним из SPE Cell). Если оптический привод - так для Blu-Ray-дисков (BD-ROM), что дает не только практически неограниченное пространство для записи сегодняшних и будущих игр, но и отличную возможность для использования PlayStation 3 в качестве BD-плейера. Благо мощности Cell хватает для одновременного декодирования аж двенадцати видеопотоков HDTV, сжатых кодеком H.264. Интегрированная сеть - уже упоминавшиеся три порта Gigabit Ethernet, причем PlayStation 3 может для них, а также для интегрированного WiFi стандарта 802.11b/g выступать роутером. Этого как раз хватает, чтобы подключить PS3 к Интернету посредством домовой сети, подключить к локальной домашней сети через PlayStation «большой» домашний компьютер и ноутбук, а заодно обеспечить быструю беспроводную сеть. По уже упоминавшемуся HDMI к PS3 можно подключить цифровую видеокамеру и сохранить отснятый материал на встроенный 2,5-дюймовый жесткий диск (правда, сам диск придется покупать отдельно); используя встроенный кардридер - посмотреть и сохранить отснятые любым фотоаппаратом снимки (SD, CF и MemoryStick практически исчерпывают спектр используемых карт памяти). Интегрированный Bluetooth позволит использовать совместно с PS3 стандартные устройства (например, обычные телефонные гарнитуры) и наоборот - использовать устройства для PlayStation 3 не только с самой приставкой. А заодно - легко синхронизировать с PS3 современные КПК и телефоны. Ну и, наконец, шести портов USB 2.0 за глаза хватит для подключения любых манипуляторов (джойстиков, мыши, клавиатуры) и флэшек. Не правда ли, приставка стоит своих 500 долларов?