Чтение онлайн

на главную

Жанры

Журнал «Компьютерра» №38
Шрифт:

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

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

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

Какую выгоду мы имеем при такой организации? Во-первых, все написанные таким образом Cell-программы параллельны по самой своей сути. Мало того что мы разбиваем исполнение программы на несколько явно независящих друг от друга стадий, которые можно исполнять «в параллель». У нас же целая цепочка ячеек-данных, требующих обработки и в подавляющем большинстве случаев все эти ячейки друг от друга совершенно независимы - а значит, мы можем «превращать» по одному и тому же алгоритму несколько ячеек одновременно. Таким образом, в Cell удается загрузить работой не просто десятки - а сотни и даже тысячи «элементарных процессоров» (Synergetic Processing Element, SPE), причем задействовать для запущенной на одном процессоре задачи SPE всех процессоров данного устройства и даже совершенно прозрачным образом привлечь к ней же SPE других устройств! Представьте, что игровая приставка, домашний компьютер, телевизор, холодильник и КПК совместно работают над, скажем, запущенной пользователем задачей рендеринга трехмерной сцены, причем делают это совершенно прозрачным и незаметным для вас способом - и вы поймете всю прелесть подобной организации! А самое замечательное, что вся эта красота не стоила ни малейших усилий. Нам не требовалось размышлять над кластеризацией, пересылкой данных, блокировками, потоками и прочими «прелестями» параллельного программирования, превращающего жизнь программиста в кошмар: мы написали только «интересную» и «содержательную» часть кода, собственно «алгоритмику» задачи, переложив всю рутину на автоматику и, возможно, прозрачным образом задействовав для решения своих задач произвольное количество чужого кода[Скажем, если в трансляции видеопоток сжат нашим «фирменным» кодеком, а звук - обычным стандартным, то потребуется обеспечить лишь «свою» часть по видеодекодированию, а все остальное - декодирование звука, набор «улучшалок» для картинки и т. п.
– Cell-устройство возьмет стандартное или ранее загруженное пользователем.].

Возможности для применения Cell-сети необъятны. По сути дела, это некий единый «живой организм», который «растет» (регистрирует в сети новые устройства) или «уменьшается»; который обладает «знаниями» (апулетами) и «живет» в глобальном мире - всемирной Сети, «питаясь» разнообразными данными и «перерабатывая» их. У этого «организма» есть «глаза» (веб-камеры), «уши» (микрофоны), «органы чувств» (клавиатура, мышь, джойстик), «средства коммуникации с внешним миром» (монитор, телевизор, колонки); которые физически могут принадлежать совершенно разным устройствам, но в действительности - одному Cell’у.

Добавление новых устройств в Cell-сеть, как правило,

не изменяет ее функциональности (разве что добавляет новые «органы чувств», «средства отображения» и повышает быстродействие) - даже в самом простом варианте Cell универсальна.

Как это все реализовано в железе? В статье о приставках следующего поколения[«Три тополя на Плющихе»] я подробно описывал аппаратную составляющую одного из первых Cell-устройств - PlayStation 3, и его «сердце» - процессор Cell[Вообще-то он называется Broadband Processor, но это название как-то не прижилось], так что еще раз восхищаться сверхсовременными решениями вроде Rambus-памяти и интерконнекта FlexIO, пожалуй, не будем. Лучше посмотрим, откуда эта своеобразная «несимметричная девятиядерная архитектура» взялась.

