Принципы обмена информацией с внешними устройствами

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

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

Возможны три типа обращения к каналу:

  • командный запрос;
  • режим прямого доступа к памяти;
  • режим прерывания.

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

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

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

Если одновременно несколько ВУ могут запросить прямой доступ к памяти, то необходимо иметь некоторую систему приоритетов, определяющую порядок доступа.

Режим прерывания. При работе ЭВМ может возникнуть потребность в «прерывании» программы. Такой режим означает, что текущая задача «снимается» на некоторое время, а выполняется другая. Затем, восстанавливается первая задача. Потребность режима прерывания обусловлена двумя факторами:

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

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

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

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

Информация к текущей задаче может находиться на ВУ, в ОЗУ, в регистре флагов, в РОНах, в том числе и СчК и УС. В АЛУ информация после каждой операции не остается, а передается по указанному в программе адресу.

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

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

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

Роны_

На аппаратном уровне в стек обычно загружается адрес возврата адрес следующей команды прерванной программы и слово состояния процессора. Относительно содержимого РОНов программист должен решать сам — следует ли их переслать в стек или оставить доступными новой программе.

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

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

Прерывания бывают трех типов:

  • от внешних устройств,
  • аппаратные,
  • командные.

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

Наивысшим приоритетом обычно обладают аппаратные прерывания, связанные с работой аппаратуры. Например, прерывание по исчезновению питания (программа аварийного останова машины) должно иметь высший приоритет по сравнению с любыми задачами. Высокий приоритет должны иметь некоторые системные прерывания, например, обработка ошибки деления на 0 — операция, которую машина не может выполнить.

При аппаратных прерываниях адрес вектора задан на аппаратном уровне, т.е. в зависимости от типа прерывания процессор сам определяет этот адрес. Для различных семейств машин типы аппаратных прерываний и их адреса, естественно, различны.

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

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

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

Для возврата из прерывания необходимо записанный в стек вектор состояния восстановить командой RTI, т.е. в СчК записать из стека адрес возврата, в регистр флагов вернуть из стека слово состояния процессора и, если в стеке при входе в прерывание сохранялись РОНы, то восстановить и их. Слово состояния снимаемой задачи сохранять не требуется, т.к. команда RTI означает конец программы обслуживания прерывания.

Таймер. Внешние устройства.

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

Рассмотрим набор устройств ЭВМ, которые являются внешними по отношению к процессору. Прежде всего, обратим внимание на устройства связи с человеком. Одним из основных устройств ввода информации является клавиатура, манипулятор «мышь». Для вывода часто используются цветные алфавитно-цифровые и графические дисплеи (мониторы). Внешние устройства ЭВМ могут иметь различное назначение, различное конструктивное оформление и различные алгоритмы работы (машина построена по модульному принципу!), поэтому для согласования работы машины и внешнего устройства (ВУ) требуется специальная схема, которая называется интерфейсная карта или просто — интерфейс.

Следующее важнейшее ВУ современной ЭВМ — это блок долговременного запоминающего устройства (ДЗУ) типа «винчестер», объем информации, которого измеряется в гигабайтах (более 230 байт).

Среди дисководов следует выделить высокопроизводительные накопители на жестких магнитных дисках, объем памяти которых доходит до 100 Гбайт при времени выборки — микросекунды. Большое распространение в микроЭВМ получили накопители на гибких магнитных дисках (НГДМ) в связи с низкой себестоимостью дисков и достаточным объемом запоминаемой информации (около 140-1400 Кб или 100 Мб), а также CD-диски (объем 640-700 Мб). На ранних компьютерах использовался магнитофон в качестве носителя информации.

Имеется много других специализированных ВУ, например: графопостроители, сканеры — устройства считывания текстов или графики, модемы — для связи машин по телефонным каналам, цветные принтеры, фотоаппараты и т.п.

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

Виртуальная память

Выше было показано, что если мы имеем 16-разрядное слово, то объем прямо адресуемой памяти составляет 216 байт, или 64Кб. Однако со временем такой объем стал недостаточным для сложных программ. Реальный объем стал увеличиваться, и возникла задача организовать доступ к памяти, лежащей за пределом адресного пространства, доступного заданному размеру машинного слова. Для решения этой задачи используется ряд подходов.

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

