Введение
Last updated
Was this helpful?
Last updated
Was this helpful?
Цифровой компьютер — это машина, которая может решать задачи, исполняя данные ей команды. Последовательность команд, описывающих решение определенной задачи, называется программой.Все программы перед исполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее, чем, например:
сложить два числа;
проверить, не является ли число нулем;
скопировать блок данных из одной части памяти компьютера в другую.
Эти примитивные команды в совокупности составляют машинный язык, на котором люди могут общаться с компьютером. Разработчик при создании нового компьютера должен решить, какие команды следует включить в машинный язык этого компьютера. Это зависит от назначения компьютера и от задач, которые он должен решать. Обычно стараются сделать машинные команды как можно проще, чтобы избежать сложностей при разработке компьютера и снизить затраты на необходимую электронику. Большинство машинных языков крайне примитивны, из-за чего писать на них и трудно, и утомительно.
В связи с этим люди пришли к к построению ряда уровней абстракций, каждая из которых надстраивается над абстракцией более низкого уровня. Именно таким образом можно преодолеть сложности и сделать процесс проектирования систематичным и организованным. Мы называем этот подход многоуровневой компьютерной организацией.
Существует огромная разница между тем, что удобно людям, и тем, что могут компьютеры. Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема. Цель данной книги — объяснить, как решить эту проблему.
Это проблема решается двумя способами.Оба способа подразумевают разработку новых команд, более удобных для человека, чем встроенные машинные команды.Эти новые команды в совокупности формируют язык, который мы будем называть . Встроенные машинные команды тоже формируют язык . Компьютер может исполнять только программы, написанные на его машинном языке Я0.
Первый способ: для исполнения программы написанной на языке заменить все команды на соответсвующие команды в языке . Тогда компьютер исполнит новую программу написанную на языке . Эта технология называется трансляцией.
Второй способ: создание на языке программы, которая будет принимать в качестве входных данных, программы на языке . Команды исполняются поочередно, после чего исполняется эквивалентный набор команд на языке . Таким образом, не создается новая программа на языке .
Она называется интерпретацией, а программа, которая осуществляет интерпретацию, называется интерпретатором.
Между трансляцией и интерпретацией много общего. Обе программы в конечном итоге исполняются на языке , но в первом случае программа с передлывается на , программа на отбрасывается и в память загружается новая программа и исполняется. Во время выполнения сгенерированная программа на управляет работой компьютера.
При интерпретации каждая команда на перекодируется в и сразу же исполняется, компьютером управляет интерпретатор для которого программа на это входные данные.
Современные компьютеры состоят из двух и более уровней, некоторые доходят до шести.
Существует уровень расположенный ниже нулевого, уровень физических устройств. Этот уровень не показан на рисунке т.к. он попадает в сферу электронной техники и, следовательно, не рассматривается в этой книге. На этом уровне находятся транзисторы, которые для разработчиков компьютеров являются примитивами.
Уровень 0 — это аппаратное обеспечение машины. Его электронные схемы исполняют машиннозависимые программы уровня 1. Объекты на этом уровне называют вентилями. У каждого вентиля есть одно или несколько цифровых входных данных (сигналов или ). Вентиль вычисляет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют памяти, который может содержать или . Биты памяти, объединенные в группы, например, по , или , формируют регистры. Каждый регистр может содержать одно двоичное число в определенном диапазоне. Из вентилей также может строиться само ядро вычислительной системы.
Уровень 1 - уровень микроархитектуры. На этом уровне находятся наборы из или регистров, которые формируют локальную память и схему, называемую АЛУ, АЛУ исполняет простые арифметические операции. Регистры вместе с АЛУ формируют тракт данных. по которому поступают данные. Базовая операцию тракта данных выполняется следующим образом - выбирается один или два регистра, АЛУ производит над ними какую-либо операцию, после чего результат помещается в какой-либо регистр. На некоторых машинах работа тракта данных контролируется особой программой, которая называется микропрограммой - это интерпретатор для команд на уровне . На других машинах тракт данных управляется напрямую аппаратными средствами. Микропрограмма читает команды из памяти и исполняет их одну за другой, используя при этом тракт данных. Например, при исполнении команды ADD
она вызывается из памяти, ее операнды(аргументы операции, данные которые обрабатываются программой) помещаются в регистры, АЛУ вычисляет сумму, а затем результат направляется туда, где он должен находиться. На компьютере с аппаратным управлением тракта данных происходит такая же процедура, но при этом нет программы, интерпретирующей команды уровня 2.
Уровень 2 - уровень архитектуры набора команд. Каждый производитель публикует руководство для компьютеров, которые он продает, под названием «Руководство по машинному языку X», «Принципы работы компьютера Y» и т. п. Подобное руководство содержит информацию именно об этом уровне, а не о более низких уровнях. Описываемый в нем набор машинных команд в действительности исполняется микропрограммой-интерпретатором или аппаратным обеспечением. Если производитель поставляет два интерпретатора для одной машины, он должен издать два руководства по машинному языку, отдельно для каждого интерпретатора.
Уровень 3 - уровень операционной системы. Большинство команд в его языке есть также и на уровне(команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор команд, другая организация памяти, способность исполнять две и более программ одновременно и некоторые другие. При построении уровня 3 возможно большее разнообразие, чем при построении уровней и . Новые средства, появившиеся на уровне , исполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды уровня , идентичные командам уровня , исполняются микропрограммой или аппаратным обеспечением, но не операционной системой. Другими словами, одна часть команд уровня интерпретируется операционной системой, а другая часть — микропрограммой. Вот почему этот уровень считается гибридным.
Между уровнями и есть принципиальная разница. Нижние три уровня не предназначены для использования рядовыми программистами. Они изначально ориентированы на интерпретаторы и трансляторы, обеспечивающие работу на более высоких уровнях. Эти трансляторы и интерпретаторы создаются системными программистами, которые специализируются на разработке новых виртуальных машин. Уровни с четвертого и выше предназначены для прикладных программистов, решающих конкретные задачи. На уровне существует механизм поддержки более высоких уровней. Уровни и всегда интерпретируются, а уровни , и выше обычно (хотя и не всегда) транслируются.
Другое отличие между уровнями 1, 2, 3 и уровнями 4, 5 и выше — специфика языка. Машинные языки уровней , и — цифровые. Программы, написанные на этих языках, состоят из длинных рядов цифр, которые воспринимаются компьютерами, но малопонятны для людей. Начиная с уровня , языки содержат слова и сокращения, понятные человеку.
Уровень 4 - уровень ассемблера. Представляет собой символическую форму одного из языков более низкого уровня. На этом уровне человек может писать программы для уровней , и в форме не настолько неприятной, как язык виртуальных машин. Эти программы сначала транслируются на язык уровня , или , а затем интерпретируются соответствующей виртуальной или реально существующей машиной. Программа, которая исполняет трансляцию, называется ассемблером.
Уровень 5 - уровень языка прикладных программистов. Обычно состоит из языков, разработанных для прикладных программистов. Такие языки называются языками высокого уровня(C, C++, Java, Perl, Python, PHP и т.д.). Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, называются компиляторами, хотя в некоторых случаях имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, напоминающий машинные команды и называемый байт-кодом Java, который затем интерпретируется.