Напомню, что в процессоре Cell девять ядер - одно главное и восемь вспомогательных. Но если посмотреть на это с точки зрения концепции Cell, то вспомогательным на самом деле является главное процессорное ядро - PPE (The Power Processing Element). На нем работает операционная система сети Cell, обеспечивающая прозрачное объединение нескольких устройств в сеть; выполнение программ - выборку данных и их распределение вместе с необходимыми апулетами по собственно вычисляющим элементам; взаимодействие с пользователем, работу драйверов устройств… в общем, все то, что мы тремя абзацами выше отнесли к рутине. А самое интересное происходит в маленьких ядрышках процессора Cell - модулях SPE. Фактически каждый такой Synergetic Processing Element - это крошечный самостоятельный компьютер (со своим процессором и своей оперативной памятью), который занимается одним-единственным делом: конвертирует поступающие к нему ячейки-данные согласно заложенному в него алгоритму. То есть физически воплощает в жизнь алгоритм, заложенный нами в одну ячейку-апулет, над ячейками-данными. Все, чем занимается PPE, в сущности, сводится к одному действию: взять данные, требующие обработки, поместить их в память SPE, запустить «процесс превращения» данных в другие данные и куда-нибудь передать полученный результат. Именно поэтому SPE очень много, а блок PPE - один; и именно поэтому у каждого SPE есть своя персональная «локальная» память и нет выхода на «глобальную» (она им попросту не нужна); именно поэтому SPE связаны очень быстрыми шинами и могут передавать данные друг другу напрямую, выстраивая те самые цепочки обработки данных, которые в обычном процессоре являются чистейшей воды абстракцией.

Кстати, использовать для создания Cell-устройств, способных стать частью Cell-сети, описанный процессор вовсе не обязательно. Концептуально от устройства требуется только одно: уметь интегрироваться в сеть (то есть содержать процессор, работающий под управлением соответствующих программ) и уметь выполнять над ячейками-данными ячейки-апулеты (например, содержать хотя бы один SPE). Вполне можно представить, что после «суперпроцессора» Cell появятся более простые варианты с меньшим (или наоборот, большим) числом SPE или даже совсем простые и дешевые мини-процессоры (использующие один SPE и более простой PPE, причем PPE может быть даже не PowerPC-процессором), которые можно будет за сущие гроши устанавливать в любую бытовую технику. С помощью Cell можно одинаково эффективно реализовывать и суперкомпьютеры[Уже представлены блейд-серверы из нескольких Cell-процессоров], и «цифровой дом».

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

Доживем ли мы до «умных» сетей и распределенных «повсеместных» вычислений, столь же прозрачных, привычных и незаметных, как современные электросети? Годика через три увидим.

ТЕХНОЛОГИИ: Новая надежда

Выхода графического ускорителя нового поколения от ATI, известного под кодовым названием R520, ожидали долго. Даже, пожалуй, слишком долго: мы искали его на Computex, мы надеялись увидеть его в июле, когда nVidia начала продавать видеокарты GeForce 7800GTX, затем в сентябре, когда, казалось, ждать дальше уже было некуда.

Но прошли уже все мыслимые сроки, а R520 все не было.

Тестовая система:

Материнская плата: ASUS A8N SLI Deluxe. Оперативная память: Corsair DDR CMX512-3200XLPRO, 2x512 Мбайт, 2-2-2-10. Видеокарта: nVidia 7800GTX 256 Мбайт, ATI X1800XT 512 Мбайт. Операционная система: Microsoft Windows XP SP2. Драйверы: последние официальные на момент написания статьи. Все настройки системы оставлялись по умолчанию, процессоры функционировали на своих номинальных частотах: Athlon 64 FX-57 2,8 ГГц - множитель 14, шина 200 МГц, память в синхронном режиме с таймингами 2-2-2-10

Поделиться:
Популярные книги

Эфир. Терра 13. #2

Скабер Артемий
2. Совет Видящих
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эфир. Терра 13. #2

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3

Охота на разведенку

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
6.76
рейтинг книги
Охота на разведенку

СД. Восемнадцатый том. Часть 1

Клеванский Кирилл Сергеевич
31. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.93
рейтинг книги
СД. Восемнадцатый том. Часть 1

Решала

Иванов Дмитрий
10. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Решала

Назад в СССР: 1986 Книга 5

Гаусс Максим
5. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Назад в СССР: 1986 Книга 5

Титан империи 5

Артемов Александр Александрович
5. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи 5

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье

Старатель 3

Лей Влад
3. Старатели
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Старатель 3

Измена. Он все еще любит!

Скай Рин
Любовные романы:
современные любовные романы
6.00
рейтинг книги
Измена. Он все еще любит!

Темный Патриарх Светлого Рода 3

Лисицин Евгений
3. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 3

Никто и звать никак

Ром Полина
Фантастика:
фэнтези
7.18
рейтинг книги
Никто и звать никак