Афиз.= Апрог.+Nстр.×Z,

где Z — размер страницы в байтах.

Для организации расширенной памяти используется дополнительная физическая память, дополнительные разряды в адресной шине и некоторая программная система, управляющая аппаратным переключателем. Общий объем памяти при 16-разрядном переключателе может достигать очень большого размера: 6464К Кб. Этот подход легко реализуется и на аппаратном и на программном уровнях, но он не позволяет отдельной программе выделить объем больше 64Кб без дополнительного аппаратно-программного механизма.

Под виртуальной памятью будем понимать память, построенную аппаратно-программными средствами.

Виртуальная память

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

Афиз.= Апрог.+ Асегм×К,

где К — некоторый коэффициент, лежащий для различных семейств машин в пределах 4-64. Этот коэффициент определяет минимальное взаимное смещение сегментов. На рис. 3.13 в двух младших восьмеричных разрядах записаны 0, что
эквивалентно умножению адреса сегмента на 100(8) или 64(10).

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

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

Этот процесс называется Свопинг (swapping) — временное хранение активной задачи на жестком диске.

Виртуальная организация памяти позволяет существенно увеличить объем доступной программам памяти (реально — до десятков Гбайт).

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

Часто при обсуждении вопросов, связанных с памятью ЭВМ, упоминается выражение «иерархия памяти». О чем при этом идет речь?

Требования, предъявляемые к памяти ЦВМ, весьма разнообразны и противоречивы — мы хотим иметь память:

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

Реально в настоящее время невозможно создать память, одновременно отвечающую всем этим требованиям. Поэтому память строится в виде некоторой иерархической системы, причем главным критерием служит простота и время обращения к ней. На самом верху иерархической лестницы расположена сверхоперативная память — регистры процессора. Обращение к ним самое быстрое, т.к. они входят в состав процессора (рис. 3.17). Но количество их невелико — от одного аккумулятора (в простейших процессорах) до 128 (например, в процессоре Terminator-6).

akumuljator

Следующий уровень — внутренний КЭШ. Это память без произвольного доступа, работа с ней происходит на аппаратной уровне. В ней хранятся наиболее часто используемые данные и команды. Время доступа к ней примерно в           5-10 раз меньше, чем к ОЗУ.

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

Система адресации

Для обращения к операнду в адресной части команды должна быть ссылка на место расположения операнда. В машине, построенной по принципу «Unibus», обращение к оперативной памяти и ко внешним устройствам производится одинаково, по адресу.

Машина имеет адресное пространство 64Кб, и следовательно, для указания абсолютного адреса требуется 16 разрядов или полное слово. Команда тоже записывается полным словом. Если предположить, что всего имеется 70 команд, то на адресную часть остается в формате команды всего 8 разрядов. Но в эту адресную часть можно записать число не более 511. А это значит, что доступное адресное пространство составит лишь 512 байт, что недопустимо мало. Следовательно, непосредственно в одно машинное слово невозможно записать код команды и адрес операнда. Нельзя записать и операнд, т.к. диапазон представляемых чисел также мал (0, 511).

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

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

Прямой регистровый метод

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

Косвенный регистровый метод адресации

  • Индексный метод адресации предполагает суммирование адреса, записанного в РОНе, с некоторым индексом или смещением, записанным либо в следующем слове после команды либо в специальном регистре. Этот регистр может иметь название регистр базы, сегментный регистр и т.п. Использование индекса позволяет обратиться к другой ячейке памяти или к другому регистру ВУ, не изменяя исходный адрес.

Индексный метод широко используется при работе с массивами данных: обращение к нужному элементу массива производится по постоянному адресу (имя массива) с учетом номера элемента (индекс). Схема метода представлена на рисунке:

Индексный метод адресации

Системная память

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

Оперативная память

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

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

Однако 1 бит — это малый объем, поэтому современные ЭВМ параллельно обрабатывают целый набор двоичных разрядов, называемый «машинное слово».

В современной вычислительной технике широко используется такое понятие, как байт — 8 двоичных разрядов. Размер машинного слова обычно составляет величину, кратную 2 в степени n: один, два, четыре байта и т.д.

