Опис процесора CELL, Інформаційно-аналітичний центр з паралельних обчислень

ЗАГАЛЬНА ІНФОРМАЦІЯ

Історія розробки

Розробка процесора CELL була розпочата в 2001 році альянсом Sony, Toshiba, IBM (альянсом STI). Роботи велися понад 400 інженерами трьох компаній. За основу було взято архітектуру IBM POWER4. Розробка дизайну була здебільшого завершена у 2002 році. У 2003 році було ліцензовано технологію швидкої пам'яті у Rambus. Першим комерційним застосуванням процесора CELL стала ігрова консоль Sony Playstation 3, комерційний продаж якої розпочався у 2005 році.

Оригінальний процесор CELL виготовлявся за 90 нм техпроцесу. 2006 року відбувся перехід на 65 нм техпроцес. 2008 року з'явився варіант процесора PowerXCell 8i. Його основною особливістю стало помітне підвищення продуктивності у обчисленнях з подвійною точністю: близько 100 Гфлопс проти 14 у більш ранніх моделях. Першим застосуванням PowerXCell 8i став суперкомп'ютер IBM RoadRunnder. Також у 2008 році IBM анонсувала 45 нм версію процесора CELL.

Характеристики

Тут наводиться таблиця параметрів процесора CELL PowerXCell 8i. Значення термінів див. у розділі "Архітектура".

Техпроцес65 нм, 45 нм (після 2008)
Тактова частота3.2 ГГц
ППЕ (основний процесор)PowerPC Element, 2 ядра
Кеш 1-го рівня ППЕ32 КБ код, 32 КБ даних
Кеш 2-го рівня ППЕ512 КБ
Кількість ВПЕ8
Локальна пам'ять ВПЕ256 КБ на ядро ​​(кешу немає)
Пікова продуктивність одного СПЕ на операціях одинарної точності25.6 Гфлопс
Пікова продуктивністьодного СПЕ на операціях подвійної точності (PowerXCell 8i)12.8 Гфлопс
Пікова продуктивність CELL на операціях одинарної точності204.8 Гфлопс
Пікова продуктивність CELL на операціях подвійної точності102.4 Гфлопс
Реєстровий файл СПЕ128 регістрів по 128 біт
Пропускна спроможність внутрішньої шини204.8 ГБ/сек
Пропускна здатність контролера пам'яті25.6 ГБ/сек

http://www.ibm.com/developerworks/power/cell/ - сторінка CELL на сайті IBM. Доступні документація, засоби розробки та приклади використання.

АРХІТЕКТУРА

Спочатку розробники процесора CELL орієнтувалися досить широкий клас додатків і створювали не окремий процесор, а масштабоване сімейство процесорів. Це сімейство архітектур називається CELL Broadband Engine Architecture, скорочено CELL BE. Різні моделі сімейства відрізняються насамперед кількістю обчислювальних ядер. Залежно від завдання також могли змінюватися тактова частота, пропускна здатність шини, могли додаватися або зникати окремі компоненти. Найбільш відомі та поширені процесор IBM CELL, а також його модифікація PowerXCell. Нижче надається опис архітектури цих процесорів.

cell

На малюнку наведено загальну схему архітектури процесора CELL. Сам процесор складається з набору основних та допоміжних ядер. Головні ядра в основному виконують функцію, що управляє, хоча можуть використовуватися і для обчислень. Допоміжні ядра виконують лише обчислення.

У ролі основних ядер виступає PowerPC Processing Element (PPE, ППЕ - калька з англійської). Він є двопотоковий процесор з архітектурою IBMPOWER Architecture. Якщо CELL використовується як центральний процесор, то на ППЕ виконуються основні функції ОС, а також основний код додатків користувача. Архітектура команд ППЕ, крім команд IBM Power Architecture, містить інструкції взаємодії з іншими компонентами процесора.

cell

У ролі обчислювальних ядер виступають синергічні процесорні елементи (СПЕ, англ. Synergistic Processing Element, SPE). Кожен ВПЕ складається з синергічного процесорного пристрою (СПУ, англ. Synergistic Processing Unit, SPU) та контролера потоку пам'яті (КПП, англ. Memory Flow Controller, MFC).

