Файл: Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.04.2024

Просмотров: 279

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Управляющие слова

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

Адрес элемента массива можно представить себе как алгебраическую сумму трех составных частей.

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

313 *


массива в памяти, ни от выбора текущего элемента. На рис. 5-5 показано формирование адреса элемента массива из указанных трех составных частей. Смещение определяется алгоритмом решаемой задачи и в данной программе является величиной постоянной. Естественно поэтому размещать его в адресной части команды. Ба-

Гелущай адрес 7

Рис. 5-5. Формирование адреса элемента массива информации.

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

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

Управляющее слово полностью описывает массив ин­ формации в памяти машины. В самом общем виде оно может быть представлено состоящим из четырех полей (рис. 5-6). Индексная величина определяет текущий ад­ рес элемента массива. При переходе от одного элемента массива к другому индексная величина увеличивается на 1. Во время засылки индексная величина соответству-

314

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

âej?üYü<ya

Укаэа/пелі цепи

Рис. 5-6. Формат управляющего слова.

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

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

Рассмотрим примеры, иллюстрирующие эффектив­ ность использования управляющих слов. Для наглядно­ сти обозначим строчными буквами адреса ячеек памяти, где хранятся управляющие слова, прописными буква­ ми — массивы информации, а также поля «индексная ве­ личина» и «счетчик», характеризующие эти массивы. Знаком * будем обозначать окончание цепи управляю­ щих слов. Таким образом,обозначение

а А б

315


соответствует управляющему слову, расположенному в ячейке а, определяющему массив А и имеющему поле перезаполнения б.

Предположим, мы имеем цепь из трех управляющих слов, описывающих массивы А, Б, В:

Цепь 1 а А б

б Б в

в В * .

Для того чтобы изъять из обработки массив Б, до­ статочно произвести обмен содержимых ячеек б и в , где содержатся управляющие слова, соответствующие мас­ сивам Б и В:

Цепь 2 а А б

бВ *

вБ в.

Предположим теперь, что мы хотим в первоначаль­ ную последовательность массивов А, Б, В вставить пос­ ле А массив С, описываемый управляющим словом

с С с .

Для этого достаточно в приведенной выше цепи 1 произвести обмен ячеек с и б:

Цепь 3 а А б

б С с

в В *

сБ в.

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

Многоступенчатая индексация

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

Типичный двумерный массив изображен на рис. 5-7. Для того чтобы найти адрес элемента, нужно иметь два

316


текущих адреса, определяющих номер строки и номер колонки, в которых находится элемент. Для описания та­ кого массива необходимо иметь два индексных регистра (или в общем случае два управляющих слова), опреде­

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

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

317

нения. Более рационально, однако, использовать прин­ цип относительной адресации, а именно отвести один ин­ дексный регистр под хранение базового адреса, общего для всей группы массивов. При обработке массивов ад­ реса команд должны модифицироваться, используя сум­ му содержимых своего индексного регистра и общего (базового) индексного регистра. В такой системе пере­ мещение всей группы массивов в памяти требует одной операции засылки или изменения базового регистра.

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

Прямой путь состоит в том, чтобы ввести в команду несколько полей, определяющих индексацию. Однако это приводит к увеличению длины команды, в то же вре­ мя дополнительные поля команды не будут использо­ ваться в тех многочисленных случаях, когда многосту­ пенчатая индексация не нужна. Известны машины, у ко­ торых команда имеет два поля для указания индексации (IBM 360, ЕС ЭВМ и др.), большее число полей прак­ тически не встречается.

Другой, более экономичный метод многоступенчатой индексации состоит в следующем. Одно из значений по­ ля команды, указывающего индексацию, не присваи­ вается ни одному индексному регистру. Если в команде встречается это значение, то аппаратура машины фор­ мирует сумму содержимых двух (трех и т. д.) других определенных индексных регистров и использует эту сумму для модификации адресной части команды. На­ пример, кодовая комбинация 7 определяет не седьмой индексный регистр (его в машине вообще может не быть), а сумму содержимых 5-го и 6-го индексных ре­ гистров. При указанном способе в тех случаях, когда многоступенчатая индексация не нужна, недоиспользует­ ся только одна кодовая комбинация, а не целое поле команды.

Многоступенчатая индексация может успешно соче­ таться с предварительной индексацией. Наличие не­ скольких предварительных команд индексации может

318


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

5-4. СТРУКТУРА АРИФМЕТИЧЕСКОГО И ЛОГИЧЕСКОГО УСТРОЙСТВА

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

Можно провести следующую классификацию АЛУ. По способу действия над операндами АЛУ делятся на

последовательные и параллельные.

По структуре АЛУ делятся на АЛУ с непосредствен­ ными связями и АЛУ с магистральной структурой.

По способу представления чисел различаются:

1)АЛУ для чисел с фиксированной запятой;

2)АЛУ для чисел с плавающей запятой;

3)АЛУ для десятичных чисел.

АЛУ для чисел с фиксированной запятой в свою оче­ редь делятся на АЛУ с дробными и АЛУ с целыми чис­ лами. Целочисленные АЛУ используются как для чис­ ловой, так и для индексной арифметики.

По способу организации работы АЛУ делятся на син­ хронные и асинхронные.

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

319