Когда речь идет об объеме памяти, то используется величина К, равная 210, т.е. 1024. Объем ОЗУ современных микроЭВМ составляет от единиц мегабайт до 256 и более Мбайт. Время обращения к ОЗУ — это время, затрачиваемое на выдачу одного слова из памяти (отчасти определяющее быстродействие ЭВМ). Обычно, время обращения микроЭВМ к оперативной памяти составляет от 0,01 до 0,1 мксек.

Каждая ячейка памяти (байт) имеет индивидуальный номер — адрес. Нумерация начинается с 0. Рассматриваемая машина имеет 16-разрядное слово, состоящие из двух байт. Следовательно, объем прямо доступной памяти составит 216= 64 кб, или 32 кслова. Адреса, относящиеся к оперативной памяти, носят название абсолютных адресов, в данном случае объем адресного пространства составляет 64 кб.

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

Входной сигнал (0 или 1) запоминается на емкости, которая разряжается через эммитерный повторитель, имеющий высокое входное сопротивление.

динамическая память

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

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

Существующие различные варианты энергонезависимой памяти можно разбить на два класса:

  • ПЗУ — постоянное запоминающее устройство и
  • ППЗУ — перепрограммируемое запоминающее устройство.

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

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

Процессор

Центральным блоком, занимающимся обработкой информации в компьютере, является процессор.

Он выполняет операции над данными — операндами. Возможности использования ЭВМ определяются набором операций, которые может выполнять процессор. Этот набор операций называется системой команд. Ее объем является одной из главных характеристик ЭВМ. Для микроЭВМ система команд может содержать около сотни и более различных команд.

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

Возможный вариант структуры процессора представлен на рисунке:

структура процессора

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

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

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

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

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

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

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

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

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

Нулевой разряд условно называется С-разрядом, или признаком переноса. Как правило, он взводится, если произошло переполнение знакового разряда, т.е. требуется перенос единицы из старшего 15-го разряда. Однако значение          С = 1 или V = 1 не всегда связано с аварийным завершением операции.

Например, при логических операциях переполнения может не быть, а признаки могут изменяться. При сложении двух отрицательных чисел результат должен быть отрицательным (пятнадцатый разряд равен 1), однако при этом может произойти перенос из четырнадцатого в пятнадцатый разряд или переполнение последнего. Тем не менее, признаки V и C будут равны 0.

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

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

Еще одним устройством процессора является стек

Стек бывает:

  • программным,
  • аппаратно-программным,
  • аппаратным.

Функционально он состоит из указателя стека (УС) и стековой памяти. Указатель стека обеспечивает управление записью и считыванием из стека, т.е. определяет, к какой ячейке памяти необходимо обратиться. Стековая память — область памяти, выделенная под стек.

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

Аппаратные стеки используются в простых процессорах, например в калькуляторах. В них память выделяется на аппаратном уровне, как и УС. Они просты в использовании, но объем их всегда ограничен, алгоритм работы строго задан.

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

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

Общая структура машины

Общее устройство компьютера и особенности архитектуры рассмотрим на примере упрощенной структуры ЭВМ из семейства PDP-11, разработанной фирмой DEC в 1973г. Машина построена по принципу общая шина (Unibus), т.е. все устройства — и внутренние и внешние подключаются на одну универсальную магистраль.

struktura

Основные характеристики машины:

  • ЭВМ имеет открытую архитектуру, т.е. ориентирована на подключение разнообразных, в том числе и нестандартных, ВУ;
  • конструктивно машина занимает одну плату;
  • ЭВМ может работать со словами (16 двоичных разрядов);
  • ЭВМ может работать с байтами (8 двоичных разрядов);
  • система команд содержит 72 команды, в том числе и команды с плавающей точкой;
  • имеется последовательный байтовый интерфейс для связи с удаленными объектами;
  • имеется параллельный байтовый интерфейс для связи с близкими объектами;
  • магистраль позволяет подключить до 32 ВУ без дополнительных адаптеров;
  • ЭВМ широко используется (до настоящего времени) для построения систем автоматического управления техническими объектами.

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

Особенности архитектуры современной вычислительной машины

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

1)  ввод исходных данных;

2)  хранение исходных и промежуточных данных;

3)  ввод и хранение алгоритма обработки информации в виде некоторого набора элементарных операций;

4)  выполнение арифметических и логических операций над данными (операндами);

5)  анализ выполнения некоторых условий;

