Принципы работы компьютеров

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

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

Где же берутся эти конечные последовательности операций, иными словами, программы? Говоря в общем, их составляют и люди-программисты, и сами компьютеры. Основой для составления программ являются алгоритмы, которые предварительно разработаны для решения различных задач. Таким образом, можно сказать, что программа как последовательность машинных операций — это алгоритм, преобразованный в последовательность этих операций. Этим мы еще раз подтверждаем тот факт, что алгоритм может быть представлен в виде программы для компьютера (см. гл. 1, п. 1.1).

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

Исключением из этого общего правила являются персональные компьютеры IBM PC. Все модели этих компьютеров имеют одну и ту же базовую совокупность машинных операций, которую выполнял центральный процессор фирмы Intel 8086, в свое время установленный на самой младшей модели IBM PC/XT. Машинный язык старших моделей с процессорами Pentium и AMD лишь дополнен некоторым набором операций, обеспечивающих возможности одновременного решения нескольких задач, удобства использования музыкальных и видеопрограмм и т. п. Поэтому программы, составленные для младших моделей компьютеров, успешно выполняются на старших моделях. Это так называемая совместимость линейки компьютеров IBM PC, о которой так часто говорят в специальной литературе. Следует сказать, что этим достигнут большой успех разработчиков компьютеров IBM PC, так как ранее составленные программы (а их много — целые библиотеки) не пришлось выбрасывать, а, наоборот, можно и целесообразно использовать.

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

Каждая операция выполняется над некоторыми объектами и имеет результат. Объекты принято называть операндами, что взято из алгебры. Там, например, в операции сложения операндами называли первое и второе слагаемое, в операции умножения — множимое и множитель, в операции вычитания — уменьшаемое и вычитаемое и т. д.

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

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

При записи команды выделяют две ее части — кодовую и часть операндов, которую называют адресным полем. Такое название возникло оттого, что в первых ЭВМ операнды, фактически исходные и промежуточные данные задачи, размещались в ячейках оперативной памяти, которые, как уже известно, имеют адреса. Типичная форма команды (формат) представлена на рис. 2.3, это так называемая трехадресная команда. Согласно этой команде ЦП должен «взять» по соответствующим адресам первый и второй операнды, выполнить над ним операцию согласно указанному коду и полученный результат поместить по заданному адресу в ОП.

Код

Адрес

Адрес

Адрес

операции

1-го операнда

2-го операнда

результата

Рис. 2.3. Формат трехадресной команды

Существуют двухадресные и одноадресные команды. Их форматы представлены на рис. 2.4.

В двухадресной команде адрес результата операции помещается по адресу 1- и 2-го операнда и, таким образом, замещает

Код

Адрес

Адрес

Код

Адрес

операции

1-го операнда

2-го операнда

операции

операнда

Рис. 2.4. Формат двухадресной и одноадресной команд

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

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

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

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

Занесение команд первичной программы в память всегда осуществляется с клавиатуры. В связи с тем, что оперативная память ПК представлена как последовательность адресов, программа как последовательность двоичных чисел займет некоторую часть его адресного пространства. При этом первая команда программы всегда записывается по известному наперед заданному адресу ОП. Остальные команды размещаются в ячейках очередных возрастающих адресов. Для того чтобы эти адреса можно было определить, для каждой команды при конструировании машины устанавливается ее длина, измеряемая в байтах. В ПК IBM PC под код операции отводится от 1 до 2 байт. Адресное поле может занимать до 6 байт памяти. Исходные данные занимают свой раздел памяти и отделены от поля программы.

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

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

В персональных компьютерах IBM PC имеются следующие группы регистров:

  • • общего назначения (АХ, ВХ, СХ, DX, SI, DI, BP, SP);
  • • сегментные регистры (CS, DS, SS, ES);
  • • указатель команд (IP);
  • • регистр флагов (Flags).

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

