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

Все современные вычислительные машины построены по принципам и имеют структуру, предложенную еще в 40–х годах академиком Джоном Фон Нейманом.

Принципы Фон Неймана:

Согласно первому принципу ЭВМ состоит из ряда устройств, взаимодействующих друг с другом в процессе решения задачи. Рассмотрим кратко основные устройства и их функции (рис. 2.1).

Рис.2.1. Структурная схема ЭВМ

Арифметико–логическое устройство (АЛУ) предназначено для выполнения предусмотренных в ЭВМ арифметических и логических операций. Участвующие в операциях данные выбираются из ОЗУ, результаты операций отсылаются в ОЗУ. Для ускорения выборки операндов (данных, участвующих в операциях) АЛУ может снабжаться собственной местной памятью (сверхоперативным запоминающим устройством – СОЗУ) на небольшое число данных (в сравнении с ОЗУ), но обладающей быстродействием, превышающим быстродействие ОЗУ. При этом результаты операций, если они участвуют в последующих операциях, могут не отсылаться в ОЗУ, а храниться в СОЗУ. Оперативная память вместе с СОЗУ представляет собой единый массив памяти, непосредственно доступный процессору для записи и чтения данных, а также считывания программного кода. К настоящему времени для оптимизации работы созданы процессоры с несколькими уровнями (от одного до трех) кэширования ОЗУ (несколькими СОЗУ).

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

Оперативная память (ОЗУ) – реализуется, как правило, на модулях (микросхемах) динамической памяти. ОЗУ служит для хранения программы, исходных данных задачи, промежуточных и конечных результатов решения задачи.

Память ЭВМ к настоящему времени приобрела довольно сложную структуру и "расползлась" по многим компонентам. Кроме оперативной, память включает также и постоянную (ПЗУ), из которой можно только считывать команды и данные, и некоторые виды специальной памяти (например видеопамять графического адаптера). Вся эта память вместе с оперативной располагается в едином пространстве с линейной адресацией. В любом компьютере обязательно есть постоянная память, в которой хранится программа начального запуска компьютера и минимальный необходимый набор сервисов (например: ROM BIOS).

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

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

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

Общие сведения о специализированном вычислителе БВЦ ТАКТ51

Ядром автоматизированного средства контроля является специализированный вычислитель – блок вычислителя цифрового (БВЦ ТАКТ51.51.000). Блок вычислителя цифрового предназначен для управления системой ТАКТ51, а также для обработки информации при проверке изделия и самопроверке работоспособности ТАКТ51. БВЦ относится к классу малых одноадресных управляющих специализированных цифровых вычислительных машин.

БВЦ реализует следующие функции:

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

Для того чтобы любая ЭВМ, в том числе и БВЦ, могла автоматически решать задачи, она должна обеспечивать выполнение следующих функций:

Для выполнения перечисленных функций в состав БВЦ входят: устройство ввода, запоминающее устройство (память), процессор, устройства вывода (являются периферийными по отношению к БВЦ и, по существу, не входят непосредственно в состав БВЦ).

Структура БВЦ изображена на рис.2.2.

Рис.2.2. Структура БВЦ ТАКТ51.

Устройство ввода (ПБВД–5) обеспечивает фотоэлектрическое считывание информации с восьмидорожечной перфоленты и представление считанной информации в двоичной форме в виде электрических сигналов, воспринимаемых оперативной памятью.

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

Процессор – это центральное устройство БВЦ. Процессор "воспринимает" программу и на ее основе управляет работой всех устройств БВЦ, инициируя выполнение действий в памяти и устройствах ввода–вывода. Функцией процессора является выборка команд из памяти и их выполнение.

Периферийными устройствами вывода (цифропечатающее устройство ПЦПУ–6, устройство вывода перфоленточное ПУВЛ–1) обеспечивается вывод информации из памяти для ее последующего использования (печать цифр и символов, пробивка отверстий на ленте).

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

Программа проверки изделия или самопроверки системы ТАКТ51 определяет объем и последовательность операций, выполняемых ТАКТ51. БВЦ вводит программу проверки с перфоленты в оперативную память и в соответствии с программой выдает команды на управляющие и измерительные блоки системы, принимает и обрабатывает информацию с измерительных блоков, а результаты проверки выводит на печать на ЦПУ и/или перфорацию на УВЛ.

