Введение
Цифровой компьютер — это машина, которая может решать задачи, исполняя данные ей команды. Последовательность команд, описывающих решение определенной задачи, называется программой.Все программы перед исполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее, чем, например:
сложить два числа;
проверить, не является ли число нулем;
скопировать блок данных из одной части памяти компьютера в другую.
Эти примитивные команды в совокупности составляют машинный язык, на котором люди могут общаться с компьютером. Разработчик при создании нового компьютера должен решить, какие команды следует включить в машинный язык этого компьютера. Это зависит от назначения компьютера и от задач, которые он должен решать. Обычно стараются сделать машинные команды как можно проще, чтобы избежать сложностей при разработке компьютера и снизить затраты на необходимую электронику. Большинство машинных языков крайне примитивны, из-за чего писать на них и трудно, и утомительно.
В связи с этим люди пришли к к построению ряда уровней абстракций, каждая из которых надстраивается над абстракцией более низкого уровня. Именно таким образом можно преодолеть сложности и сделать процесс проектирования систематичным и организованным. Мы называем этот подход многоуровневой компьютерной организацией.
Многоуровневая компьютерная организация
Существует огромная разница между тем, что удобно людям, и тем, что могут компьютеры. Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема. Цель данной книги — объяснить, как решить эту проблему.
Языки, уровни и виртуальные машины
Это проблема решается двумя способами.Оба способа подразумевают разработку новых команд, более удобных для человека, чем встроенные машинные команды.Эти новые команды в совокупности формируют язык, который мы будем называть Я1. Встроенные машинные команды тоже формируют язык Я0. Компьютер может исполнять только программы, написанные на его машинном языке Я0.
Первый способ: для исполнения программы написанной на языке Я1 заменить все команды на соответсвующие команды в языке Я0. Тогда компьютер исполнит новую программу написанную на языке Я0. Эта технология называется трансляцией.
Второй способ: создание на языке Я0 программы, которая будет принимать в качестве входных данных, программы на языке Я1. Команды исполняются поочередно, после чего исполняется эквивалентный набор команд на языке Я0. Таким образом, не создается новая программа на языке Я0.
Она называется интерпретацией, а программа, которая осуществляет интерпретацию, называется интерпретатором.
Между трансляцией и интерпретацией много общего. Обе программы в конечном итоге исполняются на языке Я0, но в первом случае программа с Я1 передлывается на Я0, программа на Я1 отбрасывается и в память загружается новая программа Я0 и исполняется. Во время выполнения сгенерированная программа на Я0 управляет работой компьютера.
При интерпретации каждая команда на Я1 перекодируется в Я0 и сразу же исполняется, компьютером управляет интерпретатор для которого программа на Я1 это входные данные.

Современные многоуровневые машины
Современные компьютеры состоят из двух и более уровней, некоторые доходят до шести.
Существует уровень расположенный ниже нулевого, уровень физических устройств. Этот уровень не показан на рисунке т.к. он попадает в сферу электронной техники и, следовательно, не рассматривается в этой книге. На этом уровне находятся транзисторы, которые для разработчиков компьютеров являются примитивами.
Уровень 0 — это аппаратное обеспечение машины. Его электронные схемы исполняют машиннозависимые программы уровня 1. Объекты на этом уровне называют вентилями. У каждого вентиля есть одно или несколько цифровых входных данных (сигналов 0 или 1). Вентиль вычисляет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1бит памяти, который может содержать 0 или 1. Биты памяти, объединенные в группы, например, по 16, 32 или 64, формируют регистры. Каждый регистр может содержать одно двоичное число в определенном диапазоне. Из вентилей также может строиться само ядро вычислительной системы.
Уровень 1 - уровень микроархитектуры. На этом уровне находятся наборы из 8 или 32 регистров, которые формируют локальную память и схему, называемую АЛУ, АЛУ исполняет простые арифметические операции. Регистры вместе с АЛУ формируют тракт данных. по которому поступают данные. Базовая операцию тракта данных выполняется следующим образом - выбирается один или два регистра, АЛУ производит над ними какую-либо операцию, после чего результат помещается в какой-либо регистр. На некоторых машинах работа тракта данных контролируется особой программой, которая называется микропрограммой - это интерпретатор для команд на уровне 2. На других машинах тракт данных управляется напрямую аппаратными средствами. Микропрограмма читает команды из памяти и исполняет их одну за другой, используя при этом тракт данных. Например, при исполнении команды
ADDона вызывается из памяти, ее операнды(аргументы операции, данные которые обрабатываются программой) помещаются в регистры, АЛУ вычисляет сумму, а затем результат направляется туда, где он должен находиться. На компьютере с аппаратным управлением тракта данных происходит такая же процедура, но при этом нет программы, интерпретирующей команды уровня 2.Уровень 2 - уровень архитектуры набора команд. Каждый производитель публикует руководство для компьютеров, которые он продает, под названием «Руководство по машинному языку X», «Принципы работы компьютера Y» и т. п. Подобное руководство содержит информацию именно об этом уровне, а не о более низких уровнях. Описываемый в нем набор машинных команд в действительности исполняется микропрограммой-интерпретатором или аппаратным обеспечением. Если производитель поставляет два интерпретатора для одной машины, он должен издать два руководства по машинному языку, отдельно для каждого интерпретатора.
Уровень 3 - уровень операционной системы. Большинство команд в его языке есть также и на 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 в форме не настолько неприятной, как язык виртуальных машин. Эти программы сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или реально существующей машиной. Программа, которая исполняет трансляцию, называется ассемблером.
Уровень 5 - уровень языка прикладных программистов. Обычно состоит из языков, разработанных для прикладных программистов. Такие языки называются языками высокого уровня(C, C++, Java, Perl, Python, PHP и т.д.). Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, называются компиляторами, хотя в некоторых случаях имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, напоминающий машинные команды и называемый байт-кодом Java, который затем интерпретируется.
Системы счисления
Last updated