Таненбаум Э.- Архитектура компьютера. стр.52

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

1 Используется также термин «указатель команд». — Примеч. научи, ред.

2 На самом деле размер слова обычно соответствует разрядности регистра данных. Так, у 16-разрядных микропроцессоров 8086 и 8088 слово имеет длину 16 бит, а у 32-разрядных микропроцессоров — 32 бита. — Примеч. научи, ред.

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

Таненбаум Э.- Архитектура компьютера.

Рис. 2.2. Тракт данных обычной фон-неймановской машины

Выполнение команд

Центральный процессор выполняет каждую команду за несколько шагов:

1. Вызывает следующую команду из памяти и переносит ее в регистр команд.

2. Меняет положение счетчика команд, который после этого указывает на следующую команду1.

3. Определяет тип вызванной команды.

4. Если команда использует слово из памяти, определяет, где находится это слово.

5. Переносит слово, если это необходимо, в регистр центрального процессора2.

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

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

6. Выполняет команду.

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

Такая последовательность шагов (выборка — декодирование — выполнение)

является основой работы всех компьютеров.

Описание работы центрального процессора можно представить в виде программы. В листинге 2.1 приведена такая программа-интерпретатор на языке Java. В описываемом компьютере есть два регистра: счетчик команд с адресом следующей команды и аккумулятор, в котором хранятся результаты арифметических операций. Кроме того, имеются внутренние регистры, в которых хранится текущая команда (instr), тип текущей команды (instr_type), адрес операнда команды (datajloc) и сам операнд (data). Каждая команда содержит один адрес ячейки памяти. В ячейке памяти находится операнд, например фрагмент данных, который нужно добавить в аккумулятор.

Листинг 2.1. Интерпретатор для простого компьютера (на языке Java)

public class Interp{

static mt PC; // PC содержит адрес следующей команды

static int AC; // Аккумулятор, регистр для арифметики

static int instr; // Регистр для текущей команды

static int instr_type; // Тип команды (код операции)

static int datajoc; // Адрес данных или -1, если его нет

static int data; // Текущий операнд

static boolean run_bit = true; // Бит, который можно сбросить,

// чтобы остановить машину

public static void interpret(int memory[], int starting_address{ // Эта процедура интепретирует программы для простой машины, // которая содержит команды только с одним операндом из // памяти. Машина имеет регистр АС (аккумулятор). Он // используется для арифметических действий. Например, // команда ADD суммирует число из памяти с АС. Интерпретатор // работает до тех пор, пока не будет выполнена команда // HALT, вследствие чего бит run_bit поменяет значение на // false. Машина состоит из блока памяти, счетчика команд, бита // run bit и аккумулятора АС. Входные параметры представляют собой // копию содержимого памяти и начальный адрес.


⇐ Предыдущая страница| |Следующая страница ⇒