Сегментные регистры позволяют сократить длину записываемых команд. Если адресное пространство компьютера имеет размер, например 220, что соответствует 1 Мб оперативной памяти, то адресные поля — команды для записи адресов ОП — уже должны обеспечивать размещение 20-разрядных двоичных чисел. Когда же это пространство еще больше, скажем, 232, то для записи команды с двумя адресами понадобится поле, состоящее из 64 разрядов. Поэтому все адресное пространство компьютера условно разбивают на сегменты размером по 64 Кб каждый, и адрес любой ячейки ОП определяют как адрес сегмента плюс адрес смещения относительно начала этого сегмента. Далее адрес сегмента помещают в сегментный регистр и в команде оперируют только номером сегмента и адресом смещения, для размещения которого в поле адресов требуется не более чем 16-разряд-ное двоичное число, т. е. слово. Описанный прием называется базированием или сегментацией адресов ОП.

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

Регистр флагов — это 16-разрядная ячейка, в которой каждый разряд называется флагом. Если значение разряда равно 1 — «флаг поднят», если оно равно 0 — «флаг опущен».

ВПК используются девять флагов. Остальные разряды ячейки свободны. Выделяют флаги условий, их шесть, и флаги состояний, их три. Флаги условий меняются при выполнении команд и в виде признаков 1, 0 фиксируют результаты их выполнения. Например, типичные флаги знака и переполнения подняты, если результат выполнения команды оказался отрицательным или полученное число не размещается в ячейке памяти из-за большой его длины. Флаги условий позволяют программировать алгоритмы с разветвлениями и дают возможность ЦП останавливать процесс выполнения программы. Флаги состояний оказывают влияние на режим работы процессора.

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

Предположим, следующей должна выполняться команда с двумя операндами А, и А2, размещенными в ОП (рис. 2.5).

операции

Рис. 2.5. Двухадресная команда

Рассмотрим действия центрального процессора по выполнению этой команды.

  • 1. Устройство управления ЦП «читает» содержимое регистра 1Р и тем самым выясняет адрес размещения очередной команды в ОП, которую необходимо выполнить.
  • 2. Устройство управления посылает адрес из 1Р локальному процессору оперативной памяти с указанием прочитать содержимое ячейки с данным адресом и передать его в ЦП.
  • 3. Локальный процессор считывает команду по заданному адресу и передает ее в ячейку дешифратора ЦП (в регистр команды).
  • 4. Устройство управления дешифрирует команду, т. е. выясняет, какую операцию необходимо выполнить, и устанавливает содержимое адресных полей.
  • 5. Если это не команда перехода (скачка), устройство управления посылает процессору памяти адрес А, первого операнда с указанием прочесть содержимое ячейки с этим адресом и переслать его ЦП.
  • 6. Локальный процессор по адресу А, считывает данные и пересылает его в первый регистр арифметического устройства

ЦП.

  • 7. Устройство управления посылает локальному процессору памяти заказ на передачу в ЦП данных по адресу А2.
  • 8. Локальный процессор пересылает данное, которое он читает по адресу А2, во второй регистр арифметического устройства ЦП.
  • 9. Устройство управления посылает в регистр 1Р адрес очередной по порядку команды. После этого выполнение описанных действий начинается с п. 1. Если в п. 4 в результате дешифрации будет установлено, что это команда перехода, выполняется п. 10.
  • 10. Проверить, условный ли это переход.
  • 11. Если переход безусловный, устройство управления посылает в регистр 1Р адрес, записанный в команде перехода, и возобновляет действия с п. 1.
  • 12. Если переход условный, устройство управления читает регистр флагов и на основании этого устанавливает, выполняется ли условие перехода.
  • 13. Если условие перехода не выполняется, устройство управления загружает в регистр 1Р адрес очередной по порядку команды и возвращается к выполнению действия, описанного в п. 1.

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

Блок-схема алгоритма выполнения команды ЦП

Рис. 2.6. Блок-схема алгоритма выполнения команды ЦП

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

 
< Пред   СОДЕРЖАНИЕ     След >