Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 3

Середина 60-х гг. является временем внедрения в ЭЦВМ интегральных схем. В 70-х гг. создаются машины, элементной базой которых являются большие интегральные схемы. С 80-х гг. и до наших дней длится эра ЭЦВМ на сверхбольших интегральных схемах.

В непосредственной связи с развитием элементной базы происходило развитие алгоритмической и логической структуры ЭЦВМ, которое мы не будем прослеживать. Отметим, что примерно в 50-х гг. Джон фон Нейман пришёл к проекту, который известен сейчас как фон-неймановская вычислительная машина и до наших дней лежит в основе большинства ЭЦВМ.


Машина фон Неймана состояла из пяти основных частей (рис. 1.1): памяти, арифметико-логического устройства (АЛУ), устройства управления, а также устройств ввода и вывода.

Внутри АЛУ находился особый внутренний регистр, так называемый аккумулятор. Типичная команда добавляла слово из памяти к значению в аккумуляторе или сохраняла содержимое аккумулятора в памяти.

1.3.  Многоуровневая организация вычислительных систем

[5]

1.3.1. Общие принципы

Существует принципиальная разница между тем, что удобно для людей, и тем, что «удобно» для машин. Человек хочет сделать одно, но машина может сделать только другое. Большинство ЭЦВМ могут воспринимать команды не сложнее, чем:

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

—  сравнить два числа;

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

Ясно, что описание алгоритма решения проблемы на таком языке — дело чрезвычайно малопродуктивное.

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

Обозначим посредством Я0 язык, который образуют встроенные машинные команды. Новый язык, более удобный для человека, чем Я0, обозначим Я1.

Упомянутые два способа решения проблемы различаются тем, каким образом машина будет выполнять команды языка Я1.

Первый способ выполнения программы, написанной на языке Я1, — замена каждой команды эквивалентным набором команд языка Я0. В этом случае машина выполняет новую программу, написанную на языке Я0, вместо старой программы, написанной на Я1. Данный способ называется трансляцией, а программа, переводящая программы с языка Я1 на язык Я0транслятором.

Второй способ — написание программы на языке Я0, которая берёт программы, написанные на языке Я1, в качестве входных данных, рассматривает каждую команду по очереди и сразу выполняет эквивалентный набор команд языка Я0. Этот способ, не требующий составления новой программы на языке Я0, называется интерпретацией, а программа, осуществляющая интерпретацию, называется интерпретатором.

Различие между трансляцией и интерпретацией состоит в том, что при трансляции вся программа на языке Я1 преобразуется в программу на языке Я0, исходная программа отбрасывается, новая программа загружается в память ЭЦВМ и выполняется. При интерпретации же каждая команда программы на языке Я1 переводится на язык Я0 и сразу же выполняется. Здесь не создаётся новая программа на языке Я0, а происходит последовательная перекодировка и выполнение команд.

Широко используются как оба эти способа по отдельности, так и их комбинация. Так, например, программы на языке C, как правило, транслируются, на командных языках — интерпретируются, для Basic распространены и трансляторы, и интерпретаторы. Для программ на языке Matlab в популярных пакетах используется комбинация двух способов: сначала программа транслируется в так называемый псевдокод, который затем интерпретируется. Аналогичная ситуация имеет место с языком Java, в котором программы сначала транслируются в так называемый байт-код, который на ПЭВМ типа IBM PC не выполняется непосредственно, а интерпретируется с помощью так называемой виртуальной машины Java (Java Virtual Machine).

Однако для понимания принципа многоуровневой организации вычислительной системы (ВС) — системы аппаратных и программных средств — важно не различие между трансляцией и интерпретацией, а общее их свойство: в обоих случаях ЭЦВМ в конечном итоге выполняет набор команд языка Я0 — других она выполнять не умеет, — эквивалентных исходной программе на языке Я1.