- •Введение.
- •1. Основы построения эвм. Основные определения.
- •2. Принципы действия эвм. Принципы программного управления.
- •Страница–словарь.
- •4. История развития вычислительной техники. Поколения эвм.
- •«Компьютер... XVII века»
- •5. Основные параметры эвм.
- •1. Запоминающие устройства эвм.
- •1.1. Типы зу и их основные характеристики.
- •1.2. Оперативные запоминающие устройства.
- •1.2.1. Общие принципы организации озу.
- •1.2.2. Структурная организация блока памяти.
- •1.2.3. Полупроводниковые интегральные зу с произвольным обращением.
- •1.2.4. Модули памяти и элементы памяти (бис).
- •1.2.5. Система электрических параметров полупроводниковых бис зу.
- •1.2.6. Контроль функционирования бис зу.
- •1.2.7. Организация многоблочной оперативной памяти.
- •1.2.8. Организация озу с многоканальным доступом.
- •1.2.9. Ассоциативные зу.
- •1.3. Сверхоперативные зу.
- •1.3.1. Назначение и типы созу.
- •1.3.2. Организация созу с прямой адресацией.
- •1.3.3. Организация стекового и магазинного созу.
- •1.3.4. Организация ассоциативных созу.
- •1.3.5. Оценка эффективности использования созу в процессоре.
- •1.4. Постоянные зу.
- •1.5. Виртуальная память.
- •Логическое распределение оперативной памяти в персональных компьютерах (Intel/pc).
- •1.6.1. Стандартная оперативная память.
- •1.6.1.1.Таблица векторов прерываний.
- •1.6.1.2. Область данных bios.
- •1.6.1.3. Область для операционной системы.
- •1.6.1.4. Основная область памяти.
- •2. Арифметико-логические устройства эвм
- •2.1. Типы арифметических устройств и их структуры.
- •2.2. Организация алу параллельного действия при работе над числами в естественной форме.
- •2.2.1. Суммирование и вычитание чисел при использовании накапливающего сумматора.
- •2.2.2. Принципы построения алу для сложения и вычитания на комбинационных суммах.
- •2.2.3. Организация алу (параллельного действия) в режиме умножения чисел с фиксированной запятой.
- •2.2.4. Аппаратные способы ускорения умножения в организации алу.
- •2.2.5. Алгоритмические (логические) способы ускорения умножения в организации алу.
- •2.2.6. Организация алу параллельного действия в режиме деления чисел с фиксированной запятой.
- •2.2.7. Организация алу при реализации логических операций и операций специальной арифметики.
- •2.3. Организация алу параллельного действия при работе над числами в нормальной форме.
- •2.3.1. Принцип построения и работы алу при суммировании и вычитании чисел в нормальной форме.
- •2.3.2. Направления и методы ускорения операций над числами с плавающей запятой.
- •2.4. Организация алу, работающих в двоично-десятичных кодах.
- •2.5.Об экзотических формах представления чисел. Логарифмическая форма:
- •Трансформирующаяся запятая.
- •Инверсная запятая.
- •2.6. Итеративные методы деления.
- •3. Процессоры.
- •3.1. Система команд эвм.
- •3.1.1. Структура и форматы команд.
- •3.1.2. Список команд.
- •3.1.3. Способы адресации.
- •3.2. Устройства управления.
- •3.2.1. Организация цуу (на примере гипотетической одноадресной эвм).
- •3.2.2. Принципы формирования уфс.
- •3.2.3. Организация микропрограммных устройств управления.
- •3.3. Организация внутрипроцессорных систем ввода-вывода информации.
- •3.3.1. Основные понятия и определения.
- •3.3.2. Способы обмена данными между ядром малой эвм и периферийными устройствами.
- •3.3.3. Программно управляемые способы передачи данных.
- •3.3.3.1. Простые типы передачи.
- •3.3.3.2. Последовательность событий при прерываниях.
- •3.3.3.3. Идентификация прерывающего устройства.
- •3.3.4. Организация прямого доступа к памяти.
- •4. Основы вычислительных конвейеров.
- •4.1. Введение в архитектурные принципы конвейерных процессоров и эвм.
- •Конвейерные сумматоры
- •Конвейерный умножитель
- •5. Архитектура сигнальных процессоров.
- •5.1. Введение. Основные задачи обработки сигналов. Методы обработки сигналов.
- •5.2. Основные характеристики и базовая архитектура семейства adsp-21xx
- •5.2.1. Общие сведения о составе функциональных устройств
- •5.2.2. Базовая архитектура.
- •5.2.3. Средства разработчиков для процессоров семейства.
- •5.3. Интерфейс процессоров adsp-21xx с памятью.
- •5.3.1. Интерфейс с загрузочной памятью.
- •5.3.2. Интерфейс с памятью программ.
- •5.3.3. Интерфейс с памятью данных.
- •5.4. Архитектура операционных устройств.
- •5.4.1. Арифметико-логическое устройство.
- •5.4.2. Умножитель/накопитель mac.
- •5.4.3. Устройство сдвига shifter.
-
3.1.2. Список команд.
Список команд – это, по сути дела, список операций, которые способен выполнять компьютер. В среднем их количество составляет 70-80 команд, но бывает и больше.
У персональных и микро ЭВМ уже устоялось 64-128 (RISC – 32). (Заметим, что если разрядность КОП равна 8, то всего может быть построено 28=256 двоичных кодов, каждый из которых может быть использован для кодирования определенной операции). Казалось бы, чем больше, тем лучше. СуперМини ЭВМ VAX 11/780 имела, например, 303 команды. Кажется это абсолютный рекорд.
Но это верно до определенных границ, т.к. когда-то наступает «насыщение» (любая новая команда мало прибавляет к функциональным возможностям и лишь усложняет использование каждой отдельной команды). Экспериментально установлено, что программист ограничен в числе применяемых команд (операторов) и их типов.
Среди списка команд можно выделить следующие группы операций:
-
арифметические (сложения разных видов, инкрементация, декрементация, умножение и т.п.);
-
логические (обычно поразрядные!); сюда же обычно относят сдвиги;
-
операции пересылок данных, кодов (между процессором, СОЗУ и ОЗУ, между ячейками ОЗУ и др.);
-
передачи управления (условные и безусловные переходы, вход и выход из подпрограмм и др.);
-
операции с внешними устройствами
-
специальные команды (Останов, Пустая команда и др.);
Помимо такой (основной!) классификации иногда выделяют классы:
-
операции над стеками;
-
операции арифметики с двойной точностью;
-
операции арифметико-логические (например, сдвиг и сложение сразу);
-
операции с двоично-десятичными кодами и др.
<119>
-
3.1.3. Способы адресации.
Обращаю внимание, что рассматривается применение только «адресной» памяти. О способах адресации в безадресной памяти следует говорить особо.
Размерность адреса, как известно, определяет максимальную область памяти, доступную для процессора. Например, 16-разрядный адрес означает, что может использоваться 216=64К слов (байт).
Разработчики PDP-11 когда-то писали:
«…Самая большая и наиболее распространенная ошибка, которая может быть совершена при конструировании ЭВМ, состоит в том, что не обеспечивается достаточное количество адресных разрядов для обращения к памяти и управления. Совершенно очевидно, что через каждые два-три года требуется увеличивать адрес на один разряд, так как цены на запоминающие устройства снижаются ежегодно на 30%, а пользователи хотят приобретать более совершенные модели вычислительных систем по постоянной цене».
Уже на заре развития вычислительной техники был найден простой выход из проблемы размещения программ и структур данных в ограниченной памяти - введение системы способов адресации.
Наиболее простым способом указания адреса является включение его в состав (структуру) команды. Но обычно весьма удобными и эффективными являются «манипуляции» адресом, имеющие, в основном, следующие цели:
-
разрешить команде осуществлять доступ к ячейке памяти, адрес которой вычисляется во время прогона (реализации) программы; тем самым облегчается доступ к массивам, спискам и т.п.;
-
допустить работу с адресами в форме, наиболее подходящей для таких широко применяемых структур данных, как стеки и одномерные массивы;
-
указывать полный адрес памяти наименьшим количеством разрядов (делать команду короче);
-
вычислять адреса относительного местоположения команды, чтобы обеспечить загрузку программы в любую область памяти без изменения программы.
В конечном итоге способы адресации обеспечивают расширение функциональных возможностей машины, прежде всего по объему и форме хранения данных, и, иногда, повышение производительности. Существуют и особые случаи, диктующие изменения различных способов адресации, например, память с «провалами», т.е. память, в которой физически отсутствует часть адресов.
<120>
Необходимо различать понятия «адресный код» и «исполнительный адрес».
Адресный код (Ак) – это тот код, который содержится в адресной части команды. Исполнительным же адресом (Аи) является тот фактический адрес (номер) ячейки ОЗУ, в которой размещаются данные, над которыми и выполняется заданное кодом операции преобразование. Можно несколько абстрактно записать:
Аи = F ( Ак ).
Последнее выражение справедливо и для команд передачи управления. В этом случае по исполнительному адресу в ЗУ размещается фактический адрес передачи управления.
Операнд является содержимым некоторой ячейки с исполнительным адресом:
О = < Аи >.
В настоящее время в ЭВМ имеется большой набор типов адресации.
Причем существует определенный разнобой в наименованиях этих типов. Попытаемся в них разобраться.
Прежде всего, выделяют два основных принципа адресации: прямой и косвенный.
При прямом принципе адресации исполнительный адрес берется непосредственно из команды, либо вычисляется с использованием значения, указанного в команде, и содержимого какого-либо регистра СОЗУ (ячейки ОЗУ). Прямой адрес может быть «неполным».
При косвенном принципе предполагается, что в команде содержится косвенный адрес, т.е. адрес ячейки, в которой содержится исполнительный адрес, либо содержатся данные, используемые для вычисления исполнительного адреса. В общем случае возможно существование нескольких «вложений», когда по косвенному адресу команды располагается еще один косвенный адрес и т.д.
<121>
Существующие типы адресации и их характеристики:
-
Абсолютная (иногда ее и называют прямой). Это самая простая и понятная, так как
Аи = Ак.
Существуют понятия «короткая» и «длинная» абсолютные адресации: «короткая» отличается тем, что использует в адресном коде неполное количество разрядов и старшим разрядом адреса присваиваются значения, равные «знаку» (содержимому знакового разряда) адресного кода (характерно для использования переменной длины адресной части).
Рис. 3.1.3.01.
-
Регистровая (абсолютная регистровая). Операнд хранится в одном из регистров СОЗУ; обычно в этом случае адрес (номер) регистра входит в КОП, а иногда вводится и в аббревиатуру команды.
Рис. 3.1.3.02.
-
Непосредственная. Операндом является сам адресный код:
О = Ак.
Удобно, если разрядности Ак хватает для размера операнда и обеспечения точности вычислений. Широко используются как адресные константы с последующим применением в других типах адресации. Сокращаются объем программы и время выполнения (меньше обращений к памяти, могут исключаться неупорядоченные адреса констант, которых всегда хватает: 2 и др.). Кроме того, с программиста снимаются заботы о мелких деталях, например присвоение пересекающихся имен константам и др.
Рис. 3.1.3.03.
-
Неявная. Адресная часть отсутствует, операнд подразумевается (сравните с безадресной командой, это её частный случай) в какой-либо части МП или компьютера: АЛУ, регистр, шина входа.
Пересекается с регистровой адресацией, когда в последней номер регистра входит в КОП; но здесь, по-моему, следует различать случаи:
а) когда поле задания номера регистра выделяется (регистровая адресация);
б) когда поле не выделяется (неявная адресация).
<122>
-
Косвенная регистровая адресация. Используется в той или иной форме во всех современных микро-ЭВМ.
Рис. 3.1.3.04.
-
Косвенная абсолютная адресация. Используется при обработке списков, при взаимодействии с подпрограммами и др.
; ;…;
-
Автоинкрементная. Нужда в ней возникает в связи с необходимостью пошагового просмотра таблиц или списков данных.
Рис. 3.1.3.05.
На рисунке: p – шаг инкрементации (он определяется размером операнда).
Ак ≡ Nr;
Аи = < Nr >;
< Nr > + p => Nr .
-
Автодекрементная. По назначению аналогична автоинкрементной, но дополнительно и в сочетании с ней дает возможность использовать любой адресный регистр в качестве указателя стека.
В последнем случае соблюдаются правила:
-
указатель стека всегда указывает на верхушку стека;
-
с уменьшением содержимого указателя стека объем информации в стеке увеличивается.
Именно поэтому вычитание p (размера операнда), в отличие от автоинкрементной адресации, выполняется до использования адреса в качестве исполнительного.
Рис. 3.1.3.06.
Ак ≡ Nr;
< Nr > - p => Nr ;
Аи = < Nr >.
-
Косвенная автоинкрементная (применялась ещё в PDP-11, LSI-11 и наших аналогах СМ-, Электроника 60).
Рис. 3.1.3.07.
-
Косвенная автодекрементная. См. (8) и (9).
<123>
-
Относительная (адресация по базе).
Первый вариант:
Рис. 3.1.3.08.
Основное удобство – расширение адресного поля. Индексная адресация
является развитием относительной: в команде указан адрес (номер) ячейки, являющейся индексной, хранящей базовый адрес.
Второй вариант:
Рис. 3.1.3.09.
Базовый адрес всегда является полным адресом, а смещение может быть коротким или длинным.
При относительной адресации команда содержит смещение, а в адресном (базовом) регистре помещен базовый адрес. При индексной наоборот: команда содержит базовый адрес, а в индексном регистре находится смещение. Если смещение и базовый адрес одинаковы по длине, то эти два способа адресации неразличимы.
-
Индексная (адресация с индексированием).
Рис. 3.1.3.10.
Для индексных регистров (ИР) выделяются либо ячейки ОЗУ, либо (в микропроцессорах) регистры (РОНы) . По Уокерли:
Рис. 3.1.3.11.
-
прединдексная косвенная адресация – смещение прибавляется к базовому адресу для формирования косвенного адреса, а в содержимое ячейки с косвенным адресом является исполнительным адресом. Была в PDP-11 и её клонах. Ныне применяется в больших ЭВМ.
Ак = Nr;
Акосв = < Абаз. > + < Nr >;
Аи = < Акосв. >.
-
постиндексная косвенная адресация – базовый адрес используется в качестве косвенного, а смещение прибавляется к содержимому ячейки с косвенным адресом, чтобы получить требуемый исполнительный адрес. Применялась в микропроцессоре 6502 и, затем, во все компьютерах Apple.
-
Адресация по базе с индексированием. Исполнительный адрес формируется сложением содержимого базового регистра с содержимым индексного регистра.
-
Относительная в терминологии Уокерли. Есть в сходных формах в РС-86 и PDP-11.
Рис. 3.1.3.12.
Есть и дальнейшее усложнение этого способа адресации: косвенно-относительная адресация, при которой
Акосв. = < Ак > + < СчК >;
Аи = < Акосв. >.
<124>
-
Страничная.
Рис. 3.1.3.13.
Вся память делится на страницы, и команда содержит только адрес операнда на странице, а номер страницы определяется одним из путей:
-
через базовую (нулевую) страницу: номеру страницы присваивается значение «0»;
-
с использованием текущей страницы: номер страницы устанавливается по старшим разрядам счетчика команд;
-
с использованием регистра страниц: номер страницы определяется по содержимому регистра страниц, в который требуемый номер загружается заранее программно.
Страничная организация очень близка к адресации по базе: отличие в использовании конкатенации вместо суммирования (конкатенацию можно свести к суммированию).
-
Прогрессивная адресация. Она является разновидностью индексной, когда переход к следующим индексным величинам осуществляется автоматически после того, как они использованы.
<125>
<126>