
- •Пример современной многоуровневой вычислительной машины с шестью уровнями
- •Уровни детализации структуры вычислительной машины
- •Принципы построения вычислительной машины
- •Принцип двоичного кодирования
- •Принцип программного управления
- •Принцип однородности памяти
- •Принцип адресности
- •Структура фон-неймановской архитектуры вычислительной машины
- •Типы структур вычислительных машин и систем
- •Структуры вычислительных машин
- •Структуры вычислительных систем
- •Перспективы совершенствования архитектуры вм и вс
- •Технологические и экономические аспекты
- •Тенденции развития больших интегральных схем
- •Перспективные направления исследований в области архитектуры
вычислительных машин и систем
С тех пор, как человечество осознало понятие количества, разрабатывались и применялись различные приспособления для отображения количественных эквивалентов и операций над величинами.
Одной из первых реально созданных машин для выполнения арифметических действий в десятичной системе счислений явилась счётная машина Паскаля (1642 год). Машина выполняла суммирование с помощью колёс, которые при прибавлении единицы поворачивались на 36 и приводили в движение следующее по старшинству колесо при переходе от цифры 9 значению 10.
Арифметические машины, построенные в средние века, использовали достижения механики, их авторами являлись Морленд (1625-1695), К. Перро (1613-1688), Якобсон, Чебышев, Лейбниц (1646-1716). Удачное решение инженера В. Однера, разработавшего колесо с переменным числом зубьев, позволило почти век до середины ХХ века, выпускать серийно арифмометры. Арифметические машины могли выполнять только отдельные действия над числами, не могли хранить промежуточные результаты и выполнять последовательность действий.
Первой вычислительной машиной, реализующей автоматическое выполнение действий, считают разностную машину Ч. Беббеджа (1792-1871). Машина была изготовлена для расчёта астрономических и морских таблиц, обеспечивала хранение необходимых промежуточных значений и выполнение последовательности сложений для получения значений функций. Отдалённо в машине Ч. Беббеджа существовали прообразы всех основных устройств современной ЭВМ, в частности устройство управления на перфокартах позволяло выбирать различные пути решения в зависимости от значений исходных данных и промежуточных результатов.
Идеи аналитической машины Беббеджа, были использованы в релейных машинах 30-40-х годов ХХ века. Теоретической основой разработки релейно-контактных схем явился аппарат булевой алгебры, который и поныне используется для синтеза схем ЭВМ. Электрические реле как элементная база вычислительной техники по всем основным параметрам (быстродействие, надёжность, потребляемая мощность, стоимость, габариты, наличие вредного электромагнитного излучения и др.) не удовлетворяла потребителей.
Только появление электронных схем в качестве элементной базы позволило начать массовое внедрение вычислительной техники во все сферы человеческой деятельности. Первые электронные цифровые вычислительные машины были разработаны и выпущены на рубеже 40- 50-х годов прошлого века в США, Англии (на территории этих государств не велись в ту пору военные действия) и чуть позднее — в СССР.
Приведённые выше факты относятся к истории цифровых вычислительных машин, в которых информация представлена в дискретной форме. Существует целый класс электронных вычислительных машин – так называемые аналоговые вычислительные машины (АВМ). Причинами создания первых АВМ стало незначительное быстродействие первых цифровых вычислительных машин, требования военных учёта особых условий эксплуатации вычислительных машин при использовании противником ядерного оружия.
В аналоговых вычислительных машинах все математические величины представляются, как непрерывные значения каких-либо физических величин их изменения происходят по тем же законам, что и изменения заданных функций. В этих машинах используется метод математического моделирования (например: для заданного дифференциального уравнения или системы уравнений строятся электрические цепи, описываемые этими уравнениями). Результаты решения выводятся на экран осциллографа в виде зависимости электрического напряжения в функции времени, либо фиксируется измерительными приборами. Основным назначением АВМ является решение систем линейных и дифференциальных уравнений. Существует хорошо отработанная методика синтеза электрических цепей и наборы функциональных блоков АВМ, позволяющие собирать и исследовать синтезированные цепи.
Достоинства АВМ: высокая скорость решения задач, соизмеримая со скоростью прохождения электрического сигнала, простота конструкции АВМ, лёгкость подготовки задачи к решению, наглядность протекания исследуемых процессов, возможность изменения параметров исследуемых процессов во время самого исследования.
Недостатки АВМ: малая точность получаемых результатов (до 10%), алгоритмическая ограниченность решаемых задач, ручной ввод решаемой задачи в машину, большой объём задействованного оборудования, растущий с увеличением сложности задачи.
В настоящее время АВМ находят применение лишь в ограниченных областях технического моделирования. Поэтому в дальнейшем термин ЭВМ будем употреблять, имея в виду только цифровые вычислительные машины, обрабатывающие данные в виде числовых двоичных кодов.
Дадим несколько определений термина электронная вычислительная машина:
это устройство, которое принимает данные, обрабатывает их в соответствии с хранимой программой, генерирует результаты и обычно состоит из блоков ввода, вывода, памяти, арифметики, логики и управления;
это устройство, способное хранить программу или программы обработки и информацию, необходимую для выполнения программы, и может быть свободно перепрограммируемым в соответствие с требованием пользователя;
это машина, которая может решать задачи, выполняя данные ей команды. Последовательность команд, описывающих решение определенной задачи, называется программой.
За свою полувековую историю ЭВМ из единичных экземпляров инструментов учёных превратились в предмет массового потребления, при этом были выявлен ряд их достоинств и недостатков.
Достоинства ЭВМ: высокая точность вычислений, универсальность, автоматический ввод информации, необходимой для решения задачи, разнообразие задач, решаемых ЭВМ, независимость количества оборудования от сложности задачи.
Недостатки ЭВМ: сложность подготовки задачи к решению (необходимость специальных знаний программирования и методов решения задач), недостаточная наглядность протекания процессов, сложность изменения параметров этих процессов, сложность структуры ЭВМ, эксплуатации и технического обслуживания, требование специальной аппаратуры при работе с элементами реальной аппаратуры.
Одним из недостатков ЭВМ было то, что электронные схемы каждого компьютера могут распознавать и выполнять ограниченный набор простых команд. Все программы перед выполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее чем:
сложить 2 числа;
проверить, не является ли число нулём;
сдвинуть число на 1 разряд;
скопировать кусок данных из одной части памяти компьютера в другую.
Эти примитивные программы в совокупности составляют язык, на котором люди могут общаться с компьютером. Такой язык называется машинным языком. При создании нового компьютера разработчик должен решать - какие команды включать в машинный язык этого компьютера (обычно стараются сделать машинные команды как можно проще, чтобы избежать сложностей при конструировании компьютера и снизить затраты на необходимую электронику). Большинство машинных языков очень примитивны, использовать их трудно. Для преодоления сложности при общении с компьютером стала применяться многоуровневая компьютерная организация.
Многоуровневая компьютерная организация.
Первые компьютерные программы писались на машинных языках, что было чрезвычайно трудоёмко, требовало повышенного внимания и аккуратности. Было решено разработать новые наборы команд, которые более удобны для человека, чем встроенные машинные команды1. Эти новые команды в совокупности формируют язык первого уровня, языком нулевого уровня принято считать машинный язык. Программы, на языке нулевого уровня непосредственно выполняются электронными схемами.
Для преодоления подобных трудностей используется подход, называемый многоуровневой компьютерной организацией. Благодаря построению ряда уровней абстракций, каждая из которых надстраивается над абстракцией более низкого уровня, подход позволяет решить сложности, возникающие при общении с компьютером. В самом простейшем случае имеет место трёхуровневая организация (архитектура) ВМ (рис.1.1), состоящая из аппаратного, операционного и языкового уровня.
Абстракции высокого
уровня
Абстракции высокого
уровня
Абстракции низкого
уровня
Языковый уровень
Операционный
уровень
Аппаратный уровень
Рис. 1.1.
Трёхуровневая организация (архитектура)
ВМ
Платформа (platform) – видимые программисту средства поддержки программного продукта каждым из этих уровней абстракции. Определяют следующие типы платформ.
Аппаратная платформа – тип аппаратной архитектуры, на котором может быть установлен программный продукт. Наиболее известны аппаратные платформы на семействах процессоров Intel, HP и Power.
Операционная платформа – тип операционной системы и системного интерфейса, с которым может работать программный продукт. Наиболее известные операционные платформы: DOS, Windows и Unix. Сетевая платформа обычно входит в состав операционной платформы и представляет собой сетевой интерфейс операционной платформы. Частью операционной платформы являются библиотеки, поставляемые с операционной системой, для работы с которыми используется интерфейс прикладного программиста.
Языковая платформа- язык программирования и интерфейс прикладного программирования (библиотеки), на котором может быть реализован программный продукт. Наиболее известные языковые платформы: C,C++, Java.
Существует два способа выполнения программы, написанной на языке первого уровня, - трансляция и интерпретация.
Первый способ (трансляция) – замена каждой команды языка первого уровня на эквивалентный набор команд языка нулевого уровня, при этом создаётся новая программа, написанная на языке нулевого уровня, вместо старой программы.
Второй способ (интерпретация) – программа, написанная на языке первого уровня, рассматривается в качестве входных данных. Каждая команда рассматривается по очереди и сразу выполняется эквивалентный набор команд языка нулевого уровня, новая программа не создаётся. Программа, которая осуществляет интерпретацию, называется интерпретатором.
Трансляция и интерпретация сходны. При применении обоих методов компьютер в конечном итоге выполняет набор команд на языке нулевого уровня, эквивалентных командам языка первого уровня2.
Чтобы трансляция и интерпретация были целесообразны языки нулевого и первого уровня не должны значительно различаться. Данное обстоятельство приводит к очевидному решению – необходимости создания ещё одного набора команд, который ещё в большей степени ориентирован на человека и в меньшей степени на компьютер. Подобное движение от одного языка к другому продолжается до тех пор, пока не появляется подходящий нам язык. Каждый такой язык использует предшествующий язык как основу. Возникает иерархическая структура языков, внизу которой находится самый примитивный язык, а на верху – самый сложный.
Большинство современных компьютеров состоят из двух и более уровней.
Пример современной многоуровневой вычислительной машины с шестью уровнями
Рассмотрим пример шестиуровневой вычислительной машины (рис.1.2).
Уровень 0 – аппаратное обеспечение машины. Его электронные схемы выполняют программы, написанные на языке уровня 1. На этом, цифровом логическом уровне, объекты называются вентилями. Вентиль вычисляет простые функции входных данных (И, ИЛИ, НЕ). Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют один бит памяти, который содержит 0 или 1. Биты памяти, объединенные в группы (например, по 16, 32, 64), формируют регистры. Каждый регистр может содержать одно двоичное число до определённого предела.
Уровень 1 – микроархитектурный уровень. На этом уровне совокупности 8 или 32 регистров формируют локальную память и схему, называемую АЛУ (арифметико-логическое устройство). АЛУ выполняет простые арифметические операции. Регистры вместе с АЛУ формируют тракт данных, по которому поступают данные. Основная операция тракта данных заключается в выборе одного или двух регистров, далее АЛУ производит над ними требуемую операцию (например: сложение или сдвиг), результат помещается в один из этих регистров. Тракт данных контролируется либо аппаратными средствами, либо особой программой, называемой микропрограммой. Эта программа является интерпретатором для команд на уровне 2.
Микропрограмма вызывает команды из памяти и выполняет их одну за другой, используя при этом тракт данных. Например, для выполнения команды ADD требуется вызвать команду из памяти, поместить на регистры её операнды, в АЛУ вычислить сумму и результат записать в память либо оставить на регистре.
Язык высокого
уровня
Уровень 5
Трансляция
(компиляция)
Уровень языка
Ассемблер
Уровень 4
Уровень языка Ассемблер
Уровень языка
Ассемблер
Трансляция
(ассемблер)
Уровень архитектуры
команд
Трансляция
(ассемблер)
Микроархитектурный
уровень
Цифровой логический
уровень
Интерпретация
(микропрограмма) или непосредственное
выполнение
Аппаратное
обеспечение
Уровень 3
Уровень 2
Уровень 0
Уровень 1
Рис. 1.2. Компьютер
с шестью уровнями. Способ поддержки
каждого уровня указан под ним, название
поддерживающей программы указано в
скобках.
На компьютере с аппаратным контролем тракта данных происходит такая же процедура, но при этом нет программы, которая контролирует интерпретацию команд уровня 2.
Интерпретация- каждая команда, написанная на языке более высокого уровня, рассматривается как набор команд языка более низкого уровня, который выполняется сразу по чтению команды из очереди.
Трансляция - каждая команда языка более высокого уровня заменяется на эквивалентный набор команд языка более низкого уровня, при этом создаётся новая программа, которую будет выполнять компьютер.
Уровень 2 – уровень архитектуры системы команд. Каждый производитель публикует руководство для продаваемых компьютеров. В руководстве содержится информация о наборе машинных команд, которые выполняются микропрограммой - интерпретатором или аппаратным обеспечением, если производитель поставляет два интерпретатора для одной машины, то он должен издать два руководства по машинному языку, отдельно для каждого интерпретатора.
Уровень 3 – уровень операционной системы. Большинство команд в его языке совпадают с командами уровня 2 (они выполняются микропрограммой или аппаратным обеспечением уровня 2), но появляются некоторые дополнительные особенности, расширяющие возможности программиста по управлению работой отдельными элементами компьютера. Новые средства, появившиеся на уровне 3, выполняются интерпретатором уровня 2.
Операционная система - комплекс взаимосвязанных системных программ, назначение которого – организация взаимодействия пользователя с компьютером и выполнение всех других программ.
Нижние три уровня предназначены для работы системных программистов, специализирующихся на разработке и построении новых виртуальных машин. Уровни с 4 и выше предназначены для прикладных программистов, решающих конкретные задачи.
Уровни 2 и 3 обычно интерпретируются, их машинные языки цифровые. Уровни 4 и выше поддерживаются трансляторами, языки содержат слова и сокращения понятные человеку.
Уровень 4 – символическая форма одного из языков более низкого уровня. На этом уровне можно писать программы в приемлемой для человека форме. Программы этого уровня сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или фактически существующей машиной. Программа, выполняющая трансляцию, называется ассемблером.
Уровень 5 – языки высокого уровня. Данный уровень обычно состоит из языков, разработанных для прикладных программистов. Трансляторы, которые обрабатывают эти программы, называются компиляторами. Для некоторых языков (например, язык Java) используется метод интерпретации.
Вывод: компьютер проектируется как иерархическая структура уровней, каждый из которых надстраивается над предыдущим.
Набор типов данных, операций и особенностей каждого уровня называется архитектурой компьютера. Архитектура определяет ряд аспектов написания программ, видимых на уровне программиста (например, объём используемой памяти, набор команд, модели памяти и т.д.).