Можете ли вы представить многоуровневый компьютер

Обновлено: 07.07.2024

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

Достоинства такого представления вычислительных машин:

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

Понятие семантического разрыва между уровнями

Преобразование операторов языков высокого уровня в машинный код или в микрокоманды требует от транслятора, во-первых, умения распознать операторы и команды различных уровней и, во-вторых, для любого оператора языка высокого уровня генерировать десятки или сотни команд низкого уровня. Это приводит к усложнению транслятора, увеличению трудоемкости его разработки, снижению производительности генерируемых программ. Наличие этих проблем называют семантическим разрывом между уровнями. Основным способом его преодоления является специализация машин, при которой операторы проблемно-ориентированных языков могут непосредственно выполняться аппаратными средствами машины и не требовать трансляции. Примеры: аппаратная реализация графических преобразований; аппаратная реализация операций с векторами и матрицами.

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

Основой функционирования любой вычислительной машины является ее способность выполнять заданные действия. Аппаратные средства любой вычислительной машины способны выполнять только ограниченный набор сравнительно простых команд. Эти примитивные команды составляют так называемый машинный язык машины. Говоря о сложности аппаратуры компьютера, машинные команды целесообразно делать как можно проще, но примитивность большинства машинных команд делает их использование неудобным и трудным. Для эффективной работы человека с компьютером разработчики вводят другой набор команд, более удобный для человеческого общения (языки более высокого уровня).

Появляются новые языки программирования еще более высокого уровня, и каждый такой язык использует своего предшественника как основу, поэтому вычислительную машину рассмотрим в виде ряда многоуровневой машины, структура которой изображена на рис. 1.1. Между языками программирования и существующей виртуальной машиной существует тесная связь. Язык, находящийся в самом низу иерархической структуры компьютера, является примитивным, а тот, что расположен на ее вершине, — самым сложным. Большинство современных вычислительных машин включают 6—7 уровней виртуализации. Нижние уровни, начиная с машинного, более консервативны к изменениям.

Виртуальная машина Мп с машинным языком Я


Структура многоуровневой вычислительной машины

Рис. 1.1. Структура многоуровневой вычислительной машины

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

Программы на языке М2 либо интерпретируются программой-интерпретатором, работающей на машине более низкого уровня, либо транслируются на машинный язык более низкого уровня

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

Программы на языке М0 либо интерпретируются программой-интерпретатором, работающей на машине более низкого уровня, либо транслируются на машинный язык более низкого уровня

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

Современные многоуровневые вычислительные машины

Современные компьютеры можно представить как структуру, состоящую из шести уровней (рис. 1.2).

Структура шестиуровневого компьютера

Рис. 1.2. Структура шестиуровневого компьютера

Способ поддержки каждого уровня указан под ним, в скобках дано название соответствующего программного обеспечения.

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

Уровень 0: цифровой логический уровень. Цифровой логический уровень представляет собой аппаратное обеспечение компьютера. Объектами цифрового логического уровня являются цифровые логические устройства. Для описания того, как функционируют цифровые логические устройства, используется математический аппарат алгебры логики, в которой используются логический ноль и логическая единица.

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

Одним из важнейших элементов цифровой техники является триггер (англ. Trigger — защелка, спусковой крючок). Триггер имеет два устойчивых состояния, одно из которых соответствует двоичной единице, а другое — двоичному нулю. Сам триггер не является базовым элементом, так как он собирается из более простых логических схем.

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

Биты памяти, объединенные в группы, например по 16, 32 или 64, формируют регистры. Каждый регистр может содержать одно двоичное число до определенного предела.

Уровень 1: уровень микроархитектуры. В компьютерной инженерии микроархитектура (англ, microarchitecture; иногда сокращается до march или uarch), также называемая организацией компьютера, — это способ, которым данная архитектура набора команд (ISA, АН К) реализована в процессоре. Каждая АН К может быть реализована с помощью различных микроархитектур. Реализации могут варьироваться в зависимости от целей конкретной разработки или в результате технологических сдвигов. Архитектура компьютера является комбинацией микроархитектуры, микрокода и АН К.

На этом уровне в обработке команд участвует арифметико-логическое устройство (АЛУ). АЛУ состоит из регистров, сумматора с соответствующими логическими схемами и элемента управления выполняемым процессом. Оперативная память организована в виде последовательностей, которые группируются в машинные слова. Арифметико-логическое устройство работает в соответствии с сообщаемыми ему именами (кодами) операций, которые при пересылке данных нужно выполнить над переменными, помещаемыми в регистры. Над какими кодами производится операция, куда помещается ее результат — определяется выполняемой командой. Примерами обработки могут служить логические операции («И», «ИЛИ», «Исключающего ИЛИ» и т.д.), т.е. побитные операции над операндами, а также арифметические операции (сложение, вычитание, умножение, деление и т.д.). Команды содержат от одного до трех операндов.

