Выбрать книгу по жанру
Фантастика и фэнтези
- Боевая фантастика
- Героическая фантастика
- Городское фэнтези
- Готический роман
- Детективная фантастика
- Ироническая фантастика
- Ироническое фэнтези
- Историческое фэнтези
- Киберпанк
- Космическая фантастика
- Космоопера
- ЛитРПГ
- Мистика
- Научная фантастика
- Ненаучная фантастика
- Попаданцы
- Постапокалипсис
- Сказочная фантастика
- Социально-философская фантастика
- Стимпанк
- Технофэнтези
- Ужасы и мистика
- Фантастика: прочее
- Фэнтези
- Эпическая фантастика
- Юмористическая фантастика
- Юмористическое фэнтези
- Альтернативная история
Детективы и триллеры
- Боевики
- Дамский детективный роман
- Иронические детективы
- Исторические детективы
- Классические детективы
- Криминальные детективы
- Крутой детектив
- Маньяки
- Медицинский триллер
- Политические детективы
- Полицейские детективы
- Прочие Детективы
- Триллеры
- Шпионские детективы
Проза
- Афоризмы
- Военная проза
- Историческая проза
- Классическая проза
- Контркультура
- Магический реализм
- Новелла
- Повесть
- Проза прочее
- Рассказ
- Роман
- Русская классическая проза
- Семейный роман/Семейная сага
- Сентиментальная проза
- Советская классическая проза
- Современная проза
- Эпистолярная проза
- Эссе, очерк, этюд, набросок
- Феерия
Любовные романы
- Исторические любовные романы
- Короткие любовные романы
- Любовно-фантастические романы
- Остросюжетные любовные романы
- Порно
- Прочие любовные романы
- Слеш
- Современные любовные романы
- Эротика
- Фемслеш
Приключения
- Вестерны
- Исторические приключения
- Морские приключения
- Приключения про индейцев
- Природа и животные
- Прочие приключения
- Путешествия и география
Детские
- Детская образовательная литература
- Детская проза
- Детская фантастика
- Детские остросюжетные
- Детские приключения
- Детские стихи
- Детский фольклор
- Книга-игра
- Прочая детская литература
- Сказки
Поэзия и драматургия
- Басни
- Верлибры
- Визуальная поэзия
- В стихах
- Драматургия
- Лирика
- Палиндромы
- Песенная поэзия
- Поэзия
- Экспериментальная поэзия
- Эпическая поэзия
Старинная литература
- Античная литература
- Древневосточная литература
- Древнерусская литература
- Европейская старинная литература
- Мифы. Легенды. Эпос
- Прочая старинная литература
Научно-образовательная
- Альтернативная медицина
- Астрономия и космос
- Биология
- Биофизика
- Биохимия
- Ботаника
- Ветеринария
- Военная история
- Геология и география
- Государство и право
- Детская психология
- Зоология
- Иностранные языки
- История
- Культурология
- Литературоведение
- Математика
- Медицина
- Обществознание
- Органическая химия
- Педагогика
- Политика
- Прочая научная литература
- Психология
- Психотерапия и консультирование
- Религиоведение
- Рефераты
- Секс и семейная психология
- Технические науки
- Учебники
- Физика
- Физическая химия
- Философия
- Химия
- Шпаргалки
- Экология
- Юриспруденция
- Языкознание
- Аналитическая химия
Компьютеры и интернет
- Базы данных
- Интернет
- Компьютерное «железо»
- ОС и сети
- Программирование
- Программное обеспечение
- Прочая компьютерная литература
Справочная литература
Документальная литература
- Биографии и мемуары
- Военная документалистика
- Искусство и Дизайн
- Критика
- Научпоп
- Прочая документальная литература
- Публицистика
Религия и духовность
- Астрология
- Индуизм
- Православие
- Протестантизм
- Прочая религиозная литература
- Религия
- Самосовершенствование
- Христианство
- Эзотерика
- Язычество
- Хиромантия
Юмор
Дом и семья
- Домашние животные
- Здоровье и красота
- Кулинария
- Прочее домоводство
- Развлечения
- Сад и огород
- Сделай сам
- Спорт
- Хобби и ремесла
- Эротика и секс
Деловая литература
- Банковское дело
- Внешнеэкономическая деятельность
- Деловая литература
- Делопроизводство
- Корпоративная культура
- Личные финансы
- Малый бизнес
- Маркетинг, PR, реклама
- О бизнесе популярно
- Поиск работы, карьера
- Торговля
- Управление, подбор персонала
- Ценные бумаги, инвестиции
- Экономика
Жанр не определен
Техника
Прочее
Драматургия
Фольклор
Военное дело
Журнал «Компьютерра» №38 - Журнал Компьютерра - Страница 18
Итак, VLIW/EPIC на роль процессора завтрашнего дня пока не годится - те потенциальные преимущества, которыми она обладает, сегодня не оправдываются. Но существенные изменения в грядущих процессорах мы все-таки увидим.
Хотим мы того или нет, работать нам придется с многоядерными процессорами. Как уже говорилось, разработка нового процессорного ядра - дело весьма долгое даже при наличии опытной команды и чертежей предыдущей версии изделия; совершенствование технологических процессов, позволяющих уместить на одном кусочке кремния все больше транзисторов, происходит гораздо быстрее. Раньше это выливалось во все более «кэшастые» варианты одних и тех же архитектур и во все более «прямолинейные» варианты их разводки (пожертвовав площадью кристалла и увеличив его размеры, разводку можно сделать «более высокочастотной»); теперь же стало выгоднее просто устанавливать два-три-четыре одинаковых или почти одинаковых ядра в один кристалл или на одну подложку.
Но коль уж все равно нам светит повальный переход на параллельные алгоритмы (а параллельное программирование нетривиальных алгоритмов по праву считается одной из самых сложных современных задач), то имеет смысл уже сегодня заняться разработкой перспективных параллельных архитектур на основе принципиально новых концепций. Именно такой подход в лице процессора Cell (совместное детище Sony, Toshiba и IBM), возможно, и определит облик завтрашнего дня компьютинга.
По меркам же дня сегодняшнего Cell вызывает интерес своей необычностью и потрясающей футуристичностью: девять ядер, из которых одно главное, а восемь - вспомогательные; сумасшедшей пропускной способности интерфейсы и оперативная память Rambus; тактовая частота под три гигагерца. Но новизна процессора не в этом (вернее, не только в этом). Cell - это еще и попытка значительно пересмотреть существующие парадигмы программирования.
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, пожалуй, не будем. Лучше посмотрим, откуда эта своеобразная «несимметричная девятиядерная архитектура» взялась.
- Предыдущая
- 18/38
- Следующая