Введение

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

  • сложить два числа;

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

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

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

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

Многоуровневая компьютерная организация

Существует огромная разница между тем, что удобно людям, и тем, что могут компьютеры. Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема. Цель данной книги — объяснить, как решить эту проблему.

Языки, уровни и виртуальные машины

Это проблема решается двумя способами.Оба способа подразумевают разработку новых команд, более удобных для человека, чем встроенные машинные команды.Эти новые команды в совокупности формируют язык, который мы будем называть Я1Я_1. Встроенные машинные команды тоже формируют язык Я0Я_0. Компьютер может исполнять только программы, написанные на его машинном языке Я0.

Первый способ: для исполнения программы написанной на языке Я1Я_1 заменить все команды на соответсвующие команды в языке Я0Я_0. Тогда компьютер исполнит новую программу написанную на языке Я0Я_0. Эта технология называется трансляцией.

Второй способ: создание на языке Я0Я_0 программы, которая будет принимать в качестве входных данных, программы на языке Я1Я_1. Команды исполняются поочередно, после чего исполняется эквивалентный набор команд на языке Я0Я_0. Таким образом, не создается новая программа на языке Я0Я_0.

Она называется интерпретацией, а программа, которая осуществляет интерпретацию, называется интерпретатором.

Между трансляцией и интерпретацией много общего. Обе программы в конечном итоге исполняются на языке Я0Я_0, но в первом случае программа с Я1Я_1 передлывается на Я0Я_0, программа на Я1Я_1 отбрасывается и в память загружается новая программа Я0Я_0 и исполняется. Во время выполнения сгенерированная программа на Я0Я_0 управляет работой компьютера.

При интерпретации каждая команда на Я1Я_1 перекодируется в Я0Я_0 и сразу же исполняется, компьютером управляет интерпретатор для которого программа на Я1Я_1 это входные данные.

Многоуровневая машина

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

Современные компьютеры состоят из двух и более уровней, некоторые доходят до шести.

Существует уровень расположенный ниже нулевого, уровень физических устройств. Этот уровень не показан на рисунке т.к. он попадает в сферу электронной техники и, следовательно, не рассматривается в этой книге. На этом уровне находятся транзисторы, которые для разработчиков компьютеров являются примитивами.

  • Уровень 0 — это аппаратное обеспечение машины. Его электронные схемы исполняют машиннозависимые программы уровня 1. Объекты на этом уровне называют вентилями. У каждого вентиля есть одно или несколько цифровых входных данных (сигналов 00 или 11). Вентиль вычисляет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1бит1 бит памяти, который может содержать 00 или 11. Биты памяти, объединенные в группы, например, по 1616, 3232 или 6464, формируют регистры. Каждый регистр может содержать одно двоичное число в определенном диапазоне. Из вентилей также может строиться само ядро вычислительной системы.

  • Уровень 1 - уровень микроархитектуры. На этом уровне находятся наборы из 88 или 3232 регистров, которые формируют локальную память и схему, называемую АЛУ, АЛУ исполняет простые арифметические операции. Регистры вместе с АЛУ формируют тракт данных. по которому поступают данные. Базовая операцию тракта данных выполняется следующим образом - выбирается один или два регистра, АЛУ производит над ними какую-либо операцию, после чего результат помещается в какой-либо регистр. На некоторых машинах работа тракта данных контролируется особой программой, которая называется микропрограммой - это интерпретатор для команд на уровне 22. На других машинах тракт данных управляется напрямую аппаратными средствами. Микропрограмма читает команды из памяти и исполняет их одну за другой, используя при этом тракт данных. Например, при исполнении команды ADD она вызывается из памяти, ее операнды(аргументы операции, данные которые обрабатываются программой) помещаются в регистры, АЛУ вычисляет сумму, а затем результат направляется туда, где он должен находиться. На компьютере с аппаратным управлением тракта данных происходит такая же процедура, но при этом нет программы, интерпретирующей команды уровня 2.

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

  • Уровень 3 - уровень операционной системы. Большинство команд в его языке есть также и на 22 уровне(команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор команд, другая организация памяти, способность исполнять две и более программ одновременно и некоторые другие. При построении уровня 3 возможно большее разнообразие, чем при построении уровней 11 и 22. Новые средства, появившиеся на уровне 33, исполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды уровня 33, идентичные командам уровня 22, исполняются микропрограммой или аппаратным обеспечением, но не операционной системой. Другими словами, одна часть команд уровня 33 интерпретируется операционной системой, а другая часть — микропрограммой. Вот почему этот уровень считается гибридным.

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

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

Шестиуровневый компьютер. Способ поддержки каждого уровня указан под ним, в скобках дано название соответствующего программного обеспечения
  • Уровень 4 - уровень ассемблера. Представляет собой символическую форму одного из языков более низкого уровня. На этом уровне человек может писать программы для уровней 11, 22 и 33 в форме не настолько неприятной, как язык виртуальных машин. Эти программы сначала транслируются на язык уровня 11, 22 или 33, а затем интерпретируются соответствующей виртуальной или реально существующей машиной. Программа, которая исполняет трансляцию, называется ассемблером.

  • Уровень 5 - уровень языка прикладных программистов. Обычно состоит из языков, разработанных для прикладных программистов. Такие языки называются языками высокого уровня(C, C++, Java, Perl, Python, PHP и т.д.). Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, называются компиляторами, хотя в некоторых случаях имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, напоминающий машинные команды и называемый байт-кодом Java, который затем интерпретируется.

Системы счисления

Last updated

Was this helpful?