Когда говорят о структуре процессора, имеют в виду следующие свойства и аспекты:
Для прикладного программиста важно следующее
Регистровая модель процессора для прикладного программиста - набор программно-доступных элементов (регистров), их разрядность, специализация, возможности доступа к ним и к их частями,...
Структура системы команд, форматы и набор команд -
Возможности по доступу к памяти - размеры адресных пространств, способы адресации и их допустимость для разных команд,...
Для системного программиста и для разработчика вычислительной системы дополнительно может быть интересно следующее:
Регистровая модель процессора для системного программиста – включает дополнительные регистры, предоставляющие возможности по управлению процессором (чем именно управлять, зависит от конкретной модели процессора: многозадачность, защита, многопроцессорность, энергосбережение, ...)
Характеристики внешней магистрали для подключения внешней памяти и внешних устройств.
Система прерываний - источники запросов, возможности управления прерываниями,...
[Любопытные могут посмотреть интересный обзор, «Great Microprocessors of the Past and Present» (вер. 9.2.4 от февраля 1997 г), не претендующий на полноту, но дающий представление о диалектике развития процессорной техники. Последняя версия этого обзора (октябрь 1998 г) доступна через стартовую страницу на этом диске (далее требуется доступ в Интернет). У меня там сделана попытка просмотра в автономе тех кусков обзора, которые я добыл, ВОТ ОНА.
В версии сборника 1.5 имеется копия файлов этого обзора в каталоге ЗДЕСЬ. Но к сожалению, не работают многие гиперссылки, так как в оригинальных файлах используются абсолютные пути – вас отправляют в Интернет :-(((
С повышением уровня технологии растет степень интгерации (количество элементов на кристалле), и соответственно меняются (усложняются) структурные решения.
Важная характеристика процессора - его разрядность. В ранних ЭВМ разрядность выбирали, исходя из "естественных" соображений: "один операнд - один регистр - один адрес в памяти - одна команда" (и плавающей точки тоже). При этом стоимость компьютера не была основным фактором ("уж какая получится"). Такими были многие первые "mainframes" - цена - сотни тысяч $.
Затем, когда появились и
развились идеи микропрограммирования, стало ясно, что машину можно сделать
дешевле и проще, уменьшая разрядность физически существующих АЛУ, регистров,
ячеек ОЗУ. За это пришлось платить скоростью (одну привычную операцию типа плавающего
умножения реализовали подпрограммой в тысячи команд (во времени), а операнд занимал
несколько ячеек памяти (например 4 байтовых ячейки). Цена - малые десятки $тысяч.
Такими были миниЭВМ первых поколений. .
PDP-8 (США, DEC, 1965 г) - разрядность 12
бит, цикл 2 мкс, плавающее умножение и деление - подпрограммой - около 3 мс,
плавающий операнд - 3 слова (36 бит)
МИР (Киев, конец 1960-х)- внутренняя структура - байтовая, цикл 5
мкс(???), времена плавающего умножения и деления - около 10 мс.
Начиная с 1970-х годов на кристалле удалось выполнить процессор целиком. Первые массовые коммерческие изделия были 8-разрядными (i8080, Z80, MC6800 и др.).
Зачем сегодня изучать
такие структуры? По мере увеличения
степени интеграции развитие процессорных БИС пошло в двух направлениях:
а) для построения персональных микроЭВМ (причем в период 1978... до сего
времени основная их характеристика - цена – колеблется около $1000)
б) для встроенных (управляющих) применений, одно из основных требований -
достаточно широкий спектр вычислительных мощностей при оптимальных стоимости и
габаритах и максимальной надежности. Для этой области с ростом степени
интеграции на кристалл старались «втиснуть» все, что нужно для законченной
системы.
До сего дня производятся и продаются 8-разрядные семейства: M68HC05,
M68HC11 (Motorola), MCS-48, MCS-*51 (Intel) и многие другие.
Повторение того что уже проходилось
Вспомним базовую структуру вычислительной системы (более подробно это все было рассмотрено ранее во введении):
Основные элементы процессора
- АЛУ - комбинационная схема, на два входа два слова
на выходе результат
- регистры для хранения -команд
- операндов (регистры данных)
- адресов или их частей/компонентов (адресные регистры)
- счетчик команд - он содержит адрес следующей команды(можно
ли без него ?)
- регистр состояния - он содержит код, характеризующий
результаты предыдущих операций а также (м.б.) информацию о текущем состоянии
процессора.
Выполнение процессором команды – достаточно сложная процедура. Перед тем, как ее более подробно разобрать, вспомним, что уже говорилось о структуре команды «в пространстве» и о разновидностях команд (более подробно о структуре и составе системы команд будем говорить позже). Все приводимые примеры взяты из системы команд процессоров х86).
1. В любой системе команд есть «пустая» команда, которая не делает никакого действия (NOP). Для нее просто не требуется указания операндов.
2. Некоторые команды не требуют указания каких-либо операндов, так как их действие направлено на один заранее предопределенный операнд. Например (в системе «разрешить прерывание» STI – эта команда устанавливает бит IF в регистре состояний EFLAGS.
3. Некоторые команды выполняют действие с одним операндом. Например команда NEG – поменять знак операнда. Такие команды называют однооперандными. Передача управления – также однооперандная команда, в которой результат операции – изменение содержимого счетчика команд. В таких командах есть одно адресное поле для указания места расположения (или значения) операнда.
4. Привычные нам арифметические действия (сложение, вычитание, умножение, …) оперируют с двумя операндами и формируют результат операции: C=A+B. Таким образом,в операции участвуют три элемента. В некоторых системах команд соответствующие команды действительно позволяют программисту независимо указать места расположения всех трех элементов. Для уменьшения длины команды в других системах команд эти команды имеют только два адресных поля, при выполнении команды результат операции помещается на место одного из операндов, «затирая» его.
5. В системах команд разных процессоров есть команды, требующие более, чем трех параметров (примеры таких команд – строковые (цепочечные) команды пересылок процессоров х86).
Типовая последовательность действий при выполнении команды - следующая:
(была
рассмотрена подробно ранее)
1) производится выборка команды из памяти по адресу, на который указывает счетчик команд (после чего содержимое счетчика команд автоматически увеличивается, так что он снова содержит адрес следующей команды)
2) выполняется декодирование команды (при этом становится понятно, как использовать адресную часть, если она есть)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.