Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 2. Многуровневая организация компьютеров.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
131.07 Кб
Скачать

Глава 2. Многоуровневая организация компьютера. Архитектура и структура компьютера

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

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

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

Это простое наблюдение с течением времени привело к построению ряда уровней абстракций, каждая из которых надстраивается над абстракцией более низкого уровня. Именно таким образом можно преодолеть сложности при обще­нии с компьютером. Такой подход называют многоуровневой организацией компьютерна.

2.1 Сущность многоуровневой организации компьютера

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

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

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

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

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

При интерпретации каждая команда программы на языке Я1 последовательно анализируется и выполняется соответствующей процедурой, написанной на языке Я0. В отличие от трансляции, здесь не создается новая про­грамма на языке Я0. С точки зрения интерпретатора, программа на языке Я1 есть не что иное, как «сырые» входные данные. Оба подхода широко используются как вместе, так и по отдельности.

Впрочем, чем мыслить категориями трансляции и интерпретации, гораздо проще представить себе существование гипотетического (виртуального) компьютера, для которого машинным языком является язык Я1. Назовем та­кой виртуальный компьютер К1, а виртуальный компьютер для работы с языком Я0К0. Если бы такой компьютер К1 можно было бы сконструировать без больших денежных затрат, язык Я0, да и компьютер, который выполняет программы на язы­ке Я0, были бы не нужны. Можно было бы просто писать программы на языке Я1, а компьютер сразу бы их выполнял. Даже с учетом того, что создать вирту­альный компьютер, возможно, не удастся (из-за чрезмерной дороговизны или труд­ностей разработки), программисты вполне могут писать ориентированные на него про­граммы. Эти программы будут транслироваться или интерпретироваться программой, написанной на языке Я0, а сама она могла бы выполняться сущест­вующим компьютером. Другими словами, можно писать программы для вирту­альных компьютеров так, как будто эти компьютеры реально существуют.

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

Очевидное решение проблемы — создание еще одного набора команд, кото­рый в большей степени, чем язык Я1 ориентирован на человека и в меньшей степе­ни на компьютер. Этот третий набор команд также формирует язык, который можно назвать назвать Я2, а соответствующый виртуальный компьютер — К2. Человек может писать программы на языке Я2, как будто виртуальный компьютер для рабо­ты с машинным языком Я2 действительно существует. Такие программы могут либо транслироваться на язык Я1, либо выполняться интерпретатором, напи­санным на языке Я1.

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

Таблица 2.1.

Уровень n

Виртуальный компьютер Кn с машинным языком Яn

Программы на языке Яn либо интерпретируются программой –интерпретатором, работающей на

компьютере более низкого уровня, либо транслируются на машинный язык компьютера более низкого уровня

.

.

.

Уровень 3

Виртуальный компьютер К3 с машинным языком Я3

Программы на языке Я3 либо интерпретируются программой –интерпретатором, работающей на

компьютере более низкого уровня К2, либо транслируются на машинный язык компьютера более низкого уровня Я2

уровня К2

Уровень 2

Виртуальный компьютер К2 с машинным языком Я2

Программы на языке Я2 либо интерпретируются программами –интерпретаторами, работающими на

компьютерах К1 или К0, либо транслируются на машинные языки более низкого уровня Я1 или Я0

Уровень 1

Виртуальный компьютер К1 с машинным языком Я1

Программы на языке Я1 либо интерпретируются программой –интерпретатором, работающей на

компьютере более низкого уровня К0, либо транслируются на машинный язык более низкого уровня Я0

Уровень 0

Виртуальный компьютер К0 с машинным языком Я0

Программы на языке К0 непосредственно выполняются электронными схемами

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

Между языком и виртуальным компьютером существует важная зависимость. Каждый компьютер поддерживает какой-то определенный машинный язык, состоящий из всех команд, который этот компьютер может выполнять. В сущности, компьютер определяет язык. Сходным образом язык определяет компьютер, который может выполнять все программы, написанные на этом языке. Компьютер, определяемый тем или иным языком, очень сложно и дорого конструировать из электронных схем, однако представить себе такой компьютер можно. Компьютер для работы с машинным языком С или С++ был бы слишком сложным, но в принципе его можно разработать, учитывая высокий уровень современных технологий. Одна­ко существуют веские причины не создавать такой компьютер — это крайне не­эффективное, по сравнению с другими, решение. Действительно, технология должна быть не только осуществимой, но и рациональной.

Компьютер с п уровнями можно рассматривать как п разных виртуальных компьютеров, у каждого из которых есть свой машинный язык. Термины «уровень» и «виртуальный компьютер» будут использоваться как синонимы. Только про­граммы, написанные на языке Я0, могут выполняться компьютером без трансляции или интерпретации. Программы, написанные на языках Я1, Я2, … Яп, должны прохо­дить через интерпретатор более низкого уровня или транслироваться на язык, соответствующий более низкому уровню.

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

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