Глава 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, … Яп, должны прохо­дить через интерпретатор более низкого уровня или транслироваться на язык, соответствующий более низкому уровню.

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

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

 

 

2.2. Современные многоуровневые компьютеры

 

Большинство современных компьютеров состоит из двух и более уровней. Существуют компьютеры даже с шестью уровнями (таблица 2.2).

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

 

Таблица 2.2.

Уровень 5   Уровень языка прикладных программистов
Трансляция (компилятор)  
Уровень 4     Уровень ассемблера
Трансляция (ассемблер)
Уровень 3     Уровень операционной системы
Частичная интерпретация (операционная система)  
Уровень 2   Уровень архитектуры набора команд
Интерпретация (микропрограмма) или непосредственное выполнение
Уровень 1 Уровень структуры
Аппаратное обеспечение
Уровень 0 Цифровой логический уровень

 

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

Уровень 0 — это аппарат­ное обеспечение компьютера. На этом уровне объекты называются вентилями. Хотя вентили состо­ят из аналоговых компонентов, таких как транзисторы, они могут быть точно смоделированы как цифровые устройства. У каждого вентиля есть один или не­сколько цифровых входов (сигналов, представляющих 0 или 1). Вентиль выполняет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 разряд (бит) памяти, который может содержать 0 или 1. Разряды памяти, объединенные в группы, например, по 16, 32 или 64, формируют регистры. Каждый регистр мо­жет содержать одно двоичное число до определенного предела. Из вентилей так­же может состоять сам компьютер.

Следующий уровень называется уровнем структуры. Электронные схемы на уровне 1 выполняют машин­но-зависимые программы. На этом уровне находятся совокупности регистров, которые формируют локальную па­мять и схемы, называемые арифметико-логическими устройствами (АЛУ). АЛУ выполняют арифметические и другие операции. Регистры вместе с АЛУ форми­руют тракт данных, по которому поступают данные. Тракт данных работает сле­дующим образом. Выбирается один или два регистра, АЛУ производит над их содержимым какую-либо операцию, например сложение, после чего результат вновь помеща­ется в один из этих регистров.

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

В компьютерах, где тракт данных контролируется программным обеспечением, микропрограмма — это интерпретатор для команд на уровне 2. Микропрограмма вызывает команды из памяти и выполняет их одну за другой, используя при этом тракт данных. Например, при выполнении команды «сложение» (ADD) она вызывается из памяти, ее операнды помещаются в регистры, АЛУ вычисляет сумму, а затем ре­зультат переправляется обратно. На компьютере с аппаратным контролем тракта данных происходит такая же процедура, но при этом нет программы, интерпре­тирующей команды уровня 2.

Уровень 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, а затем интерпретируются соответствующим виртуальным или фактически суще­ствующим компьютером. Программа, которая выполняет трансляцию, называется ас­семблером.

Уровень 5 обычно состоит из языков, разработанных для прикладных программистов. Такие языки называются языками высокого уровня. Существует много языков высокого уровня. Некоторые из них — С, С++, Java, LISP, Prolog. Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, назы­ваются компиляторами. Отметим, что иногда также имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, называемый байт-кодом Java, который затем интерпретируется.

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

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

Набор типов данных, операций и характеристик каждого отдельно взятого уровня называется его архитектурой. Архитектура связана с программными аспек­тами. Например, сведения о том, сколько памяти можно использовать при напи­сании программы, — часть архитектуры. Аспекты реализации (например, техно­логия, применяемая при реализации памяти) не являются частью архитектуры. Изучая методы проектирования программных элементов компьютерной систе­мы, изучают компьютерную архитектуру. На практике термины «компью­терная архитектура» и «компьютерная организация» употребляются как сино­нимы.

 

 

2.3. Развитие многоуровневых компьютеров

 

История развития многоуровневых компьютеров показывает как количество и природа уровней менялись с годами. Программы, написанные на машинном языке (уровень 1), могут сразу без применения интерпретаторов и трансляторов выполняться электронными схемами компью­тера (уровень 0). Эти электронные схемы вместе с памятью и средствами вво­да-вывода формируют аппаратное обеспечение. Аппаратное обеспечение состо­ит из осязаемых объектов — интегральных схем, печатных плат, кабелей, источников электропитания, модулей памяти и принтеров. Абстрактные поня­тия, алгоритмы и команды к аппаратному обеспечению не относятся.

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

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

 








Дата добавления: 2015-09-29; просмотров: 3044;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.017 сек.