Команда представляет собой цифровой код, преобразующийся в БВЦ в управляющие сигналы. Для БВЦ определен 13–разрядный двоичный формат команды, показанный на рис.2.3:

0

1

2

3

4

5

6

7

8

9

10

11

12

                         

Код команды

Адресная часть

КР

Рис.2.3. Структура команды БВЦ ТАКТ51.

Команда состоит:

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

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

Для представления чисел в ЭВМ используются две формы: естественная (с фиксированной запятой) и нормальная с (плавающей запятой).

Естественная (с фиксированной запятой) (FIXED – POINT REPRESENTATION) форма представления чисел предполагает, что положение запятой, отделяющей целую часть от дробной, фиксировано в разрядной сетке машины. Для представления знака выделяется специальный разряд – знаковый. Обычно это крайний левый разряд. Для положительных чисел в знаковом разряде записывается 0, а для отрицательных 1.

Количество двоичных разрядов и положение запятой в разрядной сетке машины определяют такие важные характеристики ЭВМ, как точность и диапазон представляемых чисел. Так, например, для n–разрядной сетки точность (дискретность) равна 2–n, а диапазон 0£|N|£2-1-1. Рассмотрим это более подробно.

Обычно в ЭВМ используются два способа расположения фиксированной запятой: перед старшим разрядом или после младшего разряда. В первом случае ЭВМ работает только с числами, меньшими единицы (рис.2.4а), во втором – с целыми (рис.2.4б).

0

1

2

. . .

n–1

n

 

2–1

2–2

. . .

2–(n–1)

2–n

Знак

Мантисса

а) запятая перед старшим разрядом

0

1

2

. . .

n–1

n

 

2n

2n–1

. . .

21

20

Знак

Мантисса

б) запятая после младшего разряда

Рис.2.4. Разрядная сетка с фиксированной запятой.

Длину разрядной сетки с фиксированной запятой в современных универсальных ЭВМ принято выбирать кратной байту (8 бит или 8 двоичных разрядов). В персональных ЭВМ используется разрядная сетка длиной 8, 16, 32 или 64 разряда. Для специализированных вычислителей возможны другая кратность и длина разрядной сетки.

Одним из важных преимуществ данной формы представления числа является возможность построения сравнительно несложных операционных устройств ЭВМ с высоким быстродействием, а недостатком – малый диапазон представления числа.

Нормальная (с плавающей запятой) (FLOATION – POINT REPRESENTATION) форма представления чисел позволяет значительно увеличить диапазон представления чисел (рис.2.5).

0

1

2

. . .

n–1

n

 

2m

...

20

 

2m

2m–1

. . .

21

20

Знак

Порядок

Знак

Мантисса

Рис.2.5. Разрядная сетка с плавающей запятой.

Представление числа в форме с плавающей запятой в общем виде определяется выражением N=±M*2±p, где М – мантисса числа, р – порядок, 2р характеристика числа. Знак числа совпадает со знаком мантиссы. Говорят, что число представлено в нормальной форме. Однако такое представление приводит к неоднозначности, поэтому мантисса М обычно представляется правильной дробью в нормализованном виде (первая цифра справа от запятой в числе должна быть отличной от нуля). Таким образом, значение нормализованной мантиссы должно удовлетворять неравенству 2–1£|М|<1. Для кодирования отрицательных чисел в ЭВМ применяют прямой, обратный и дополнительный коды. Обратный код числа получают инвертированием всех разрядов, а дополнительный код получают инвертированием всех разрядов и дальнейшим суммированием единицы с младшим разрядом.

Иногда для кодирования отрицательных чисел в ЭВМ применяют модифицированные прямой, обратный и дополнительный коды. В модифицированных кодах для кодирования числа отводят два разряда, причем знак плюс кодируется сочетанием 00, а знак минус – 11. Два разряда под знак позволяют контролировать переполнение разрядной сетки отведенной под мантиссу числа при выполнении арифметических операций. В остальном модифицированные коды аналогичны обычным.

Числа в специализированном вычислителе БВЦ ТАКТ51 представлены в немодифицированном дополнительном коде с фиксированной запятой рис.2.6.

