Современные многоуровневые машины

Аппаратное обеспечение

 

Цифровой компьютер – это машина, которая может решать задачи, выполняя данные ей команды. Последовательность команд, описывающих решение опре­деленной задачи, называется программой.Электронные схемы каждого компью­тера могут распознавать и выполнять ограниченный набор простых команд. Все программы перед выполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее, чем, например:

· сложить 2 числа;

· проверить, не является ли число нулем;

· скопировать блок данных из одной части памяти компьютера в другую.

Эти примитивные команды в совокупности составляют язык, на котором лю­ди могут общаться с компьютером. Такой язык называется машинным.Разработ­чик при создании нового компьютера должен решить, какие команды включить в машинный язык этого компьютера. Это зависит от назначения компьютера и от задач, которые он должен решать. Обычно стараются сделать машинные ко­манды как можно проще, чтобы избежать сложностей при разработке компьюте­ра и снизить затраты на необходимую электронику. Большинство машинных языков крайне примитивны, из-за чего писать на них и трудно, и утомительно.

Современные многоуровневые машины

Большинство современных компьютеров состоит из двух и более уровней. Су­ществуют машины даже с шестью уровнями (рисунок 1). Уровень 0 – это аппарат­ное обеспечение машины. Электронные схемы на уровне 1 выполняют машин­но-зависимые программы.

На самом нижнем уровне, а именно, на цифро­вом логическом уровне,объекты называются вентилями.Хотя вентили состо­ят из аналоговых компонентов, таких как транзисторы, они могут быть точно смоделированы как цифровые устройства. У каждого вентиля есть один или не­сколько цифровых входов (сигналов, представляющих 0 или 1). Вентиль вычисляет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 бит памяти, который может содержать 0 или 1. Биты памяти, объединенные в группы, например, по 16, 32 или 64, формируют регистры.Каждый регистр мо­жет содержать одно двоичное число до определенного предела. Из вентилей так­же может состоять сам компьютер.

Рисунок 1 – Шестиуровневый компьютер

 

Следующий уровень называется уровнем микроархитектуры.На этом уровне находятся совокупности 8 или 32 регистров, которые формируют локальную па­мять и схему, называемую АЛУ (арифметико-логическое устройство).АЛУ выполняет простые арифметические операции. Регистры вместе с АЛУ форми­руют тракт данных,по которому поступают данные. Тракт данных работает сле­дующим образом. Выбирается один или два регистра, АЛУ производит над ними какую-либо операцию, например сложения, после чего результат вновь помеща­ется в один из этих регистров.

На некоторых машинах работа тракта данных контролируется особой про­граммой, которая называется микропрограммой.На других машинах тракт дан­ных контролируется аппаратными средствами.

На машинах, где тракт данных контролируется программным обеспечением, микропрограмма – это интерпретатор для команд на уровне 2. Микропрограмма вызывает команды из памяти и выполняет их одну за другой, используя при этом тракт данных. Например, при выполнении команды ADD (сумма) она вызывается из памяти, ее операнды помещаются в регистры, АЛУ вычисляет сумму, а затем ре­зультат переправляется обратно. На компьютере с аппаратным контролем тракта данных происходит такая же процедура, но при этом нет программы, интерпре­тирующей команды уровня 2.

Уровень 2 называется уровнем архитектуры набора команд.Каждый производитель публикует руководство для компьютеров, которые он продает, под названием «Руководство по машинному языку X», «Принципы работы компью­тера У» и т. п. Подобное руководство содержит информацию именно об этом уровне. Описываемый в нем набор машинных команд в действительности вы­полняется микропрограммой-интерпретатором или аппаратным обеспечением.

Следующий уровень обычно является гибридным. Большинство команд в его языке есть также и на уровне архитектуры набора команд (команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор ко­манд, другая организация памяти, способность выполнять две и более программы одновременно и некоторые другие. При построении уровня 3 возможно больше вариантов, чем при построении уровней 1 и 2.

Новые средства, появившиеся на уровне 3, выполняются интерпретатором, ко­торый работает на втором уровне. Этот интерпретатор был когда-то назван опе­рационной системой. Команды уровня 3, идентичные командам уровня 2, выпол­няются микропрограммой или аппаратным обеспечением, но не операционной системой. Другими словами, одна часть команд уровня 3 интерпретируется опе­рационной системой, а другая часть – микропрограммой. Вот почему этот уро­вень считается гибридным, этот уровень называется уровнем операци­онной системы.

Между уровнями 3 и 4 есть существенная разница. Нижние три уровня заду­маны не для того, чтобы с ними работал обычный программист. Они изначально ориентированы на интерпретаторы и трансляторы, поддерживающие более вы­сокие уровни. Эти трансляторы и интерпретаторы составляются так называемыми системными программистами,которые специализируются на разработке новых виртуальных машин. Уровни с четвертого и выше предназначены для приклад­ных программистов, решающих конкретные задачи.

Еще одно изменение, появившееся на уровне 4 – механизм поддержки более высоких уровней. Уровни 2 и 3 обычно интерпретируются, а уровни 4, 5 и выше, обычно, хотя и не всегда, транслируются.

Уровень 4 представляет собой символическую форму одного из языков более низкого уровня. На этом уровне можно писать программы в приемлемой для че­ловека форме. Эти программы сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или фактически суще­ствующей машиной. Программа, которая выполняет трансляцию, называется ас­семблером.

Уровень 5 обычно состоит из языков, разработанных для прикладных про­граммистов. Такие языки называются языками высокого уровня.Существуют сотни языков высокого уровня. Наиболее известные среди них – С, С++, Java, Lisp и Ргоlog. Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, назы­ваются компиляторами.

Таким образом, компьютер проектируется как иерархическая структура уров­ней, которые надстраиваются друг над другом. Каждый уровень представляет со­бой определенную абстракцию различных объектов и операций.

Набор типов данных, операций и характеристик каждого отдельно взятого уровня называется архитектурой.Архитектура связана с программными аспек­тами. Например, сведения о том, сколько памяти можно использовать при напи­сании программы, – часть архитектуры. Аспекты реализации (например, техно­логия, применяемая при реализации памяти) не являются частью архитектуры. Изучая методы проектирования программных элементов компьютерной систе­мы, мы изучаем компьютерную архитектуру.На практике термины «компью­терная архитектура» и «компьютерная организация» употребляются как сино­нимы.