Архитектура как интерфейс между уровнями системы
Представление обработки в виде многоэтапного процесса на практике реализуется в виде многоуровневой структуры вычислительной системы; при этом каждому этапу обработки соответствует свой уровень структуры системы. Введение многоуровневой структуры и представление условий согласования между уровнями упрощает проектирование систем и делает возможным независимое проектирование каждого уровня при абстрактном представлении о других уровнях. Таким образом, при проектировании некоторого уровня достаточно знать интерфейсы с соседними уровнями системы. При этом архитектура системы представляется как интерфейс между её уровнями. Такое представление позволяет изменять спецификации на нижних уровнях, не влияя на верхние. Например, программы, написанные на языках высокого уровня, могут без модификации переноситься на платформы с разными машинными командами, если разработаны соответствующие компиляторы, реализующие одно и то же подмножество правил языка на разных платформах.
При заданной спецификации уровня машинных команд можно использовать существующее математическое обеспечение даже при изменениях в проекте на уровне регистровых передач или уровне вентилей.
Семантический разрыв
Под семантическим разрывом [2,6] в первую очередь понимается различие принципов, положенных в основу современных языков программирования высокого уровня, и принципов, определяющих архитектуру ЭВМ. Как правило, компьютеры имеют нежелательно большой семантический разрыв между объектами и операциями, описываемыми в языках, и объектами манипулирования и операциями, которые реализуются аппаратурой. В основном это объясняется тем, что разработчики языков пытаются обеспечить удобство, универсальность или специализацию их использования, вводя, например, операцию сложения двух массивов или сложной обработки графических объектов. Однако для разработчиков
4
компьютера может оказаться неудобным по технологическим, стоимостным или другим (маловостребованности) соображениям реализовать эти объекты и операции языков в архитектуре. Тогда операции, не реализованные в архитектуре, реализуют в компиляторах, что усложняет их и увеличивает нагрузку на их разработчиков, замедляет процесс обработки.
Можно говорить о существовании семантического разрыва между архитектурой и средой использования. Семантический разрыв повышает стоимость ПО, снижает его надёжность, удорожает ОС.
По мере развития технологии плотность упаковки элементов возрастает, а стоимость СБИС падает, что позволяет в некоторой мере уменьшить семантический разрыв за счёт введения в архитектуру МП SIMD - обработки (ММХ, SSE, 3DNOW!), позволившей одной командой обрабатывать несколько пикселов изображения или звуковых пакетов. Этой же цели служит введение в систему команд МП команд поддержки технологий обработки изображений, объектного программирования.
Существует и другая ситуация, когда функциональные возможности нижних уровней превосходят типовые функциональные возможности верхних. Это касается поддержки параллельной обработки, повышенной разрядности. Обычно в стандартных языках отсутствуют средства описания действий над векторами, что заставляет при программировании прибегать к многократному построению циклов.
Принципы фон Неймановской (Принстонской) и Гарвардской
архитектур
ЭВМ, в памяти которых вместе с данными хранятся закодированные команды, получила название вычислительной машины с хранимой в памяти программой. Эта концепция впервые была реализована в машине EDVAC и на долгие годы определила базовые принципы построения последующих поколений ЭВМ. Авторство этой архитектуры закрепилось [3] за математиком фон Нейманом, автором статьи относительно машины EDVAC (1945г.), в которой идея такой архитектуры изложена в законченном виде. Эта архитектура называется также Принстонской, т. к. по её принципам создавались машины в Принстонском университете.
Сущность этой концепции сводится к 4 принципам:
-двоичного кодирования;
-программного управления;
-однородности памяти;
-адресуемости памяти.
Первый принцип означает, что слова (команды и данные) кодируются двоичными цифрами 0 и 1; при этом для данных предусматривается формат, состоящий из поля знака и поля значащих цифр, а для команды - из полей кода операции и кода адреса операнда. Слова команд и данных неразличимы и их интерпретация как команд или данных зависит от источника адреса. Если адрес берётся из счётчика команд (СЧАК, Instruction Pointer), то читается команда и помещается в регистр команд. Если адрес берётся из адресного поля команды, то читаемое слово воспринимается как операнд и помещается в регистр (аккумулятор).
Принцип программного управления предписывает, что алгоритм решения задачи представляется программой, состоящей из последовательности управляющих слов - команд. Команды хранятся в последовательности смежных ячеек памяти и выполняются в естественном (программном) порядке, который может изменяться специальными командами переходов, безусловно, либо по анализу результата выполнения предшествующей команды.
Принцип однородности памяти означает хранение в одной памяти и команд, и данных и их неразличимости. Это свойство обеспечивает формальную возможность изменения команд, обрабатывая их как данные с помощью тех же команд, используемых для обработки чисел. Однако эта возможность не используется из—за непредсказуемости результата.
Принцип адресуемости памяти означает, что структурно основная память состоит из пронумерованных ячеек, которые произвольно доступны в любой момент времени. Номер ячейки является её адресом. В современных системах чётный / нечётный адрес означает доступ к байту, кратный 2—к слову(2 байта), кратный 4 и 8 - к двойному (4 байта) и к квадрослову (8 байт), соответственно.
Гарвардская архитектура, заключающаяся в хранении команд в разных памятях, позволяет избежать конфликтов при одновременной выборке команд и данных, которые были бы неизбежны при размещении их в одной памяти. В современных ВС, имеющих конвейерную или суперскалярную архитектуры, такое разделение необходимо, так как операции выборки команд и данных совмещаются во времени. Поскольку разделение данных и команд происходит на уровне первичных кэш-памятей, то при Гарвардской архитектуре для кэш-команд применяется более простой протокол обеспечения когерентности. Гарвардская архитектура восходит к ЭВМ Марк-1, разработанной в Гарвардском университете.