0

1

2

3

4

5

6

7

8

9

10

11

                       

Знак

Мантисса

Рис.2.6. Форма представления числа в БВЦ ТАКТ51.

Нулевой разряд отведен для записи знака числа, причем плюс соответствует 0, а минус 1. Запятая считается фиксированной после знакового разряда.

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

Выполнение арифметических операций над двоичными числами

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

Принципы выполнения арифметических операций в различных процессорах сходны, но отличаются лишь конкретным исполнением. Порядок выполнения ряда арифметических операций рассмотрим на примере работы специализированного вычислителя БВЦ ТАКТ51.

Сложение.

При выполнении операции сложения по команде СЛ число из запоминающего устройства считывается в регистр числа РЧ и посылается на один вход сумматора. На другой вход сумматора передается число из регистра сумматора РС. Сложение двух чисел в двоичной системе, как и в десятичной, начинается с младшего разряда по правилам, которые даются таблицей двоичного сложения:

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 + единица переноса в старший разряд, т.е. 12+12=102.

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

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

Сдвиги.

Из последующего описания будет ясно, как широко используются операции сдвига вправо (влево) при умножении и делении.

Ввиду особой важности операции сдвига рассмотрим ее подробно.

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

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

В БВЦ используются все три разновидности сдвигов.

При циклическом сдвиге участвуют два регистра:

  • триггер дополнительный ТД
  • регистр сумматора РС.

Причем при выполнении циклического сдвига вправо содержимое регистра ТД передается в нулевой разряд регистра РС, содержимое нулевого разряда РС передается в первый разряд, содержимое первого разряда – во второй и т.д. Содержимое 11 разряда РС передается в ТД.

При циклическом сдвиге влево содержимое ТД передается во 11–й разряд РС, 11–й разряд РС – в 10–й и т.д. Содержимое нулевого разряда РС передается в ТД.

При логическом или арифметическом сдвиге вправо (влево) участвуют три регистра:
  • триггер дополнительный ТД;
  • регистр сумматора РС;
  • регистр дополнительный РД.

Причем при арифметическом сдвиге вправо (перед началом операции) триггеру дополнительному ТД присваивается значение нулевого разряда регистра РС и далее содержимое ТД не изменяется и передается в нулевой разряд РС, нулевой разряд РС – в первый и т.д. Содержимое 11 разряда РС передается в 0 – разряд РД, 0 – разряд РД – в первый и т.д. Содержимое 11–го разряда РД выходит за пределы регистра и теряется.

При логическом сдвиге вправо (перед началом операции) триггеру дополнительному ТД присваивается нулевое значение и далее сдвиг имеет место как описано выше. При сдвиге влево (арифметическом или логическом) в 11–й разряд регистра РД записывается нуль, а его содержимое передается в 10–й разряд РД и т.п. Содержимое 0–го разряда РД передается в 11–й разряд РС, 11–й разряд РС – в 10–й и т.д. Содержимое нулевого разряда РС передается в ТД, а содержимое ТД выходит за пределы регистра и теряется.

В БВЦ предусмотрены цепи сдвига вправо (влево) на один разряд. Сдвиг на несколько разрядов осуществляется путем последовательного повторения сдвигов на один разряд.

Если количество сдвигов задано, то учет выполненного количества сдвигов ведется счетчиком сдвига.

Нормализация.

Операция нормализации – это сдвиг влево до тех пор, пока не выполнится условие окончания нормализации.

Число называется нормализованным, если выполняются следующие условия:

  • сочетание "01" в нулевом и первом разрядах для положительного числа;
  • сочетание "10" в нулевом и первом разрядах для отрицательного числа;
  • если появляется код 60008 в регистре РС и нули во всех разрядах РД;
  • если присутствуют нули во всех разрядах регистров РС и РД.

Количество сдвигов, которое требуется для того чтобы нормализовать 24–х–разрядное число, фиксируется в счетчике сдвигов.

Умножение.

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

В БВЦ реализован метод умножения младшими разрядами множителя вперед со сдвигом частных произведений и множителя вправо на один разряд.

