Читаем Журнал «Компьютерра» №38 полностью

По меркам же дня сегодняшнего Cell вызывает интерес своей необычностью и потрясающей футуристичностью: девять ядер, из которых одно главное, а восемь - вспомогательные; сумасшедшей пропускной способности интерфейсы и оперативная память Rambus; тактовая частота под три гигагерца. Но новизна процессора не в этом (вернее, не только в этом). Cell - это еще и попытка значительно пересмотреть существующие парадигмы программирования.

Cell в переводе на русский - ячейка. В концепции Cell существуют аппаратные и программные ячейки. Аппаратная ячейка - любой процессор, способный выполнять программные ячейки и связанный с другими процессорами. Программная ячейка - это данные, либо особая программа (apulet), описывающая, как следует обрабатывать данные. В идеале нет никаких самостоятельно существующих программ, нет процессоров и компьютеров. Есть только данные, код, который их обрабатывает, и абстрактная аппаратура, обеспечивающая существование того и другого. Не поняли? Смотрите: пусть у нас есть, например, передаваемый по Сети видеопоток.

Что такое видеопоток? На программном уровне это последовательность фреймов - небольших блоков данных, описывающих маленький кусочек (скажем, 0,1 с) видео или звуковой дорожки. В терминах Cell - поток ячеек, содержащих данные разного типа. Его воспроизведение можно представить как результат выполнения некоторой большой программы, с исходными данными в виде этого потока, а можно - как процесс многократного преобразования ячеек с данными, в ходе которого ячейки одного типа (например, сжатый звук) превращаются в ячейки другого типа (несжатый звук) маленькими программками (апулетами). Обычно все эти превращения запрятаны глубоко в некую всеобъемлющую программу, которая копирует поступающие данные в оперативную память, поочередно обрабатывает их разными алгоритмами и старается распределить обработку по нескольким процессорам. Идея Cell состоит в том, что вместо этой программно-ориентированной модели мы берем более естественную, ориентированную на данные модель декодирования видеопотока и сводим написание видеопроигрывателя к написанию инструкций типа «чтобы воспроизвести видеотрансляцию, нужно подключиться по такому-то адресу в Сети к источнику ячеек, преобразовать поступающий поток в поток ячеек со сжатым видео и сжатым звуком, преобразовать сжатый звук в несжатый, сжатое видео в несжатое, обработать несжатый звук эквалайзером и эффект-процессором, а к несжатому видео применить деинтерлейсинг, подогнать получившуюся картинку к размерам экрана, скорректировать яркость, насыщенность и контрастность и воспроизвести получившиеся аудио- и видеопотоки». Вот это и есть программа для Cell! В ней даже нет инструкций, указывающих, как делать все вышеописанное, - за «подробностями» Cell-устройство обращается к библиотеке алгоритмов, причем каждый алгоритм (апулет) - это тоже ячейка, которую, к примеру, можно на лету скачать из Сети с того же самого источника видеотрансляции. А какое железо и какая операционная система обеспечивает этот процесс с точки зрения Cell-программиста (фактически автора алгоритмов и описаний, подобных вышеприведенному), пользователя и главных действующих лиц - данных и апулетов, - совершенно неважно.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже