Очевидно, что использование для количественной оценки источников и потоков двух значений – «одиночный» и «множественный», ограничивает количество возможных вариантов зависимостей. Двухкомпонентное описание архитектуры предполагает ее гомогенность и симметричность. А именно, в случае множественности каких-либо источников существующая зависимость распространяется на все множество (гомогенность), а при множественности потоков команд и данных их размерности считаются равными.
Рассматривая фон-неймановскую архитектуру как отправную точку можно, опираясь на принцип развития, путем последовательного усложнения зависимостей между потоками и исключения несвязных структур, построить полное множество возможных видов процессорных архитектур. Это множество делится на два основных класса:
· архитектуры с хранимой программой (контекстно-свободной программой), представленные в таблице 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).
Следует отметить, что несмотря на достаточно большое разнообразие существующих процессоров, концептуально различных среди них сравнительно мало. И если в первой таблице есть реализованные виды, например, четыре вида фон-неймановских архитектур, потоковые архитектуры, то реально существующих видов из второй таблицы – нет.