AIS-2_kurs_Konsp_2015-1

Министерство образования и науки РФ
Севастопольский государственный университет













АРХИТЕКТУРА
ИНФОРМАЦИОННЫХ СИСТЕМ


Конспект лекций
для студентов, обучающихся по направлению
“Информационные системы и технологии”
дневной и заочной формы обучения















Севастополь
2015
Чернега В.С. Архитектура информационных систем: Конспект лекций. Севастополь: СевНТУ, 2015. 161 с.

В конспекте лекций излагаются особенности архитектуры информационных систем, а также основные элементы архитектуры компьютерных систем, форматы машинных слов и команд, архитектура универсальных процессоров и функциональных узлов компьютеров, способы организации и построения памяти ЭВМ. Рассматриваются особенности работы процессоров в защищенном режиме, способы управления памятью и мультипрограммный режим. Освещаются особенности архитектуры 32-х и 64-разрядных и многоядерных процессоры.
В последующих разделах излагаются принципы и особенности построения персональных ЭВМ, характеристика системного блока и функциональных модулей, видео- и аудиосистемы компьютеров, интерфейсы и функционирование ЭВМ.


© Чернега Виктор Степанович, 2015 г.
Содержание





1.
Архитектура информационных систем
5

1.1.
Классификация информационных систем
5

1.2.
Обобщенная многоуровневая архитектура ИС
7

1.3.
Двухуровневая файл-серверная архитектура ИС
9

1.4.
Клиент-серверная двухуровневая архитектура ИС
11

1.5.
Переходная архитектура информационных систем
13

1.6.
Трехуровневая клиент-серверная архитектура
14

1.7.
Архитектура распределенных информационных систем и Web-приложений
16





2.
Архитектура и функционирование серверных и клиентских
компьютеров
19

2.1.
Обобщенная структурная схема компьютера
19

2.2.
Неймановская и гарвардская архитектуры компьютеров.
20

2.3.
Форматы машинных слов и система команд ЭВМ
21

2.4.
CISC- и RISC-процессоры
22





3.
Архитектура универсальных процессоров информационных систем
24

3.1.
Архитектура однокристального микропроцессора
24

3.2.
Структурная схема 8-разрядного однокристального МП
26

3.3.
Функционирование и временные диаграммы микропроцессора
28

3.4.
Слово состояния цикла процессора и его использование
30

3.5.
Система команд 8-разрядного микропроцессора
31

3.6.
Программирование арифметических и логических операций
33

3.7.
Программирование операций ввода/вывода данных
37





4.
Функциональные узлы информационных систем
38

4.1.
Шинные формирователи и буферные регистры
38

4.2.
Программируемый параллельный интерфейс
40

4.3.
Программируемый последовательный интерфейс
43

4.4.
Программируемый контролер прерываний
45

4.5.
Программируемый контроллер прямого доступа в память
48

4.6.
Программируемый таймер
50

4.7.
Подключение клавиатуры и устройств индикации к микро-ЭВМ
52





5.
Запоминающие устройства информационных систем
56

5.1.
Иерархическая организация памяти компьютера
56

5.2.
Основные характеристики полупроводниковых ЗУ
57

5.3.
Статические ОЗУ с произвольным доступом
58

5.4.
ОЗУ динамического типа
59

5.5.
Постоянные и перепрограммируемые постоянные запоминающие устройства
61

5.6.
Кэш-память и ее организация
62





6.
Архитектура 16-разрядных процессоров
65

6.1.
Линейная и сегментная адресация ячеек памяти
65

6.2.
Сегментация памяти и вычисление адресов
66

6.3.
Архитектура 16-разрядного процессора первого поколения
67

6.4.
Регистры процессора Intel 8086
69

6.5.
Система команд 16-разрядного процессора 8086
72

6.6.
Способы адресации памяти и устройств ввода/вывода
78

6.7.
Структура и функционирование 16-разрядной микро-ЭВМ
81

6.8.
Защита памяти в процессорах второго и последующих поколений
84

6.9.
Поддержка многозадачности и виртуальной памяти
85

6.10.
Архитектура 16-разрядного процессора второго поколения
87

6.11.
Особенности программирования задач на языке Ассемблера. Директивы ассемблера
92

6.12.
Оформление и размещение в памяти ассемблерных программ
98





7.
Параллельные вычислительные системы. Суперкомпьютеры
104

7.1.
Типы параллельных вычислительных систем
104

7.2.
Системы с общей памятью
106

7.3.
Системы с распределённой памятью
107

7.4.
Гибридные системы
108

7.5.
Суперкомпьютеры
109





8.
Архитектура 32-разрядных процессоров
111

8.1.
Структурная схема и регистры процессоров
111

8.2.
Страничная организация памяти
114

8.3.
Суперскалярные и мультискалярные микропроцессоры
117

8.4.
Архитектура суперскалярных процессоров типа Pentium
122





9.
Архитектура 64-разрядных и многоядерных процессоров
127

9.1.
Общая характеристика 64-разрядных процессоров
127

9.2.
Процессор Athlon 64
127

9.3.
Многоядерные процессоры Athlon 64 и Pentium D9xx
129

9.4.
Многоядерные процессоры SPARC
133





10.
Архитектура клиентских и серверных компьютеров
136

10.1.
Обобщенная структурная схема компьютера
136

10.2.
Клавиатура ПЭВМ и ее взаимодействие с процессором
139

10.3.
Видеосистема компьютера
142

10.4.
Последовательный и параллельный интерфейсы компьютера
146

10.5.
Универсальный интерфейс USB
149

10.6.
Мультимедийный интерфейс высокого разрешения
153

10.7.
Аудиосистема компьютера
153

10.8.
Системные платы компьютера
157






Список рекомендованной литературы
161





Архитектура информационных систем и

Классификация информационных систем

Информационная система (ИС) по законодательству РФ совокупность содержащейся в базах данных информации и обеспечивающих ее обработку информационных технологий и технических средств. В более расширенном понимании информационная система это взаимосвязанная совокупность информационных, технических, программных, математических, организационных, правовых, эргономических, лингвистических, технологических и других средств, а также персонала, предназначенная для сбора, обработки, хранения и выдачи информации и принятия управленческих решений. Обобщенная структура информационной системы, как совокупность обеспечивающих подсистем, изображена на рис. 1.1.



Рис.1. 1. Структура информационной системы как совокупность
обеспечивающих подсистем


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

В информационной системе происходят следующие процессы:
ввод информации из внешних и внутренних источников;
обработка входящей информации;
хранение информации для последующего ее использования;
вывод информации в удобном для пользователя виде;
выработка управляющих воздействий, т.е. представление информации, переработанной в данной организации, для корректировки входящей информации.
Информационная система предназначена для своевременного обеспечения определенных людей необходимой информацией, то есть для удовлетворения конкретных информационных потребностей в рамках определенной предметной области.
Информационные системы классифицируют по различным признакам (рис. 1.2).


Рис.1.2. Классификация информационных систем


Информационные системы организационного управления предназначены для автоматизации функций управленческого персонала. К этому классу относятся информационные системы управления как промышленными фирмами, так и непромышленными объектами: гостиницами, банками, торговыми фирмами и др. Основными функциями подобных систем являются: оперативный контроль и регулирование, оперативный учет и анализ, перспективное и оперативное планирование, бухгалтерский учет, управление сбытом и снабжением и другие экономические и организационные задачи.
ИС управления технологическими процессами (ТП) служат для автоматизации функций производственного персонала. Они широко используются при организации для поддержания технологического процесса в металлургической и машиностроительной промышленности.
ИС автоматизированного проектирования (САПР) предназначены для автоматизации функций инженеров-проектировщиков, конструкторов, архитекторов, дизайнеров при создании новой техники или технологии. Основными функциями подобных систем являются: инженерные расчеты, создание графической документации (чертежей, схем, планов), создание проектной документации, моделирование проектируемых объектов.
Интегрированные (корпоративные) ИС используются для автоматизации всех функций организации (предприятия) и охватывают весь цикл работ от проектирования до сбыта продукции. Создание таких систем весьма затруднительно, поскольку требует системного подхода с позиций главной цели, например получения прибыли, завоевания рынка сбыта и т.д. Такой подход может привести к существенным изменениям в самой структуре фирмы, на что может решиться не каждый управляющий. На рис. 1.3 показана структура корпоративной информационной системы.




Рис. 1.3 Структура корпоративной информационной системы


Корпоративная информационная система, как правило, строится по модульному принципу. Программные и аппаратные модули группируются по функциональным подсистемам. Ядром информационной системы является интегрированная база данных, с которой взаимодействуют все подсистемы ИС, используя общие функции администрирования и разграничения прав доступа, работая с единой системой документооборота и едиными справочниками.
К основным функциям подсистем относятся.
Документооборот - создание, заполнение и маршрутизация документов, делопроизводство, контроль исполнения.
Развитие бизнеса и маркетинг - управление развитием производства и бизнеса, поддержка системы качества управления, маркетинг (позиционирование товара, сегментирование рынка, прогнозирование спроса, рекламные кампании).
Технико-экономическое планирование - ведение производственного плана верхнего уровня, объемный расчет потребностей в производственных ресурсах (материальных, трудовых, оборудовании), расчет нормативных пооперационных затрат изготовления деталей, сборочных единиц, подготовка смет затрат и плановое ценообразование.
Техническая подготовка производства - конструкторская и технологическая подготовка производства (спецификации изделий, технологические процессы, пооперационные нормативы), расчет норм расхода материальных ресурсов на единицу изделия и пр.
Производство - ведение укрупненного технологического маршрута изготовления деталей и узлов, межцеховой комплектации и календарно-плановых нормативов, учет движения сборочных единиц в процессе производства, календарное планирование работ и ресурсов с учетом незавершенного производства, учет и оценка выполнения календарных планов.
Услуги и сервис - обслуживание и сопровождение продукции после продажи, планово-предупредительный ремонт основных средств, обработка путевых листов, планирование и учет работы обслуживающих подразделений предприятия.
Договора и финансы - ведение, учет и оценка выполнения договоров, учет бартерных операций и проведение взаимозачетов, связь документов на отгрузку с документами на оплату, планирование очередности платежей и их исполнение.


Определение и общая характеристика архитектуры ИС

Автоматизированная информационная система (АИС) представляет собой организационно-техническую систему, которая:
а) предназначена для реализации процессов сбора, обработки, накопления, хранения, поиска и распространения информации в какой-либо сфере деятельности (управление, проектирование, производство и т.д.) или в их сочетаниях на основе применения компьютерных информационных технологий;
б) строится из:
- комплекса средств автоматизации (программных, информационных и технических средств),
- множества правовых, организационных, методических и технических документов,
- пользователей-специалистов, применяющих эти средства и документы в своей профессиональной деятельности;
в) выполняет определенное множество информационно связанных функций, задач или процедур (управленческих, проектных, производственных и т.д.) в автоматизированном (интерактивном) или автоматическом режимах.
В общем случае под архитектурой информационной системы понимают концепцию, определяющую модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы. На практике различают понятия системной архитектуры (архитектура систем – System Architecture) и программной архитектуры (архитектура программного обеспечения – Software Architecture). Термин «архитектура системы» зачастую является синонимом термина «структура системы». Но при использовании термина «архитектура системы» на первый план выдвигается сложный многоаспектный характер структуры системы.
По описанию архитектуры выделяют различные виды архитектур:
концептуальная архитектура определяет компоненты системы и их назначения, обычно в неформальном виде. Это представление часто используется для обсуждения с нетехническими специалистами, такими как руководство, бизнес-менеджеры и конечные пользователи функциональных характеристик системы (что система должна уметь делать, в основном, с точки зрения конечного пользователя);
логическая архитектура выделяет, прежде всего, вопросы взаимодействия компонент системы, интерфейсы и используемые протоколы. Это представление позволяет эффективно организовать параллельную разработку;
физическая реализация, которая описывает привязку к конкретным функциональным узлам, типам оборудования, характеристикам окружения, таким как, например, используемые операционные системы.
Компоненты информационной системы по выполняемым функциям можно разделить на три уровня: представления, бизнес-логики (логики предметной области) и доступа к данным (рис.1.4).



Рисунок 1.4 – Трехуровневая архитектура ИС


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


Двухуровневая файл-серверная архитектура ИС

На начальном этапе развития (1950-1990 годы) традиционной многопользовательской архитектурой информационных систем была схема телеобработки, при которой один компьютер (главный, мэйнфрейм) был соединен с несколькими рабочими местами – терминалами пользователей. На главной (единственной) ЭВМ размещалась база данных и необходимые программы обработки. При такой архитектуры вся нагрузка ложилась на компьютер, который должен выполнять не только действия приложений и СУБД, но и значительную работу по обслуживанию терминалов (подключение терминалов, форматирование данных, вывод на экран терминалов и т.д.).
С появлением персональных ЭВМ и первых локальных сетей пользовательские компьютеры сначала объединялись в одноранговую сеть, в которой все компьютеры были равноправны. На каждом компьютере устанавливались соответствующие приложения, зачастую однотипные, что приводило к дублированию ресурсов и неэффективному их использованию.
На следующем этапе было предложено осуществлять хранение всех общедоступных файлов на выделенном компьютере в сети файл-сервере. К функциям сервера относится хранения данных и кодов программы, а к функциям пользовательского компьютера (рабочей станции) обработка и отображение данных. Структура такой сети изображена на рис. 1.5.


Рисунок 1.5 – Структура файл-серверной информационной системы

Файл-серверные приложения по своей структуре схожие с локальными приложениями. Модель файлового сервера изображена на рис. 1.6.

13 EMBED PBrush 1415


Рисунок 1.6 – Двухуровневая архитектура ИС


Информационная система этого типа состоит из трех компонент: сервер баз данных, клиент (персональный компьютер с клиентскими приложениями и СУБД), сеть и коммуникационное программное обеспечение. На сервере расположены СУБД и файлы, необходимые для работы клиентских приложений. Клиентские приложения и их персональные СУБД расположены и функционируют на отдельных рабочих станциях и обращаются к файловому серверу только по мере необходимости получения доступа к файлам. Сервер отбирает из базы файлы (а не отдельные их записи), которые сетью отправляются клиенту для обработки. Таким образом, файловый сервер функционирует как совместно используемый жесткий диск.
К достоинствам файл-серверной архитектуры относятся:
1. Многопользовательский режим работы с данными;
2. Удобство централизованного управления доступом;
3. Относительно низкая стоимость разработки.
Архитектуре с использованием файлового сервера присущи следующие основные недостатки:
большой объем сетевого графика;
на каждой рабочей станции должна быть полная копия пользовательской СУБД;
управление параллельностью, восстановлением и целостностью базы данных осложняется, поскольку доступ к одним и тем же файлов осуществляется одновременно несколькими СУБД.


Клиент-серверная двухуровневая архитектура ИС

Ключевым отличием архитектуры клиент-сервер от архитектуры файл-сервер является абстрагирование от внутреннего представления данных (физической схемы данных). При такой архитектуре клиентские программы манипулируют данными на уровне логической схемы. Для реализации архитектуры клиент-сервер обычно используют многопользовательские СУБД, например, Oracle или Microsoft SQL Server.
Клиент-серверная информационная система состоит из трех основных компонент: программное обеспечение сервера; программное обеспечение конечного пользователя; промежуточное программное обеспечение (рис.1.7). Программное обеспечение сервера, кроме управления базами данных обеспечивает обслуживание клиентов.


Рисунок 1.7 – Структура клиент-серверной ИС

В таких СУБД предусмотрены механизмы блокировки и элементы управления многопользовательским доступом, которые обеспечивают защиту данных от рисков, присущих параллельному доступу. Кроме этого, серверу баз данных приходится защищать данные от несанкционированного доступа, оптимизировать запросы к базе данных, обеспечивать целостность данных и контроль завершение транзакций. В клиент-серверной организации клиенты могут быть достаточно "тонкими", а сервер должен быть "толстым" настолько, чтобы удовлетворять потребности всех клиентов.К программному обеспечению конечного пользователя относятся средства разработки прикладных программ и генераторы отчетов, в том числе электронные таблицы и текстовые процессоры С помощью этого программного обеспечения пользователи устанавливают связь с сервером, формируют запросы, которые автоматически генерируются в запросы на языке SQL и отправляются на сервер. Сервер принимает и обрабатывает запросы, а затем передает полученные результаты клиентам. Промежуточное программное обеспечение часть системы клиент-сервер, которая связывает программное обеспечение конечного пользователя с сервером.
Использование архитектуры клиент-сервер позволило создавать надежные (в смысле целостности данных) многопользовательские ИС с централизованной базой данных, независимые от аппаратной (а часто и программной) части сервера БД и поддерживающие графический интерфейс пользователя на клиентских станциях, связанных локальной сетью. Причем издержки на разработку приложений существенно сокращались.
Такая архитектура имеет два уровня, характерной особенностью которой является то, что клиентские программы работает с данными через запросы к серверному ПО, а базовые функции приложения разделены между клиентом и сервером (рис.1.8).



Рис. 1.8 – Модель сервера СУБД двухуровневой ИС


К достоинствам этой архитектуры относятся:
полная поддержка многопользовательской работы;
обеспечение целостности данных.
Двухуровневую архитектуру целесообразно использовать на предприятиях с количеством пользователей несколько десятков, поскольку операционная система сервера при обслуживании большого количества клиентов слишком перегружается управлением многочисленными соединениями с сервером.
Недостатками двухуровневой клиент-серверной архитектуры являются:
Бизнес логика приложений осталась в клиентском ПО. При любом изменении алгоритмов, надо обновлять пользовательское ПО на каждом клиенте.
Высокие требования к пропускной способности коммуникационных каналов с сервером, что препятствует использование клиентских станций иначе как в локальной сети.
Слабая защита данных от взлома, в особенности от недобросовестных пользователей системы.
Высокая сложность администрирования и настройки рабочих мест пользователей системы.
Необходимость использовать мощные ПК на клиентских местах.
Высокая сложность разработки системы из-за необходимости выполнять бизнес-логику и обеспечивать пользовательский интерфейс в одной программе.
Большинство недостатков 2-х уровневой (классической) архитектуры клиент-сервер проистекают от использования клиентской станции в качестве исполнителя бизнес-логики ИС.
Поэтому очевидным шагом дальнейшей эволюции архитектур ИС явилась идея "тонкого клиента", то есть разбиения алгоритмов обработки данных на части связанные с выполнением бизнес-функций и связанные с отображением информации в удобном для человека представлении. При этом на клиентской машине оставляют лишь вторую часть, связанную с первичной проверкой и отображением информации, перенося всю реальную функциональность системы на серверную часть.


Переходная архитектура информационныхьсистем

Использование хранимых процедур и вычисление данных на стороне сервера сокращают трафик и увеличивают безопасность, однако на клиентском компьютере все равно реализуется часть бизнес-логики.
Такая организация информационной системы похожа на организацию первых информационных систем с той лишь разницей, что на пользовательском месте стоит не терминал, а персональный компьютер, обеспечивающий графический интерфейс пользователя, например, в последнее время в качестве клиентских программ часто применяют стандартные www-браузеры. Конечно, такой возврат к начальным системам произошел уже на ином технологическом уровне. Обязательным стало использование СУБД со всеми их преимуществами. Программы для серверной части пишутся, в основном, на специализированных языках, пользуясь механизмом хранимых процедур сервера БД. Таким образом, на уровне логической организации, ИС в архитектуре клиент-сервер с тонким клиентом расщепляется на три уровня - уровень данных, уровень бизнес-функций (хранимые процедуры) и уровень представления. К сожалению, обычно, в такой схеме построения ИС не удается написать всю бизнес-логику приложения на не предназначенных для этого встроенных языках СУБД. Поэтому, очень часто часть бизнес-функций реализуется в клиентской части систем, которая от этого неотвратимо "толстеет". Отчасти поэтому, отчасти потому, что физически такие ИС состоят из двух компонентов, эту архитектуру часто называют 2.5-уровневый клиент-сервер.
В отличие от 2-х уровневой архитектуры 2.5-уровневая архитектура обычно не требует наличия высокоскоростных каналов связи между клиентской и серверной частями системы, так как по сети передаются уже готовые результаты вычислений - почти все вычисления производятся на серверной стороне. Существенно улучшается также и защита информации - пользователям даются права на доступ к функциям системы, а не на доступ к ее данным и т.д. Однако архитектура 2.5 имеет недостатки, характерные для первых ИС: ограниченную масштабируемость, зависимость от программной платформы, ограниченное использование сетевых вычислительных ресурсов. Кроме того программы для серверной части системы пишутся на встроенных в СУБД языках описания хранимых процедур, предназначенных для валидации данных и построения несложных отчетов, а вовсе не для написания ИС масштаба предприятия. Все это снижает быстродействие системы, повышает трудоемкость создания с модификации ИС и самым негативным образом сказывается на стоимости аппаратных средств, необходимых для ее функционирования.


Трехуровневая клиент-серверная архитектура

Для решения этих проблем и была предложена так называемая 3-х уровневая архитектура клиент-сервер (рис.1.9). Основным ее отличием от архитектуры 2.5 является физическое разделение программ, отвечающих за хранение данных (СУБД) от обрабатывающих эти данные программ (сервер приложения (СП). Такое разделение программных компонент позволяет оптимизировать нагрузки как на сетевое, так и на вычислительное оборудование комплекса.


Рисунок 1.9 – Схема трехуровневой архитектуры ИС


Компоненты трехуровневой архитектуры, с точки зрения программного обеспечения реализуют определенные серверы БД, web-серверы и браузеры. Место любого из этих компонентов может занять программное обеспечение любого производителя. Модель сервера приложений показана на рис.1.10.
Ниже представлено описание взаимодействия компонентов трехуровневой архитектуры клиент-серверного приложения. Сервер БД представлен MySQL-сервером; сервер приложений технологиями: ADO.NET, ASP.NET и web-сервером IIS; роль клиента выполняет любой web-браузер.
Схематично работу системы можно представить в виде последовательности: Браузер клиента 1-> Сервер IIS 2-> Исполняющая среда ASP.NET 2.0 3-> Провайдер данных ADO.NET 2.0 4-> Сервер MySQL 5-> Провайдер данных ADO.NET 2.0 6-> Исполняющая среда ASP.NET 2.0 7-> Сервер IIS 8-> Браузер клиента.
Более детально функционирование системы происходит следующим образом.
1 браузер клиента отправляет HTTP-запрос;
2 на стороне сервера служба Web Internet Information Server (web-сервер IIS) определяет тип запрашиваемого ресурса, и для случая запроса *.aspx (расширение файлов страниц ASP.NET) загружает соответствующее ему (запросу) расширение Internet Server Aplication Programming Interface (ISAPI). Для страниц aspx это расширение isapi_aspnet.dll. IIS также осуществляет идентификацию и авторизацию пользователя от которого поступил запрос. В свою очередь расширение isapi_aspnet.dll загружает фабрику обработчиков ASP.NET. Далее, фабрика обработчиков создает объектную модель запрашиваемой страницы и обрабатывает действия пользователя.
3 в ходе генерации ответа приложению ASP.NET может потребоваться обращение к БД, в этом случае используя библиотеки классов провайдера данных ADO.NET 2.0, выполняющая среда обращается к серверу БД;
4 провайдер данных ADO.NET 2.0 передает запрос на операцию с БД серверу MySQL;




Рис.1.10 – Модель сервера приложений трехуровневой ИС


5 сервер MySQL осуществляет обработку запроса, выполняя соответствующие операции с БД;
6 провайдер данных ADO.NET 2.0 передает результаты запроса объекту страницы;
7 объект страницы с учетом полученных данных осуществляет визуализацию (рендеринг) графического интерфейса страницы и направляет результаты в выходной поток;
8 сервер IIS отправляет содержимое сгенерированной страницы клиентскому браузеру.
Преимуществом трехуровневой архитектуры является:
1. Меньшая нагрузка на клиентское приложение («Тонкий клиент»).
2. Между клиентской программой и сервером приложения передается лишь минимально необходимый поток данных - аргументы вызываемых функций и возвращаемые от них значения. Это теоретический предел эффективности использования линий связи, даже работа с ANSI-терминалами (не говоря уже об использование протокола http) требует большей нагрузки на сеть.
3. Сервер приложения ИС может быть запущен в одном или нескольких экземплярах на одном или нескольких компьютерах, что позволяет использовать вычислительные мощности организации столь эффективно и безопасно как этого пожелает администратор ИС.
4. Дешевый трафик между сервером приложений и СУБД. Трафик между сервером приложений и СУБД может быть большим, однако это всегда трафик локальной сети, а их пропускная способность достаточно велика и дешева. В крайнем случае, всегда можно запустить сервер приложений и СУБД на одной машине, что автоматически сведет сетевой трафик к нулю.
5. Снижение нагрузки на сервер данных по сравнению с 2.5-слойной схемой, а значит и повышение скорости работы системы в целом.
6. Дешевле наращивать функциональность и обновлять ПО.
К недостаткам архитектуры можно отнести более высокие расходы на администрирование и обслуживание серверной части.
Масштабируемость систем выполненных по трехуровневой архитектуре очень высокая. Одна и та же система может работать как на одном отдельно стоящем компьютере, выполняя на нем программы СУБД, сервера приложений и клиентской части, так и в сети, состоящей из сотен и тысяч машин.
Важным фактором в трехуровневой архитектуре является возможность расширение ее функциональной наполненности. Для расширения функциональности не обязательно менять всю систему как в случае 2.5-уровневой архитектуры, а достаточно установить новый сервер приложения с требуемой функцией. Отпадают и многие проблемы связанные с переустановкой клиентских частей программы на множестве компьютеров, быть может весьма удаленных, столь актуальные для 2-уровневой схемы - парадигма "тонкого" клиента предоставляет для этого целый ряд возможностей.


1.7. Архитектура распределенных информационных систем и Web-приложений

Распределенная система это набор независимых вычислительных машин, представляющийся их пользователям единой объединенной системой. Не смотря на то, что все компьютеры автономны, для пользователей они представляются единой системой.
К основным характеристикам распределенных систем:
1. От пользователей скрыты различия между компьютерами и способы связи между ними. То же самое относится и к внешней организации распределенных систем.
2. Пользователи и приложения единообразно работают в распределенных системах, независимо от того, где и когда происходит их взаимодействие.
Распределенные системы должны также относительно легко поддаваться расширению, или масштабированию. Эта характеристика является прямым следствием наличия независимых компьютеров, но в то же время не указывает, каким образом эти компьютеры на самом деле объединяются в единую систему.
Для того чтобы поддержать представление системы в едином виде, организация распределенных систем часто включает в себя дополнительный уровень программного обеспечения, находящийся между верхним уровнем, на котором находятся пользователи и приложения, и нижним уровнем, состоящим из операционных систем (рисунок 1.11).
Соответственно, такая распределенная система обычно называется системой промежуточного уровня (middleware). Отметим, что промежуточный уровень распределен среди множества компьютеров.
К особенностям функционирования распределенных систем относятся:
наличие большого количества объектов;
задержки выполнения запросов (так если локальные вызовы требуют порядка пары сотен наносекунд, то запросы к объекту в распределенных системах требует от 0.1 до 10 мс);
некоторые объекты могут не использоваться на протяжении длительного времени;
распределенные компоненты выполняются параллельно, что приводит к необходимости согласования выполнения;
запросы в распределенных системах имеют большую вероятность отказов;
повышенные требования к безопасности.



Рисунок 1.11 - Распределенная система организована с применением службы
промежуточного уровня


В связи наличием повышенных задержек интерфейсы в распределенной системе должны быть спроектированы так, чтобы снизить время выполнения запросов. Это можно достичь путем снижения частоты обращения, а также укрупнением выполняемых функций.
Для борьбы с отказами клиенты обязаны проверять факт выполнения запросов сервером. Безопасность в распределенных приложениях может быть повышена путем контроля сеансов связи (аутентификация, авторизация, шифрование данных).
Архитектура Web-приложений (Web -сервиса) широко применяется в настоящее время. Web-сервис – приложение, доступное через Интернет. Оно предоставляет услуги, форма которых не зависит от поставщика услуг, так как используется универсальная платформа функционирования и универсальный формат данных (XML). В основе Web –сервисов лежат стандарты, определяющие форматы и язык запросов, а также протоколы поиска этих сервисов в Интернете. Схема доступа к базе данных через Интернет показана на рис.1.12.



Рисунок 1.12 – Схема доступа к серверу СУБД через Интернет


В настоящее время существуют три различных технологии, поддерживающие концепцию распределенных объектных систем: EJB, DCOM CORBA.
Основная идея, лежащая в разработке технологии EJB (Enterprise Java Beans) – создать такую инфраструктуру для компонентов, чтобы они могли бы легко вставляться и удаляться из серверов, тем самым повышая или снижая функциональность сервера. EJB-компоненты являются Java-классами и могут работать на любом EJB-совместимом сервере даже без перекомпиляции. Основными целями EJB-технологии является:
Облегчить разработчикам создание приложений, избавив их от необходимости реализовать с нуля такие сервисы, как транзакции, нити, загрузки и др. Разработчики могут сконцентрировать свое внимание на описании логики своих приложений, перекладывая задачи по хранению, передаче и безопасности данных на EJB-систему.
Описать основные структуры EJB-системы и интерфейсы взаимодействия между ее компонентами.
Освободить разработчика от реализации EJB-объектов за счет наличия специального кодогенератора.
Благодаря используемой Java-модели, EJB является относительно простым и быстрым способом создания распределенных систем.
Технология DCOM (Distributed Component Object Model) - программная архитектура, разработанная компанией Microcoft для распределения приложений между несколькими компьютерами в сети. Программный компонент на одном из компьютеров может использовать DCOM для передачи сообщений к компоненту на другом компьютере. DCOM автоматически устанавливает соединение, передает сообщение и возвращает ответ удаленного компонента. Способность DCOM связывать компоненты позволила Microcoft наделить Windows рядом дополнительных возможностей, в частности, реализовать сервер Microsoft Transaction Server, отвечающий за выполнение транзакций баз данных через Интернет.
Технология CORBA (Common Object Request Broker Architecture) специфицирует инфраструктуру взаимодействия компонент (объектов) на уровнях представления и приложения модели OSI. Технология позволяет рассматривать все приложения в распределенной системе как объекты. Причем объекты могут одновременно играть роль и клиента и сервера. Использование CORBA позволяет строить более гибкие системы, чем системы клиент-сервер, основанные на двухуровневой и трехуровней архитектурах. К основным достоинствам CORBA можно отнести межязыковую и межплатформенную поддержку, масштабируемость и широкая промышленная поддержка.
2. Архитектура и функционирование серверных и клиентских компьютеров

Обобщенная структурная схема компьютера

Компьютером (цифровой электронно-вычислительной машиной ЭВМ), называется цифровая программно управляемая система, содержащая взаимосвязанные между собой процессор (П), запоминающее устройство (ЗУ), устройства ввода и вывода и программное обеспечение, предназначенная для арифметической и логической обработки и отображения данных. Процессор в свою очередь состоит из арифметико-логического устройства (АЛУ) и устройства управления (УУ).
Под архитектурой компьютера в общем случае понимают концептуальную структуру вычислительной машины, определяющей способы преобразования и обработки информации, принципы взаимодействия технических средств и программного обеспечения. В более подробную характеристику архитектуры входят структурная схема ЭВМ, средства и способы доступа к функциональным элементам схемы компьютера, организация и разрядность шин и интерфейсов ЭВМ, набор и доступность внутренних регистров, организация памяти и способы её адресации, набор и формат машинных команд процессора, способы представления и форматы данных, правила обработки прерываний.
Обобщенная структурная схема ЭВМ изображена на рисунке 2.1.




Рисунок 2.1 – Обобщенная структурная схема ЭВМ


Процессор (П) - часть ЭВМ для выполнения операций обработки данных. Процессор состоит из операционного блока - арифметико-логического устройства (АЛУ), устройства управления, регистров промежуточного хранения и шин сопряжения.
Отдельные составные части ЭВМ соединяются между собой группами линий одного функционального назначения – шин, по которым передаются управляющие сигналы, данные и команды.
Устройства ввода предназначаются для занесения программы и входных данных в ЭВМ. Устройствами ввода-вывода могут быть, например, клавиатура, накопитель на магнитном диске, сканер, модем и др.
Память ЭВМ предназначена для хранения кодов программ, входных и выходных данных, результатов расчетов и промежуточных данных вычислений. Такая память называется оперативной (ОЗУ), поскольку функционирование ЭВМ определяется программой, хранимой в этом же запоминающем устройстве. Информация в ОЗУ хранится в виде отдельных слов, которые имеют размерность от 8 до 64 двоичных разрядов.
АЛУ (операционный блок) предназначен для выполнения в соответствии с программой, хранимой в памяти, арифметических, логических и сдвиговых операций над данными, находящимися в этой же памяти. Арифметическое устройство состоит обычно из накапливающего сумматора, регистров общего назначения, дешифраторов и других логических схем. Основной частью АЛУ является сумматор, поскольку все арифметические операции в процессоре выполняются посредством операций сложения или вычитания.
Арифметическое устройство (АЛУ) функционирует непосредственно под воздействием устройства управления (УУ). Оно может обрабатывать информацию последовательно, параллельно, либо параллельно-последовательно. АЛУ осуществляет операции, как правило, только над двумя числами (операндами). Если потребуется выполнить операции с большим количеством чисел, то применяется несколько циклов.
Устройство управления (УУ) в соответствии с алгоритмом, определяемым схемой этого устройства, последовательно производит выборку из ОЗУ отдельных команд программы и затем в соответствии с полученными командами вырабатывает управляющие сигналы, которые управляют составными частями ЭВМ. УУ организует также работу устройств ввода/вывода компьютера. Схемотехнически УУ содержит генераторы тактовых сигналов, счетчики, регистры, дешифраторы и различные комбинационные логические схемы.
Устройство вывода (печатающее устройство, графопостроитель, дисплей, и др.) обеспечивают перевод полученных результатов вычислений в форму, удобную для восприятия человеком, а также осуществляют документирование данных.
Функционирование компьютера в упрощенном виде можно описать следующим образом. После включения питания устройство управления процессора отправляет по шине адреса на ОЗУ определенный (на стадии проектирования компьютера) номер ячейки памяти, в которой хранится первая команда программы управления работой компьютера. Затем устройство управления генерирует сигнал чтения памяти, по получении которого ОЗУ выставляет на шину код первой команды. Устройство управления процессора фиксирует этот код в регистре команды, дешифрирует ее и вырабатывает последовательность управляющих сигналов, требуемых для выполнения данной команды арифметико-логическим устройством. По завершении выполнения первой команды устройство управления формирует адрес следующей ячейки памяти и процесс получения и выполнения очередной команды повторяется. Команды управляют не только обработкой данных, но и вводом и выводом информации. Процесс чтения и выполнения команд циклически повторяется до получения команды останова.


2.2. Неймановская и гарвардская архитектуры компьютеров

В настоящее время наибольшее распространение в ЭВМ получили 2 типа архитектуры: Неймановская и Гарвардская. Неймановская архитектура компьютера основывается на следующих принципах.
Принцип однородности памяти.
Программы и данные хранятся в одной и той же памяти. Поэтому ЭВМ не различает, что хранится в данной ячейке памяти число, текст или команда. Над командами можно выполнять такие же действия, как и над данными.
Принцип адресуемости памяти.
Структурно основная память состоит из пронумерованных ячеек; процессору в произвольный момент времени доступна любая ячейка. Отсюда следует возможность давать имена областям памяти, так, чтобы к хранящимся в них значениям можно было бы впоследствии обращаться или менять их в процессе выполнения программы с использованием присвоенных имен.
Принцип последовательного программного управления.
Предполагает, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
Принцип жесткости архитектуры.
Неизменяемость в процессе работы компьютера его структуры и списка команд.
Совместное использование шины для памяти программ и памяти данных приводит к ограничению пропускной способности между процессором и памятью по сравнению с объёмом памяти.
Для гарвардской архитектуры компьютера характерны следующие признаки:
1) хранилище команд (инструкций) и хранилище данных представляют собой разные физические устройства, в связи с чем машина гарвардской архитектуры имеет различные адресные пространства для команд и данных.
2) канал команд и канал данных также физически разделены.
В компьютере с использованием гарвардской архитектуры процессор может читать инструкции и выполнять доступ к памяти данных в одно и то же самое время. Благодаря этому компьютер с гарвардской архитектурой работает быстрее. Недостатком гарвардской архитектуры является более высокая сложность аппаратной реализации компьютера.
Существуют гибридные архитектуры, сочетающие достоинства как Гарвардской так и н Неймановской архитектур. Так современные универсальные процессоры обладают раздельной кэш-памятью 1-го уровня для инструкций и данных, что позволяет им за один рабочий такт получать одновременно и команду, и данные для её выполнения. То есть процессорное ядро, формально, является гарвардским, но программно оно Неймановское, что упрощает написание программ.


2.3. Форматы машинных слов и система команд ЭВМ

В цифровых ЭВМ производится обработка информации, представленной в числовом виде. Информацией внутри ЭВМ являются команды и данные, которые необходимо распознать и обработать. В большинстве компьютеров данные и команды обрабатываются по словам, иногда по байтам. Длина слова определяется числом разрядов (битов) из которых состоит слово. Формат слова отображает организацию (назначение) отдельных разрядов в слове. Слова часто делят на слоги по одному байту в слове.
Данные и команды могут быть представлены одним либо несколькими словами. При использовании только одного слова для представления информации каждое слово должно содержать код операции, адрес в памяти и операнд. На рисунке 2.2 показан пример такого слова.

13 EMBED PBrush 1415


Рисунок 2.2 – Типовой формат машинного слова


Операционная часть (иначе она еще называется кодом операции КОП) указывает, какое действие необходимо выполнить с данными. Адресная часть описывает, где используемая информация хранится и куда поместить результат. Совокупность всех кодов операции образует набор команд процессора. Количество команд в ЭВМ равно 2n1, где n1- количество разрядов для представления команды. Современные ЭВМ выполняют от 20 до нескольких сотен команд: арифметических, логических, сдвиговых, а также команд управления периферийными устройствами. У некоторых немногочисленных команд управления работой машины адресная часть может отсутствовать, например, в команде останова; но операционная часть имеется всегда.
В зависимости от количества возможных операндов команды могут быть одно-, двух- и трехадресные. Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. В трехадресной команде указываются адреса первого и второго операндов, а также адрес, куда следует поместить результат операции. Трехадресная команда легко расшифровывается и удобна в использовании, но с ростом объемов ОЗУ ее длина становится непомерно большой. Поэтому были разработаны двухадресные компьютеры, длина команды в которых сокращена за счет исключения адреса записи результата. В таких ЭВМ результат операции остается в специальном регистре (аккумуляторе) и пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов. Дальнейшее упрощение команды привело к созданию одноадресных машин.
Диапазон чисел, представляемых в компьютере, определяется длиной слова данных и используемым способом кодирования. При использовании двоичной системы счисления, максимальное число равно 2(n3 – 1), где n3 – количество разрядов, выделенных для кодирования числа. Один разряд предназначается для фиксации знака числа: 0 – положительное, 1 – отрицательное. Отрицательное число может быть выражено не только с помощью знака и значения, но его можно представить также в виде дополнительного кода.
При представлении дробных чисел применяется использование чисел с фиксированной и плавающей запятой. В первом случае программист сам выбирает диапазон изменения чисел. Причем в процессе вычислений этот диапазон не должен быть превышен. Это представляет в ряде случаев определенные трудности. Поэтому во многих ВМ предусматривается возможность обработки чисел с плавающей запятой. Число в этом случае выражается порядком и мантиссой (полулогарифмическая форма).


CISC- и RISC-процессоры

По системе команд и архитектуре различают 2 вида процессоров (компьютеров):
1) с полным набором инструкций CISC (Complete Instruction Set Computer);
2) с сокращенной системой команд RISC (Reduced Instruction Set).
Такие процессоры обычно имеют набор однородных регистров универсального назначения, и их система команд отличается относительной простотой.
Стратегия CISC-архитектуры формировалась в большой степени по желанию программистов иметь в своем распоряжении как можно больший набор команд для упрощения программирования. За первое десятилетие компьютерной эры список команд ЭВМ расширился от нескольких десятков до нескольких сотен.
Для CISC-процессоров характерны следующие признаки:
небольшое число регистров общего назначения;
большое количество машинных команд;
наличие сложных (многотактных) команд, функционально аналогичных операторам языков программирования высокого уровня;
большое количество способов адресации,
большое количество форматов команд различной разрядности;
преобладание двухадресного формата команд;
наличие команд обработки типа регистр-память.
Использование CISC-архитектуры упрощает компиляцию программ и уменьшает размеры исполняемых модулей. Но в архитектуре CISC плохо реализуются новейшие технические решения по повышению быстродействия процессоров. Это использование конвейерной, суперконвейерной и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд.
Стратегия RISC архитектуры формировалась исходя из требований достижения максимальной производительности компьютера. По этой причине главными требованиями архитектуры RISC являлись следующие:
1) любая операция должна выполняться за один такт;
2) система команд должна содержать минимальное количество наиболее часто используемых команд (несколько десятков) одинаковой длины;
3) операции обработки данных реализуются только в формате регистр-регистр. Обмен между регистрами и памятью выполняется только командами загрузки и записи.
В дальнейшем эти требования были несколько смягчены. Выполнение команды за один такт стало трактоваться как загрузка конвейера команд в темпе "команда за такт". Набор команд современных RISC-процессоров возрос и содержит до 150 команд и более.
Незыблемым для архитектуры RISC остается только требование: обработка данных ведется только командами в формате регистр-регистр.
Для архитектуры характерны следующие признаки:
наличие внутри процессора достаточно большого файла регистров общего назначения (32 и более регистров);
использование для обработки информации трехадресных регистровых команд;
команды регистр-память применяются только для загрузки внутренних регистров из памяти и сохранения содержимого регистров общего назначения в памяти,
Использование в программе только простых команд в формате регистр-регистр позволяет увеличить скорость выполнения большинства вычислительных задач в 2-3 раза. В процессе научных исследований было установлено, что в 80% кода программ содержится около 20% простейших команд, а удаление из системы команд сложных операций позволяет уменьшить объём аппаратуры процессора примерно в 10 раз без ощутимого снижения быстродействия. Поэтому в основе современных высокопроизводительных ЭВМ заложена архитектура RISC.



3. Архитектура универсальных процессоров информационных систем

3.1. Архитектура однокристального микропроцессора

Микропроцессор (МП) – это устройство для выполнения программно управляемых арифметических и логических операций, содержащее АЛУ, устройство управления, регистры и шины ввода-вывода информации, изготовленное в виде одной или нескольких больших интегральных схем (кристаллов). Компьютер, выполненный на основе микропроцессора, часто называют микро-ЭВМ.
Основная последовательность операций микро-ЭВМ следующая:
передача адреса очередной команды из МП в оперативную память (память программы);
считывание из памяти и декодирование команды в МП;
выполнение команды в МП;
формирование адреса следующей команды.
Последовательность этих операций называется циклом команды.
МП является основной частью ядром микро-ЭВМ. Его архитектура в значительной степени определяет характерные параметры микро-ЭВМ. Типичная структурная схема МП имеет вид, изображенный на рисунке 3.1. В ее состав входят следующие функциональные узлы.




Рисунок 3.1 – Обобщенная структурная схема однокристального микропроцессора


Аккумулятор – это регистр, в котором содержится операнд, подлежащий обработке в АЛУ. Его можно считать основным рабочим регистром, в котором записываются данные из памяти и результаты операций, заносимых обратно в память или в устройство ввода-вывода. Например, в соответствии с заданной командой в АЛУ подается команда выполнения операции сложения содержимого аккумулятора и другого регистра и записи полученной суммы в Ak.
Счетчик команд (СК). Команды, образующие программу, хранятся в памяти программы в определенной последовательности. В счетчике команды содержится адрес выполняемой в текущий момент команды. Обычно в процессе выполнения команд содержимое СК увеличивается на единицу. Однако в зависимости от вводимых данных либо от результатов выполнения операций может возникнуть необходимость изменения последовательности порядка выполнения команд. Для этого необходим переход к новому адресу команды. С этой целью в СК непосредственно записывается адрес команды, к которой необходим переход. Для того чтобы затем была возможность обратного перехода в последовательности прежде выполнявшихся команд, необходимо запомнить адрес, предшествовавший переходу на новую последовательность команд. Этот адрес сохраняется в регистре стека.
Стек. Стек – это набор регистров или ячеек оперативной памяти, в котором данные или адреса выбираются “сверху” по принципу: “первый – поступивший последним”. При записи в стек очередного слова все ранее записанные слова смещаются на один регистр “вниз”. Например, если идет запись в последовательности A1, A2, A3, A4, то при считывании информация появляется в обратном порядке A4, A3, A2, A1. Т.е. нельзя извлечь раньше A2, чем A3 и т.п. Стек обычно используется в МП для хранения адресов возврата при обращении к подпрограммам, а также для запоминания состояния внутренних регистров при обработке прерываний. Важным параметром является число регистров стека (информационная емкость). При попытке записать в стек большее число слов, чем имеющаяся информационная емкость первое слово будет утеряно. Т.е. происходит переполнение стека. Для указания адреса последнего записанного в стек адреса применяется указатель стека (УС), являющийся специальным регистром.
Регистр команд. Команда, принимаемая МП из памяти, хранится в регистре команд (РК). Длина (формат) команды (т.е. число разрядов) зависит от типа МП. Простые МП имеют 8-разрядный код операции. Таким образом, всего может быть образовано 28=256 различных команд. Для практических целей такое общее число команд более чем достаточно. Несмотря на это, многие МП имеют переменную длину команды, состоящую из одного, двух или трех байтов. С помощью таких команд осуществляется не только идентификация требуемой операции, но и задание кода одного или более адресатов для выбора данных и записи результата.
Дешифратор команд (ДШК) предназначен для определения операции, которую должен выполнить МП. Сигналы, образующиеся на выходах ДШ, управляют передачей информации между отдельными блоками и задают функции, выполняемые этими блоками. Как правило, команды делятся на группы, причем в каждой из групп выполняются аналогичные операции. Эти группы команд, например, “Передача данных”, “Арифметические операции”, “Логические операции” и т.д. различаются по четырем старшим разрядам КОП. Такая группировка значительно упрощает декодирование команд.
Регистры общего назначения (РОН) – сверхоперативная память. Эти регистры применяются в качестве временного запоминающего устройства для различной информации (адресов и данных), которую можно извлечь просто и с большей скоростью, чем из ОЗУ. Поэтому блок памяти РОН называют сверхоперативной памятью. Обращение к РОН – адресное. Эти регистры допускают считывание и запись информации, в связи с чем содержат входную и выходную шины, адресную шину и управляющие входы, информация на которых задает режим работы регистра: запись, чтение или хранение.
Арифметико-логическое устройство – (АЛУ) входит в состав всех процессоров, хотя его принципиальная схема, функции, быстродействие и т.д. могут быть существенно различными. АЛУ, как составная часть МП, должно выполнять по крайней мере следующие операции:
сложение с переносом;
вычитание с переносом (заемом);
сдвиг влево и вправо;
счет в прямом и обратном направлении;
логическое умножение и сложение (И, ИЛИ);
сравнение кодов.
Более сложные АЛУ могут выполнять и другие функции.
Схемы синхронизации и управления – (ССУ) совместно с ДШК называют устройством управления. Устройство управления расшифровывает поступающую команду и в соответствии с ней вырабатывает необходимую последовательность сигналов, управляющих работой всех остальных блоков МП. Следует заметить, что последовательность управляющих сигналов зависит также от характеристик промежуточных состояний (вычислений) и наличия дополнительных сигналов (прерывание, запрос и т.д). В состав микропроцессора входит также регистр состояния, не показанный на схеме. Он состоит из одного или нескольких триггеров, называемых “флажками”. Эти триггеры предназначены для хранения информации о состоянии МП и индикации этого состояния. Например, индикация нулевого содержимого аккумулятора, признак наличия единицы переноса при выполнении арифметических операций, знака содержимого аккумулятора и т.д. Данный регистр состояния обеспечивает возможность интерпретации результатов, полученных при вычислениях, и часто используется для реализации условных переходов.

3.2. Структурная схема 8-разрядного однокристального МП

В качестве примера рассмотрим организацию и особенности функционирования МП типа Intel 8080 (отечественный аналог К580ВМ80) – основного элемента микропроцессорного комплекта серии К580. Структурная схема МП представлена на рисунке 3.3.




Рисунок 3.3 – Структурная схема однокристального микропроцессора Intel 8080


МП содержит шесть 8-разрядных регистров общего назначения РОН (B,C,D,E,H и L) с мультиплексором регистров М, восьмиразрядный аккумулятор A, четыре 8-разрядных буферных регистра БР1, БР2, W и Z, а также 5-разрядный регистр признаков РП. В состав МП входят также регистр команд РК, дешифратор команд ДШК, схема управления машинным циклом СУМЦ, схема десятичной коррекции СДК, схема выборки регистров СВР, программный счетчик ПС, указатель стека УС (в качестве стека используется часть ОЗУ), схема инкрементации-декрементации СИД, устройство управления, а также буферные регистры данных и адреса.
Определяющим для описания любого МП является состав его внешних выводов. МП Intel 8080 размещен в корпусе с 48 выводами, но используются только 40 из них. Внешние выводы имеют следующее назначение:
D0 – D7 - двунаправленная шина данных;
A0 – A15 – шина адреса, допускающая подключение памяти объемом 216 = 16Кбайт;
СИН (SYNC) – выход синхроимпульса, вырабатываемого МП в начале каждого машинного цикла;
СБР (RESET) – “Сброс”, вход установки микропроцессора в начальное (нулевое состояние);
ЧТ (DBIN) – “Чтение”, выход, сигнал на котором обозначает, что МП принимает информацию с шины данных. Используется для отпирания вентильных схем с целью передачи информации на шину данных из памяти или устройств ввода;
ЗП (WR) – “Запись” – выход, сигнал на котором обозначает, что МП выдает информацию на шину данных. Используется для синхронизации записи информации с шины данных в память или ее передачи в устройства вывода. Сигнал имеет инверсное значение;
ГТ (READY) – “Готовность” – вход сигнала готовности от устройства памяти или ввода. Низкий уровень на этом входе после выработки МП сигнала ЧТ указывает на то, что память или устройство ввода не готовы к передаче информации в МП. Микропроцессор в этом случае входит в состояние “Ожидание”;
ОЖ (WAIT) – “Ожидание” – выход, признак нахождения МП в состоянии ожидания;
ЗХВ (HOLD) – вход, сигнал на котором заставляет МП войти в режим ЗАХВАТ, когда адресная шина и шина данных МП переходят в состояние высокого сопротивления. Это позволяет внешнему устройству получить управление обеими шинами, например, для прямого доступа в память;
ПЗХВ (HLDA) – “ПРИЗНАК ЗХВ”, выход, сигнал на котором информирует о нахождении МП в режиме ЗАХВАТ;
ЗАПР (INT) – вход запросов на прерывание;
РПР (INTE) – выход сигнала, указывающего на разрешение прерывания;
Ф1, Ф2 – входы для подачи тактовых сигналов;
+12; +5; -5; КОРПУС – входы для подключения питания.
Функциональные блоки имеют следующее назначение.
1) Матрица РОН и схемы адресации:
а) Матрица регистров представляет собой статическое ОЗУ, состоящее из шести 16-разрядных регистров. Пары регистров B-C; D-E и H-L являются шестью 8-разрядными регистрами сверхоперативной памяти, которые можно использовать как шесть одинарных 8-разрядных регистров или как три пары 16-разрядных регистров. Пара регистров временного хранения W-Z предназначена для внутренних команд и не находится в распоряжении программиста;
б) Программный счетчик (Счетчик команд). 16-разрядный счетчик, предназначен для хранения адреса текущей команды выполняемой программы; после выборки любой команды происходит увеличение хранимого адреса на единицу;
в) Указатель стека. 16-разрядный УС содержит адрес очередного уровня стека в памяти. Содержимое УС уменьшается на единицу при поступлении данных в стек, а при выборки из стека - соответственно увеличивается. УС может использовать любую область памяти ОЗУ, что обеспечивает практически неограниченные возможности вложения подпрограмм;
г) 16-разрядный фиксатор адреса, загружаемый данными любой из трех пар регистров сверхоперативной памяти, обеспечивает прямую адресацию памяти через буферы адреса.
2) АЛУ – служит для выполнения арифметических и логических операций, а также операций циклического сдвига. При реализации операций с АЛУ используется аккумулятор, буферные регистры БР1, БР2 и 4-разрядный регистр признаков (флажков).
3) Регистр команд РК представляет собой 8-разрядный регистр, предназначенный для передачи данных от внутренней шины к ДШК и схемам управления. Выходные сигналы ДШК и сигналы управления от внешних устройств подаются на устройство управления и синхронизации.
4) Устройство управления и синхронизации принимает из ДШК и СУМЦ информацию о поступившей команде (из памяти) и в соответствии с сигналами на управляющих входах ЗАХВ, ЗАПР и ГТ обеспечивает ее выполнение выработкой необходимых управляющих сигналов Yi для всех блоков МП. Устройство управления и синхронизации вырабатывает также сигналы для управления памятью и устройствами ввода-вывода.


3.3. Функционирование и временные диаграммы микропроцессора

Формат команды МП580ВМ80 содержит от одного до трех байт. Время, затрачиваемое на извлечение 1 байта информации или выполнение команды, определяемой одним машинным словом, называют машинным циклом (М). Каждая команда требует для выборки и выполнения от одного до пяти машинных циклов. Машинные циклы именуются M1, M2, M3, M4, M5.
Выполнение каждой команды в МП происходит в строгой последовательности, определяемой кодом команды, и синхронизируется сигналами Ф1 и Ф2 тактового генератора. Период синхросигналов Ф1 или Ф2 называется машинным тактом (Т). Любой машинный цикл включает от трех до пяти тактов: T1, T2, T3, T4, T5. Каждый такт длится в течение одного периода синхросигнала (длительность такта при частоте 2 МГц = 0,5 мкс). Имеется три состояния, которые могут длиться неограниченное число тактов: WAIT (Ожидание), HOLD (Захват), HALT (Останов).
Время выполнения команды определяется процессом получения, декодирования и ее выполнения. В зависимости от вида команды это время может состоять от 1 до 5 М. Для микропроцессора 580ВМ80 существует десять различных типов циклов:
М1 – извлечение кода команды;
М2 – чтение данных из памяти;
М3 – запись данных в память;
М4 – извлечение из стека;
М5 – запись данных в стек;
М6 – ввод данных из внешних устройств;
М7 – запись данных во внешние устройства;
М8 – цикл обслуживания прерывания;
М9 – останов;
М10 – обслуживание прерывания при работе МП в режиме “Останов”.
Цикл М1 – это всегда цикл выборки команды, он длится от 4 до 5 тактов. Циклы М2, М3, М4, М5 обычно состоит из 3-х тактов каждый. На рисунке 2.4. показаны временные диаграммы функционирования МП.
В течение такта Т1 содержимое программного счетчика ПС выдается на адресную шину, а на выходах СИН вырабатывается высокий потенциал. На шину данных подается 8-разрядный код, характеризующий выполняемый цикл. На первом такте каждого машинного цикла МП указывает тип выполняемого цикла с помощью 8-разрядного слова состояния цикла, выдаваемого на шины данных. Слово состояния выдается на шины данных лишь во время импульса СИНХР (такты Т1 и Т2), а используется на протяжении всего машинного цикла. Поэтому его необходимо записывать в специальный регистр слова состояния РгСС. Запись его осуществляется в момент совпадения сигналов СИНХР и Ф1 на втором такте (рисунок 2.3).

13 EMBED PBrush 1415



Рисунок 3.3 – Временные диаграммы функционирования процессора i8080


Слово состояния в последующем используется для формирования сигналов раздельного обращения к памяти и внешним устройствам, так как в процессоре такие сигналы отсутствуют (например, Чт (Прием) относится как к памяти, так и к внешним устройствам).
За Т1 всегда следует такт Т2, в течение которого проверяется наличие сигналов подтверждения ГТ и ЗАХВАТ, а также проверяется не находится ли МП в состоянии останова HALT. Если на входе READY имеется сигнал готовности (высокий уровень), то МП переходит к такту Т3, в противном случае – в состояние ОЖИДАНИЕ (такт Тw) и находится в нем до тех пор, пока не появится сигнал готовности. Таким образом, сигнал ГОТ позволяет синхронизировать МП с памятью с любым временем доступа или с любым внешним устройством. Более того, сигнал ГОТ позволяет осуществить пошаговое выполнение программы.
Во время Т2 слово состояния цикла (PSWC) записывается в регистр состояния. Передним фронтом Ф2 заканчивается формирование сигнала СИН, и вырабатывается единичный сигнал Прием, позволяющий поступить байту на вход МП через ШФ. В этом же такте Т2 из сигнала Прием и D7 PSWC формируется сигнал Чт Память, позволяющий поступать данным из памяти на ШД микропроцессора. Изменения данных в этом такте восприниматься не будут так как их запись в МП осуществляется в фиксированные моменты времени в такте Т3.
В такте Т3 во время заднего фронта Ф1 производится запись кода команды во внутренний регистр кода команды. Положительным фронтом Ф2 оканчивается сигнал ПРИЕМ на выходе МП и сигнал ЧТ Память. Импульс на выходе Прием формируется в машинных циклах: чтение команды, ЧТ данных из памяти, прерывания, чтение из стека или внешнего устройства.
На основании декодирования команды ДШК схема управления формируют сигналы управления и синхронизации для внутренних пересылок данных, а также соответствующие дешифрируемой команде машинные циклы.
На последующих тактах Т4 и Т5 ДШК расшифровывает код команды, определяет количество байтов в команде, формирует команды на внутренние пересылки данных и подготавливает МП к выполнению следующих машинных циклов.
В конце последнего машинного цикла выполнения каждой команды анализируется наличие запроса прерывания на входе ЗПР. Если запрос присутствует и прерывания разрешены (команда EI), то МП входит в специальный цикл М1, во время которого содержимое ПС не изменяется, формируется признак начала обработки прерывания INTA, а прерывающее устройство посылает в МП код команды RST с адресом прерывающей программы.
Самые простые команды, не требующие обращения к памяти, выполняются в течении одного машинного цикла за четыре такта, т.е. за 2 мкс, самые длинные – на протяжении 5 машинных циклов – за 18 тактов, т.е. 9 мкс.
Выборка команд длиной 2 и 3 байта производится соответственно за два или три машинных цикла, при этом первый байт команды заносится в регистр команд РК, второй в программно недоступный регистр W , а третий – в регистр Z.



3.4. Слово состояния цикла процессора и его использование

В начале каждого машинного цикла на шину данных выдается байт состояния (в течение действия сигнала СИН). Назначение каждого разряда слова состояния Di следующее:

INTA
- D0
- Cигнал подтверждения прерывания. Используется для синхронизации передачи в МП из прерывающего устройства адреса прерывающей программы;

WO
- D1
- Признак того, что в данном машинном цикле будет выполняться запись в память или вывод информации (WO=0). В противном случае будет выполняться ввод или чтение из памяти;

STACK
- D2
- Указывает, что адресная шина содержит адрес одной из ячеек зоны ОЗУ, используемой в качестве стека;

HLTA
- D3
- Подтверждение выполнения процессором операции останова (HALT);

OUT
- D4
- Указывает, что на адресной шине, содержится адрес устройства вывода, на шинах данных – выводимая информация;

М1
- D5
- Признак машинного цикла выборки первого байта команды


INP
- D6
- Указывает, что на адресной шине находится адрес устройства ввода, а ввод будет производится на шину данных по сигналу Прием на выводе DBIN;

MEMR
- D7
- Признак того, что в данном машинном цикле будет выполняться чтение из памяти.


Как видно из схемы восьмиразрядного микропроцессора, у него нет раздельных сигналов чтение/запись памяти и чтение/запись устройств ввода/вывода, а лишь общий сигнал Чтение /Запись. Для формирования таких сигналов и используется информация о слове состояния цикла МП (рисунок 3.5).


13 EMBED PBrush 1415


Рисунок 3.5 – Схема компьютера на основе 8-разрядного микропроцессора




3.5. Система команд 8-разрядного микропроцессора

Команды восьмиразрядного процессора можно классифицировать по нескольким признакам. По виду выполняемых операций все команды МП можно разделить на следующие группы:
Передачи данных; 5) Регистровых операций;
Арифметических операций; 6) Передачи управления;
3) Логических операций 7) Работа со стеком;
4) Сдвига; 8) Ввода/вывода;
9) Управление процессором.
Эти команды занимают в памяти 1 байт, а при использовании непосредственного операнда - 2 байта. Команды можно классифицировать в соответствии с адресом, содержащимся в команде на следующие:
Команды обращения к памяти. Операция, указанная в команде, относится к содержимому, хранящемуся в памяти ЗУ по определенному адресу, т.е. команда задает адреса ячейки памяти ЗУ. Например, команда ADD 200 означает: выбрать число в качестве второго операнда для сложения с числом, хранимым в аккумуляторе и являющимся первым операндом.
Команды обращения к регистру. Для выполняемой операции не требуется адресация оперативной памяти. Операция выполняется, как правило, над одним операндом, хранящимся в аккумуляторе. Например, CLEAR (Очистить) - означает обнулить аккумулятор.
Команды обращения к устройствам ввода-вывода. Эти команды обеспечивают передачу данных между МП и периферийным оборудованием.
Кроме этого команды классифицируют на группы по типу операций, которые должны выполняться.
Команды передачи данных.
С помощью таких команд можно осуществить передачу данных от одного из регистров А, В, С, D, E, H и L к одному из регистров А, В, С, D, E, H и L. Кроме того, можно выбрать ячейку памяти М (1байт) микропроцессора, адресуясь к ней, как к одному из регистров. При этом для адресации памяти используется содержимое регистровой пары HL.
Есть еще одна возможность задать содержимое регистров: загрузить непосредственный операнд в выбранный регистр. Эти команды, однако, не позволяют выполнять запоминание в обратном направлении (не существует команд, по которым содержимое регистра могло бы быть помещено в поле операндов команды).
Формат команд:

(Метка:) MOV r1, r2 ; Комментарий
r1 = A,B,C,D,E,H,L,M
r2 = A,B,C,D,E,H,L,M.

Move data –
передать данные

При этом r1 определяет регистр или ячейку памяти, в которую производится запись, а r2 – регистр или ячейку памяти, из которых извлекается число или непосредственный операнд.
Если r1=r2 то команда является пустой. Вместо этой команды можно использовать команду NOP. Пустая команда ни при каких обстоятельствах не изменяет содержимого регистров, памяти и состояния МП.

(Метка:) MVI r,число ; Комментари)
r = A,B,C,D,E,H,L,M
Move immediate data -
Передать непосредственный операнд.

По этой команде число, расположенное в поле операндов, заносится в регистр r.

Примеры:
M1: MOV A,B; (
M2: MOV M,A;
( или (<>
MOV B,M; ( или <>(< B >.
MVI M, 12Q; 12Q( или 12Q( <>.
Q – обозначает, что число в восьмеричной системе.

Пример: Передать содержимое ячейки 9В 73Н в регистр А; содержимое регистров Н и L не определено.
Выполнение:
MVI Н,9ВН ; <9B>( H
MVI L,73Н ; <73>(L
MОV А, М ; Выборка из памяти .

Команды регистровых операций
Команды регистровых операций занимают в памяти один байт. Они используются для того, чтобы содержимое того или иного регистра увеличить или уменьшить на единицу. Это относится к регистрам:
r = B, C, D, E, H, L.
Данные команды изменяют Z-, P- и S–биты состояния, хотя регистр А не участвует в операциях. Благодаря этому можно использовать названные регистры для организации программных циклов. Формат команд имеет следующий вид:

(Метка:) INR r ; Увеличить содержимое регистра на единицу (Increment register)
Пример:
INR C ; + 1 (
DCR r ; Уменьшить содержимое регистра на 1 (Decrement register)
Для загрузки аккумулятора А содержимым ячейки памяти используются команды LDAX B и LDAX D.
LDAX B ; Загрузить Акк. Содержимым ячейки памяти, адрес
; которой находится в регистровой паре В,С (Load Akkumulator)

LDAX D ; <> ( A. Обе эти команды однобайтные.
Команда LDA адрес загружает в Акк. Содержимое ячейки памяти, адресуемой вторым и третьим байтами команды.
[ ] ( A.
Команда запоминания STA адрес производит противоположную передачу:
A ( [ ] .

Команды работы со стеком.
PUSH rp (rp = B, C; D, E; H, L, PSW) -Запоминание значения регистров в стеке. При выполнении команды содержимое пары регистров запоминается в стеке. Одной из пар регистров является слово состояния процессора PSW, которое состоит из содержимого аккумулятора (старший байт) и регистра состояния (младший байт). Нет такой команды, при выполнении которой запомнится в стеке только один регистр.
Пример:
PUSH B. При выполнении этой команды , запоминается в вершине стека, а указатель стека уменьшается на 2. запоминается первым, потом заканчивает стек в его вершине.
POP rp (rp = B, C; D, E; H, L, PSW)- Загрузка регистров из стека. По этой команде пара регистров rp загружается содержимым вершины стека.
Пример: POP D. Эта команда загружает регистры D и E из вершины стека и увеличивает указатель стека на 2. Регистр Е загружается первым.
Стек имеет следующие особенности:
указатель стека содержит адрес ячейки, которая была занята самой последней (младший занятый адрес). Стек может быть расположен в любом месте памяти;
данные запоминаются в стеке с использованием предуменьшения, то есть команды уменьшают указатель стека на 1 перед запоминанием каждого байта;
данные загружаются из стека с использованием послеувеличения, то есть команды увеличивают указатель стека 1 после загрузки каждого байта;
отсутствуют указатели выхода за границы стека в ту или иную сторону, что типично для микропроцессоров всех типов.
SPHL - Загрузка указателя стека (sp) – однобайтная команда.
( < +1>; ( <>.

PCHL - Загрузка программного счетчика PC .
( .


3.6. Программирование арифметических и логических операций.

С помощью одного байта можно представить 256 различных чисел. Старший разряд байта интерпретируется как знаковый (0 – положительное, 1 – отрицательное число). Все остальные биты используются для представления численного значения. Таким образом, в одном байте может быть представлены числа в диапазоне от –127 до 127.
Для представления отрицательных чисел используется дополнительный код.
Дополнительный код А*=> 13 EMBED Equation.3 1415.
Например, двоичный код числа А=-10: А=0000 1010
13 EMBED Equation.3 1415 А*=1111 0101+0000 0001=1111 0110
( знаковый бит.
Как при сложении, так и при вычитании операнды в пределах от 0 до 255 интерпретируются как положительные восьмиразрядные числа. При вычитании вычитаемое преобразуется в его дополнительный код и затем суммируется с уменьшаемым. Если суммирование приводит к результату большему 255 (переполнение), то С–бит становится равным единице, в противном случае С=0.
Процессор имеет возможность выполнять операции сложения и вычитания чисел от –127 до +127 т.о., что результат имеет правильный знак. Для представления знака результата арифметической операции используется бит состояния S. Он устанавливается в единицу, если старший бит регистра А[7]=1. В противном случае он сбрасывается.
Примеры арифметических операций 8-разрядных чисел.

Сложение: [+] [0] вычитание: [7] [0]
10 0000 1010 -10 0000 1010
8 0000 1000 8 0000 1000
18 0001 0010 2 0001 0010
=0 =0 =0 =0

+10 0000 1010 -10 0000 1010
(-12) 1111 0100 12 1111 0100
-2 0 1111 1110 -2 1111 1110

=0 =1 =1 =1

Команды логических операций.
В состав команд входят команды выполнения операций И, ИЛИ, исключающее ИЛИ (сумма по модулю 2), а также операция сравнения.
Список команд МП:
ANA r (M)
and (
XRA r (M)
xor (
ORA r (M)
or (
CMP r (M) если
( , то = 1
если
= , то = 1
если
( , то = 0
Аналогично с командами арифметических операций, существуют команды логических операций, когда вместо r задается число.
ANI число;
XRI число;
ORI число;
CPI число;
При выполнении команд сравнения содержимое аккумулятора сравнивается либо с содержимым регистра (CMP r), либо со значением числа (CPI число). При этом содержимое аккумулятора не изменяется. Биты состояния устанавливаются в зависимости от результата вычитания операнда из содержимого аккумулятора.
Команда исключающего ИЛИ XRA r: (A)((r)(A
производит поразрядное сложение операндов по mod 2. Команда XRA применяется для инвертирования определенных битов слова с помощью слова-маски на основе тождества
1 ( x =(x .
Другое применение XRA связано со сравнением слов на абсолютное равенство. В единственном случае, когда операнды поразрядно совпадают, результат операции содержит нули во всех разрядах (согласно тождеству X ( X = 0), о чем сигнализирует флажок (бит состояние) Z=1.
Команды арифметических операций.
Эти команды, в зависимости от типа применяемого операнда занимают в памяти 1, 2 или 3 байта. По командам арифметических операций содержимое одного из регистров B, C D, E, H, L или содержимое ячейки памяти М (адресуемой регистровой парой Н) или непосредственный операнд команды прибавляется (вычитается) к (из) содержимому регистра А, причем в операции может быть учтено значение С-бита. Значения битов состояния (C, S, Z, P) устанавливаются в зависимости от результата выполнения операции: С - переполнение; S - знак результата (минус S=1); Р=1 – четное число единиц в аккумуляторе.
Примеры команд:
ADD r ; Сложить содержимое регистра (ячейки памяти) и аккумулятора
ADD M ;
ADC r (M) ; Сложить содержимое регистра (ячейки памяти) и аккумулятора
; с учетом бита переноса
SUB r (M)
SBB r (M)
ADI число ; Сложить непосредственный операнд и аккумулятор
ACI число

Аналогичные команды для вычитания SUI и SBI .

DAD rp - сложить содержимое регистровой пары rp (B или D) и аккумулятора, в роли которого выступает регистровая пара H,L.
Команды сдвига.
Команды данной группы требуют 1 байт памяти. По этим командам содержимое аккумулятора сдвигается влево или вправо на один разряд. В этой операции принимает и С-бит. Значение С-бита может в результате выполнения команды изменяться, а значения остальных флагов остается неизменным. Формат команды имеет вид:
(Метка:) RLC ; Сдвинуть циклически содержимое аккумулятора влево
; Rotate accumulator left
RRC ; Сдвинуть циклически содержимое аккумулятора вправо
RAL ; Сдвинуть циклически содержимое аккумулятора влево
; через бит переноса
RAR ; Сдвинуть циклически содержимое аккумулятора вправо
; через бит переноса

Если обозначить разряды в А от A[0] до A[7], то выполняемую операцию можно описать следующим образом:
RLC: A[7] ( < Cб >; A[m] ( A[m+1], m = 0,...,6; A[7] ( A[0] .
RAL: A[7] ( < Cб >; A[m] ( A[m+1], m = 0,...,6; Cб ( A[0] .

Схематично четыре операции сдвига можно изобразить следующим образом (рис.3.8).
Команды передачи управления.
Эти команды часто называют командами перехода. Позволяют выполнять различные действия в соответствии со значением внешних сигналов или выработанных в процессе выполнения операций условий. Все типы команды делятся на команды безусловного и условного перехода. К безусловным командам относятся:
JUMP адрес

; Обеспечивается переход в программе по адресу,
; указанному в команде. При выполнении этой команды
; адрес перехода загружается в программный счетчик РС,
; причем текущее значение РС теряется.


SKIP

CALL имя

RET №
; Пропускается следующая команда программы
; Команда вызова подпрограммы. Осуществляется переход к
; подпрограмме с указанным именем
; Возврат из подпрограммы
; Осуществляется повторный запуск с адреса: 8 ( №


При выполнении команды вызова CALL временно запоминается текущее содержимое программного счетчика (т.е. адрес команды, следующий за командой CALL и называемый адресом возврата), и загружается адрес перехода команды CALL в РС, а после выполнения программы адрес возврата передается в РС. Последняя функция реализуется специальной однобайтной командой RET. Для запоминания адресов возврата используется стековая память.

Рисунок 3.8 – Схема осуществления команд сдвига в аккумуляторе

Имеется группа команд условного перехода, выполняемых в зависимости от значения одного из четырех флагов состояния (C, Z, S, P). Если условие перехода выполнено, то осуществляется переход по адресу, указанному в команде. В противном случае выполняется следующая команда. Группу команд условного перехода образуют 8 команд.

Метка:
JC
Адрес
; Перейти, если С бит = 1
Jump if carry


JNC
Адрес
; Перейти, если С бит = 0
Jump if no carry


JZ
Адрес
; Перейти, если Z бит = 1
Jump if zero


JNZ
Адрес
; Перейти, если Z бит = 0
Jump if not zero


JP
Адрес
; Перейти, если S бит = 0
Jump if positive


JM
Адрес
; Перейти, если S бит = 1
Jump if minus


JPE
Адрес
; Перейти, если P бит = 1
Jump if parity even


JPO
Адрес
; Перейти, если P бит = 0
Jump if parity odd



3.7. Программирование операций ввода/вывода данных

Имеется две команды: IN и OUT . Эти команды используются для того, чтобы передать (считать) байт данных из канала (порта) ввода в аккумулятор, или для того, чтобы содержимое Akk передать (записать) в выбранный канал (порт) вывода. Номера порта при этом задаются операндом. Команды ввода/вывода не влияют на биты состояния.

Формат команды:
(Метка:) IN канал ; Комментарий
Пример 1: m1: IN 6 ; считать один байт из 6-го порта
m2: OUT 29 ; передать 1 байт из Akk в 29-й порт

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

Пример 2. Анализировать постоянно состояние порта 34h. Если на введенное число отличное от нуля, то вывести на индикатор, подключенный к порту 27h число, содержащееся в ячейке памяти с адресом 800h, увеличенное на 25.
m1: IN 34h ; Прочитать число с порта 34h
ANI FFh ; Произвести установку флагов
JZ m1 ; Если 0, то продолжать ввод с порта
LDA 0800h ; Загрузить в аккумулятор содержимое ячейки памяти
ADI 25 ; Увеличить число на 25
OUT 27h ; Выдать данные на индикатор
4. Функциональные узлы информационных систем

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


4.1. Шинные формирователи буферные регистры

Шинные формирователи (ШФ) предназначены для параллельной двунаправленной передачи сигналов по шинам в цифровых управляющих и вычислительных устройствах и усиления их по мощности. Они представляют собой n-канальные коммутаторы-усилители, имеющие в каждом канале шину для приема, шину для выдачи и двунаправленную шину для приема и выдачи информации.
Рассмотрим в качестве примера ШФ, входящие в состав МП комплекта серии К589. В комплект входит шинный формирователь с прямым значением выходного кода: ШФ К589АП16 и с инверсией: ШФИ К589АП26. Оба формирователя имеют по 4 канала. Условное обозначение ШФ и ШФИ показано на рисунках 4.1а и б соответственно.

13 EMBED PBrush 1415



а)
б)

Рисунок 4.1. - Шинные формирователи с прямым а) и инверсным б) выходами


Здесь: DI 0-3 – входы информации; DCE - входы управления выдачей информацией; CS - выбор микросхемы (кристалла); DO 0 - DO 3 – выходы информации; DB 0 – DB 3 - входы-выходы двунаправленной передачи. Функциональная схема шинного формирователя показана на рисунке 3.2. Основным элементом схемы является вентиль с тремя устойчивыми состояниями (. Для управления режимом работы и направлением передачи информации в ШФ и ШФИ предусмотрена схема управления на двух логических элементах И.
При сигналах DCE=0 и CS=0 ( Передача с DI на DB
DCE=0 и CS=1 ( На выходах ШФ третье состояние (закрыты)
DCE=1 и CS=0 ( Передача с DB на DO
DCE=1 и CS=1 ( ШФ закрыты.
Функциональная схема ШФИ отличается тем, что элементы Z выполнены с инверсией.
На рисунке 4.3 изображена схема шинного формирователя, используемого в микропроцессорном комплекте серии К580. Здесь A0-A7 входы/выходы линий данных, при Т=1 (входные) а при Т=0 (выходные); В0-В7 входы/выходы линий данных, при Т=0 (входные), а при Т=1 (выходные); Т - входной сигнал управления направлением передачи, при Т=0 (ВА), при Т=1 (АВ); OE - сигнал разрешения передачи, при ОЕ=0 снимается Z-состояние с выхода усилителя-формирователя, выбранного по входу Т.



13 EMBED PBrush 1415



Рисунок 4.2 – Функциональная схема
шинного формирователя
Рисунок 4.3 – Шинный формирователь
типа К580ВА86

Основное достоинство ШФ этого типа: большой выходной ток при малом входном и отсутствие выбросов на выходах при переключениях. В интегральной микросхеме ВА87 выводы В0-В7 инвертирующие.
В микро-ЭВМ, построенных на основе микропроцессоров, широко используются буферные регистры типа КР580ИР82 и ИР83. Они применяются для организации буферов (промежуточных усилителей) и портов ввода-вывода.




Рисунок 4. 4 – Схема буферного регистра и его внутренняя структура


Буферные регистры КР580ИР82 и 83, благодаря малому входному и большому выходному току, позволяют использовать эти элементы в качестве промежуточных буферов либо шинных формирователей. Для использования ИР82 в качестве шинного формирователя необходимо цепь STB подключить к шине питания +5 В через резистор 1 кОм. Буферные регистры (рисунок 4.4) состоят из восьми информационных D-триггеров (Т) с выходными ключами (SW) с тремя состояниями, общим сигналом записи информации – стробом записи (STB) и сигналом управления выходами ОЕ. В ИР82 выходные ключи подсоединены к прямым выходам триггеров, а в ИР83 – к инверсным. Повторители сигналов в цепях STB и OE служат для снижения нагрузки на шину процессора.



4.2. Программируемый параллельный интерфейс

В персональных компьютерах в качестве интерфейсных схем с побайтным вводом/выводом информации широко применяется микросхема типа КР580ВВ55, которая является универсальной программно-управляемой БИС. С помощью этой схемы возможна организация обмена в параллельном формате практически с любым периферийным оборудованием. БИС размещена в пластмассовом корпусе с 40 выводами. Потребляет мощность 350 мВт напряжением +5В. БИС может быть использована для организации синхронного и асинхронного обмена, а также обмена в режиме прерывания программы.
Функциональная схема БИС показана на рисунке 4.5. В состав БИС входят три 8-разрядных канала (буферных регистра) А, В, С и схема управления с регистром управляющего слова. Соединение ВВ55 с шиной данных МП осуществляется через двунаправленную шину ШД0-ШД7.
Запись информации от периферийных источников осуществляется по команде Чт сигналом низкого уровня. По этой команде шины одного из каналов соединяются с шинами ШД. Номер канала зависит от кода на выводах А0, А1.
По команде запись наличие сигнала низкого уровня на выводе ЗП – происходит запись байта данных в БИС от МП.
Вывод ВМ используется для управления микросхемой, то есть нулевой потенциал на ВМ разрешает работу БИС. При отсутствии сигнала выводы ШД[0-7] находятся в состоянии высокого импеданса. Для установки всех регистров БИС в нулевое состояние единичный импульс подается на вывод СБР – “Сброс”.
Перед началом работы программным способом путем подачи на БИС специальных команд инициализации устанавливаются режимы работы каждого из каналов. В таблице 3.1 показана зависимость вида и направления передачи информации от управляющих сигналов.
Обращение МП к каналам ввода/вывода осуществляется командами IN (ввод) и OUT (вывод). Возможно построение МП-систем, в которых обращение к каналам производится как к ячейкам памяти. В этом случае два младших разряда адреса А0, А1 подаются на интерфейсную БИС непосредственно и адресуют регистры каналов А, В, С или регистр управляющего слова. Остальные разряды А2 – А15 поступают на внешний дешифратор, который формирует сигнал ВМ и включает нужную БИС ВВ55 микропроцессорной системы. То есть адрес внешнего устройства состоит из номера БИС и номера канала в интерфейсной БИС.
В процессе работы при необходимости изменения структуры ввода-вывода в управляющий регистр рассматриваемой БИС программным способом заносится соответствующее управляющее слово. Содержание этого слова задает один из трех возможных режимов работы каналов ввода-вывода: основного (режим 0), стробируемого однонаправленного (режим 1), стробируемого двунаправленного (режим 2). Пример задания режимов с помощью управляющего слова показан на рисунке 4.6.
Таблица 4.1- Таблица управляющих сигналов БИС КР580ВВ55

Сигналы на входах
Вид
передаваемой информации
Направление
передачи
информации

А0
A1
ЗП
ЧТ
ВМ



0
1
0
0
1
0
1

х
0
0
1
0
0
1
1

х
1
1
1
0
0
0
0

х
0
0
0
1
1
1
1

х

0
0
0
0
0
0
0

1
Данные
Данные
Данные
Данные
Данные
Данные
Управляющее слово

АШД[0-7]
ВШД[0-7]
СШД[0-7]
ШД[0-7] А
ШД[0-7] В
ШД[0-7] С
ШД[0-7]регистр управляющего слова
Нет передачи


Режимы работы каналов А и В могут быть заданы независимо друг от друга. Канал С делится на две части С [0-3] и С [4-7], режимы работы которых определяются собственно режимами работы каналов А и В, если последние работают в режиме 1 или 2. Если же каналы А и В работают в режиме 0, то каждая половина канала С может работать как отдельный канал в режиме 0. Режим 0 позволяет организовать синхронный обмен информацией между МП и внешними устройствами.
Режим 1 обеспечивает возможность организации однонаправленной асинхронной передачи информации между МП и внешними устройствами, при этом каналы А и В используются как регистры данных, а канал С – для приема и формирования сигналов, сопровождающих асинхронный обмен (в качестве устройства, осуществляющего анализ готовности внешних устройств и МП к обмену и стробирование данных в регистры каналов А и В). Для этого в состав канала С входят два триггера разрешения готовности, допускающие установку и сброс программным способом, а также ряд логических схем для асинхронной записи информации в регистры А и В.
Особенностью канала С является то, что каждый из разрядов этого канала может быть независимо от остальных установлен в 1 или в 0. Это позволяет использовать канал С для хранения управляющего слова (состояния внешнего устройства) при организации программно-управляемого обмена.
Фрагмент процедуры программирования БИС КР580ВВ55 на языке ассемблера и в машинных кодах имеет вид:

Мнемоника команд
Машинный код команд
Комментарии

XRA
AF
; очистка аккумулятора

MVI A, 80
3E 80
; запись управляющего слова

OUT 9B
D3 9B
; в порт 9В

XRA
AF


LDA 0840
3A 40 08
; занесение числа из памяти с
; адресом 0840 в аккумулятор

OUT 98
D3 98
; вывод числа из аккумулятора
; в порт 98


Рассмотрим реализацию процедуры асинхронного обмена между МП и внешним устройством с помощью БИС 580ВВ55, работающей в режиме 1 (стробируемый однонаправленный). Пусть производится ввод информации через канал А. В момент готовности внешнего устройства к вводу информации в МП оно формирует сигнал СТР1 (стробирование) низкого уровня. Временная диаграмма этой процедуры изображена на рисунке 4.7.
По переднему фронту этого сигнала осуществляется запись слова данных в канал А. При этом БИС ВВ55 формирует ответный единичный сигнал ППР1 (подтверждение приема). В течение всего времени наличия единицы на выводе ППР1 внешнему устройству запрещается формировать сигнал СТР1 и записывать в канал новое слово данных. По заднему фронту сигнала СТР1 при наличии единицы ППР1 (и единичном состоянии внутреннего триггера ТГТ1) с интерфейса посылается сигнал запроса на прерывание МП – сигнал ГТВ1 (готовность). Получив этот сигнал МП, переходит на соответствующую подпрограмму обслуживания прерываний, в процессе которой осуществляется чтение слова данных из канала А. Для считывания информации с ВВ55 на неё с МП подается импульс ЧТ нулевого уровня. По переднему фронту этого сигнала слово из регистра А передается на шины данных МП. Задним фронтом сигнала ЧТ сбрасывается сигнал ППР1, что свидетельствует об окончании ввода данных в МП и внешнему устройству разрешается формировать новый сигнал СТР1.



4.3. Программируемый последовательный интерфейс

В компьютерах при выдаче данных в последовательный интерфейс (COM-порт) и в ряде других узлов применяется программируемый последовательный интерфейс, который реализован в виде большой интегральной микросхемы (БИС) КР580ВВ51 (зарубежные аналоги МC8250, NS16450). Эта БИС представляет собой универсальное программируемое устройство преобразования и передачи данных и обмена информацией в последовательном формате (универсальный синхронно-асинхронный приемопередатчик УСАПП) между микропроцессором и периферийными устройствами. Универсальность БИС заключается в возможности программного изменения форматов передаваемых слов, режима и скорости передачи. Микросхема размещается в пластмассовом корпусе с 48 выводами и потребляет 400 МВт при напряжении питания + 5 В.
Для организации передачи данных в последовательном формате необходимы как минимум две БИС КР580ВВ51 (передающая и приемная). БИС может работать как в режиме передачи, так и приема. Режимы работы интерфейса задаются либо микропроцессором, либо внешним устройством, к шинам данных которого подключена микросхема. Режим задается программно перед началом работы схемы. Функциональное обозначение микросхемы КР580ВВ51 на схемах показано на рисунке 4.9а.

13 EMBED PBrush 1415



а)
б)

Рисунок 4.9 – Программируемый последовательный интерфейс


Выводы микросхемы имеют следующее назначение:
D0-D7 – шина данных; RST-сброс; WR-запись; RD-чтение; CS-выбор микросхемы; C/D – управление/данные; RxD – вход приемника; DSR – готовность передатчика терминала (готовность данных Data Set Ready); CTS – готовность приемника терминала (сброс для передачи Clean To Send); TxC – синхронизация передатчика; RxC – синхронизация приемника; SYNDET – вид синхронизации; высокий уровень - признак внутренней синхронизации; для синхронной передачи с внешней синхронизации этот вывод входной, для асинхронной – выходной. TxD – передаваемые данные; RTS – запрос приемника терминала (запрос передачи Request to Send); DTR – запрос передатчика терминала (Data Terminal Raedy).
Устройство может функционировать в асинхронном и синхронном режимах. В асинхронном режиме используется стартстопный метод передачи. Каждое передаваемое слово передатчик дополняет стартовыми (нулевым) и стоповым (единичным) битами, которые используются для синхронизации запуска работы приемника.
В синхронном режиме данные передаются не по одному слову, а целыми массивами. Для синхронизации используется одно или два служебных слова - символы синхронизации. В синхронном режиме передатчик работает непрерывно. При отсутствии данных в линию передаются символы синхронизации.
Один передатчик может работать на несколько приемников. Адресация того или иного приемника осуществляется символами синхронизации. При асинхронном режиме скорость передачи до 19,2 Кбит/с, при синхронном до 115 Кбит/с. Длина символов может изменяться программно от 5 до 8 битов. При длине символа менее восьми бит неиспользуемые биты дополняются нулями. Информация может подаваться с контролем по чет/нечет или без него.
Функционально БИС состоит из блоков приема (БПм, БУПм) и передачи (БПд, БУПд) информации в последовательном коде, буфера данных (БД), блока управления записью-чтением (БУЗЧ) и блока управления модемом (БУМД), соединенных внутренней шиной (рисунок 3.9б). Буферы данных соединяются с микропроцессором через восьмиразрядную двунаправленную шину данных D [0-7]. При наличии единицы на входе CS эти линии находятся в состоянии высокого импеданса. В состав буфера данных входят входной и выходной регистры данных, а также регистр состояния.
Блок передачи обеспечивает преобразование параллельного восьмиразрядного кода в последовательный, добавление бита контроля чет/нечет, и, в случае необходимости, генерацию стартового и стопового битов. Выдача информации в последовательном коде происходит по линии TxD путем сдвига данных в регистре передачи БПд под действием синхроимпульсов выдачи TxC. Принимаемые последовательные данные поступают на вход RxD и синхронизируются импульсами синхронизации, подаваемые на вход RxC. Адресация регистров последовательного интерфейса осуществляется путем соединения вывода C/D с выводом А0.
Для программирования БИС необходимо загрузить несколько управляющих слов, определяющих скорость передачи, длину символа, число стоповых бит, режим работы и условия контроля (чет или нечет). Кроме того, для синхронизации режима требуется определить внешнюю или внутреннюю синхронизацию, а также символ (или два символа) синхронизации.
После программирования интерфейс готов выполнять свои функции. На выводе TxRDY формируется высокий уровень, сигнализирующий о готовности передатчика принять от микропроцессора символ для передачи.
Управляющие слова, определяющие функциональную конфигурацию адаптера, должны загружаться сразу же после операции сброса. Управляющее слово имеет два формата: слово режима и слово приказа. Слово режима задает общие характеристики интерфейса и обязательно загружается первым, так как оно необходимо для управления коммутацией схем устройства. После слова режима загружаются один или два символа SYN, если был определен синхронный режим. SYN2 пропускается, если БИС программируется для работы с одним символом синхронизации. Если же в слове режима определен асинхронный режим, то пропускаются оба символа SYN.
Последним в интерфейс загружается слово приказа, определяющее его конкретное действие в соответствии со словом режима. Для правильной работы интерфейса управляющие слова должны следовать в определенном порядке. Слово режима записывается в адаптер сразу же после сброса устройства, который осуществляется сигналом установки (Reset) или специальным битом в слове приказа. Слово приказа подается за словом режима или после символа синхронизации. Загрузка всех управляющих слов производится командами OUT при следующих значениях управляющих сигналов: C/D = 1; CS = 0; RD = 1; WR = 0.
Слово режима имеет четыре двухбитовых поля и загружается во внутренний регистр режима РГРЖ. Первое поле D0 и D1 определяет синхронный или асинхронный режим работы, а в асинхронном режиме содержит множитель 1, 16 или 64, соответствующий коэффициенту деления частоты синхронизации.
Второе поле D2 и D3 задает число бит в коде символа. Третье поле D5 D4 управляет формированием бита паритета. Четвертое поле D7 D6 имеет двоякое значение, в зависимости от режима. В асинхронном режиме определяет число стоповых бит, а в синхронном управляет процессом синхронизации.



4.4. Программируемый контролер прерываний

В первых персональных компьютерах IBM РС в качестве контроллера прерываний использовалась микросхема i8259 (отечественный аналог БИС КР580ВН59). Данный контроллер прерываний представляет собой законченное устройство, которое позволяет реализовать восьмиуровневую векторную систему прерываний с возможностью маскирования и динамического изменения дисциплины обслуживания.
Для перехода к подпрограммам обслуживания прерываний контроллер формирует и подает на шину данных микропроцессора код команды CALL. За счет каскадного включения КР580ВН59 число обслуживаемых уровней прерывания может быть увеличено до 64. Контроллер может использоваться как для организации обмена информацией в режиме прерывания, так и для организации программно-управляемого обмена. В первом случае БИС ВН59 на приоритетной основе формирует запрос на прерывание для микропроцессора и адрес подпрограммы обслуживания. Во втором случае процессор считывает слово состояния контроллера, и определят устройство с наивысшим приоритетом, готовое к обмену. Микросхема размещена в пластмассовом корпусе с 28 выводами и потребляет мощность 1 Вт при напряжении питания +5 В.
Контроллер позволяет реализовать простой приоритетный режим и режим циклического приоритета обслуживания прерываний. При реализации простого приоритетного режима всем восьми входам запросов на прерывание присваиваются фиксированные приоритеты, причем наивысшие приоритет присваивается входу ЗП0, наименьший ЗП7. В режиме циклического приоритета после окончания обслуживания любого устройства приоритет входов контроллера циклически изменяется таким образом, что устройству, обслуженному последним, присваивается низший приоритет. Кроме того, в режиме циклического приоритета низший приоритет может быть присвоен любому входу запроса программным способом.
Структурная схема контроллера прерываний показана на рисунке 4.10. Запросы на прерывание от внешних устройств подаются на входы ЗП0 – ЗП7 и запоминаются в регистре запросов. В регистре состояния содержатся все запросы на прерывания, обслуживаемые в данный момент. Регистр маски содержит единицы в разрядах, соответствующих маскируемым в настоящий момент входам запросов. Установка в единицу того или иного разряда регистра маски блокирует передачу запроса на прерывание.
Запросы на прерывание по любому входу могут быть поданы в потенциальной или импульсной форме. Однако каждый последующий запрос на прерывание воспринимается контроллером только после выполнения подпрограммы обслуживания текущего запроса по данному входу и сброса соответствующего разряда регистра состояния, что осуществляется специальной командой программным способом. Сигналы управления контроллера прерываний КР580ВН59 имеют следующее значение:
ЗП запись в БИС управляющих слов;
ЧТ считывание из БИС содержимого внутренних регистров;
А0 адресация регистров;
ВМ выбор микросхемы;
ЗП0-ЗП7 запросы на прерывание от внешних устройств;
ЗПР запрос на прерывание, выдаваемый контроллером на микропроцессор;
РПР разрешение прерывания. После поступления этого сигнала от микропроцессора контроллер осуществляет ввод в МП команду CALL;
ВДМ ведомый; сигнал управления каскадирования. Высокий уровень если контроллер является ведущим, низкий - ведомым;
КС0-КС2 каскадирование, линии являются выходными, если контроллер ведущий, и входными если ведомым.




Рисунок 4.10 – Схема программируемого контроллера прерываний


Значение сигналов КС0 – КС2 ведущего контроллера, подаваемые на соответствующие входы КС0 – КС2 подчиненных, указывает подчиненный контроллер, который формирует и выдает в микропроцессор адрес своей подпрограммы обслуживания.
Программирование контроллера осуществляется двумя типами команд: командами инициализации и командами управления режимом. Ввод команд для контроллера прерываний осуществляется микропроцессором, как правило, командой OUT. Однако в системе может быть организовано обращение к контроллеру как к ячейкам ЗУ. Команды инициализации подаются перед началом работы контроллера. Эти команды задают стартовые адреса подпрограмм обслуживания прерываний, расстояниями между соседними стартовыми адресами и указывают, если необходимо, на наличие других контроллеров в системе. Команды управления режимом (операциями) служат для оперативного изменения режимов обслуживания прерываний и могут подаваться в любое время в процессе работы контроллера. Команда управления операциями (OCW1) осуществляет установку или сброс разрядов регистра маски. Установка определенного разряда регистра маскирования приводит к запрету прерывания по соответствующему входу. Команда управления OCW2 осуществляет циклический сдвиг приоритета запроса. Команда управления операциями OCW3 позволяет задать режим специального маскирования, при котором можно выборочно устанавливать приоритеты прерывания. Этой же командой можно задать режим опроса и произвести считывание состояния ПКП, при котором считывается значение регистра обслуживаемых прерываний либо регистра запроса прерываний.
При поступлении запроса на прерывание по одному из входов ЗП0-ЗП7 он фиксируется в регистре запросов, а на выводе ЗПР (INT) формируется сигнал запроса на прерывание, который поступает на соответствующий вход микропроцессора. Если запросы на прерывание не запрещены (специальной командой), то процессор завершает текущий цикл, сохраняет в стеке состояние программного счетчика и выдает контроллеру сигнал разрешения прерывания РПР (INTA). По этому сигналу контроллер выставляет на шину данных код команды вызова подпрограммы CALL, который поступает в регистр команд процессора. После дешифрации этой команды процессор последовательно выдает еще два сигнала РПР. По первому из них контроллер выдает младший байт адреса подпрограммы обслуживания прерываний, а по второму – старший. Эти байты заносятся в программный счетчик и процессор начинает выполнять команду, начиная из адреса (вектора), поступившего от контроллера прерываний. Подпрограмма обслуживания прерываний должна заканчиваться командой возврата RET, по которой два байта из стека загружаются в программный счетчик и процессор продолжает выполнять прерванную программу.
В процессоре Pentium был добавлен расширенный контроллер прерываний APIC (Advanced PIC). Он состоит из модуля, встроенного в сам процессор (в случае многоядерной системы в каждое ядро), называемого локальный контроллер прерываний (англ. local APIC), и центрального модуля, выполненного в одном экземпляре даже на многоядерном оборудовании, обычно как часть микросхем обрамления процессора (англ. IO APIC).
Проводники IRQ от прерывающих устройств подсоединены к IO APIC. Для общения локального APIС и IO APIC, а также локальных APIC различных ядер друг с другом, используется системная (frontside) шина многопроцессорной системы, также используемая для соединения процессоров и контроллера памяти.
Преимуществом расширенного контроллера прерываний является следующее:
возможность реализации межпроцессорных прерываний сигналов от одного процессора к другому;
поддержка до 256 входов IRQ, в отличие от 16 на классической IBM PC
очень быстрый доступ к регистрам текущего приоритета прерывания и подтверждения прерывания.
В настоящий момент наблюдается тенденция к отказу от IO APIC, как и проводников IRQ, и переходу на прерывания, инициируемые сообщениями MSI (Message Signaled Interrupts).
MSI альтернативная форма прерываний: вместо присваивания номера запроса на прерывание, прерывающему устройству разрешается записывать сообщение по определённому адресу системной памяти. Для записи сообщения используется механизм прямого доступа в память, причем устройство может иметь от одной до тридцати двух уникальных областей памяти. Все прерывания шины PCI Express всегда доставляются как MSI, даже при использовании эмуляции традиционных номеров проводников прерываний.
Достоинства MSI состоят в следующем:
возможность передачи некоторых данных вместе с информацией о наступлении события, что зачастую избавляет обработчик прерывания от необходимости читать данную информацию из регистров состояния устройства, что уменьшает загрузку шины;
возможность полного отказа от проводников INT# от устройств и разъемов PCI до главного контроллера прерываний (IO APIC), а также от самого главного контроллера прерываний, что упрощает системную плату;
в многопроцессорных и многоядерных системах устройства получают возможность самостоятельно выбирать процессор/ядро для обработки конкретного прерывания, причем делать это полностью на уровне аппаратуры без исполнения программного кода, что позволяет оптимизировать работу путем размещения большей части структур драйвера устройства и связанного с ним программного обеспечения (сетевых протоколов и т.д.) в кэше конкретного процессора.


4.5. Программируемый контроллер прямого доступа к памяти

Контроллер прямого доступа к памяти (ПДП) служит для организации обмена данными между внешними устройствами и памятью, без участия центрального процессора. В персональных микро-ЭВМ используется контроллер ПДП типа КР580ВТ57, который имеет четыре независимых канала обмена, каждый из которых адресует свою область внешней памяти путем последовательного инкрементирования выбранного адреса. Контроллер ПДП имеет приоритетную логику, реализующую запросы от четырех периферийных устройств и производит счет циклов ПДП каждого канала.
Каждый канал ПДП имеет регистр адреса и регистр количества циклов (оба 16 разрядов), шину адреса и шину данных. Шина адреса разделена на две части (А3 – А0) – двунаправленная часть шины адреса, при работе которой во входном режиме указанные разряды адреса используют для инициализации определенного канала, а в выходном режиме – как младший полубайт адреса внешней памяти. А7 – А4 являются выходами и используются для выдачи адреса на внешнюю память. Шина данных (D7 – D0) обеспечивает двунаправленный обмен между микропроцессором и КПДП. По этой шине принимаются управляющие слова и выдается старший байт адреса внешней памяти.
Сигнал Чт В/В разрешает (во входном режиме) чтение регистра состояния (РС) или записанных в ЗУ контроллера начального адреса и числа циклов передачи данных (ПД) любого из каналов. В выходном режиме Чт В/В разрешает выдачу информации из внешнего устройства ввода – вывода. Сигнал Зп В/В разрешает во входном режиме загрузку регистров установки режимов, начального адреса и количества циклов для любого канала ПДП. В выходном режиме Зп В/В разрешает запись информации во внешнее устройство ввода – вывода. Выходные сигналы Чт П и Зп П предназначены для внешнего ЗУ.
Входные сигналы ЗПД3 – ЗПД0 поступают асинхронно с внешних устройств и воспринимаются БИС как запросы на обмен с ЗУ. Выходные сигналы ППД3 – ППД0 являются ответными по отношению к ЗПД. Они вырабатываются контроллером в соответствии с приоритетом внешних устройств. Сигнал КС – вырабатывается при установке в нуль шестнадцатиразрядного регистра количества циклов, и указывают периферийному устройству, что данный цикл ПД последний. Сигнал на выводе М128 – появляется на каждом 128 цикле от конца массива, а также во время действия сигнала КС.
Структурная схема БИС КР580ВТ57 показана на рисунке 4.11. Схема приема запросов (СПЗ) предназначена для приема и формирования ответных сигналов запроса в соответствии с приоритетом внешних устройств. Внутреннее запоминающее устройство (ВЗУ) служит для хранения начального адреса и числа циклов ПД для каждого канала. Для этого в нем расположены для каждого канала шестнадцатиразрядный регистр адреса РгА и регистр циклов РгЦ. РгА загружается адресом первой ячейки памяти, к которой будет обращение. Младшие 14 разрядов РгЦ указывают число циклов минус 1 до конца счета (сигнал КС). Разряды 14 и 15 РгЦ указывают на вид обмена 00 – контроль, 01 – запись в ЗУ, 10 – чтение ЗУ, 11 – запрещенная комбинация.
Схема формирователя сигналов Зп/Чт обеспечивает обмен информацией между микропроцессором и БИС контроллер с одной стороны, и БИС и ОЗУ и прерывающее устройство – с другой.
Регистр установки режимов РгР хранит информацию о режимах работы БИС, к которым относятся «Автозагрузка», «Конец счета-стоп», «Удлиненная запись», «Обычная запись», «Циклический сдвиг приоритета» и «Фиксированный приоритет». Разряды 3(0 РгР разрешает работу соответствующего канала, а 7(4 –обеспечивает необходимый режим контроллера. Регистр состояния каналов РгС указывает номер канала, который достиг конца счета.
Остальные линии БИС имеют следующее назначение:
А0 – А7 – инициализация канала или младший полубайт адреса.
Стр А – указывает, что на шине данных выдан старший байт адреса внешнего ЗУ.
РА – разрешение адреса для блокировки адресных шин в невыбранных устройствах, указывает, что протекает цикл ПД
ТИ – тактовый импульс Ф2ТТЛ –уровень.
Гот – для обеспечения совместной работы ПДП и медленных внешних устройств.
Микросхема КР580ВТ57 может находиться в одном из следующих состояний: исходном, программирования, ожидания, обслуживания.




Рисунок 4.11 – Структурная схема контроллера прямого доступа в память


В исходное состояние микросхему переводит внешний сигнал установки. В этом состоянии маскируются все запросы признаков ПД, а буферы А3 ( А0 переводятся в состояние приема информации. В состоянии программирования микропроцессор имеет доступ к внутренним регистрам выбранного канала в соответствии с состоянием управляющих сигналов. В состоянии ожидания БИС находится либо от момента окончания программирования до выдачи сигнала ПДП, либо в промежутках между циклами ПД.
При получении от внешнего устройства сигнала запроса на ПДП (ЗПД0-ЗПД3), например, на вывод данных из памяти, контроллер вырабатывает сигнал запрос захвата ЗЗхв, который поступает на соответствующий вход микропроцессора. МП на каждом втором такте машинного цикла проверяет состояние этого входа и при активном сигнале ЗЗхв переводит свои шины в третье (высокоимпедансное) состояние, т.е. отключается от шин данных, адреса и управления и выдает сигнал подтверждение захвата ПЗхв. В таком состоянии процессор находится, пока на его входе присутствует активный сигнал ЗЗхв. Управляемыми остаются только линии процессора ЗЗхв и ПЗхв.
После получения от микропроцессора сигнала ПЗхв контроллер выдает сигнал ППД, соответствующему внешнему устройству и переходит в состояние обслуживания ПДП, в котором системные шины находятся под управлением контроллера ПДП. При этом на шину адреса по линиям А0-А7 котроллер выставляет младший байт адреса, а на шину данных – старшую часть адреса. Присутствие адреса на шине данных сопровождается стробом адреса СтрА, который используется для записи этой части адреса во внешний регистр. Вследствие этого на память поступает 16-разрядный адрес ячейки с которой начинается прямой доступ. После снятия адреса с шины данных контроллер вырабатывает сигнал чтения содержимого ячейки памяти ЧтП, в результате чего память выставляет на шину данных восьмиразрядное слово, которое поступает на внешние устройства. После завершения переходного процесса установки данных на шине контроллер вырабатывает сигнал записи во внешнее устройство ЗпВ/В. Очевидно, что данные будут восприняты только тем устройством, которое получило одновременно сигналы ППД и ЗпВ/В.
Затем контроллер ПДП уменьшает счетчик циклов на 1 и, если счет не закончился, повторяет цикл чтения из памяти и запись во внешнее устройство. Запись в память в режиме ПДП осуществляется аналогично, но при этом контроллер формирует сначала сигнал ЧтВ/В, а потом ЗпП. Если содержимое счетчика циклов стало равным нулю, то контроллер формирует сигнал конец счета КС и снимает сигнал ЗЗхв. Процессор возвращается в рабочее состояние и продолжает управление шинами самостоятельно.
Особенности программирования БИС контроллера ПДП:
При записи информации в регистры РА и РЦ выполняются по два обращения к регистрам, причем вначале записывается младший байт, а затем – старший. Запись осуществляется по одному и тому же адресу. Операцию записи шестнадцатиразрядного слова в регистры необходимо всегда выполнять полностью.
В микропроцессорной системе, работающей с прерываниями, следует запрещать прерывания перед выполнением двойного обращения к регистрам.
После сигнала Сброс в регистре режимов РР содержатся нули и работа всех каналов запрещена. Запись байта в РР необходимо всегда выполнять после загрузки параметров в РА и РЦ.
После каждого запроса ПДП контроллер необходимо перепрограммировать, если не был установлен режим автозагрузки.
В контроллерах ПДП для работы с 20- 24-разрядной шинами адреса добавляется 8-битовый регистр страниц. Для 20-разрядной ША используется 4 бита этого регистра, а для 24-разрядной – все 8.


4.6. Программируемый таймер

Программируемый таймер (БИС Intel 8254, отечественный аналог К1810ВИ54) предназначен для формирования импульсных последовательностей определенных частот. Программируемый таймер (ПТ), используемый в ПЭВМ IBM PC, содержит 3 канала и служит для:
задания импульсной последовательности для контроллера ПДП для регенерации динамического ОЗУ;
формирования импульсной последовательности с частотой 18.2 Гц для часов реального времени;
формирования колебаний звуковой частоты для управления динамиком.
Программируемый таймер К1810ВИ54 (рисунок 4.12) содержит 3 независимых канала, каждый из которых может быть запрограммирован на работу в одном из шести режимов для двоичного или десятичного счета. Он работает с задающей частотой до 8 МГц. Он
Каждый канал таймера включает:
16–разрядный счетчик/таймер СЕ, работающий в режиме вычитания. Изменение состояния счетчика происходит по спаду сигнала CLK при GATA = 1;
16–разрядный буферный регистр, служащий для запоминания и хранения мгновенного значения счетчика СЕ, которое в любой момент может быть записано по команде «защелка» или «чтение состояния канала». После выполнения этих команд содержимое буферного регистра может быть прочитано ЦП без остановки дальнейшего счета в регистре СЕ;
16–разрядный регистр констант пересчета CR, служащий для хранения коэффициента пересчета. Содержимое CR копируется в СЕ для счета, в зависимости от запрограммированного режима;
8–разрядный регистр управляющего слова RSW. Содержимое управляющего слова позволяет запрограммировать каждый канал в отдельности (указывается номер канала, вид операции: ЧТ, ЗП младшего или старшего байта, тип режима, вид счета (двоичный или двоично-десятичный)).
8–разрядный регистр состояния канала RS, содержимое которого можно считывать в ЦП с помощью команды «чтение состояния канала» (D7=D6=1 в управляющем слове). Слово состояния (D7, D6) показывает, произошла ли загрузка в регистр констант CR, либо состояние выхода канала OUT.

Назначение выводов микросхемы следующее:
A0, A1=00
A0, A1=01
A0, A1=10
A0, A1=11
Адресация канала 0
канал 1
канал 2
управляющее слово или команда


CLK0 – CLK2
Входы тактовых импульсов. Срез сигнала на входе CLK декрементирует счетчик

GATA0 -
GATA2
Входы разрешения счета (вентиль). При GATA=1 разрешается выполнение функции

OUT0 – OUT2
Выходы счетчика/таймера.


Счетчики могут работать в пяти режимах:
0, 4 однократного выполнения функции. Константа (коэффициент пересчета) из CR передается в СЕ по первому тактовому сигналу CLK и при GATA=1. С приходом последовательности ТИ происходит декрементирование СЕ. Если во время счета на GATA подать 0, то это приведет к останову счета. Новый положительный сигнал GATA не вызывает перезагрузки счетчика, а только разрешает продолжение счета. По завершению счета (=0) выполнение действия прекращается.
Режим 1, 5 с перезапуском. Загруженная константа сохраняется в CR, а ее передача в СЕ осуществляется по фронту сигнала GATA независимо от завершения счета.
2, 3 режимы автозагрузки. Загрузка СЕ содержимым CR осуществляется автоматически при выполнении условий счета. Выход OUT открывается положительным сигналом на GATA.
Каналы могут функционировать в роли ждущего мультивибратора (режим 1, 4, 5) или генератора импульсов (делитель тактовой частоты) режим 2 и 3. Режим 3 (формируется симметричная прямоугольная последовательности типа "меандр").
4.7. Подключение клавиатуры и устройств индикации к микро-ЭВМ

Клавиатура компьютера представляет собой набор механических контактов (открытых или герконовых), контактов на основе токопроводящей резины, емкостных датчиков или датчиков на основе эффекта Холла. Состояние кнопки фиксируется в триггере, выход которого присоединяется к одной из линий шины данных микропроцессора. На рисунке 4.13,а показана схема подключения контакта к шине микропроцессора. Из схемы видно, что в отпущенном состоянии на входе D–триггера присутствует уровень логической 1 и триггер принимает состояние «1». При нажатии кнопки триггер принимает нулевое состоянии. Недостатком такой схемы является наличие эффекта «дребезга» контакта за счет того, что в момент нажатия ключа подвижный пружинистый контакт несколько раз отскакивает от неподвижного, прежде чем установиться в устойчивое состояние. В результате «дребезга» наблюдается расщепление единичного потенциала в момент смены состояния и возможно неверное фиксирование состояния кнопки. Дребезг контакта может быть устранен программно путем считывания состояния триггера с некоторой задержкой после замыкания контакта. На рисунке 4.13 б) показана схема бездребезгового формирования состояния кнопки клавиатуры.


а)
б)

Рисунок 4.13 - Схемы подключения контакта клавиатуры к МП


Если клавиатура имеет N контактов, то для фиксации ее состояния требуется N триггеров или N/8 регистров. Организация клавиатуры, при которой на каждый контакт требуется свой входной триггер, носит название «линейного» подключения. Более экономной, с точки зрения затрат клавиатурных регистров, является матричная организация клавиатуры, которая применяется практически во всех типах клавиатур. При этом контакты клавиатуры располагаются в узлах матрицы размером n(m, где n,m – соответственно количество строк и столбцов. Схема подключения клавиатуры в виде матрицы показана на рисунке 4.14.
В качестве устройств вывода Увыв и ввода Увв используются регистры, выполненные на D–триггерах. Если выходные шины Увыв имеют нулевой потенциал, то схема подключения контакта кнопки ничем не отличается от рисунка 4.13а. При разомкнутых контактах клавиатуры триггеры регистра Увв находятся в состоянии «1». При замыкании одного из контактов он соединяет вход одного из соответствующего триггера УВв с нулевым потенциалом и тот переходит в нулевое состояние.
Во всех случаях при организации ввода информации с клавиатуры в ЭВМ решается ряд задач к которым можно отнести:
1) определение факта нажатия клавиши на клавиатуре;
2) определение номера нажатой клавиши;
3) осуществляется передачу управления на соответствующую программу.
Определение факта нажатия клавиши может быть осуществлено с помощью последовательных операций.
Записать нули в разрядные ячейки выходного устройства.
Считать содержание разрядов входного устройства.
Повторять слова, если во всех разрядах УВВ записаны единицы.
Вариант программы определения факта нажатия на одну из клавиш имеет вид:

Адрес
Машинный код
Метка
Мнемокод
Комментарий

0800
3E F8
M1
MVI A, 11111000
Занести 0 в младшие три разряда аккумулятора

0802
D3 KBDOT

OUT KBDOT
Записать 0 в выходное устройство с адресом KBDOT

0804
DB KBDIN

IN KBDIN
Получить число со входного устройства с адресом KBDIN

0806
E6 07

ANI 00000111
Очистить старшие пять разрядов аккумулятора

0808
FE 07

CPI 00000111
Проверить, есть ли в младших трех разрядах аккумулятора 0

080А
CA 0008

JZ M1
Если нет, то идти на М1


080В
C3 0D08
DONE
JMP DONE
Конец


Для определения номера нажатой клавиши необходимо нулевой потенциал подать только на одну из горизонтальных линий матрицы (путем записи единицы в соответствующий триггер Увыв), а на остальных должна быть «1» и определять ячейку регистра УВв, которая приняла состояние «1». Затем по очереди перемещать «0» в Увыв (сканировать УВыв) и определять разряд Увв с нулевым значением.







Вывод данных на восьмисегментный дисплей.
Восьмисегментный дисплей представляет собой микросхему с 8-мю светодиодами, выполненными в виде прямоугольных полосок (сегментов) и расположенных в пространстве в виде цифры 8 с точкой. Сегменты диодов могут в качестве общего электрода иметь либо анод или катод. В первом случае для высвечивания символа на электроды индикатора следует подавать нулевые потенциалы, а во втором – положительные.
Вывод на восьмисегментные дисплеи в микропроцессорных системах может осуществляться статическим или динамическим способом. При статическом способе выводы сегментов каждого из индикаторов подключаются к своему регистру. Для управления разрешением высвечивания символа на индикаторе используется отдельный регистр, причем общий электрод каждого из индикаторов подсоединяется к соответствующему выходу этого регистра (рисунок 4.15). Программа управления выводом информации на дисплей состоит из операции выдачи кода символа на соответствующий индикатор (регистр DSP) и вывода разрешающего сигнала на этот индикатор (Регистр SСAN).




Рисунок 4.15- Схема статической индикации данных


Одноименные сегменты каждой ячейки индикатора связаны общим проводом и соединены с соответствующим разрядом регистра сегментов РгСг. Выходы анодов каждого из индикаторов подключены к регистру сканирования РгСк. Наличие уровня логической единицы в соответствующем разряде регистра сканирования РгСк приводит к высвечиванию символа в соответствующем индикаторе дисплея при наличии информации на шине данных. Вариант программы включения сегментов второй ячейки с помощью кода, задаваемого со входного регистра (порта ввода) имеет вид:
Адрес
Машинный код
Метка
Мнемокод
Комментарий

0800
3E04

MVI A,04
Поместить в Акк число 00000100

2
D328

OUT SСAN
Вывести число на РгСк и включить цифру 2

4
DB20
M1
IN 20
Ввести данные в Акк из входного регистра

6
D338

OUT DSP2
Записать их в регистр сегментов РгСг дисплея

8
C30408

JMP M1
Продолжить с метки М1

Программа размещается в ОЗУ, начиная ячейки с адресом 0800;
РгСг присвоено имя SСAN (адрес 28);
Входной регистр имеет адрес 20;
РгСг2 присвоено имя DSP2 (адрес 38).

Организация динамического режима работы дисплея.
Схема подключения дисплея в динамическом (мультиплексном) режиме показана на рисунке 4.16. В этом режиме вывод информации на каждый индикатор дисплея выводится микроЭВМ последовательно. Сначала в RGDSP выводится код отображаемого символа, а в регистр RGSCAN – разрешающий потенциал для высвечивания только одного индикатора (например 5-го). Цифра или символ на индикаторе высвечивается некоторый промежуток времени, задаваемый подпрограммой задержки. Затем индикатор гасится, выставляется в RGDSP код, который должен быт отображен 4-м индикатором, и подается управляющий сигнал в RGSCAN, разрешающий светиться только этому индикатору.
Ниже приведен вариант программы обеспечивающей мультиплексный режим работы дисплея. Код цифр для вывода на каждую ячейку хранится в последовательных ячейках памяти с адресами 0900 – 0905. Код цифры для нулевой ячейки индикатора хранится в ячейке с адресом 0900. Начальный адрес подпрограммы временной задержки 0430.

Адрес
Метка
Мнемокод
Комментарий

0800

LXI B, 0100
Загрузить в регистр В, С длительность задержки

03

XRA A
Очистить аккумулятор

04
M1
LXI H, 0905
Указать на адрес кода цифры 5

07

MVI D, 20
Загрузить указатель цифры в регистр D

09
M2
MOV A,M
Получить из ОЗУ код очередной цифры

0A

OUT DSP
Записать его в РгСг

0C

MOV A,D
Загрузить в аккумулятор указатель цифры

0D

OUT SKAN
Включить нужную цифру

0F

RAR
Указать на следующую цифру

10

MOV D, A
Сохранить указатель цифры в регистре D

11

CALL DE2B
Вызвать подпрограмму временной задержки

14

XRA A
Очистить аккумулятор

15

OUT SKAN
Выключить цифры

17

DCR L
Уменьшить на 1 содержимое регистра L

18

ORA D
Все ли сообщения выведены?

19

JNZ M2
Если нет, то продолжить

1C

JMP M1
Если да, то начать сначала

5. Запоминающие устройства информационных систем
5.1. Иерархическая организация памяти компьютера

Память – важнейший ресурс информационно-вычислительной системы, требующий эффективного управления. Несмотря на то, что в наши дни память среднего домашнего компьютера в тысячи раз превышает память больших ЭВМ 70-х годов, программы увеличиваются в размере быстрее, чем память.
Системы памяти характеризуются двумя важными параметрами:
время запаздывания (время отклика) - это полное время, прошедшее с момента завершения запроса или команды компьютерной системе до начала ответа
пропускная способность – количество элементов данных, которые могут быть отправлены процессору за единицу времени.
При реализации систем памяти современных компьютеров проектировщики стремятся обеспечить ее максимальную производительность и емкость при разумной цене. Достичь таких показателей возможно на настоящее время только при иерархической многоуровневой структуры памяти (рисунок 5.1).



Рисунок 5.1 – Иерархия памяти компьютера


Память, ближайшая к процессору, делается относительно небольшой и быстрой, которая характеризуется высокой стоимостью в расчете на один бит. Этот уровень получил название "кэш-памяти". Реальная память, называемая также основной или оперативной памятью, имеет большой объем, работает медленнее и характеризуется меньшей стоимостью бита данных. Самый низкий уровень в иерархии памяти обычно представлен накопителем на жестком магнитном диске, который отличается самым большим временем отклика и самой низкой пропускной способностью. Однако эта память может быть очена велика и дешева в расчете на бит. Обратите внимание на представленную иерархию памяти. При перемещении слева направо происходит следующее:
снижается стоимость бита;
возрастает емкость;
возрастает время доступа и снижается частота обращений процессора к памяти.
5.2. Основные характеристики полупроводниковых ЗУ

Основная (внутренняя) память компьютера состоит из ЗУ двух видов: оперативного (ОЗУ) и постоянного (ПЗУ). ОЗУ предназначено для хранения переменной информации и допускает изменение своего содержимого в ходе выполнения процессором вычислительных операций. При выключении питания содержимое оперативной памяти теряется.
ПЗУ содержит информацию, которая не должна изменяться в процессе всего времени существования компьютера. Такую информацию составляют стандартные программы тестирования компьютера, драйверы устройств, значения физических констант и пр. Эта информация заносится в ПЗУ заранее, в процессе изготовления компьютера. ПЗУ является энергонезависимым устройством. Т.е. при выключении питания компьютера информация в ПЗУ не разрушается.
В современных компьютерах основная память строится преимущественно на полупроводниковых приборах. Полупроводниковая память имеет большое число характеристик и параметров. Важнейшими из них являются:
Емкость памяти – число бит хранимой информации (1024 бит, 4 Кбит). Важной характеристикой является информационная организация кристалла памяти размером M(N, где M – число слов, N – разрядность слова. Например, кристалл емкостью 16 Кбит может иметь различную организацию: 16 К ( 1; 4 К (4 или 2 К ( 8.
Время обращения к памяти – время от подачи сигнала на запись или считывание до того момента, когда закончатся все действия, связанные с выполняемой операцией и устройство готово реализовать следующую операцию. Длительность времени обращения называется длительностью цикла.
По способу доступа память различается на:
ЗУ с произвольной выборкой (ЗУПВ);
ЗУ с последовательным доступом;
стековую (первый записан - последний считан);
ассоциативную.
Элементы полупроводниковых ЗУ изготавливаются в виде больших интегральных схем (БИС). Типовая БИС ЗУ с произвольной выборкой с организацией 1024(4 имеет следующие выводы (рисунок 5.2).
13 EMBED PBrush 1415

Рисунок 5.2 – Типовая схема БИС ЗУ с произвольной выборкой


Операция считывания начинается с установления на ША сигналов адреса требуемой ячейки памяти; после этого подается сигнал выбора кристалла CS. Через некоторое время содержимое ячейки выдается на шину данных D3-D0. При операции записи на ША устанавливается адрес требуемой ячейки, а затем (или одновременно) на ШД выставляется записываемое слово. После этого подаются импульсы выбора микросхемы CS и записи WR.


5.3. Статические ОЗУ с произвольным доступом

В статическом ОЗУ информация в ячейках памяти хранится до тех пор, пока подается напряжение питания. Типовым представителем статического ОЗУ с произвольным доступом (RAM – random access memory) являются микросхемы памяти серии КР537. В качестве примера рассмотрим структуру БИС КР537ЗУ3, условное обозначение которой изображено на рис.5.3,а.



Рисунок 5.3 – Условное обозначение и структура БИС ОЗУ с произвольным доступом


Как видно из схемы ОЗУ, в нем содержится 212 = 4К однобитовых ячеек памяти. Выходная линия данных может быть переведена в состояние высокого импеданса (значок
·) путем подачи высокого уровня на вход CS. Запись данных в ячейку памяти осуществляется при наличии нулевого уровня на входе WE (Write Enable).



Рисунок 5.4 - Схема организации матрицы запоминающих ячеек


ОЗУ серии К537 выполнены на основе КМОП – технологии. В состав серии входят БИС: К537РУ2РУ10. БИС РУ3 совместима с ТТЛ-схемами как по входам, так и по выходам. Особенности ОЗУ является способность сохранять информацию при пониженном напряжении источника питания.
Микросхемы памяти КР537РУ8 и РУ10 имеют организацию 2048(8 бит. Структурная схема ОЗУ с организацией 2048(8 бит показана на рисунке 4.3. Запоминающие ячейки ОЗУ организованы в виде матрицы размером 128 ( 128 ячеек, состоящей из 128 строк и 16 столбцов, выбирающих по 8 триггеров. Структура матрицы запоминающих элементов показана на рисунке 5.4.
В состав БИС входят также адресные буферы BF строк и столбцов и соответствующие им дешифраторы DCS и DCK, усилители записи/чтения DD и блок управления CU. Схема однобитовой ячейки памяти статического ЗУ изображена на рисунке 4.5.












Она представляет собой статический триггер, состоящий из четырех МДП-транзисторов Т3-Т5, плечи которого через ключевые транзисторы Т1,Т2 и Т7,Т8 подключены к шинам данных ШД0 и ШД1. Подключение ячейки к шине данных происходит только при одновременной подаче единичных сигналов на линии выбора ячейки Х и У. Данные записываются в ячейку памяти и считываются из нее в парафазном коде (наличие уровней «0» и «1» одновременно). Работа ячейки подробно рассматривалась в курсе электроники.


5.4. ОЗУ динамического типа

В запоминающих устройствах динамического типа информация хранится в виде заряда на конденсаторе. Поэтому питание на ОЗУ подается не постоянно, а только в очень короткие промежутки времени. Оно используется для восстановления заряда на конденсаторах матрицы ОЗУ. Благодаря импульсному питанию динамические ОЗУ потребляют в тысячи раз меньше мощности, чем аналогичные по емкости статические.
В микросхемах динамической памяти функции запоминающих элементов выполняют электрические конденсаторы, образованные внутри МДП-структуры. Поскольку время сохранения заряда на конденсаторе ограничено, необходимо предусмотреть восстановление (регенерацию) записанной информации. Период регенерации для динамических ОЗУ равен нескольким миллисекундам (для микросхем серии К565 время регенерации 2 мс).
Микросхемы (МС) большинства динамических ОЗУ с целью уменьшения количества выводов построены с мультиплексированием кода адреса: вначале в МС вводят код строки А0 – А7, фиксируя его во входном регистре стробирующим сигналом RAS (Row Address Strobe), а затем код адреса столбца А8 – А13, фиксируя его во внутреннем регистре стробирующим сигналом CAS (Column Address Strobe).
В режиме регенерации микросхема ОЗУ изолируется от информационных входа и выхода за счет подачи сигнала CAS = 1. Следовательно, адресуются только строки, т.к. регенерация информации происходит во всех элементах памяти строки одновременно.
Перебирая адреса строк, устройство регенерации обеспечивает восстановление информации во всей матрице накопителя. Условное обозначение БИС динамического ОЗУ типа К565РУ5 и временная диаграмма функционирования показаны на рисунке 5.6.

13 EMBED PBrush 1415

Рисунок 5.6 – Условное обозначение и временная диаграмма функционирования
динамического ОЗУ


Схема динамической ячейки памяти на 8 транзисторах показана на рисунке 5.7. Она отличается от аналогичной ячейки статического ОЗУ только тем, что затворы транзисторов Т3 и Т6 соединены с генератором импульсов регенерации, а не с источником питания.

13 EMBED PBrush 1415


Рисунок 5.7 - Схема ячейки памяти
динамического ОЗУ
Рисунок 5.8 – Схема однотранзисторной
ячейки динамического ОЗУ

Для хранения информации используются не специально встроенные конденсаторы, а конденсаторы, образованные паразитными емкостями затвор-сток и исток-сток транзисторов Т4 и Т5. Такая ячейка памяти использовалась только в первых образцах динамических ОЗУ. Очевидно, что для хранения одного бита достаточно одного конденсатора. Поэтому впоследствии схема ячейки была существенно упрощена и в настоящее время имеет вид, изображенный на рисунке 5.8. При записи на вертикальную линию подается напряжение уровня данных, а на горизонтальную – импульс выбора строки.
За счет уменьшения количества транзисторов на одну ячейку удалось существенно увеличить емкость динамической памяти, располагаемой на одном кристалле и снизить потребление энергии от источника питания.13 SHAPE \* MERGEFORMAT 1415

5.5. Постоянные запоминающие устройства

Постоянные запоминающие устройства (ПЗУ) являются энергонезависимыми устройствами, служащими для хранения цифровых данных. ПЗУ могут быть построены на пассивных элементах (плавких перемычках П или диодах D) или активных (транзисторах). Схема ПЗУ представляет собой матрицу (рисунок 5.9) количество горизонтальных линий равно разрядности хранимого слова, а число вертикальных – количеству хранимых слов.

13 EMBED PBrush 1415

Как видно из схемы, при активации адресной линии вертикальная шина соединяется с сигнальной землей и диоды, подключенные к этой шине, шунтируют линии данных на "землю". Таким образом, если горизонтальная линии данных соединена с вертикальной через диод (или перемычку), то при выборе адресной линии, на выходе линии данных будет потенциал близкий к нулю, т. е. логический 0. Если диод или перемычка отсутствуют в данном узле, то на соответствующем выходе линии данных присутствует высокий потенциал, близкий к ЕП, т.е. логическая 1.
Обычно такие ПЗУ изготавливаются со всеми диодами (или плавкими перемычками) в узлах матрицы. В тех узлах, в которых диод или перемычка должны отсутствовать, их убирают путем выжигания. Эта процедура выполняется в процессе программирования ПЗУ и называется "прожиганием ПЗУ".

Рисунок 5.9 – Схема матричного ПЗУ


Запись информации в ПЗУ осуществляется пословно (побайтно). Для занесения информации в ячейку ПЗУ необходимо на линии данных, в которых должна быть "1", подать высокий потенциал (
· 25 В) и выбрать соответствующую адресную линию, т.е. соединить ее с сигнальной землей. Протекающий ток расплавляет диод или плавкую перемычку, исключая тем самым шунтирующую цепь соответствующей линии данных.
Недостаток рассмотренной схемы ПЗУ состоит в том, что после занесения информации в это устройство ее нельзя изменить. То есть, при изменении программы, подлежащей хранению в ПЗУ, необходимо запрограммировать новое устройство. Для устранения этого недостатка разработаны полупостоянные электрически перепрограммируемые постоянные запоминающие устройства (ЭППЗУ). Схема ЭППЗУ подобна ПЗУ на основе МОП транзисторов, однако транзисторы в таком устройстве имеют "плавающий" затвор, который электрически изолирован оксидным слоем полупроводникового материала. Схема ЭППЗУ изображена на рисунке 5.10. При подаче на "плавающий" затвор (ПЗ) положительного потенциала по отношению к стоку транзистора на ПЗ индуцируется электрический заряд, который за счет высококачественной изоляции может сохраняться до 10 лет и более. Благодаря этому заряду транзистор находится в открытом состоянии, при котором сопротивление Сток-Исток становится близким к нулю.

13 EMBED PBrush 1415


За счет шунтирования соответствующей линии данных на ее выходе устанавливается потенциал логического нуля. При отсутствии заряда на ПЗ транзистор остается в закрытом состоянии и на выходе данных имеется потенциал. близкий к Еп (уровень логической 1).
Полярность и значение напряжений при записи и стирании информации в ячейки ЭППЗУ показаны на схеме.

Рисунок 5.10 – Схема электрически перепрограммируемого запоминающего устройства





5.6. Кэш-память и ее организация

Кэш-память это быстродействующая память, располагаемая между МП и основной памятью. Она предназначена для повышения производительности компьютеров. Быстродействующая память обычно является дорогостоящей, поэтому повышать быстродействие всей основной памяти большой емкости не выгодно. В связи, с чем предлагается реализовать память небольшой емкости с предельным быстродействием кэш-памяти. В кэш-память помещают текущие программы и данные, хранящиеся обычно в основной памяти. При выполнении программы процессор сначала передает адресный сигнал в кэш-память, с помощью которого можно осуществить запись–считывание. Наличие этого адреса в кэш-памяти называется совпадением КЭШа, а отсутствие несовпадением.
Кэш-память представляет собой быстродействующую память, в которую из основной памяти с умеренной скоростью переносятся команды и данные (выбранные участки ОЗУ копируются в кэш). Структурная схема системы подключения кэш-памяти в ЭВМ изображена на рисунке 5.11.
Кэш-память была предложена, когда появились процессоры, работающие значительно быстрее ОЗУ. Они вынуждены были ожидать, пока из памяти будут введены требуемые элементы данных. В системах с кэшированием информация пересылается из вторичной памяти (с жесткого диска) в основную память, а затем в кэш-память. Чтобы данные попали в кэш, нужно выполнить следующие действия:
В начале работы программа, обращаясь к своему адресному пространству, передает устройству управления памятью или микропрограмме виртуальный адрес. Если страница или сегмент, содержащие этот адрес, находятся в основной памяти, виртуальный адрес преобразуется в адрес основной памяти. В противном случае возникает отказ страницы, и страница или сегмент загружается в основную память.
После этого аппаратно проверяется, не находится ли требуемый блок уже в кэш-памяти. Если это так, то содержимое адресуемой ячейки извлекается из кэша (либо результат вычисления заносится в ячейку). В противном случае формируется отказ кэш-блока (аналогичный отказу страницы) и информация копируется из основной памяти в КЭШ. После загрузки блока в кэш-память команда выполняется повторно. Схема загрузки из основной в кэш-память управляется внешней (по отношению к ЦП) схемой – кэш-контроллером и без участия ОС.
Следует заметить, что использование кэш-памяти является возможным только потому, что команды и данные программ в большинстве случаев расположены в близлежащих ячейках памяти (локальность программы).
В последующих шагах, когда процессору требуется следующая команда или следующий элемент данных, он сначала обращается к кэш-памяти. Доступ, при котором данные обнаруживаются в кэш-памяти, называется кэш-попаданием. В противном случае фиксируется кэш-промах. Доля обращений, при котором имелось кэш-попадание, называется коэффициентом кэш-попаданий. На величину этого коэффициента влияют размеры и организация КЭШа, алгоритмы поиска и характеристики выполняемой программы. Кэш-память снабжается контроллером, который управляет ее ресурсами и обеспечивает максимальную эффективность доступа. Контроллер разбивает основную память на блоки с типичным размером 2, 4, 8 или 16 байт. 32 – разрядный процессор обычно использует блоки размером 2 или 4 слова. Когда фиксируется кэш-промах, кэш-контроллер перемещает в кэш-память из основной памяти требуемое слово с целым блоком, содержащим это слово. Обращение к любому байту блока приводит к копированию в кэш всего блока.
Существуют три способа организации кэша: полностью ассоциативный, с прямым отображением, частично ассоциативный.
Полностью ассоциативная кэш-память. В этом случае в кэше содержатся наиболее часто используемые процессором блоки данных и их полные адреса. Когда процессор запрашивает данные, кэш-контроллер сравнивает адрес требуемых данных с каждым адресом в кэш-памяти. Для ускорения поиска используют схемы с параллельным поиском, которые содержат компараторы и контроллеры.
Кэш-память с прямым отображением. Каждый блок из основной памяти может занимать одно единственное место в кэше. Это уменьшает число шагов поиска и сравнений, необходимых для фиксации попаданий и промахов. Основной недостаток – конфликтование в кэш-памяти ячеек ОЗУ, которые имеют одно и тоже место хранения в кэше. В этом случае каждый раз нужно будет осуществлять попеременно подкачку этих ячеек. Однако такие случаи встречаются довольно редко и эта кэш-память обладает приемлемой производительностью при невысокой стоимости.
Частично ассоциативная кэш-память. Этот способ кэширования является промежуточным между рассмотренными выше.
Частично ассоциативная кэш-память характеризуется наличием нескольких наборов блоков с прямым отображением, которые функционируют параллельно. Когда из основной памяти поступает блок данных, он может быть записан на соответствующее этому блоку место любого набора. При выборе нового блока кэш-контроллер должен решить, на место которого блока в кэш-памяти его записать. При этом может быть реализован:
случайный выбор;
запись в последовательном порядке;
на место блока, который не адресовался дольше других.
При использовании КЭШ-памяти имеется две копии данных – одна в КЭШ, а другая – в основной памяти. Одна из них может быть модифицирована, а другая нет, т.е. возникает два набора данных с одним адресом памяти.
Наличие двух копий требует механизма обновления, который предотвращал бы использование устаревших данных. Разработано несколько способов записи «новых» данных:
сквозная запись – контроллер сразу же после записи данных в кэш переносит их в основную память (потеря производительности);
буферизированная сквозная запись – запросы на запись в основную память буферизируются. Это позволяет процессору, не дожидаться окончания записи в основную память, приступить к новому циклу;
обратная запись – имеется поле признака каждого блока в кэш-памяти, которое включает бит, показывающий, был ли изменен блок. В основную память переносится только измененный блок. Этот способ обеспечивает максимальную скорость обмена.

В компьютерах на основе МП х386 используется кэш прямого отображения объемом 64 Кбайт на 16384 блока (строки по 4 байта каждая). Адрес в такой памяти имеет две части. Первая часть (поле кэш-индекса) содержит достаточно битов для того, чтобы определить место блока внутри кэш-памяти. Вторая часть (поле тега) содержит достаточно битов для того, чтобы отличить отдельный блок от других блоков, которые могут храниться в конкретном месте кэш-памяти. Каждый блок содержит 32 бит данных и 16 бит теговой информации.
В устройстве управления кэш-памятью используется два компаратора и две программируемые логические матрицы (ПЛМ).
В кэш-памяти прямого отображения МП 386 каждый элемент DRAM отображается в один элемент внутри кэш-памяти. Отображение осуществляется путем разделения 30-разрядного физического адреса процессора на две части: 16-разрядный тег и 14-разрядный индекс. Тег соответствует старшему адресу блока (строки из 4 байт) (А16 – А31), а индекс – младшему адресу строк (А2 – А15). Т.к. каждый элемент ДОЗУ (DRAM) с одинаковыми значениями А2 – А15 отображаются в одно и тоже место в кэше, то лишь один из этих блоков может присутствовать в кэше в любой момент времени. Поле тега и индекса совместно определяют место блока в основной памяти. В дополнение к этому индекс выбирает одно из 16384 мест в кэш-памяти. Самые младшие два бита адреса кодируются так, что становятся доступными все четыре байта слова. Бит А31 определяет различия между некэшируемыми адресами ЭППЗУ и кэшируемыми адресами ДОЗУ.
Если требуемые данные находятся в кэш-памяти, то чтение может быть выполнено за цикл в 2 такта. В противном случае чтение требует 6 тактов.
Кэш-память использует буферизированную сквозную запись для обновления ДОЗУ. кэш-память и ДОЗУ имеют свои собственные контроллеры, это позволяет совмещать буферизированную сквозную запись в ДОЗУ и цикл магистрали.


6. Архитектура 16-разрядных процессоров
6.1. Линейная и сегментная адресация

В 16-разрядных МП длина слова равна 16 бит, адресуемое пространство памяти составляет 1-16 Мбайт, оперативный блок состоит из 16 регистров общего назначения. Шина данных является 16-разрядной, используется расширенный набор команд, включающий команды умножения, деления и др, отсутствующие в 8-разрядных МП. Адреса обычно представляют собой 20-24-разрядные слова. Среди устройств этого класса имеются процессоры с раздельными шинами данных и адресов Motorola (MC68000) с большим количеством выводов (64) и процессоры с совмещенными шинами данных и адресов фирмы Intel и Zilog (8086 и Z8001), с меньшим количеством выводов (40 и 48 соответственно).
Если число разрядов адреса превышает длину информационного слова, возникают вопросы: в какой форме поместить такой адрес в регистр и каким способом осуществлять вычисление адреса? Для решения этих задач используют два способа адресации: линейную и сегментную.
При линейной адресации адрес представляет собой отдельное целочисленное значение. Вычисление адреса осуществляется с помощью операций сложения, приращения 16-ти разрядов слова двойной длины .В 16-разрядных МП выполняются аналогичные операции, т.е. адреса хранятся в 32-разрядных регистрах двойной длины. Архитектура такого процессора довольно сложная, но зато удобная для использования, т.к. все адресное пространство используется, как единое целое.
При сегментной адресации все пространство адресов делится на множество сегментов, т.е. пространство является сегментированным. Начальный адрес сегмента называют базовым. Порядок разбиения на сегменты может быть произвольным и после того, как он установлен, адрес можно представить с помощью номера (базового адреса) сегмента и смещения. Т.е. можно использовать два 16-разрядных регистра. Следовательно, максимальный размер одного сегмента составит 64Кбайт, а вычисления адреса сводится только к вычислению смещения. Для вычисления смещения можно воспользоваться тем же 16-разрядным АЛУ, что значительно упрощает структуру МП.
В МП MC68000 используется линейная адресация. 24-разрядный код адреса позволяет обращаться к 16 Мбайтам адресного пространства. Адреса хранятся в 32-разрядных регистрах. Операционный блок, кроме 16-го АЛУ, содержит два 16-разрядных сумматора, с помощью которых одновременно осуществляется вычисления 32-разрядных адресов. В МП 8086 и Z8001 применяется сегментная адресация. В 8086 используется базовый адрес сегмента и смещения, а в Z8001 – номер сегмента (7 старших бит) и 16 разрядов – смещение.
Память в микро-ЭВМ на базе МП Intel 8086 (отечественный аналог КР1810ВМ86) логически организована как одномерный массив байтов, каждый из которых имеет адрес в диапазоне 0000 – FFFFF. Любые два смежных байта могут рассматриваться как 16-битовое слово. Младший байт имеет меньший адрес, старший – больший. Адресом слова считается адрес его младшего байта.
Полная информация, необходимая для определения его физического адреса содержится в адресном объекте “сегмент-смещение”, который называется указателем адреса и содержит адрес сегмента и внутрисегментное смещение. Для запоминания указателя адреса требуется два слова памяти, причем слово с меньшим адресом всегда содержит смещение, а слово с большим адресом – базовый адрес сегмента.
Команды, байты и слова данных можно свободно размещать по любому адресу, что позволяет экономить память, благодаря ее плотной упаковки. Однако, для экономии времени выполнения программ, целесообразно размещать слова данных в памяти по четным адресам, т.к. МП передает такие слова за один машинный цикл. Слово с четным адресом называется выровненным на границе слов. Слова с нечетными адресами (не выровненные) также допустимы, но для их передачи требуется два цикла шины, что снижает производительность МП. Следует отметить, что интерфейсный блок процессора (BIU) инициирует необходимое для выборки слова число обращений к памяти автоматически, так что двукратное обращение к памяти не требует специального указания в программе. Особенно важно иметь выровненные слова для операций со стеком, так как в них участвуют только слова. Следовательно, указатель адреса стека SP необходимо всегда инициализировать на четный адрес.
Команды всегда выбираются словами по четным адресам, за исключением первой выборки после передачи управления по нечетному адресу, когда выбирается один байт. Поток команд разделяется на байты при заполнении конвейера команд внутри МП. Т.о. выравнивание команд не влияет на производительность и потому не используется.


6.2. Сегментация памяти и вычисление адресов

Пространство памяти емкостью 1 Мбайт представляется как набор сегментов, определяемых программным путем. Сегмент состоит из смежных ячеек памяти и является независимой и отдельно адресуемой единицей памяти емкостью 64 Кбайт. Каждому сегменту программой назначаются начальный (базовый) адрес, являющийся адресом первого байта сегмента в пространстве памяти. Начальные адреса четырех сегментов, выбранных в качестве текущих, записываются в сегментные регистры CS, DS, SS, ES. Для обращения к команде и данным, находящимся в других сегментах, необходимо изменить содержимое сегментных регистров, что позволяет использовать все пространство памяти емкостью 1 Мбайт. Частный случай загрузки всех сегментных регистров нулями приводит к организации памяти характерной для МП580ВМ80, т.е фактически к отказу от сегментации памяти.
В сегментном регистре хранится 16 старших битов 20-разрядного начального адреса сегмента. Четыре младших бита принимаются равными нулю и дописываются справа к содержимому сегментного регистра при вычислении физических адресов ячеек памяти. Поэтому начальные адреса сегментов всегда кратны 16. Поскольку других ограничений на размещение сегментов в памяти нет, сегменты могут быть соседними (смежными), неперекрывающимися, частично или полностью перекрывающимися. Физическая ячейка памяти может принадлежать одному или нескольким сегментам.
Физический адрес сегмента памяти представляет 20-битовое число в диапазоне 00000-FFFFF, которое однозначно определяет положение каждого байта. Логический адрес ячейки памяти состоит из двух 16-битовых беззнаковых значений: начального адреса сегмента, который называют базой или сегментом, и внутрисегментного смещения, определяющего расстояние от начала сегмента до этой ячейки. Для вычисления физического адреса база сегмента сдвигается на 4 бита влево и суммируется со смещением. Перенос из старшего бита, который может возникнуть при суммировании, игнорируется (рисунок 6.1).


13 EMBED PBrush 1415


Рисунок 6.1 Схема вычисления физического адреса



Это приводит к так называемой кольцевой организации памяти, при которой за ячейкой FFFFF следует ячейка с нулевым адресом. Аналогичную кольцевую организацию имеет и каждый сегмент.
Команды всегда выбираются из текущего сегмента кода в соответствии с логическим адресом CS:IP. Стековые команды всегда обращаются к текущему сегменту стека по адресу SS:SP. Если при вычислении эффективного адреса EA используется регистр BP, то обращение производится также к стековому сегменту, а ячейки стекового сегмента рассматриваются как ОЗУ с произвольной выборкой. Операнды, как правило, размещаются в текущем сегменте данных, и обращение к ним организуется по адресу DS:EA. Однако программист может заставить МП обратиться к переменной, находящейся в другом текущем сегменте.
По умолчанию предполагается, что цепочка-источник находится в текущем сегменте данных, а ее смещение задается регистром SI. Цепочка - получатель обязательно располагается в текущем дополнительном сегменте, а смещение берется из регистра DI. Команды обработки цепочки автоматически модифицируют содержимое индексных регистров SI и DI по мере продвижения по цепочке в направлении, задаваемом флагом DF. Источники логического адреса для различных типов обращения к памяти приведены в табл. 6.1.
Таблица 6.1 – Источники логического адреса

Тип обращения к памяти
Сегмент
(умолчание)
Вариант
Смещение

Выборка команд
CS
нет
IP

Стековые операции
SS
нет
SP

Переменная
DS
CS, SS, ES
EA

Цепочка-источник
DS
CS, SS, ES
SI

Цепочка-приемник
ES
нет
DI

как базовый регистр
ES
CS, SS, DS
EA


Смена сегментного регистра осуществляется с помощью однобайтового префикса замены сегмента 001SR110, который ставится первым байтом команды. Двухбитовое поле SR содержит код сегментного регистра, используемого для вычисления физического адреса в данной команде: 00 – регистр EA; 01 – CS; 10 – SS; 11 – DS.
Сегментная структура памяти обеспечивает возможность создания позиционно независимых или динамически перемещаемых программ, что необходимо в мультипрограммной среде для эффективного использования оперативной памяти. Чтобы обеспечить позиционную независимость все смещения в программе должны задаваться относительно фиксированных значений, содержащихся в сегментных регистрах. Это позволяет произвольно перемещать программу в адресном пространстве памяти, изменяя только содержимое сегментных регистров.

6.3. Архитектура 16-разрядного процессора первого поколения

Однокристальный 16-разрядный МП Intel 8086 (К1810ВМ86) имеет мультиплексную 20-разрядную ША и 16-разрядную ШД и рассчитан на работу как в одно, так и в многопроцессорных системах. Процессор 8086 на языке ассемблера совместим с МП 8080, регистры и систему команд которого можно рассматривать как подсистему регистров и команд МП 8086.
Эффективность работы МП существенно повышена за счет введения команд математических операций (включающих умножение и деление) над 8- и 16-разрядными числами, команд побитовой обработки чисел, команд работы с массивами данных, расширения видов прерываний работы МП, а также реализации конвейерного типа выполнения команд в самой БИС. МП может работать с памятью объемом до 1 Мбайт, обмениваться информацией с 64 Кбайт внешних устройств, имеет 256 типов различных прерываний.
Упрощенная структурная схема БИС К1810ВМ86 приведена на рисунке 6.2. Блок сопряжения с шинами BIU производит все пересылки данных и кодов для EU. Пересылки между памятью или внешними устройствами осуществляется по требованию EU. В то время как EU занят выполнением команды, блок BIU получает последующие в программе коды из памяти. Блок выполнения команд EU имеет 16-разрядные АЛУ с регистром состояния и флажками управления, а также РОНы. Все регистры и внутренние магистрали блоки 16-разрядные. Блок не имеет связи с внешними шинами МП.
На АЛУ поступают коды команд из конвейера команд, расположенного в BIU. Если в результате дешифрации кода команд в АЛУ необходимо получение одного или нескольких операндов по внешним магистралям МП, то EU запрашивает BIU на получение и размещение необходимых данных в BIU.




Рисунок 6.2 – Структурная схема 16-разрядного микропроцессора 8086



Несмотря на то, что все адреса, с которыми оперирует EU, 16-разрядные, BIU производит необходимые преобразования адресов так, чтобы EU имел возможность обращаться по всему возможному адресному пространству (1 Мбайт) МПС. BIU считывает команды с памяти и сохраняет их в конвейере команд, где может быть размещено до 6 инструкций. Это позволяет BIU выдавать их в EU по мере надобности без дополнительной загрузки внешней шины. BIU организует получение нового кода команды как только два байта из конвейера будут переданы в EU.
В большинстве случаев в BIU находится хотя бы одна команда и EU не простаивает, пока очередная команда будет извлечена из памяти. Коды подаются в EU последовательно, так как они записаны в программе. Если EU выполняет команду передачи управления в другое место программы, то BIU очищает конвейер команд, получает код из нового адреса, передает его в EU и начинает заполнять конвейер заново. Если EU требует обращения к внешнему устройству, то BIU приостанавливает процесс получения команд в конвейер и организует необходимый цикл обмена данными.
Любая ячейка памяти МП имеет два типа адресов: физический и логический. Физический адрес представляется 20-разрядным числом и однозначно определяет любую из 1 Мбайт ячеек памяти. В 16-разрядной системе адреса расположены в диапазоне от 0 до FFFFF. Весь обмен информацией МП с памятью осуществляется с использованием физических адресов. Программы же больше используют логические или физические адреса и позволяют записывать команду без предварительных знаний места, где эта команда будет размещена в памяти. Это дает программисту возможность маневрировать при распределении памяти, увеличивает гибкость программного обеспечения.
Логический адрес состоит из двух основных частей: значения базы сегмента и значения смещения в сегменте. Базовый адрес и смещение в сегменте отображаются 16-разрядными числами. Как только BIU обращается к памяти, базовый адрес формирует физический по принципу: Значение базы сегмента смещается на четыре разряда влево, и полученное 20-разрядное число (с четырьмя нулями в младших четырех разрядах) складываются со значением смещения в сегменте. Таким образом, база сегмента (с четырьмя нулями, добавленными в качестве младших разрядов) задает для памяти сегменты длинной 64 Кбайт, а значение сегмента в смещении – расстояние от начала сегмента до искомого адреса памяти. Максимально возможное смещение в сегменте равно 64 Кбайт. В любой момент времени программа может осуществлять доступ к одному из четырех сегментов:
сегменту текущего кода (Current Code Segment – CS);
сегменту текущих данных (Current Date Segment - DS);
сегмент текущего значения стека (Current Stack Segment – SS);
дополнительный сегмент текущих значений (Current Extra Segment – ES).
Каждый из этих сегментов может быть задан с помощью записи числа в соответствующий 16-разрядный регистр сегментов МП БИС. В большинстве случаев в МПК К1810 сегменты могут быть заданы в программе произвольно по усмотрению программиста.
В зависимости от команд, блок BIU получает информацию о логическом адресе памяти из различных регистров МП. Коды команд всегда извлекаются из адреса памяти, определяемого содержимым регистра текущего кода и регистра указателя команд IP (Instruction Pointer). В IP записано смещение в сегменте текущего кода. Команды со стеком всегда используют для адресации SS и регистр – указатель стека SP (Stack Pointer), где записано смещения в сегменте текущего значения стека. Данные или переменные в командах извлекаются из памяти, адреса которых расположены в сегменте текущих данных, хотя по директивам команд это можно сделать и с помощью всех остальных сегментов. При вычислении физического адреса смещение в сегменте задается в EU, так как в нем происходит дешифрация кода команд и определение сегмента памяти, с которых будет работать БИС в текущий момент времени.


6.4. Регистры процессора Intel 8086

МП 8086 содержит три группы регистров. К первой группе относятся РОН, используемые для хранения промежуточных результатов. Ко второй группе относятся указатели и индексные регистры, предназначенные для размещения или извлечения данных из выбранного сегмента памяти. Содержание этих регистров определяет значение смещения в сегменте при задании логического адреса. К третьей группе относятся регистры сегментов, задающие начальные адреса (базы) самих сегментов памяти. МП имеет регистр флаговых разрядов, используемых для указания состояния АЛУ при выполнении различных команд и управления его работой.
Таким образом в МП располагается тринадцать 16-разрядных регистров и девять флаговых разрядов АЛУ. Последний, тринадцатый регистр, называется указателем команд IP (Instruction Pointer), выполняет функции, аналогичные функциям программного счетчика в МП КР580ИК80 и не является программно доступным регистром. Доступ к его содержимому может быть осуществлен с помощью команд передачи управления.
Группа РОН включает в себя семь 8-разрядных регистров МП КР580ИК80 и один добавленный 8-разрядный регистр для того, чтобы объединить все регистры в четыре 16-разрядные пары (рисунок 6.3). К ним может быть организован программный доступ как к 8- или 16-разрядным регистрам. 16-разрядные регистры обозначаются AX, BX, CX и т.д. При обращении к ним, как к 8-разрядным регистрам, их обозначают AL, AH, BL, BH и т.д. Все эти регистры могут быть использованы при выполнении арифметических и логических команд. Однако, есть команды, использующие определенные регистры для специфических целей, тогда применяют мнемонические обозначения: аккумулятор (accumulator), база (base), счет (count), данные (data).
Группа указателей и индексных регистров состоит из четырех 16-разрядных регистров.
Регистры указатели: SP (Stack Pointer); BP (Base Pointer).
Индексные регистры: SI (Source index); DI (Destination index).

13 EMBED PBrush 1415



Рисунок 6.3 - Регистры процессоров 8080 и 8086



Обычно эти регистры содержат информацию о смещении по адресам в выбранном сегменте и позволяют компактно писать программы каждый раз непосредственно, не приводя используемого адреса. С их помощью производится вычисление адресов программ. Чаще всего в регистрах указателях записано адресное смещение по отношению к стековому сегменту, а в индексных регистрах – адресное смещение по отношению к сегменту данных.
Группа регистров сегментов состоит из четырех 16-разрядных регистров: CS; SS;DS и ES. Извлечение кодов команд производится из сегментов текущего кода с использованием адресного смещения, задаваемого указателем команд IP. Сегмент для извлечения операндов команды обычно указывается путем записи специального однобайтового префикса перед командой. Префикс имеет специальную кодировку, позволяющую МП отличить его от кода команды.
Регистр состояния (Флаговый регистр) содержит шестнадцать триггеров, из которых используется только 9. Эти триггеры отображают состояние процессора при выполнении последней арифметической или логической команды. Пять триггеров аналогичны МП 580-й серии. Дополнительные триггеры сигнализируют:
OVERFLOW – переполнение (при выполнении операций с числами МП имеет дополнительные флаги управления;
DIRECTION – направление – указывает направление работы с массивами (автоматическое увеличение или уменьшение на единицу адреса массива);
INTERRUPT – прерывание – определяет для МП возможность реагирования на прерывание;
TRAP – (западня, ловушка) устанавливает для МП пошаговый режим.
Кроме основных функций, соответствующих названию регистров, общие регистры выполняют специальные функции, указанные в таблице 5.2.
Таблица 5.2.
Регистр
Название
Специальная функция регистра

AX
Аккумулятор
Умножение, деление, ввод-вывод слов

AL
Аккумулятор - младший байт
Умножение, деление, ввод-вывод байтов, преобразование байтов, десятичная арифметика

AH
Аккумулятор - старший байт
Умножение и деление слов

BX
Базовый регистр
Адресация по базе; преобразование адресов

CX
Счетчик
Подсчет циклов; подсчет элементов цепочек

CL
Счетчик (младший байт)
Реализация параметрических сдвигов

DX
Регистр данных
Умножение и деление слов; косвенный ввод-вывод

SP
Указатель стека
Операции с использованием стека

BP
Указатель базы
Базовый регистр

SI
Индекс источника
Указатель цепочки-источника, индекс, регистр

DI
Индекс приемника
Указатель цепочки-приемника, индексный регистр


Для задания режима работы используется вывод 13 EMBED Equation.3 1415. Подача на этот вход напряжения +5 В указывает на то, что в МПС имеется лишь одна БИС МП (минимальная конфигурация системы). При этом МП вырабатывает на своих электродах все необходимые управляющие сигналы для связи с памятью и периферийными устройствами. При максимальной конфигурации МПС 13 EMBED Equation.3 1415=0. МП выдает дополнительно на три вывода, подсоединяемые к контроллеру магистралей, управляющие сигналы.
13 EMBED Equation.3 1415- (запрет на пользование магистралями) – информирует устройства системы, что они не должны пытаться запрашивать шину.
13 EMBED Equation.3 1415 13 EMBED Equation.3 1415-
13 EMBED Equation.3 1415 13 EMBED Equation.3 1415 -
При работе максимальной конфигурации МП выдает восемь сигналов состояния процессора (ST0-ST7), которые могут использоваться внешними устройствами.

ST2 ST1 ST0 - указывают тип машинного цикла
0 0 0 Обслуживание прерываний
0 0 1 Чтение внешних устройств
0 1 0 Запись во внешние устройства
0 1 1 Останов
1 0 0 Извлечение кода команд
1 0 1 Чтение памяти
1 1 0 Запись в память
1 1 1 Не используется

Выводы ST3 и ST4 указывают на тип регистра сегментов, используемых при
вычислении физического адреса.
0 0 ES
0 1 SS
1 0 CS (или никакой)
1 1 DS

Выводы QS0 QS1 Выполняется текущая операция с конвейером команд.
0 0 Нет операции
0 1 Извлекается первый байт команды из конвейера
1 0 Конвейер очищается
1 1 Очередной байт извлекается из конвейера

WAIT – ожидание; HLD – прямой доступ в память (запрос).


6.5. Система команд 16-разрядного процессора первого поколения

Система команд ВМ86 состоит из 91 мнемокоманд и позволяет совершать операции над байтами, двухбайтовыми символами, отдельными битами, а также цепочками байтов и слов.
По функциональному признаку система команд МП 8086 разбивается на 6 групп:
Пересылка данных;
Арифметические операции;
Логические операции и сдвиги;
Передача управления;
Обработка цепочек;
Управление процессором.

Команды пересылки данных составляют 4 подгруппы:
общие;
обращение к стеку;
ввода-вывода;
пересылка цепочек.
Эти команды, за исключением РОРF и SAHF, не влияют на флаги. Команда MOV осуществляет пересылку содержимого источника src в получатель dst.
Команда MOV r1/m, r2/m обеспечивает пересылки регистр-регистр/память-память при использовании любого общего регистра и любого способа адресации.
Команда MOV r/m, d позволяет передать непосредственные данные в общий регистр или ячейку памяти.
MOV sr, r/m и MOV r/m, sr осуществляют пересылки между сегментным регистром и регистром или памятью. При этом передаются только слова, а ячейка памяти может быть определена с помощью любого допустимого способа адресации.
MOV ас, m и MOV m, ас предназначены для загрузки и запоминания содержимого аккумуляторов AL и AХ при использовании прямой адресации.
Обращение производится к текущему сегменту данных, и адрес, указанный в команде, представляет смещение в этом сегменте. Если пересылаются два байта, то младший располагается по указанному адресу, а старший – по следующему. Так как не существует непосредственной загрузки сегментных регистров, то команда MOV sr, r/m используется для инициализации регистров SS, DS и ES, т.е. для определения соответствующих сегментов памяти. Если, например, в регистр DS необходимо загрузить число 8000, то используют две команды:
MOV АХ, 8000Н
MOV DS, АХ
При этом в качестве промежуточного регистра обычно используют АХ, т.к. команда MOVас, d короче более общей команды MOV m/r, d.
Возможна также инициализация сегментных регистров из программной памяти при использовании префикса замены сегмента для замены DS на СS при вычислении адреса ЕА в следующих командах с прямой адресацией. При замене сегмента новый сегментный регистр указывается явно.
MOV DS, СS : АDS; Инициализация DS
MOV ЕS, СS : АЕS; инициализация ЕS
MOV SS, СS : АSS; инициализация SS
Следует помнить, что в МП ВМ86 обеспечивается защита процесса инициализации регистров SS и SР, состоящего из двух команд, от прерываний, чтобы гарантировать правильную работу стека.
MOV SS, СS : АSS
MOV SР, СS : АSР
Операнды АDS, АЕS, АSS, АSР обозначают адреса ячеек памяти, в которых хранятся базовые адреса соответствующих сегментов.
Команда
XCHG dst, sre; dst (sre

осуществляет обмен данными между источником и получателем и имеет два формата. Общий формат позволяет произвести обмен содержимым любой пары общих регистров, а также между общим регистром и ячейкой памяти при любом допустимом способе адресации. Указанный формат осуществляет обмен любого РОН и аккумулятора АХ.
Команда XCHG АХ,АХ, код которой 90Н, используется как команда операции NOP, обеспечивающая задержку на время 3Т.
Однобайтная команда XLAT c кодом операции D7 предназначена для быстрого преобразования кодов и заменяет содержимое AL на байт из 256-байтовой таблицы, начальный базовый адрес которой содержится в регистре ВХ, т.е. содержимое AL используется как индекс таблицы, находящейся в сегменте данных и адресуемой регистром ВХ. При выполнении этой команды, к содержимому ВХ прибавляется содержимое AL, а полученный результат используется как смещение относительно DS. Адресуемый таким образом байт из памяти пересылается в AL.
Команды LEA, LDS, LES отличаются от других команд пересылки тем, что при их выполнении в адресуемый регистр (регистры) передаются не собственно данные из памяти, а адреса. Основное назначение этих команд – инициализация регистров перед выполнением цепочечных команд, или перед вызовом подпрограммы.
LEA r,m обеспечивает вычисление эффективного адреса ЕА ячейки памяти в соответствии с указанным способом адресации и загрузку ЕА (а не содержимого адресуемой ячейки памяти) в указанный РОН. Такая операция может потребоваться, например, для загрузки начального адреса таблицы в регистр ВХ перед выполнением команды XLAT.
Стек, как обычно, организуется в ОЗУ и его положение определяется содержимым регистров SS и SР. Регистр SS хранит базовый адрес текущего сегмента стека, а регистр SР указывает на вершину стека в стековом сегменте. При каждом обращении к стеку пересылается одно слово, а содержимое SР модифицируется автоматически, при записи в стек оно уменьшается на 2, при чтении из стека – увеличивается на 2.
При всех достоинствах организации памяти ВМ86 она имеет некоторый недостаток, заключающийся в трудности манипуляции физическими адресами при необходимости их программной обработки.
Команды ввода-вывода. Ввод-вывод данных может осуществляться двумя способами: с использованием адресного пространства ввода-вывода и с использованием общего с памятью адресного пространства. При первом способе применяются команды IN, OUT, которые обеспечивают передачу данных между аккумуляторами AL или АХ и адресуемыми портами.
При выполнении этих команд вырабатывается сигнал M/IО=0, который вместе с сигналами WR и RD позволяет сформировать системные сигналы IWO и IOR для управления операциями записи данных в порт или чтения из порта.
Команды IN и OUT могут использовать прямую адресацию (аналог с ВМ80) и косвенную, когда адрес порта содержится в регистре DХ. В первом случае можно адресовать 256 портов. Во втором – до 64К 8-битовых или 32К 16-битовых портов. Косвенная адресация позволяет вычислять адреса портов при выполнении программы, и удобна при организации вычислительных циклов для обслуживания нескольких портов с помощью одной процедуры. Ячейки с адресами F8 – FF зарезервированы для системных целей, и использовать их в прикладных программах не рекомендуется.
При втором способе адресации обращение к портам не отличается от обращения к ячейкам памяти, т.е. для ввода-вывода можно использовать любую команду обращения к памяти при любом способе адресации. Однако следует учитывать, что команды обращения к памяти имеют больший формат и выполняются дольше, чем простые команды IN и OUT. Кроме того, усложняется декодирование 20-битового физического адреса порта и сокращается число адресов, которые могут использоваться для ячеек памяти.
МП может передавать по ШД байт или слово из ВУ. Чтобы слово передавалось за один цикл шины, адрес ВУ должен быть четным. Адрес байтового ВУ может быть четным или нечетным, и соответственно порты этих ВУ должны подключаться к линиям младшего и старшего байта ШД. Для раздельного обращения к этим портам дешифрирование адресов осуществляется с учетом сигналов на линиях ВНЕ и А0.
Цепочные команды (обработки строк). Под цепочкой (строкой) понимают последовательность любых контекстно-связанных байт или слов, находящихся в смежных ячейках памяти. В системе команд МП К1810ВМ86 имеется пять однобайтных команд, предназначенных для обработки одного элемента цепочки за прием. Цепочной команде может предшествовать специальный однобайтовый префикс повторения REP. Число повторений задается регистром СХ. Например, последовательность команд
MOV CX, 500
REP MOVS DST, SRC
заставит МП выполнять команду MOVS 500 раз, уменьшая значение регистра СХ после каждого повторения, до тех пор, пока <СХ> не станет равным 0.
Остальные префиксы повторения, решение о продолжении или прекращении повторений принимают в зависимости от значения флага ZF:
REPE (repeat while equal) пока равно;
REPZ (repeat while zero) повторять пока нуль;
REPNE
REPNZ
Команда LODS (load string) пересылает операнд строка-источник, адресованный регистром SI, из сегмента данных в регистр АL или АХ, а затем изменяет SI так, чтобы он указывал на следующий элемент строки. Его значение увеличивается, если флаг направления DF равен 0, и уменьшается, если DF=1. Формат команды имеет вид
LODS SRC ; (.
Допускается использование мнемокодов LODSВ и LODSW, указывающих тип строки (цепочки).
Пример:
Сравнить строки DSТ и SRC длиной 500 байтов каждая. В случае обнаружения первого несовпадения, элемент строки LODS загрузить в регистр АL.
CLD
LEA DI, ES : DST
LEA SI, SRC
MOV CX, 5000
REPE CMPSB
JCXZ M1 ; Выйти, если СХ=0, на метку М1
DEC SI ; Подправить регистр SI
LODS SRC ; считать элемент в АL
.
M1: .

Команда сохранения строки STOS (stove string) служит для запоминания содержимого аккумулятора в элементе строки, адресуемом регистром DI. После выполнения команды содержимое DI увеличивается на 1. Формат команды
STOS DST ; DST:=
Сегментный адрес для этой команды всегда находится в сегменте ES, а префикс замены сегмента не используется. Тип элементов строки можно указывать с помощью мнемокодов STOSB и STOSW.
Пример: Просмотреть строку W_STRING длиной в 200 слов. Если обнаружен не нулевой элемент, то он и следующие за ним 5 слов обнуляются.
CLD
LEA DI, ES : W_STRING
MOV АX, 0
MOV CX, 2000
REPNE SCASW
JCXZ ALLO
SUB DI, 2
MOV CX, 6
REP STOS W_STRING
ALLO: .
Команда пересылки строк MOVS используется для копирования байта или слова из одной части памяти в другую. Она имеет формат
MOVS DST, SRC ; DST:=< SRC>
Здесь строка-источник находится в сегменте данных DS, а строка приемник – в дополнительном сегменте ЕS. Байт или слово источника, адресуется регистром SI, а получатель DI. После выполнения команды значения SI и DI модифицируются для указания следующих элементов строк.
При флаге DF=0 осуществляется автоинкрементация, а при DF=1 – декрементация.
Пример: Скопировать 100 байтов из строки SRC в строку DST.
CLD ; Установить DF=0 для обработки строки слева направо
LEA SI, SRC ; Занести смещение адреса SRC в SI, а
LEA DI, ES: DST ; смещение адреса DST в DI
MOV CX, 100 ; Установить счетчик элементов
REP MOVS DST, SRC ; Скопировать байты.
Обычно ассемблер (в зависимости от версии) допускает использование для передачи цепочки мнемокоды MOVSВ (move byte string) или MOVSW (move word string), которые определяют тип элементов строки 8-байт w-слово. При этом операнды в команде могут отсутствовать.
Команды сравнения строк CMPS (compare string). Формат команды имеет вид:
CMPS SRC, SRC ; < SRC > = < DST > ?
Эта команда производит вычитание байта или слова строки DST, адресуемой регистром DI из байта или слова цепочки SRC, адресуемой регистром SI. В зависимости от результата вычитания устанавливаются флажки, но сами операнды не изменяются.
Когда перед CMPS находится префикс REPЕ или REPZ операция интерпретируется как «сравнивать, пока не достигнут конец строки», (или пока элементы строки не будут равны). При наличии префикса REPNЕ или REPNZ операция интерпретируется как «сравнивать, пока не достигнут конец строки» (или пока элементы строки будут равны).
Например, команды
CLD
MOV CX, 100
REPЕ СMРS DST, SRC
будут сравнивать до 100 пар элементов строк SRC - DST, пытаясь найти два несовпадающих элемента.
Команды
CLD
MOV CX, 100
REPNЕ СMРS DST, SRC
будут сравнивать до 100 пар элементов строк SRC и DST, пытаясь найти два совпадающих элемента. Для явного указания типа элементов строки обычно допускаются мнемокоды СMРS и СMРSW, при этом операнды в команде отсутствуют.
Команда сканирования SCAS имеет формат:
SCAS DST ; -
По этой команде вычитается элемент строки DST (байт или слово), адресуемое регистром DI, из содержимого аккумулятора AL или АХ. В соответствии с полученной разностью устанавливаются флажки, но значение операндов не изменяется.
Для выполнения действий более чем над одним элементом строки, надо воспользоваться префиксами повторения REPЕ (REPZ) или REPNЕ (REPNZ).
Например, с помощью последовательности команд
CLD
LEA DI, ES: B_STRING
MOV AL,
MOV CX, 100
REPE SCAS B_STRING
можно просмотреть до 100 элементов строки байтов B_STRING в поисках элемента, отличного от пробела. Для явного указания типа элементов строки, обычно используются мнемокоды SCASВ и SCASW.
Команды безусловной и условной передачи управления.
Команды передачи управления используются в разветвляющихся и циклических программах, а также при вызове подпрограмм и возврате из них.
Сегментная организация памяти определяет два основных типа команд передачи управления: внутрисегментные NEAR (близкие) и межсегментные FAR (дальние). При выполнении команды типа NEAR модифицируется только регистр IP, и адрес переходов представляется одним словом и даже байтом, если используется короткий вариант перехода с ограниченным диапазоном адресов. При выполнении команды типа FAR изменяется содержимое регистров IP и CS и адрес перехода представляется двумя словами (сегмент:смещение), что позволяет перейти в любую точку адресного пространства памяти.
Ассемблер поддерживает большое число команд условного перехода, которые осуществляют переход в зависимости от состояния флагового регистра. Существуют знаковые и беззнаковые команды условного перехода. Использование команд определяется типом данных, над которыми производятся операции. В рассматриваемую группу команд входят команды безусловных и условных переходов, вызовов, возвратов, управления циклами и прерываний.
Команды безусловных переходов JMP производят модификацию регистра IP или регистров IP и CS без сохранения прежних значений этих регистров. Имеется три формата команды JMP типа NEAR, осуществляющих переход в пределах текущего кодового сегмента, и два формата типа FAR, осуществляющих переход в любую точку адресного пространства.
В двухбайтовой команде JMP dispL во втором байте содержится смещение, которое интерпретируется как знаковое целое. Это смещение добавляется (с предварительным расширением знака до 16 бит) к содержимому IP, которое соответствует адресу команды, находящейся после данной команды. Диапазон смещения dispL составляет от –128 до +127, причем при положительном смещении осуществляется переход вперед, а при отрицательном – назад. Данная команда реализует короткий переход, который в мнемоническом обозначении отмечается указателем SHORT (например, JMP SHORT COUNT – короткий переход к метке).
Трехбайтная команда JMP disp производит такое же действие, как и предыдущая команда, но содержит 16-битовое смещение (ассемблерный указатель NEAR PTR). Это смещение интерпретируется как знаковое число в диапазоне –32 768 до +32 767, что обеспечивает переход в любую точку кодового сегмента.
Команда JMP r/m осуществляет косвенный внутрисегментный переход (ассемблерный указатель WORD PTR), при котором в регистр загружается содержимое регистра или ячейки памяти.
Команда JMP m реализует косвенный межсегментный переход (ассемблерный указатель DWORD PTR) через содержимое двух ячеек памяти.
Команда JMP addr реализует прямой межсегментный переход (ассемблерный указатель FAR PTR) и содержит 4 байта адреса перехода: два байта сегментное смещение загружается в IP, а два байта – в регистр CS.
Команды вызова подпрограмм CALL имеют такие же форматы, как и команда JMP и выполняются аналогичным образом, за исключением того, что автоматически запоминается адрес возврата (т.е. адрес команды, следующий за командой CALL). С этой целью при внутрисегментных вызовах в стеке запоминается содержимое регистра IP, а при межсегментных вызовах – сначала содержимое IP, а затем CS.
Команды возвратов RET из подпрограмм возвращают управление программе, осуществившей вызов. Такая передача управления осуществляется путем извлечения из стека адреса возврата. Поэтому команды возврата не содержат никакой адресной информации.
Тип команды возврата выбирается в соответствии с типом команды CALL, осуществивший вызов данной подпрограммы. Каждая подпрограмма должна обязательно содержать команду возврата. Команды условных переходов осуществляют передачу управления в зависимости от значения флаговых регистров. Имеется 18 команд условных переходов, которые представлены единым двухбайтовым форматом, позволяющим осуществлять короткие (в пределах от –128 до +127) переходы относительно указателя команд IP.


6.6. Способы адресации памяти и устройств ввода/вывода

Команды микропроцессора Intel 8086 реализуют разнообразные способы адресации, что упрощает организацию и использование сложных структур данных, а также расширяет возможности отдельных команд и повышает гибкость их применения.
1. Регистровая адресация. Операнд находится в одном из общих регистров МП, а в некоторых командах в одном из сегментных регистров.
Примеры:
MOV AX, SI ; (
ADD DI, BX ; +
AND CL, AX ; Ошибка, несоответствия размеров регистров
XOR AL, AH ; XOR и .
2. Непосредственная адресация. Операнды представляют собой константы длиной 8 или 16 бит, содержащиеся в командах. В МП нет команд непосредственной загрузки регистров.
SUB AL, 30H ; - 48 (30H = 48D)
MOV CL, 10 ; (10()
AND AX, 0F000H ; Выделить старших 4 бита в AX
XOR DH, 1 ; Инвертировать младший бит в DH
CMP BL,40H ; Сравнить содержимое BL с числом 64.
3. Прямая адресация. Эффективный адрес берется из поля смещения команды:

MOV AX, GAMMA ; В Акк АХ загружено содержимое ячеек памяти
; с адресом, полученным суммированием
; сдвинутого на 4 разряда с адресом
; переменной GAMMA, определенном в ячейке программы.
ADD TEMP, BL ; + <(4+TEMP>

4. Косвенная регистровая. Эффективный адрес (ЕА) находится в одном из базовых или индексных регистров. В косвенной адресации могут использоваться только регистры ВХ, SI, DI. Косвенные регистровые операнды заключают в квадратные скобки.
ADD AX, [DI] ; К прибавляется содержимое ячейки памяти,
; адрес который находится в DI.
; исполнительный адрес: (4+ .
MOV [SI], CL ; <> (< CL>

5. Базовая адресация (база + смещение). ЕА определяется суммой значения смещения, указанного в команде и содержимого регистров ВХ или ВР.
К операциям в памяти можно адресовать, указывая прямой адрес, т.е. называя имя соответствующей области памяти, либо косвенные - через регистры-указатели, или индексные регистры. При прямой адресации 16-ричное смещение автоматически складывается с базовым адресом соответствующего сегмента. При косвенном обращении участвуют один или два из четырех регистров. Они указываются в квадратных скобках [ ] – признак косвенной адресации ВХ, ВР, SI, DI. Если указывается переменная, за ее именем следует выражение в квадратных скобках, которое задает базовые или индексные регистры.
В случае косвенной адресации может быть указан либо только базовый регистр, либо только индексный, либо оба регистра и может быть также указано 8 или 16-битовое смещение.
MOV AX, [BX] ; переслать слово из памяти в АХ. Слово находится в сегменте
; данных, адрес этого сегмента в регистре DS, смещение
; относительно этого адреса в регистре ВХ.
К операндам, находящимся в памяти, можно обратиться одним из четырех способов:
Указанием прямого 16-разрядного смещения

MOV REPORT, AL ;в байт памяти с именем REPORT пересылается содержимое AL
; ([DS](4+[REPORT])(AL
Использованием косвенного обращения через базовый регистр, содержимое которого суммируется с 8 или 16-разрядным смещением.
MOV ON[BX+2], AL
MOV BL, ON[BP]
Использованием косвенного обращения через индексный регистр, содержимое которого суммируется со смещением
MOV CL, ITEM[SI+1]
MOV ON[DI+1], CL
Использованием косвенного обращения через базовый и индексный регистры, содержимое которых суммируется со смещением
MOV AH, ITEM[BX+1] [SI+1]
MOV ON[BX+1][DI+1]
При определении ВР в качестве базового регистр обращение осуществляется к текущему сегменту стека SS (если нет префикса замены сегмента). Это делает базовую адресацию с регистром ВР очень удобным средством обращения к данных, находящимся в стеке. Обычно базовый регистр BREG указывает на начало структуры данных, а требуемый элемент адресуется с помощью смещения (расстояния) от базы.
Для обозначения базовой адресации используют два представления:
[BREG] DISP BREG – базовый регистр (ВХ или ВР)
[BREG+ DISP]
Пример записи команд с базовой адресацией:
MOV AX, [BP]10 ; Обе команды передают шестое слово массива, адресуемое ВР,
MOV AX, [BP+10] ; в Аккумулятор,
ADD [BX]TEMP,CX ; Прибавить <СХ> к слову ТЕМР в массиве, адресуемом ВХ.
6. Индексная адресация (смещенная база + индекс). Этот вид адресации называют адресацией с индексированием. Эффективный адрес вычисляется как сумма смещения, находящегося в команде, и содержимого индексного регистра DI или SI. Адресация удобна при доступе к элементам таблицы (массива), когда смещение указывает на начало таблицы (массива), а индекс – на элементы в таблице (массиве). По существу индексная и базовая адресация в МП К1810 аналогичны. Это объясняется тем, что базовые и индексные регистры имеют одинаковую длину. Индексная адресация обозначается в виде TABL[IREG]. Здесь TABL – 16-битовое смещение (адрес начала таблицы).
Примеры:
MOV ADRM [SI], AX ; Передать <АХ> в элемент массива с начальным
; адресом ADRM
ADD CX, MASS [DI] ; Прибавить к <СХ> элемент массива.
; MASS – смещение, указанное в команде.
Пример: Загрузить 3-й элемент массива в аккумулятор АL.
table DB 10, 20, 30, 40
MOV DI, 2 ; загрузить в индексный регистр номер выбираемого байта
; минус 1 (т.к. массив начинается с нулевого элемента)
MOV AL, TABLE [DI] ; загрузить 3-й байт таблицы в AL.
Примеры записи базового индекса адресации:
MOV AX, [BX+2+DI] ; Операнды можно заключать в скобки
MOV AX, [DI+BX+2] ; в любом порядке, а сдвиг можно
MOV AX, [BX+2][DI] ; сочетать с любым из регистров
MOV AX, [BX][DI+2]
7. Базово-индексная адресация (по базе с индексированием). Эффективный адрес равен сумме содержимого базового регистра, индексного регистра и, возможно, смещения, указанного в команде. Этот способ целесообразно использовать при работе с двумерными таблицами. В этом случае базовый регистр содержит начальный адрес массива, а значения смещения и индексного регистра является смещением по строке и столбцу. В ассемблере МП 1810ВМ86 базово-индексная адресация представляется в виде: [BREG]АDR16[IREG].
Пример: загрузить в АХ 16-разрядный элемент таблицы, состоящей из 4-х столбцов и 3-х строк, находящийся в третьей строке на третьей позиции (3,3) [а22, если в таблице считать 0-й столбец и 0-ю строку].
TABLE DW 1024, 1048, 2048, 3600 ; Задание таблицы в начале ассемблерной
DW 4100, 5000, 600, 2000 ; программы
DW 80, 300, 4000, 5000 ;
VALUE DB 2 ; указание номера элемента в строке минус 1 (т.к. считается с 0).
..
MOV BX, TABLE ; в базовый регистр ВХ заносится начальный адрес таблицы
MOV DI, 16 ; в индексный регистр DI заносится смещение в байтах (ячейка
; памяти) адреса начала третьей строки от начала таблицы.
MOV AX, VALUE [BX][ DI] ; загрузка элемента (а22)=4000 в АХ.
8. Относительная адресация. Эффективный адрес вычисляется как сумма фиксированного смещения, находящегося в команде и текущего значения программного счетчика РС. При этом значение РС равно адресу байта, следующего за текущей командой. В МП К1810 относительная адресация применяется только в командах условных и безусловных переходов, вызова подпрограмм и управления итерациями (или циклами). Следует отметить, что программист в ассемблерных программах указывает не значение смещения, а абсолютный адрес перехода, т.е. метку команды, которой необходимо передать управление. Значение смещения выполняется автоматически программа - ассемблер.
9. Адресация цепочек. Для обращения к операциям цепочечных команд, используются индексные регистры. Регистр SI адресует первый байт (слово) цепочки источника, а регистр DI – первый байт (слово) цепочки получателя. В повторяющихся цепочных операциях МП автоматически изменяет содержимое регистров SI и DI.
10. Адресация портов ввода-вывода. Существует прямая и косвенная адресация портов. В прямой адресации номер порта представляет собой 8-битовый непосредственный операнд, находящийся во втором байте команды, что обеспечивает обращение к фиксированным портам 0-255.
При косвенной адресации номер порта находится в регистре DХ и имеет диапазон 0-65535. С помощью предварительной инициализации регистра DХ одна и та же команда может обращаться к любому порту в адресном пространстве ввода-вывода.
Примеры:
IN AL, 40H ; Ввод байта из порта номер 40Н
OUT DX, AX ; Вывод слова в порт с адресом, хранящемся в DХ
IN AX, DX ; Ввод слова из устройства, адрес которого хранится в DХ.


6.7. Структура и функционирование 16-разрядной микро-ЭВМ

Принципы построения 16-разрядных микро-ЭВМ имеют много общего с построением 8-разрядных машин. Микропроцессор обменивается информацией с внешними устройствами (ВнУ) и памятью по 16-разрядной шине данных с использованием 20-разрядной адресной шины, шины управления и шины состояния МП. Структурная схема микро-ЭВМ на основе микропроцессора КР1810ВМ86 показана на рисунке 6.4, а временные диаграммы функционирования машины в минимальном режиме – на рисунке 6.5.
Минимальный режим работы процессора задается путем подачи высокого уровня сигнала на вывод микросхемы MN/MX. При минимальном режиме управляющие сигналы для памяти и внешних устройств генерирует сам процессор, а в максимальном режиме для управления шинами используется специальный системный контроллер, который формирует управляющие сигналы на основании значения линий состояния S0-S2. Для генерирования последовательности тактовых импульсов CLC, сигнала готовности RDY, а также сигнала начальной установки RST используется функциональный генератор типа К1819ГФ84, входящий в состав микропроцессорного комплекта серии 1810.
Минимальный цикл обмена информацией микро-ЭВМ состоит из четырех машинных тактов. Цикл начинается с формированием на такте Т1 сигнала M/IO, определяющего тип устройства (ОЗУ или ВнУ), к которому производится обращение для пересылки данных. Длительность сигнала M/IO равна длительности цикла шины, и он используется для селекции адресуемого устройства. В такте Т1 и в начале такта Т2 микропроцессор выставляет адрес ОЗУ на линии А19-16 и АД15-0, либо адрес ВнУ, а также вырабатывает сигнал ВНЕ, который вместе с А0 определяет передачу слова или одного из байтов. Одновременно с этим МП выдает строб адреса ALE, по спаду которого адрес фиксируется во внешних регистрах-защелках.




13 EMBED PBrush 1415


Рисунок 6.4 – Схема микро-ЭВМ на базе процессора КР1810ВМ86


В такте Т2 происходит переключение шин: на линии A19/S6 – A16/S3 поступают сигналы состояния S6-3, которые сохраняются до конца такта Т4. Значения этих сигналов зависят от вида выполняемого действия процессора. В минимальном режиме работы процессора эти сигналы практически не используются.
В цикле чтения в такте Т2 линии АД15-0 переводятся в третье состояние, давая тем самым процессору перейти из режима записи (выдачи адреса) к режиму приема команды или данных. В тактах Т2-Т4 вырабатывается сигнал чтения RD=0, который указывает адресуемому устройству на необходимость выдачи слова. Для управления формирователем шины данных (ФШД), который подключается к линиям АД15-0, в тактах Т2-Т4 формируется сигнал DE (Data Enable), разрешающий прием данных, действующий в течение всего цикла.
После выполнения чтения и установления сигнала RD=1 микропроцессор заканчивает такт следующим образом: линии АД15-0 переключаются в высокоомное состояние, сигналы M/IO, DE, DT/R, S7-3 переходят в неактивное состояние. Шинные формирователи данных отключены от канала.
Цикл записи отличается от чтения не только активными значениями сигналов RD или WR и состоянием DT/R, но и тем, что в цикле записи сигналы DE и WR становятся активными раньше и имеют большую длительность, чем в цикле чтения. Линии АД15-0 переключаются с адреса на данные без промежуточного перехода в третье состояние. Соответственно данные при записи имеют большую длительность, чем при чтении.












Рисунок 6.5 – Временные диаграммы функционирования 16-разрядного компьютера





6.8. Защита памяти в процессорах второго и последующих поколений

В составленной программе, как правило, имеются ошибки. Ошибочный переход к области данных может привести их к уничтожению. Еще более опасна запись в область программы. При разрушении области операционной системы (ОС) обычно возникает системный отказ. Для предотвращения таких ситуаций в 16-разрядных процессорах второго поколения введена защита памяти. Кроме этого, в этих процессорах внедрена поддержка режима виртуальной памяти (ВП) и мультипрограммного режима. Для реализации этих нововведений в микропроцессорах используется устройство управления памятью (УУП).
Для осуществления защиты памяти кроме базового адреса вводится указатель размера и атрибут сегмента. В этом случае ситуация, когда величина смещения превышает размер сегмента, считается аварийной, т.к. возможно проникновение в область соседнего сегмента. Атрибуты сегментов могут быть самыми разными. Наиболее широко применяются следующие:
разделение на системную область и область пользователя;
разделение на область программ и данных;
в случае работы с областью программы производят разделение ее на участки, допускающие только считывание данных или также и запись.
Процессор в каждом цикле вырабатывает сигналы состояния, показывающие, является ли данный цикл считыванием или записью. УУП при каждом обращении к памяти сравнивает атрибуты сегментов с этими сигналами. Если в размере сегмента или в его атрибуте обнаруживается ошибка, УУП выдает в ЦП сигнал сегментной ошибки, вызывающий специальное прерывание.
Для хранения базового адреса, размера и атрибута сегмента в УУП введены специальные регистры – дескрипторы сегментов. Число таких регистров определяется количеством используемых сегментов. При этом если номер сегмента является n–разрядным, то возможно использовать 2n регистров. С целью ускорения поиска регистра они строятся на принципах ассоциативной памяти. Для этого в составе каждого регистра имеется схема сравнения искомого номера регистра с хранящимся в регистре его номером.
Для защиты памяти также введена система привилегий (PL), с помощью которой осуществляется защита сегментов. Система привилегий регулирует доступ к тому или иному сегменту, в зависимости от уровня его защищенности и от степени важности (привилегированности) запроса. В МП Intel х286 и всех последующих моделях установлены четыре уровня привилегий PL, которые задаются номерами от 0 до 3 (рисунок 6.6). Наиболее привилегированным является уровень с меньшим номером. Степень защищенности сегмента также имеет четыре уровня, которые схематически представляются в виде вложенных колец защиты. В процессорах фирм Motorola (МС68000) и Zilog (Z8001) предусмотрено два уровня привилегий: в системном и пользовательском режимах.




Рисунок 6.6 - Уровни привилегий и защиты


В соответствии с уровнями привилегий и защищенности установлены следующие правила доступа для сегментов программ и данных:
Данные из сегмента, имеющий уровень привилегий могут быть выбраны программой такого или более высокого уровня привилегий.
Сегмент программ, имеющий уровень защиты PL, может быть вызван программой, имеющий такой или более низкий уровень привилегий.
Уровень защиты и привилегий определяется двумя битами, значение которых указывает номер кольца защиты или уровня. Эти биты размещаются в байте доступа дескриптора (для привилегий дескриптора) или в селекторе (уровня привилегий запроса).
Выполнение команды ветвления ограничивается сегментами в пределах одной программы. В командах вызова и перехода допускается переход в сегменты другой программы при условии, что уровень ее привилегий равен текущему уровню.
Следует заметить, что процессор разрешает менее привилегированной процедуре вызвать более привилегированную, но ограничивает доступ разрешенными точками входа. Допустимые точки входа идентифицируются специальными дескрипторами, называемыми шлюзами вызова. Привилегия в шлюзе задается достаточно низкой, что позволяет обращаться в точку входа операционной системы. Размер смещения в шлюзе не учитывается.
Дескрипторы сегментов располагаются в памяти ПЭВМ. Из четырех слов дескриптора одно не используется. Формат дескриптора сегмента процессора 8086 показан на рисунке 6.7.Оно зарезервировано для последующего поколения процессоров (386 и т.д.). В дескрипторе содержится 24-разрядный базовый адрес, 16 разрядов размера сегмента, 3 разряда типа, определяющие атрибут сегмента.
Кроме них имеются битовые поля: Р – присутствие в основной памяти; А– обращение к сегменту; DPL – уровень привилегий дескриптора; S – бит системного сегмента. S=0 системный; S=1 сегмент программы или данных. В поле "Тип" указывается, кодовый это сегмент или данных, разрешена запись в него или запрещена, расширение сегмента осуществляется вниз (для стека) или обычное.
Существуют 4 уровня привилегий сегмента: 0 – высший; 3 – низший. Процессор разрешает менее привилегированной процедуре вызвать более привилегированную, но ограничивает доступ разрешенными точками входа. Допустимые точки входа идентифицируются в процессоре специальными дескрипторами, называемыми шлюзами вызова. Привилегия в шлюзе задается достаточно низкой, что позволяет обращаться в точке входа к операционной системе.
Группа дескрипторов сегментов, расположенных в глобальном адресном пространстве называется глобальной таблицей дескрипторов (GTD), а сегментов, расположенных в локальном адресном пространстве – локальной таблицей дескрипторов (LDT).
Если число задач, выполняемых ЭВМ, равно N, то и число локальных адресов также равно N и соответственно количество LDT также равно N.
GTD и N-LTD располагаются в глобальном адресном пространстве (рис.6.8).
Следует помнить, что сама LDT также представляет собой отдельный сегмент и для его описания требуется дескриптор. Дескриптор LDT хранится в GTD.


6.9. Поддержка многозадачности и виртуальной памяти

В компьютерах, построенных на основе 16-разрядных процессоров первого поколения, работавших под управлением DOS, одновременно выполнялась только одна задача. Процессоры второго поколения получили возможность поддержки многозадачного (мультипрограммного) режима. Обычно в памяти ЭВМ находится одновременно несколько программ: прикладная, ОС, библиотечные подпрограммы и др. При запуске прикладной программы выполняются не только ее команды, но и команды ОС и библиотечных прикладных программ. В процессе выполнения работы до ее окончания осуществляется переход от одной программы к другой. Такое выполнение последовательности команд называется процессом, а выполнение команд одной программы – задачей.
В обычном компьютере имеется только один процессор, поэтому в каждый момент времени он может выполнять команды только одной задачи. Поэтому в многозадачном режиме команды различных задач должны выполняться в режиме разделения времени.
Выполнение задачи может быть приостановлено на любой команде, поэтому необходимо обеспечить перезапуск соответствующей программы. Каждой задаче отводится отдельная область памяти, в том числе и стек для хранения всех данных, используемых в задаче. Кроме того, в памяти должны быть предусмотрены ячейки для хранения содержимого программного счетчика, регистра флагов ФР и регистров общего назначения РОН. Когда выполнение задачи приостанавливается, в них помещается начальные значения указанных регистров. При возобновлении задачи содержимое этих ячеек пересылается в ПС, ФР и РОН процессора, после чего начинается выполнение задачи. Совокупность этих ячеек называется блоком управления задачей. В случае приостановки выполнения команды задачи, информация, необходимая для ее перезапуска, должна сохраняться в блоке управления задачей, который размещается в сегменте состояния задачи (ССЗ – TSS). Для этого сегмента также используется свой дескриптор, который хранится в ГТД. Для выполнения N задач соответственно используется N сегментов состояния задачи. Таким образом, в ГТД хранятся N дескрипторов ЛТД и N дескрипторов ССЗ (TSS).
Когда некоторая задача находится в состоянии прогона, в соответствующую часть регистра задачи (TR) помещается селектор, с помощью которого осуществляется считывание дескриптора ССЗ. Автоматически считанный из ГТД дескриптор ССЗ помещается в регистр дескрипторов сегментов TR, в котором содержится базовый адрес ССЗ.
Сегмент состояния задачи состоит из 22-х слов (44 байта). В нем, помимо начальных значений всех регистров, хранятся также начальные значения указателей стеков 0 -, 1 – и 2-го уровней привилегий. В конце сегмента ССЗ располагается селектор ЛТД данной задачи. При запуске задачи восстанавливается содержимое регистров процессора, а содержимое ЛТД автоматически помещается в селекторную часть РгЛТД.
В верхней части (с начала) сегмента состояния задачи располагаются данные (2 байта) о связи с задачей, которая выполнялась непосредственно перед этой задачей.
При переключении на другую задачу осуществляются следующие действия:
Состояние выполняемой задачи помещается в ССЗ;
Селектор новой задачи – в селекторную часть TR;
Дескриптор ССЗ новой задачи в регистр дескрипторов TR;
Состояние новой задачи посылается в процессор. Кроме того, в процессор посылается селектор ЛТД, с помощью которого можно обратиться к новой ЛТД.
В 80286 эта процедура выполняется аппаратно, на что затрачивается ~180 тактовых импульсов (при f=10 МГц это составляет 18 мкс).
В ССЗ хранится информация об обратной связи, на основании которой указывается задача, вызвавшая вложенную задачу, Т.е., если переключение происходит в результате прерывания, то автоматически устанавливается связь с задачей, выполняемой в момент возникновения прерывания. Таким образом, в случае возврата автоматически осуществляется возвращение к прежней задаче.
Планирование выполнения задач может быть осуществлено в программе управления задачами в ОС. Для этого при запуске программы управления задачами информацию о связи со следующей задачей следует поместить в поле обратной связи ССЗ. (Имеются команды загрузки LTR и сохранения STR регистра задачи.)
С помощью вентилей задачи системные программы могут ограничивать право переключаться на специфические задачи. Вентиль – логический элемент, пропускающий только определенные процессы.
Для реализации мультипрограммного режима в ОС должны быть предусмотрены программы, выполняющие специальные функции. Одной из них является программа управления задачей, которая управляет переходом задачи из одного состояния в другое. Выбор, какая задача будет выполняться следующей, решается планированием задач. Замена задач в состоянии выполнения называется переключением задач. В этом случае в блок управления задачей необходимо передать содержимое ПС, ФР и РОН, а из блока управления новой задачей считать содержимое этих регистров. Однако для реализации этих действий программно требуется много времени. В целях сокращения времени, основные операции целесообразно выполнять аппаратными средствами.
Выбор, какая задача будет выполняться следующей, решается планированием задач. Замена задач в состоянии выполнения называется переключением задач. В этом случае в блок управления задачей необходимо передать содержимое ПС, ФР и РОН, а из блока управления новой задачей считать содержимое этих регистров. Однако для реализации этих действий программно требуется много времени. В целях сокращения времени, основные операции целесообразно выполнять аппаратными средствами.
В процессорах, начиная со второго поколения и выше, реализована аппаратная поддержка виртуальной памяти. Виртуальная память – это способ организации основной памяти большой емкости с помощью внешней памяти. Она позволяет при составлении программы распоряжаться всем пространством адресов, зарезервированных в процессоре. Такие адреса называются виртуальными.
При выполнении программы устройство управления памятью (УУП) преобразует виртуальные адреса в физические. Обычно в основной памяти размещается небольшое количество сегментов, к которым в данной части программы осуществляется обращение, т.е. размещаются только необходимые в данное время сегменты. Индикатором нахождения данного сегмента в основной памяти является бит Р дескриптора сегмента. При ссылке на несуществующие сегменты выполнение программы приостанавливается и производится замена содержимого основной памяти. При этом сегменты, которые не предполагается использовать, посылают во внешнюю память, а на их место размещают требуемые сегменты. Затем возобновляется выполнение приостановленной программы. Функция замены осуществляется ОС.
Для отбора сегментов, которые используются наименее часто применяется бит А.При обращении к сегменту биту А присваивается значение 1. ОС в фиксированный момент времени проверяет значение А, и если оно равно 1, производит приращение содержимое строки справочной таблицы и сбрасывает А. Таким образом, с помощью справочной таблицы ОС отбирает сегменты, которые реже всего используются и поэтому в первую очередь подлежат замене.

6.10 Архитектура процессоров второго поколения

Структурная схема 16-разрядного процессора второго поколения, разработанного фирмой Intel, изображена на рисунок 6.8. Процессор состоит из четырех блоков: адресного AU, шинного BU, исполнительного EU и командного IU, причем все блоки могут работать параллельно.
Шинный блок осуществляет считывание памяти и портов ввода/вывода. Адресный блок вычисляет все адреса и формирует физические адреса. За счет независимой параллельной работы блоков производительность возрастает в 2-3 раза по сравнению с процессором 8086 (при том, что тактовая частота у него возросла всего до 12,5 МГц по сравнению с 5 МГц в 8086). Для использования шин с максимальной эффективностью применяется 6-байтовая очередь команд. При этом осуществляется упреждающее считывание команд, время выполнения которых в АЛУ велико. Результаты дешифрации помещаются в очередь результата. Поэтому командный блок после выполнения одной команды сразу же переходит к выполнению следующей. При наличии команд переходов очередь сбрасывается.

13 EMBED PBrush 1415


Рисунок 6.8 – Структурная схема 16-разрядного процессора второго поколения


Процессор может работать в двух режимах: реальном и защищенном. Реальный режим используется для выполнения программ МП предыдущего поколения и инициализации регистров защищенного режима. Защищенный режим обеспечивает возможность поддержки виртуальной памяти, реализовать механизм привилегий с целью защиты памяти и многозадачную работу.
После подачи питания или сигнала сброса процессор устанавливается в реальный режим. В этом режиме процессор х286 имеет такую же базовую архитектуру, что и 8086, которая работает с большой скоростью. Различие двух режимов состоит в способе вычисления базового адреса.
БИС процессора 80286 имеет встроенное устройство управление памяти УУП. Это устройство оказывает поддержку виртуальной памяти и мультипрограммного режима. Регистровая структура МП имеет вид, изображенный на рисунке 5.9. В защищенном режиме в сегментных регистрах располагается не информация о физическом адресе, а селекторы, указывающие на описатели сегментов. С помощью селекторов, расположенных в сегментных регистрах, центральный процессор получает из локальной или глобальной таблиц дескрипторов описатели, характеризующие размещение и длину используемых сегментов.
Если процедура получения дескрипторов будет осуществляться при выполнении каждой команды, то это приведет к существенному снижению быстродействия. Дескрипторы находятся в ОЗУ и при поступлении нового селектора считываются в регистры дескрипторов. Таким образом, информация о физическом адресе сегмента и его длине при загрузке сегментного регистра загружается в так называемый теневой регистр, который имеется для каждого сегментного регистра. Т.е. каждый сегментный регистр содержит кроме видимой части – 16 битового селектора – другую невидимую часть, имеющую ширину 48 бит (для каждого из четырех селекторов). Аналогичные теневые регистры имеются для регистров глобальной и локальной таблиц дескрипторов.

TI – Table Indicator; RPL – Requested Privilege Level.

Загрузка теневых регистров относительно медленная операция. Так для выполнения команды MOV DS, AX в реальном режиме требуется только два такта, то в защищенном режиме 18.
По сравнению с МП 8086 структура регистров CS, DS, SS и ES, предназначенных для управления памятью, расширена за счет дополнительных регистров, используемых в качестве дескрипторов сегментов. Содержимое дескрипторов не используется непосредственно в программе. Их содержимое автоматически записывается центральный процессор и используется для управления памятью.
Регистр задачи TR указывает задачу, выполняемую в данный момент.
Все пространство виртуальных адресов состоит из локальных адресных пространств, отдельных для каждой задачи, и глобального адресного пространства, общего для всех задач. Системные программы (ОС и др.) хранятся в глобальном адресном пространстве. Пространство виртуальных адресов каждой задачи занимает объем 1 Гбайт =213 сегментов ( 216 – объем сегмента. Для разделения пространства на глобальное и локальное в секторе сегмента выделяется один бит TI (индикатор таблицы: 0 – глобальный, 1 – локальный).
Физические адреса, выдаваемые МП во внешние блоки, являются 24-разрядными (т.е. объем основной памяти может достигать 16 Мбайт). С помощью 24-разрядной базы физического адреса, хранящейся в дескрипторе сегмента, вычисляется физический адрес, который равен базе физического адреса + смещение сегмента.
Одновременно на основании атрибута и размера сегмента, хранящемся в этом же регистре, обнаруживаются сегментные ошибки и ошибки памяти. При их возникновении инициируется обработка исключительной ситуации.
Селектор – это 16-разрядный указатель, с помощью которого выбираются дескрипторы. В логическом адресе селекторная часть определяет индивидуальный дескриптор.
Селектор имеет следующие поля:
Индекс – биты 15-3. Индекс выбирает один из 8192 дескрипторов в таблице дескрипторов; 8192
·8 (число байт в дескрипторе) = 64К – емкость сегмента;
Индикатор таблицы TI – бит 3 определяет таблицу, на которую ссылается селектор: 0 – означает GDT, а 1 – текущую таблицу LDT;
Запрашиваемый уровень привилегий RPL (2-0).
Регистры системных адресов GDTR, IDTR, LDTR и TR служат для обращения к элементам, которые управляют механизмом сегментации памяти.
Такими элементами являются таблицы и сегменты, входящие в структуру защиты памяти МП 286/386:
GDT – таблица глобальных дескрипторов
IDT – таблица дескрипторов прерываний
LDT – таблица локальных дескрипторов
TSS – сегмент состояния задачи.
Регистры GDTR и IDTR содержат 24–разрядные линейные адреса базы и 16-разрядные величины границ GDT и IDT, которые являются глобальными по отношению ко всем задачам. Перед переходом в защищенный режим программа должна создать в ОЗУ таблицу GDT и загрузить регистр GDTR при помощи специальной команды LGDT.
Регистр таблицы локальных дескрипторов LDTR и регистр задачи TR содержит 16-разрядные селекторы сегментов LDT и TSS, которые определены для конкретной задачи. С каждым из них связан программно недоступный регистр дескрипторов сегмента.
В МП 80286 входит регистр слова состояния машины (это не регистр флагов! Он имеется само собой) В его состав входят следующие поля:
PE (Protected Mode Enable) – «защита разрешена». Устанавливается в 1 при работе в виртуальном режиме, 0 – в реальном;
MP – бит присутствия сопроцессора. Если MP=1, то 286 будет учитывать команды WAIT, ESC;
EM – режим эмуляции. Если ЕМ=1, то МП при встрече команды ESC генерирует особый случай отсутствия сопроцессора. Процедура обработки особого случая в случае отсутствия сопроцессора может эмулировать команды сопроцессора программно;
TS – бит “задача переключена”. Устанавливается автоматически, когда МП осуществляет переключение задач.

Процессор имеет различные виды адресного пространства: физическое, логическое и линейное.
Физическое – это реальные адреса, используемые для выбора ячеек микросхем физической памяти, содержащих данные.
Логический адрес состоит из селектора и относительного адреса внутри сегмента.
Линейный адрес – это адрес, сформированный добавлением относительного адреса к базовому адресу сегмента.
Допустим, что процессор выполняет задачу, в которой используется некоторое локальное адресное пространство и ЛТД сегментов, расположенных в нем. Дескрипторы ЛТД-сегментов хранятся в ГТД. При инициировании этой задачи селектор ЛТД, служащий для выбора дескриптора сегмента, автоматически помещается в соответствующее поле регистра ЛТД (РгЛТД). Индекс, содержащийся в селекторе, дает смещение относительно базового адреса ГТД. Дескриптор сегмента имеет длину 4 слова или 8 байт. Индекс помещается в старшие 13 бит селектора. Поэтому смещение в памяти равно:

Смещение=Числовое_значение_индекса
·8 .

При таком способе обращения автоматически считываются дескрипторы сегментов ЛТД, хранящиеся в ГТД, и помещаются в свой РгЛТД. С помощью содержимого этого регистра можно обратиться в ЛТД. Схема преобразования виртуальных адресов в физические изображена на рисунок 6.10.
В селекторной части регистра CS хранится селектор сегмента программы. Дескриптор сегмента программы, указываемый этим селектором, автоматически считывается из ЛТД и помещается в регистр дескрипторов сегментов CS. Содержимое его принимается за базу, а содержимое IP – за смещение, и на основании их значений осуществляется обращение к памяти. Процессор может одновременно обратиться к четырем сегментам. В этих сегментах уже задается смещение, поэтому формирование адреса может осуществляться с высокой скоростью.

Система команд процессора 80286 включает все команды 8086-го процессора и дополнена рядом новых команд:
сохранение константы в стеке, сохранение и восстановление всех регистров PUSHA (Push All – все регистры), POPA;
целочисленное умножение на константу;
сдвиги с указанием счетчика в константе;
вход и выход из процедур ENTER, LEAVE;
контроль диапазона BOUND;
ввод/вывод байта (слова) в строку, одиночный INSB, INSW, OUTSB, OUTSW, или по счетчику в регистре СХ, повторение строковых команд по префиксу REP;
сброс флага переключения задач CTS;
команды управления защитой LGDT, SGDT, LIDT, LMSW, SMSW, доступные в обоих режимах и только в защищенном режиме: LLDT, SLDT, LTR, STR, ... .
Попытка выполнения недействительной команды (или в реальном режиме команды, предназначенной только для защищенного режима) вызывает исключение 6.




6.11. Программирование 16-разрядных микропроцессоров на Ассемблере

Допустимые символы языка ассемблера состоят из прописных и строчных букв (латинских), цифр, специальных знаков +, -, *, /, =, (), [], ’, ’’, ., ;, @, &, ?, <, >, % и символов: перевод строки ПС (ОАН), возврат каретки ВК (ОDН), табуляции (О9Н). Любой другой символ воспринимается как пробел. Наименьшей конструкцией модуля является идентификатор – последовательность букв и цифр (не более 31), начинающийся с буквы. К зарезервированным именам относятся имена регистров, операций, псевдокоманд. Модуль представляет собой последовательность операторов языка, записанных в одной строке и заканчивающихся возвратом каретки и переводом строки. Если в первой позиции оператора стоит символ &, то оператор является продолжением предыдущего.
Операторы разделяются на командные и директивы. Команды порождают одну машинную команду. Директивы (псевдокоманды) содержат управляющую информацию для ассемблера. Оператор команды имеет вид:

{метка:} {префикс} {мнемоника} {операнд(ы)}; { комментарий}.

Значения метки являются текущим значением счетчика в данном сегменте кода, то есть, представляет собой адрес команды. Префикс позволяет формировать байты блокировки LOOK или повторения REP. Мнемоника идентифицирует тип генерируемой команды. В зависимости от функции команды может быть один операнд, два или ни одного. Более двух операндов указывается в макрокоманде. Комментарии поясняют смысл команды.
Директивы ассемблера имеют несколько другой формат:

{имя} директива {операнд(ы)} {; комментарий}

Имя директивы имеет другой смысл по сравнению с меткой и не заканчивается двоеточием. В ряде директив имя отсутствует.
Директивы используются для распределения памяти, связей между модулями, манипуляции с символами и т.д. В отдельных директивах допускаются списки операндов. Операнды могут быть ключевыми словами в директивах PROG, SEGMENT. Для определения макрокоманд используется оператор вида:

MACROCODE имя {операнд(ы)}; {комментарии}

Переменная – это единица данных, имеющая имя. Она имеет три атрибута: сегмент, смещение и тип. Сегмент SEG определяет сегмент, содержащий переменную. Смещение OFFSET, расстояние от начала сегмента до переменной, тип – число байтов переменной (1,2 или 4).
Метка, представляющая имя ячейки памяти, имеет атрибутами сегмент, смещение, расстояние. Константа отличается от переменной и метки тем, что она определяет только число. Символьные цепочки заключаются в апострофы и обычно имеют длину до 255 знаков.
Для определения и инициализации данных предназначены директивы:
DB - определить байт (Define Byte)
DW - определить слово (Define Word)
DD - определить двойное слово (Define Double Word).
Формат директивы:
имя DX <начальное значение>, [< начальное значение>]
Пример определения переменных:

Z1 DB 0ABH ; один байт, равный AB
Z2 DW 1000H ; одно слово, равное 1000
Z3 DD 1235H; 1000H ; младшее слово 1000, старшее 1235.

Для указания произвольного значения ячеек памяти используется символ ? (значение переменной не оговаривается, резервирование ячейки). Для распределения и инициализации нескольких ячеек памяти используется конструкция DUP:
DB 100 DUP(0) ; сто нулевых байтов (Dublicate)
DW 20 DUP(?) ; 20 слов без значения
ADR DD 10 DUP(ADR) ; десять полных адресов
DB 10 DUP(80DUP) ; десять слов, содержащих 80 пробелов

В директивах DW, DD допускаются символьные цепочки длиной 1 и 2 символа, например:
DW ’K1’; DD ’G’.
В выражениях, где запрашивается тип используемой информации, применяются операторы TYPE, LENGTH, SIZE. TYPE (тип) сообщает число байт, отведенных для переменной (1,2,4). LENGTH (длина) определяет число единиц памяти переменной (байт, слов, двойных слов). SIZE (размер) сообщает размер переменной в байтах, причем размер переменной равен длине, умноженной на тип.
В ассемблере вводится понятие логического сегмента, под которым понимается часть программы, которая может включать сегменты для машинного кода, данных и стека. Каждый логический сегмент должен начинаться с директивы SEGMENT и заканчиваться директивой ENDS. Логическому сегменту присваивается имя, данное программистом, и список параметров (атрибутов), которые не обязательны, но необходимы в случае программы, включающие несколько модулей.
Пример определения простого сегмента:
DATA SEGMENT [<список атрибутов>]
F1 DB ?
F2 DW ?
F3 DD ?
DATA ENDS
До использования сегментного регистра в формировании адреса он должен быть инициализирован, для чего используется имя логического сегмента.
Пример:
MOV AX, DATA
MOV DS, AX

До использования стека необходимо инициализировать регистры SS и SP. В общем случае в программе первыми командами являются команды инициализации регистров DS, SS, SP. В языке ассемблера К1810 допускаются вложенные сегменты. Это означает, что если определен некоторый сегмент S1 (парой директив SEGMENT и ENDS), затем определяется сегмент S2, а потом в новой директиве SEGMENT снова появляется сегмент с именем S1, то содержащиеся в новом сегменте данные и (или) команды будут автоматически размещаться за операторами, которые находятся в старом сегменте с именем S2. Вложенный сегмент должен заканчиваться раньше внешнего сегмента.
Параметры директивы SEGMENT.
Выравнивание. Определяет границу начала сегмента. Обычное значение - PARA, по которому сегмент устанавливается на границу параграфа. В этом случае адрес кратен 16. При отсутствии этого операнда ассемблер по умолчанию принимает PARA; адрес сегмента ХХХ0. Бывает: PAGE=ХХ00; WORD=ХХХЕ (четная граница); BYTE=ХХХХ – любая шестнадцатеричная цифра.
Объединение. Определяет, объединяется ли данный сегмент с другими сегментами в процессе компоновки после ассемблирования. Возможны следующие типы объединений:
STACK, COMMON (общий), PUBLIC (общедоступный), AT- и MEMORY.
Все PUBLIC - сегменты, имеющие одинаковое имя или класс, загружаются компоновщиком в смежные области. Все такие сегменты имеют один общий базовый адрес.
Для сегментов COMMON с одинаковыми именами и классами компоновщик устанавливает один общий базовый адрес. При выполнении происходит наложение одного сегмента на другой. Размер общей области определяется самым длинным сегментом.
АТ-параграф: он должен быть определен предварительно. Данный операнд обеспечивает определение меток и переменных по фиксированным адресам в фиксированных областях памяти, таких как ROM или таблица векторов прерываний. Например, для определения адреса дисплейного видеобуфера используется

VIDEO_RAM SEGMENT AT 0B800h.

Для сегмента стека используется объединение STACK.
Если программа не должна объединяться с другими программами, то указание типов объединения должно быть опущено (за исключением STACK).
3. Класс. Данный элемент, заключенный в апострофы, используется для группирования относительных сегментов при компоновке. Он может содержать любое имя и используется ассемблером для обработки сегментов, имеющих одинаковые имена и классы.
Типичными примерами являются классы STACK’ и CODE’. (См. П. Абель с. 55 и 396).
Директива ASSUME (присвоить). Необходимая ассемблеру информация о значении сегментных регистров сообщается в директиве ASSUME, которая имеет формат:

ASSUME , []

Директива ASSUME DS: data1 требуется для транслятора, указывая ему, что сегмент сопоставляется с регистром DS. Описание в директиве ASSUME соответствия сегментного регистра DS сегменту данных избавляет нас от необходимости указывать в каждой строке, содержащей ссылку на имя данных, в каком сегментных регистров находится сегментный адрес этих данных. По умолчанию будет подразумеваться регистр DS. Если регистр ES в директиве ASSUME не описан, его следует в явной форме указывать во всех строках программы, где выполняется адресация к дополнительному сегменту данных:
Mov BX, ES: mas[DI]
Однако, и в этом случае занесение в регистр ES требуемого сегментного адреса должно быть сделано в явном виде:
mov ax, data1
mov ex, ax

Поле SR содержит имя одного из сегментных регистров CS, DS, SS, ES, а базовое значение указывает на начало области памяти, адресуемой через этот регистр. Одним из наиболее часто используемых типов базового значения является имя сегмента, например
ASSUME DS: DATA
Такая директива сообщает ассемблеру, что к определенным в сегменте DATA переменным можно обратиться через сегментный регистр DS. Директива ASSUME необходима перед использованием сегментных регистров и перед каждой точкой в программе, в которой может модифицироваться содержимое сегментных регистров. Если какой-либо сегмент не будет использован в модуле, то директива будет иметь вид ASSUME NOTHING.
Директива ORG (origin - начало). Основной внутренней переменной ассемблера является счетчик адресов, который при ассемблировании выполняет функцию, аналогичную функции программного счетчика при выполнении программ. Этот счетчик сообщает ассемблеру адрес следующей ячейки памяти (имеется в виду смещение в сегменте), которая предназначена для размещения следующего байта команды или данных.
Первое появление директивы <имя> SEGMENT определяет начало сегмента с заданным именем. При этом организуется новый счетчик ячеек, в который загружается нулевое значение, так как первый байт в сегменте имеет нулевое смещение. При распределении каждого следующего байта производится инкремент счетчика ячеек.
Директива ENDS с тем же именем отключает данный счетчик до тех пор, пока этот же сегмент не будет открыт еще одной директивой SEGMENT. В этом случае счетчик продолжает счет распределяемых байт со старого значения.
Текущее значение счетчика адресов может быть принудительно изменено программистом с помощью директивы ORG <выражение>. При выполнении директивы ORG вычисляется значение выражение и полученный результат загружается в счетчик ячеек (адресов).
Ассемблирование следующих команд или элемента данных производится по полученному адресу (смещению в текущем сегменте), который изменяется в диапазоне 0-65535 (вычисление осуществляется по модулю 64К).
Директива EQU. Директива позволяет определить символические имена для часто используемых выражений. Формат директивы:
<имя> EQU <выражение>
Поля выражения может определять константы, адреса, регистры и даже мнемокоды макрокоманд. Именам целесообразно придавать содержательный смысл. Допустим, в программе необходимо многократно применять размер таблицы. Тогда его можно определить:
SIZE TABL EQU 100; 100 – размер таблицы.
Затем можно использовать имя SIZE TABL в любой команде, где требуется использовать этот размер. Такой прием улучшает понимание программы, а при расширении таблицы достаточно заменить в директиве EQU число 100 другим размером и произвести повторное ассемблирование программы. Ассемблер автоматически заменит каждое появление в новой команде SIZE TABL новым размером.
Присвоенные имена сохраняют одно и тоже значение во всей программе, если не будут отменены директивой PURGE, которая имеет формат
PURGE <имя>, [<имя>]
Если какое-то имя удалено, то с помощью директивы PURGE, его можно переопределить. Пример использования директивы EQU:
CR EQU ODH ; численная константа
LF EQU OAH
BET EQU ALPHA [SI]+3 ; адресное выражение
COUNT EQU CX ; регистр

Имена, присвоенные директивами EQU, можно использовать в любых операторах исходного модуля, например:
MOV CL, LF ; загрузить в CL значение OA
INC COUNT ; инкремент содержания регистра CX,
; используемого в качестве счетчика.
Процедура (замкнутая подпрограмма) представляет собой законченную командную последовательность, которая приводится в действие командой вызова CALL. Процедура является одним из средств разработки модульных программ. Каждая процедура допускает автономную отладку, что позволяет ускорить разработку и отладку всей прикладной программы.
Команда CALL содержит метку одной из команд процедуры. Метка в процедуре, которой передает управление команда CALL, называется точкой входа процедуры. Процедура выполняется до тех пор, пока не встретится команда возврата RET.
Процедура обычно разрабатывается как функциональный блок, который формирует набор выходных данных путем преобразования четко определенных входных данных, называемых параметрами. Поэтому суть действий с процедурами сводится к передаче им параметров и получении из них результатов. Для организации процедур в языке ассемблера предназначены директивы PROC и ENDP. Директива PROC отмечает точку входа процедуры, а директива ENDP – окончание процедуры.
Формат этих директив имеет вид:
[имя] PROC [тип]
.
. тело процедуры
.
[имя] ENDP
Имя представляет точку входа в процедуру. Тип процедуры (NEAR или FAR) (по умолчанию NEAR) используется ассемблером для определения вида генерируемой команды CALL для вызова процедуры. Если указан тип NEAR, то процедура находится в том же сегменте кода, в котором находятся все команды CALL, вызывающие эту процедуру. В этом случае ассемблер генерирует команду внутрисегментного вызова, то есть машинная команда CALL содержит только смещение точки входа.
Если указан тип FAR, процедура находится в сегменте, отличающимся от того сегмента кода, в котором находятся команды вызова CALL. То есть ассемблер должен генерировать длинную команду межсегментного вызова, которая содержит базу и смещение точки входа. При передаче управления в стеке приходится запоминать, а затем восстанавливать содержимое регистров CS и PC.
В соответствии с двумя форматами команд вызова необходимы и две разновидности команды возврата RET. Ассемблер определяет генерируемую разновидность команды RET на основе типа, указанного в директиве PROC.
Пример определения процедуры:
SRED PROC NEAR
MOV CX, AX; передать в
ADD CX, DX; прибавить к
RCR CX,1; сдвинуть вправо (разделить на 2)
RET
SRED ENDP

Эта процедура определяет среднее значение содержимого регистров DX и AX помещает его в CX. Для вызова процедуры используется команда CALL SRED.
К переменным или меткам внутри тела процедуры можно обращаться из любого места программы. Для предотвращения случайного выполнения процедуры без вызова, ее рекомендуется размещать выше тех программ, которые ее вызывают, а также избегать вложенных определений PROG - ENDP.
Наиболее употребляемые директивы ассемблера МП 8086 приведены в табл.6.1.

Таблица 6.1 – Директивы ассемблера

Название
(назначение)
Запись/Пример
Комментарии

Определение данных
[имя] Dn операнд; [комментарий]
X1 DB 25
Y2 DB ?
Z DB 11, 12, 13
DD ?
DT ?
MON DB 01, JAN’, 02, FEB’, 03, MAR’

Х1:=25
У2 не определен
Z:=11; Z+1:=12;
Z+2:=13


Определение повторяющихся констант

[имя] Dn число повтор. UP(выражение)
DW 10 DUP(?)
DB 5 DUP(14)
DB 3 DUP (4DUP(8))

10 неопредел. слов
5 байт=ОЕН
12 восьмерок

Задание сегмента



Завершение сегмента
[имя] SEGMENT [параметры]

STACKSG SEGMENT PARA STACK Stack’
DATASG SEGMENT PARA Data’
CODESG SEGMENT PARA Code’
.
имя ENDS


Процедура



Завершение
процедуры
[имя процедуры] PROC FAR или NEAR
.
..
RET
Имя процедуры ENDP



Присвоение
ASSUME операнды
ASSUME SS::имя_стека,CS::имя_сегмента, DS::имя_ сегмента, ES::имя_сегмента

Установка текущего значения IP
ORG выражение
ORG100H
Программа размещается с адреса 100Н.


Управление
листингом
PAGE кол. строк, кол. символов
PAGE 60,132
TITLE текст (напр., имя программы)
По умолчанию
PAGE 66,80
Вверху каждого листа будет напечатан текст.

Присвоение имени програмы
NAME имя



6.12. Оформление и размещение в памяти ассемблерных программ
Тексты исполняемых программ могут быть представлены в ЕХЕ- или СОМ форматах. Различие между программами в ЕХЕ- и СОМ-файлах заключается в следующем.
Размер программы. Программа в ЕХЕ может иметь любой размер, в то время как СОМ-файл ограничен размером одного сегмента (
·64к). Размер СОМ-файла всегда меньше, чем размер соответствующего ЕХЕ-файла, так как в СОМ-файле отсутствует заголовок (512 байт) ЕХЕ-файла. Заголовок хранится на диске в начале ехе-файла. В заголовке содержится информация о размере выполняемого модуля, области загрузки в памяти, адрес стека и относительное смещение. В нем также указывается число байтов в последнем блоке ехе-файла, число настраиваемых параметров, количество параграфов в заголовке и некоторые другие данные.
Сегмент стека. В ЕХЕ следует задавать сегмент стека, в то время как СОМ-программа генерирует стек автоматически.
Сегмент данных. В ЕХЕ-программах обычно определяется сегмент данных, а регистр DS инициализируется адресом этого сегмента. В СОМ-программах все данные должны быть определены в сегменте кода.
Инициализация. В ЕХЕ-программе следует записать 0-слово в стек и инициализировать регистр DS. Так как в СОМ стек и сегмент данных не определены, то эти шаги отсутствуют.
При запуске СОМ-программы сегментные регистры содержат адрес префикса программного сегмента (256 байт=100Н), который резервируется DОS непосредственно перед СОМ- или ЕХЕ –программой в памяти. Так как адресация начинается со смещения 100Н от начала префикса, то в программе после директивы SEGMENT следует вносить директиву ORG 100H.
Для преобразования ЕХЕ-файла в СОМ-файл используется программа ЕХЕ2BIN.
Если в программе отсутствует явное объявление стека, то система сама создает стек по умолчанию в конце сегмента команд. Эот объясняется следующим образом. Если запустить программу, то можно увидеть (с помощью отладчика), что в SS находится тот же адрес, что и в CS, а в SP=0. Первая же команда PUSH уменьшает содержание SP на 2, то есть поместит в SP-2 которое равно FFFEh (0-2). При дальнейшей записи в стек его указатель будет смещаться в сторону меньших адресов. При интенсивном использовании стека в программе может получиться, что стек дорастет до последних команд сегмента команд и начнет затирать эти команды. В связи с этим следует использовать отдельный сегмент стека SS.
При размещение .ЕХЕ-программы в памяти регистры CS и SS указывает на начало сегмента команд (DOS делает автоматически). Поскольку сегмент данных оказывается не адресуемым, то необходимо инициализировать регистр DS (и ES).

begin: mov ax, data; data – начало сегмента данных
mov ds, ax
push DS
pop ES
.
mov ax, 4c00h; функция завершения программы
int 21h; вызов DOS

Префикс программного сегмента PSP: первые два байта префикса программного сегмента содержат команду INT20h завершение программы (DOS восстанавливает векторы критических прерываний по значениям, хранящимся в PSP; очищает буфер файлов и передает управление процедуре завершения). Затем указывается общий размер доступной памяти XXXXOh.
Программа в памяти начинается с префикса программного сегмента (PSP), который образуется и заполняется DOS в процессе загрузки программы в память. Затем в памяти располагаются сегменты в том порядке, как они объявлены в тексте программы (рисунок 5.11а).

В процессе загрузки в память сегментные регистры автоматически инициализируется следующим образом: ES и DS указывают на начало PSP. Поэтому перед началом выполнения программы нужно сохранить их значения, чтобы после окончания можно было обратиться к PSP. Потом размещается адрес подпрограммы завершения, а также адреса п/п реакции на Ctrl/Break, на фатальную ошибку.
В ячейках с 80 по FF располагается буфер передачи данных, который используется как буферная область ввода/вывода для текущего дисковода

13 EMBED PBrush 1415


а)
б)

Рисунок 6.11 – Схема размещения программ ЕХЕ (а) и СОМ (б) в памяти


Схема размещение СОМ-программы в памяти показано на рисунке 5.11б. Под команды, данные и стек выделяется только один сегмент. В начале сегмента размещается префикс программного сегмента PSP. Заполняет PSP операционная система DOS, но место под него в начале программы должен зарезервировать программист. В программе нет необходимости инициализировать регистр DS, поскольку его, как и другие сегментные регистры инициализирует ОС.

Пример 1 программы на ассемблере МП 8086.
NAME EXAMPLE
ASSUME CS: CODE, SS: STACK, DS: DATA
DATA SEGMENT
VAR-1 DW 0; определить и инициализировать
VAR-2 DW 0; две переменные
DATA ENDS

STACK SEGMENT
DW 10DUP(?); зарезервировать 10 слов
STK_TOP LABEL WORD; вершина стека
STACK ENDS

CODE SEGMENT
START: MOV AX, DATA; инициализация регистров DS и SS
MOV DS,AX
MOV AX, STACK
MOV SS, AX
MOV SP, OFSET STK_TOP
PROG: PUSH AX; заполнить (AX)
MOV AX, VAR-1; увеличить на 5 значение VAR-1
ADD AX,5
MOV VAR-2, AX; присвоить VAR-2
POP AX; восстановить AX
CODE ENDS
END START; конец исходного модуля

В первой строке программы находится директива NAME (наименовать), которая присваивает внутреннее имя объектному модулю, генерируемому ассемблером. Имя модуля EXAMPLE нельзя путать с именем файла – оно хранится внутри объектного файла.
Программа состоит из трех различных логических сегментов DATA, STACK, CODE. Каждый сегмент начинается с директивы SEGMENT и заканчивается директивой ENDS, причем обе директивы для одного и того же сегмента имеют одинаковые имена. Логические сегменты соответствуют физическим сегментам в памяти, но привязки логических сегментов к физическим адресам памяти в этом исходном модуле нет.
Директива ASSUME сообщает ассемблеру, что регистр CS будет содержать базовый адрес сегмента CODE, а регистр DS – базовый адрес сегмента DATA. Регистр ES не используется, поэтому указание о нем в директиве отсутствует.
Сегмент данных DATA содержит всего две переменные, которые инициализированы с помощью директив DW. В сегменте STACK резервируются 10 слов памяти, т.е. для стека в программе резервируется 10 слов (глубина стека 10 слов). Директива LABEL (отметить) определяет имя STK_TOP, которое идентифицирует вершину пока пустого стека.
Сегмент кода начинается с пяти команд, обеспечивающих инициализацию сегментных регистров и указателя стека SP. Выражение OFFSET STK_TOP представляет собой смещение метки STK_TOP от начала содержащего ее сегмента STACK. Собственно программа начинается с метки PROG. Директива END с операндом START сообщает ассемблеру о достижении конца исходного модуля и необходимости начать выполнение программы с команды, отмеченной меткой START.
Пример 2 ассемблерной программы:
Page 60, 132
TITLE EXAMPLE (EXE)
;--------------------------------------------
STACKSG SEGMENT PARA STACK stack’; Указывать обязательно, т.к. по ней осуществляется. ; автомати ческая инициализация SS и SP
; Если тип объединения STACK, то при компоновке ; одноименные сегменты располагаются рядом, при ;COMMON – накладываются друг на друга
DW 10 DUP(?);
STACKSG ENDS
;--------------------------------------------------------------------------------------
DATASG SEGMENT PARA Data’
NAME1 DB ASSEMBLERS’;
NAME2 DB 10DUP( ) ; зарезервировать 10 слов
DATASG ENDS
;--------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------
CODESG SEGMENT PARA Code’ ; для правильной работы LINK необходимо указать Code’
BEGIN PROC FAR

ASSUME CS:CODESG; DS:DATASG, SS:STACKSG, ES:DATASG
; Показывает транслятору, какие регистры закрепляются за
; сег ментами, которые затем используются по умолчанию
PUSH DS ; записать DS в стек
SUB AX, AX ; записать 0 в стек
PUSH AX
MOV AX, DATASG ; регистры CS и SS инициализируются автоматически
MOV DS, AX
MOV ES, AX
; --------------------------------------------------------------------------------------------------------
MOV AX, 0123H
ADD AX, 0025H
MOV BX, AX
ADD BX, AX
SUB AX, AX
NOP
; ---------------------------------------------------------------------------------------------------------
CLD
LEA SI, NAME1
LEA DI, NAME2
MOV CX, 10
REP MOUSB ; переслать 10 байтов из NAME1 NAME2
; ----------------------------------------------------------------------------------------------------------
RET ; возврат в DOS
BEGIN ENDP
CODESG ENDS
END [BEGIN]; операнд может быть опущен, если эта программа должна быть скомпонована
;с другим (главным) модулем. Для обычных программ операнд содеожит имя, указанное в ;директивве PROG, (то есть в точку входа в главную процедуру). Этим адресом
; загружается IP.

Программа в формате ЕХЕ, созданная компоновщиком, состоит из следующих двух частей: 1) заголовка – записи, содержащей информацию по управлению и настройке программы, и 2) собственно загрузочного модуля.
В заголовке находится информация о размере выполняемого модуля, области загрузки в памяти, адресе стека и относительных смещениях, которые должны заполнить машинные адреса в соответствии с относительными 16-ричными позициями.
Заголовок имеет минимальный размер 512 байт и может быть больше, если программа содержит большое число настраиваемых элементов. Позиция 06 в заголовке указывает число элементов в выполняемом модуле, нуждающихся в настройке. Каждый элемент настройки в таблице, начинающейся в позиции 1С заголовка, состоит из двухбайтовых величин смещений и двухбайтовых сегментных значений.
Операционная система строит префикс программного сегмента (PSP) следом за резидентной частью COMMAND.COM, которая выполняет операцию загрузки. Затем COMMAND.COM осуществляет следующее:
Считывает форматированную часть заголовка в память;
Вычисляет размер выполнимого модуля (общий размер файла в позиции 04 минус размер заголовка в позиции 08) и загружает модуль в память с начала сегмента;
Считывает элементы таблицы настройки в рабочую область и прибавляет адрес начала сегмента;
Устанавливает в регистрах SS и SP значения из заголовка и прибавляет адрес начала сегмента;
Устанавливает в регистрах DS и ES сегментный адрес префикса программного сегмента;
Устанавливает в регистре CS адрес PSP и прибавляет величину смещения в заголовке (позиция 16) к регистру CS. Если сегмент кода непосредственно следует за PSP, то смещение в заголовке равно 256 (100h). Регистровая пара CS:IP содержит стартовый адрес в кодовом сегменте, т.е. начальный адрес программы.
После инициализации регистры CS и SS содержат правильные адреса сегментов, а регистр DS (и ES) должен быть настроен в программе на собственный сегмент данных.
При завершении программы команда RET заносит в регистр IP нулевое значение, которое было помещено в стек в начале выполнения программы. В регистровой паре CS:IP в этом случае получается адрес, который является адресом первого байта PSP, где расположена команда INT 20h. Когда эта команда будет выполнена, управление перейдет в DOS.

Пример 3 оформления СОМ-программы
Page 60,80
TITLE EXAMPLE_COM для пересылки и сложения
Codes SEGMENT PARA Code’
ASSUME CS:CODESG, DS:CODESG, SS:CODESG, ES:CODESG
ORG 100H ; начало в конце PSP
BEGIN: JMP MAIN ; обход через данные
;---------------------------------------------------------------------------------
ALPHA DW 250
BETA DW 125
GAMMA DW ?
;---------------------------------------------------------------------------------
MAIN PROC NEAR
MOV AX, ALPHA
ADD AX, BETA
MOV GAMMA, AX
RET ; вернуться в DOS
; можно вместо RET INT20H
MAIN ENDP
Codes ENDS
END BEGIN

В отличие от ЕХЕ-файла СОМ-файл не содержит заголовка на диске. Так как организация СОМ-файла намного проще, то для DOS необходимо знать только то, что тип файла СОМ. Как уже упоминалось выше, загруженным в память СОМ- и ЕХЕ-файлам предшествует префикс программного сегмента. Первые два байта этого префикса содержат команду INT20h (возврат в DOS).
При загрузке СОМ-программы DOS устанавливает в четырех сегментных регистрах адрес первого байта PSP. Затем устанавливается указатель стека на конец сегмента объемом 64 Кбайт (FFFE), т.е. на конец памяти. В вершину стека заносится нулевое слово. В командный указатель помещается 100Н (размер PSP). После этого управление передается по адресу регистровой пары CS:IP, т. е. на адрес непосредственно после PSP. Этот адрес является началом выполняемой СОМ-программы и должен содержать выполнимую команду.
При выходе из программы команда RET заносит в регистр IP нулевое слово, которое было записано в вершину стека при инициализации. В этом случае в регистровой паре CS:IP получается адрес первого байта PSP, где находится команда INT20h. При выполнении этой команды управление передается в резидентную часть COMMAND.COM. Если программа завершается по команде INT20h (Завершение программы, управление передается DOS) вместо RET, то управление непосредственно передается в COMMAND.COM.
Примечание.
Коды команд, данные и стек в СОМ-программах располагаются в одном сегменте. Вследствие этого СОМ-программа занимает в памяти 64 Кбайт, независимо от ее размера на диске. Этот факт является одной из причин предпочтительного использования ЕХЕ-формата.
Хотя ЕХЕ-файл может занимать больше дискового пространства (т.к. в него включена дополнительная информация), небольшие ЕХЕ-программы занимают при исполнении в памяти значительно меньше места, чем эквивалентные им СОМ-программы.
СОМ-формат файла наследуется из ОС СР/М. Полезный в ряде случаев, формат не рекомендуется использовать для РС-программ.
Команды СОМ-программ загружаются в память с адреса 100h относительно начала кодового сегмента программы. По такому же адресу загружаются программы в ОС СР/М, на которой во многом основана DOS и которая используется в компьютерах, имеющих 64К общей памяти. Под управлением DOS СОМ-программы работают в режиме псевдо-СР/М адресного пространства, несмотря на то, что современные компиляторы имеют объем памяти в десятки раз больший. Т.о. сегодня уже нет разумных причин для этого устаревшего формата файла.
Компания Microsoft объявила о своем намерении отказаться от использования СОМ-формата, хотя эти попытки не являются успешными.
7. Параллельные вычислительные системы. Суперкомпьютеры
7.1. Типы параллельных вычислительных систем

Обычно компьютеры выполняют операции последовательно. Программа принимает один поток данных и выполняет один поток инструкций по обработке этих данных. Такие системы называю SISD (Single Instruction Single Data). Инструкции в них выполняются последовательно и каждая инструкция оперирует минимальным количеством данных.
Повышение производительности компьютеров может быть повышено за счет параллельного выполнения операций над параллельным потоком данных.
Параллельные вычислительные системы это аппаратные компьютерные, а также программные системы, реализующие тем или иным способом параллельную обработку данных на многих вычислительных узлах. Идея распараллеливания вычислений основана на том, что большинство задач может быть разделено на набор меньших задач, которые могут быть решены одновременно. Обычно параллельные вычисления требуют координации действий. Параллельные вычисления существуют в нескольких формах: на уровне битов, на уровне инструкций, параллелизм данных и параллелизм задач.
1) Параллелизм на уровне битов.
Эта форма параллелизма базируется на увеличении размера машинного слова. Увеличение размера машинного слова уменьшает количество операций, необходимых процессору для выполнения действий над переменными, чей размер превышает размер машинного слова. К примеру: на 8-битном процессоре нужно сложить два 16-битных целых числа. Для этого вначале нужно сложить младшие 8 бит чисел, затем сложить старшие 8 бит и к результату их сложения прибавить значение флага переноса. Итого 3 инструкции. С 16-битным процессором можно выполнить эту операцию одной инструкцией.
Исторически 4-битные микропроцессоры были заменены 8-битными, затем появились 16-битные и 32-битные. 32-битные процессоры долгое время были стандартом в повседневных вычислениях. С появлением технологии x86-64 для этих целей стали использовать 64-битные процессоры.
2) Параллелизм на уровне инструкций
Компьютерная программа это, по существу, поток инструкций, выполняемых процессором. Но можно изменить порядок этих инструкций, распределить их по группам, которые будут выполняться параллельно, без изменения результата работы всей программы. Данный приём известен как параллелизм на уровне инструкций. Продвижения в развитии параллелизма на уровне инструкций в архитектуре компьютеров происходили с середины 1980-х до середины 1990-х.
Классический пример пятиступенчатого конвейера на RISC-машине (IF = выборка инструкции, ID = декодирование инструкции, EX = выполнение инструкции, MEM = доступ к памяти, WB = запись результата в регистры).



Современные процессоры имеют многоступенчатый конвейер команд. Каждой ступени конвейера соответствует определённое действие, выполняемое процессором в этой инструкции на этом этапе. Процессор с N ступенями конвейера может иметь одновременно до N различных инструкций на разном уровне законченности. Классический пример процессора с конвейером это RISC-процессор с 5-ю ступенями: выборка инструкции из памяти (IF), декодирование инструкции (ID), выполнение инструкции (EX), доступ к памяти (MEM), запись результата в регистры (WB). Процессор Pentium 4 имеет 35-тиступенчатый конвейер.[5]
Пятиступенчатый конвейер суперскалярного процессора, способный выполнять две инструкции за цикл. Может иметь по две инструкции на каждой ступени конвейера, максимум 10 инструкций могут выполняться одновременно.

Некоторые процессоры, дополнительно к использованию конвейеров, обладают возможностью выполнять несколько инструкций одновременно, что даёт дополнительный параллелизм на уровне инструкций. Возможна реализация данного метода при помощи суперскалярности, когда инструкции могут быть сгруппированы вместе для параллельного выполнения (если в них нет зависимости между данными). Также возможны реализации с использованием явного параллелизма на уровне инструкций: VLIW и EPIC.
3) Параллелизм данных.
Основная идея подхода, основанного на параллелизме данных, заключается в том, что одна операция выполняется сразу над всеми элементами массива данных. Различные фрагменты такого массива обрабатываются на векторном процессоре или на разных процессорах параллельной машины. Распределением данных между процессорами занимается программа. Векторизация или распараллеливание в этом случае чаще всего выполняется уже на этапе компиляции перевода исходного текста программы в машинные команды. Роль программиста в этом случае обычно сводится к заданию настроек векторной или параллельной оптимизации компилятору, директив параллельной компиляции, использованию специализированных языков для параллельных вычислений.
4) Параллелизм задач.
Стиль программирования, основанный на параллелизме задач, подразумевает, что вычислительная задача разбивается на несколько относительно самостоятельных подзадач и каждый процессор загружается своей собственной подзадачей.

Распределённые операционные системы.
Распределённая ОС, динамически и автоматически распределяя работы по различным машинам системы для обработки, заставляет набор сетевых машин обрабатывать информацию параллельно. Пользователь распределённой ОС, вообще говоря, не имеет сведений о том, на какой машине выполняется его работа.
Распределённая ОС существует как единая операционная система в масштабах вычислительной системы. Каждый компьютер сети, работающей под управлением распределённой ОС, выполняет часть функций этой глобальной ОС. Распределённая ОС объединяет все компьютеры сети в том смысле, что они работают в тесной кооперации друг с другом для эффективного использования всех ресурсов компьютерной сети.
Наиболее широко применяется классификация вычислительных систем, основанная на количестве потоков входных данных и количестве потоков команд, которые эти данные обрабатывают (рисунок 7.1):
Один поток инструкций-несколько потоков данных SIMD;
Несколько потоков инструкций-один поток данных MISD;
Несколько потоков инструкций-несколько потоков данных MIMD.
MISD (Multiple Instruction Single Data): разные потоки инструкций выполняются с одними и теми же данными. Обычно такие системы не приводят к ускорению вычислений, так как разные инструкции оперируют одними и теми же данными, в результате на выходе системы получается один поток данных. К таким системам относят различные системы дублирования и защиты от сбоев, когда, напри­мер, несколько процессоров дублируют вычисления друг друга для надёжности. Иногда к этой категории относят конвейерные архитектуры. Среди процессоров производства Intel, конвейер присутствует начиная с процессора Pentium.



Рисунок 7.1 – Классификация вычислительных систем


SIMD (Single Instruction Multiple Data): один поток инструкций выполняет вычисления одновременно с разными данными. Например, выполняется сложение одно­временно восьми пар чисел. Такие компьютеры называются векторными, так как подобные операции выполняются аналогично операциям с векторами (когда, например, сложение двух векторов означает одновременное сложение всех их компонентов). Зачастую векторные инструкции присутствуют в дополнение к обычным «скалярным» инструкциям, и называются SIMD-расширением (или векторным расширением). Примеры популярных SIMD-расширений: MMX, 3DNow!, SSE и др.
MIMD (Multiple Instruction Multiple Data): разные потоки инструкций оперируют различными данными. Это системы наиболее общего вида, поэтому их проще всего использовать для решения различных параллельных задач.
MIMD-системы, в свою очередь, принято разделять на системы с общей памятью (несколько вычислителей имеют общую память) и системы с распределенной памятью (каждый вычислитель имеет свою память; вычислители могут обмениваться данными). Кроме того, существуют системы с неоднородным доступом к памяти (NUMA) в которых доступ к памяти других вычислителей существует, но он значительно медленнее, чем доступ к «своей» памяти.


7.2. Системы с общей памятью

Системами с общей памятью называют системы, в которых несколько процессоров имеют общую оперативную память. Чаще всего встречающиеся системы этого типа компьютеры с многоядерными процессорами (multi-core). Преимущества таких систем:
Не требуется обмена данными: данные, помещённые в память одним процессором, автоматически становятся доступными другим процессорам. Соответственно, система не должна тратить время на пересылку данных.
Простота написания программы: можно, например, создать несколько вычислительных потоков, или же снабдить программу специальными директивами (например, технология OpenMP), которые подскажут компилятору, как распараллеливать программу. Кроме того, возможно полностью автоматическое распараллеливание программы компилятором.
Компактность систем: может быть реализована в виде нескольких процессоров на одной материнской плате, и/или в виде нескольких ядер внутри процессора.
Недостатки:
Допустим, у нас есть объект, содержащий числа A и B, и для правильной работы объекта нужно, чтобы A + B всегда было равно нулю. Если первый процесс изменит A, и не успеет изменить B прежде, чем второй процесс прочтёт A и B, то второй процесс получит неправильный объект, в котором A + B не равно нулю. Для решения подобных проблем можно использовать критические секции. Если поток инструкций первого процесса входит в критическую секцию с идентификатором N, то поток инструкций другого процесса не сможет войти в критическую секцию с тем же идентификатором, и будет ждать, пока первый процесс не выйдет из этой секции.
Проблема совместного доступа к памяти: нужно осторожно работать с теми участками памяти, для которых возможно одновременное выполнение записи одним процессором и другой операции (записи или чтения) другим процессором.
Проблема синхронности кэшей: для ускорения доступа к памяти процессоры снабжаются кэшами. Если один процессор изменил данные в оперативной памяти, и эти данные прокэшированы другими процессорами, то их кэши должны автоматически обновиться. Данная проблема отсутствует в многоядерных процессорах, использующих общий кэш.
Проблема медленного обращения к оперативной памяти и её ограниченно­го объёма: процессор работает быстро, а память медленно, поэтому даже одному процессору приходится ждать загрузки данных из оперативной памяти. Если же процессоров несколько, то им приходится ждать ещё дольше. Скорость работы каждого процессора с памятью становится тем меньше, чем большее число процессоров имеется в системе. Кроме того, объём памяти не может быть сделан сколь угодно большим, так как для этого придётся увеличивать разрядность шины памяти.
Проблема масштабируемости: очень сложно сделать подобную систему с больши
·м числом процессоров, так как очень сильно возрастает стоимость и падает эффективность работы из-за описанных выше проблем. Практически все подобные системы имеют
· 8 процессоров.

7.3. Системы с распределённой памятью

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

Системы с распределённой памятью, в которых каждый вычислительный узел представляет собой полноценный компьютер со своей копией операционной системы, называют кластерными (или «кластерами»). Кластеры обычно представляют собой шкафы с компактными системными блоками, которые соединены друг с другом каналами связи (посредством специальных коммутаторов), передающими данные со скоростью 10 ГБит/сек и более.
Преимущества:
Простота и дешевизна построения: можно взять большое количество обычных компьютеров, соединить их каналами связи (например, Ethernet), и получить кластер.
Эффективное решение задач, требующих малого обмена данными: каждый компьютер будет работать в полную мощность, не ожидая, пока освободится доступ к оперативной памяти.
Возможность решать задачи, требующие очень больших объёмов оперативной памяти: суммарный объём памяти системы можно сделать сколь угодно большим. Требуется лишь, чтобы задача разбивалась на относительно независимые подзадачи.
Возможность масштабирования: можно соединить сколько угодно вычисли­тельных узлов вместе, при этом стоимость системы будет пропорциональна числу узлов. В связи с этим большинство самых мощных вычислительных систем в мире являются кластерными.
Недостатки:
Проблема обмена данными: обмен данными в таких системах обычно идёт очень медленно по сравнению со скоростью вычислений (и с большими задержками). Поэтому задачи, требующие интенсивного обмена, невозможно решить на таких системах эффективно.
Сложное программирование: программист должен продумать обмен данными, который будет присутствовать в системе, должен сам запрограммировать этот обмен. При неправильном программировании велика вероятность взаимных блокировок: когда, например, два процессора ждут данных друг от друга. Проблема блокировок есть и в системах с общей памятью, но здесь она проявляет себя гораздо чаще. Автоматическая организация обмена данными возможна лишь для некоторых частных случаев.
Большой размер систем и большое энергопотребление: кластерные системы в настоящее время занимают целые комнаты и даже здания.


7.4. Гибридные системы

Гибридные вычислительные машины, сочетающие особенности аналоговых и цифровых устройств. Гибридные вычислительные машины (ГВМ) оперируют с информацией, представленной как в цифровой, так и аналоговой форме. ГВМ предназначены для решения ряда конкретных задач, когда требуется объединить достоинства принципов построения ЦВМ и аналоговых вычислительных машин (АВМ). ГВМ, содержащие как аналоговые, так и цифровые вычислительные устройства, совмещают в себе достоинства АВМ и ЦВМ. В таких машинах цифровые устройства обычно служат для управления и выполнения логических операций, а аналоговые устройства для решения дифференциальных уравнений.
Современная гибридная вычислительная машина характеризуется глубоким взаимным проникновением цифровых и аналоговых схем и работой их в едином вычислительном процессе с целью использования преимуществ цифровой и аналоговой вычислительных машин. При этом, как правило, аналоговые средства используются для собственно вычислений, а цифровые для управления, а также переработки логической информации.
Особое место занимают гибридные вычислительные машины, которые перерабатывают цифровую информацию с помощью методов, используемых при построении АВУ. На гибридной вычислительной машине можно успешно решать сложные нелинейные двухмерные задачи нестационарной теплопроводности, которые при такой постановке пока не могут быть решены другими методами.
Расчленение вычислительного процесса в ходе решения задачи на отдельные операции, выполняемые АВМ и ЦВМ в комплексе, уменьшает объём вычислительных операций, возлагаемых на ЦВМ, что при прочих равных условиях существенно повышает общее быстродействие гибридных вычислительных систем.
Различают аналого-ориентированные, цифро-ориентированные и сбалансированные гибридные вычислительные системы. В системах первого типа ЦВМ используется как дополнительное внешнее устройство к АВМ, предназначенное для образования сложных нелинейных зависимостей, запоминания полученных результатов и для осуществления программного управления АВМ. В системах второго типа АВМ используется как дополнительное внешнее устройство ЦВМ, предназначенное для моделирования элементов реальной аппаратуры, многократного выполнения небольших подпрограмм.
Задачи, которые эффективно решаются на гибридных вычислительных системах, можно разбить на следующие основные группы: моделирование в реальном масштабе времени автоматических систем управления, содержащих как аналоговые, так и цифровые устройства; воспроизведение в реальном масштабе времени процессов, содержащих высокочастотные составляющие и переменные, изменяющиеся в широком диапазоне; статистическое моделирование; моделирование биологических систем; решение уравнений в частных производных; оптимизация систем управления.
Развитие гибридных вычислительных систем (ГВС) возможно в двух направлениях: построение специализированных ГВС, рассчитанных на решение только одного класса задач, и построение универсальных ГВС, позволяющих решать сравнительно широкий класс задач. Структура такого универсального гибридного комплекса состоит из АВМ однократного действия, АВМ с повторением решения, сеточной модели, устройств связи между машинами, специального оборудования для решения задач статистического моделирования и периферийного оборудования. Помимо стандартного математического обеспечения ЭВМ, входящих в комплекс, в ГВС требуются специальные программы, обслуживающие систему связи машин и автоматизирующие процесс подготовки и постановки задач на АВМ, а также единый язык программирования для комплекса в целом.


7.5. Суперкомпьютеры
Суперкомпьютеры используются во всех сферах, где для решения задачи применяется численное моделирование; там, где требуется огромный объем сложных вычислений, обработка большого количества данных в реальном времени, или решение задачи может быть найдено простым перебором множества значений множества исходных параметров.
Суперкомпьютеры применяются для решения интенсивных вычислительных задач, таких как проблемы в области квантовой физике или механической физике, прогноз погоды, исследование климата (включая исследование относительно глобального потепления), молекулярное моделирование (вычисляющий структуры и свойства химических составов, биологических макромолекул, полимеров, и кристаллов), физические моделирования (такие как моделирование самолетов, моделирование взрыва ядерного оружия, и исследование относительно ядерного сплава), криптоанализ, и т.п..
Производительность суперкомпьютеров чаще всего оценивается и выражается в количестве операций с плавающей точкой в секунду (FLOPS). Это связано с тем, что задачи численного моделирования, под которые и создаются суперкомпьютеры, чаще всего требуют вычислений, связанных с вещественными числами с высокой степенью точности, а не целыми числами. Поэтому для суперкомпьютеров неприменима мера быстродействия обычных компьютерных систем - количество миллионов операций в секунду (MIPS). При всей своей неоднозначности и приблизительности, оценка в флопсах позволяет легко сравнивать суперкомпьютерные системы друг с другом, опираясь на объективный критерий.
Первые суперкомпьютеры имели производительность порядка 1 кфлопс, т.е. 1000 операций с плавающей точкой в секунду. Компьютер CDC 6600, имевший производительность в 1 миллион флопсов (1 Мфлопс) был создан в 1964 году. Планка в 1 миллиард флопс (1 Гигафлопс) была преодолена суперкомпьютером Cray-2 в 1985 с большим запасом (1.9 Гигафлопс). Граница в 1 триллион флопс (1 Тфлопс) была достигнута в 1996 году суперкомпьютером ASCI Red (англ.). Рубеж 1 квадриллион флопс (1 Пфлопс) был взят в 2008 году суперкомпьютером IBM Roadrunner. Сейчас ведутся работы по созданию к 2016 году экзафлопсных компьютеров, способных выполнять 1 квинтиллион операций с плавающей точкой в секунду.
Традиционной сферой применения суперкомпьютеров всегда были научные исследования: физика плазмы и статистическая механика, физика конденсированных сред, молекулярная и атомная физика, теория элементарных частиц, газовая динамика и теория турбулентности, астрофизика. В химии различные области вычислительной химии: квантовая химия (включая расчеты электронной структуры для целей конструирования новых материалов, например, катализаторов и сверхпроводников), молекулярная динамика, химическая кинетика, теория поверхностных явлений и химия твердого тела, конструирование лекарств. Естественно, что ряд областей применения находится на стыках соответствующих наук, например, химии и биологии, и перекрывается с техническими приложениями. Так, задачи метеорологии, изучение атмосферных явлений и, в первую очередь, задача долгосрочного прогноза погоды, для решения которой постоянно не хватает мощностей современных суперЭВМ, тесно связаны с решением ряда перечисленных выше проблем физики. Среди технических проблем, для решения которых используются суперкомпьютеры, укажем на задачи аэрокосмической и автомобильной промышленности, ядерной энергетики, предсказания и разработки месторождений полезных ископаемых, нефтедобывающей и газовой промышленности (в том числе проблемы эффективной эксплуатации месторождений, особенно трехмерные задачи их исследования), и, наконец, конструирование новых микропроцессоров и компьютеров, в первую очередь самих супер-ЭВМ.
8. Архитектура 32-разрядных процессоров

8.1. Структурная схема и регистры процессоров

Структурная схема 32-разрядного процессора Intel 80386 изображена на рисунке 8.1. Процессор 80386 состоит из следующих шести функциональных блоков, которые работают параллельно:
интерфейсный блок;
блок предварительной выборки команд;
блок предварительной дешифрации команд;
блок центрального процессора;
блок сегментации;
блок управления страницами.
Центральный процессор включает в себя операционное ОУ и управляющее УУ устройства. ОУ состоит из АЛУ и восьми 32–разрядных РОН. Особенностью АЛУ является наличие 64 – разрядного сдвигателя, используемого при быстрых арифметических и циклических сдвигах, умножении и делении. В связи с этим 32–разрядное умножение выполняется менее чем за 1 мкс.




Рисунок 8.1 – Структурная схема 32-разрядного процессора 80386



Подсистема выборки команд реализует двухступенчатый алгоритм конвейеризации и состоит из блоков предвыборки кодов и преддешифрации команд. Первый из них осуществляет заполнение очереди команд длиной 16 байт.
Во втором блоке производится преддешифрация, определяется тип и формат команд, выделяется поле относительного смещения, содержимое которого поступает в блок сегментации для вычисления линейного адреса.
Команды, подготовленные к выполнению, хранятся в очереди команд, куда помещается в среднем 3 команды.
Диспетчер памяти (MMU – Memory Management Unit) состоит из блока сегментации и блока управления страницами. Осуществляет двухступенчатое формирование физического адреса ячеек памяти.
Наличие диспетчера памяти определяет два режима работы МП:
режим реальных адресов (реальный режим);
и режим защищенных виртуальных адресов.
В реальном режиме МП 386 работает как очень быстрый 8086, но при необходимости с расширением разрядности операндов и адресов до 32.
В защищенном режиме могут осуществляться переключения и выполнения нескольких задач, предназначенных для режима виртуального МП 8086.
Блок управления страницами действует на более низком уровне, по сравнению с сегментированием. Разбиение на страницы возможно только в защищенном режиме. Каждый сегмент делится на страницы фиксированного размера по 4 Кбайта каждая.
Блок магистрального интерфейса реализует циклы обмена с памятью, сопроцессором, контроллерами. Обмен осуществляется с помощью 32-й ШД, 34-й ША и 16-разрядной й шиной управления. Особенность шины данных является возможность динамического изменения ее разрядности. За один цикл могут быть переданы 8, 16 или 32 бита (сигналы BE(0 – 3)# - Byte Enable – указывают на используемые шины данных). Здесь значок ( означает, что активным сигналом является низкий уровень (инверсный сигнал). Структура и состав регистров процессора Intel 80386 показаны на рисунке 8.2.
Набор регистров включает:
РОН;
сегментные регистры;
указатель команд и регистр флагов;
регистры управления;
регистры адреса системы;
регистры отладки;
регистры тестирования.
Все 16 – разрядные регистры МП 8086 и 80286 содержатся в 32 – разрядных регистрах МП 80386. Состав сегментных регистров расширен за счет введения регистров дополнительных сегментов данных FS и GS.
Содержимое регистров определяется текущей задачей, т.е. регистры автоматически загружаются новыми значениями при переключении задач. РОН поддерживают работу с 1, 8, 16, 32 и 64 битовыми операндами. Адреса имеют размер 16 и 32 бита. Младшие 16 разрядов этих регистров доступны отдельно при использовании имен АХ, ВХ и т.д. При операциях с байтами можно обращаться отдельно к младшему AL либо старшему АН байту.

В состав процессора входят также шесть 16–разрядных сегментных регистров CS, SS, DS, ES, FS и GS содержат значения селекторов сегментов, указывающих на текущие адресуемые сегменты памяти. С каждым из них связан программно-недоступный регистр дескриптора сегмента.
В защищенном режиме каждый сегмент может иметь размер от 1 байта до 4 Гбайт. В режиме реальных адресов максимальный размер сегмента 64 Кбайта. Селекторы CS указывает текущий сегмент кода команд, SS – стека, а селекторы DS, ES, FS и GS – текущие сегменты данных.
Каждый регистр дескриптора содержит 32 разрядный базовый адрес сегмента, 32 – разрядную границу сегмента, другие необходимые атрибуты (рис.9.13). Когда в регистр сегмента загружается новое значение селектора, содержимое соответствующего регистра дескриптора автоматически корректируется.
В режиме реальных адресов непосредственно обновляется только базовый адрес (он получается путем сдвига значения селектора на 4 разряда влево), т.к. максимальный размер и атрибуты сегмента в реальном режиме фиксированы.
В защищенном режиме корректируются все параметры. При каждом обращении к памяти регистр дескриптора сегмента, связанный с выбранным сегментом, автоматически вовлекается в эту операцию.
Базовый адрес сегмента (32 разрядный) становится компонентом вычисления линейного адреса. 32 – разрядная граница используется для операции контроля размера. Атрибуты проверяются на соответствие типа памяти.

13 EMBED PBrush 1415


Рисунок 8.3 – Регистры селекторов и дескрипторов процессора 80386


Имя 32–разрядного флагового регистра EFLAGS. Кроме флагов С, Р, А, Z, S, T, I, D, и O добавлены новые флаги:
IOPL – уровень привилегии ввода – вывода (биты 12 – 13);
NT – вложенная задача (бит 14);
RF – флаг итога (бит 16) используется в пошаговом режиме при отладке. Если бит установлен, то любая ошибка отладки в следующей команде игнорируется;
VM – виртуальный режим 8086 (бит 17).
В процессоре имеется четыре 32 – разрядных регистра управления CR0, CR1, CR2 и CR3, используемые для фиксации общего состояния процессора, в частности:
CR0 – регистр управления машины. Младшие 16 разрядов называют словом состояния (MSW). Другие биты используются для управления страницами, переключения задач, эмуляции сопроцессора, управление сопроцессором, включение защиты;
CR1 – зарезервирован;
CR2 – линейный адрес ошибки страницы. Содержит адрес, который вызвал последнюю ошибку страницы;
CR3 – базовый адрес каталога страниц.

В состав процессора входят также регистры системных адресов, которые служат для обращения к элементам, управляющих механизмом сегментации памяти:
GDTR – регистр таблицы глобальных дескрипторов;
IDTR – регистр таблицы дескрипторов прерываний;
LDTR – регистр таблицы локальных дескрипторов;
TR – регистр задачи.
Кроме того, МП содержит 10 регистров тестирования, два из которых зарезервированы. Эти регистры определяют точки останова и показывают текущее состояние МП при остановах (R6), а также используются при тестировании памяти.
8.2. Страничная организация памяти

Страничная организация памяти обеспечивает более эффективное заполнение памяти по сравнению с сегментной, однако, требует дополнительного времени и специальных аппаратных средств для преобразования адресов. Страничная организация имеет место, если в регистре управления CR3 бит 31 имеет значение PG=1.
Страница – это блок в 4 Кбайт физической памяти. Страницы начинаются на границах 4 Кбайт областей памяти и фиксированы по размеру. Они не имеют непосредственного отношения к логической структуре программы. При страничной организации сегмент разбивается на отдельные разделы, число которых может достигать 13 EMBED Equation.3 1415 (рисунок 8.4). Раздел может содержать 1024 страницы объемом по 4 Кбайта каждая. Границы страниц жестко фиксированы.


Адрес страницы указывает физический начальный адрес и его младшие 12 байтов всегда равны 0. Таким образом, начальные адреса страниц имеют значения от 00000000Н до FFFFF000H. Начальные адреса страниц данного раздела хранятся в соответствующей таблице страниц, содержащейся в памяти.
Обращение к этой таблице производится с помощью каталога, в котором содержатся адреса таблиц для всех разделов. В каталоге страниц адрес кадра страницы – это адрес таблицы (раздела) страниц. В таблице страниц адрес кадра страницы является адресом кадра той страницы, который содержит нужный операнд в памяти.
Таблица страниц – это массив 32 – разрядных спецификаторов страниц. Таблица также является страницей и занимает 4 Кбайта или до 1 Кбайта 32 – разрядных кодов (слов). Каждое слово содержит базовый адрес страницы (12 бит), а также 12 битовых полей используемых для защиты страниц (бит пользователь/супервизор, чтение/запись, бит присутствия, бит обращения и др.).
Таким образом, страницы, содержащие отдельные фрагменты программ или данных, могут быть рассеяны по разным частям памяти, а их размещение определяется содержанием каталога разделов и таблиц страниц. При этом границы страниц и сегментов могут не совпадать.
Страничная организация памяти обеспечивает более эффективное использование памяти по сравнению с сегментной, однако, требует дополнительного времени и специальных аппаратных средств для преобразования адресов. Линейный 32 – разрядный адрес при этом является исходной информацией для формирования физического адреса с помощью каталога разделов и таблиц страниц. Базовый физический адрес сегмента загружается из дескриптора сегмента по его селектору в регистр CR3.
Линейный адрес при страничной организации рассматривается как совокупность трех полей (рисунок 8.5):


Поле TABLE (Раздел) включает разряды А31 – А22 линейного адреса, указывает относительный адрес таблицы страниц выбираемого раздела в каталоге.
Поле PAGE (А21 – А12) задает относительный адрес требуемой страницы раздела.
Поле BYTE (А11 – А0) содержит относительный адрес выбираемого на странице байта.
Каталог занимает одну страницу памяти, где для каждого из 1024 возможных разделов содержатся 32 – разрядные указатели входа в таблицу страниц этого раздела. Каждая из таблиц страницы также занимает одну страницу, где для каждой из 1024 страниц раздела даются 32 – разрядные указатели входа в нее.
Содержимое регистра управления CR3 задает старшие 20 разрядов адреса (А31 –А12) ячейки памяти, содержащий указатель входа в таблицу страниц (оглавления) раздела, т.е. адрес начала каталога раздела сегмента.
Разряды А11 – А2 адреса этой ячейки составляют относительный адрес, содержащегося в поле TABLE линейного адреса. Старшие из дескриптора 20 разрядов указателя задают базовый адрес, определяющий начало таблицы страниц.
PAGE определяет разряды А11 – А2 адреса ячеек памяти, хранящей указатель входа в кадр выбираемой страницы. Этот указатель имеет такой же формат, как и указатель входа в таблицу. Его старшие 20 разрядов служат базовым адресом, определяющим адрес начала страницы (первого байта). Добавление к базовому адресу поля BYTE, позволяет получить физический адрес выбираемого байта.
Таким образом, при страничной организации памяти 32 – разрядный (физический) адрес формируется как сумма базового адреса задаваемого указателем входа в кадр страницы, и относительного адреса, содержащегося в поле BYTE линейного адреса.
Помимо базового адреса указатели входа в таблицу страниц и кадр страницы содержат дополнительную информацию, определяющую порядок их использования. Эта информация задается значениями определенных битов, которые:
разрешают или запрещают обращение к соответствующему разделу или странице (бит А0);
определяют право доступа к соответствующим разделам или страницам для программ пользователя, имеющих минимальные привилегии (бит А1);
фиксируют обращение к данному разделу или странице – запись или чтение (бит А5);
фиксируют процесс записи на данную страницу (бит А6);
определяют время последнего обращения к данному разделу или странице. Эта информация используется для определения разделов и страниц, подлежащих замене из внешней памяти (биты А11 – А9).

В 32-разрядных процессорах последующих поколений был введен ряд существенных дополнений:
введен внутренний кэш первого уровня (Cashe Level 1) размером 8 Кбайт единый для данных и команд и предусмотрены все необходимые средства для построения памяти с двухуровневым кэшированием, допускающей работу и в мультипроцессорных системах;
повышена производительность локальной шины – введены пакетные циклы, позволяющие передавать очередное слово данных в каждом такте шины (а не через такт, как в обычном режиме);
наряду с использованием) полной системы команд CISC (Complete Instruction Set Computers) применено RISC–ядро (Reduced Instruction Set Computers), позволяющее наиболее часто встречающиеся команды выполнять за один такт, за счет чего средняя производительность МП по сравнению с первыми 32-рязрядными процессами удвоилась;
в состав БИС процессора введен высокопроизводительный математический сопроцессор;
увеличена очередь команд до 16 байт;
введены буферы отложенной записи;
расширены средства тестирования (введены регистры TR3, TR4, TR5 для тестирования внутреннего кэша);
добавлены средства тестирования процессора извне по интерфейсу JTAG;
введено умножение тактовой частоты системной платы (кратность частоты может быть увеличена в 2, 2.5 и 3 раза);
добавлены новые команды (BSWAP, XADD – для прикладных задач; CMPXHG, INVLD, WBINVD – для управления кэшем);
введены раздельные 32-разрядные ШД и ША.

Шина адреса позволяет адресовать 4 Гб физической памяти (00000000-FFFFFFFFh) в защищенном режиме и 1 Мб из области младших адресов в реальном режиме. При выполнении инструкций ввода-вывода процессор адресуется к области в 64 Кб пространства ввода вывода (00000000-0000FFFFh).
Линии А[31:2] идентифицируют адрес с точностью до двойного слова, а в пределах этого слова сигналы ВЕ[0:3] непосредственно указывают, какие байты используются в данном цикле (ВЕ0 – 1 байт; ВЕ3 – четвертый).
Шина данных D[31:0] допускает как 32-разрядный режим обмена, так и 16-и 8-разрядный, в зависимости от состояния входных сигналов BS16# и BS8#. Сигналы BS16# или BS8# вводятся внешней схемой, если текущий цикл адресуется к 16- или 8-битному устройству, подключенному к младшей части шины данных, BS8# имеет более высокий приоритет. Для связи с системной шиной, имеющей возможность подключения 8-, 16- и 32-битных устройств (шины ISA и EISA) и полную шину адреса, включающую сигналы А0, А1 и SBHE#, недостающие сигналы генерируются из сигналов BE [0:3].
Каждый байт шины данных имеет бит паритета DP[3:0]. Схемы паритета генерируют корректные контрольные биты в циклах записи, а в циклах чтения в случае ошибки паритета только вырабатывается сигнал ошибки на выходе РСНК#, никак не влияющий на работу процессора. Он может использоваться внешними схемами по усмотрению разработчика системной платы. Контроль четности (число единиц в байте вместе с битом паритета должно быть четным) выполняется для всех байт, участвующих в конкретном цикле.
Тип цикла локальной шины определяется сигналами M/IO#, D/C#, W/R# и LOCK# во время активности сигнала ADS# .
Для управления шинными циклами процессор имеет входные сигналы готовности RDY# и BRDY#. Сигнал BRDY# вырабатывает устройства, поддерживающие пакетный режим обмена. На возможность пакетного продолжения начатого цикла процессор указывает выходным сигналом BLASTS.


8.3. Суперскалярные и мультискалярные микропроцессоры

В современных микропроцессорах широко используется принцип конвейерного выполнения отдельных элементарных операций. Конвейеризация внутренних процессов позволяет выполнять команду за каждый процессорный цикл. Процесс выполнения команды можно разделить на следующие фазы (рисунок ):
ВК- выборка команды (Instruction Fetch): течение этой фазы по адресу команды она извлекается из ОЗУ (или кэша) в буфер команды, а программный счетчик увеличивается;
ДК- декодирование: на основании кода операции вырабатываются (устройством управления) сигналы, управляющие операционным блоком;
ВА- вычисление адреса операнда;
ВО-выборка операнда(ов): чтение операнда(ов) из регистров процессора или памяти;
ИК-исполнение команды в АЛУ;
ЗР-запись результата в регистр(ы).
В зависимости от команды отдельные фазы могут отсутствовать либо обойдены. Деление машинной операции на отдельные фазы осуществляется специальном блоке, называемом конвейером команд (Pipeline).

Такты(
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Команда 1
ВК

ДК

ВА

ВО

ИК

ЗР










Команда 2

ВК

ДК

ВА

ВО

ИК

ЗР









Команда 3


ВК

ДК

ВА

ВО

ИК

ЗР








Команда 4



ВК

ДК

ВА

ВО

ИК

ЗР







Команда 5




ВК

ДК

ВА

ВО

ИК

ЗР






Команда 6





ВК

ДК

ВА

ВО

ИК

ЗР





Команда 7






ВК

ДК

ВА

ВО

ИК

ЗР




Команда 8







ВК

ДК

ВА

ВО

ИК

ЗР



Команда 9








ВК

ДК

ВА

ВО

ИК

ЗР



Дальнейшее внедрение принципов конвейеризации привело к появлению класса суперскалярных микропроцессоров. Их отличительной особенностью является возможность выполнения нескольких команд параллельно, т.е. за один процессорный цикл. Такой режим выполнения программы стал возможным благодаря наличию в процессорах нескольких исполнительных устройств.
Есть два подхода к отображению внутреннего параллелизма обработки данных на архитектурном уровне в системе команд. Первый подход состоит в том, что никакого указания на параллельную обработку внутри процессора система команд не содержит. Такие процессоры относятся к классу суперскалярных.
Второй подход - открывает все возможности параллельной обработки. В специально отведенных полях команды каждому из параллельно работающих обрабатывающих устройств предписывается действие, которое устройство должно совершить. Такие процессоры называются процессорами с длинным командным словом (VLIW).
Типичный суперскалярный процессор выбирает команды и исследует их по мере выполнения. Исследование проводится с целью выявления и обработки команд перехода, идентификации типа команды для ее дальнейшего направления на соответствующий исполнительный блок или в буфер памяти. Выполняются также некоторые действия для смягчения зависимостей по данным, например переименование регистров. VLIW процессор возлагает на компилятор статическую реализацию тех функций, которые в суперскалярном процессоре выполняются динамически.
Основная идея, определяющая развитие суперскалярных микропроцессоров, состоит в построении возможно большего количества параллельных структур при сохранении традиционных последовательных программ. Это означает, что компиляторы и аппаратура микропроцессора сами, без вмешательства программиста, обеспечивают загрузку параллельно работающих функциональных устройств микропроцессора.
В соответствии с моделью последовательного программирования, программы пишутся в предположении, что команды будут выполнены в том же порядке, в каком они представлены в программе. Однако с целью достижения большей эффективности современные процессоры пытаются выполнять несколько команд одновременно и в некоторых случаях в порядке, отличном от их исходной последовательности в программе. Это переупорядочение может быть выполнено в трансляторе и (или) в аппаратных средствах во время выполнения. Суперскалярные и VLIW-процессоры принадлежат классу архитектур, которые используют параллельность уровня команды (ILP).
ILP-процессоры и компиляторы обычно преобразуют полностью упорядоченное множество команд исходной программы в частично упорядоченное множество, структурированное зависимостями по данным и управлению (командам). Зависимости по управлению (которые проявляются как переходы по условию) представляют главное препятствие высокопараллельному выполнению потому, что эти зависимости должны быть установлены прежде, чем будут выполнены все последующие команды.
Текст последовательной программы, представленной на языке высокого уровня, компилируется в машинный код, отражающий статическую структуру программы, т. е. упорядоченное множество команд (инструкций) в памяти компьютера. Процесс выполнения программы с конкретными наборами входных данных может быть представлен динамической структурой программы, т. е. множеством последовательностей инструкций в порядке их исполнения.
Повысить степень параллелизма программы можно путем изменения соответствующим образом ее статической или динамической структуры. Поскольку статическая структура программы однозначно соответствует ее исходному тексту (в предположении неизменности компилятора), то изменение статической структуры сводится к модификации исходного кода, что, в общем случае, не всегда возможно. Динамическая же структура программы может быть изменена при неизменной статической структуре. И главной целью такого изменения должно быть повышение степени параллельного исполнения команд.
Допустимые границы преобразования динамической структуры программы задают существующие на множестве инструкций отношения: зависимость по управлению и зависимость по данным. При описании архитектур суперскалярных процессоров часто используется модель окна исполнения. При исполнении программы микропроцессор как бы продвигает по статической структуре программы окно исполнения. Команды в окне могут исполняться параллельно, если между ними нет зависимости.
Для устранения зависимостей, вызванных командами переходов, используется метод предсказания, позволяющий извлекать и условно исполнять команды предсказанного перехода. Если позднее обнаруживается, что предсказание было сделано верно, то результаты условно исполненных команд принимаются. Если предсказание было ошибочным, состояние процессора восстанавливается на момент принятия решения о выполнении перехода.
Команды, помещенные в окно исполнения, могут быть зависимы по данным. Эти зависимости обусловлены использованием одних и тех же ресурсов памяти (регистров, ячеек памяти) в разных командах. Поэтому для правильного исполнения программы необходимо использование этих ресурсов в предписываемом программой порядке.
Все виды зависимостей по данным могут быть классифицированы по типу ассоциаций: RAR - "чтение после чтения", WAR - "запись после чтения" и WAW - "запись после записи", RAW - "чтение после записи". Некоторые из зависимостей по данным могут быть устранены. RAR, по сути дела, соответствует отсутствию зависимостей, поскольку в данном случае порядок выполнения команд не имеет значения. Действительной зависимостью является только "чтение после записи" (RAW), так как необходимо прочитать предварительно записанные новые данные, а не старые.
Лишние зависимости по данным появляются в результате "записи после чтения" (WAR) и "записи после записи" (WAW). Зависимость WAR состоит в том, что команда должна записать новое значение в ячейку памяти или регистр, из которых должно быть произведено чтение. Лишние зависимости появляются по нескольким причинам: не оптимизированный программный код, ограничение количества регистров, стремление к экономии памяти, наличие программных циклов. Важно отметить, что запись может быть произведена в любой свободный ресурс, а не только тот, который указан в программе.
После удаления лишних зависимостей по управлению и данным команды могут исполняться параллельно. Формирование расписания параллельного выполнения команд возлагается на аппаратные средства микропроцессора. Это расписание учитывает существующие зависимости между командами и имеющиеся функциональные модули процессора.
Типовая архитектура суперскалярного микропроцессора включает:
блок выборки команд и предсказания переходов;
блок декодирования команд и анализа зависимостей между ними;
блок переименования и диспетчеризации;
блоки регистров и обрабатывающих устройств с плавающей и фиксированной точками;
блок управления памятью;
блок упорядочения выполненных команд.
Ниже рассмотрены основные приемы повышения быстродействия в суперскалярных микропроцессорах.
Предварительная выборка команд и предсказание переходов. Поскольку при суперскалярной обработке необходимо извлекать из памяти несколько команд за один такт для загрузки параллельно работающих функциональных модулей, повышенные требования предъявляются к пропускной способности интерфейса микропроцессор-память. В современных микропроцессорах применяются многоуровневые раздельные кэш-памяти данных и команд.
Для уменьшения потерь процессорных циклов, связанных с промахами при обращении к кэш-памяти в случае выполнения команд ветвления, в состав системы кэширования введены средства предсказания переходов, основное назначение которых - повысить вероятность наличия в кэш-памяти требуемой команды.
Исполнение условных ветвлений состоит из следующих этапов:
распознание команды условного ветвления;
проверка выполнения условия перехода;
вычисление адреса перехода;
передача управления, в случае перехода.
На каждом этапе используются специальные приемы повышения производительности.
1. Для быстрого декодирования используются либо дополнительные биты в поле команды, либо преддекодирование команд при выборе из кэш - памяти команд.
2. Часто, когда команда уже выбрана в кэш, условие перехода еще не вычислено. Чтобы не задерживать поток команд в данном случае используется предсказание перехода по одной из нескольких возможных схем. Некоторые предсказатели используют статическую информацию из двоичного кода программы или специально выработанную компилятором. Например, определенные коды операций чаще вырабатывают ветвление, чем другие коды, или ветвление более вероятно (при организации циклов), или компилятор может устанавливать флаг, указывающий направления перехода. Может также использоваться статистическая информация, полученная при трассировке программы.
Другие предсказатели используют динамически формируемую информацию в процессе исполнения программы. Обычно это информация, касающаяся истории выполнения данного ветвления, сохраняемая в таблице ветвлений или в таблице предсказаний ветвлений. Таблица предсказания ветвлений организуется по ассоциативному принципу, подобно кэш-памяти, ее элементы доступны по адресу команды, ветвление которой предсказывается. В некоторых реализациях элемент таблицы предсказания ветвления является счетчиком, значение которого увеличивается при правильном предсказании и уменьшается при неправильном. При этом значение счетчика определяет преобладающее направление ветвлений.
В момент определения действительного значения условия ветвления, вносится изменение в историю ветвления. Если предсказание было неверным, то должна инициироваться выборка правильных команд. Результаты команд, которые были условно выполнены, должны быть аннулированы.
3. Для определения адреса ветвления обычно требуется выполнить целочисленное сложение, прибавляющее к текущему значению счетчика команд смещение, заданное в поле команды ветвления. И хотя это не требует дополнительных циклов для обращения к регистрам, ускорение вычисления адреса может быть достигнуто благодаря использованию буфера, содержащего ранее использованные адреса переходов.
Если требуется осуществить смену значения счетчика команд, то необходим, по крайней мере, один такт для распознания команды ветвления, модификации счетчика команд и выборки команды по заданному значению счетчика команд. Эти задержки вызывают пустые такты в конвейерах процессора. Более сложные решения используют буферы, содержащие наборы команд для двух возможных результатов ветвлений.
Возможно также использование "отложенных переходов", когда одна или несколько команд после команды ветвления выполняются безусловно.
Декодирование команд, переименование ресурсов и диспетчеризация. В этой фазе определяются существенные зависимости (RAW) по данным между командами и преодолеваются несущественные (WAW, WAR), производится распределение команд по буферам команд функциональных устройств.
При декодировании команды создается одна или несколько упорядоченных троек, каждая из которых включает: 1) исполняемую операцию, 2) указатели на операнды, 3) указатель на место помещения результата.
Для преодоления лишних WAR и WAW зависимостей, возникающих в результате ограниченности логических ресурсов (ячеек памяти, регистров), используется механизм динамического отображения определяемых текстом программы логических ресурсов на физические ресурсы микропроцессора. При данном подходе с одним логическим ресурсом может быть связано несколько значений в различных физических ресурсах, каждое из которых соответствует значению логической величины в один из моментов времени последовательного выполнения программы.
Когда команда создает новое значение для логического регистра, физический ресурс, в который помещается это значение, получает имя. Последующие команды, использующие это значение, снабжаются именем физического ресурса. Данная процедура называется переименованием регистров.
Для этого в микропроцессоре создается физический файл регистров размером больше логического. При необходимости переименования из списка свободных физических регистров берется один и ему сопоставляется соответствующее логическое имя. Если список свободных регистров пуст, диспетчеризация команд приостанавливается до момента появления свободных физических регистров.
Рассмотрим пример реализации данного способа переименования. Пусть требуется выполнить команду sub r3, г3, 5 (из значения регистра г3 вычесть константу 5 и поместить результат в регистр r3). Логические имена регистров начинаются со строчной буквы, а физические с прописной. Пусть также в момент исполнения команды в таблице регистру r3 соответствует R 1. Первым регистром в списке свободных пусть является R2. Поэтому в поле результата команды sub r3, r3, 5 регистр r3 заменяется на R2. Исполнимая команда приобретает вид sub R2, R1, 5. Любая следующая за sub команда, использующая ее результат, должна использовать в качестве операнда R2.
Остается вопрос о возвращении физических регистров в список свободных после того, как из них считаны данные в последний раз. Один из способов связывает счетчик с каждым физическим регистром. Счетчик увеличивается при каждом переименовании операнда в командах, использующих этот физический регистр. Соответственно при использовании операнда значения счетчика уменьшается на 1. При достижении счетчиком нуля физический ресурс должен быть переведен в список свободных.
Исполнение команд. После формирования для каждой команды упорядоченных троек, состоящих из кода операции, физических операндов - источника и результата, и размещения их в буферах, наступает фаза динамической проверки готовности значений операндов для исполнения команды.
В идеале команда готова к исполнению, как только готовы ее входные операнды. Однако есть ряд ограничений, связанных с доступностью физических ресурсов, таких как исполнительные устройства, коммутаторы и порты регистровых файлов (или переупорядочивающего буфера). Для организации окна исполнения используются различные методы: одной очереди, многих очередей или метод резервирующей станции.
Если имеется одна очередь, то переименование регистров не требуется, так как доступность значений операндов может отмечаться битом резервирования, сопоставленным каждому регистру. Регистр резервируется, когда модифицирующая его команда назначается на исполнение. И регистр освобождается, когда заканчивается исполнение команды. Если для команды ресурсы не были зарезервированы, то она приостанавливает свое исполнение.
В методе многих очередей каждая очередь организуется для команд одного типа. Например, очередь команд с плавающей точкой или очередь команд работы с памятью.
Третий метод предполагает использование резервирующей станции, состоящей из совокупности элементов, каждый из которых содержит позиции для размещения кода операции, наименования первого операнда, самого первого операнда, признака доступности первого операнда, наименования второго операнда, самого второго операнда, признака доступности второго операнда и наименования регистра результата. Когда команда завершает исполнение и вырабатывает результат, то наименование результата сравнивается с наименованиями операндов в резервирующей станции.
Если в резервирующей станции обнаруживается команда, ждущая этого результата, то данные записываются в соответствующую позицию и устанавливается признак их доступности. Когда у команды доступны все операнды, инициируется ее исполнение. Резервирующая станция следит за доступностью операндов. Когда команда при диспетчеризации попадает в резервирующую станцию, все готовые операнды из регистрового файла переписываются в поля этой команды. Если все операнды готовы, команда исполняется. Иногда резервирующая станция содержит не сами операнды, а указатели на них в регистровом файле или переупорядочивающем буфере.
Завершение выполнения команды. Завершающей фазой исполнения команды является фаза изменения состояния процессора в соответствии с выполненной командой. Назначение этой фазы - сохранение последовательной модели исполнения программы, при реальном параллельном выполнении отдельных команд и условном выполнении команд ветвления.
Мультискалярные процессоры используют агрессивную стратегию выполнения кода с целью извлечения параллелизма уровня команд из последовательной программы, представленной на языке высокого уровня. В соответствии с данной стратегией программа разбивается на совокупность задач с помощью программных и аппаратных средств. Задача – это часть программы, выполнению которой соответствует непрерывная область динамической последовательности команд (например, часть базисного блока, базисный блок, множество базисных блоков, одиночная итерация цикла, полный цикл, обращение к функции, и т.д.).
На каждом шаге обхода программы мультискалярный процессор назначает одну задачу на один из процессорных элементов (ПЭ) для выполнения, без учета фактического содержания задачи, и продолжает обход. Задача назначается для выполнения некоторому процессорному элементу, передачей ему начального значения программного счетчика. Множество инициированных таким образом задач выполняется параллельно на процессорных элементах, результатом чего является выполнение множества команд за один процессорный такт.
Каждый из совместно используемых процессорных элементов выбирает и выполняет команды, принадлежащие выделенной ему задаче. Значения разделяемых процессорными элементами регистров копируются в каждый ПЭ. Результат модификации содержимого регистров динамически направляется множеству параллельных ПЭ в соответствии с генерируемыми компилятором масками.
Доступ к памяти осуществляется спекулятивно (условно, по предположению) без знания последовательности предшествующих команд загрузки или сохранения. Обращение к данным производится параллельно многими ПЭ, а обработка приостанавливается только в случае истинной зависимости данных.


8.4. Архитектура суперскалярных процессоров типа Pentium

Рассмотрим особенности архитектуры суперскалярных процессоров на примере процессоров Pentium III и IV. В этих процессорах наряду с внутренним КЭШем первого уровня (L1-кэш) размером 64 Кбайт (32 Кбайт для данных + 32 Кбайт для команд), введен кэш второго уровня (L2-кэш) объемом 512 и более Кбайт.
Ядро процессора Pentium III состоит из двух частей: декодера и RISC–ядра (рисунок 7.6). Декодер получает из кэша команд ассемблерные команды, представляющие собой полный комплект команд компьютера (CISC-команды) и преобразует их в микрооперации сокращенного набора команд (RISC-команды). В декодере имеется три преобразователя кодов.
RISC–ядро выполняет полученные микрооперации (мкоп) параллельно несколькими блоками обработки (АЛУ) в произвольном порядке и выдает результат обработки в порядке, заданном исходной ассемблерной программой. Pentium III обладает десятью блоками обработки, которые объединены в 5 групп. За один машинный такт на блоки обработки одновременно может быть подано максимум 5 микроопераций, причем на каждую их групп не более одной микрооперации. Первые две группы содержат по одному ММХ-АЛУ и блок генерации адреса. Кроме того, в них имеется вычислительные блоки для мультимедийных команд с плавающей точкой (ММХ пл.тчк). Оставшиеся три блока обработки служат для выполнения операций обращения к памяти: чтения и записи операндов или промежуточных результатов.
Операнды располагаются (с большой вероятностью) в двухпортовом кэше данных. Для одновременной записи в кэш адреса и данных блоки генерации адреса и передачи данных выполнены раздельно и работают параллельно.
Устройство функционирует следующим образом. CISC–декодер загружает х86-команды без предварительной обработки в 32-байтный буфер команд. Из этого буфера команды извлекаются предварительным декодером (предекодером), который определяет длину команды и группу, к которой она принадлежит. Кроме этого предекодер выделяет команды ветвления и заносит их адреса в буфер адресов ветвления емкостью 512 слов. Если обнаружена команда ветвления, то буфер команд заполняется командами, адреса которых определены блоком предсказания.
За один такт машинного цикла процессора на три преобразователя кодов ПК могут быть поданы максимум три х86-команды. Задачей ПК является преобразование х86-команд в RISC–микрооперации. Преобразователи кодов отличаются тем, что два из них обрабатывают только «простые» команды (MOV, INR,) и генерируют одну RISC –операцию. Любая микрооперация имеет фиксированную длину 118 бит.
Третий преобразователь предназначен для «сложных» команд и на каждую х86-инструкцию генерирует от 1 до 4-х микроопераций. Однако среди сложных команд имеются такие, которые для их выполнения требуют целую микропрограмму. Такие команды преобразуются в блоке микропрограммного управления.
За один такт из трех ПК на RISC–ядро процессора могут быть подано максимум 6 микроопераций. Они предварительно заносятся в 6-словный буфер микроопераций и оттуда подаются в командный пул (буфер динамически выделяемой памяти).
Вычислительные блоки обрабатывают команды не в том порядке, в каком он был задан исходной ассемблерной программой, а в порядке, который позволяет наиболее полно реализовать параллельное выполнение нескольких микроопераций одновременно группой АЛУ. Распределение RISC-микроопераций по соответствующим вычислительным блокам осуществляет блок диспетчеризации команд, который на схеме не показан. Он сначала осуществляет изменение порядка выполнения команд, который предписан исходной ассемблерной программой, а затем после завершения выполнения группы команд, восстанавливает выдачу результата в необходимой последовательности. RISC-микрооперации заносятся в буфер переупорядочивания (ROB-ReOrder Buffer). Для каждой внесенной микрооперации в этом буфере каждому архитектурному регистру (ЕАХ, ЕВХ,) выделяется внутренний регистр буфера переупорядочивания. Кроме этого, в каждой мкоп устанавливаются статусные биты, которые характеризуют очередность поступления и соответствие регистров.
Далее команды перемещаются в так называемую резервирующую станцию, представляющую собой группу регистров, в которой команды ожидают на освобождение соответствующего вычислительного блока либо на получения операнда - результата выполнения предыдущей операции. По мере получения операнда или освобождения вычислителя команды изымаются из резервирующей станции и подаются на обработку. В связи с тем, что команды в вычислительных блоках могут выполняться в порядке, отличном от заданного программой, результаты вычислений сначала заносятся в буфер переименований.



Рисунок 8.6 – Структурная схема процессора Pentium III

После того, как по соответствующим статусным битам установлено завершение команды, происходит обратное переименование «внутренний регистр - архитектурный регистр». Затем блок завершения команд восстанавливает результаты выполненных команд в порядке, установленном исходной программой.
Для быстрого преобразования виртуальных адресов в физические в процессоре аппаратно реализован буфер быстрого преобразования адресов TLB (Translation look-aside buffer). Он состоит из двух частей: буфера преобразования адресов команд (Instruction TLB) и буфера преобразования адресов данных (Data TLB).
Одним из недостатков такой архитектуры процессоров является то, что при выполнении программных циклов происходит преобразование одних и тех же ассемблерных команд в RISC-команды в каждом цикле. Это приводит к снижению производительности. Отличие архитектуры Pentium 4 от Pentium III состоит в том, что внутренний кэш команд размещен за блоками преобразования команд и в нем помещаются уже преобразованные команды (RISC-микрооперации). Вследствие этого исключаются дополнительные непроизводительные преобразования и повышается быстродействие процессора в целом. Обобщенная структурная схема процессора Pentium 4 изображена на рисунке 8.7.




Рисунок 8.7 – Обобщенная структура процессора Pentium 4



Кроме этого, отличительными особенностями Pentium 4 от его предшественников являются:
введение гиперконвейера (Hyper Pipeling), позволяющего размещать и выполнять одновременно 20 микроопераций;
усовершенствование динамического исполнения позволяет в единицу времени выполнять в 3 раза больше микроопераций;
частота процессора превысила 3 ГГц, а системной шины 800 МГц;
в два раза повышена скорость выполнения операций в АЛУ целых чисел;
введено дополнительно 144 новых мультимедийных команд.
В процессоре P-4 большинство операций целочисленной арифметики выполняется в устройствах, работающих на двойной частоте (Double Pumped ALU). Таких устройств два. Латентность этих операций (время выполнения в зависимых цепочках) составляет всего 0.5 такта. Для того чтобы обеспечить такую низкую задержку каждое их этих двух 32-битных арифметико-логических устройств реализовано в виде двух отдельных 16-битных блоков, обрабатывающих соответственно младшие и старшие 16 разрядов операндов. Из-за возможного переноса разрядов из младшей половины слова блок обработки старшей половины работает с временным сдвигом на полтакта. Таким образом, старт-стопное время выполнения операции составляет целый такт (два полутакта). Однако выполнение новой операции, зависящей от результатов текущей, начинается немедленно после получения младшей половины слова. Это правило распространяется также на логические операции, команды пересылки и чтения из памяти.
Таким образом, операция обращения к памяти начинает выполняться, не дожидаясь готовности старших 16 разрядов адреса поиск данных в L1-кэше начинается на основе младших 16 разрядов. Благодаря этому, полное время считывания данных из кэша составляет всего 2 такта. Операции сдвигов обрабатываются отдельно, в так называемом медленном устройстве. Их задержка (латентность) составляет 4 такта, а темп выполнения 1 операция за такт. Также в медленном устройстве исполняются целочисленные умножения, деления и другие редкие операции.

9. Архитектура 64-разрядных и многоядерных процессоров

9.1. Общая характеристика 64-разрядных процессоров

Преимуществом 64-битных процессоров над своими 32-битными аналогами является расширение адресного пространства, увеличение разрядности и увеличение числа регистров общего назначения.
Расширенное 64-битное адресное пространство теоретически позволяет процессору работать с 16 экзабайт (264) физической памяти в рамках плоской модели организации. И хотя современные 64-разрядные процессоры на практике могут обеспечить доступ лишь к 1 терабайту (240) памяти, данный показатель всё равно уже значительно превосходит возможности 32-битной адресации. Увеличение объема доступной памяти в свою очередь, даёт возможность исключить или сильно сократить количество крайне медленных операций по подкачке данных с диска.
Увеличение числа и разрядности регистров позволит процессору одновременно работать с большими участками памяти, более эффективно работать с переменными и массивами, передавать аргументы функций в регистрах вместо использования для этой цели стека.
Стоит помнить, что для получения реального прироста производительности на 64-разрядном процессоре необходимо транспонировать программу с применением 64-битной версии компилятора, учитывая изменение модели данных (новые размерности типов). Запуск неадаптированного для 64-битной платформы приложения наоборот может, в зависимости от особенностей архитектуры используемого процессора, привести к существенным потерям в производительности.
Наибольший же прирост производительности от перехода на 64-разрядную платформу получат приложения, манипулирующие большими массивами данных это системы управления баз данных, программы для работы с цифровым мультимедиа сообщениями, прикладные научные приложения. Прирост производительности для ПО данного класса может составить сотни процентов.
64-битное расширение классической 32-битной архитектуры IA32 было предложено в 2002 году компанией AMD (первоначально называлось x86-64, сейчас AMD64) в процессорах семейства К8. Спустя некоторое время компанией Intel было предложено собственное обозначение EM64T (Extended Memory 64-bit Technology). Но, независимо от названия, суть новой архитектуры одна и та же: разрядность основных внутренних регистров 64-битных процессоров удвоилась (с 32 до 64 бит), а 32-битные команды x86-кода получили 64-битные аналоги. Кроме того, за счет расширения разрядности шины адресов объем адресуемой процессором памяти существенно увеличился.

9.2. Процессор Athlon 64

Первыми серийными процессорами, основанными на 64-разрядной архитектуре, стали чипы семейства К8 фирмы AMD под названием Opteron, официально анонсированные 22 апреля 2003 года. AMD Opteron, ориентированные на применение в серверах и рабочих станциях, стали первыми 64-разрядными процессорами, способными выполнять не только инструкции AMD64, но и традиционные 32-разрядные инструкции x86, без использования каких бы то ни было специальных режимов эмуляции. Именно сохранение обратной совместимости, позволяющей говорить о возможности плавного перехода с 32- на 64-разрядное программное обеспечение, и является главным, но не единственным достоинством всех процессоров семейства K8. Через полгода были анонсированы процессоры Athlon 64/Athlon FX, ориентированные на применение в настольных ПК и ноутбуках.
Структура процессора Athlon 64 показана на рисунке 9.1.



Рисунок 9.1 – Структура процессора Athlon 64

По сравнению с предшествующей моделью Athlon XP, новые процессоры обладают целым рядом качественных нововведений. Процессоры семейства Athlon 64 поддерживают новый набор 64-разрядных инструкций AMD64, наряду с 32-разрядными инструкциями x86. Это позволяет Athlon 64/Athlon 64 FX выполнять и современные 32-битные, и новые 64-битные приложения.
Контроллер памяти DDR 400 интегрирован непосредственно в ядро процессора. До сих пор на настольных платформах и AMD, и Intel применяли схему, которая предусматривала размещение контроллера памяти в микросхеме северного моста чипсета. AMD перенесла контроллер на ядро, стараясь увеличить скорость обмена данными между процессором и системной памятью. Процессор Athlon 64 FX обладает двухканальным контроллером, в то время как "обычный" Athlon 64 - одноканальным. Увеличение кэш-памяти второго уровня до 1 Мб дает возможность Athlon 64 и Athlon 64 FX обеспечивать большую производительность в широком круге приложений, в том числе архиваторах, играх, офисных пакетах. Оригинальная структура кэш-памяти, примененная AMD впервые еще в процессорах Athlon/Duron, позволяет хранить лишь одну копию данных в кэшах первого и второго уровней, что увеличивает общий эффективный объем кэш-памяти до 1152 Кб.
Кэш инструкций 2-х канальный частично-ассоциативный, имеет размер 64КВ. Кэш данных, также 2-х канальный и тоже частично-ассоциативный.
Для связи с другими системными компонентами и, в первую очередь, с микросхемами набора системной логики, ответственными за работу с AGP и другими устройствами, применена универсальная шина HyperTransport. Контроллер HyperTransport интегрирован на ядро процессора. Шина HyperTransport (HT) это двунаправленная последовательно/параллельная компьютерная шина, с высокой пропускной способностью и малыми задержками. Она работает на частотах от 200 МГц до 2,6 ГГц. HyperTransport поддерживает автоматическое определение ширины шины, от 2-х битных линий до 32-х битных. Шина HyperTransport основана на передаче пакетов. Пакеты HyperTransport передаются по шине последовательно. Увеличение пропускной способности влечёт за собой увеличение ширины шины. HyperTransport может использоваться для передачи служебных сообщений системы, для передачи прерываний, для конфигурирования устройств, подключенных к шине и для передачи данных. Схема ядра процессора Athlon 64 показана на рисунке 8.2.



Рисунок 9.2 – Схема процессорного ядра Athlon 64

Блок декодеров превращает команды х86 переменной длины в RISC-микрооперации фиксированной длины. Причем за один такт каждый декодер может обработать инструкцию длиной до 16 байт и отправить планировщику на исполнение микрооперации, которые затем упаковываются в группы по три.
В ядре установлены три 8-входовые станции резервирования (РезСт). Все вместе они образуют 24-входовый планировщик заданий. Исполнительные устройства ядра располагают тремя целочисленными блоками ALU, 3-мя блоками генерации адресов и загрузки AGU, тремя блоками с плавающей точкой. Длина целочисленных конвейеров имеет 12 ступеней, FPU конвейеров 17. Все данные 64-битовые. Арифметические и логические операции, кроме умножения, выполняются за один такт. На 32-битное умножение расходуется три такта и пять тактов на 64-битное умножение.



9.3 Многоядерные процессоры Athlon 64 и Pentium D9xx

К началу 2005 года классические одноядерные процессоры практически полностью исчерпали резервы роста производительности за счет повышения рабочей частоты. Камнем преткновения стало не только слишком высокое тепловыделение процессоров, работающих на высоких частотах, но и проблемы с их стабильностью. Дальнейшее повышение производительности процессоров может быть достигнуто преимущественно за счет расширения концепции параллелизма работы, в частности перехода от параллельных цепочек конвейеров до параллельно работающих процессорных ядер. Первыми представителями процессоров, реализовавших на практике данную концепцию, стали двуядерные процессоры.
По сути своей двуядерный процессор почти не отличается от обыкновенной двухпроцессорной системы, в которой установлено два независимых процессора. В результате получают все преимущества двухпроцессорных систем без необходимости использования сложных и дорогих двухпроцессорных материнских плат. Однако в отличие от двухпроцессорных систем в двуядерных более остро стоит проблема использования общих ресурсов, доступ к которым нужно распределять между двумя ядрами.
С точки зрения программного обеспечения двуядерный процессор система рассматривает как два независимых. Естественно, что двуядерный процессор способен одновременно выполнять два потока инструкций, в то время как обычный CPU производит вычисления строго по очереди. В приложениях, оптимизированных под многопроцессорность, можно получить ощутимый вплоть до двукратного прирост производительности.
Число транзисторов в новых процессорах составляет около 230 млн.
Существуют две архитектуры двуядерных процессоров: фирмы AMD (Athlon 64 X2) и фирмы Intel Pentium D и Pentium 4 Extreme Edition 840.
При всей несхожести архитектур ядер, оба процессора имеют одну общую черту – одинаково реализованную двуядерность: каждое ядро имеет собственный кэш второго уровня (до 2048 Кбайт на каждое ядро у Pentium D 9xx и до 1024 Кбайт у Athlon 64 X2). В процессоре Pentium D для связи ядер используется внутренняя шина (передача данных между ядрами возможна и через системную шину FSB). Такое решение не самое удобное в том случае, когда одному ядру надо получить данные, содержащиеся в КЭШе другого ядра. Ведь нередко ядра работают над одной и той же задачей, просто выполняя разные её части. Отсюда неминуемые задержки в доступе к информации, а также возможен простой одного из ядер по той причине, что его кэш полностью заполнен данными, которые всё ещё нужны второму ядру. Логичное решение этой проблемы – использование общей кэш-памяти. И именно таким образом работает двуядерный процессор, получивший название Core Duo.



Рисунок 9.3 – Структура двуядерного процессора типа Athlon 64 X2 (а) и Pentium D9xx (б)


-Каждое из ядер Athlon 64 X2 также обладает собственным набором исполнительных устройств и выделенной кэш-памятью второго уровня; контроллер памяти и контроллер шины HyperTransport - общие (рисунок 8.3). А вот взаимодействие каждого ядра с разделяемыми ресурсами происходит посредством специального перекрестного коммутатора (Crossbar Switch) и интерфейса системных запросов (System Request Interface), в котором формируется очередь системных запросов (System Request Queue). На этом же уровне организовано и взаимодействие ядер, благодаря чему снимается дополнительная нагрузка на системную шину и шину памяти.
Шина HyperTransport работает на частотах от 200 МГц до 2,6 ГГц (сравните с шиной PCI и её 33 или 66 МГц). Кроме того, она использует память DDR, что означает, что данные посылаются как по переднему, так и по заднему фронтам сигнала синхронизации. Это позволяет осуществлять до 5200 миллионов посылок в секунду при частоте сигнала синхронизации 2,6 ГГц; частота сигнала синхронизации настраивается автоматически.
HyperTransport поддерживает автоматическое определение ширины шины, от 2-х битных до 32-х битных линий. Полноразмерная, полноскоростная 32-х битная шина в двунаправленном режиме способна обеспечить пропускную способность до 20800 МБ/с (2*(32/8)*2600), являясь, таким образом, самой быстрой шиной среди себе подобных. Шина может быть использована как в подсистемах с высокими требованиями к пропускной способности (оперативная память и ЦПУ), так и в подсистемах с низкими требованиями (периферийные устройства). Данная технология также способна обеспечить низкие задержки для других применений в других подсистемах.
Шина HyperTransport основана на передаче пакетов. Каждый пакет состоит из 32 разрядных слов, вне зависимости от физической ширины шины (количества информационных линий). Первое слово в пакете всегда управляющее слово. Если пакет содержит адрес, то последние 8 бит управляющего слова сцеплены со следующим 32-битным словом, в результате образуя 40 битный адрес. Шина поддерживает 64 разрядную адресацию в этом случае пакет начинается со специального 32 разрядного управляющего слова, указывающего на 64 разрядную адресацию, и содержащего разряды адреса с 40 по 63 (разряды адреса нумеруются, начиная с 0). Остальные 32-х битные слова пакета содержат непосредственно передаваемые данные. Данные всегда передаются 32-х битными словами, вне зависимости от их реальной длины (например, в ответ на запрос на чтение одного байта по шине будет передан пакет, содержащий 32 бита данных и флагом-признаком того, что значимыми из этих 32 бит являются только 8).
Пакеты HyperTransport передаются по шине последовательно. Увеличение пропускной способности влечёт за собой увеличение ширины шины. HyperTransport может использоваться для передачи служебных сообщений системы, для передачи прерываний, для конфигурирования устройств, подключенных к шине и для передачи данных.
Операция записи на шине бывает двух видов posted и non-posted. Posted-операция записи заключается в передаче единственного пакета, содержащего адрес, по которому необходимо произвести запись, и данные. Эта операция обычно используется для обмена данными с высокоскоростными устройствами, например, для DMA передачи. Non-posted операция записи состоит из посылки двух пакетов: устройство, инициирующее операцию записи, посылает устройству-адресату пакет, содержащий адрес и данные. Устройство-адресат, получив такой пакет, проводит операцию записи и отсылает устройству-инициатору пакет, содержащий информацию о том, успешно ли произведена запись. Таким образом, posted-запись позволяет получить максимальную скорость передачи данных (нет затрат на пересылку пакета-подтверждения), а non-posted-запись позволяет обеспечить надёжную передачу данных (приход пакета-подтверждения гарантирует, что данные дошли до адресата).
Шина HyperTransport поддерживает технологии энергосбережения, а именно ACPI. Это значит, что при изменении состояния процессора (C-state) на энергосберегающее, изменяется также и состояние устройств (D-state). Например, при отключении процессора НЖМД также отключаются.
Электрический интерфейс HyperTransport/LDT низковольтные дифференциальные сигналы (Low Voltage Differential Signaling (LVDS)), с напряжением 2,5 В.
Первые двухядерные процессоры AMD, в отличие от аналогичных представителей Intel, вначале не были предусмотрены для работы с DDR2. Отсутствие поддержки современных типов памяти с высокой пропускной способностью объяснялось тем, что компания в первую очередь стремилась сохранить совместимость Athlon 64 X2 с существующими платформами. Зато, в отличие от двуядерных процессоров Intel, для которых необходим новый чипсет, эти CPU могли устанавливаться на те же материнские платы, что и обычные Athlon 64. В современных многоядерных процессорах AMD реализована поддержка памяти типа DDR2.

Линейка процессоров Pentium D представлена тремя моделями: 820, 830 и 840 с частотами, соответственно, 2.8, 3.0 и 3.2 ГГц. Для повышенных требований разработана модель Pentium Extreme Edition 840, процессорные ядра которой работают на частоте 3,2 ГГц. Отличие экстремального двуядерного процессора от остальных заключается в разблокированном коэффициенте умножения и в присутствии технологии Hyper-Threading, которая отключена в моделях линейки Pentium D. Таким образом, Pentium Extreme Edition будет определяться операционной системой как четыре логических процессора.
Двухядерному процессору присущ весь набор современных технологий: поддержка 64-битных расширений EM64T, технология безопасности Execute Disable Bit, а также полный набор средств Demand Based Switching для управления тепловыделением и энергопотреблением.
Проблеме снижения тепловыделения двуядерным процессором уделяется значительное внимание. Введены средства, позволяющие «на лету» изменять тактовую частоту процессора и напряжение на ядре в зависимости от необходимой на данный момент производительности. В новом процессоре реализован и ряд других, не менее интересных и полезных энергосберегающих технологий, таких, например, как Dynamic Power Coordination. Суть этой технологии состоит в том, что ядра могут независимо друг от друга менять энергопотребление в зависимости от текущей нагрузки на процессор. В том числе, возможна ситуация, когда одно ядро работает, а другое находится в состоянии Deep Sleep, в котором потребление энергии близко к минимальному.
Фактически, получается, что второе ядро вовсе не означает двухкратного увеличения энергопотребления и тепловыделения, ведь оно работает только тогда, когда это действительно нужно. Компания Intel называет это качество Dual-Core Performance on Demand – «производительность двуядерного процессора по требованию». Такое решение является весьма рациональным: с одной стороны, в случае необходимости процессор может потреблять мало энергии, работая в «одноядерном режиме», а с другой стороны, способен мгновенно перейти в режим высокой производительности, задействовав второе ядро.
Введено еще одна технология снижения энергопотребления, получившая название Dynamic Cache Sizing – «динамическое изменение размера кэш-памяти». Суть этой технологии заключается в отключении простаивающих блоков кэш-памяти. Кроме того, если информация, содержащаяся в кэше, в течение какого-то времени не используется, то она переносится в оперативную память, а блоки кэша опять-таки отключаются. Учитывая, что объём кэша у ядра достаточно велик – целых 2 Мбайта – полностью он используется не так уж часто, особенно при невысокой нагрузке на систему, как это обычно и бывает при работе от аккумуляторной батареи.
Компания Intel отказалась от имени Pentium. Двуядерные процессоры фирмы Intel получили официальные имена Core Solo и Core Duo – одноядерный и двуядерный процессор соответственно.
Вслед за двуядерными процесорами фирмой Intel был выпущен четырёхядерный процессор, вышедший под кодовым именем Kentsfield, который представляет собой объединение двух кристаллов Core Duo, сделанное в единой процессорной упаковке. Промышленная модель Kentsfield получила название Core 2 Extreme QX6700.
В октября 2011 года появился шестиядерный процессор Intel Core i7-3960X на базе архитектуры Sandy Bridge-E, являющийся на сегодняшний день самым быстрым CPU от компании Intel для домашних пользователей. Тем временем AMD существенно доработала свой четырехядерный Phenom Х4, увеличив объем кеш-памяти и освоив 45-нанометровый технологический процесс, а в апреле 2010 года анонсировала «шестиядерник» AMD Phenom II Х6, который позволил не отпустить Intel слишком далеко вперед.
Одним из самых важных недостатков у шести- и восьмиядерных процессоров является внушительное энергопотребление, а значит, сильное тепловыделение и высокие температуры чипа при работе под нагрузкой. Производители борются с этим, осваивая все более «тонкие» технологические процессы и разрабатывая более совершенные схемы питания. Также тормозит массовое развитие «многоядерников» дефицит соответствующего программного обеспечения: большая часть потенциала микрочипа остается попросту нереализованной. Кроме того, себестоимость многоядерных процессоров пока обуславливает отнюдь не привлекательную для рядового пользователя цену, которая тоже сдерживает спрос.


9.4. Многоядерные процессоры SPARC

SPARC (Scalable Processor ARChitecture масштабируемая процессорная архитектура) архитектура RISC-микропроцессоров, первоначально разработанная в 1985 году компанией Sun Microsystems. Архитектура SPARC является открытой, что означает:
архитектура системы команд SPARC опубликована как стандарт IEEE 17541994;
спецификации SPARC доступны для лицензирования любой компанией или частным лицом и дают возможность разрабатывать свои собственные решения;
развитием архитектуры SPARC занимается независимая некоммерческая организация SPARC International, Inc., основанная в 1989 году. Членство в SPARC International открыто для всех желающих.
Для производства процессоров с архитектурой SPARC достаточно купить у SPARC International, Inc. За символическую цену лицензию на архитектуру системы команд и разработать свою реализацию архитектуры, либо закупить готовую реализацию (что несколько дороже). Существовало несколько вариантов архитектуры SPARC. Самыми последними являются версии 8 и 9. Версия 8 архитектуры SPARC описывает 32-разрядный микропроцессор, тогда как версия 9 64-разрядный.
Процессор UltraSparc T2 является преимущественно серверным решением. Однако он также может использоваться в хранилищах данных, сетевых устройствах (инфраструктуры WiMAX, 3G/4G) и в готовых решениях (так называемых set-top-box). Процессор представляет собой многоядерную и многопоточную систему на кристалле (SoC). Процессоры UltraSPARC T2 содержат 4, 6 или 8 независимых 64-разрядных SPARC-ядер, каждое из которых имеет аппаратную поддержку выполнения восьми независимых потоков. Поток может быть частью параллельной программы или отдельной программой. В совокупности процессор может обрабатывать до 64 потоков (это свойство особо востребовано в 10-й версии Solaris OS). Тактовые частоты для этого процессора располагаются в диапазоне 900-1400 МГц. На каждое ядро в процессоре имеется по одному криптографическому сопроцессору (так называемые процессоры "безопасности").
Структурная схема процессора UltraSparc T2 изображена на рисунке 8.4. В микросхеме размещается 8 процессорных ядер. Каждое ядро содержит два целочисленных исполнительных блока, один блок с плавающей точкой, графический блок и блок криптографии. Потоки статически ассоциированы с каждым исполнительным модулем, до четырех потоков на целочисленный модуль. Аппаратно SPARC-ядро поддерживает восемь потоков. Поддержка включает в себя полный регистровый файл (с восемью регистровыми окнами), включая большинство привилегированных регистров на каждый поток. Потоки разделяют между собой кэши инструкций и данных, блок вычислений с плавающей точкой (наличия одного блока с плавающей точкой вполне достаточно для многопоточных коммерческих приложений, в которых операции с плавающей точкой занимают порядка 1% от общего потока инструкций).
Каждое ядро имеет встроенный восьмиканальный кэш инструкций первого уровня размером 16 Кб, интегрированный с четырехканальным кэшем данных первого уровня. Кэш-память второго уровня составляет 4 Мб и разделяется всеми восемью ядрами процессора. Кэш второго уровня разделен на восемь банков, которые поддерживают восемь последовательных запросов к памяти для обеспечения высокой пропускной способности канала памяти. Пропускная способность подсистемы памяти при этом достигает 60 Гб/с.
Процессор Ultra SPARC T2 имеет также встроенный контроллер для шины PCIe и два 10 Гбит/с контроллера для сетей Ethernet. Восемь процессорных ядер Niagara 2 связаны матричным переключателем с восемью банками 16-канального модульно-ассоциативного кэша второго уровня, общим объемом 4 Мбайт (у Niagara 1 3 Мбайт). Поскольку нагрузка на кэш в новом процессоре возросла вдвое, а объем кэша увеличился лишь на треть, для поддержания высокой производительности процессора разработчикам пришлось увеличить пропускную способность системы памяти. Вместо четырехканальной памяти DDR2, в процессоре используются четыре сдвоенных канала FBDIMM DRAM. Несколько большая по сравнению с DDR 2 энергоемкость новой подсистемы памяти с лихвой окупается приростом производительности по оценкам разработчиков, в 1,7 раза.




Рисунок 9.4 - Структура многоядерного процессора Sun Ultra Spark T2


UltraSPARC T2 также может быть сконфигурирован на работу в режимах четырех или двух банков кэша второго уровня (с размерами 1/2 и 1/4 общего размера кэша соответственно).
Процессор оборудован четырьмя контроллерами памяти и может работать с 64 банками памяти. Каждый из котроллеров памяти обслуживает обращения к памяти от пары банков кэша второго уровня. В сокращенной конфигурации обращение к памяти может задействовать один из FBD-каналов (в нормальном режиме используются два канала). Каждое обращение к памяти выполняется независимо и может иметь независимый размер памяти и тип динамической памяти. К примеру, различная длительность CAS-импульса. Программное обеспечение не должно занимать адресное пространство, более чем в четыре раза большее, чем наименьший объем в обращении кэша, поскольку линии кэша перекрываются вызовами кэша.
UltraSPARC T2 имеет высокоскоростной синхронный последовательный интерфейс SSI (Synchronous Serial Interface) со скоростью передачи 50 Мбит/с, который соединяет его с программируемым массивом (FPGA), служащим для связи с загрузочным ПЗУ. В дополнение процессор содержит два контроллера PCI Express, два 1/10 Гб/с Ethernet контроллера MAC-уровня с интерфейсами XAUI (eXtended 10 Gigabit Attachment Unit Interface). Реализация PCIe включает поддержку спецификации 1.0а, поддерживаются конфигурационные режимы х1, х4, х8 при скорости данных 2,5Г б/с.
Интерфейс PCIe функционирует на частоте 2,5 ГГц. Возможно управление уровнем сигнала для оптимизации передачи на короткие или длинные линии связи. Его реализация также включает поддержку транспортного уровня, уровня связи логического подуровня физического уровня.
Блок сетевых интерфейсов имеет две линии интерфейсов со скоростями 10 Гб/с, два XAUI-интерфейса, каждый из которых состоит из четырехканального коммутатора CML, поддерживает дифференциальные сигналы в полосе 3,125 ГГц с программируемым уровнем сигнала. Каждый интерфейс имеет четыре приемо-передающие пары. Поддерживаются контрольные сигналы , аппаратное формирование и нумерация пакетов, классификация пакетов "на лету" на базе информации 1-4 уровней стека протоколов. Блок также имеет множественную поддержку прямого доступа в память и аппаратную поддержку виртуализации.
10-гигабитный Ethernet MAC (10GbE) обслуживает 16 MAC-адресов на порт, способен обрабатывать кадры длиной до 9216 байт. Осуществляется сброс пакетов, содержащих ошибки, проверка ошибок пакетов, вычисление и проверка контрольной суммы, сброс пакетов с ошибкой контрольной суммы.
10. Архитектура персональных компьютеров

В 1972 г. фирмой IBM была представлена совершенно новая конструкция персонального компьютера (ПК). Характерным ее признаком было модульное исполнение. Благодаря гибкости конструкции, возможности ее расширения, она оказалась победителем рынка персональных компьютеров.
Компьютер в отдельности сначала использовал ограниченный круг пользователей, в связи с тем, что его программирование требовало больших затрат на создание своих вычислений и управляющих программ. Популярность ПК резко подскочила после разработки фирмой Microsoft операционной системы для ПК. Эта ОС получила название MS – DOS (Микрософт - дисковая операционная система) и очень быстро распространилась во всем мире, превратившись в отдельную ветвь мирового рынка. Одновременно разрабатывался широкий спектр пользовательского программного обеспечения (ПО), без которого ОС не имеет смысла. Большое значение в расширении популярности ПК явилась разработка дискет, которые стали стандартными и совместимыми по структуре данных и форматам.
Первым IBM-PC был компьютер ХТ-класса (eXtended Technologies – расширяемая технология). В нем использован 16-битный процессор с 8-разрядной шиной данных. В первых ХТ РС использовался МП 8088 или 8086 фирмы Intel. Затем начали применяться процессоры фирмы NEC, улучшенной модификации 8086 с обозначением V20. Этот ПК работал с тактовой частотой 4.77 МГц, которая в так называемой Turbo-XT модификации была поднята до 15 МГц.
Следующей была разработана модель АТ – серии (Advanced Technologies передовая технология). Ядром этой ПЭВМ был интеловский процессор 80286. Он располагал 16 – или 32–х разрядной внутренней ШД, и 16 – разрядной внешней ШД. Естественно в его состав может входить и 8 – разрядная шина ввода/вывода. Тактовая частота была поднята от 8 до 21 МГц. Это позволило существенно улучшить производительность ПК.
Затем появились 32-разрядные и 64-разрядные процессоры тактовые частоты которых превысили 3 ГГц, а на их базе были созданы высокопроизводительные компьютеры. На настоящее время наиболее перспективными являются компьютеры на основе двух- и многоядерных процессоров.


10.1. Обобщенная структурная схема компьютера

Структурная схема классического системного блока ПК типа IBM PC изображена на рисунке 10.1. Системный блок состоит из основной панели и расширяемой системной шины. Ядром IBM PC является микропроцессор фирмы Intel 80ххх, 8088 или 8086; затем 80х86, Pentium и т.д. Совместно с каждым процессором может быть включен сопроцессор соответствующего типа 8087, 80287 ... 80487. Наличие его не является обязательным. Для этого на основной (материнской – Mother Board) плате в ПК до 386 модели в непосредственной близости от ЦП, была установлена панелька (сокет), куда мог быть вставлен сопроцессор. В последующих моделях сопроцессор интегрирован в БИС основного процессора. Особенностью такого системного блока явилось то, что практически каждый функциональный узел компьютера выполнялся в виде одной или нескольких больших интегральных схем (БИС). В последующих модификациях системного блока большинство из функциональных модулей были интегрированы в несколько сверхбольших БИС.
Тактовый генератор определяет рабочую частоту ПК. Стандартный компьютер ХТ работал на частоте 4.77 МГц, АТ 486 до 66 МГц, ПК на основе Pentium-процессора работают с частотой свыше 3 ГГц.
BIOS (ПЗУ) – содержит базовую программу ввода/вывода. Она служит для выполнения следующих функций:
Автоматическое тестирование аппаратных компонентов при включении; Вызов блока начальной загрузки ДОС, т.е. сначала BIOS загружает с системного диска в память специальный блок начальной загрузки, а затем передает ему управление, а тот в свою очередь осуществляет загрузку других модулей ДОС;
Обслуживание системных вызовов или прерываний.

13 EMBED PBrush 1415


Рисунок 10.1 – Структурная схема персонального компьютера


Контроллер прерываний. В качестве контроллера использовались БИС 8259 (580ВН59). В ХТ – 1 шт, в АТ – 2. В ХТ имелось 8 линий запроса на прерывание IRQ0 – IRQ7 и 8 дополнительных в РС – АТ и последующих моделях IRQ8 – IRQ15.
Таймер 8253(54) (Отечественный аналог 1810ВИ54). Один из каналов таймера зарезервирован для задания импульсной последовательности для контроллера ПДП для регенерации динамической памяти. Второй канал осуществляет прерывание с частотой 18,2 Гц для программно организованных часов. Третий канал генерирует сигнал для управления (динамическим громкоговорителем – спикером).
В первых моделях ПК для задания различных режимов использовались мини – переключатели типа DIP (). В связи с большим многообразием конфигурации в АТ комплексе ручная конфигурация больше не используется. Для задания параметров конфигурации и их хранения применяется CMOS – RAM. Для сохранения информации в ОЗУ используется питание от аккумулятора, питающего также системные часы. Из этой ИС загружается SETUP – информация.
Контроллер ПДП 8237 (1810ВТ37). В модели ХТ – 1 шт, в АТ – 2 шт. Основное задание – регенерация динамической памяти и обмен данными между устройствами ввода/вывода и ОЗУ (НГМД или НЖМД - Винчестер).
ОЗУ. Используется ОЗУ динамического типа, сгруппированные в несколько банков. 8 – разрядная организация + дополнительный контрольный бит.
Контроллер клавиатуры. Для ХТ использовался параллельный порт 8255, а для АТ микроконтроллер 8042. С помощью контроллера 8042 можно не только считывать данные, но и передавать приказы клавиатуре. Клавиатуры ХТ и АТ различаются. Основное различие состоит в форматах передачи данных. Некоторые клавиатуры позволяют с помощью переключателя менять формат с целью использования их в обоих типах ПК.
Источник питания обеспечивает подачу напряжений +3,3; +5; +12; (5 и –12 V на ПК. Напряжение +12 V используется преимущественно приводными двигателями дисководов и вентиляторов, -5 и –12 применяются для дополнительного напряжения специальных микросхем. Стандартный источник питания ХТ выпускался мощностью 150 Вт, блоки питания АТ имеют мощность 200 – 350 Вт, в последующих моделях мощность была увеличена до 500 Вт и выше. Типовые значения допустимых токов следующие: +12V (5,5A; 7,6A; 8,5A), +5V (15A; 20A; 22A), –5V, -12V (по 0,5А).
На системной плате компьютера имеется группа разъемов, позволяющая подключать к системной шине дополнительным сменные блоки, которые необходимы для управления работой различных устройств ЭВМ. Эти блоки носят название контроллер или адаптер. Следует заметить, что во многих современных ПК большинство контроллеров выполнены в виде одной или нескольких БИС, которые расположены на системной плате компьютера.
В состав первых ПК входил контроллер гибких магнитных дисков (ГМД) - контроллер дисководов. Он мог управлять двумя дисководами. Для управления жестким диском (ЖМД) применяется АТ-системный контроллер, состоящий из контроллера системной шины с дополнительной логикой.
Жесткие диски (ЖД) различаются размерами диска и емкостью. Диаметр диска указывается в дюймах (1 дм = 2,54 см). В старых типах ЖД имели диаметр 5.25”, в современных - 3.5”. Конструктивно во многих компьютерах контроллеры магнитных дисков располагались на одной плате расширения. В настоящее время они интегрированы в специальную БИС (Южный мост).
Разъемы (шины) расширения. Стандартный ПК обладал до 8-ми разъемами (слотами) расширения. Сюда могли вставляться различные цифровые и измерительные карты. В персональных компьютерах IBM XT с процессором 8086 или 8088 использовалась 8-битовая шина расширения.
Компьютеры IBM AT имели 16–битовую шину расширения, которая допускает вставлять в слоты 8–битовые платы. Эта шина расширения получила название ISA (Industry Standard Architecture). 16-битовые карты, выполняющие аналогичные функции с 8-битовыми, являются существенно более быстродействующими. Кроме 16 – разрядной ШД в ISA использовалась 24-разрядная ША, что позволяла адресовать 16 Мб памяти. 13 EMBED Equation.3 1415=8 МГц. Шина ISA являлась тормозящим фактором на пути передачи сигналов между ЦП и другими устройствами (видеоадаптером, ввода/вывода).
В качестве альтернативы была разработана шина расширенной промышленной стандартной архитектуры EISA (Extended ISA). Это 32-разрядная шина с нисходящей совместимостью с существующими платами расширения, т.е. с ней можно использовать 8- и 16-битовую плату ISA. Контакты на EISA – разъеме располагались один под другим. Они подключаются к более глубокому соединителю, чем ISA-платы.
Шина MCA (Micro Channel Architecture) – микроканальная архитектура. Была разработана для IBM PS/2. Шина в электротехническом плане отличалась от выше рассмотренных. Одним из существенных различий между ISA и МСА является отличие в требованиях к конфигурации. В шине МСА каждый разъем пронумерован, а каждая плата имела уникальный идентификационный номер. Конфигурация плат расширения осуществлялась с помощью ПО, размещенного на установочной дискете, поставляемой с ПК PS/2. Программа диагносцировала каждый разъем и тип установленной на нем адаптерной платы. При необходимости она конфигурировала адаптер. Информация о том, какой адаптер и в каком разъеме находится, сохранялась в CMOS RAM.
PCI (Peripheral Component Interconnect) – 32-разрядная шина, функционирующая с стандартной частотой 33 МГц и пропускной способностью 132 Мбайт/с. Разработана для компьютеров с процессором Pentium. Шина обычно содержит 2 или 4 слота расширения, соединенных с мостом системных шин. Шина поддерживает ведущие устройства, которые могут генерировать свои собственные циклы работы с шиной (IDE – контроллеры, MPEG – кодеры, сетевые контроллеры). Производительность PCI интерфейса может быть значительно повышена за счет использования пакетных циклов обмена по шине.
Шина PCI Express, или PCIe, использующая программную модель шины PCI и высокопроизводительный физический протокол, основанный на последовательной передаче данных. В отличие от PCI, использующей для передачи данных общую шину, PCI Express является пакетной сетью с топологией типа звезда. Устройства PCI Express взаимодействуют между собой через коммутатор, при этом каждое устройство напрямую связано соединением типа точка-точка с коммутатором.
Кроме того, шиной PCI Express поддерживается горячая замена карт расширения, осуществляется контроль целостности передаваемых данных, управление энергопотреблением, гарантируется полоса пропускания (QoS);
Шина PCI Express предназначена на использование только в качестве локальной шины. Так как программная модель PCI Express во многом унаследована от PCI. Высокая пиковая производительность шины PCI Express позволяет использовать её вместо шин AGP и тем более PCI и PCI-X. Де-факто PCI Express заменила эти шины в персональных компьютерах. Связь между двумя устройствами PCI Express осуществляется по одной (x1) или нескольким (x2, x4, x8, x12, x16 и x32) двунаправленным последовательным линиям. Каждое устройство должно поддерживать соединение по крайней мере по одной линии (x1). Плата PCI Express помещается и корректно работает в любом слоте той же или большей пропускной способности (например, карта x1 будет работать в слотах x4 и x16);
Разработаны более производительные версии этой шины, в частности PCI Express 2.0 и PCI Express 3.0 со скоростью передачи 5 и 10 Мбит/ с соответственно. Кроме повышенной пропускной способности в шине предусмотрено динамическое управление скоростью передачи, оповещение о пропускной способности и ряд других функций.



10.2. Клавиатура ПЭВМ и ее взаимодействие с процессором

Особенности работы клавиатуры персональной ЭВМ РС–АТ состоит в следующем:
После нажатия клавиши ее код фиксируется в буфере клавиатуры и подается сигнал компьютеру, о том, что в клавиатуре произошло некоторое событие. Этот сигнал выдается в виде прерывания 09h (IRQ1( Int 09h);
Клавиатура фиксирует отдельно события: когда клавиша нажимается и когда ее отпускают. Коды нажатого и отжатого состояния клавиши отличаются ХТ клавиатуре единицей в старшем разряде (отжата), в клавиатуре АТ при отжатии клавиши сначала посылается байт F0h, а затем код клавиши;
Если клавиша не отпускается в течение времени более 0.5 с, то клавиатура генерирует повторные коды нажатой клавиши.
Для управления клавиатурой (рисунок 9.2) в ХТ и АТ использовался контроллер на основе однокристальной микро-ЭВМ Intel 8048, в более поздних моделях – контроллер 8042, выполняющий, по сути, те же функции, что и 8048.




Рисунок 10.2 – Схема подключения клавиатуры и мышки


Основная задача БИС 8048 – отслеживать за клавишами и выдавать сообщение ROM – BIOS при нажатии и отпускании клавиши. В контроллере имеется буфер символов (порты клавиатуры 060H – 063H), в котором может храниться до 20 кодов клавиш, не обработанных ЦП.
Каждый раз, когда нажимается или отпускается одна из клавиш, схема клавиатуры генерирует однобайтовое число, называемое скен – кодом, которое однозначно идентифицирует перемещение клавиши. Клавиатура выдает различные скен – коды при нажатии и отпускании клавиши. При нажатии байт скен – кода содержит число в диапазоне от 1 до 83 (в стандартной клавиатуре ХТ). При отпускании генерируется скен – код на 128 (80H) больше, чем скен – код при нажатии клавиши. Например, при нажатии клавиши Z скен – код 44, а при отпускании 172 = 44 + 128.
Нажатие или отжатие клавиши сообщается ROM – BIOS посредством прерывания INT9, которое вызывает прикладную программу обработки прерываний. При этом читается состояние порта 96 (60H), через который осуществляется связь клавиатуры с BIOS.
Передача кодов с клавиатуры производится в последовательном старт-стопном коде (линии: данные и синхронизация, "Сброс", +5, земля). Прикладная программа получает скен-код и переводит его в 2-х байтный код. Младший байт этого кода содержит ASCII-код клавиши, а старший – скен-код клавиши. Специальные клавиши F1 – F10, Ins, Del и др., а также клавиши дополнительной цифровой клавиатуры имеют в младшем байте 0, а в старшем байте скен – код.
Затем прикладная программа BIOS помещает оттранслированный код в очередь (буфер), находящуюся в младших адресах памяти с 0000:041Е. Работа по переводу скен – кодов усложняется тем, что клавиатура IBM имеет несколько операций по изменению регистров, меняющих значение нажатых клавиш: Shift – c = C, Ctrl – C «break». Также меняется значение клавиши при нажатии клавиши Alt. Кроме этих регистровых клавиш есть еще CapsLock и NumLock.
Информация о состоянии клавиш регистров и клавиш переключателей хранится ROM – BIOS в младших адресах памяти: ячейки 417H и 418H. Когда нажимается одна из этих клавиш, BIOS устанавливает в байтах состояния определенный разряд. Как только BIOS получает код отжатия клавиши, она переключает соответствующий разряд в исходное состояние.
Всякий раз, когда BIOS получает скен – код для нажатия обычной клавиши, то первым делом проверяется состояние регистров, а затем транслируется скен – код в соответствующий 2-й байтный код. В процессе трансляции скен – кодов BIOS постоянно проверяет их на определенные комбинации клавиш: Ctrl+Alt+Del – перезагрузка; Shift – PrintScreen; Int5 – печать экрана; Ctrl – NumLock – приостановка работы, пока не будет нажата любая клавиша; Ctrl – Break Int27 – прерывание. Прямой ввод кодов ASCII может быть осуществлен с дополнительной цифровой клавиатуры при нажатой клавише Alt. (Нажать Alt и вводить цифры кода. При отпускании Alt на экране отображается соответствующий символ ASCII – кода).
После того как действие клавиши оттранслировано, оно записывается в пару байтов в буфере BIOS. Младший из них является главным, а старший – вспомогательным. Когда главный байт содержит ASCII-символ, то это означает, что была нажата одна из клавиш стандартных символов клавиатуры. Для этих ASCII-символов вспомогательный байт содержит скен– код для нажатой клавиши. В простейшем случае этот байт не используется. Он может быть использован, когда необходимо различать клавиши с одинаковыми символами, но различными скен-кодами. При вводе символов со вспомогательной клавиатуры, скен-код во вспомогательном байте равен нулю.
Когда главный байт равен нулю, то это означает, что была нажата какая-то из специальных клавиш: функциональные, управление курсором, либо комбинации с клавишами Ctrl, Alt, Shift. Каждому нажатию специальной клавиши, или комбинации клавиш соответствует определенное значение вспомогательного байта.
Схема взаимодействия клавиатуры с ЭВМ изображена на рис.10.3.

Нажатие или отпускание любой клавиши вызывает сигнал аппаратного прерывания Int09h, которое заставляет процессор перейти на программу обработки прерываний (ПОП). Адрес ПОП находится в ячейке памяти 9
·4=36=24h. Контроллер клавиатуры распознает номер нажатой (отпускаемой) клавиши и помещает ее скен-код в регистр, имеющий адрес 60h.
Программа INT 09 помимо порта 60h работает еще с двумя областями ОЗУ: кольцевым буфером ввода, емкостью 15 слов (адреса от 40:1Еh до 40:3Dh). Каждая ячейка буфера хранит два байта: ASCII клавиши и слово состояния клавиатуры (флаги) – состояние управляющих клавиш. Программа INT 09, получив управление, считывает из порта 60h скен- код и анализирует его значение. Если скен – код принадлежит одной из управляющих клавиш и, к тому же, представляет собой код нажатия, то соответствующий флаг клавиатуры устанавливается в 1.
При нажатии любой другой клавиши программа INT 09 считывает из порта 60h ее скен – код и по таблице трансляции скен – кодов в коды ASCII формирует двухбайтовый код. Старший байт содержит скен – код, а младший – код ASCII. Поскольку нажатой клавише соответствует два скен – кода (строчные и прописные буквы), то соответственно образуется и два ASCII – кода (а и А, r и R и т.д.).
Для управления светодиодами, расположенными на клавиатуре, необходимо в порт 60h записать код команды 0EDh, а вслед за ней в этот же порт следует занести байт управления: Бит 0 = "1" – включение светодиода Scroll Lock; 0 – выключение; Бит 1 = "1" – включение Num Lock, 0 – выключение; Бит 2= "1" – включение Caps Lock, 0 –выключение.



10.3. Видеосистема компьютера

Видеосистема компьютера состоит из видеоадаптера (видеокарты) и монитора (дисплея). Видеоадаптер – это устройство, осуществляющее сопряжение устройства отображения информации – дисплея с компьютером. Дисплей осуществляет преобразование электрических сигналов, поступающих из видеоадаптера в видимое изображение. Основным блоком монитора является электронно-оптическое устройство – электронно-лучевая трубка (ЭЛТ), либо плоские экраны на жидкокристаллических элементах. Кроме этого в состав монитора входит отклоняющая система, блок формирования высоковольтного напряжения (только в мониторах на основе ЭЛТ), усилители развертки, схема синхронизации и управления.
Все мониторы используют растровый принцип формирования изображения, в соответствии с которым изображение на экране образуется группой близко расположенных горизонтальных линий или строк (около 1000 линий на экран), называемой растром. Электронный луч ЭЛТ последовательно проходит каждую строку слева направо, начиная с левого верхнего угла. Когда луч проходит по строке, цвет и яркость каждой из точек строки (пикселя) изменяется и весь растр представляется как связанное изображение. После прохождения очередной строки слева направо луч смещается вниз к началу следующей строки, и так происходит до тех пор, пока луч полностью не сформирует растр.
Качество изображения, получаемое на экране монитора, зависит от параметров электронно-оптического устройства и управляющего им видеоадаптера. К основным параметрам относятся: размеры экрана и светящейся точки «зерна», определяющие количество отображаемой информации и возможную степень ее детализации; скорость обновления изображения (частота кадров), определяющая степень подавления мерцания.
Размер экрана монитора подразделяются на 14-дюймовый (36 см), 15-дюймовый (39 см), 17-дюймовый (44 см), 19-дм (49 см). 21 дм (54 см) и т.д. Соответствующие цифры в дюймах (см) указывают размер экрана по диагонали. Важным параметром, определяющим качество изображения – размер пикселей («зерен») его экрана (0.26, 0.28, 0.29 и др.). Чем меньше зерно, тем лучше качество изображения. Частота кадров в первых мониторах равнялась 50 Гц. В современных мониторах она повышена до 75 – 100 Гц. Размер экрана является главным параметром монитора, наиболее сильно влияющим на качество изображения.
В настоящее время наиболее широко применяются мониторы с использованием жидкокристаллических (ЖК) панелей, которые вытеснили мониторы на основе электронно-лучевых трубок (ЭЛТ). В английском языке для обозначения таких мониторов применяется аббревиатура LCD (Liquid-Cristal Display). В производстве LCD известны две технологии: с использованием пассивных матриц (PMLCD-STN) и активных матриц (AMLCD-TFT).
STN-матрица (Super Twisted Nematic), состоит из ЖК-элементов с изменяемой прозрачностью, в которых используется твист-эффект. Суть этого эффекта состоит в изменении угла вращения плоскости поляризации проходящего света под воздействием электрического поля в так называемых нематических типах жидких кристаллов. Молекулы таких ЖК скручены в спираль.
В активной матрице на тонкопленочных транзисторах TFT (Thin Film Transistor), каждый пиксель управляется отдельным транзистором. По сравнению с пассивной матрицей, TFT LCD-дисплей имеет более высокую контрастность, насыщенность, меньшее время переключения (нет "хвостов" у движущихся объектов). Практически все современные ЖК-мониторы используют панели на тонкопленочных транзисторах, обеспечивающих более яркое и четкое изображение большего размера. По сравнению с пассивной матрицей, TFT-мониторы имеет более высокую контрастность, насыщенность, меньшее время переключения (нет "хвостов" у движущихся объектов).
Thin Film Transistor тонкопленочный транзистор, есть не что иное, как обычный транзистор, но очень тонкий (толщина от 0,1 до 0,01 микрона). В одиночку TFT- элементы не изготавливаются. В едином технологическом процессе создается "пленка", на которой расположена матрица из таких устройств. Так для создания трехцветной матрицы размером 800(600 пикселей понадобится 1440000 отдельных транзисторов.
Принцип действия и многослойная структура всех LCD TFT-дисплеев примерно одинаковы. Свет от лампы подсветки (неоновая или светодиоды) проходит через первый поляризатор и попадает в слой жидких кристаллов, управляемых тонкопленочными транзисторами (рисунок 10.4).










Транзистор создает электрическое поле, которое формирует ориентацию жидких кристаллов. Пройдя такую структуру, свет меняет свою поляризацию и будет или полностью поглощен вторым поляризационным фильтром (экран становится черным), или не будет поглощаться (экран - белый), или поглощение будет частичным (одна из градаций яркости цвета). Цвет изображения определяют цветовые фильтры. Каждый пиксель матрицы состоит из трех субпикселей - красного, зеленого и голубого. В TFT –мониторах используются различные схемы расположения триад фильтров (рисунок 10.5,б).
Жидкокристаллический дисплей на основе TFT-элементов устроен следующим образом. Поперечное сечение панели на тонкопленочных транзисторах представляет собой многослойную конструкцию (рисунок 10.5,а). Крайние слои сторон конструкции выполнены из стекла. Между этими слоями расположен тонкопленочный транзистор, панель цветного фильтра, обеспечивающая нужный цвет – красный, синий или зеленый, и слой жидких кристаллов. Вдобавок ко всему существует флуоресцентная подсветка, освещающая экран изнутри.
При нормальных условиях, когда нет электрического напряжения, жидкие кристаллы находятся в аморфном состоянии. В этом состоянии жидкие кристаллы пропускают свет. Количеством света, проходящего через жидкие кристаллы, можно управлять с помощью электрических напряжений, вследствие чего изменяется пространственная ориентация кристаллов.



а)
б)

Рисунок 10.5 Структура TFT LCD-панели (а) и структура цветного фильтра (б)


Управление яркостью в жидкокристаллическом дисплее основано на поляризации света. Свет поляризуется с определенным углом поляризации, проходя через поляризационный фильтр. При этом наблюдатель видит только снижение яркости света (почти в 2 раза). Если за этим фильтром поставить еще один такой фильтр, то свет будет полностью поглощаться, при условии, что угол поляризации второго фильтра перпендикулярен углу поляризации первого, или полностью проходить, если углы поляризации совпадают. При плавном изменении угла поляризации второго фильтра интенсивность проходящего света будет также плавно изменяться.
Пиксель формируется из трех участков – красного, зеленого и синего. А различные цвета получаются в результате изменения величины соответствующего электрического потенциала, что приводит к повороту вектора поляризации кристаллом и изменению яркости проходящего светового потока. Каждый элементарный участок LCD-панели обслуживается своим тонкопленочным транзистором. При отсутствии сигнала тонкопленочный транзистор закрыт и свет проходит свободно (экран светится белым цветом). При наличии активного уровня сигнала транзистор открывается, соответствующий жидкокристаллический элемент меняет свою ориентацию и при достаточном напряжении система полностью не пропускает свет. Таким образом, варьируя подачу напряжения на TFT транзистор, можно регулировать пропускание света компонентом матрицы.
За каждым элементом стоит свой светофильтр (R,G,B). Поэтому, регулируя освещенность каждой из трех компонент пикселя (точки), можно получить необходимый оттенок цвета пикселя. При этом пиксель может иметь белый цвет (у каждого из трех элементов закрыт транзистор – свет проходит – все три элемента RGB светятся по максимуму – в сумме белый цвет). Если все три транзистора пикселя открыты по максимуму, то свет не проходит и свечение отсутствует, что дает черный цвет. TFT-экран состоит из целой сетки таких пикселей, где работой каждого цветового участка каждого пикселя управляет отдельный транзистор. Количество транзисторов определяет разрешающую способность экранной матрицы, которая является одним из важнейших параметров монитора.
В мониторах персональных компьютеров используется растровый принцип построения изображения. Растровое изображение представляет собой сетку пикселей или цветных точек (обычно прямоугольную) на компьютерном мониторе, бумаге и других отображающих устройствах и материалах (растр). Растровый дисплей можно рассматривать как матрицу дискретных ячеек (точек), каждая из которых может быть подсвечена. Таким образом, оно является точечно-рисующим устройством.
Для подсветки ячеек используется линейная развертка, т. е. развертка с постоянной скоростью вдоль строк и по кадру. При перемещении светящейся точки по горизонтали на экране монитора прочерчиваются строки растра, а перемещением развертывающего элемента по вертикали из совокупности строк образуется растр. Количество точек на экране LCD-монитора (разрешающая способность) фиксировано и определяется размером экранной панели: так для 15-дюймовых LCD-панелей разрешающая способность равна 1024(768 пикселей, а для 17” панелей 1280(1024.
В состав TFT -монитора на основе жидкокристаллической LCD-панели, кроме собственно LCD-панели, входит контроллер формирования управляющих сигналов, который последовательно построчно формирует сигналы управления транзисторами RGB-матрицы, образуя тем самым растровое изображение. Подсветка соответствующего пикселя осуществляется подачей управляющих сигналов на усилители вертикальных и горизонтальных строк и далее на управляющие электроды TFT. Для осуществления подсветки с торца панели используются специальные электролюминисцентные лампы фоновой подсветки (Backlight Lamp). Для них требуется повышенное напряжение, вырабатываемое преобразователем напряжения, который генерирует напряжения VBL (Voltage Back Light) для двух ламп. На вход монитора с видеокарты компьютера подаются сигналы синхронизации горизонтальной и вертикальной разверток, RGB-сигналы управления цветностью и ряд вспомогательных сигналов.

Важным параметром является минимальное время послесвечение пикселя. Так, минимальное время свечения пикселя у TFT-мониторов достигает на настоящее время 1015 мс (для ЭЛТ-мониторов 35 мс). Т.е быстродействие TFT –монитора ниже, чем ЭЛТ, однако для большого ряда применений этого быстродействия вполне хватает.
К другим параметрам монитора относятся цветовая битность матрицы и размер экрана по диагонали. Все современные панели для нормального воспроизведения цветов должны поддерживать режим True Color (24 bit).
Для того чтобы на экране монитора формировалось изображение, информация о каждой точке (код цвета точки) должна храниться в видеопамяти компьютера. В графических режимах дисплея программно можно управлять цветом любого выводимого пикселя, что позволяет строить на экране монитора сложные графические образы. Видеосистемы персональных компьютеров хранят информацию о пикселе в виде группы битов, представляющих значение пикселя. Цвет каждого пикселя определяется непосредственно или косвенно по значению группы пикселей. Формат расположения битов (битовая карта) в видеобуфере зависит как от количества битов, необходимых для представления каждого пикселя, так и от архитектуры видеопамяти. Количество цветов, которое может отображаться в данном графическом режиме одновременно, определяется числом битов, представляющих каждый пиксель.
Для соединения видеоадаптера с жидкокристаллическим монитором или с мультимедийным проектором разработан специальный стандартный цифровой видеоинтерфейс DVI (Digital Visual Interface) стандарт на интерфейс и соответствующий разъём. В отличие от мониторов на электронно-лучевой трубке, имеющих аналоговый интерфейс, LCD-мониторы, по природе своей, цифровые. Их использование с аналоговым интерфейсом – временное вынужденное решение: в видеокарте цифровой сигнал преобразуется в аналоговый, передается на монитор, где опять преобразовывается в цифровую форму. Поэтому возникновение цифрового видео-интерфейса было совершенно очевидным. Цифровой видеоинтерфейс может поддерживать одинарный и двойной режимы.
Одинарный режим DVI (Single link) использует четыре витых пары проводов (красный, зелёный, синий, и clock), обеспечивающих возможность передавать 24 бита на пиксель. С ним может быть достигнуто максимальное возможное разрешение 1920Ч1200 (60 Гц) или 1920Ч1080 (75 Гц).
Двойной режим DVI-D (Dual link) удваивает пропускную способность и позволяет получать разрешения экрана 2560Ч1600 и 2048Ч1536. Поэтому для самых крупных LCD мониторов с большим разрешением, таких, как 30" модели, обязательно нужна видеокарта с двухканальным DVI-D Dual-Link выходом.
Существует несколько разновидностей интерфейсов DVI:
DVI-A только аналоговая передача.
DVI-I аналоговая и цифровая передача.
DVI-D только цифровая передача.
В Single Link DVI присутствует четыре канала передачи данных: три из них соответствуют информации об основных цветах B (Channel 0), G (Channel 1) и R (Channel 2), четвертый же несет в себе сигнал тактовой частоты «Clock» (Channel С). Физически кабель DVI состоит из соответствующего количества витых пар.
В Dual link скоростные возможности DVI достигнуты за счет алгоритма кодирования сигналов, специально разработанного для этой цели. Называется данный алгоритм TMDS – Transition Minimized Differential Signaling, или дифференциальная передача сигналов с минимизацией перепадов уровней, что можно было бы еще назвать «сверхплотным архивированием данных без потерь». При этом дифференциальный, или балансный, способ передачи, когда по каждому проводнику витой пары проходит один и тот же прямой и инвертированный сигнал, обеспечивает эффективную защиту данных от синфазных помех.
Кроме каналов цветности имеется Канал DDC (Display Data Channel), предназначенный для передачи процессору информации о дисплее, который на основании ее, выдает оптимальный для данного дисплея сигнал с нужным разрешением и экранными пропорциями.



10.4. Последовательный и параллельный интерфейсы компьютера

Персональный компьютер имеет ряд внешних интерфейсов для подключения дополнительных устройств. К ним относится клавиатура, “мышь”, печатающее устройство, модем и т.д. Интерфейсы можно разделить на две группы: последовательные и параллельные.
Последовательный интерфейс RS-232/V.24.
Интерфейс RS-232С предназначен для синхронной и асинхронной передачи данных в дуплексном режиме работы. Введен в 1969 г. в США (RS-Recommended Standard). Первоначально скорость передачи до 20 Кбит/с. Цепи основных линий интерфейса приведены в табл.10.1.

Таблица 10.1 – Цепи последовательного интерфейса RS-232

Название
цепи
Название цепи
(англ)
Обозначение
RS-232
Номер
контакта
Обозначение
V.24

Передаваемые данные
Transmit Data
TxD
2
103

Принимаемые данные
Receive Data
RxD
3
104

Запрос передачи
Request to Send
RTS
4
105

Готов к передаче
Clear to Send
CTS
5
106

Передатчик готов
Data Set Ready
DSR
6
107

Приемник готов
Data Terminal Ready
DTR
20
108

Детектор линейного
сигнала
Data Carrier Detect
DCD
8
109

Индикатор вызова
Ring Indicator
RI
22
125

Сигнальная земля
Signal Ground

7
102


Международный консультативный комитет по телефонии и телеграфии (МККТТ), разрабатывающий стандарты в области передачи данных, ввел свой вариант этого стандарта. Он получил название V.24. Нумерация цепей в этом стандарте цифровая и изменяется от 102 до 125. Для передачи данных и управляющих воздействий в цепях RS-232C и V.24 используются разнополярные сигналы. В частности логическому значению “0” соответствует напряжение от +3 до +15 В, а для передачи “1” напряжение от
·3 до
·15 В. В 1991 г. была введена модификация Е (RS-232E), позволяющая передавать данные с более высокой скоростью (до 345 Кбит/с).
Для реализации интерфейса вначале была создана БИС универсального синхронного-асинхронного приемопередатчика (УСАПП) типа 8250, затем были разработаны ее модификации 16450 и 16550 с наличием FIFO – буферизации. Схема последовательного адаптера ПЭВМ IBM PC изображена на рисунке 10.6. Он носит название СОМ-порт. С точки зрения программиста адаптер представляет собой восемь регистров, базовый адрес для СОМ1 3F8h.
Линия INTR подключается к линии IRQ компьютера через ключ, управляемый сигналом 13EMBED Equation.31415 УСАПП. 13EMBED Equation.31415, 13EMBED Equation.31415-биты регистра управления модемом, их можно изменять программно.
Интерфейсную БИС можно запрограммировать на разрешение или запрещение прерываний. Возникновение одной из следующих ситуаций приводит к формированию сигнала INTR:
очередной или несчитанный символ находится в буферном регистре приемника;
регистр передачи пуст;
возникла ошибка на линии (ошибка четности, формата, переполнения);
УСАПП обнаруживает изменение состояния линий с модема (CTS, DSR, DCD, RI).
Следует заметить, что последовательный адаптер не реализует полный интерфейс RS-232, так как в конкретных применениях (например, при подключении модема к последовательному порту ПЭВМ) полный набор может не понадобиться, и обычно реализуется только часть этих возможностей.
13 EMBED PBrush 1415


Рисунок 10.6 - Структурная схема последовательного адаптера ПЭВМ


В настоящее время в компьютерах более распространенным является синхронный последовательный интерфейс типа SSI (Synchronous Serial Interface), в основе которого лежит интерфейс RS-422, улучшенный вариант интерфейса RS-232. Передача данных осуществляется по четырехпроводной симметричной линии. Скорость передачи зависит от длины линии связи и достигает 1,5 Мбит/с. Еще одна пара проволов используется для передачи тактовых импульсов.
Параллельный интерфейс Centronics. Отечественное название ИРПР-М (интерфейс радиальный параллельный модифицированный). Понятие Centronics относится как к набору сигналов и протоколу взаимодействия, так и к 36-контактному разъему, устанавливаемому на принтерах. Интерфейс обеспечивает радиальное подключение устройств с параллельно – последовательной организацией данных (в основном принтеров). Цепи интерфейса представлены в таблице 10.2. Сигналы интерфейса могут быть разделены на три группы:
Заземление (питание);
Управление;
Информационные линии.

Таблица 10.2 – Цепи параллельного интерфейса Centronics

Название
цепи
Название
цепи (англ)
Контакт
Примечание

Данные D0 – D7
Data
(2 9)
Передаваемые данные

Строб
Strobe(
1
Импульс записи в принтер

Занят
Busy
11
Не может принимать данные,
ошибка, занят буфер

Подтверждение
АСК(
10
Принтер принял данные

Конец бумаги
РaperЕnd
12


Выбран

Select/
On line
13
Выбор принтера

Автоматический
перевод строки
AutoLF(
14
Переводит строку сам

Сброс
Init/Reset(
31


Ошибка
Error(
32
Отсутствует бумага,
остановлен двигатель

Выбор
Select In(
36
Выбор для выдачи данных на принтер

Интерфейс работает со стандартными ТТЛ – уровнями. Временная диаграмма сигналов на линиях интерфейса изображена на рисунке 10.7. Не менее чем через 1 мкс после выдачи данных, на линию «Строб» выдается импульс низкого уровня длительностью не менее 0,5 мкс, который сообщает принтеру, что данные на шине действительны.

13 EMBED PBrush 1415


Рисунок 10.7 – Временные диаграммы сигналов на линиях параллельного
интерфейса


Сигнал подтверждения вырабатывается принтером. В состоянии покоя напряжение на этой цепи имеет высокий уровень. После принятия данных принтером на этой линии вырабатывается сигнал нулевого уровня длительностью не менее 0,5 мкс. После переключения линии в состояние высокого уровня компьютер может выставлять на шину данных очередной байт. Сигнал занятости (высокий уровень), вырабатывается принтером в том случае, когда он не в состоянии принимать данные. Это может быть связано с работой принтера в автономном режиме, ошибке принтера и т.п. Компьютер может передавать данные только при наличии низкого уровня на линии «Занят».
Параллельный интерфейс носит название LPT-порт (Line PrinTer). Адаптер параллельного интерфейса представляет собой набор регистров, расположенных в пространстве ввода/вывода с адресами 3BCh, 378h и 278h. Порт может использовать линию запроса прерывания компьютера IRQ7 или IRQ5. BIOS поддерживает от 3 до 4 LPT-портов.
Порт имеет три регистра:
Регистр данных (базовый регистр), используется для вывода или чтения данных;
Регистр состояния – располагает сведениями о состоянии принтера (Busy, PE, Select, ACK);
Регистр управления (разрешение прерывания по спаду сигнала АСК, разрешение работать принтеру по интерфейсу – сигнал Select In).
В некоторых современных компьютерах появились расширения параллельного порта за счет введения портов, применявшихся в компьютерах PS/2. Протокол обмена в них формируется программно. Введен также порт с прямым доступом к памяти, предназначенный для разгрузки процессора при выводе данных на принтер.


10.5. Универсальный интерфейс USB

Интерфейс USB (Universal Serial Bus) это новый интерфейс, который является универсальным последовательным интерфейсом. Используется в компьютерах с 1999 года. Предназначен для подключения к ПК любой периферии со скоростью обмена 12 Мбит/с (полная скорость), либо с низкой скоростью 1,5 Мбит/с.
Помимо универсальности этот интерфейс позволит избавиться от шины ISA. До тех пор пока в ПК существует COM– и LPT–порты и интерфейс для подключения флоппи – дисков в материнской плате должен существовать интерфейс ISA, со всеми присущими ему недостатками: конфликты прерываний и адресов портов, дополнительные дорожки на плате для разводки этих портов.
Архитектурой USB предусматривается топология “звезда”. Система должна состоять из одного ведущего (корневого) концентратора (Hub) с контроллером, управляемым операционной системой, требуемого количества концентраторов и узлов (периферийных устройств). Концентратор (хаб) – ключевой элемент системы Plug-and-Play в архитектуре USB. Хаб является кабельным концентратором, а точки подключения к нему называются портами хаба. Концентраторы могут каскадироваться, образуя древовидную структуру с поддеревьями (рисунок 10.8). У каждого хаба имеется один восходящий порт, предназначенный для подключения к компьютеру (хосту) или хабу верхнего уровня. Остальные порты являются нисходящими и предназначены для подключения функциональных устройств или хабов нижнего уровня. Узлы подключаются к концентраторам. Всего узлов может быть до 127, концентратор также считается устройством. На практике такое количество узлов вряд ли будет использоваться, а топология будет линейной.
В устройства, подключаемые к шине USB, часто встраивается концентратор с единственным выходным портом, что позволяет объединять устройства в цепочку. При построении цепочки следует иметь в виду, что наиболее скоростные устройства (монитор) следует подключать ближе к корневому концентратору, а наименее скоростные (клавиатура) – в конец цепочки. Это обеспечит приоритетное обслуживание высокоскоростных устройств.
Для соединения устройств и концентраторов USB используется 4-х жильный кабель: по двум его проводам подается электропитание (+ 5V) на устройства, не имеющие своего источника, а два других используется для передачи информации.

13 SHAPE \* MERGEFORMAT 1415

Одним из преимуществ USB является возможность “горячего” подключения без перезагрузки системы. При обнаружении на шине нового устройства концентратор оповещает об этом корневой концентратор. Затем система опрашивает вновь подключенное устройство о его возможностях и потребностях и конфигурирует его. Вдобавок при этом загружаются необходимые драйверы.
USB поддерживает ряд режимов передачи, как однонаправленных, так и двунаправленных. Передача осуществляется между ПО компьютера (хоста) и конкретной конечной точкой устройства. Устройство может иметь несколько конечных точек, связь с каждой из них (канал) устанавливается независимо от других.
Архитектура USB допускает четыре базовых типа передачи данных:
Управляющие посылки, используемые для конфигурирования во время подключения и в процессе работы для управления устройствами. Длина поля данных управляющей посылки не превышает 64 байт на полной скорости и 8 байт на низкой.
Сплошная передача небольших пакетов без жестких требований ко времени доставки (например, от сканера или к принтеру). Длина пакетов от 8 до 64 байт.
Прерывания – для передачи типа вводимых символов или координат.
Изохронная передача – непрерывная передача в реальном времени, имеющая заданную задержку доставки сообщения. В случае обнаружения ошибки изохронные данные передаются без повтора – недействительные пакеты игнорируются. Типичным примером изохронной передачи является цифровая передача речевых сообщений.
Общая схема обмена управляющими сообщениями и данными по USB интерфейсу изображена на рисунке 10.9.




Рисунок 10.9 – Общая схема процесса обмена данными по протоколу USB


Хост-контроллер формирует кадры из наиболее приоритетных данных. Каждый кадр начинается стартовой посылкой SOF (Start of Frame) и завершается посылкой EOF (End of Frame). Любая передача состоит из одной или нескольких транзакций. Все транзакции по USB интерфейсу состоят из трех пакетов. Каждая транзакция начинается по инициативе контроллера, который посылает пакет-маркер, описывающий тип и направление передачи, адрес устройства USB и номер конечной точки. В каждой транзакции возможен обмен только между адресуемым устройством (его конечной точкой) и ЭВМ. Адресуемое маркером устройство USB распознает свой адрес и подготавливается к обмену. Источник данных (определенный маркером) передает пакет данных или уведомление об отсутствии данных, предназначенных для передачи. После успешного приема пакета получатель данных посылает пакет подтверждения (Handshake Packet).
Для защиты передаваемой информации от ошибок используется помехозащищенное кодирование циклическим кодом. В случае обнаружения ошибок контроллер автоматически производит повторную передачу (до трех раз). Если повторы безуспешны, сообщение об ошибке передается клиентскому ПО для программной обработки.
Для передачи данных по двухпроводной линии применяются двухполярные линейные сигналы без возврата к нулю типа NRZI (Non-Return to Zero Inverted). В этих сигналах (рисунок 10.10) каждый логический ноль данных приводит к изменению полярности сигнала, а при передаче логической "1" полярность сигнала остается прежней. Такое линейное кодирование позволяет избавиться от длинных последовательностей нулей и улучшить синхронизирующие свойства сигналов.

13 EMBED PBrush 1415


Рисунок 10.10 – Линейные сигналы интерфейса USB


На рисунке 10.11 показаны последовательности пакетов управления и данных при записи и чтении информации.

13 EMBED PBrush 1415


Рисунок 10.11 Управляющие последовательности при записи и чтении данных


На рисунке 10.12 показаны последовательности трехпакетной транзакции при записи и чтении данных..

13 EMBED PBrush 1415


Рисунок 10.12 - Последовательности передачи пакетов



В 2002 году был введен улучшенный стандарт USB 2.0 (IEEE 1394) который превосходит по быстродействию стандартный интерфейс USB в 40 раз (480 Мбит/с, 12Мбит/с или 1,5Мбит/с). Скорость обмена определяется автоматически в диалоговом режиме. Быстродействие этого интерфейса позволило использовать его для подключения внешних жестких дисков, видеокамер, DVD-драйвов и пр.
В конце 2008 году утвержден новый стандарт SuperSpeed USB (USB 3.0), обеспечивающий скорость передачи данных 5 Гбит/сек, что в 10 раз превосходит быстродействие USB 2.0. SuperSpeed USB использует технологию Sync-N-Go, которая минимизирует время ожидания пользователя. Данный интерфейс полностью совместим с оборудованием USB 2.0.
Основной целью интерфейса USB 3.0 является повышение доступной пропускной способности, однако новый стандарт эффективно оптимизирует энергопотребление. Интерфейс USB 2.0 постоянно опрашивает доступность устройств, на что расходуется энергия. Напротив, у USB 3.0 есть четыре состояния подключения, названные U0-U3. Состояние подключения U0 соответствует активной передаче данных, а U3 погружает устройство в «сон». Если подключение бездействует, то в состоянии U1 будут отключены возможности приёма и передачи данных. Состояние U2 идёт ещё на шаг дальше, отключая внутренние тактовые импульсы. Соответственно, подключённые устройства могут переходить в состояние U1 сразу же после завершения передачи данных, что, как предполагается, даст ощутимые преимущества по энергопотреблению, если сравнивать с USB 2.0.

10.6. Мультимедийный интерфейс высокого разрешения

Мультимедийный интерфейс высокого разрешения HDMI (High-Definition Multimedia Interface) позволяет передавать цифровые видеоданные высокого разрешения и многоканальные цифровые аудио-сигналы с защитой от копирования HDCP (High Bandwidth Digital Copy Protection). Мультимедийный интерфейс HDMI имеет пропускную способность в пределах от 4,9 до 10,2 Гбит/с. Максимальная длина HDMI кабеля может составлять 15 метров, но обычно рекомендуется использовать кабели длиной не более 1.5-2 метров. Интерфейс HDMI предназначен для соединения источников цифрового аудио и видео c устройствами отображения цифровыми ресиверами, усилителями звука, телевизорами, плазменными панелями и является новым стандартом подключения оборудования высокой четкости. HDMI позволяет передавать видео, как стандартного разрешения, так и высокой чёткости, а также передавать многоканальный звук.
Разъём HDMI имеет 19 контактов и обеспечивает цифровое соединение нескольких устройств с помощью соответствующих кабелей. В состав интерфейса входят следующие цепи:
TMDS (Transition-Minimized Differential Signaling). Использует три канала (TMDS Data0 - TMDS Data2), передающие потоки аудио/видео и дополнительные данные (TMDS Clock), с пропускной способностью до 3,4 Гбит/с на канал.
CEC (Consumer Electronics Control). Используются для передачи команд и управляющих сигналов между участниками связи. Функции CEC встраиваются по желанию производителя. Если все участники связи будут поддерживать HDMI CEC, то вы сможете, например, посылать команды с пульта ДУ всей подключённой технике. Среди команд есть включение/выключение, воспроизведение, переход в режим ожидания, запись и другие.
SCL (Serial Data Clock). Применяется для сигналов синхронизации передачи данных.
SDA (Serial Data Access). Для доступа передачи данных.
DDC (Display Data Channel). Служи для передачи спецификации дисплея, в частности, название производителя, номер модели, поддерживаемые форматы и разрешения и т.д.
Цепи питания (+ 5 В), контроля подсоединения и экранов.


10.8. Аудиосистема компьютера

Звуковая система компьютера состоит из звукового адаптера (звуковой карты) и электроакустических преобразователях звуковых колебаний (микрофона и звуковых колонок).
Звуковые карты выполняют следующие функции:
дискретизацию аналоговых сигналов с частотами 11,025 кГц, 22,05 и 44,1 кГц. Первая частота относится к 8 битовым картам, другие – к 16 битовым;
8- или 16– битовое квантование, кодирование и декодирование с использованием линейной импульсно-кодовой модуляции (ИКМ);
одновременно производить запись и воспроизведение звуковой информации (режим Full duplex);
ввод сигналов через монофонический микрофон с автоматическим регулированием уровня входного сигнала;
ввод и вывод аудиосигналов через линейный вход/выход;
микширование (смешивание) сигналов от нескольких источников и выдача суммарного сигнала в выходной канал. В качестве источников используются:
а) аналоговый выход CD-ROM;
б) ЦАП;
в) музыкальный синтезатор;
г) внешний источник, подключенный к линейному входу.
управление уровнем суммарного сигнала и сигнала каждого из каналов в отдельности;
обработка стереофонических сигналов;
синтез звуковых колебаний с использованием частотной модуляции (FM) и волновых таблиц (WT).
Звуковая карта должна использовать не более 13% ресурсов процессора ЭВМ при частоте дискретизации 44,1 кГц и не более 7% - при fg = 22,05 кГц. В звуковой карте осуществляется обработка аналоговых и цифровых сигналов. В соответствии со спецификацией АС-97 (Audio Codec 97 Component Specification), разработанной фирмой Intel в 1997 году, обработка звуковых сигналов разделена между двумя устройствами:
звуковым кодеком (AC-audio codec) и
цифровым контроллером (DC – digital controller).
Аналоговая БИС должна располагаться вблизи звуковых соединителей ввода/вывода и как можно дальше от шумящих цифровых шин. Цифровая БИС располагается ближе к системной шине звуковой карты. Соединение этих микросхем осуществляется по унифицированной внутренней шине AC–link. В современных моделях РС эти микросхемы располагаются на системной плате компьютера. Расширенная модификация БИС звукового кодека дополнительно выполняет функции модема.
В упрощенном виде схема аудиосистемы РС может быть представлена следующим образом (рисунок 10.13). Микрофон (М) осуществляет преобразование акустических колебаний в электрический, а громкоговоритель (Гр.) преобразование электрических колебаний в акустические. Входной сигнал с микрофона усиливается, а с линейного входа подается непосредственно на аналого-цифровой преобразователь.


Рисунок 10.13 - Структура звуковой карты


Дискретный сигнал можно представить в виде произведения исходного сигнала U(t) и дискретизирующей последовательности P(t)

Uд(t) = U(t)P(t) .

Дискретизирующая последовательность состоит из очень коротких импульсов. При теоретическом описании эта последовательность представляется
· – импульсами, которые следуют с частотой дискретизации fо = 1/То

·
P(t) =
·
· (t - nTo)
n = -
·
Временная диаграмма процесса дискретизации и квантования показана на рисунке 10.14

Синтез звуковых сигналов. Синтезатор предназначен для генерации звуков музыкальных инструментов, соответствующие определенным нотам, а также создавать „немузыкальные” звуки: шум ветра, выстрела и т.п.
Одна и та же нота, воспроизводимая на музыкальном инструменте, звучит по разному (скрипка, труба, саксофон). Это вызвано тем, что хотя определенной ноте соответствует колебание конкретной частоты, звуки различных инструментов, кроме основного тона (синусоиды), характеризуются наличием дополнительных гармоник – обертонов. Именно обертоны определяют тембровый окрас голоса музыкального инструмента.


Рисунок 10.14– Временная диаграмма оцифровки входного сигнала

Созданный с помощью музыкального инструмента звуковой сигнал состоит из трех характерных фрагментов – фаз. Так, например, при нажатии клавиши рояля амплитуда звука сначала быстро растет до максимума, а затем немного спадает (рисунке 10.15). Начальная фаза звукового сигнала называется атакой. Длительность атаки для различных музыкальных инструментов варьируется от единиц до десятков и даже сотен мс. После атаки начинается фаза „поддержки”, в течение которой звуковой сигнал имеет стабильную амплитуду. Слуховое ощущение высоты звука формируется как раз на стадии поддержки.

13 EMBED PBrush 1415

Рисунок 10.15 – Форма воспроизведения звукового сигнала


Далее следует участок с относительно быстрым затуханием уровня сигнала. Огибающая колебаний во время атаки, поддержки и затухания называется амплитудной огибающей. Различные музыкальные инструменты имеют разные амплитудные огибающие, тем не менее, отмеченные фазы характерны практически для всех музыкальных инструментов, за исключением ударных.
Для создания электронного аналога реального звука, т.е. для синтеза звука, необходимо воссоздать огибающие гармоник, из которых состоит реальный звук. Существует несколько методов синтеза. Одним из первых и наиболее изученных является аддитивный синтез. Звук в процессе синтеза формируется путем сложения нескольких исходных звуковых волн. Этот метод использовали еще в классическом органе. Специальной конструкцией клапанов при нажатии клавиши заставляли звучать сразу несколько труб. При этом звучащие трубы были настроены либо в унисон или в одну две октавы. При нажатии клавиши первыми начинали звучать короткие трубы, дающие высокие обертоны, затем вступала средняя секция и последними – басы.
При цифровом аддитивном синтезе отдельно формируется N гармоник с частотами от f1 до fN и амплитудами от A1(t) до AN(t). Затем эти гармоники складываются.
Второй метод является разновидностью нелинейного синтеза. Для получения одного музыкального звука используется сигнал одного генератора. Гармоническую окраску получают в результате нелинейных искажений исходного сигнала. Для этого синусоидальный сигнал, формируемый генератором, управляемым кодом (ГУК) с амплитудой A1 и частотой f1 (рисунок 10.16 а) пропускают через нелинейный элемент с некоторой характеристикой К(х) (рисунок 10.16 б). Зная амплитуду сигнала A1 и вид характеристики К(х), можно вычислить спектр сигнала на выходе (рисунок 10.16 в).
Следующим широко распространенным методом является синтез на основе частотной модуляции (широко используется в ЭМИ фирмы Yamaha). При частотной модуляции осуществляется изменение частоты f0 несущего колебания U(t) = Asin(2
·f0 +
·) по закону модулирующего колебания x(t). Выражения для частотно-модулированного колебание имеет вид
U(t) = Asin (
·ot +
·
·
·[2x(t) - 1]dt),
Величина изменения частоты несущего колебания
·
·0=2
· f0 называется девиацией частоты, а отношение отклонения
·f0 частоты модулированного колебания к частоте модулирующего колебания fm называется индексом частотной модуляции mf =
·f0/fm. Изменяя индекс модуляции можно изменять спектр сигнала на выходе модулятора и тем самым достичь качества синтезируемого звука, близкого к естественному звучанию.

13 EMBED PBrush 1415

Рисунок 10.16 – Синтез звуковых сигналов на основе нелинейного преобразования


Выражения для частотно-модулированного колебание при синусоидальном модулирующем колебании x(t) = sin
·ot имеет вид
U(t) = Asin [2
·fot + mf sin(2
·fmt)].
Спектр модулированных сигналов при различных индексах модуляции изображен на рисунке 10.17.

13 EMBED PBrush 1415

Рисунок 10.17 – Спектры сигналов с различным индексом модуляции




10.8. Системные платы компьютера

Почти все электронные компоненты современного персонального компьютера, сервера или рабочей станции располагаются на стеклотекстолитовой системной (материнской) плате и соединяются плоскими медными проводниками, выполненными методом печатного монтажа. Благодаря достижениям современной микроэлектроники все контроллеры и большинство функциональных узлов, входящих в состав компьютера (рисунок 9.1) интегрированы в одну или несколько сверхбольших интегральных микросхем (СБИС), так называемые северный и южный мосты. Совокупность таких СБИС, обеспечивающих взаимодействие процессора с остальными компонентами компьютера, получили название "чип-сет". Чип-сет определяет основной набор функций и производительность материнской платы. Наиболее производительными и функциональными являются чип-сеты компаний Intel и NVIDIA, а микросхемы компаний SiS и VIA занимают нишу бюджетных решений. Чип-сет отвечает за следующие характеристики системной платы:
поддерживаемые процессоры;
частота системной шины процессора. Чем выше максимальная поддерживаемая частота системной шины, тем в больше степени можно разогнать процессор, а также тем более новые процессоры в нее можно будет установить в дальнейшем;
тип модулей памяти. Так, например, для платформы Intel LGA 775 поддерживается память стандартов DDR2 и DDR3, LGA 1366 – только DDR3, процессоры AMD имеют встроенный контроллер памяти, в этом смысле они независимы от чипсета;
частота модулей памяти (минимальная рекомендуемая частота для современной системы – DDR2-800);
поддерживаемые интерфейсы.
На разных этапах развития производства использовались различные типы системных плат. Типовая структура системной платы для первых суперскалярных процессоров изображена на рисунке 10.18. В качестве магистрального канала связи между процессором (или процессорами) и всеми остальными устройствами в компьютере: памятью, видеокартой, жестким диском и т. д. выступает системная шина FSB (Front Side Bus). Она представляет собой совокупность сигнальных линий, объединенных по своему функциональному назначению (данные, адреса, управление), которые имеют определенные электрические характеристики и протоколы передачи информации. Непосредственно к системной шине подключен только центральный процессор, остальные устройства подсоединяются к ней через специальные контроллеры, сосредоточенные в основном в северном мосте. В связи с тем, что северный мост осуществляет самые быстродействующие процессы обработки и передачи данных, то с целью сокращения длины соединительных проводников, на системной плате он располагается в непосредственной близости от процессора. Связь северного моста с южным мостом и остальными компонентами компьютера происходит через шину PCI.




Рисунок 10.18 – Структурная схема системной платы компьютера


Особенностью системной платы является использование для управление дисплеем графических адаптеров ускоренный графического порта AGP (Accelerated Graphic Port ). Этот порт представляет собой 32-разрядную шину с тактовой частотой 66 МГц (точнее, 66,66...), по составу сигналов напоминающую шину PCI. Из рисунка 10.18 видно, что северный мост связывает AGP с памятью и системной шиной процессора, не натыкаясь на ставшую уже «узким местом» шину PCI. Повышенное быстродействие порта обеспечивается следующими тремя факторами:
Конвейеризацией операций обращения к памяти.
Сдвоенными передачами данных.
Демультиплексированием шин адреса и данных.
Конвейеризацию обращений к памяти иллюстрирует рисунком 10.19, на котором показаны обращения к памяти по шине PCI и AGP.

13 EMBED PBrush 1415


Рисунок 10.19 - Циклы обращения к памяти PCI и AGP


При неконвейеризированных обращениях шины PCI во время реакции памяти на запрос шина простаивает. Конвейерный доступ AGP позволяет в это время передавать следующие запросы, а потом получить плотный поток ответов (самих передаваемых данных). Спецификация AGP предусматривает возможность постановки в очередь до 256 запросов. AGP поддерживает две пары очередей для операций записи и чтения памяти с высоким и низким приоритетом. В процесс передачи данных любого запроса может вмешаться следующий запрос, в том числе и запрос в режиме PCI.Сдвоенные передачи данных обеспечивают при частоте тактирования шины в 66 МГц пропускную способность до 532 Мбайт/с. Такая скорость достигается за счет того, что в AGP кроме «классического» режима, называемого теперь «х1», в котором за один такт синхронизации передается один 4-байтный блок данных, имеется возможность работы в режиме «х2», когда блоки данных передаются как по фронту, так и по спаду сигнала синхронизации. Запросить режим х2 может только графическая карта, если она его поддерживает. Дальнейший переход на тактовую частоту 100 МГц приводит к повышению пропускной способности до 800 Мбайт/с.
Раздельное использование шин адреса и данных также позволило увеличить быстродействие шины AGP.
AGP интерфейс дал возможность реализовать всю пропускную способность 64-битной основной памяти компьютера на процессоре типа Pentium, чго нельзя было достичь при подключении видеокарты к шине PCI.
В настоящее время благодаря внедрению высокопроизводительной универсальной шины расширения PCI Express появилась возможность использовать её в персональных компьютерах вместо шин AGP.
Системная плата для многоядерного процессора.
Рассмотрим особенности построения системной платы для многоядерных процессоров на примере платы на основе чип-сета Intel X58. В ней установлены северный мост X58 и южный типа ICH10R (рисунок 10.20). Благодаря интегрированному в центральный процессор 3-канальному контроллеру динамической памяти возможно подключение ее непосредственно к процессору, минуя системную шину, что привело к повышению быстродействия компьютера в целом.




Рисунок 10.20 – Системная плата компьютера на основе чип-сета Intel X58


Системная шина FSB заменена на шину QPI (QuickPath Interconnect). Это последовательная шина типа точка-точка для соединения процессоров между собой и с чипсетом. Каждое соединение шины QuickPath состоит из пары односторонних каналов, каждый из которых физически реализован как 20 дифференциальных пар проводов. Данные передаются в виде пакетов (дейтаграмм). Пропускная способность одного канала составляет от 4,8 до 6,4 миллиарда передач в секунду. Одна передача содержит 16 бит полезной нагрузки, следовательно теоретическая суммарная пропускная способность одного соединения (в двух направлениях) от 19,2 до 25,6 гигабайт в секунду (то есть от 9,6 до 12,8 гигабайт/с в каждую сторону); при этом один процессор может иметь несколько соединений.
Для соединения южного моста с северным фирмой Intel разработана последовательная шина DMI (Direct Media Interface). Пропускная способность шины DMI первого поколения составляет 2 Гбит/с.
Южный мост Intel ICH10R поддерживает шесть портов SerialATA 3 Gb/s, что позволяет объединить диски в RAID-массивы уровня 0, 1, 5 и 10. Кроме слота PCI устанавливаются 1 слот PCI Express 16x (предназначен для установки видеокарты; заменяет разъем AGP) и до 4 слотов PCI Express 1x; слоты PCI Express 4x и 8x, а также серверные платы и контроллеры, предназначенные для работы компьютера в локальной сети.
Для связи южного моста с ПЗУ используется последовательный интерфейс SPI (Serial Peripheral Interface), обеспечивающий вести синхронную передачу данных в режиме полного дуплекса.




Список рекомендованной литературы

Основная

Бройдо В.Л. Архитектура ЭВМ и систем: Учебник для вузов / В.Л. Бройдо, О.П. Ильина. СПб.: Питер, 2006. – 718 с.
Гук М. Процессоры от Intel 8086 до Pentium I I / М.Гук. СПб: Питер, 1998. 224 с.
Гук М. Аппаратные средства IBM PC. Энциклопедия / М.Гук. СПб: Питер, 1999.– 816 с.
Желваков Б.Б. Архитектура корпоративных информационных систем /Б.Б.Желваков. СПб.: Изд-во СПбГИЭУ, 2012. 622 с.
Крейгон Х. Архитектура компьютеров и ее реализация / Х.Крейгон. М.: Мир, 2004. 416 с.
Новиков Ю.В. Основы микропроцессорной техники: Учебное пособие/Ю.В. Новиков, П.К. Скоробогатов. М.: Интернет-университет информационных технологий; БИНОМ, 2006. 359 с.
Микропроцессоры. Т.1. Архитектура и проектирование микро-ЭВМ, организация вычислительных процессоров / Под ред. Л.Н. Преснухина. М.: «Высшая школа», 1986. 368 с.
Пирогов В.Ю. Ассемблер на примерах / В.Ю. Пирогов. СПб.: БХВ-Петербург, 2005. 416 с.
Советов Б.Я. Архитектура информационных систем / Б.Я. Советов, А.И. Водяхо, В.А. Дубенецкий, В.В. Цехановский. М.: Изд. центр «Академия», 2012. – 288 с.
Таненбаум Э. Архитектура компьютера. 4-е изд / Э. Таненбаум. СПб.: Питер, 2006. 699 с.
Хамахер К. Организация ЭВМ / К.Хамахер, Э. Вранешич, С. Заки. СПб.: Издательская группа BHV, 2003. – 848 с.
Юров В. Ассемблер / В. Юров. СПб.: Питер, 2000. 624 с.

Дополнительная

Абель П. Язык Ассемблера для IBM PC и программирования / Пер. с англ. Ю.В.Сальникова. М.: Высш. школа, 1992. 447 с.
Левенталь Л., Сэйвилл У. Программирование на языке Ассемблер для микропроцессоров 8080 и 8085 /Пер.с англ. М.:Радио и связь, 1987. 448 с.
Микpопpоцессоpный комплект К1810: Стpуктуpа, пpогpаммиpование, пpименение / под pед. Ю.М. Казаpинова. М.: Высш. школа, 1990. 269 с.
Микропроцессоры. Т.1. Архитектура и проектирование микро-ЭВМ, организация вычислительных процессоров / Под ред. Л.Н. Преснухина. – М.: «Высшая школа», 1086. 368 с.
Хвощ С.Т. и др. Микропроцессоры и микроЭВМ в системах автоматического управления: Справочник. Л.: Машиностроение, 1987. 640 с.












13PAGE 15


13PAGE 148915



13 EMBED Word.Picture.8 1415


13 EMBED PBrush 1415


Рисунок 4.5 – Программируемый
параллельный интерфейс







Рисунок 4.6 – Формат управляющего слова




13 EMBED PBrush 1415


Рисунок 4.7 – Временная диаграмма
асинхронного ввода данных с порта А






Рисунок 4.12 –Программируемый
таймер К1810ВИ54




13 EMBED PBrush 1415

Рисунок 4.14 – Схема матричного
подключения клавиатуры к
микропроцессорной системе



13 EMBED PBrush 1415



Рисунок 4.16- Схема подключения индикаторов
к микропроцессорной системе




Рисунок 5.5 - Схема ячейки памяти статического ОЗУ

13 EMBED PBrush 1415




Рисунок 5.11 – Структурная схема
подключения кэш-памяти в ЭВМ




Запрос и получение подтверждения от основной МП БИС на возможность доступа к магистралям.




Рисунок 6.7 – Формат дескриптора
сегмента процессора 8086





Рг табл. локальных дескрипторов

Рг табл. глобальных дескрипторов

Рг табл. дескрипторов прерываний

AX

DX

CX

BX

BP

SP

SI

DI

SR

IP

MSW

CS

DS

SS

ES

TI

RPL

TR

LDTR

AWP

GDTR

IDTR

15

0

15

3

2

0

15

7

23

0

15

0

0

0

Слово состояния

машины

Регистры - дескрипторы сегментов (теневые регистры)

Атрибут

Базовый адрес

Размер (граница) сегмента

Селектор

Селектор

Регистры системных адресов

Регистр задачи

<>

<>

Рисунок 6.9 - Регистровая структура процессора Intel 80286




Рисунок 6.10 – Схема извлечения команды




13 EMBED PBrush 1415

Рисунок 8.2 –Регистры
процессора 80386




Таблица разделов

Раздел 0

Раздел 1

Раздел 1023

Стр 0 Таблица страниц

Стр 1 (4 Кбайта)

Стр 1022

Стр 1023

Сегмент

Раздел

0000 0000 h

0000 1000 h

FFFF E000 h

FFFF F000 h

FFFF FFFF h

Рисунок 8.4 – Схема страничной организации памяти

0

TABLE (DIR)

PAGE

BYTE (OFFSET)

Указатель

раздела

i

Начало

католога

Указатель

страниц

Начало

таблицы

Выбираемый

байт

Начало

страницы

CR3

31

22

21

12

11

0

31

31

31

0

0

12

10

10

A31-12

Базовый

адрес

Баз.

адрес

A31-12

A31-12

Баз.

адрес

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

A21-12

A0-11

Каталог

разделов

Таблица

страниц

раздела

Страница

Рисунок 8.5 – Обращение к памяти при страничной организации

13 EMBED PBrush 1415

13 EMBED Visio.Drawing.4 1415

Рисунок 10.3 - Схема взаимодействия клавиатуры с ЭВМ


13 EMBED PBrush 1415

Рисунок 10.4 - Схема свечения LCD-экрана

13 EMBED PBrush 1415


Рисунок 10.8 - Древовидная структура UBS-интерфейса






Рисунок 2Описание: Описание: http://www.ssti.ru/kpi/informatika/Content/biblio/b1/inform_man/image007.jpgRoot Entry

Приложенные файлы

  • doc 17845220
    Размер файла: 6 MB Загрузок: 0

Добавить комментарий