Очевидно, что использование для количественной оценки источников и потоков двух значений – «одиночный» и «множественный», ограничивает количество возможных вариантов зависимостей. Двухкомпонентное описание архитектуры предполагает ее гомогенность и симметричность. А именно, в случае множественности каких-либо источников существующая зависимость распространяется на все множество (гомогенность), а при множественности потоков команд и данных их размерности считаются равными.
Рассматривая фон-неймановскую архитектуру как отправную точку можно, опираясь на принцип развития, путем последовательного усложнения зависимостей между потоками и исключения несвязных структур, построить полное множество возможных видов процессорных архитектур. Это множество делится на два основных класса:
· архитектуры с хранимой программой (контекстно-свободной программой), представленные в таблице 1;
· архитектуры с хранимым алгоритмом (контекстно-зависимой программой), приведенные в таблице 2.
Таблица 1. Базовые (гомогенные) модели архитектур процессоров с хранимой программой
| Фон-неймановские архитектуры | Не фон-неймановские архитектуры | |||||
| SISD |
SISD(si)
|
SISD(si,sd) |
SI(sd)SD(si)
|
SI(sd)SD(si,sd) | ||
| SIMD |
SIMD(si)
|
SIMD(si,sd)
|
SIMD(si,md)
|
SI(md)MD(si)
|
SI(md)MD(si,sd)
|
SI(md)MD(si,md)
|
| MISD |
MISD(mi)
|
MISD(mi,sd) |
MI(sd)SD(mi)
|
MI(sd)SD(mi,sd) | ||
| MIMD |
|
|
MIMD(si,md) |
MI(sd)MD(si,md)
| ||
MI(md)MD(si)
|
MI(md)MD(si,sd)
|
MI(md)MD(si,md)
| ||||
|
MIMD(mi) |
MIMD(mi,sd) |
MIMD(mi,md) |
MI(sd)MD(mi)
|
MI(sd)MD(mi,sd)
|
MI(sd)MD(mi,md)
| |
MI(md)MD(mi)
|
MI(md)MD(mi,sd)
|
MI(md)MD(mi,md)
| ||||
Принципиальное отличие данных классов заключается в зависимости потоков команд. Поток команд в архитектурах с хранимой программой может зависеть только от потока данных. В архитектурах с хранимым алгоритмом он всегда зависит от самого себя, или от самого себя и от потока данных.
Таблица 2. Базовые (гомогенные) модели архитектур процессоров с хранимым алгоритмом
| Не фон-неймановские архитектуры | ||||||
| SISD |
SI(si)SD(si)
|
SI(si)SD(si,sd) |
SI(si,sd)SD(si)
|
SI(si,sd)SD(si,sd) | ||
| SIMD |
SI(si)MD(si)
|
SI(si)MD(si,sd)
|
SI(si)MD(si,md)
|
SI(si,md)MD(si)
|
SI(si,md)MD(si,sd)
|
SI(si,md)MD(si,md)
|
| MISD |
MI(si)SD(mi)
|
MI(si)SD(mi,sd) |
MI(si,sd)SD(mi)
|
MI(si,sd)SD(mi,sd) | ||
MI(mi)SD(mi)
|
MI(mi)SD(mi,sd) |
MI(mi,sd)SD(mi)
|
MI(mi,sd)MD(mi,sd) | |||
| MIMD |
|
|
MI(si)MD(si,md) |
MI(si,sd)MD(si,md)
| ||
MI(si,md)MD(si)
|
MI(si,md)MD(si,sd)
|
MI(si,md)MD(si,md)
| ||||
|
MI(si)MD(mi) |
MI(si)MD(mi,sd) |
MI(si)MD(mi,md) |
MI(si,sd)MD(mi)
|
MI(si,sd)MD(mi,sd)
|
MI(si,sd)MD(mi,md)
| |
MI(si,md)MD(mi)
|
MI(si,md)MD(mi,sd)
|
MI(si,md)MD(mi,md)
| ||||
|
MI(mi)MD(si) |
MI(mi)MD(si,sd) |
MI(mi)MD(si,md) |
MI(mi,sd)MD(si)
|
MI(mi,sd)MD(si,sd)
|
MI(mi,sd)MD(si,md)
| |
MI(mi,md)MD(si)
|
MI(mi,md)MD(si,sd)
|
MI(mi,md)MD(si,md)
| ||||
|
MI(mi)MD(mi) |
MI(mi)MD(mi,sd) |
MI(mi)MD(mi,md) |
MI(mi,sd)MD(mi)
|
MI(mi,sd)MD(mi,sd)
|
MI(mi,sd)MD(mi,md)
| |
MI(mi,md)MD(mi)
|
MI(mi,md)MD(mi,sd)
|
MI(mi,md)MD(mi,md)
| ||||
Как в первой, так и во второй таблицах есть пустые поля. Они отражают существование систем, т.е. несвязных структур, которые были исключены при построении множеств.
Рассмотрим место наиболее известных типов процессоров в данной классификации.
Определение потока данных, как производного от потока команд объединяет архитектуру процессоров таких машин как, например, векторно-конвейерные и матричные, в один вид с классической фон-неймановской машиной. Дальнейшая их классификация должна проводиться уже внутри вида и опираться на особенности реализации. А именно, по типу операций (скалярные, векторные). Среди векторных машин – по способу реализации векторных операций (векторно-конвейерные, матричные).
Одним из первых шагов в развитии фон-неймановской модели, как известно, было внедрение сопроцессоров. Фактически, это было использование дополнительного исполнительного устройства, например, для параллельного выполнения операций с плавающей запятой. Архитектура такого процессора описывается следующим образом – SIMD(si).
Многоядерный процессор, имеющий несколько источников команд и, например, одно исполнительное устройство обладает архитектурой вида MISD(mi). Если исполнительных устройств несколько, и каждое из них может выполнять команды, поступающие от любого источника, то архитектура будет иметь следующий вид – MIMD(mi).
Другие модели, например, процессор, управляемый потоком данных, имеет архитектуру вида SISD(si, sd), т.е. один источник потока команд и один источник потока данных, поток которого зависит от поступающего одиночного потока команд и от формируемого им же потока данных. Зависимость потока данных от самого себя – характерный признак управления исполнением команд «по готовности». Например, синпьютер [5-7] имеет формулу MIMD(si,md).
Следует отметить, что несмотря на достаточно большое разнообразие существующих процессоров, концептуально различных среди них сравнительно мало. И если в первой таблице есть реализованные виды, например, четыре вида фон-неймановских архитектур, потоковые архитектуры, то реально существующих видов из второй таблицы – нет.
SISD(si)

