Смекни!
smekni.com

Концепция 8 1 Описание алгоритма в виде «триад» 8 2 Принципы построения процессора 11 (стр. 6 из 7)

Рассмотрим место наиболее известных типов процессоров в данной классификации.

Определение потока данных, как производного от потока команд объединяет архитектуру процессоров таких машин как, например, векторно-конвейерные и матричные, в один вид с классической фон-неймановской машиной. Дальнейшая их классификация должна проводиться уже внутри вида и опираться на особенности реализации. А именно, по типу операций (скалярные, векторные). Среди векторных машин – по способу реализации векторных операций (векторно-конвейерные, матричные).

Одним из первых шагов в развитии фон-неймановской модели, как известно, было внедрение сопроцессоров. Фактически, это было использование дополнительного исполнительного устройства, например, для параллельного выполнения операций с плавающей запятой. Архитектура такого процессора описывается следующим образом – SIMD(si).

Многоядерный процессор, имеющий несколько источников команд и, например, одно исполнительное устройство обладает архитектурой вида MISD(mi). Если исполнительных устройств несколько, и каждое из них может выполнять команды, поступающие от любого источника, то архитектура будет иметь следующий вид – MIMD(mi).

Другие модели, например, процессор, управляемый потоком данных, имеет архитектуру вида SISD(si, sd), т.е. один источник потока команд и один источник потока данных, поток которого зависит от поступающего одиночного потока команд и от формируемого им же потока данных. Зависимость потока данных от самого себя – характерный признак управления исполнением команд «по готовности». Например, синпьютер [5-7] имеет формулу MIMD(si,md).

Следует отметить, что несмотря на достаточно большое разнообразие существующих процессоров, концептуально различных среди них сравнительно мало. И если в первой таблице есть реализованные виды, например, четыре вида фон-неймановских архитектур, потоковые архитектуры, то реально существующих видов из второй таблицы – нет.

2.4. Концепция хранимого алгоритма

(контекстно-зависимой программы)

Модель вычислений в императивных языках высокого уровня – это выполнение упорядоченной последовательности операторов. Каждый оператор представляет собой неделимую и целостную языковую конструкцию, описывающую процесс преобразования данных. Порядок выполнения операций внутри оператора задается путем их ранжирования и расстановки скобок, т.е указанием информационных связей между операциями. Промежуточные результаты вычислений внутри оператора не отчуждаются. Отчуждается только результат выполнения оператора. Следовательно, для абстрактной машины, непосредственно реализующий некоторый язык высокого уровня, оператор языка является командой.Действительно, рассмотрим промежуточное представление программы в виде триад, получаемое после первой фазы компиляции (синтаксического анализа). Это представление является машинно-адаптированной формой исходного кода написанного на языке высокого уровня.Программа в этом виде записывается как пронумерованная последовательность триад. Данная последовательность делится на участки. Каждый участок соответствует одному оператору программы и содержит подмножество триад, реализующее этот оператор. Очередность записи участков соответствует очередности записи операторов в программе. Каждая триада описывает выполнение некоторой операции над операндами, заданными идентификаторами или ссылками. Ссылка является номером триады, результат выполнения которой используется в качестве операнда, т.е ссылка явно задает информационную связь между операциями. При этом, результаты триад передаваемые по ссылке не отчуждаются.Так как информационный обмен между операторами опосредован и осуществляется через отчуждение результатов, то подмножество триад реализующих оператор замкнуто. Оно не имеет ссылок на триады других операторов и триады других операторов не ссылаются на триады данного подмножества. Следует отметить, что вне своего подмножества триады смысла не имеют и не могут считаться системой команд. Они безусловно обладают неделимостью, но не обладают целостностью и, следовательно, не являются командами.Любая триада имеет смысл и может быть выполнена только в определенном контексте. А именно, только после выполнения триад, результаты которых она использует и до тех триад которые используют ее результаты, т.е только в составе своего подмножества. Таким образом, целостностью и неделимостью обладает все подмножество триад в целом, а не отдельные триады.Для сравнения, выполнение любой команды в фон-неймановском или потоковом процессоре не зависит от контекста. Все команды этих процессоров обладают неделимостью и целостностью. Группа команд, реализующая оператор обладает целостностью, но не обладает неделимостью.Как известно, исходное множество операций любого алгоритмического языка изначально зафиксировано и конечно. Множество операторов, которые теоретически могут быть сконструированы с использованием данных операций — потенциально бесконечно. Так как каждая программа имеет свой набор операторов и, соответственно, свою систему команд, то можно сказать, что машина, непосредственно реализующая язык высокого уровня, не имеет фиксированной системы команд.

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