Концепция управляемого данными процессора

image

Здравствуй, Хабр!

Все имеющие процессор устройства, которые мы используем, построены по принципам фон Неймановской машины, или ее модификациях. Простой пример: всеми нами используемый x86 — это гибрид фон Неймановской и Гарвардской архитектур.

Но знает ли хабрасообщество про существование (хотя бы в концепции, планах, чертежах, работающих образцах) НЕ фон Неймановских машин?


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

Эту концепцию в 70е годы разработали монстры из MIT, а потом подхватили другие процессоростроители по всему миру.

Итак, поехали!


Не по фон Нейману — а это как? о_0


Вкрадце (кто забыл), ключевые тезисы архитектуры фон Неймана:



А что будет, если от этого всего отойти? А будет вот что:


Управляемый данными подход


Итак, мы отказались от модели фон Неймана. Но что мы предложим взамен?

Ответ прост — пакетирование. Да, да, почти как пакеты в сети, только в меньшем масштабе и намного быстрее.

В пакете находятся: код операции (>,<,+,-, и.т.д.), операнды (либо ссылки на другие пакеты, дающие эти операнды), и отметка готовности по каждому операнду. Нет разделения на данные и команды как таковые, процессор оперирует готовыми «суповыми» наборами всего необходимого.

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

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

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

(X+Y)*(X-Y):
image

While X>0 DO X-1:
image

А решение квадратного уравнения будет выглядеть так:

image

image

Преимущества


Недостатки


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

Процессор, наиболее соответствующей этой концепции — японский Oki Denki DDDP.
@
24.09.2009 18:47 UTC
Первоисточник