В каждом цикле множимое либо передается в сумматор, если младший разряд регистра множителя равен 1, либо не передается, если он равен 0, после чего содержимое сумматора и регистра множителя сдвигается вправо на один разряд. После окончания n–го цикла (где n – количество разрядов множителя) в сумматоре образуется произведение. Реализация умножения указанным методом требует сдвига вправо в регистре множителя и в сумматоре и дополнения сумматора n разрядами для заполнения их младшими разрядами произведения.

Вычисление произведения с полным количеством разрядов может быть выполнено без добавления к сумматору n разрядов. Для этого можно, связав младший разряд сумматора со старшим разрядом регистра множителя, объединить их в общий сдвиговый регистр (рис.2.9). Освобождающиеся при сдвиге старшие разряды регистра множителя заполняются младшими разрядами произведения. После окончания умножения сумматор заполняется старшими разрядами произведения, а весь регистр множителя – младшими его разрядами.

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

Рассмотрим примеры умножения с поразрядным анализом младшего разряда множителя, представленного в дополнительном коде.

Если множимое А>0 и множитель В>0, представленные n–разрядными прямыми кодами [A]пр и [Впр], то положительное произведение [С] получается в прямом коде просто как [С]пр.=[А]пр´[B]пр

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

Пример 1. Множимое А=7/8 и множитель В=5/8 заданы 4х–разрядными двоичными кодами соответственно [А]пр=0.111 и [В]пр=0.101. Требуется найти их произведение А´ В = 7/8´5/8 = 35/64 (табл.2.1).

Таблица 2.1.

Выполняемое действие

Множимое

Множитель

Исходное состояние

0.111

0.101

Исходная сумма частных произведений

0.000

+

0.111

0.101

1–я сумма частных произведений

0.111

0.101

Сдвинутая 1–я сумма

0.011

1.010

Сдвинутая 2–я сумма

0.001

+

0.111

1.101

3–я сумма частных произведений

1.000

1.101

Сдвинутая 3–я сумма

0.100

0.110

Окончательное произведение

[АВ]пр. = 0.1000112 = 35/6410.

 

 

Если множимое А>0 и множитель В<0, то в результате перемножения должно получиться отрицательное произведение в дополнительном коде, однако непосредственное умножение [А]пр.´ [В]доп. без специальной коррекции приводит к псевдопроизведению. Для того чтобы получить точное произведение, необходимо алгоритм умножения, если множитель отрицательный, строить в соответствии с формулой:

[C]доп.=[А]пр´[В]доп+[–А]доп.

Пример 2. Множимое А = 7/8 и множитель В = –5/8 заданы 4х–разрядными двоичными кодами: [А]пр=0.111 и [В]доп=1.011. Требуется найти их произведение А ´ В = 7/8 ´ (–5/8) = –35/64. (табл.2.2).

Таблица 2.2.

Выполняемое действие

Множимое

Множитель

Исходная сумма частных произведений

0.111

0.000

+

0.111

0.011

1–я сумма частных произведений

0.111

1.011

Сдвинутая 1–я сумма

0.011

+

0.111

1.101

2–я сумма частных произведений

1.010

1.101

Сдвинутая 2–я сумма

0.101

0.110

Сдвинутая 3–я сумма

 

Коррекция

0.010

+

1.001

1.011

 

1.011

1.011

Окончательное произведение

[АВ]доп. = 1.0111012 = 35/6410.

[АВ]пр. = –0.1000112 = –35/6410.

   

Программное управление вычислительным процессом

