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

 

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

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

clip_image002

Рис. 1.2. Шестиуровневый компьютер. Способ поддержки каждого уровня указан под ним, в скобках дано название соответствующего программного обеспечения

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

На некоторых машинах работа тракта данных контролируется особой про­граммой, которая называется микропрограммой. На других машинах тракт дан­ных контролируется аппаратными средствами. В первых трех изданиях книги мы назвали этот уровень «уровнем микропрограммирования», потому что рань­ше на нем почти всегда находился программный интерпретатор. Поскольку сей­час тракт данных обычно контролируется аппаратным обеспечением, мы изме­нили название, чтобы точнее отразить смысл.

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

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

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

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

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

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

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

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

Уровень 5 обычно состоит из языков, разработанных для прикладных про­граммистов. Такие языки называются языками высокого уровня. Существуют сотни языков высокого уровня. Наиболее известные среди них — С, С++, Java, LISP и Prolog. Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, назы­ваются компиляторами. Отметим, что иногда также имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, напоми­нающий ISA и называемый байт-кодом Java, который затем интерпретируется.

В некоторых случаях уровень 5 состоит из интерпретатора для конкретной прикладной области, например символической логики. Он предусматривает дан­ные и операции для решения задач в этой области, выраженные при помощи специальной терминологии.

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

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

Таненбаум Э. Архитектура компьютера. 5-е изд. (+CD). — СПб.: Питер, 2007. — 844 с: ил.

Предлагаю ознакомиться с аналогичными статьями: