Возможное будущее микропроцессорной индустрии

Лучший способ предсказать будущее - это создать его (Bob Noyce основатель Intel). В этой статье поговорим о возможном развитии микропроцессорной индустрии. Развитие данной индустрии проводится в нескольких направлениях:

  • Обновление элементной базы (нанотрубки, другие заменители кремния)
  • Ввод совершенно новой архитектуры отличной от Неймановской (например нейронные сети)
  • Обновление существующей архитектуры (ввод многоядерности, переход на 64 бит)

Эти три основные направления по которым ведутся исследовательские робо’ты. Обновлением существующей архитектуры занимаются все без исключения от Intel и IBM до производителей чипов каскадного усиления.

Что в основном сейчас изменяется, это ядра процессоров, оптимизируется передача сигналов по шине и т. д. Но упускается важный оптимизирующий параметр который кстати был придуман еще в 70 годах прошлого столетия. Речь идет о микрокоде. И один из вариантов развития процессорной индустрии это реализация микропроцессоров с возможностью изменения микрокода на лету.

То есть пользователь может сам изменять инструкции своего процессора для конкретных задач. Или программы смогут на лету задавать процессору, какие инструкции лучше для выполнения задач, данной программы. Например пользователь запускает 3D Studio MAX и процессор “окутывается” командами оптимизированными под рендеринг, а запустив конвертацию видео для IPhone, процессор “превращается” в аппаратно оптимизированный кодек.

 

    Думаете не реально?


    Сейчас для многих будет откровение, никто не нервничает, глубоко вдохнули и поехали.

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

    Каждая команда на “низкоуровневом” ассемблере состоит из нескольких микрокоманд, эти микрокоманды и есть микрокод, о котором можно почитать тут и тут. АГА не слышал об таком, а надо больше изучать .NET Framework и Action Script 3 глядишь поймешь архитектуру микропроцессора. А если серьезно то каждая команда ассемблера это мнемоника группы микрокоманд, пример:

     

    ADD EAX,5; Добавить 5 к значению регистра EAX и результат поместить в тот же EAX

    Но что приходится проделывать микропроцессору в действительности от этой команды:

    1 Прочитать значение регистра EAX

    2 Прочитать значение числа 5

    3 Сложить

    4 Результат записать в EAX

    Из этого ууупрощенного примера понятно что ADD это всего-навсего ссылка в таблице микрокода на последовательность микрокоманд. И эту последовательность можно изменить и прошить в центральном процессоре!

     

     Intel 386 SX (25 MHz), Intel Itanium 2, Процессор 48 Ядер.

    Слева на право: Intel 386 SX (25 MHz), Intel Itanium 2, Процессор 48 Ядер.


    Полтора слова о архитектуре современных процессоров

    Детально о процессорах читаем тут. Если взять камень семейства Pentium, и посмотреть под рентгеном, увидим что внешние команды реализованы по философии CISC, но все команды разбиваются на элементарные микрокоманды на основании ядра RISC.

    Декодированные микрокоманды непосредственно соответствуют тем элементарным операциям, которые могут выполняться аппаратными средствами; они гораздо проще, чем команды машинного языка.

    То есть CISC и RISC это две разных школы которые Intel объединила на одном кристалле:

    • Школа  CISC гласит “Пойди купи хлеба”
    • Школа RISC гласит “Оденься, обуйся, пройди к магазину, купи хлеб, вернись”
    Поскольку одевание и обувания может использоваться не только для походов в магазин, эти команды называются элементарными. И соответственно выполняются быстрее и чаще в различных высокоуровневых командах ассемблера.


    Зачем вообще ввели микрокоды?

    По роду своей деятельности центральному процессору приходится выполнять объединяющие функции. Он должен управлять работой различных компонентов аппаратного обеспечения компьютера, таких как дисководы, графические дисплеи и сетевой интерфейс, с тем чтобы обеспечить их согласованную работу.

    Это означает, что центральные процессоры настольных компьютеров имеют сложную архитектуру, поскольку должны поддерживать такие базовые функции, как защита памяти, целочисленная арифметика, операции с плавающей запятой и обработка векторной графики.

    В итоге типичный современный центральный процессор поддерживает несколько сот команд, которые обеспечивают выполнение всех этих функций. Следовательно, нужен модуль декодирования команд, который позволял бы реализовывать сложный словарь команд, а также множество интегральных схем. Они, собственно, и должны выполнять действия, определяемые командами. Иными словами, типичный процессор в настольном компьютере содержит десятки миллионов транзисторов.

    Также микрокоды намного упрощают отладку микропроцессоров, ведь отладив одну элементарною микрокоманду, которая используется во многих других высокоуровневых командах, мы уже уверены что в новых командах данный микрокод будет работать корректно.

     

     

    Что нам может дать программирование собственных команд процессора?


    Для начала вспомним священные войны 90-ых прошлого столетия о необходимости 3D акселератора в персональных компьютерах. Сейчас же, чипы для роботы с графикой интегрируют даже в системную плату. А некоторые видео карты имеют кеш и оперативной памяти больше чем центральный процессор и системная плата.

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

    Более того, последнее время увеличивается тенденция считать даже математику на видео процессоре. То есть некоторые оптимизации высокоуровневых команд чипа обработки графики сделали их эффективней для расчетов большого массива данных (обработка графики является частным случаем таких расчетов), детальней об этом можно почитать о проекте NVIDIA CUDA.

     

     

    Теперь вспомни о физике.

    Кто бы мог подумать зачем на настольном компьютере рядового пользователя, нужен специализированный процессор быстро рассчитывающий физику.

    А вот компания Ageia задумалась над массовым производством таких физических микропроцессоров, а умные люди из Bank of America профинансировали его разработку и в мае 2006 года вышел процессор Ageia PhysX предназначен для исполнения физических расчетов, детали тут

    Знакомьтесь первый физический ускоритель Asus P1 Ageia PhysX. 9 мая 2006 года

    Знакомьтесь первый физический ускоритель Asus P1 Ageia PhysX. 9 мая 2006 года

    И что вообще там считать в этой физике?

    К примерам физических вычислений, использующих физический процессор, относятся: динамика твёрдых тел (англ. rigid body dynamics), динамика мягких тел (англ. soft body dynamics), обнаружение столкновений (англ. collision detection), динамика жидкостей (гидрогазодинамика), симуляция волос, меха и ткани, анализ конечных элементов (англ. finite element analysis), разломы объектов. Идея (основная функция, суть) физического процессора состоит в разгрузке центрального процессора от трудоёмких задач по обработке физики.

    Поскольку быстрая физика необходима не только в, научных и инженерных расчетах, кинематографии (пример движок Havok), а и в развлекательных играх, то не удивительно что компанию Ageia целиком (даже с урнами), выкупила компания NVIDIA. И в видеокартах GeForce начиная c серии 8xxx вмонтирован кусок кремния с названием PhysX.

    Тот кто разжигал священные войны о необходимости 3D акселераторов наверно вскрыли бы себе вены узнав что эти акселераторы будут еще ускорять и физику. Вот как сложно предсказать будущее хотя бы на десять лет вперед.

     

     

    Также можно вспомнить о DSP

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

    Инструкции данного процессора оптимизированы для роботы с потоковым аудио и видео но самое интересное что некоторые параметры этих инструкций можно задавать программно, то есть слегка перепрограммировать процессор, не полностью инструкцию, только ее параметры но это только пока.

    Creative Sound Blaster X-Fi Fatal1ty FPS – в процессор звуковой карты встроена половина добротной звукозаписывающей студии, включая DSP чип.

    Creative Sound Blaster X-Fi Fatal1ty FPS – в процессор звуковой карты встроена половина добротной звукозаписывающей студии, включая DSP чип.

     

     

    “Гламурный” пример использования собственных инструкций

    Представьте у вас есть очень важная информация. Вы ее зашифровали какой-нибудь программой шифрования к примеру алгоритмом md5. И как обычно забыли пароль, что делать, даже распределенным перебором можно потратить пару лет. А эта информация нужна позарез максимум к вечеру.

    Но вы вспоминаете что у одного из 8 ядер центрального процессора можно перепрограммировать инструкции. Открываете программу “MSmicrocod” пишете ассемблерную инструкцию, к примеру поиска коллизий, нажимаем кнопку “Add to processor” и теперь представьте себе программу переборщика пароля в которой одна инструкция находит коллизию в хеш функции. Скорее всего ваш пароль найдется за пару часов и вы сможете достать свой список покупок в магазине.

    Опять скажите фантастика? А вот студентишки одного университетишка разработали микрочип для специализированной обработки нейронных сетей. И компьютер с таким чипом работает с нейронными сетями в 300 раз быстрее хотя его частота в 15 раз меньше частоты центрального процессора.

     Например, в игровом режиме эффект-процессор и аппаратные буферы используются для EAX5, в то время как в режиме Creation они освобождаются для поддержки аппаратного MIDI-синтезатора.

    Одним щелчком мыши ми переключаем процессор карты Sound Blaster X-Fi Fatal1ty FPS

    В три разных режима роботы: Например, в игровом режиме эффект-процессор и аппаратные буферы используются для EAX5, в то время как в режиме Creation они освобождаются для поддержки аппаратного MIDI-синтезатора.

     

    Стоны скептиков

    Особо тонкие скептики сразу говорят, зачем делать трансформера, если специализированные микрочипы вполне давно выпускаются промышленностью и отлично работают. Приводя примеры:

    - “Ведь автомобильная индустрия не делает в одном корпусе внедорожник и легковую машину”

    Это конечно верно гибрид внедорожника и легковой как минимум будет стоить очень дорого, но компьютерная индустрия развивается совсем в других временных и ценовых масштабах, а также можно вспомнить кроссоверы. И если взглянуть на рынок микроконтроллеров в которые уже можно зашивать до 1 Мб кода управляющего микроконтроллером. Видно что компьютерная индустрия таки любит трансформеров.

    Философы могут сказать:

    - “В любом случае специализированный чип эффективней чем чип который может быть запрограммированным на любую специализацию.”

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

     

     

    ИТОГИ

    Сегодня мы детальней рассмотрели возможные перспективы обновления микропроцессорной архитектуры, в свете перепрограммирования и добавления собственных инструкций процессора. Уверен потенциал микрокода еще спит также, как, к примеру и технология виртуального пространства.

    А если представить себя на месте исполнительного директора компании, которая разрабатывает новое устройство. Для этого им необходимо разработать микрочип, то есть составить схемотехнику, заказать на заводе тестовую партию, завод слепит куски кремния, которые необходимо впаять в общую схему, протестировать, исправить ошибки, заново заказать партию с исправлениям и т. д.

    И есть другой вариант, купить перепрограммируемый микропроцессор, и спокойно на нем сколько угодно раз отладить все инструкции. Думаю у такого подхода есть будущее.

     

     

    Бурлий Ярослав

    Компания «Spiribit»

     

     

    For more complete information about compiler optimizations, see our Optimization Notice.