В операционном устройстве (АЛУ) реализуется заданная последовательность микрокоманд (команд), в микропрограммном устройстве управления (УУ) задается последовательность микрокоманд (команд).

Различают два вида микрокоманд: внешние — такие микрокоманды, которые поступают в АЛУ от внешних источников и вызывают в нем преобразование информации, и внутренние — те, которые генерируются в АЛУ и оказывают влияние на микропрограммное устройство, изменяя, таким образом, нормальный порядок следования команд.

Микропрограмма — это интерпретатор для команд на уровне 2. Микропрограмма вызывает команды из памяти и выполняет их одну за другой, а результаты вычислений из АЛУ передаются в оперативную память по кодовым шинам записи.

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

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

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

Уровень 2: уровень архитектуры набора команд. Архитектура набора команд (англ, instruction set architecture, ISA) — часть архитектуры компьютера, определяющая программируемую часть ядра микропроцессора. На этом уровне определяются реализованные в микропроцессоре конкретного типа:

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

В современных микроархитектурах используется конвейерный тракт. Конвейер содержит такие стадии, как выбор инструкций, декодирование инструкций, исполнение и запись результата. Некоторые архитектуры включают также доступ к памяти. Дизайн конвейера является фундаментальным при разработке микроархитектуры.

Устройства исполнения также являются ключевыми для микроархитектуры. Они включают арифметико-логические устройства, устройства обработки чисел с плавающей точкой, устройства выборки и хранения, прогнозирование ветвления, параллелизм на уровне данных (5/М/)). Эти блоки производят операции или вычисления процессора. Выбор числа блоков исполнения, их задержек, пропускной способности и способа соединения памяти с системой также является микроархитектурным решением.

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

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