Один из принципов построения ЭВМ, предложенных Дж. фон Нейманом – наличие хранимой в памяти программы. Процессор исполняет программный код, находящийся к моменту исполнения в пространстве памяти. Программный код – это последовательность команд, или инструкций, каждая из которых определенным образом закодирована и расположена в целом числе смежных байт памяти. Каждая инструкция обязательно имеет операционную часть, несущую процессору информацию о требуемых действиях. Операндная часть, указывающая процессору, где находится его "предмет труда" – операнды, может присутствовать в явном или неявном виде и даже отсутствовать. Операндная часть может описывать от нуля до двух операндов, участвующих в данной инструкции (есть инструкции, в которые кроме двух операндов задается еще и параметр инструкции). Здесь могут быть сами значения операндов (непосредственные операнды); явные или неявные указания на регистры процессора, в которых находятся операнды; адрес ячейки памяти (или его составная часть); регистры процессора, участвующие в формировании адреса, и разные комбинации этих компонент. Длина инструкции в семействе x86 может быть от одного до 12 байт и определяется типом инструкции. Исторически сложившийся формат инструкций х86 довольно сложен, и "понять", сколько байт занимает конкретная инструкция, процессор может, лишь декодировав ее первые 1–3 байт. Инструкции могут предшествовать префиксы (к счастью, всегда однобайтные), указывающие на изменение способа адресации, размера операнда или (и) необходимость многократного (по счетчику и условию) повторения данной инструкции. Адрес (логический) текущей исполняемой инструкций хранится в специальном регистре – указателе инструкций (Instruction Pointer, IP), который соответствует счетчику команд фон–неймановской машины. После исполнения так называемой линейной инструкции этот указатель увеличивает свое значение на ее длину, то есть указывает на начало следующей инструкции. Линейная инструкция не нарушает порядок выполнения, определяемый последовательностью расположения инструкций в памяти (по нарастанию адреса). Кроме линейных инструкций, существуют инструкции передачи управления, среди которых различают инструкции переходов и вызовов процедур. Эти инструкции в явном или неявном виде содержат информацию об адресе следующей выполняемой инструкции, который может указывать на относительно произвольную ячейку памяти. Инструкции переходов и вызовов могут быть безусловными (ни от чего не зависящими) и условными. Произойдет условный переход (вызов) или нет, зависит от состояния флагов (признаков) на момент исполнения данной инструкции. Если переход (вызов) не состоится, то исполняется инструкция, расположенная в памяти следом за текущей. Вызов процедуры характерен тем, что перед ним процессор сохраняет в стеке (стек – это область ОЗУ) адрес следующей инструкции, и на этот адрес передается управление после завершения исполнения процедуры (этот адрес извлекается из стека при выполнении инструкции возврата). При переходе в стеке ничего не сохраняется, то есть переход выполняется безвозвратно.

Последовательность исполнения инструкций, предписанная программным кодом, может быть нарушена под воздействием внутренних или внешних (относительно процессора) причин. К внутренним причинам относятся исключения (exceptions) – особые ситуации, возникающие при выполнении инструкций. Наглядным примером исключений является попытка деления на ноль. При возникновении условия исключения процессор автоматически выполняет вызов процедуры обработки исключения, после которой он может вернуться к повторному исполнению инструкции, породившей исключение или следующей за ней. Вариант поведения зависит от типа произошедшего исключения. Исключения широко используются современными операционными системами, на основе обработки исключений строится система виртуальной памяти и реализуются многие функции многозадачных операционных систем. Внешними причинами изменения нормальной последовательности инструкций являются аппаратные прерывания – вызовы процедур под воздействием электрических сигналов, поступающих на специальные выводы процессора. Эти сигналы могут подаваться совершенно неожиданно для исполняемой программы, правда, у программиста есть возможность заставить процессор (компьютер) игнорировать все прерывания или их часть. Злоупотреблять этой возможностью нельзя (да и не всегда она есть), поскольку на аппаратных прерываниях строится, например, отсчет времени и другие системные и прикладные функции компьютера. Источниками аппаратных прерываний являются контроллеры и адаптеры периферийных устройств, генераторы меток времени, системы управления питанием и другие подсистемы.

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

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

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

 

Коп

А1

А2

А3

Здесь КОп — код операции. В каждой ЭВМ предусматривается определенная система кодирования операций. Например, может быть принят следующий способ записи вида операции: 01 — сложение, 02 — вычитание, 03 — умножение и т.д.; А1 — первый адрес — адрес ячейки оперативной памяти, в которой хранится первый операнд; А2 — второй адрес — адрес второго операнда; А3 — третий адрес — адрес ячейки оперативной памяти, в которую должен помещаться результат операции. Команда с таким содержанием называется трехадресной.

ЭВМ могут использовать двухадресные команды, имеющие следующий формат:

Коп

А1

А2

Результат операции в этом случае помещается в ячейку одного из операндов либо остается в АЛУ.

Одноадресные команды имеют формат:

Коп

