ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР
Состав центрального процессора. Электронные цепи типичного компьютера, предназначенные для выполнения раз- личных операций с данными (например, сложения или вычитания), обычно не связаны с ячейками основной памяти напря- мую. Все эти цепи размещаются в изолированной части компьютера, которая называется центральным процессором (Central Processing Unit – CPU), или ЦП (часто просто процессор). Данное устройство состоит из двух частей: арифметико- логического блока (arithmetic/logic unit), включающего схемы для обработки данных, и блока управления (control unit), кото- рый содержит схемы, координирующие деятельность всей машины.
Для временного запоминания информации в ЦП имеются ячейки, называемые регистрами (registers), которые похожи на ячейки основной памяти. Их можно разделить на регистры общего назначения (general-purpose registers) и специальные регистры (special-purpose registers). Обсуждение специальных регистров приводится в разделе 2.3; в этом разделе мы ограничимся изу- чением работы регистров общего назначения.
Регистры общего назначения используются для временного хранения данных, обрабатываемых в ЦП. В них сохраняют- ся входные данные для схем арифметико-логического блока. Кроме того, эти регистры используются для размещения ре- зультатов, полученных при выполнении операций. Для обработки информации, сохраняемой в основной памяти машины, блок управления должен организовать передачу данных из памяти в регистры общего назначения, а также указать арифме- тико-логическому блоку, в каких регистрах содержатся необходимые входные данные, активизировать соответствующие электронные цепи в этом блоке, а также указать арифметико-логическому блоку тот регистр, в который должен быть поме- щен результат.
Полезно будет рассмотреть назначение регистров с точки зрения общих функций памяти компьютера. Регистры предна- значены для хранения тех данных, с которыми машине необходимо работать непосредственно сейчас, основная память ис- пользуется для хранения тех данных, которые понадобятся для работы в ближайшем будущем, а массовая память применя- ется для хранения данных, с которыми в ближайшее время вряд ли потребуется работать.
Во многих машинах к этой иерархической структуре присоединен дополнительный уровень, который называется сверхоперативной памятью (кэш). Кэш – это раздел высокоскоростной памяти с временем доступа, сравнимым со временем доступа к регистрам центрального процессора. Часто кэш непосредственно входит в состав ЦП. В эту специальную область памяти машина стремится скопировать именно ту часть основной памяти, в которой содержатся данные, необходимые для работы на данный момент. В этом случае обмен данными будет осуществляться не между регистрами и основной памятью, как это обычно бывает, а между регистрами и кэшем. Затем, в подходящий момент, все выполненные изменения одновре- менно передаются в основную память машины.
Интерфейс между ЦП и основной памятью. Для передачи битовых комбинаций между ЦП и основной памятью ма- шины эти устройства соединяются группой проводов (рис. 2.1), которая называется шиной (bus). Именно через эту шину центральный процессор извлекает (или считывает) данные из основной памяти, направляя в нее адрес необходимой ячейки памяти вместе с сигналом считывания. Аналогичным образом ЦП помещает (или записывает) данные в память, указав адрес ячейки назначения и записываемую информацию, сопровождаемые сигналом записи.
![]() |
Рис. 2.1. Соединение центрального процессора и основной памяти
с помощью шины
Рис. 2.2. Сложение двух чисел, сохраняемых в основной памяти машины
Машинные команды. Показанная на рис. 2.2 последовательность этапов представляет собой пример команд, которые должен уметь выполнять центральный процессор любой машины. Такие команды называются машинными командами (ma- chine instruction). Полный список машинных команд относительно невелик. Одной из наиболее удивительных особенностей компьютерных наук является то, что если машина способна выполнять определенный тщательно продуманный набор эле- ментарных операций, то дальнейшее расширение набора команд машины не приведет к увеличению ее теоретических функ- циональных возможностей. Другими словами, после какого-то момента добавление новых функций позволяет повысить лишь комфортность эксплуатации машины или скорость ее работы, однако никак не влияет на основные ее свойства. Под- робнее об этом речь пойдет в главе 11.
При изучении системы машинных команд полезно будет разделить их на три категории: команды передачи данных, арифметические и логические команды, а также команды управления.
Команды передачи данных включают те команды, при выполнении которых происходит перемещение данных из одного места в другое. На рис. 2.2 к этой группе относятся действия, выполняемые на этапах 1, 2 и 4. Как и в случае с основной памя- тью, наиболее типичной является ситуация, когда перемещаемые данные сохраняются и в месте их исходного расположения. Процедура выполнения команд передачи данных больше напоминает копирование информации с одного места в другое, а не обычное их перемещение. Поэтому чаще всего употребляемые названия команд пересылка (transfer) или перемещение (move) следует считать выбранными неверно. Более подходящими названиями для этих команд можно считать копирование (copy) или дублирование (clone). Поскольку мы коснулись терминологии, то следует указать, что для передачи данных между ЦП и основной памятью существуют специальные термины. Запрос на заполнение регистра общего назначения содержимым ячейки памяти обычно называют командой загрузки (load), а запрос на передачу содержимого регистра в ячейку основной памяти – командой сохранения (store).
Вторую, очень важную группу команд этой категории составляют команды связи с устройствами, выходящими за рам- ки интерфейса ЦП – основная память. Поскольку эти команды отвечают за выполнение в машине операций ввода/вывода, они обычно называются командами ввода/вывода и в некоторых случаях помещаются в отдельную категорию. Однако в раз- деле 2.6 будет показано, что для выполнения операций ввода/вывода обычно используются те же команды, с помощью кото- рых выполняется передача данных между ЦП и основной памятью машины. А это означает, что выделение данных команд в отдельную категорию следует считать неправомерным.
К арифметическим и логическим командам относятся те команды, которые указывают блоку управления на необходи- мость запросить выполнение определенных действий арифметико-логического блока. На рис. 2.2 к этой категории относятся действия, выполняемые на этапе 3. Как следует из самого названия арифметико-логического блока, он также предусматрива- ет выполнение группы операций, отличающихся от основных арифметических действий. К ним относятся обычные логиче- ские операции AND, OR и XOR, которые уже рассматривались в главе 1. В этой главе мы обсудим эти операции более под- робно.
В основном они используются для манипуляции отдельными битами некоторого регистра общего назначения; при этом со- стояние остальных регистров остается неизменным.
Другая группа операций, реализованная в большинстве типов арифметико-логических блоков, состоит из команд, по- зволяющих перемещать содержимое регистров влево или вправо в пределах самих этих регистров. Такие операции называ- ются операциями сдвига (shift) или вращения (rotate), в зависимости от того, что происходит с битами, выходящими при пе- ремещении содержимого регистра за его пределы. При операции сдвига эти биты просто отбрасываются, а при операции вращения биты, покидающие пределы регистра с одного конца, помещаются во вновь вставляемые позиции на другом конце регистра. (Иногда последняя операция называется циклическим сдвигом.)
Команды управления предназначены для управления ходом выполнения программы, а не обработки каких-либо данных. На рис. 2.2 к этой категории относятся действия, выполняемые на этапе 5, однако это очень простой пример. Данная категория включает много интересных команд, например группа команд перехода (jump) или ветвления (branch). Они используются для перенаправления управляющего блока на выполнение команды, отличной от той, которая является очередной в выпол- няемой последовательности. Команды перехода реализуются в двух вариантах: команды безусловного перехода и команды условного перехода. К первому варианту относится команда типа "Пропустите все команды до этапа 5", а ко второму – ко- манда типа "Если полученное число равно 0, то перейдите к этапу 5". Разница между ними состоит в том, что при выполне- нии команды условного перехода изменение последовательности произойдет только при выполнении указанного условия. В качестве примера можно привести последовательность команд (рис. 2.3), которая представляет собой реализацию алгоритма деления двух чисел. В этом примере этап 3 содержит команду условного перехода, предназначенную для предотвращения операции деления на нуль.
Рис. 2.3. Деление чисел, сохраняемых в основной памяти
1. Как Вы думаете, какая последовательность действий должна быть выполнена машиной для перемещения содержи- мого одной ячейки основной памяти в другую?
2. Какую информацию должен представить центральный процессор в электронные схемы основной памяти для сохра- нения числа в одной из ее ячеек?
3. Почему термин "перемещение" следует считать неправильным для обозначения операции перемещения данных из од- ного места в другое?
4. В тексте команда перехода была записана так, что требуемое место передачи управления явно указывалось в ней с помощью имени (или номера этапа), например "Перейдите к этапу 6". Недостатком данного способа записи является то, что, если имя (или номер) адресуемой команды позднее будет изменено, потребуется найти и исправить все команды перехода на эту команду. Предложите другой способ записи команд перехода, не содержащий явного указания имени адресуемой коман- ды.
5. Как Вы считаете, команда "Если 0 равен 0, то перейдите к этапу 7" является условным или безусловным переходом? По- ясните Ваш ответ.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.