Основные архитектурные особенности
Основные архитектурные особенности современных вычислительных машин
Программы составляются для выполнения на вычислительных системах, при этом традиционно используемые системы, реализующие принцип программного управления Джона фон Неймана (последовательные ЭВМ) [3], в настоящее время разрабатываются так, что программы, написанные для одной последовательной ЭВМ, можно практически без изменений переносить на другие, хотя и здесь, конечно, имеются архитектурные различия, например длина машинного слова. Тем не менее, последовательное программирование достаточно унифицировано и проблемы переноса программ с одной машины на другую не слишком сложны, так как в их основе лежит одна и та же модель организации вычислений, которая может быть проиллюстрирована рис. 1. Здесь программа (коды операций) и обрабатываемые данные хранятся в одной Оперативной Памяти (ОП) – линейном адресном пространстве, где каждой ячейке памяти (например, байту) поставлен во взаимно однозначное соответствие её номер – адрес. Программа выполняется за счет того, что в Счетчик Адреса (СчА) записывается адрес байта, начиная с которого располагается код первой команды программы. Устройство Управления
Рис. 1
(УУ) считывает адрес очередной подлежащей исполнению команды из СчА, обращается по этому адресу и считывает указанный байт, который интерпретируется как код операции, который определяет формат (структуру) команды. Знание кода операции и формата команды позволяет УУ определить, какую же команду надо выполнить, над какими операндами и куда поместить результат операции. Формат команды определяет, сколько операндов у данной операции, где они расположены (в памяти, в регистрах, непосредственно в команде), как должно быть интерпретировано содержимое соответствующих областей памяти, т.е. какого они типа. Вся эта информация передается Арифметико-Логическому Устройству (АЛУ), которое и отрабатывает данную команду. Формат команды также определяет ее длину, и после выборки текущей команды УУ наращивает СчА на ее длину так, что по завершении выполнения текущей команды в СчА находится уже адрес очередной команды (если это не была команда перехода). Таким образом, в последовательных ЭВМ реализуется так называемая нить управления (thread), или же поток команд, обрабатывающих поток данных (операндов), определяемых этими командами.
Другим вариантом является так называемая Гарвардская архитектура, активно использующаяся в системах с RISC-процессорами. Идея ее состоит в разделении памяти для данных и программ, что приводит к заметному ускорению вычислений.
В последнее время архитектура Джона фон Неймана все чаще подвергается критике из-за ее недостатков, и на арену выходят в частности решения, основанные на управлении не потоком команд (программой), а данными.