Э. Таненбаум - Архитектура компьютера (1127755), страница 18
Текст из файла (страница 18)
ред. Процессоры 71 Этот процесс называется циклом тракта данных. В какой-то степени он определяет, что может делать машина. Чем быстрее происходит цикл тракта данных, тем быстрее компьютер работает. ы Входной регистр АЛУ ная шина АЛУ ной регистр АЛУ Рмо. 2.2. Тракт данных обычной фон-неймановской машины Выполнение команд Центральный процессор выполняет каждую команду за несколько шагов: 1. Вызывает следующую команду из памяти н переносит ее в регистр команд.
2. Меняет положение счетчика команд, который после этого указывает на сле- дующую команду'. 3. Определяет тип вызванной команды. 4. Если команда использует слово из памяти, определяет, где находится это слово. 5. Переносит слово, если это необходимо, в регистр центрального процессора'. ' Это происходит после декодирования текущей команды, а иногда и после ее выполнения. — Примеч.
ворчи. ред. ' Слелуст заметить, что бывают команды, которые требуют загрузки из памяти делого ьгггожества слов н нх обработки в рамках единственной команлы. — Примеч. ваучч. ред. 72 Глава 2. Организация компьютерных систем 6. Выполняет команду. 7. Переходит к шагу 1, чтобы начать выполнение следующей команды. Такая последовательность шагов (выборка — декодирование — выполнение) является основой работы всех компьютеров. Описание работы центрального процессора можно представить в анде программы.
В листинге 2.1 приведена такая программа-интерпретатор на языке )ача. В описываемом компьютере есть два регистра: счетчик команд с адресом следующей команды и аккумулятор, в котором хранятся результаты арифметических операций. Кроме того, имеются внутренние регистры, в которых хранится текущая команда (1пзСг), тип текущей команды (тпзтг Суре), адрес операнда команды (баСа 1ос) и сам операнд (баСа). Каждая команда содержит один адрес ячейки памяти. В ячейке памяти находится операнд, например фрагмент данных, который нужно добавить в аккумулятор. Листинг 2.1.
Интерпретатор для простого компьютера (на языке бача) рцЫтс с1азз 1псегр( зсаыс тпС РС. П РС содержит адрес следующей коианды зсаттс тлС АС: П Аккумулятор. регистр для арищиетики зСаттс 1пС 1пзтг; П Регистр для текущей коианды зсаС!с тпС тпзсг Суре: П Тип коианды (код операции) зсаттс тпС баса Тос. П Адрес данных или -1. если его нет втаттс тпС баса. П Текущий операнд зтастс Ьоо1еап гцп ЬтС = Сгце: П Бит. который можно сбросит~, П чтобы остановит~ машину рцЫ тс втастс чотб тпсегргеС(тпС шешогуП, тпС зсагстпр аббгезз( П Эта процедура интепретирует програмиы для простой пашины.
П которая содержит коианды только с одним операндои из П памяти. Машина имеет регистр АС (аккумулятор). Он П используется для арифметических действий Например. П коианда ЯОО суинирует число из памяти с АС. Интерпретатор П работает до тех пор, пока не будет выполнена команда П НАСТ, вследствие чего бит гоп Ьтс поменяет значение на П га1зе.
Машина состоит из блока паняти. счетчика команд. бита П гцп ЫС и аккумулятора ЯС. Входные параметры представляют собой П копию содержииого паияти и начальный адрес. РС=зсагсзпр аббгезз: ыпт1е ггцп Ьтс) ( тпзтг=шешогу(РС), П Вызывает следующую команду в тпзСг РС=РС+1; П Увеличивает значение счетчика коианд тпзсг Суресрег )пзтг Суре(тпзсг): П Определяет тип коианды баСа Тос=ттпб баса(тпзсг. тпзтг Суре); П Находит данные 1-1. П если данных нет) тт(баса )ос =0) П Если баСа 1оск=-1, значит, операнда нет баса-пожогу(баса 1ос); П Вызов данных ехесцСе(тпзсг Суре(баса); П Выполнение команды рг1часе зсаСтс тпС рес тпзсг Суре(тпС асбг) (...) рм часе зсастс 1пС ттпб батартпС тпзгг, тпС Суре) (...) ргтчате зсастс чотб ехесцсе(тпС Суре, тпС баса) (..
) Процессоры 73 Сам факт того, что можно написать программу, имитирующую работу центрального процессора, показывает, что программа не обязательно должна выполняться реальным процессором (устройством). Напротив, вызывать из памяти, определять тип команд и выполнять эти команды может другая программа. Такая программа называется интерпретатором. Об интерпретаторах мы говорили в главе 1. Программы-интерпретаторы, которые имитируют работу процессора, широко используются при разработке компьютерных систем. После того как разработчик выбрал машинный язык (Я) для нового компьютера, он должен решить, разрабатывать ли ему процессор, который будет выполнять программы на языке Я, или написать специальную программу для интерпретации программ на том же языке.
Если он решит написать интерпретатор, ему потребуется разработать аппаратное обеспечение для выполнения этого интерпретатора. Возможны также гибридные конструкции, когда часть команд выполняется аппаратным обеспечением, а часть интерпретируется. Интерпретатор разбивает команды на более мелкие (элементарные). В результате машина, предназначенная для выполнения интерпретатора, может быть гораздо проще по строению и дешевле, чем процессор, выполняющий программы без интерпретации. Такая экономия особенно важна при болыпом количестве сложных команд с различными параметрами. В сущности, экономия проистекает из самою факта замены аппаратного обеспечения программой (интерпретатором).
Первые компьютеры поддерживали небольшое количество команд, и эти команды были простыми. Однако разработка более мощных компьютеров привела, помимо всего прочего, к появлению более сложных команд. Вскоре разработчики поняли, что при наличии сложных команд программы выполняются быстрее, хотя выполнение каждой отдельной команды занимает больше времени. (В качестве примеров таких сложных команд можно назвать выполнение операций с плавающей точкой, обеспечение прямого доступа к элементам массива и т. п.) Если обнаруживалось, что пара тех или иных команд часто выполняется последовательно, вводилась новая команда, заменяющая эти две. Сложные команды оказались лучше егце и потому, что некоторые операции иногда перекрывались.
Подобные операции могли выполняться параллельно, но для этого требовалась дополнительная аппаратура. Для дорогих компьютеров с высокой производительностью приобретение такого дополнительного аппаратного обеспечения было вполне оправданным. Таким образом, у дорогих компьютеров было гораздо больше команд, чем у дешевых. Однако развитие программного обеспечения и требования совместимости команд привели к тому, что сложные команды стали использоваться и в дешевых компьютерах, хотя там во главу угла ставилась стоимость, а не быстродействие.
К концу 50-х годов компания 1ВМ, которая лидировала тогда на компьютерном рынке, решила, что производство семейства компьютеров, каждый из которых выполняет одни и те же команды, выгоднее и для самой компании, и для покупателей. Чтобы охарактеризовать этот уровень совместимости, компания 1ВМ ввела термин архитектура. Новое семейство компьютеров должно было иметь единую архитектуру и много разных моделей, различающихся по цене и скорости, но «умеющих» выполнять одни и те же программы. Но как построить дешевый 74 Глава 2. Организация компьютерных систем компьютер, который сможет выполнять все сложные команды, предназначенные для высокоэффективных дорогостоящих машин? Решением проблемы стала интерпретация.
Эта технология, впервые предложенная Уилксом в 1951 году, позволяла разрабатывать простые дешевые компьютеры, которые тем не менее могли выполнять большое количество команд. В результате компания !ВМ создала архитектуру Бузгепр360 — семейство совместимых компьютеров, различающихся по цене и производительности. Аппаратное обеспечение, позволяющее работать без интерпретации, использовалось только в самых дорогих моделях. Простые компьютеры с интерпретаторами команд имели свои достоинства. Наиболее важными среди них являлись: + возможность исправлять неправильно выполненные команды или даже компенсировать ошибки аппаратного обеспечения; + возможность добавлять новые команды при минимальных затратах, причем при необходимости уже после покупки компьютера; + возможность (благодаря структурированной организации) разработки, проверки и документирования сложных команд.
В 70-е годы компьютерный рынок быстро разрастался, новые компьютеры могли выполнять все больше и больше функций. Спрос на дешевые компьютеры провоцировал создание компьютеров с интерпретаторами. Возможность разрабатывать аппаратное обеспечение с интерпретатором для определенного набора команд привела к появлению дешевых процессоров. Полупроводниковые технологии быстро развивались, низкая стоимость брала верх над высокой производительностью, и интерпретаторы стали применяться при разработке компьютеров все шире и шире. Интерпретация использовалась практически во всех компьютерах, выпущенных в 70-е годы, от мини-компьютеров до самых больших машин. К концу 70-х годов интерпретаторы стали применяться практически во всех моделях, кроме самых дорогих машин с очень высокой производительностью (например, Сгау-1 и компьютеров серии Сопсго! Рата СуЬег).