6)  изменение хода вычислительного процесса в зависимости от результатов анализа.

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

Минимальная структура, соответствующая понятию ЭВМ, представлена на рисунке:

Минимальная структура, соответствующая понятию ЭВМ

Но такая машина остается вещью в себе — она не имеет связи со внешней средой, хотя и может работать по программе, хранящейся в памяти сколько угодно долго.

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

Современные вычислительные машины строятся по принципу «трех М» (МММ):

  • модульность;
  • магистральность;
  • микропрограммное управление.

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

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

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

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

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

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

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

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

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

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

Такой подход имеет название — CISC-технология (Complex Instraction Set Computer). Следует отметить, что, несмотря на замену одной команды набором микрокоманд, удается повысить быстродействие процессора с одновременным упрощением его структуры и снижением стоимости.

В современных микропроцессорах, начиная с Intel-486, стали использовать еще более упрощенный набор микрокоманд — RISC (Redjuce Instraction Set Computer) технологию, что, опять же, привело к повышению производительности ЭВМ.

Немного истории

Еще в первой половине XIX в. английский математик Чарльз Бэббидж построил универсальное вычислительное устройство и назвал его Аналитической машиной. Именно Бэббидж  впервые предложил управление процессом вычислений по вложенной в память программе. Бэббидж хотел построить свою машину как механическое устройство, а программы собирался задавать посредством перфокарт (они в то время уже широко употреблялись в ткацких станках). Однако довести до конца эту работу Бэббидж не смог — она оказалась слишком сложной для техники того времени. Машина Бэббиджа работала и после смерти изобретателя [8].

Первым человеком, который пытался разработать принципы программирования на этой машине и составлял реальные программы, была Ада Лэвлейс, племянница поэта лорда Байрона [8]. В ее честь назван язык системного программирования АДА.

В 1882 г. Герман Холлерит, участвуя в переписи населения в Соединенных Штатах Америки, разработал табулятор, вычислительное устройство для автоматизированной обработки результатов списков. Для ввода, вывода и хранения информации Г. Холлерит разработал формат перфокарты, который используется и в настоящее время.

Для выпуска табуляторов им была создана компания Electric Tabulation Machines (1898 г.).

С 1911 г. компания носит название Internation Bisness Machines.

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

Немецкий инженер Конрад Цузе построил в 1941 г. небольшую вычислительную машину на основе нескольких электромеханических реле [8]. Но из-за войны работы Цузе не были опубликованы. А в США в 1943 г. на одном из предприятий фирмы IBM американец Говард Эйкен создал более мощное устройство под названием «Марк-1». Оно уже позволяло проводить вычисления в сотни раз быстрее, чем вручную. Это была первая современная вычислительная машина, и она реально использовалась для военных расчетов.

Однако электромеханические реле работают весьма медленно и недостаточно надежно. Поэтому начиная с 1943 г. в США группа специалистов под руководством Джона Мочли и Преспера Экерта начала конструировать машину ENIAC (Electronics Numerical Itegrator for Automatic Computer) на основе электронных ламп. С этого момента в английском языке в обиход вошло слово «Computer». Созданный ими компьютер работал в тысячу раз быстрее, чем Марк-1. Однако обнаружилось, что большую часть времени этот компьютер простаивал, ведь для ввода программы в этом компьютере приходилось в течение нескольких часов или даже нескольких дней подсоединять нужным образом провода. А сам расчет после этого мог занять всего лишь несколько минут или даже секунд.

Чтобы упростить и убыстрить процесс задания программ, Мочли и Экерт  стали конструировать новый компьютер, который мог бы хранить программу в своей памяти. В 1945 г. к работе был привлечен знаменитый математик Джон фон Нейман, который подготовил от имени группы сотрудников доклад об этом компьютере. Доклад был разослан (не им! [8]) многим ученым и получил широкую известность, поскольку в нем были ясно и просто сформулированы общие принципы функционирования компьютеров, т.е. универсальных вычислительных устройств. И до сих пор подавляющее большинство компьютеров сделано в соответствии с теми принципами, которые были изложены (но не все разработаны!) в 1945 г. Джоном фон Нейманом. Первый компьютер, в котором были воплощены принципы фон Неймана, был построен в 1949 г. английским исследователем Морисом Уилксом.