SI(sd)SD(si)

SIMD(si)
SIMD(si,sd)
SIMD(si,md)
SI(md)MD(si)
SI(md)MD(si,sd)
SI(md)MD(si,md)
MISD(mi)

MI(sd)SD(mi)


MI(sd)MD(si,md)
MI(md)MD(si)
MI(md)MD(si,sd)
MI(md)MD(si,md)



MI(sd)MD(mi)
MI(sd)MD(mi,sd)
MI(sd)MD(mi,md)
MI(md)MD(mi)
MI(md)MD(mi,sd)
MI(md)MD(mi,md)
SI(si)SD(si)

SI(si,sd)SD(si)

SI(si)MD(si)
SI(si)MD(si,sd)
SI(si)MD(si,md)
SI(si,md)MD(si)
SI(si,md)MD(si,sd)
SI(si,md)MD(si,md)
MI(si)SD(mi)

MI(si,sd)SD(mi)

MI(mi)SD(mi)

MI(mi,sd)SD(mi)


MI(si,sd)MD(si,md)
MI(si,md)MD(si)
MI(si,md)MD(si,sd)
MI(si,md)MD(si,md)



MI(si,sd)MD(mi)
MI(si,sd)MD(mi,sd)
MI(si,sd)MD(mi,md)
MI(si,md)MD(mi)
MI(si,md)MD(mi,sd)
MI(si,md)MD(mi,md)



MI(mi,sd)MD(si)
MI(mi,sd)MD(si,sd)
MI(mi,sd)MD(si,md)
MI(mi,md)MD(si)
MI(mi,md)MD(si,sd)
MI(mi,md)MD(si,md)



MI(mi,sd)MD(mi)
MI(mi,sd)MD(mi,sd)
MI(mi,sd)MD(mi,md)
MI(mi,md)MD(mi)
MI(mi,md)MD(mi,sd)
MI(mi,md)MD(mi,md)






