- •Глава 2. Многоуровневая организация компьютера. Архитектура и структура компьютера
- •2.1 Сущность многоуровневой организации компьютера
- •2.2. Современные многоуровневые компьютеры
- •2.3. Развитие многоуровневых компьютеров
- •2.4. Аппаратное и программное обеспечение логически эквивалентны
- •2.5. Изобретение микропрограммирования
- •2.6. Изобретение операционной системы
- •2.7. Смещение функциональности на уровень микрокода
- •2.8. О терминах "архитектура и структура" компьютера
- •2.9. Методы исследования сложных систем
- •Контрольные вопросы
2.2. Современные многоуровневые компьютеры
Большинство современных компьютеров состоит из двух и более уровней. Существуют компьютеры даже с шестью уровнями (таблица 2.2).
Таблица 2.2. Шестиуровневый компьютер. Способ поддержки каждого уровня показан в строке под ним, в скобках дано название соответствующего программного обеспечения.
Таблица 2.2.
-
Уровень 5
Уровень языка прикладных программистов
Трансляция (компилятор)
Уровень 4
Уровень ассемблера
Трансляция (ассемблер)
Уровень 3
Уровень операционной системы
Частичная интерпретация (операционная система)
Уровень 2
Уровень архитектуры набора команд
Интерпретация (микропрограмма) или непосредственное выполнение
Уровень 1
Уровень структуры
Аппаратное обеспечение
Уровень 0
Цифровой логический уровень
Ради полноты нужно упомянуть о существовании еще одного уровня, который расположен ниже нулевого. Этот уровень не показан в таблице 2.2, так как он попадает в сферу электронной техники и, следовательно, не рассматривается в этом учебном пособии. Он называется уровнем физических устройств. На этом уровне находятся транзисторы, которые для разработчиков компьютеров являются примитивами. Объяснить, как работают транзисторы, — задача физики.
Уровень 0 — это аппаратное обеспечение компьютера. На этом уровне объекты называются вентилями. Хотя вентили состоят из аналоговых компонентов, таких как транзисторы, они могут быть точно смоделированы как цифровые устройства. У каждого вентиля есть один или несколько цифровых входов (сигналов, представляющих 0 или 1). Вентиль выполняет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 разряд (бит) памяти, который может содержать 0 или 1. Разряды памяти, объединенные в группы, например, по 16, 32 или 64, формируют регистры. Каждый регистр может содержать одно двоичное число до определенного предела. Из вентилей также может состоять сам компьютер.
Следующий уровень называется уровнем структуры. Электронные схемы на уровне 1 выполняют машинно-зависимые программы. На этом уровне находятся совокупности регистров, которые формируют локальную память и схемы, называемые арифметико-логическими устройствами (АЛУ). АЛУ выполняют арифметические и другие операции. Регистры вместе с АЛУ формируют тракт данных, по которому поступают данные. Тракт данных работает следующим образом. Выбирается один или два регистра, АЛУ производит над их содержимым какую-либо операцию, например сложение, после чего результат вновь помещается в один из этих регистров.
В одних компьютерах работа тракта данных контролируется особой программой, которая называется микропрограммой. В других компьютерах тракт данных контролируется аппаратными средствами.
В компьютерах, где тракт данных контролируется программным обеспечением, микропрограмма — это интерпретатор для команд на уровне 2. Микропрограмма вызывает команды из памяти и выполняет их одну за другой, используя при этом тракт данных. Например, при выполнении команды «сложение» (ADD) она вызывается из памяти, ее операнды помещаются в регистры, АЛУ вычисляет сумму, а затем результат переправляется обратно. На компьютере с аппаратным контролем тракта данных происходит такая же процедура, но при этом нет программы, интерпретирующей команды уровня 2.
Уровень 2 называют уровнем архитектуры набора команд. Для каждого компьютера имеется подробное руководство, которое содержит информацию именно об этом уровне. Описываемый в нем набор машинных команд в действительности выполняется микропрограммой-интерпретатором или аппаратным обеспечением. Если производитель поставляет два интерпретатора для одного компьютера, он должен разработать два руководства по машинному языку, отдельно для каждого интерпретатора.
Следующий уровень обычно является гибридным. Большинство команд в его языке есть также и на уровне архитектуры набора команд (команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор команд, другая организация памяти, способность выполнять две и более программы одновременно и некоторые другие. При построении уровня 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 сначала транслируются на язык, называемый байт-кодом Java, который затем интерпретируется.
В некоторых случаях уровень 5 состоит из интерпретатора для конкретной прикладной области, например символической логики. Он предусматривает данные и операции для решения задач в этой области, выраженные при помощи специальной терминологии.
Таким образом, компьютер проектируется как иерархическая структура уровней, которые надстраиваются друг над другом. Каждый уровень представляет собой определенную абстракцию различных объектов и операций. Рассматривая компьютер подобным образом, можно не принимать во внимание ненужные детали и, таким образом, сделать сложный предмет более простым для понимания.
Набор типов данных, операций и характеристик каждого отдельно взятого уровня называется его архитектурой. Архитектура связана с программными аспектами. Например, сведения о том, сколько памяти можно использовать при написании программы, — часть архитектуры. Аспекты реализации (например, технология, применяемая при реализации памяти) не являются частью архитектуры. Изучая методы проектирования программных элементов компьютерной системы, изучают компьютерную архитектуру. На практике термины «компьютерная архитектура» и «компьютерная организация» употребляются как синонимы.