А1

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

  • ввести в АЛУ число, хранящееся в оперативной памяти (ОЗУ) по приведенному в команде адресу;
  • прибавить к принятому числу число, хранящееся в памяти по указанному в команде адресу;
  • поместить полученный в АЛУ результат в память по адресу, указанному в данной команде.
Широкое распространение получили машины с переменной адресностью. В них при выполнении операций операнды (один либо оба) могут выбираться не из оперативной памяти, а из местной (СОЗУ). Команды этих машин по существу являются двухадресными, но оба адреса либо один из них могут быть адресами не оперативной памяти, а регистров местной памяти АЛУ.

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

Процесс реализации программы состоит в последовательной выборке из ОЗУ команд и их исполнении. Вызванная из ОЗУ в устройство управления (УУ) очередная команда хранится в нем все время исполнения операции. УУ выбирает из команды первый адрес А1, пересылает его в ОЗУ и подает сигнал считывания. Из ОЗУ выдается первый операнд. УУ подает в АЛУ сигнал отпирания входов регистра, в который должен быть принят этот операнд. Аналогично по второму адресу А2 производится передача из ОЗУ в АЛУ второго операнда. Затем УУ подает в АЛУ управляющие сигналы, под действием которых выполняется предусмотренная командой операция. После получения результата операции УУ передает в ОЗУ третий адрес А3, подает сигнал записи и открывает выход регистра АЛУ, хранящего результат операции.

Далее в ОЗУ передается адрес очередной команды, сформированной в УУ (например, путем увеличения на единицу адреса предыдущей команды), в УУ поступает следующая команда и т.д.

Система команд специализированного вычислителя БВЦ ТАКТ51

Состав системы команд и структура команд неразрывно связаны с архитектурой вычислительной системы.

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

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

Текущий адрес команды находится в счетчике команд (СК). При естественном порядке выполнения команд из последовательных ячеек памяти СК увеличивается на единицу после выборки однословной команды и на два после выборки двухсловной команды.

Виды адресации в БВЦ:
  • абсолютная и относительная (страничная);
  • прямая и косвенная.
Адресация ячеек памяти в ОЗУ и ПЗУ БВЦ сквозная, начиная с ОЗУ. Диапазон адресов ОЗУ 00008–07778, диапазон адресов ПЗУ 10008–77778. Для обеспечения возможности обращения в любую ячейку памяти с помощью 12-разрядной команды в БВЦ используется страничная организация памяти. С этой целью вся память делится на страницы. Так как общий объем памяти 4096 ЯП (5I2 – ОЗУ, 3584 – ПЗУ), то память имеет всего 32 страницы. Нумерация страниц проводится в двоичном коде, начиная с нулевой страницы ОЗУ. Длина страницы памяти составляет 128 (2008) ЯП, поэтому в ОЗУ располагаются только четыре первые страницы, начиная с нулевой (табл.2.3). Таким образом, максимальный относительный адрес равен 01778, т.е. в пределах текущей страницы, а максимальный абсолютный – 77778.

Таблица 2.3.

Диапазон адресов

Порядковый номер страницы

00008–01778

нулевая страница

02008–03778

первая страница

04008–05778

вторая страница

06008–07778

третья страница

Адресные команды обращения к памяти могут непосредственно адресовать одно из 256 слов: 128 слов в нулевой странице и 128 слов в текущей странице. Текущей страницей называется страница памяти, в которой хранится выполняемая команда.

В адресной команде (рис.2.3) выделен один разряд (4-й разряд признак страницы ПСТ), указывающий, к какой странице производится обращение к нулевой (если 4-й разряд содержит 0) или текущей (если 4-й разряд содержит 1). Для обращения к любой другой странице введено понятие косвенной адресации.

При косвенной адресации в адресной части команды указывается адрес ЯП, в который записан 12-разрядный адрес слова. При непосредственной (прямой) адресации, в отличие от косвенной, в адресной части команды указывается адрес ЯП, в который записано само слово. Для записи признака прямой или косвенной адресации в команде также выделен один разряд (3-й разряд – признак адресации ПКА). При наличии 1 в 3–м разряде выполняется косвенная адресация, а, при 0 – прямая.

На нулевой странице находятся модифицируемые ячейки памяти (в диапазоне 00108–00178). При обращении к ячейкам памяти из этого диапазона их содержимое сначала увеличивается на единицу, а уже затем выполняется предписанное действие.

