Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Архитектура ЭВМ Программная модель микропроцессора Архитектура ЭВМ это абстрактное представление Э

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 3.6.2024

5

Архитектура ЭВМ Программная модель микропроцессора

3. Архитектура ЭВМ Программная модель микропроцессора

Архитектура ЭВМ — это абстрактное представление ЭВМ, которое отражает ее структурную, схемотехническую и логическую организацию. Понятие архитектуры ЭВМ является комплексным и включает в себя:

О структурную схему ЭВМ;

О средства и способы доступа к элементам структурной схемы ЭВМ;

О организацию и разрядность интерфейсов ЭВМ;

О набор и доступность регистров;

О организацию и способы адресации памяти;

О способы представления и форматы данных ЭВМ;

О набор машинных команд ЭВМ;

О форматы машинных команд;

О обработку нештатных ситуаций (прерываний).

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

Все современные ЭВМ обладают некоторыми общими и индивидуальными свойствами архитектуры. Индивидуальные свойства присущи только конкретной модели компьютера и отличают ее от больших и малых собратьев. Наличие общих архитектурных свойств обусловлено тем, что большинство типов существующих машин принадлежат 4 и 5 поколениям ЭВМ так называемой фон-неймановской архитектуры. К числу общих архитектурных свойств и принципов можно отнести:

О Принцип хранимой программы. Согласно ему, код программы и ее данные находятся в одном адресном пространстве в оперативной памяти.

О Принцип микропрограммирования. Суть этого принципа заключается в том, что машинный язык все-таки еще не является той конечной субстанцией, которая физически приводит в действие процессы в машине. В состав процессора входит блок микропрограммного управления (см. рис. 1.2). Этот блок для каждой машинной команды имеет набор действий-сигналов, которые нужно сгенерировать для физического выполнения требуемой машинной команды. Здесь уместно вспомнить характеристику ЭВМ 1-го поколения. В них для генерации нужных сигналов необходимо было осуществить ручное программирование всех логических схем — поистине адская и неблагодарная работа!

О Линейное пространство памяти — совокупность ячеек памяти, которым последовательно присваиваются номера (адреса) 0, 1,2, ....

О Последовательное выполнение программ. Процессор выбирает из памяти команды строго последовательно. Для изменения прямолинейного хода выполнения программы или осуществления ветвления необходимо использовать специальные команды. Они называются командами условного и безусловного перехода.

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

О Безразличие к целевому назначению данных. Машине все равно, какую логическую нагрузку несут обрабатываемые ею данные.


Программная модель микропроцессора

Любая выполняющаяся программа получает в свое распоряжение определенный набор ресурсов микропроцессора. Эти ресурсы необходимы для выполнения и хранения в памяти команд программы, данных и информации о текущем состоянии программы и микропроцессора. Набор этих ресурсов представляет собой программную модель микропроцессора. Схема, представленная на рис. 2.2, полностью соответствует программной модели микропроцессора Pentium III.

Программные модели более ранних микропроцессоров (i486, Pentium) отличаются меньшим размером адресуемого пространства оперативной памяти (232-1, так как разрядность их шины адреса составляет 32 бита) и отсутствием некоторых групп регистров. Для каждой группы регистров в скобках обозначено, начиная с какой модели данная группа регистров появилась в программной модели микропроцессоров Intel. Если такого обозначения нет, то это означает, что данная группа регистров присутствовала в микропроцессорах i386 и i486. Более ранние микропроцессоры архитектуры Intel мы не рассматриваем ввиду их архаичности, но это вовсе не означает того, что данная книга не может использоваться для их программирования.

Рис. 2.2. Программная модель микропроцессора Intel (Pentium III)

Итак, программную модель микропроцессора Intel составляют:

О пространство адресуемой памяти (для Pentium III — до 236- 1 байт);

О набор регистров для хранения данных общего назначения;

О набор сегментных регистров;

О набор регистров состояния и управления;

О набор регистров устройства вычислений с плавающей точкой (сопроцессора);

О набор регистров целочисленного MMX-расширения, отображенных на регистры сопроцессора (впервые появились в архитектуре микропроцессора Pentium ММХ);

О набор регистров MMX-расширения с плавающей точкой (впервые появились в архитектуре микропроцессора Pentium III);

О программный стек. Это специальная информационная структура, работа с которой предусмотрена на уровне машинных команд. Более подробно мы будем обсуждать ее позже (и не один раз).

Как мы уже отметили ранее, программные модели ранних микропроцессоров Intel мы не рассматриваем, так как на самом деле они полностью представлены на схеме рис. 2.2 и составляют лишь небольшую ее часть. Так, в программную модель микропроцессора i8086 входят 8- и 16-битные регистры общего назначения, сегментные регистры, регистры flags, ip и адресное пространство памяти размером до 1 Мбайт.

Теперь рассмотрим основные компоненты программной модели микропроцессора. Начнем с обсуждения регистров.

Набор регистров

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

О пользовательские регистры, к которым относятся:

• регистры общего назначения eax/ax/ah/al, ebx/bx/bh/bl, edx/dx/dh/dl, есх/ cx/ch/cl, ebp/bp, esi/si, edi/di, esp/sp. Регистры этой группы используются для хранения данных и адресов;

сегментные регистры cs, ds, ss, es, fs, gs. Регистры этой группы используются для хранения адресов сегментов в памяти;

регистры сопроцессора stCO), st(l), st(2), st(3), st(4), st(5), st(6), st(7). Регистры этой группы предназначены для написания программ, использующих тин. данных с плавающей точкой (см..урок 19);

целочисленные регистры MMX-расширения mmxO, mmxl, mmx2, mmx3, mmx4, mmx5, mmx6, mmx7 (см. урок 20);

регистры MMX-расширения с плавающей точкой xmmO, xmml, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7 (см. урок 20);

регистры состояния и управления — это регистры, которые содержат информацию о состоянии микропроцессора, исполняемой программы и позволяют изменить это состояние;

регистр флагов eflags/flags;

регистр указатель команды eip/ip;

системные регистры — это регистры для поддержания различных режимов работы, сервисных функций, а также регистры, специфичные для определенной модели микропроцессора (более подробно рассмотрены на уроках 16 и 17). На схеме рис. 2.2 регистры этой группы не показаны по двум причинам: во-первых, их достаточно много, и, во-вторых, состав их может отличаться для различных моделей микропроцессора.

Почему многие из этих регистров приведены с наклонной разделительной чертой? Нет, это не разные регистры — это части одного большого 32-разрядного регистра. Их можно использовать в программе как отдельные объекты. Зачем так сделано? Для обеспечения работоспособности программ, написанных для младших 16-разрядных моделей микропроцессоров фирмы Intel, начиная с i8086. Микропроцессоры i486 и Pentium имеют, в основном, 32-разрядные регистры. Их количество, за исключением сегментных регистров, такое же, как и у 18086, но размерность больше, что и отражено в их обозначениях, — они имеют приставку е (Extended).

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

Регистры общего назначения

Регистры общего назначения используются в программах для хранения:

О операндов логических и арифметических операций;

О компонентов адреса;

О указателей на ячейки памяти.

В принципе, все эти регистры доступны для хранения операндов без особых ограничений, хотя при определенных условиях некоторые из них все же имеют жесткое функциональное назначение, закрепленное на уровне логики работы машинных команд. Среди всех этих регистров особо следует выделить регистр esp. Его не следует использовать явно для хранения каких-либо операндов программы, так как в нем хранится указатель на положение вершины стека программы. Все регистры этой группы позволяют обращаться к своим «младшим» частям (рис. 2.2). Рассматривая этот рисунок, заметьте, что использовать для самостоятельной адресации можно только младшие 16- и 8-битные части этих регистров. Старшие 16 битов этих регистров как самостоятельные объекты недоступны. Это сделано, как мы отметили выше, для совместимости с младшими 16-разрядными моделями микропроцессоров фирмы Intel. Перечислим регистры, относящиеся к группе регистров общего назначения. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:

О eax/ax/ah/al (Accumulator register) аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;

О ebx/bx/bh(Base register) базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти;

О ecx/cx/ch/cl (Count register) регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды. К примеру, команда организации цикла loop, кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра есх/сх;

О edx/dx/dh/dl (Data register) регистр данных. Так же как и регистр eax/ax/ah/ al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно. Следующие два регистра используются для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит: О esi/si (Source Index register) индекс источника. Этот регистр в цепочечных

операциях содержит текущий адрес элемента в цепочке-источнике; О edi/di (Destination Index register) индекс приемника (получателя). Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике. В архитектуре микропроцессора на программно-аппаратном уровне поддерживается такая структура данных, как стек. В свое время мы подробно познакомимся с тем, как его использовать. Для работы со стеком в системе команд микропроцессора есть специальные команды, а в программной модели микропроцессора для этого существуют специальные регистры:

О esp/sp (Stack Pointer register) регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека;

О ebp/bp (Base Pointer register) регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.

Не спешите пугаться столь жесткого функционального назначения регистров АЛУ. На самом деле большинство из них может использоваться при программировании для хранения операндов практически в любых сочетаниях. Возможные варианты использования этих регистров приведены в синтаксических диаграммах команд в Справочнике. Но, как мы отметили выше, некоторые команды используют фиксированные регистры для выполнения своих действий. Это нужно обязательно учитывать. Использование жесткого закрепления регистров для некоторых команд позволяет более компактно кодировать их машинное представление. Знание этих особенностей позволит вам при необходимости хотя бы на несколько байт сэкономить память, занимаемую кодом программы.

Сегментные регистры

В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs. Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel. Она заключается в том, что микропроцессор аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами. Соответственно, такая организация памяти называется сегментной. Для того чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени, и предназначены сегментные регистры. Фактически, с небольшой поправкой, как мы увидим далее, в этих регистрах содержатся адреса памяти, с которых начинаются соответствующие сегменты. Логика обработки машинной команды построена так, что при выборке команды, доступе к данным программы или к стеку неявно используются адреса во вполне определенных сегментных регистрах. Микропроцессор поддерживает следующие типы сегментов:

  1.  Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register) сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора);
  2.  Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register) сегментный регистр данных, который хранит адрес сегмента данных текущей программы;
  3.  Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) сегментный регистр стека, содержащий адрес сегмента стека;
  4.  Дополнительный сегмент данных. Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds. Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегмент ном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде. Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).

Регистры состояния и управления

В микропроцессор включены несколько регистров (см. рис. 2.2), которые постоянно содержат информацию о состоянии как самого микропроцессора, так и программы, команды которой в данный момент загружены на конвейер. К этим регистрам относятся: О регистр флагов eflags/flags; О регистр указателя команды eip/ip.

Используя эти регистры, можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора. Рассмотрим подробнее назначение и содержимое этих регистров:

Рис. 2.3. Содержимое регистра eflags

eflags/f lags (flag register) регистр флагов. Разрядность eflags/f lags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру f I ags для i8086. На рис. 2.3 показано содержимое регистра eflags.




1. Андерсен
2. тематика драм Лесі Українки новаторська Доказати що Мавка і Лукаш із Лісової пісні Лесі Українки є кращ
3. Формирование общественного мнени
4. Реферат- Техническое обслуживание легкового автомобиля
5. Реферат- Финансы малого предприятия
6. тематична статистика
7. Тема- Харчування Підтема- Час обіду
8. Общая характеристика проблемы борьбы с отложениями НОС Современные методы разработки нефтяных местор
9. Реферат- Системы защиты информации
10. Тема- Бизнес план создания мастерской по ремонту компьютерной техники СПЕЦИАЛЬНОСТЬ- 220417 ГРУППА- А41
11. по теме Наследственные заболевания 1
12. Клонирование- решение проблем или новая проблема
13. Дипломная работа- Расчет параметров тягового электродвигателя
14. Биотические и абиотические факторы
15. 2009 г. Психология и педагогика Психические процессы психология позна
16. на даритель безвозмездно передает или обязуется передать другой стороне одаряемому вещь в собственность
17. ТЕМАТИКЕ 224 для группы 1112
18. Роль маркетинг
19. Нидерланды XVII в
20. Исполнительная власть в РФ