СПУ є RISC-процесором, спеціально оптимізованим для високопродуктивних обчислень. Він має 128 регістрів загального призначення по 128 біт кожен. Вміст одного регістру може трактуватися як набір цілих чисел по 8, 16, 32 або 64 біти в кожному, четвірка чисел з одинарною точністю або два числа з подвійною точністю. Система команд підтримує роботу як із одним елементом, і з усіма елементами регістру одночасно. Крім арифметичних і логічних команд є швидкі команди обчислення елементарних функцій. СПУ може видавати по 2 команди за такт, таким чином, продуктивність СПУ на обчислення з одинарною точністю на звичайній для CELL частоті 3.2 ГГц становить 25.6 Гфлопс. Швидкість роботи на командах подвійної точності вдвічі нижча. Операції можуть виконуватися лише з операндами на регістрах.

Усі елементи процесора CELL з'єднані внутрішньою шиною з'єднання елементів (англ. Element Interconnection Bus, EIB). Її максимальна пропускна спроможність становить 204 ГБ/сек.

ПРОГРАМУВАННЯ

Розшинерія С/C++ та завантаження програм

Основними програмованими компонентами CELLє ППЕ та ВПЕ. Оскільки ППЕ є повноцінним процесором з архітектурою IBM POWER Architecture, його можна програмувати за допомогою інструментів цієї архітектури. Основним завданням є програмування СПЕ та взаємодія ППЕ та СПЕ.

Незважаючи на те, що набір команд СПЕ схожий на набір векторних команд ППЕ, бінарна сумісність між ними відсутня. Це означає, що файл, що виконується, для СПЕ потрібно створювати окремо. Для створення таких файлів можна використовувати компілятор XL C/C++ або XL Fortran від IBM. При цьому вихідний код для ППЕ і СПЭ може бути однаковим, а створення різних файлів, що виконуються, підтримуються різними ключами компіляції.

З погляду ОС, потоки СПЭ трактуються як звичайні потоки, й у керування ними можна використовувати засоби управління, доступні звичайних потоків, наприклад, бібліотеку POSIX Threads. Щоб запустити потік на СПЭ, потрібно спочатку створити звичайний потік, наприклад, з pthread_create ( ). Далі для створення потоків на СПЕ використовуються 3 процедури CELL BE SDK:

  • Процедура spe_context_create ( ) створює контекст виконання для СПЕ.
  • Процедура spe_program_load ( ) завантажує програму виконання на СПЭ.
  • Процедура spe_context_run ( ) запускає контекст СПЕ у поточному потоці. У цьому поточний потік перетворюється на стан виконання на СПЭ, і починає виконувати програму для СПЭ. При завершенні виконання програми на СПЕ потік продовжує виконання на ППЕ.
  • Докладніше про управління потоками на CELL можна переглянути тут.

    Моделі програмування

    Моделі програмування можна умовно розділити те, що розглядають ППЭ як головний елемент і ті, що розглядають СПЭ як головний елемент . Якщо головнимелементом є ППЭ, він виконує основний код докладання, делегуючи частину завдань підлеглі йому СПЭ. Якщо головними є СПЭ, то додаток побудовано за моделлю взаємодіючих процесів, у своїй кожен процес виконується своєму СПЭ. ППЕ виконує лише функції менеджера ресурсів.

    Моделі, в яких головним елементом є ППЕ, можна поділити на:

  • Конвеєрну
  • Паралельну
  • Сервісну
  • Гібридну
    центр
  • У гібридній моделі можуть поєднуватися особливості інших моделей. Наприклад, конвеєр може складатися з двох щаблів, на одному з яких працює два, а на другому - чотири СПЕ.

    Засоби програмування

    Основним інструментом програмування CELL є IBM SDK for Multicore Acceleration. Про процес встановлення SDK можна прочитати тут. До складу SDK входять:

  • Компілятори GNU C/C++ та IBM XL C/C++/Fortran з підтримкою компіляції для CELL
  • Відладники та профільники
  • Інтеграція у середу розробки Eclipse
  • Реалізації бібліотек BLAS, FFT та генерації випадкових чисел Монте-Карло для CELL
  • Приклади вихідного коду
  • Крім цього, доступний емулятор процесора CELL, що дозволяє розробляти прості програми без самого процесора. Емулятор доступний тут.