Система команд вычислителя имеет обширный набор команд, обеспечивающий выполнение более 260 видов операций. По назначению команды вычислителя можно сгруппировать в следующие классы (рис.2.7):

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

Рис.2.7. Система команд БВЦ.

Рассмотрим каждый класс команд отдельно.

 

1. Адресные (адресуемые) команды.

В адресных (адресуемых) командах кроме КОДа указывается адрес ЯП ЗУ, к которой необходимо обратиться за очередным адресом, операндом или для записи результата выполнения действия. Адресных команд шесть.

Это команды:

  • Логическое умножение (КОД 0002) – И;
  • Сложение (КОД 0012) – СЛ;
  • Конец цикла (КОД 0102) – КЦ;
  • Запись (КОД 0112) – ЗРС;
  • Безусловная передача управления с возвратом (КОД 1002) – БВП;
  • Безусловная передача управления (КОД 1012) – БП.

Логическое умножение.

Структура команды И.

0

1

2

3

4

5

6

7

8

9

10

11

0

0

0

                 

код

адресное слово

Код команды 000 показывает, что это команда "Логическое умножение", которая определяет операцию конъюнкций РС:=РС& П[А]. Регистру сумматора присваивается значение регистра сумматора, поразрядно логически умноженное на содержимое ЯП по адресу "А" согласно правилу логического умножения. Разряд знака умножается на общих основаниях. После выполнения операции содержимое ЯП с адресом "А" не изменяется.

Сложение.

Структура команды СЛ.

0

1

2

3

4

5

6

7

8

9

10

11

0

0

1

                 

код

адресное слово

Код команды 0012 показывает, что это адресная команда "Сложение", которая определяет операцию: РС:=РС+П[А]. В РС после выполнения данной команды будет занесено значение бывшего в РС операнда, суммированное со значением операнда, взятым из памяти по адресу "А" (адресу слова).

Конец цикла.

Структура команды КЦ.

0

1

2

3

4

5

6

7

8

9

10

11

0

1

0

                 

код

адресное слово

Код команды 0102 показывает, что это команда "конец цикла", которая определяет операцию П[А]:=П[А]+1. По этой команде производится алгебраическое сложение содержимого ЯП с адресом "А" с единицей. Результат снова заносится в ЯП с адресом "А" и анализируется. Если содержимое ЯП не равно нулю, то выполняется очередная команда, обеспечивающая возврат к началу цикла. Адрес этой команды формируется в счетчике команд в результате операции СК:=СК+1. Как только в ЯП появится ноль, содержимое СК увеличится на два СК:=СК+2, и следующая команда (команда зацикливания "БП") пропускается. Таким образом, прекращается выполнение цикла и идет продолжение программы.

Запись.

Структура команды ЗРС.

0

1

2

3

4

5

6

7

8

9

10

11

0

1

1

                 

код

адресное слово

Код команды 0112 показывает, что это команда "Запись", которая определяет операции П[А]:=РС; РС:=0. В ЯП по адресу "А" записывается содержимое РС, после чего РС обнуляется. Предыдущее значение ЯП стирается.

Безусловная передача управления с возвратом.

Структура команды БПВ.

0

1

2

3

4

5

6

7

8

9

10

11

1

0

0

                 

код

адресное слово

Код команды 1002 показывает, что эта команда "Безусловная передача управления возвратом", которая определяет операции: П[А]:=СК+1; СК:=П[А+1]. В ЯП по адресу "А" записывается содержимое СК, увеличенное на единицу (сформированный адрес возврата на продолжение программы). Управление передается команде, адрес которой находится в ЯП "А+1". В конце подпрограммы выполняется команда БП на ЯП с адресом "А".

Безусловная передача управления.

Структура команды БП.

0

1

2

3

4

5

6

7

8

9

10

11

1

0

1

                 

код

адресное слово

Код команды 1012 показывает, что эта команда "Безусловная передача управления", которая определяет операцию СК:=П[А]. Управление передается команде, адрес которой находится в ЯП с адресом "А", для чего содержимое ЯП записывается в СК. Таким образом, обеспечивается безусловный переход на другие участки программы.

 