Уровень 3: уровень операционной системы. Третий уровень операционной системы является гибридным. Большинство команд в его языке есть как на третьем уровне, так и на втором — уровне архитектуры набора команд (команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор команд; другая организация памяти; способность выполнять две и более программы одновременно и некоторые другие. При построении уровня 3 возможно больше вариантов, чем при построении уровней 1 и 2.

Новые средства, появившиеся на уровне 3, выполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды уровня 3, идентичные командам уровня 2, выполняются микропрограммой или аппаратным обеспечением, но не операционной системой. Другими словами, одна часть команд уровня 3 интерпретируется операционной системой, а другая часть — микропрограммой. Вот почему этот уровень считается гибридным.

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

Еще одно изменение, появившееся на уровне 4, — механизм поддержки более высоких уровней. Уровни 2 и 3 обычно интерпретируются, а уровни 4, 5 и выше обычно, хотя и не всегда, транслируются.

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

Уровень 4: уровень ассемблера. Уровень 4 представляет собой символическую форму одного из языков более низкого уровня — ассемблера. Ассемблер (от англ, assembler — сборщик) — транслятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.

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

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

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

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

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

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

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

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

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

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

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

Вышеупомянутую проблему можно решить двумя способами. Оба способа подразумевают разработку новых команд, более удобных для человека, чем встроенные команды. Эти новые команды в совокупности формируют язык, который мы будем называть Я 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 заключалась в создании языка более удобного для человека. Очевидно что она не может быть достигнута. Чтобы решить эту проблему можно создать еще одну виртуальную машину М 2 и язык Я 2, который будет более понятен для человека, чем Я 1. При этом, программы написанные на языке Я 2 могут транслироваться на язык Я 1 или выполняться интерпретатором, написанным на языке Я 1.

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

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

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

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

Современные компьютеры можно представить как структуру, состоящую из 6 уровней:

Структура шестиуровневого компьютера

Структура шестиуровневого компьютера

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

Уровень 0: Цифровой логический уровень

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

Уровень 1: уровень Микроархитектуры

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

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

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

Уровень 2: уровень архитектуры набора команд

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

Уровень 3: уровень операционной системы

Этот уровень обычно является гибридным. Большинство команд в его языке есть также и на уровне архитектуры набора команд (команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор команд, другая организация памяти, способность выполнять две и более программы одновременно и некоторые другие. При построении уровня 3 возможно больше вариантов, чем при построении уровней 1 и 2.

Новые средства, появившиеся на уровне 3, выполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды уровня 3, идентичные командам уровня 2, выполняются микропрограммой или аппаратным обеспечением, но не операционной системой. Другими словами, одна часть команд уровня 3 интерпретируется операционной системой, а другая часть — микропрограммой. Вот почему этот уровень считается гибридным. Мы будем называть этот уровень уровнем операционной системы.

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

Еще одно изменение, появившееся на уровне операционной системы, — механизм поддержки более высоких уровней. Уровни 2 и 3 обычно интерпретируются, а уровни 4, 5 и выше
обычно, хотя и не всегда, транслируются.

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

Уровень 4: уровень Ассемблера

Уровень 4 представляет собой символическую форму одного из языков более низкого уровня. На этом уровне можно писать программы в приемлемой для человека форме. Эти программы сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или фактически существующей машиной. Программа, которая выполняет трансляцию, называется ассемблером.

Уровень 5: уровень языка прикладных программистов

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

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

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

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

Таненбаум
Не сомневаюсь что этот форум посещают "исключительно" начитанные люди. И для этой категории людей.

Ряд вопросов про потоки [ Таненбаум etc ]
Э.Таненбаум "Современные операционные системы" 2-е издание, Питер, 2006. Стр.113:Что такое.

Куплю книгу Э.Таненбаум Операционные системы. Разработка и реализация 3-е изд
Куплю книгу Э.Таненбаум Операционные системы. Разработка и реализация 3-е изд + CD-ROM Москва.

одна команда уровня r может выполнять ту же работу, которую выполняют m команд на уровне r - 1 для интерпретации одной команды уровня r + 1 требуется n команд уровня r

Дико извиняюсь за долгое раздумье!

Добавлено через 52 минуты
Я зациклился на том, что это машина, так скажем, близкая к реальности. И что одна команда уровня r может выполнять ту же работу, которую выполняют m определённых команд уровня r - 1. И с какой вероятностью при интерпретации одной команды уровня r + 1 n командами уровня r получаются те самые определённые команды уровня r. В этом случае задача к тривиальным никаким боком не относится. Но не прошло и года, как я смекнул, что у сарая нет четвёртой стены что дважды два равно что задача абстрактная, и машина, судя по всему, тоже абстрактная. И попытался ещё раз, но на сей раз правильно, прочитать задание.

одна команда уровня r может выполнять ту же работу, которую выполняют m команд на уровне r - 1

. одна команда уровня r может выполнять ту же работу, которую выполняют m любых команд на уровне r-1, иными словами, команды уровня r выполняются в m раз быстрее команд уровня r-1.

для интерпретации одной команды уровня r + 1 требуется n команд уровня r

. для интерпретации одной команды уровня r+1 требуется n любых команд уровня r, то есть, программа уровня r+1 просто короче программы уровня r в n раз.

Получается, что программа на уровне r+1 будет выполняться быстрее, чем программа на уровне r в m*n раз.
И время выполнения программы первого уровня на любом (в том числе и на первом) уровне тогда будет

Формально всё правильно, но как далеко от суровой реальности.

der Tannenbaum. при чём тут ЁЛКА?

Добавлено через 5 часов 6 минут
Уточнение. . где r - номер уровня.

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

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

В главе 5 обсуждается уровень архитектуры набора команд (ISA), который многие называют машинным языком. Здесь мы подробно рассмотрим три модели компьютеров, выбранные нами в качестве иллюстративных примеров.

В главе 6 говорится о некоторых командах, об устройстве памяти компьютера, о механизмах управления на уровне операционной системы. В примерах фигурируют две операционные системы: Windows ХР, устанавливаемая на профессиональных серверах на базе Pentium 4, и UNIX, применяемая вкупе с микросхемой UltraSPARC III.

Глава 7 — об уровне языка ассемблера. Сюда относится и язык ассемблера, и процесс ассемблирования. Здесь речь также идет о компоновке.

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

Глава 9 содержит тематический список рекомендуемой литературы к каждому разделу, а также алфавитный список литературы, цитируемой в этой книге. Автор считает, что это — самая главная часть книги, она вам непременно понадобится!

Вопросы и задания

1. Объясните следующие термины своими словами:

3) виртуальная машина.

2. Чем отличается интерпретация от трансляции?

3. Может ли компилятор производить данные непосредственно для уровня микроархитектуры, минуя уровень архитектуры набора команд? Обсудите все доводы за и против.

4. Можете ли вы представить многоуровневый компьютер, у которого уровень физических устройств и цифровой логический уровень — не самые нижние уровни? Объясните, почему.

5. Рассмотрим многоуровневый компьютер, в котором все уровни отличаются друг от друга. Команды каждого уровня в т раз мощнее команд предыдущего уровня, то есть одна команда уровня г может выполнять ту же работу, кото рую выполняют m команд на уровне г - 1. Если для выполнения программы первого уровня требуется k секунд, сколько времени будут выполняться соответствующие программы на уровнях 2, 3 и 4, с учетом того, что для интерпретации одной команды уровня г + 1 требуется п команд уровня г?

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

7. Рассмотрим компьютер с идентичными интерпретаторами на уровнях 1, 2 и 3. Для выборки, изучения и выполнения одной команды интерпретатору требуется п служебных команд. На уровне 1 одна команда выполняется за k наносекунд. За какое время одна команда будет выполнена на уровнях 2, 3 и 4?

3. Может ли компилятор производить данные непосредственно для уровня микроархитектуры, минуя уровень архитектуры набора команд? Обсудите все доводы за и против.

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

5. Рассмотрим многоуровневый компьютер, в котором все уровни отличаются друг от друга. Команды каждого уровня в т раз мощнее команд предыдущего уровня, то есть одна команда уровня г может выполнять ту же работу, которую выполняют т команд на уровне г - 1. Если для выполнения программы первого уровня требуется k секунд, сколько времени будут выполняться соответствующие программы на уровнях 2, 3 и 4, с учетом того, что для интерпретации одной команды уровня г + 1 требуется п команд уровня г?

6. Некоторые команды уровня операционной системы идентичны командам уровня архитектуры набора команд.

Эти команды сразу выполняются микропрограммой, а не операционной системой. Учитывая ответ на предыдущий вопрос, подумайте, зачем это нужно.

7. Рассмотрим компьютер с идентичными интерпретаторами на уровнях 1, 2 и 3. Для выборки, изучения и выполнения одной команды интерпретатору требуется п служебных команд. На уровне 1 одна команда выполняется за k наносекунд. За какое время одна команда будет выполнена на уровнях 2, 3 и 4?

8. В каком смысле аппаратное и программное обеспечение эквивалентны? В каком они не эквивалентны?

9. Разностная машина Беббиджа была снабжена фиксированной программой без возможности внесения изменений. Не напоминает ли это вам современные компакт-диски? Аргументируйте свой ответ.

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

И. Производительность 75-й модели 360 в 50 раз выше, чем модели 30, однако время цикла меньше всего лишь в 5 раз. Объясните, почему.

12. На рис. 1.4 и 1.5 изображены схемы компьютерных систем. Опишите, как происходит процесс ввода-вывода в каждой из систем. У какой из них общая производительность больше?

13. Предположим, что каждый из 300 миллионов жителей США каждый день потребляет две упаковки продуктов, оснащенных микросхемами RFID. Сколько таких микросхем придется произвести за год, чтобы покрыть такой объем спроса? Если одна микросхема стоит 1 цент, в какую сумму обойдется производство микросхем в полученном объеме? Сравните вычисленную сумму с о- бъемом ВВП и подумайте, не станет ли проблематичным внедрение этой технологии?

14. Назовите три бытовых устройства, в которые имеет смысл устанавливать встроенные процессоры.

15. В определенный момент времени диаметр транзистора в микропроцессоре составлял один микрон. Каков будет диаметр транзистора в новой модели в следующем году в соответствии с законом Мура?

16. Вопрос о том, кто является изобретателем компьютера, получил правовую оценку в апреле 1973 года, когда судья Эрл Ларсон вынес решение по иску Sperry Rand Corporation, владельца патентов на системы ENIAC, о нарушении патентных прав. Позиция компании Sperry Rand заключалась в том, что все без исключения производители компьютеров должны выплачивать ей роялти по той простой причине, что ей принадлежали все основные патенты.

Рассмотрение дела в суде началось в июне 1971 года; в общей сложности за период разбирательства суду было представлено свыше 30 000 документальных и вещественных доказательств. Стенограммы заседаний заняли более 20 000 страниц. Ваша задача состоит в том, чтобы как можно подробнее ознакомиться с материалами этого разбирательства, которые в изобилии представлены в Интернете, и написать отчет по технической составляющей дела. Что именно запатентовали Экерт и Моушли и почему судья решил, что их система была основана на более ранних разработках Атанасова?

17. Напишите краткое резюме о трех исследователях, которые, по вашему мнению, оказали наибольшее влияние на эволюцию аппаратного обеспечения компьютеров до их современного состояния; объясните, почему вы выбрали именно их.

Читайте также: