Войти
Автомобильный портал - Двигатель. Замена свечей. Подсветка. Права и вождение
  • Договор аренды банковской ячейки
  • Налог на частный дом и земельный участок для физических лиц
  • Можно ли продать квартиру с перепланировкой, если она неузаконенная Как продать квартиру незаконной перепланировкой
  • Правила и процедура проведения егэ Сколько времени длится егэ по английскому
  • Продажа квартиры: кто обычно оплачивает оформление документов
  • Рейтинг самых истеричных знаков зодиака 3 самых истеричных знака зодиака
  • Что такое система команд эвм. Система команд эвм и способы обращения к данным

    Что такое система команд эвм. Система команд эвм и способы обращения к данным

    Александр Савватеев

    Общие сведения

    Вычислительная машина М-3 разработана под руководством И. С. Брука. Она относится к классу малых универсальных машин.

    Машина выполняет действия над 31-разрядными числами с фиксированной запятой со скоростью 30 двухадресных операций в секунду. Оперативная память реализована на магнитном барабане и имеет емкость 2048 чисел. В случае подключения к ЭВМ памяти на магнитных сердечниках быстродействие возрастает до 1500 операций в секунду.

    Устройств внешней памяти М-3 не имеет.

    Для ввода-вывода информации используются перфолента и телетайп.

    Машина имеет 770 электронных ламп и 3000 полупроводниковых диодов, потребляет 10 кВт электроэнергии. Для ее размещения достаточно 30-40 м 2 .

    Память и структура информации

    Оперативная память ЭВМ М-3 имеет объем 2048 31-разрядных чисел или команд. Все ячейки памяти равноправны между собой. Для обращения к ячейкам памяти используются 11-разрядные адреса. Разряды ячеек памяти нумеруются слева направо; старший (самый левый) разряд имеет номер 0.

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

    Десятичные числа также имеют нулевую целую часть. Их знак размещается в нулевом разряде, а в разрядах 1-28 расположены семь тетрад, кодирующих десятичные цифры дробной части числа. Разряды 29-30 не используются.

    Ввод-вывод информации

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

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

    Вывод информации осуществляется на печатающее устройство типа телетайпа.

    Система команд

    ЭВМ М-3 относится к двухадресным машинам. Каждая команда занимает одну ячейку памяти. Разряд кода команды 0 не используется, разряды 1-6 содержат код операции, разряды 7-18 - адрес первого операнда, разряды 19-30 - адрес второго операнда и результата.

    Арифметическое устройство ЭВМ М-3 имеет сумматор, в который заносится результат последней выполненной операции. Содержимое сумматора может быть использовано при выполнении следующей операции.

    При получении отрицательного результата, в том числе отрицательного нуля, формируется признак w =1. При получении положительного результата признак w =0.

    Все команды можно разделить на две группы: арифметико-логические и команды управления.

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

    Таблица 1

    Таблица 2

    В табл. 1 a и b означают ячейки памяти, заданные первым и вторым адресом в коде команды соответственно; r - регистр-сумматор.

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

    Таблица 3

    Код операции Название команды Действия, выполняемые по команде
    07
    27
    Ввод числа с перфоленты Одно число с перфоленты вводится в ячейку b . В сумматор оно не заносится. Адрес ячейки a равен нулю
    05
    15
    Перенос числа Число из ячейки a переносится в ячейку b
    45
    55
    Перенос числа и печать Число из ячейки a переносится в ячейку b и одновременно печатается на телетайпе
    24 Безусловный переход по первому адресу a
    b
    64 Безусловный переход по первому адресу и печать Происходит передача управления на ячейку с адресом a
    и одновременно содержимое сумматора записывается в ячейку с адресом b и печатается на телетайпе
    74 Безусловный переход по второму адресу Управление передается команде с адресом b . Адрес a в коде команды равен нулю. Знаковый разряд сумматора очищается, т. е. в сумматоре остается абсолютная величина его первоначального значения
    34 Условный переход Если w =1, происходит передача управления на ячейку с адресом a , а если w =0 - на ячейку с адресом b
    37 Останов Машина останавливается. На пульт управления выдается a . Содержимое сумматора не изменяется. Поле адреса b в коде команды равно нулю

    Основной цикл работы ЭВМ

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

    Система команд ЭВМ и способы обращения к данным

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

    • 1. Команды передачи данных (перепись), копирующие информацию из одного места в другое.
    • 2. Арифметические операции, которым фактически обязана своим названием вычислительная техника. Конечно, доля вычислительных действий в современном компьютере заметно уменьшилась, но они по-прежнему играют в программах важную роль. Отметим, что к основным арифметическим действиям обычно относятся сложение и вычитание (последнее в конечном счете чаще всего тем или иным способом также сводится к сложению). Что касается умножения и деления, то они во многих ЭВМ выполняются по специальным программам.
    • 3. Логические операции, позволяющие компьютеру анализировать обрабатываемую информацию. Простейшими примерами могут служить сравнение, а также известные логические операции И, ИЛИ, НЕ (инверсия). Кроме того к ним часто добавляются анализ отдельных битов кода, их сброс и установка.
    • 4. Сдвиги двоичного кода влево и вправо. Для доказательства важности этой группы команд достаточно вспомнить правило умножения столбиком: каждое последующее произведение записывается в такой схеме со сдвигом на одну цифру влево. В некоторых частных случаях умножение и деление вообще может быть заменено сдвигом (вспомните, что дописав или убрав ноль справа, т.е. фактически осуществляя сдвиг десятичного числа, можно увеличить или уменьшить его в 10 раз).
    • 5. Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами памяти, поэтому ввод и вывод осуществляется с помощью команд переписи.
    • 6. Команды управления, реализующие нелинейные алгоритмы. Сюда прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: цикл может быть сведен к той или иной комбинации условного и безусловного переходов. Часто к этой же группе команд относят немногочисленные операции по управлению процессором -типа “останов” или НОП (“нет операции”). Иногда их выделяют в особую группу.

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

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

    Рассматривая систему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд CISC (Complex Instruction Set Computer) и с ограниченным набором - RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически (в одной из популярных статей это в шутку сформулировано в виде следующей наглядной аналогии: “20% населения выпивают 80% пива”). Таким образом, если существенно ограничить набор операций до наиболее простых и коротких, зато тщательно оптимизировать их, получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации “отброшенных” команд, но часто эта плата бывает оправданной: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования. Подробнее вопросы, связанные с системой команд современных микропроцессоров, будут рассмотрены ниже в этой главе.

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

    Основной цикл работы ЭВМ

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

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

    При выполнении каждой команды ЭВМ проделывает определенные стандартные действия:

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

    Затем во всех случаях, за исключением команды останова или наступления прерывания (см. ниже в п. 3.5), все описанные действия циклически повторяются.

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

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

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

    Cпособы указания адреса расположения информации

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

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

    Адресная часть обладает значительно большим разнообразием и ее следует рассмотреть подробнее.

    Прежде всего отметим, что команды могут быть одно-, двух- и трехадресные в зависимости от числа участвующих в них операндов.

    Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. Например: взять числа из адресов памяти А1 и А2, сложить их и сумму поместить в адрес A3. Если для операции требовалось меньшее число адресов, то лишние просто не использовались. Скажем, в операции переписи указывались лишь ячейки источника и приемника информации А1 и A3, а содержимое А2 не имело никакого значения.

    Трехадресная команда легко расшифровывалась и была удобна в использовании, но с ростом объемов ОЗУ ее длина становилась непомерно большой. Действительно, длина команды складывается из длины трех адресов и кода операции. Отсюда следует, например, что для скромного ОЗУ из 1024 ячеек только для записи адресной части одной команды требуется 3*10 = 30 двоичных разрядов, что для технической реализации не очень удобно. Поэтому появились двухадресные машины, длина команды в которых сокращалась за счет исключения адреса записи результата. В таких ЭВМ результат операции оставался в специальном регистре (сумматоре) и был пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов.

    Дальнейшее упрощение команды привело к созданию одноадресных машин. Рассмотрим систему команд такой ЭВМ на конкретном простом примере. Пусть надо сложить числа, хранящиеся в ячейках с адресами ОЗУ А1 и А2, а сумму поместить в ячейку с адресом A3. Для решения этой задачи одноадресной машине потребуется выполнить три команды:

    • * извлечь содержимое ячейки А1 в сумматор;
    • * сложить сумматор с числом из А2;
    • * записать результат из сумматора в A3.

    Может показаться, что одноадресной машине для решения задачи потребуется втрое больше команд, чем трехадресной. На самом деле это не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения А5 = (А1 + А2)*АЗ/А4 и вы обнаружите, что потребуется три трехадресных команды и всего пять одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, так как она не производит ненужной записи в память промежуточных результатов.

    Ради полноты изложения следует сказать о возможности реализации безадресной (нуль-адресной) машины, использующей особый способ организации памяти -стек. Понимание принципов устройства такой машины потребовало бы некоторых достаточно подробных разъяснений. Сейчас безадресные ЭВМ практически не применяются. Поэтому ограничимся лишь упоминанием того факта, что устроенная подобным образом система команд лежала в основе некоторых программируемых микрокалькуляторов (например, типа “БЗ-21” и “БЗ-34” и им подобных).

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

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

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

    В ЭВМ третьего поколения идеология построения памяти существенно изменилась: минимальная порция информации для обмена с ОЗУ была установлена равной 8 двоичных разрядов, т.е. один байт. Стало возможным обрабатывать несколько типов данных: символы текста (1 байт), целые числа (2 байта), вещественные числа обычной или двойной точности (4 или 8 байт соответственно). В связи с этим была введена новая условная единица измерения информации - машинное слово. Оно равнялось 4 байтам и соответствовало длине стандартного вещественного числа. Все объемы информации начали измеряться в единицах, кратных слову: двойное слово, полуслово и т.п. Естественно, что адрес (номер ячейки ОЗУ) в машинах с байтовой организацией стал относится к отдельному байту; байты памяти имеют возрастающие на единицу номера. Слово состоит из нескольких последовательно расположенных байтов. В качестве адреса слова удобно принимать адрес одного из образующих его байтов (обычно используется младший байт, имеющий наименьший номер). Таким образом, адреса слов меняются уже не через единицу; их приращение зависит от длины машинного слова в байтах и равняется четырем.

    Размер машинного слова был, по-видимому, выбран исходя из форматов обрабатываемой информации, а не в связи с разрядностью каких-либо устройств. Для подтверждения этого приведем несколько фактов о типичных ЭВМ третьего поколения из семейства ЕС. Арифметико-логическое устройство модели “ЕС-1022” имело 16 двоичных разрядов, “ЕС-1033” - 32 разряда, а “ЕС-1050” - 64 разряда. В то же время за одно обращение к оперативной памяти в “ЕС-1022” и “ЕС-1033” выбиралось 4 байта, в “ЕС-1050” - 8 байт (а в “ЕС-1045” - 16 байт). Таким образом, разнообразие цифр свидетельствует, что 32 разряда (4 байта) не являлись каким-то технически выделенным объемом информации.

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

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

    Во время работы над EDVAC в 1945 г. между его разработчиками произошел крупный конфликт. Дело в том, что EDVAC стал базой для третьей масштабной теоретической работы по вычислительной технике (первая, описание “аналитической машины», принадлежала Чарльзу Бэббиджу, вторая - Алану Тьюрингу). Но ни Мочли, ни Эккерт не смогли обобщить свои знания и абстрагироваться от радиоламп и электронных схем. Может быть, они пренебрегали этим по соображениям секретности, может быть, физики не снизошли до строгого математического изложения. Фон Нейман же написал “Предварительный доклад о машине EDVAC », в котором детально изложил логическую организацию и общие принципы функционирования универсальных вычислительных устройств. Доклад был разослан многим ученным из разных стран и получил широкую известность (поэтому конструкторам ENIAC не удалось впоследствии запатентовать свой проект).

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

    Компьютер должен иметь:

    • · арифметическо-логическое устройство, выполняющее арифметические и логические операции. В наше время это устройство называется центральный процессор. Центральный процессор (central processing unit) - микропроцессор компьютера, представляющий собой микросхему, которая управляет всеми процессами, происходящими в компьютере;
    • · устройство управления, которое организует процесс выполнения программ. В современных компьютерах арифметическо-логическое устройство и устройство управления объединены в центральный процессор;
    • · запоминающее устройство (память) для хранения программ и данных;
    • · внешние устройства для ввода-вывода информации.

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

    Принцип работы:

    • · С помощью внешнего устройства в память компьютера вводится программа.
    • · Устройство управления считывает содержимое ячейки памяти, где находится первая инструкция (команда) программы и организует ее выполнение. Команда может задавать:
      • o выполнение логических или арифметических операций;
      • o чтение из памяти данных для выполнения арифметических или логических операций;
      • o запись результатов в память;
      • o ввод данных из внешнего устройства в память;
      • o вывод данных из памяти на внешнее устройство.
    • · Устройство управления начинает выполнение команды из ячейки памяти, которая находится непосредственно за только что выполненной командой. Однако этот порядок может быть изменен с помощью команд передачи управления (перехода). Эти команды указывают устройству управления, что ему необходимо продолжить выполнение программы, начиная с команды, содержащейся в иной ячейки памяти.
    • · Результаты выполнения программы выводятся на внешнее устройство компьютера.
    • · Компьютер переходит в режим ожидания сигнала от внешнего устройства.

    Один из принципов "Архитектуры фон Неймана" гласит: в компьютере не придется изменять подключения проводов, если все инструкции будут храниться в его памяти. И как только эту идею в рамках “архитектуры фон Неймана» воплотили на практике, родился современный компьютер.

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

    Благодаря фирме IBM идеи фон Неймана реализовались в виде широко распространенного в наше время принципа открытой архитектуры системных блоков компьютеров. Согласно этого принципа компьютер не является единым неразъемным устройством, а состоящим из независимо изготовленных частей, причем методы сопряжения устройств с компьютером не являются секретом фирмы-производителя, а доступны всем желающим. Таким образом, системные блоки можно собирать по принципу детского конструктора, то есть менять детали на другие, более мощные и современные, модернизируя свой компьютер (апгрейд, upgrade -- "повышать уровень"). Новые детали полностью взаимозаменяемы со старыми. «Открыто архитектурными» персональные компьютеры делает также системная шина, это некая виртуальная общая дорога или жила, или канал, в который выходят все выводы ото всех узлов и деталей системного блока. Надо сказать, что большие компьютеры (не персональные) не обладают свойством открытости, в них нельзя просто так что-то заменить другим, более совершенным, например, в самых современных компьютерах могут отсутствовать даже соединительные провода между элементами компьютерной системы: мышью, клавиатурой ("keyboard"- "клавишная доска") и системным блоком. Они могут общаться между собой при помощи инфракрасного излучения, для этого в системном блоке есть специальное окошко приема инфракрасных сигналов (по типу пульта дистанционного управления телевизора).

    В настоящее время обычный персональный компьютер представляет собой комплекс, состоящий из:

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

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

    архитектура нейман программа двоичный

    Джон фон Нейман

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

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

    Арифметическо-логическое устройство выполняет заданные арифметические или логические операции над указанными в команде данными.

    Эти аппаратные средства соединяются друг с другом посредством одной или нескольких шин. Шина - это электрическое соединение между несколькими точками, которые могут быть источниками или приемниками сигналов (ее можно сравнить с транспортным средством, которое принимает и высаживает пассажиров). Длина слова микро-микрокомпьютера обычно составляет 4, 8, 16 бит и т. д.

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

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

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

    Архитектура ПК. Основные принципы работы ЭВМ.

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

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

    Классические принципы построения архитектуры ЭВМ были предложены в работе Джона фон Неймана, Г. Голдстейга и А. Беркса в 1964г и известны как «принципы фон Неймана»

    Эти принципы следующие:

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

    В составе любого компьютера можно выделить следующие функциональные блоки:

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

    Первые ЭВМ строились в соответствии с фон-Неймановской структурой, которую можно представить следующим образом: (толстыми линиями обозначены информационные связи, тонкими - управляющие сигналы)

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

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

    Современные ПК построены по магистрально - модульному принципу. Это означает, что все кстройства подключены к единой магистрали (набору кабелей). Причем подключение всех устройств осуществляется с помощью стандартных разъемов, а параметры электрических сигналов, которые используют устройства для управления и обмена данными, также стандартизованы. Т.е. все устройства «общаются по одним и тем же правилам». Это дает возможность пользователю изменять комплектность ПК путем замены, удаления или добавления блоков-модулей.

    Структуру ПК можно представить следующим образом:

    Здесь ЦП - центральный процессор; включает в себя устройство управления и арифметико-логическое устройство. ЦП управляет работой всех устройств компьютера и выполняет все операции по обработки данных.

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

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

    ВУ - внешние устройства, среди которых выделяют:

    • o устройства ввода (например, клавиатура);
    • o устройства вывода (например, принтер)
    • o устройства обмена данными (например, модем)
    • o устройства чтения/записи и хранения информации (например, дисководы и флэшки)

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

    Каждое внешнее устройство управляется контроллером - специальным устройством управления. Контроллер является «посредником» между быстро работающим ЦП и медленно работающим ВУ. Например, получив команду от процессора на распечатку текста, контроллер переводит ее в последовательность элементарных команд, которые должен выполнить принтер: подать бумагу, нагреть тонер, электризовать барабан, распылить краску, прижать бумагу и т.д. Процессор в это время может решать другие задачи. Таким образом, использование контроллеров повышает производительность компьютера.

    Кроме того, для управления внешними устройствами необходимы специальные программы - драйверы.

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

    Общие сведения. Фиксированный набор команд конкретного микропроцессора называют системой команд. Функциональные способности процессора определяются совокупностью базовых команд с различными кодами операций. Общее число команд (кодов операции) в системе всегда больше числа базовых команд. Например, к базовой команде относится команда MOV dst, scr, которая обеспечивает функцию пересылки данных из источника scr в приемник dst. Таких команд в системе может быть очень много. Система команд представляется в виде таблицы. Таблица может иметь различную структуру, однако обычно она содержит следующие сведения о команде:

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

    Часто для удобства систему команд разбивают на отдельные группы по функциональному признаку. Например, систему команд микропроцессора КР580ВМ80, содержащую 78 базовых команд, разбивают на 5 групп . Ниже приведено краткое описание функциональных особенностей команд каждой группы.

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

    • src, dst – 8-разрядные источник и приемник. Источником или приемником может быть один из 8-разрядных регистров А, В, С, D, Е, Н или ячейка памяти М, доступ к которой обеспечивает регистровая пара Н L, содержащая адрес пересылаемого байта. В коде операции источник src и приемник dst указаны в виде трехразрядного кода SSS и DDD;
    • RP – двухразрядный код регистровых пар ВС, DE, Н L, А + РП (регистр признаков) или указателя стека SP;
    • data, data 16 – 8- и 16-разрядный операнд;
    • addr, port – 16-разрядный адрес памяти и 8-разрядный адрес порта;
    • (addr), (SP) – содержимое ячейки памяти по указанным адресам;
    • (SP)+, -(SP) – операции постинкремента и предекремента со стеком. Команды пересылки. Г руппа содержит наиболее часто встречающиеся в программах команды пересылки данных, источниками и приемниками которых могут быть внутренние регистры процессора, основная память и внешние устройства. Команды не оказывают воздействия на флаги регистра состояния.

    Мнемоника команды отражает особенности выполняемой операции и способ адресации. Например, мнемоника MOV, MVI указывает на перемещение (Move) операндов; LDA, LDAX, LXI, LHLD – на загрузку (Load); STA, STAX, SHLD – на сохранение (Save). Для операций с байтами используется мнемоника MOV, MVI, LDA, STA, LDAX, STAX; для операций со словами– LXI, LHLD, SHLD. Прямая адресация при загрузке и сохранении содержимого аккумулятора отражается мнемоникой LDA и STA, косвенная – мнемоникой LDAX и STAX.

    Команды этой группы сведены в табл. 5.8. Они позволяют осуществить:

    • операцию пересылки данных между источником (src) и приемником (dst), которая записывается в виде dst ← src (команда 1). Источниками и приемниками являются внутренние регистры общего назначения (А, В, С, D, Е, Н) и ячейка памяти М. Допускается любая комбинация, за исключением М ← М, т. е. перезагрузка ячейки памяти М не разрешается;
    • загрузку регистров общего назначения и ячейки М вторым байтом В2 (команда 2) и регистровых пар ВС, DE, HL (в том числе указателя стека SP) вторым В2 и третьим В3 байтами (команда 3), причем всегда В3 загружается в старшие регистры (В, D, Н) пары, В2 – в младшие регистры (С, Е,L);
    • пересылку данных между аккумулятором А и основной памятью (команды 4÷7), между аккумулятором и внешним устройством (команды 8, 9). При пересылке между аккумулятором А и памятью адреса ячеек памяти располагаются в регистровых парах ВС, DE или в третьем и втором байтах (В3В2) команды;

    Таблица 5.8

    Мнемоника

    Выполняемая

    операция

    операции

    dst src

    А (addr)

    Примечания: RP – 2-разрядный код регистровых пар ВС, DE, HL, А + РП (регистр признаков) или указателя стека SP; Б – байты, U – циклы, Т – циклы.

    • пересылку данных между парой регистров HL и памятью (команды 10, 11). При этом операнд из регистра L пересылается в ячейку с адресом В3В2, образованным из третьего и второго байта команды, а из регистра Н – по адресу на единицу больше. При обратной пересылке сначала из ячейки с адресом В3В2 в регистр L загружается первый операнд, затем из ячейки с адресом В3В2+1 в регистр Н – второй;
    • пересылку данных между парами регистров, включая пару из аккумулятора А и регистра признаков РП, и стеком (команды 12, 13). При записи в стек содержимое указателя стека уменьшается на единицу, и по адресу SP-1 загружается первый операнд в один из регистров В, D, Н или А, затем содержимое указателя стека снова уменьшается на единицу, и по адресу SP–2 загружается второй операнд из регистра С, Е, L или РП. При выводе из стека сначала в один из регистров С, Е, L или РП загружается операнд, хранящийся в ячейке с адресом SP указателя стека. Затем содержимое увеличивается на единицу, из ячейки с адресом SP + 1 второй операнд загружается в один из регистров В, D, Н или А, и содержимое указателя стека вновь увеличивается на единицу и принимает значение SP + 2. Следует отметить, что при загрузке регистровой пары А, РП (ее код RP = 11) из стека изменяется состояние триггеров регистра признаков РП. Это единственная команда (из всех команд пересылки данных), которая влияет на признаки;
    • пересылку содержимого пары регистров HL в указатель стека SP и программный счетчик PC (команды 14, 15);
    • обмен данными между парами регистров HL и DE, парой регистров HL и стеком (команды 16, 17). При обмене содержимое регистровой пары HL помещается в пару DE или стек, а содержимое регистровой пары DE или стека – в пару HL. Операция обмена обозначается символом "↔".

    Арифметические команды. Вычислительные возможности микропроцессора ограничены простыми командами сложения и вычитания 8-разрядных операндов. Операции умножения и деления реализуются программным способом. Набор команд (табл. 5.9) позволяет выполнить:

    • сложение и вычитание 8-разрядных операндов с учетом и без учета переноса (команды l÷8), при этом один из операндов всегда находится в аккумуляторе, а второй – в одном из регистров общего назначения (ячейке памяти М) или является вторым байтом команды. Команды, учитывающие значение сигнала переноса С регистра признаков, используются при сложении и вычитании многобайтных чисел. Для этой же цели можно использовать команду 9 сложения содержимого пары регистров HL с 16-разрядным адресуемым регистром;
    • арифметическое сравнение содержимого аккумулятора А с содержимым одного из регистров общего назначения Rn (ячейкой памяти М) или вторым байтом В2 (команды 10+11). При этом выполняется вычитание А – Rn или А – В2. Результат сравнения определяется по сигналам триггеров регистра признаков: если Z = 1, то A = Rn или А = В2; если S = 1, то А > Rn или А > В2. Содержимое аккумулятора не изменяется;
    • увеличение и уменьшение на 1 (инкремент и декремент) содержимого регистров и регистровых пар. При программировании часто

    Таблица 5.9

    Мнемоника

    Выполняемая операция

    операции

    А ← A + src + C

    A ←A – src – C

    А ← A + data + CY

    A ← A – data

    А ← A – data – CY

    A – scr (сравнение)

    A – scr (сравнение)

    dst ← dst – 1

    A ← 2/10-коррекция A

    возникает необходимость увеличения или уменьшения на единицу значения операнда. Для этого можно использовать операции сложения А + В2 или вычитания А – В2, записав в программе В2 = 1. Однако в системе команд предусмотрены специальные команды (12-5-15) инкремента и декремента 8- и 16-разрядных операндов;

    десятичную коррекцию содержимого аккумулятора после выполнения арифметических операций в двоично-десятичном коде 8421 (команда 16). При этом содержимое аккумулятора представляется в виде двух полубайтов, каждый из которых соответствует десятичной цифре. Коррекция производится блоком десятичной коррекции по изложенным в § 5.2 правилам (с. 99).

    Команды логических операций. Команды этой группы (табл. 5.10) позволяют реализовать:

    • двуместные логические операции умножения (И), сложения (ИЛИ) и исключающее ИЛИ над 8-разрядными операндами (команды 1÷6). Логические операции являются поразрядными и выполняются независимо для каждого из восьми бит операндов. Неадресуемый операнд находится в аккумуляторе, туда же поступает результат операции. Вторым операндом является содержимое одного из регистров общего назначения (ячейки памяти М) или второй байт команды;
    • инвертирование содержимого аккумулятора А (команда 7);
    • флаговые команды (8, 9) инвертирования и установки бита С триггера переноса регистра признаков;
    • два вида циклических сдвигов содержимого аккумулятора влево и вправо (команды Юл-13). Первый вид сдвигов (сдвиги без переноса) реализуется путем замыкания в кольцо всех триггеров аккумулятора, при втором виде сдвигов (сдвиги с переносом, или расширенные сдвиги) в кольцо дополнительно вводится триггер переноса С регистра признаков. Отсутствующие в системе команд логические и арифметические сдвиги в обе стороны можно реализовать предварительной установкой бита С в 0 или 1 совместно с расширенным сдвигом.

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

    Таблица 5.10

    Мнемоника

    Выполняемая

    операция

    операции

    А ← А л src – умножение

    А ← A v src – сложение

    А ← A © src – искл. ИЛ И

    А ← А л data

    А ← A © data

    три вида команд передачи управления: команды перехода по заданному адресу (JMP), вызова подпрограммы (CALL) и возврата из подпрограммы (RET). К ним относятся безусловные и условные команды. Условные команды осуществляют переход, вызов подпрограммы и возврат из подпрограммы в зависимости от состояния флага, задаваемого значением сигнала одного из четырех триггеров Z, С, S, Р регистра признаков (или состояния). В процессоре 8080 используются оба состояния (1 и 0) четырех флагов (Z, С, Р, S), позволяющих получить 8 вариантов каждой команды (табл. 5.11). Обозначение признака (условия) указывается в мнемонике условных команд J**, С**, R** вместо звездочек (**). Например, признаку NC, для которого условия перехода считаются выполненными при С = 0, соответствует команда JNC.

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

    Таблица 5.11

    Рассмотрим особенности команд, представленных в табл. 5.12.

    С помощью трехбайтной команды JМР реализуется безусловная передача управления. При этом второй и третий байты команды (адрес addr продолжения программы) заносятся в счетчик команд PC (содержимое В3 в старшие разряды, В2 – в младшие).

    Команды условной передачи управления J** реализуют разветвление вычислительного процесса в зависимости от условия. При выполнении условия (ДА) в счетчик PC заносится второй и третий байты команды, в противном случае (НЕТ) содержимое счетчика увеличивается на 3 единицы. Продолжение программы осуществляется по адресу, находящемуся в счетчике команд, т.е. со следующей команды.

    Таблица 5.12

    Мнемоника

    Выполняемая

    операция

    операции

    Команды безусловного (CALL) и условного (С**) вызовов используются для обращения к подпрограммам, хранящимся в другой части основной памяти. Эти команды всегда предусматривают возможность возврата в прерванную основную программу путем сохранения в стеке содержимого программного счетчика PC. После выполнения операции возврата:

    • при безусловном вызове или выполнении условия второй и третий байты команды заносятся в программный счетчик PC;
    • при невыполнении условия содержимое программного счетчика увеличивается на 3 единицы.

    Продолжение программы осуществляется по адресу, находящемуся в счетчике команд PC.

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

    Команда PCHL загружает в программный счетчик PC адрес, хранящийся в регистровой паре HL.

    Команды общего управления. Команды этой группы (табл. 5.13) используются для задания режима работы микропроцессора. Команда RST применяется для повторного пуска микропроцессора и при обслуживании прерываний. При ее выполнении:

    • содержимое программного счетчика переносится в стек по адресам SP – 1, SP – 2, формируемым в указателе стека, что обеспечивает возврат к основной программе;
    • в программный счетчик засылается 16-разрядный адрес начала одной из 8 программ обслуживания прерывания.

    Таблица 5.13

    Мнемоника

    Выполняемая

    операция

    операции

    –(SP) ← PC ← 8×n, n = 0 – 7

    Разрешение прерываний

    Запрет прерываний

    Чтение маски

    Установка маски

    Нет операции

    Команда разрешения прерывания EI устанавливает триггер INTE разрешения прерываний в единичное состояние, при этом микропроцессор реагирует на запросы прерываний. Команда запрещения прерываний DI устанавливает триггер INTE в нулевое состояние. Пустая команда NOP используется в циклах программируемой задержки. Команда останова HLT вызывает прекращение выполнения программы.

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

    1. Команды передачи данных (перепись), копирующие информациюиз одного места в другое.

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

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

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

    5. Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами памяти, поэтому ввод и вывод осуществляется с помощью команд переписи.

    6. Команды управления, реализующие нелинейные алгоритмы. Сюда прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: цикл может быть сведен к той или иной комбинации условного и безусловного переходов. Часто к этой же группе команд относят немногочисленные операции по управлению процессором -типа «останов» или НОП («нет операции»). Иногда их выделяют в особую группу.

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


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

    Рассматриваясистему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд CISC (Complex Instruction Set Computer) и с ограниченным набором - RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически (в одной из популярных статей это в шутку сформулировано в виде следующей наглядной аналогии: «20% населения выпивают 80% пива»). Таким образом, если существенно ограничить набор операций до наиболее простых и коротких, зато тщательно оптимизировать их, получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации «отброшенных» команд, но часто эта плата бывает оправданной: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования. Подробнее вопросы, связанные с системой команд современных микропроцессоров, будут рассмотрены ниже в этой главе.

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

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

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

    Адресная часть обладает значительно большим разнообразием и ее следует рассмотреть подробнее.

    Прежде всего отметим, что команды могут быть одно-, двух- и трехадресные в зависимости от числа участвующих в них операндов.

    Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. Например: взять числа из адресов памяти А1 и А2, сложить их и сумму поместить в адрес A3. Если для операции требовалось меньшее число адресов, то лишние просто не использовались. Скажем, в операции переписи указывались лишь ячейки источника и приемника информации А1 и A3, а содержимое А2 не имело никакого значения.

    Трехадресная команда легко расшифровывалась и была удобна в использовании, но с ростом объемов ОЗУ ее длина становилась непомерно большой. Действительно, длина команды складывается из длины трех адресов и кода операции. Отсюда следует, например, что для скромного ОЗУ из 1024 ячеек только для записи адресной части одной команды требуется 3*10 = 30 двоичных разрядов, что для технической реализации не очень удобно. Поэтому появились двухадресные машины, длина команды в которых сокращалась за счет исключения адреса записи результата. В таких ЭВМ результат операции оставался в специальном регистре (сумматоре) и был пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов.

    Дальнейшее упрощение команды привело к созданию одноадресных машин. Рассмотрим систему команд такой ЭВМ на конкретном простом примере. Пусть надо сложить числа, хранящиеся в ячейках с адресами ОЗУ А1 и А2, а сумму поместить в ячейку с адресом A3. Для решения этой задачи одноадресной машине потребуется выполнить три команды:

    Извлечь содержимое ячейки А1 в сумматор;

    Сложить сумматор с числом из А2;

    Записать результат из сумматора в A3.

    Может показаться, что одноадресной машине для решения задачи потребуется втрое больше команд, чем трехадресной. На самом деле это не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения А5 = (А1 + А2)*АЗ/А4 и вы обнаружите, что потребуется три трехадресных команды и всего пять одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, так как она не производит ненужной записи в память промежуточных результатов.

    Ради полноты изложения следует сказать о возможности реализации безадресной (нуль-адресной) машины, использующей особый способ организации памяти -стек. Понимание принципов устройства такой машины потребовало бы некоторых достаточно подробных разъяснений. Сейчас безадресные ЭВМ практически не применяются. Поэтому ограничимся лишь упоминанием того факта, что устроенная подобным образом система команд лежала в основе некоторых программируемых микрокалькуляторов (например, типа «БЗ-21» и «БЗ-34» и им подобных).

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

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

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

    В ЭВМ третьего поколения идеология построения памяти существенно изменилась: минимальная порция информации для обмена с ОЗУ была установлена равной 8 двоичных разрядов, т.е. один байт. Стало возможным обрабатывать несколько типов данных: символы текста (1 байт), целые числа (2 байта), вещественные числа обычной или двойной точности (4 или 8 байт соответственно). В связи с этим была введена новая условная единица измерения информации - машинное слово. Оно равнялось 4 байтам и соответствовало длине стандартного вещественного числа. Все объемы информации начали измеряться в единицах, кратных слову: двойное слово, полуслово и т.п. Естественно, что адрес (номер ячейки ОЗУ) в машинах с байтовой организацией стал относится к отдельному байту; байты памяти имеют возрастающие на единицу номера. Слово состоит из нескольких последовательно расположенных байтов. В качестве адреса слова удобно принимать адрес одного из образующих его байтов (обычно используется младший байт, имеющий наименьший номер). Таким образом, адреса слов меняются уже не через единицу; их приращение зависит от длины машинного слова в байтах и равняется четырем.

    Размер машинного слова был, по-видимому, выбран исходя из форматов обрабатываемой информации, а не в связи с разрядностью каких-либо устройств. Для подтверждения этого приведем несколько фактов о типичных ЭВМ третьего поколения из семейства ЕС. Арифметико-логическое устройство модели «ЕС-1022» имело 16 двоичных разрядов, «ЕС-1033» - 32 разряда, а «ЕС-1050» - 64 разряда. В то же время за одно обращение к оперативной памяти в «ЕС-1022» и «ЕС-1033» выбиралось 4 байта, в «ЕС-1050» - 8 байт (а в «ЕС-1045» - 16 байт). Таким образом, разнообразие цифр свидетельствует, что 32 разряда (4 байта) не являлись каким-то технически выделенным объемом информации.

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

    Контрольные вопросы

    1. Что такое архитектура ЭВМ? Сформулируйте определение и расшифруйте его.

    2. Проведите аналогию между архитектурой ЭВМ и обыденным понятием архитектуры. Что общего и в чем различие?

    3. Что общего и в чем различие между понятиями «внутреннее устройство ЭВМ»

    и «архитектура ЭВМ»?

    4. Что такое семейство ЭВМ? Приведите примеры.

    5. Объясните, в чем состоит принцип программной совместимости. Что такое совместимость снизу вверх (поясните на примере одного из известных вам семейств)?

    6. Имеют ли отношение к понятию «архитектура» следующие факты:

    а) в компьютере применяются микросхемы динамического (или статического) ОЗУ?

    б) компьютер имеет расширенную память?

    в) компьютер имеет (не имеет) общую шину, по которой передается информация между его устройствами?

    г) в процессоре INTEL 80386 к системе команд добавлено по сравнению с INTEL 80286 несколько новых?

    д) объем памяти новой модели ЭВМ увеличен вдвое?

    7. Перечислите основные принципы фон-неимановской архитектуры и разъясните их содержание.

    8. Чем обусловлено в ЭВМ широкое применение двоичной системы?

    9. Можно ли. посмотрев на содержимое отдельно взятой ячейки памяти, определить, какая информация в ней записана: число, команда, символы?

    10. Из каких основных рлов состоит ЭВМ?

    11. Что такое счетчик команд и какую роль он играет?

    12. Что такое магистраль (шина)?

    13. Какие преимущества имеет магистральная структура ЭВМ?

    14. Что представляет собой контроллер внешнего устройстваи какую роль он играет в процессе обмена информацией?

    15. Какую роль играет в компьютере видеопамять?

    а) текстовый режим (24 строки по 80 символов);

    б) графический черно-белый режим при размере экрана 640х200 точек;

    в) 16- цветный режим при том же размере экрана.

    17. Что такое режим прямого доступа к памяти?

    18 Как называется элементарная составляющаямашинной команды? От чего может зависеть скорость выполнения команды?

    19. Опишите основные этапы выполнения машинной команды. Особое внимание

    обратите на роль счетчика команд.

    20. Что такое конвейерная обработка команд и какие преимущества она имеет?

    21. Какие основные операции входят в состав системы команд любой ЭВМ?

    Кратко охарактеризуйте каждою из названных групп.

    22. Объясните, почему возможно создать компьютер с уменьшенным (неполным)

    набором команд и что это дает.

    23. Из каких частей состоит команда ЭВМ? Кратко охарактеризуйте их назначение.

    24. Чем различаются одно-, двух- и трехадресные команды?

    25. Что такое адрес ОЗУ?

    26. Как можно использовать одну и ту же команду для работы с несколькими

    последовательно расположенными ячейками?

    27. Укажите отличия в устройстве памяти ЭВМ третьего поколения по сравнению с двумя предыдущими.

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

    1. Команды передачи данных (перепись) , копирующие информацию из одного места в другое.

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

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

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

    5. Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами памяти, поэтому ввод и вывод осуществляется с помощью команд переписи.

    6. Команды управления , реализующие нелинейные алгоритмы. Сюда прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: любой цикл может быть сведен к той или иной комбинации условного и безусловного переходов.

    Часто к этой же группе команд относят операции по управлению процессором типа останов или НОП - нет операции. Иногда их выделяют в особую группу. С ростом сложности устройства процессора количество такого рода команд увеличивается.

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

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

    Адресная часть обладает значительно большим разнообразием и ее следует рассмотреть подробнее.

    Прежде всего отметим, что команды могут быть одно-, двух- и трехадресные в зависимости от количества возможных операндов.

    Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. Например: взять числа из адресов памяти А1 и А2, сложить их и сумму поместить в адрес А3. Если для операции требовалось меньшее количество адресов, то лишние просто не использовались. Скажем, в операции переписи указывались лишь ячейки источника и приемника информации А1 и А3, а содержимое А2 не имело никакого значения.

    Трехадресная команда легко расшифровывалась и была удобна в использовании, но с ростом объемов ОЗУ ее длина становилась непомерно большой. Действительно, длина такой команды складывается из длины трех адресов и кода операции. Отсюда следует, например, что для скромного ОЗУ из 1024 ячеек только для записи адресной части требуется 3*10=30 двоичных разрядов, что для технической реализации не очень удобно. Поэтому появились двухадресные машины, длина команды в которых сокращалась за счет исключения адреса записи результата. В таких ЭВМ результат операции оставался в специальном регистре (сумматоре ) и был пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов.

    Дальнейшее упрощение команды привело к созданию одноадресных машин. Рассмотрим систему команд такой ЭВМ на конкретном простом примере. Пусть надо сложить числа, хранящиеся в адресах ОЗУ А1 и А2, а сумму поместить в А3. Для решения этой задачи одноадресной машине потребуется выполнить три команды:

    1. извлечь содержимое ячейки А1 в сумматор;
    2. сложить сумматор с числом из А2;
    3. записать результат из сумматора в А3.

    Может показаться, что одноадресной машине для решения задачи потребуется втрое больше команд, чем трехадресной. На самом деле это далеко не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения Y=(X1+X2)*X3/X4 и вы с удивлением обнаружите, что потребуется 3 трехадресных команды и всего 5 одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, т.к. она не производит ненужной записи в память промежуточных результатов.

    Ради полноты изложения следует сказать о возможности реализации безадресной (нульадресной) машины, использующей особый способ организации памяти - стек . Понимание принципов устройства такой машины потребовало бы некоторых достаточно подробных разъяснений; в то же время сейчас безадресные ЭВМ практически не применяются. Поэтому ограничимся лишь упоминанием того факта, что устроенная подобным образом система команд лежала в основе некоторых программируемых микрокалькуляторов типа "Б3-21" и "Б3-34" и им подобным.

    © Е.А.Еремин , 1997
    Из книги:
    Еремин Е.А. Как работает современный компьютер . - Пермь: изд-во ПРИПИТ, 1997. 176 с.