2. Команды обмена с внешними устройствами.

Команды обмена с внешними устройствами имеют КОД 68. С помощью команд обмена осуществляется обмен информацией между ВЧУ и периферийными блоками (устройствами) по интерфейсному каналу и прием информации от блока ввода данных БВД. К этой же группе команд относятся команды управления режимом обмена и обработки прерывания интерфейса, а также команды управления дополнительной памятью.

 

3. Безадресные команды.

Безадресные команды имеют КОД 78 (1112). Команды этого типа не требуют обращения к памяти. В них 3...11–й разряды используются под код операции. Все безадресные команды делятся на две основные группы. Первая группа характеризуется наличием 0 в 3–м разряде. Вторая группа безадресных команд характеризуется единицей в 3–м разряде и нулем в 11–м разряде.

3.1. Безадресные команды первой группы.

0

1

2

3

4

5

6

7

8

9

10

11

1

1

1

0

               

код

адресное слово

Команды этой группы служат для кодирования операций обнуления и инвертирования регистра сумматора и дополнительного триггера, циклического сдвига РС в ТД вправо (влево) на один (два) разряда и увеличения на "1" содержимого РС.

3.2. Безадресные команды второй группы.

0

1

2

3

4

5

6

7

8

9

10

11

1

1

1

1

             

0

код

адресное слово

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

4. Специальные команды.

0

1

2

3

4

5

6

7

8

9

10

11

1

1

1

         

1

1

   

код

адресное слово

Специальные команды имеют код 78 и характеризуются наличием 1 в 8–м и 9–м разрядах. Специальные команды служат для кодирования операций: записи в РС содержимого регистров маски, ошибок, состояния программы и счетчика времени, установки и сброса регистров маски и маски контроля, записи содержимого счетчика команд в память, выдачи требуемой последовательности импульсов, проверки схем контроля. Для кодирования этих операций служат 4, 5, 10 и 11–й разряды. Специальные команды бывают одно– и двухсловные.

4.1. Однословные специальные команды.

Количество однословных специальных команд – восемь. Однословные команды не требуют обращения к памяти (за исключением команды "ЗСК").

4.2. Двухсловные специальные команды.

К двухсловным специальным командам относятся: команды обращения к устройству выдачи последовательностей и команда проверки контроля (идентификатор – ПК). Команда ПК используется для проверки исправности следующих схем контроля: тактового генератора, блока местного управления ОЗУ, на четность СК, РА, РЧ, РК и др. Проверка осуществляется путем имитации неисправности отдельно в каждом из контролируемых устройств. Если проверяемая схема контроля исправна, то возникает прерывание по аппаратному контролю. Если схема контроля неисправна, то управление передается следующей команде. Команда ПК занимает две расположенные друг за другом ячейки памяти. В первой ячейке записывается сама команда, во второй – слово, где в соответствующих разрядах указывается проверяемая схема контроля.

5. Арифметические команды.

0

1

2

3

4

5

6

7

8

9

10

11

1

1

1

1

             

1

код

адресное слово

Арифметические команды имеют код 78 и характеризуются наличием "1" в 3–м и 11–м разрядах. Команды этого типа имеют идентификатор "АК" и делятся на две группы. К первой группе относятся однословные команды, не требующие обращения к памяти. Арифметические команды второй группы являются двухсловными и требуют обращения к памяти.

5.1. Однословные арифметические команды.

Разряды 4, 5, 6, 7 и 10 в командном слове используются для кодирования операций обмена между регистрами РС, РД (регистр дополнительный) и СС (счетчик сдвигов). Однословные арифметические команды микропрограммируются для выполнения непротиворечивых логических операций.

5.2. Двухсловные арифметические команды.

Команды инвертирования, умножения и деления, сдвиги влево и вправо. Команды этого типа занимают две расположенные друг за другом ячейки памяти. В первой ячейке записывается собственно команда, во второй – операнд или адрес ячейки, в которой находится операнд. В арифметическом регистре команд (РКА) устройства управления записываются 6, 8, 9 и 10–й разряды командного слова, которые определяют код арифметической операции. Тип информации (операнд или адрес операнда), расположенной во втором слове арифметической команды, определяется специальным триггером модификации ТМ.