Основы микропроцессорной техники


СОДЕРЖАНИЕ:

Основы микропроцессорной техники

Название:Основы микропроцессорной техники (2-е изд.)
Автор: Скоробогатов П.К., Новиков Ю.В.
Издательство: М.: НОУ «Интуит»
Год: 2020
Страниц: 406
ISBN: 978-5-9963-0023-5
Формат: PDF
Размер: 47 Мб
Язык: русский

Разъясняются основные понятия микропроцессорной техники, рассматриваются принципы функционирования микропроцессорных систем, предлагаются методы проектирования микропроцессорных систем на основе микроконтроллеров.
Микропроцессорная техника — наиболее быстро развивающаяся область электроники, для успешного овладения которой необходимо с самого начала усвоить современные принципы организации микропроцессорных систем. Освоение ключевых понятий микропроцессорной техники — это первая задача курса. Успех при этом может принести только комплексный подход к проектированию аппаратных и программных средств.
Рассматриваются особенности систем различных уровней сложности и различного назначения, принципы архитектурных решений, способы и средства организации обмена информацией. Особое внимание уделено принципам организации персональных компьютеров как наиболее сложных и гибких микропроцессорных систем, позволяющих решать самые сложные задачи.
Вторая задача курса — обучение навыкам проектирования систем на основе микроконтроллеров, как наиболее распространенного типа микропроцессорных систем. Для ее решения приводятся описание микроконтроллеров семейства PIC, а также специальных программных средств проектирования, рассматриваются примеры решения задач проектирования нескольких устройств.
Предполагается, что большинство понятий, введенных в данном курсе, станет предметом более детального рассмотрения в других, специальных курсах.

Лекция 8. Основы микропроцессорной техники

8.1 Системы счисления

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

Примером позиционной формы записи чисел является та, которой мы пользуемся (так называемая арабская форма чисел). Так, в числах 123 и 321 значения цифры 3, например, определяются ее положением в числе: в первом случае она обозначает три единицы (т.е. просто три), а во втором – три сотни (т.е. триста).

В современной информатике используются в основном три системы счисления (все – позиционные): двоичная, шестнадцатеричная и десятичная.

Двоичная система счисления используется для кодирования дискретного сигнала, потребителем которого является вычислительная техника. Такое положение дел сложилось исторически, поскольку двоичный сигнал проще представлять на аппаратном уровне. В этой системе счисления для представления числа применяются два знака – 0 и 1.

Шестнадцатеричная система счисления используется для кодирования дискретного сигнала, потребителем которого является хорошо подготовленный пользователь – специалист в области информатики. В такой форме представляется содержимое любого файла, затребованное через интегрированные оболочки операционной системы, например, средствами Norton Commander в случае MS DOS. Используемые знаки для представления числа – десятичные цифры от 0 до 9 и буквы латинского алфавита – A, B, C, D, E, F.

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

В любой позиционной системе счисления число можно представить в виде полинома вида

N = a n-1 b n-1 + a n-2 b n-2 +…. + + a b 0 , a m b m + a m-1 b m -1 + a m-i b m –I , (8.1)

где n – количество разрядов целой части числа,

где m – количество разрядов дробной части числа,

b – основание системы счисления,

ai – множитель, принимающий любые целочисленные значения от 0 до b-1, и соответствующий цифре i-го порядка числа.

Двоичная система счисления — число представляется совокупностью цифр 0 и 1, которые называются битами (binary digits – двоичные цифры). Основание системы счисления b = 2.

Шестнадцатеричная система счисления – для записи чисел используют цифры от 0 до 9 и буквы латинского алфавита A (10), B (11), C (12), D (13), E (14), F (15).

Перевод из десятичной системы счисления в двоичную и шестнадцатеричную:

Для перевода чисел из одной системы счисления в другую используют метод деления (целая часть числа) – умножения (дробная часть числа) на основание системы счисления.

Перевод целой части числа:

а) исходное целое число делится на основание системы счисления, в которую переводится (на 2 — при переводе в двоичную систему счисления или на 16 — при переводе в шестнадцатеричную); получается частное и остаток;

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

в) все полученные остатки и последнее частное преобразуются в соответствии с таблицей перевода в цифры той системы счисления, в которую выполняется перевод;

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

Выполнить перевод числа 19 в двоичную систему счисления:

частное остаток
19 : 2 = 1 -младший бит
9 : 2 =
4 : 2 =
2 : 2 =
1: 2 = 1 -старший бит

Выполнить перевод числа 173 в шестнадцатеричную систему счисления:

частное остаток
173 : 16= D (13)-младший бит
10 : 16 = A (10) -старший бит

Перевод дробной части числа из десятичной системы в любую другую позиционную систему счисления.

При переводе правильной десятичной дроби в систему счисления с основанием b необходимо сначала саму дробь, а затем дробные части всех последующих произведений последовательно умножать на b, отделяя после каждого умножения целую часть произведения. Число в новой системе счисления записывается как последовательность полученных целых частей произведения. Умножение производится до тех поp, пока дробная часть произведения не станет равной нулю. Это значит, что сделан точный перевод. В противном случае перевод осуществляется до заданной точности. Достаточно того количества цифр в результате, которое поместится в ячейку.

Пример. Выполнить перевод числа 0,847 в двоичную систему счисления. Перевод выполнить до четырех значащих цифр после запятой.

Пример. Выполнить перевод числа 0,847 в шестнадцатеричную систему счисления. Перевод выполнить до трех значащих цифр.

Для различения систем счисления, в которых представлены числа, в обозначение двоичных и шестнадцатеричных чисел вводят дополнительные реквизиты:

для двоичных чисел – нижний индекс справа от числа в виде цифры 2 либо знак B или b (binary – двоичный), справа от числа. Например, 1010002 = 101000B = 101000b;

для шестнадцатеричных чисел — нижний индекс справа от числа в виде числа 16 либо знак H или h (hexadecimal – шестнадцатеричный), справа от числа. Например, 3AB16 = 3ABH = 3ABh.

Перевод из двоичной или шестнадцатеричной систем счисления в десятичную выполняется по соотношению (8.1).

Группа из 8 битов информации называется байтом. Если бит — минимальная единица информации, то байт ее основная единица. Существуют производные единицы информации: килобайт (кбайт, кб), мегабайт (Мбайт, Мб) и гигабайт (Гбайт, Гб).

1 кб =1024 байта.

1 Мб = 1024 кбайта = 1024 x 1024 байтов.

1 Гб = 1024 Мбайта = 1024х1024 х 1024 байтов.

Эти единицы чаще всего используют для указания объема памяти ЭВМ.

8.2. Счетчики импульсов

Счетчик – это последовательная схема, в основе которой лежит регистр (последовательное соединение триггеров). Поскольку любая последовательная схема имеет конечное число состояний, то счетная последовательность счетчика либо завершается неким определенным состоянием (счетчики с конечным состоянием или счетчики с насыщением), либо циклически повторяется – счетчики по модулю (mod). Термин модуль используется для обозначения числа различных состояний счетной последовательности. Например, в счетчике по mod = 6 после прихода на вход шестого импульса счетчик обнуляется и процесс счета повторяется снова. Если в счетчике n триггеров, то число возможных состояний счетчика равно 2 n и следовательно его модуль равен mod = 2 n .

Счетчики строятся на базе синхронных триггеров (D, T). В зависимости от способа соединения синхронизирующих входов триггеров, двоичные счетчики подразделяются на синхронные и асинхронные.

В зависимости от модуля они подразделяются на десятичные (декадные), у которых

mod = 10 и двоичные с mod = 2 n .

В зависимости от направления счета они подразделяются на суммирующие, вычитающие или реверсивные (направление счета можно менять).

Синхронные счетчики. Функциональная схема синхронного двоичного счетчика на базе Т-триггеров и временная диаграмма его работы представлены на рис. 8.1.

Так как в счетчике общая синхронизация, то состояние триггеров меняется синхронно, т. е. те триггеры, которые должны изменить своё состояние по синхроимпульсу, делают это синхронно. В частности, если в момент времени t все триггеры исходно обнулены, то после подачи на линию «разрешение счета» сигнала Т = 1 в единичном состоянии будет только первый триггер (Q =1) после прихода импульса синхронизации. Все остальные – в нулевом, так как через схемы И их входы Т блокированы нулевым потенциалом. С приходом второго тактового импульса к изменению своего состояния на единичное будет подготовлен второй триггер и по заднему фронту второго импульса синхронизации триггеры примут новое состояние: Q = 0, Q1 = 1, Q2 = 0.

Число импульсов, пришедших на вход счетчика, можно определить по соотношению:

Описанный выше способ формирования сигналов на Т входов триггеров используется в счетчиках с последовательным переносом. Применение вентилей И для формирования сигналов на входах Т приводит к снижению скорости счета, так как после прохождения синхроимпульса следующий нельзя подавать до тех пор, пока не определятся все значения на входах Т. Для n-разрядного счетчика требуется время tзад = τв (n – 1), где τв – время задержки распространения сигнала через один вентиль.

Этот недостаток устраняется в счетчиках со сквозным переносом за счет усложнения схемы подачи сигналов на Т входы триггеров.

В асинхронных счетчиках входы синхронизации триггеров, кроме первого, соединены с выходами предыдущих триггеров (рис. 8.2), а входы Т объединены в общую линию «разрешение счета», поэтому состояние триггера меняется в ответ на изменение состояния предыдущего.

DD3
а

Если на линию «разрешение счета» подана логическая 1, то каждое «отрицательное» изменение состояния каждого левого триггера (задний фронт импульса) вызовет изменение состояния последующего и т.д. В асинхронных счетчиках возможен сбой в процессе передачи информации от триггера к триггеру. Они находят широкое применение в качестве делителей частоты на любую степень двойки fвых = fвх / 2 n .

Все рассмотренные счетчики являются суммирующими двоичными счетчиками. Они легко могут быть перестроены в вычитающие. Для этого, например, в схеме рис. 8.1 достаточно переключить входы вентилей И с выходов Q на инверсные .

8.3.1. Принципы организации микроконтроллеров; архитектура микропроцессоров и их функционирование, структура микроконтроллеров.

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

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

1. Информация кодируется в двоичной форме и разделяется на единицы информации, называемые словами.

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

3. Слова информации размещаются в ячейках памяти и идентифицируются номерами ячеек, называемых адресами слов.

4. Алгоритм представляется в форме последовательности управляющих слов, которые определяют наименование операции и слова информации, участвующие в операции, и называются командами.

5. Выполнение вычислений, предписанных алгоритмом, сводится к последовательному выполнению команд в порядке, определяемом программой.

Принцип программного управления предполагает, что алгоритм в ЭВМ представляется в виде упорядоченной последовательности команд вида

где b – двоичная переменная. Определенное число первых разрядов команды характеризует код операции (КОП) – характер выполняемых действий (+, -, * ,и т.д.). Последуюшие наборы двоичных переменных (А1 …Аn ) определяют адреса операндов (аргументов и результатов), заданных кодом КОП. Процесс вычислений, выполняемый по заданной программе, состоит в последовательном выполнении команд. Первой выполняется команда, заданная пусковым адресом программы. Обычно это адрес первой команды программы.

В состав современного микроконтроллера входят: ядро (микропроцессор); память данных (оперативное запоминающее устройство — ОЗУ (RAM)); память программ (постоянное запоминающее устройство – ПЗУ (ROM) или Flash-память); периферийные устройства: контроллеры прерываний, порты ввода-вывода, ШИМ- генераторы, таймеры, АЦП, ЦАП, порты для последовательной передачи данных – USART, I 2 C, SPI и т.д. Все эти устройства выполняются, как правило, на одном кристалле и помещаются в одном корпусе.

8.3.2. Архитектура микропроцессоров и их функционирование.

Основным элементом микроконтроллера является микропроцессор (МП). Первый коммерческий микропроцессор Intel -8080 был разработан фирмой Intel в 1975 г. Микропроцессор – это функциональный блок, предназначенный для логической и арифметической обработки информации на основе принципа программного управления. Современные микропроцессоры выполняются, как правило, по КМОП технологии и содержат десятки и сотни тысяч элементов, имеют высокое быстродействие – от 10Mips (миллионов операций в секунду) и более, 8, 16 или 32 –разрядную шину данных, 18, 24-разрядную и более шину адреса (речь идет о микропроцессорах для промышленного применения).

В настоящее время основными являются две архитектуры микропроцессоров — неймановская, основанная на принципах, сформулированных фон Нейманом и Гарвардская архитектура. Неймановская архитектура предполагает, что память в системе линейна, т. е. безразлично, в каких областях располагается ОЗУ и ПЗУ. Гарвардская архитектура предлагает жесткое разделение информации на команды и данные и поэтому в архитектуре предусмотрено хранение команд в памяти команд, а операндов – памяти данных.

Из-за сложности схемы, пользователю программно-доступны только основные регистры управления микропроцессором. Рассмотрим архитектуру неймановского процессора с позиций, предоставленных пользователю (рис.8.3).

С периферийными устройствами МП связан с помощью системы шин: External Data Bus -двунаправленная n-разрядная внешняя шина данных; External Address Bus — однонаправленная m-разрядная внешняя шина адреса; Control Bus однонаправленная k-разрядная шина управления (одни разряды шины работают только на ввод, другие – только на вывод). Все шины с тремя состояниями.

Основными устройствами МП являются:

1. АЛУ – арифметико логическое устройство; предназначено для выполнения арифметических (+, -, *, / ) и логических операций (И, ИЛИ, НЕ, Исключающее ИЛИ, операции сдвига). В состав АЛУ входят n-разрядные сумматоры, аппаратные умножители и схемы деления. АЛУ связано с регистром признаковFR (Flags Register).

2. В регистре признаков фиксируются результаты операций (при выполнении того или иного условия автоматически взводится определенный бит регистра):

Z (Zero) –нулевой результат операции; устанавливается, если результатом выполнения последней операции в АЛУ является ноль;

S (Sing) или N (Negative) –флаг отрицательного знака при выполнении операции (устанавливается если при выполнении операции в АЛУ получается отрицательное число);

C (Carry) –флаг переноса; устанавливается, если при выполнении операции в АЛУ был установлен бит переноса;

V –флаг переполнения; устанавливается, если при выполнении операции в АЛУ имело место переполнение.

3. GPR (General Pupas Registers) –регистры общего назначения. Предназначены для временного хранения информации, располагаются, как правило, во внутреннем ОЗУ процессора и имеют минимальное время доступа.

SP (Stack Pointer) – указатель стека; это регистр, который содержит адрес ячейки памяти, являющейся вершиной стековой памяти. Стековая память, как правило, создается в оперативной памяти и предназначена для временного хранения информации, в частности при выполнении некоторых команд, например, вызова подпрограмм, возврата из подпрограмм, обработки прерывании и т.д.

PC (Program counter) –программный счетчик, счетчик команд;содержит адрес ячейки памяти, из которой выбирается следующая команда. Во время выборки команды содержимое счетчика передается в регистр адреса RAи из него через буферную схему поступает на внешнюю шину адреса. С помощью схемы приращения СхПсодержимое счетчика команд увеличивается на 1 или 2 в зависимости от длины слова, с которым обменивается процессор (один или два байта) для указания адреса следующей команды.

IR (Instruction Register)– первое слово команды, выбранное из программной памяти, передается через буфер данных и внутреннюю шину данных в IR, выход которого связан с дешифратором команд и формирователем машинных циклов DC и ФМЦ, который по КОП в команде определяет тип выполняемой операции.

Устройство управления и синхронизации (УУС) –вырабатывает управляющие и синхронизирующие сигналы, необходимые для выполнения принятой и дешифрированной команды, подключая необходимые устройства процессора. С помощью k-внешних линий управления (Control Bus) реализуется интерфейс процессора с другими модулями микроконтроллера. Некоторые из этих сигналов:

FCLK— тактовая частота процессора; синхронизирует работу всех устройств и определяет время выполнения команд (быстродействие МП).

RESET– выходной сигнал сброса; обнуляет все основные регистры процессора, в том числе программного счетчика РС,указывая при старте на ячейку памяти 0000h, из которой должна быть считана первая команда программы.

WR (Write) –запись в память, внешнее устройство;

RD (Read) – чтение из памяти, из внешнего устройства.

Современные процессоры выполняются по RISC (Reduce Instruction Set Computering) архитектуре (выполнение вычислений по минимизированным командам). Это обеспечивает выполнение большинства команд за очень малое время даже при относительно не высоких тактовых частотах процессора. Например, МП SAB80C167 фирмы Siemens при тактовой частоте 20 МГц выполняет большинство команд за 100 нс.

8.3.3. Структура микроконтроллеров

В качестве примера ниже дано краткое описание промышленного микроконтроллера М167-2.

Промышленный контроллер М167-2, структурная схема которого приведена на рис.8.4., разработан на базе микроконтроллера Siemens 80С167, ядром которого является 16-разрядный RISC процессор SAB80C167 [1]. В основу работы процессора положена конвейерная организация выполнения команд, благодаря чему для выполнения большин­ства из них требуется 100 наносекунд при тактовой частоте процессора 20 МГц.

Центральное процессорное устройство имеет фон-Неймановскую архитектуру, что обеспечивает доступ к исполняемому коду в пределах единого линейного адресного пространства. Максимальный размер адресуемой памяти составляет 16 Мбайт, которая разделена на 256 сегментов (Code Segment) по 64 Кбайт в каждом. Каждый сегмент со­стоит из четырех страниц данных (Data Page) размером по 16 Кбайт.

Процессор имеет внутреннее ОЗУ объемом 2 Кбайт (1Кх16), расположенное в третьей странице данных нулевого сегмента (00.F000h – 00.FFFFh).Во внутреннем ОЗУ размещены регистры общего (GPR) и специального (SFR и ESFR) назначения.

Система обработки прерываний контроллера обрабатывает более 56 независимых каналов прерываний. Текущее состояние программы (IP, PSW, CSP) сохраняется во внут­реннем системном стеке. Шестнадцати уровневая система приоритетов с четырех уровне­вым (групповым) приоритетом второго уровня позволяет организовать обработку преры­ваний по приоритету. Кроме того, в состав контроллера входит 8 канальный блок РЕС (событийный контроллер), с помощью которого можно осуществлять пересылку данных между периферийными устройствами и областями памяти в режиме прерываний без уча­стия основного процессора.

Контроллер внешней шины позволяет задать четыре типа внешней шины и изме­нять их временные характеристики.

Входящие в состав контроллера блоки «Захват/Сравнение» и блоки таймеров по­зволяют организовать дополнительные ШИМ каналы (до 28) кроме стандартного четырех канального модуля ШИМ, а так же формировать и измерять параметры импульсных сиг­налов.

Микроконтроллер обеспечивает 111 параллельных каналов ввода/вывода, органи­зованных в 16- или 8-битовые порты. Все выводы портов битадресуемы и индивидуально (побитно) программируются на ввод или вывод.

Кроме того, в состав микроконтроллера входят два АЦП (8 и 16 каналов) и сете­вой контроллер CAN со скоростью передачи до 1 Мбит/сек. CAN контроллер позволяет создавать сложные распределенные системы управления реального времени.

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

1 Гальперин М.В. Электронная техника. Учебник. – 2-е изд., испр. и доп.

2 Готтлиб И. М. Источники питания. Инверторы, конверторы, линейные и импульсные стабилизаторы. – Постмаркет, 2008.

3 Шило В. Л. Популярные цифровые микросхемы. Справочник.

– Челябинск : Металлургия, 1989.

4 Гусев В. Г. Электроника и микропроцессорная техника. Учебник для вузов. – 5 изд. – М.: Высшая школа, 2008.

Интернет-ресурсы

1 Белов Н.В., Волков Ю.С. Электротехника и основы электроники. – СПб.: Лань, 2012. – Режим доступа: http://e.lanbook.com.

2 Ефимов И.Е., Козырь И.Я. Основы микроэлектроники. – СПб.: Лань, 2008. – Режим доступа: http://e.lanbook.com.

3 Игнатов А.Н. Оптоэлектроника и нанофотоника. . – СПб.: Лань, 2011. – Режим доступа: http://e.lanbook.com.

Последнее изменение этой страницы: 2020-04-12; Просмотров: 476; Нарушение авторского права страницы

Основы микропроцессорной техники (стр. 1 )

Из за большого объема этот материал размещен на нескольких страницах:
1 2

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

(Воронежский филиал МИИТ)

Лаборатоная работа № 1

с методическими указаниями

для студентов II курса очной формы обучения

190402 Автоматика, телемеханика и связь

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

Наибольшее распространение получили микропроцессорные системы, реализованные на однокристальных микроконтроллерах, что позволяет сократить объем аппаратурных затрат и их габаритные размеры.

В настоящей лабораторной работе студенты должны познакомиться с принципами построения и работой отечественных микроконтроллеров семейства МК48 типа КМ1816ВЕ48.

Следует отметить, что в пределах семейства МК48 существует шесть разновидностей микроконтроллеров, но все микросхемы имеют одинаковую структурную организацию, систему команд, разводку выводов и полностью совместимы между собой.

Студентам перед выполнением задания рекомендуется познакомиться со структурной схемой и системой команд микроконтроллера КМ1816ВЕ48 по [1, гл.6].

Целью выполнения настоящей лабораторной работы является изучение принципов составления алгоритмов и программ для решения задач, связанных с обработкой и обменом информации на микроконтроллерах семейства МК48.

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

1. Составить программу преобразования одного вида 8-ми разрядного кода в другой, используя стартстопный (асинхронный) режим обмена данными между микропроцессором и выходным портом при выводе данных из микроконтроллера КМ1816ВЕ48.

2. Определить время выполнения программы преобразования кодов.

3. Ответить на контрольные вопросы.

Вариант задачи выбирается из таблицы 1 следующим образом:

· а) вид преобразования — по последней цифре шифра студента в зависимости от ее четности или нечетности;

· б) номер разряда буферного регистра порта, через который осуществляется передача байта в последовательном коде – предпоследняя цифра шифра студента;

· в) номер порта микроконтроллера при передаче байта — в зависимости от четности и нечетности предпоследней цифры шифра студента;

· г) основная частота синхронизации – по цифре шифра студента, предшествующей предпоследней цифре;

· д) вход микроконтроллера для преобразования последовательного кода в параллельный определяется в зависимости от четности или нечетности цифры шифра студента по варианту (г);

· е) номер регистра памяти данных, из которого считывается параллельный код при преобразовании параллельного кода в последовательный определяется по последней цифре шифра студента. Номер регистра памяти данных, в который заносится принятый последовательный код для вариантов преобразования последовательного кода в параллельный определяется по последней цифре шифра студента.

· ж) время выдержки логических уровней сигнала – по последней цифре шифра студента.

· з) два контрольных вопроса выбираются в соответствии с последней и предпоследней цифрой шифра студента.

Номер разряда порта

Основная частота синхронизации, МГц

Номер регистра памяти данных

Время выдержки сигнала на МК

· — преобразование последовательного кода в параллельный;

· — преобразование параллельного кода в последовательный.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ

ЛАБОРАТОРНОЙ РАБОТЫ № 1

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

В рамках данной лабораторной

работы предстоит составить программу для преобразования формата данных.

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

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

Формат данных при передаче и приеме в последовательном коде представлен на рисунке 1, формат данных в параллельном коде представлен на рис.2.

Как следует из рисунка 1, передача байта в последовательном коде осуществляется следующим образом. Сначала передается сигнал уровня «лог.0», который является стартовым битом. После передачи стартового бита начинает передаваться последовательный байт. Когда все 8 бит последовательного байта переданы, осуществляется передача сигнала «лог.1», который является стоповым битом. Каждый бит последовательного кода передается в течение времени .

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

Как следует из рисунка 2 при использовании параллельного кода все биты передаются одновременно. В этом случае каждый бит передается по специально выделенному разряду ( ). Каждый разряд имеет свой вес.

Рассмотрим способ преобразования формата данных.

Одним из вариантов преобразования параллельного кода в последовательный и обратно является способ, реализованный в таких устройствах преобразования кодов, как сдвиговые регистры. Разрядность сдвиговых регистров при преобразовании кодов подбирается равной длине преобразуемого кодового слова. Операция преобразования параллельного кода в последовательный (последовательного кода в параллельный) осуществляется сдвиговыми регистрами в течение числа тактов , равного длине преобразуемого кода.

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

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

Сдвиг данных регистр-аккумулятор может осуществлять вправо и влево. Кроме того, возможен циклический сдвиг данных вправо и влево через триггер переноса (смотри табл.4 и рис.3). Что касается триггера переноса , то его состояние можно программно анализировать, а также изменять.

Преобразование кодов в микроконтроллере можно организовать следующими способами:

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

· Преобразование последовательного кода в параллельный можно осуществлять путем записи в триггер переноса копии сигнала, воспринимаемого счетным входом микроконтроллера. В каждом такте входного сигнала необходимо обеспечить сдвиг содержимого регистра-аккумулятора с участием переноса.

Преобразование кодов в обоих случаях будет занимать число циклов, равное разрядности аккумулятора.

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

Условие (1) является ограничением минимального времени выдержки сигнала на портах микроконтроллера.

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

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

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

Примерный вид локального цикла представлен на рисунке 4. Цифрами 1 и 11 обозначены метки начала и окончания цикла, цифрой 3 обозначена метка условного перехода.

Работает цикл следующим образом. Запуск цикла происходит в тот момент, когда микроконтроллер считывает команду, размещенную в памяти программ в ячейке, соответствующей началу цикла (1). Далее из памяти данных считывается начальный индекс цикла (2). После этого осуществляется проверка превышения числом уже выполненных циклов заданного числа 0 (счет выполненных циклов осуществляется в обратном порядке). Так как начальный индекс цикла больше заданного числа 0, то по ветке «нет» начинается последовательное выполнение ( ) команды, обеспечивающих заданное время выполнения цикла. Предпоследней командой, выполняемой в ветке «нет», (9) производится декрементирование индекса цикла (уменьшение индекса на единицу). После этого следует команда безусловного перехода по метке (3). Снова производится проверка превышения уже выполненным числом циклов заданного числа , и выполнение команд из ветки «нет» (5)-(10). Так продолжается до тех пор, пока очередная проверка (4) не обнаружит, что условие стало истинным. В этом случае происходит условный переход по метке конца локального цикла.

Приведенный на рисунке 4 алгоритм цикла изображен в общем виде, тогда как при написании программного кода число операций, в течение которых выполняется отдельный элемент алгоритма, может быть более одной. Это происходит потому, что помимо операций преобразования данных микроконтроллер выполняет также ряд вспомогательных операций, например, таких как операции пересылки данных между узлами, операции «очистки» регистров и т. д (число операций зависит от микроконтроллера). Как следует из анализа системы команд (см. табл.4) большинство операций преобразования данных, таких как присвоение значений переменным, декрементирование, инкрементирование выполняется в регистре-аккумуляторе. Так как в процессе выполнения программы регистр-аккумулятор должен хранить различные данные, которые зависят от операции, выполняемой АЛУ, то большинство переменных, хранится в регистрах памяти данных. Значит для выполнения, например операции условного перехода, требуется предварительно переслать в аккумулятор из памяти данных анализируемое число (команда MOV A, Rn), и только затем произвести сравнение содержимого аккумулятора с нулем и осуществить переход по метке (команда JZ add).

С учетом вспомогательных операций подробный алгоритм цикла задержки имеет вид, представленный на рисунке 5. Как видно из приведенного алгоритма один раз в начале цикла выполняются операции (2)-(4), затем раз операции (6)-(13) и при выходе из цикла еще раз команды (6), (7). Само тело цикла заполнено пустыми операциями NOP. Формула для определения длительности указанного цикла имеет вид:

где — число команд, расположенных вне цикла;

— число команд в цикле.

Если известно необходимое время задержки , число f, n и время выполнения команд цикла , тогда число циклов может быть определено по формуле:

В примере, приведенном на рисунке 5 число циклов определяется с учетом того, что:

· требуемое время задержки составляет ;

Поэтому формула для данного цикла имеет вид:

Чтобы воспользоваться приведенной формулой для расчета необходимо определить время выполнения команд.

Основы микропроцессорной техники: Учебное пособие

Для того, чтобы оценить ресурс, необходимо авторизоваться.

Учебное пособие посвящено вопросам микропроцессорной техники, содержит основные понятия и классификацию микропроцессоров и состоит из трех глав. В первой главе рассмотрена архитектура типового микропроцессора, во второй — память микропроцессорной системы, а в третьей — организация ввода/вывода в микропроцессорной системе. Пособие подготовлено на кафедре «Электроника и автоматика физических установок» ТПУ и предназначена для студентов очного обучения специальности 140306.

«Оглавление Глава 1. Философия микропроцессорной техники 1. Лекция: Философия микропроцессорной техники 1.1. Что такое микропроцессор? 1.2. Шинная структура связей . »

Основы микропроцессорной техники

Авторы: Ю.В. Новиков, П.К. Скоробогатов

Глава 1. Философия микропроцессорной техники

1. Лекция: Философия микропроцессорной техники

1.1. Что такое микропроцессор?

1.2. Шинная структура связей

1.3. Режимы работы микропроцессорной системы

1.4. Архитектура микропроцессорных систем

1.5. Типы микропроцессорных систем

Глава 2. Организация обмена информацией

2. Лекция: Шины микропроцессорной системы и циклы обмена

2.1. Шины микропроцессорной системы

2.2. Циклы обмена информацией

2.3. Прохождение сигналов по магистрали

3. Лекция: Функции устройств магистрали

2.4. Функции устройств магистрали

4. Лекция: Адресация операндов

3.1. Адресация операндов

3.2. Регистры процессора

5. Лекция: Система команд процессора

3.3. Система команд процессора

3.4. Быстродействие процессора

6. Лекция: Процессорное ядро и память микроконтроллеров

4.1. Классификация и структура микроконтроллеров

4.2. Процессорное ядро микроконтроллера

4.3. Память программ и данных МК

7. Лекция: Организация связи микроконтроллера с внешней средой и временем

4.4. Порты ввода/вывода

4.5. Таймеры и процессоры событий

4.6. Модуль прерываний МК

8. Лекция: Вспомогательные аппаратные средства микроконтроллера

4.7. Минимизация энергопотребления в системах на основе МК

4.8. Тактовые генераторы МК

4.9. Аппаратные средства обеспечения надежной работы МК

4.10. Дополнительные модули МК

Глава 5. Однокристальные микроконтроллеры серии PIC

9. Лекция: Аппаратные средства микроконтроллеров серии PIC

5.1. Основные особенности микроконтроллеров серии PIC

5.2. Микроконтроллеры подгруппы PIC16F8X

11. Лекция: Особенности разработки цифровых устройств на основе микроконтроллеров

6.1. Разработка микропроцессорной системы на основе микроконтроллера

Глава 7. Организация персонального компьютера

13. Лекция: Архитектура и процессоры персональных компьютеров

7.1. Архитектура персонального компьютера

7.2. Процессоры персональных компьютеров

Глава 1. Философия микропроцессорной техники 1. Лекция: Философия микропроцессорной техники В этой лекции рассказывается о базовой терминологии микропроцессорной техники, о принципах организа ции микропроцессорных систем, о структуре связей, режимах работы и об основных типах микропроцессор ных систем. В этой главе рассматриваются базовые концепции, которые лежат в основе любой микропроцессорной системы — от простейшего микроконтроллера до сложного компьютера. Именно в этом смысле здесь используется термин «философия».

Для начала несколько основных определений.

• Электронная система — в данном случае это любой электронный узел, блок, прибор или комплекс, производящий обработку информации. • Задача — это набор функций, выполнение которых требуется от электронной системы. • Быстродействие — это показатель скорости выполнения электронной системой ее функций. • Гибкость — это способность системы подстраиваться под различные задачи. • Избыточность — это показатель степени соответствия возможностей системы решаемой данной сис темой задаче. • Интерфейс — соглашение об обмене информацией, правила обмена информацией, подразумеваю щие электрическую, логическую и конструктивную совместимость устройств, участвующих в обмене. Другое название — сопряжение. Микропроцессорная система может рассматриваться как частный случай электронной системы, предназначенной для обработки входных сигналов и выдачи выходных сигналов (рис. 1.1). В качестве входных и выходных сигналов при этом могут использоваться аналоговые сигналы, одиночные цифровые сигналы, цифровые коды, последовательности цифровых кодов. Внутри системы может производиться хранение, накопление сигналов (или информации), но суть от этого не меняется. Если система цифровая (а микропроцессорные системы относятся к разряду цифровых), то входные аналоговые сигналы преобразуются в последовательности кодов выборок с помощью АЦП, а выходные аналоговые сигналы формируются из последовательности кодов выборок с помощью ЦАП. Обработка и хранение информации производятся в цифровом виде.

Характерная особенность традиционной цифровой системы состоит в том, что алгоритмы обработки и хранения информации в ней жестко связаны со схемотехникой системы. То есть изменение этих алгоритмов возможно только путем изменения структуры системы, замены электронных узлов, входящих в систему, и/или связей между ними. Например, если нам нужна дополнительная операция суммирования, то необходимо добавить в структуру системы лишний сумматор. Или если нужна дополнительная функция хранения кода в течение одного такта, то мы должны добавить в структуру еще один регистр. Естественно, это практически невозможно сделать в процессе эксплуатации, обязательно нужен новый производственный цикл проектирования, изготовления, отладки всей системы. Именно поэтому традиционная цифровая система часто называется системой на «жесткой логике».

Рис. 1.1. Электронная система. Любая система на «жесткой логике» обязательно представляет собой специализированную систему, настроенную исключительно на одну задачу или (реже) на несколько близких, заранее известных задач. Это имеет свои бесспорные преимущества.

Во-первых, специализированная система (в отличие от универсальной) никогда не имеет аппаратурной избыточности, то есть каждый ее элемент обязательно работает в полную силу (конечно, если эта система грамотно спроектирована).

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

Но в то же время большим недостатком цифровой системы на «жесткой логике» является то, что для каждой новой задачи ее надо проектировать и изготавливать заново. Это процесс длительный, дорогостоящий, требующий высокой квалификации исполнителей. А если решаемая задача вдруг изменяется, то вся аппаратура должна быть полностью заменена. В нашем быстро меняющемся мире это довольно расточительно.

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

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

Рис. 1.2. Программируемая (она же универсальная) электронная система. Но любая универсальность обязательно приводит к избыточности. Ведь решение максимально трудной задачи требует гораздо больше средств, чем решение максимально простой задачи. Поэтому сложность универсальной системы должна быть такой, чтобы обеспечивать решение самой трудной задачи, а при решении простой задачи система будет работать далеко не в полную силу, будет использовать не все свои ресурсы. И чем проще решаемая задача, тем больше избыточность, и тем менее оправданной становится универсальность. Избыточность ведет к увеличению стоимости системы, снижению ее надежности, увеличению потребляемой мощности и т.д.

Кроме того, универсальность, как правило, приводит к существенному снижению быстродействия.

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

Таким образом, можно сделать следующий вывод. Системы на «жесткой логике» хороши там, где решаемая задача не меняется длительное время, где требуется самое высокое быстродействие, где алгоритмы обработки информации предельно просты. А универсальные, программируемые системы хороши там, где часто меняются решаемые задачи, где высокое быстродействие не слишком важно, где алгоритмы обработки информации сложные. То есть любая система хороша на своем месте.

Однако за последние десятилетия быстродействие универсальных (микропроцессорных) систем сильно выросло (на несколько порядков). К тому же большой объем выпуска микросхем для этих систем привел к резкому снижению их стоимости. В результате область применения систем на «жесткой логике» резко сузилась. Более того, высокими темпами развиваются сейчас программируемые системы, предназначенные для решения одной задачи или нескольких близких задач. Они удачно совмещают в себе как достоинства систем на «жесткой логике», так и программируемых систем, обеспечивая сочетание достаточно высокого быстродействия и необходимой гибкости. Так что вытеснение «жесткой логики» продолжается.

1.1. Что такое микропроцессор? Ядром любой микропроцессорной системы является микропроцессор или просто процессор (от английского processor). Перевести на русский язык это слово правильнее всего как «обработчик», так как именно микропроцессор — это тот узел, блок, который производит всю обработку информации внутри микропроцессорной системы. Остальные узлы выполняют всего лишь вспомогательные функции: хранение информации (в том числе и управляющей информации, то есть программы), связи с внешними устройствами, связи с пользователем и т.д. Процессор заменяет практически всю «жесткую логику», которая понадобилась бы в случае традиционной цифровой системы. Он выполняет арифметические функции (сложение, умножение и т.д.), логические функции (сдвиг, сравнение, маскирование кодов и т.д.), временное хранение кодов (во внутренних регистрах), пересылку кодов между узлами микропроцессорной системы и многое другое. Количество таких элементарных операций, выполняемых процессором, может достигать нескольких сотен. Процессор можно сравнить с мозгом системы.

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

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

Все команды, выполняемые процессором, образуют систему команд процессора. Структура и объем системы команд процессора определяют его быстродействие, гибкость, удобство использования.

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

Для выполнения команд в структуру процессора входят внутренние регистры, арифметикологическое устройство (АЛУ, ALU — Arithmetic Logic Unit), мультиплексоры, буферы, регистры и другие узлы. Работа всех узлов синхронизируется общим внешним тактовым сигналом процессора.

То есть процессор представляет собой довольно сложное цифровое устройство (рис. 1.4).

Рис. 1.4. Пример структуры простейшего процессора. Впрочем, для разработчика микропроцессорных систем информация о тонкостях внутренней структуры процессора не слишком важна. Разработчик должен рассматривать процессор как «черный ящик», который в ответ на входные и управляющие коды производит ту или иную операцию и выдает выходные сигналы. Разработчику необходимо знать систему команд, режимы работы процессора, а также правила взаимодействия процессора с внешним миром или, как их еще называют, протоколы обмена информацией. О внутренней структуре процессора надо знать только то, что необходимо для выбора той или иной команды, того или иного режима работы.

1.2. Шинная структура связей Для достижения максимальной универсальности и упрощения протоколов обмена информацией в микропроцессорных системах применяется так называемая шинная структура связей между отдельными устройствами, входящими в систему. Суть шинной структуры связей сводится к следующему.

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

При шинной структуре связей (рис. 1.6) все сигналы между устройствами передаются по одним и тем же линиям связи, но в разное время (это называется мультиплексированной передачей). Причем передача по всем линиям связи может осуществляться в обоих направлениях (так называемая двунаправленная передача). В результате количество линий связи существенно сокращается, а правила обмена (протоколы) упрощаются. Группа линий связи, по которым передаются сигналы или коды как раз и называется шиной (англ. bus).

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

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

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

В системах с шинной структурой связей применяют все три существующие разновидности выходных каскадов цифровых микросхем:

• стандартный выход или выход с двумя состояниями (обозначается 2С, 2S, реже ТТЛ, TTL); • выход с открытым коллектором (обозначается ОК, OC); • выход с тремя состояниями или (что то же самое) с возможностью отключения (обозначается 3С, 3S). Упрощенно эти три типа выходных каскадов могут быть представлены в виде схем на рис. 1.7.

У выхода 2С два ключа замыкаются по очереди, что соответствует уровням логической единицы (верхний ключ замкнут) и логического нуля (нижний ключ замкнут). У выхода ОК замкнутый ключ формирует уровень логического нуля, разомкнутый — логической единицы. У выхода 3С ключи могут замыкаться по очереди (как в случае 2С), а могут размыкаться одновременно, образуя третье, высокоимпедансное, состояние. Переход в третье состояние (Z-состояние) управляется сигналом на специальном входе EZ.

Рис. 1.7. Три типа выходов цифровых микросхем. Выходные каскады типов 3С и ОК позволяют объединять несколько выходов микросхем для получения мультиплексированных (рис. 1.8) или двунаправленных (рис. 1.9) линий.

Рис. 1.8. Мультиплексированная линия. Рис. 1.9. Двунаправленная линия. При этом в случае выходов 3С необходимо обеспечить, чтобы на линии всегда работал только один активный выход, а все остальные выходы находились бы в это время в третьем состоянии, иначе возможны конфликты. Объединенные выходы ОК могут работать все одновременно, без всяких конфликтов.

Типичная структура микропроцессорной системы приведена на рис. 1.10. Она включает в себя три основных типа устройств:

• процессор; • память, включающую оперативную память (ОЗУ, RAM — Random Access Memory) и постоянную память (ПЗУ, ROM —Read Only Memory), которая служит для хранения данных и программ; • устройства ввода/вывода (УВВ, I/O — Input/Output Devices), служащие для связи микропроцессорной системы с внешними устройствами, для приема (ввода, чтения, Read) входных сигналов и выдачи (вы вода, записи, Write) выходных сигналов. Рис. 1.10. Структура микропроцессорной системы. Все устройства микропроцессорной системы объединяются общей системной шиной (она же называется еще системной магистралью или каналом). Системная магистраль включает в себя четыре основные шины нижнего уровня:

• шина адреса (Address Bus); • шина данных (Data Bus); • шина управления (Control Bus); • шина питания (Power Bus). Шина адреса служит для определения адреса (номера) устройства, с которым процессор обменивается информацией в данный момент. Каждому устройству (кроме процессора), каждой ячейке памяти в микропроцессорной системе присваивается собственный адрес. Когда код какого-то адреса выставляется процессором на шине адреса, устройство, которому этот адрес приписан, понимает, что ему предстоит обмен информацией. Шина адреса может быть однонаправленной или двунаправленной.

Шина данных — это основная шина, которая используется для передачи информационных кодов между всеми устройствами микропроцессорной системы. Обычно в пересылке информации участвует процессор, который передает код данных в какое-то устройство или в ячейку памяти или же принимает код данных из какого-то устройства или из ячейки памяти. Но возможна также и передача информации между устройствами без участия процессора. Шина данных всегда двунаправленная.

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

Наконец, шина питания предназначена не для пересылки информационных сигналов, а для питания системы. Она состоит из линий питания и общего провода. В микропроцессорной системе может быть один источник питания (чаще +5 В) или несколько источников питания (обычно еще –5 В, + В и –12 В). Каждому напряжению питания соответствует своя линия связи. Все устройства подключены к этим линиям параллельно.

Если в микропроцессорную систему надо ввести входной код (или входной сигнал), то процессор по шине адреса обращается к нужному устройству ввода/вывода и принимает по шине данных входную информацию. Если из микропроцессорной системы надо вывести выходной код (или выходной сигнал), то процессор обращается по шине адреса к нужному устройству ввода/вывода и передает ему по шине данных выходную информацию.

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

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

Важно учитывать, что устройства ввода/вывода чаще всего представляют собой устройства на «жесткой логике». На них может быть возложена часть функций, выполняемых микропроцессорной системой. Поэтому у разработчика всегда имеется возможность перераспределять функции системы между аппаратной и программной реализациями оптимальным образом. Аппаратная реализация ускоряет выполнение функции, но имеет недостаточную гибкость. Программная реализация значительно медленнее, но обеспечивает высокую гибкость. Аппаратная реализация функций увеличивает стоимость системы и ее энергопотребление, программная — не увеличивает. Чаще всего применяется комбинирование аппаратных и программных функций.

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

1.3. Режимы работы микропроцессорной системы Как уже отмечалось, микропроцессорная система обеспечивает большую гибкость работы, она способна настраиваться на любую задачу. Гибкость эта обусловлена прежде всего тем, что функции, выполняемые системой, определяются программой (программным обеспечением, software), которую выполняет процессор. Аппаратура (аппаратное обеспечение, hardware) остается неизменной при любой задаче. Записывая в память системы программу, можно заставить микропроцессорную систему выполнять любую задачу, поддерживаемую данной аппаратурой. К тому же шинная организация связей микропроцессорной системы позволяет довольно легко заменять аппаратные модули, например, заменять память на новую большего объема или более высокого быстродействия, добавлять или модернизировать устройства ввода/вывода, наконец, заменять процессор на более мощный. Это также позволяет увеличить гибкость системы, продлить ее жизнь при любом изменении требований к ней.

Но гибкость микропроцессорной системы определяется не только этим. Настраиваться на задачу помогает еще и выбор режима работы системы, то есть режима обмена информацией по системной магистрали (шине).

Практически любая развитая микропроцессорная система (в том числе и компьютер) поддерживает три основных режима обмена по магистрали:

• программный обмен информацией; • обмен с использованием прерываний (Interrupts); • обмен с использованием прямого доступа к памяти (ПДП, DMA — Direct Memory Access). Программный обмен информацией является основным в любой микропроцессорной системе. Он предусмотрен всегда, без него невозможны другие режимы обмена. В этом режиме процессор является единоличным хозяином (или задатчиком, Master) системной магистрали. Все операции (циклы) обмена информацией в данном случае инициируются только процессором, все они выполняются строго в порядке, предписанном исполняемой программой.

Процессор читает (выбирает) из памяти коды команд и исполняет их, читая данные из памяти или из устройства ввода/вывода, обрабатывая их, записывая данные в память или передавая их в устройство ввода/вывода. Путь процессора по программе может быть линейным, циклическим, может содержать переходы (прыжки), но он всегда непрерывен и полностью находится под контролем процессора. Ни на какие внешние события, не связанные с программой, процессор не реагирует (рис. 1.11). Все сигналы на магистрали в данном случае контролируются процессором.

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

В общем случае организовать реакцию на внешнее событие можно тремя различными путями:

• с помощью постоянного программного контроля факта наступления события (так называемый метод опроса флага или polling); • с помощью прерывания, то есть насильственного перевода процессора с выполнения текущей про граммы на выполнение экстренно необходимой программы; • с помощью прямого доступа к памяти, то есть без участия процессора при его отключении от систем ной магистрали. Проиллюстрировать эти три способа можно следующим простым примером. Допустим, вы готовите себе завтрак, поставив на плиту кипятиться молоко. Естественно, на закипание молока надо реагировать, причем срочно. Как это организовать? Первый путь — постоянно следить за молоком, но тогда вы ничего другого не сможете делать. Правильнее будет регулярно поглядывать на молоко, делая одновременно что-то другое. Это программный режим с опросом флага. Второй путь — установить на кастрюлю с молоком датчик, который подаст звуковой сигнал при закипании молока, и спокойно заниматься другими делами. Услышав сигнал, вы выключите молоко. Правда, возможно, вам придется сначала закончить то, что вы начали делать, так что ваша реакция будет медленнее, чем в первом случае. Наконец, третий путь состоит в том, чтобы соединить датчик на кастрюле с управлением плитой так, чтобы при закипании молока горелка была выключена без вашего участия (правда, аналогия с ПДП здесь не очень точная, так как в данном случае на момент выполнения действия вас не отвлекают от работы).

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

Во втором случае в режиме прерывания процессор, получив запрос прерывания от внешнего устройства (часто называемый IRQ — Interrupt ReQuest), заканчивает выполнение текущей команды и переходит к программе обработки прерывания. Закончив выполнение программы обработки прерывания, он возвращается к прерванной программе с той точки, где его прервали (рис. 1.12).

Здесь важно то, что вся работа, как и в случае программного режима, осуществляется самим процессором, внешнее событие просто временно отвлекает его. Реакция на внешнее событие по прерыванию в общем случае медленнее, чем при программном режиме. Как и в случае программного обмена, здесь все сигналы на магистрали выставляются процессором, то есть он полностью контролирует магистраль. Для обслуживания прерываний в систему иногда вводится специальный модуль контроллера прерываний, но он в обмене информацией не участвует. Его задача состоит в том, чтобы упростить работу процессора с внешними запросами прерываний. Этот контроллер обычно программно управляется процессором по системной магистрали.

Рис. 1.12. Обслуживание прерывания. Естественно, никакого ускорения работы системы прерывание не дает. Его применение позволяет только отказаться от постоянного опроса флага внешнего события и временно, до наступления внешнего события, занять процессор выполнением каких-то других задач.

Прямой доступ к памяти (ПДП, DMA) — это режим, принципиально отличающийся от двух ранее рассмотренных режимов тем, что обмен по системной шине идет без участия процессора. Внешнее устройство, требующее обслуживания, сигнализирует процессору, что режим ПДП необходим, в ответ на это процессор заканчивает выполнение текущей команды и отключается от всех шин, сигнализируя запросившему устройству, что обмен в режиме ПДП можно начинать.

Операция ПДП сводится к пересылке информации из устройства ввода/вывода в память или же из памяти в устройство ввода/вывода. Когда пересылка информации будет закончена, процессор вновь возвращается к прерванной программе, продолжая ее с той точки, где его прервали (рис. 1.13). Это похоже на режим обслуживания прерываний, но в данном случае процессор не участвует в обмене.

Как и в случае прерываний, реакция на внешнее событие при ПДП существенно медленнее, чем при программном режиме.

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

Рис. 1.13. Обслуживание ПДП. Рис. 1.14. Информационные потоки в режиме ПДП. В принципе контроллер ПДП может входить в состав устройства ввода/вывода, которому необходим режим ПДП или даже в состав нескольких устройств ввода/вывода. Теоретически обмен с помощью прямого доступа к памяти может обеспечить более высокую скорость передачи информации, чем программный обмен, так как процессор передает данные медленнее, чем специализированный контроллер ПДП. Однако на практике это преимущество реализуется далеко не всегда. Скорость обмена в режиме ПДП обычно ограничена возможностями магистрали. К тому же необходимость программного задания режимов контроллера ПДП может свести на нет выигрыш от более высокой скорости пересылки данных в режиме ПДП. Поэтому режим ПДП применяется редко.

Если в системе уже имеется самостоятельный контроллер ПДП, то это может в ряде случаев существенно упростить аппаратуру устройств ввода/вывода, работающих в режиме ПДП. В этом, пожалуй, состоит единственное бесспорное преимущество режима ПДП.

1.4. Архитектура микропроцессорных систем До сих пор мы рассматривали только один тип архитектуры микропроцессорных систем — архитектуру с общей, единой шиной для данных и команд (одношинную, или принстонскую, фоннеймановскую архитектуру). Соответственно, в составе системы в этом случае присутствует одна общая память, как для данных, так и для команд (рис. 1.15).

Рис. 1.15. Архитектура с общей шиной данных и команд. Но существует также и альтернативный тип архитектуры микропроцессорной системы — это архитектура с раздельными шинами данных и команд (двухшинная, или гарвардская, архитектура). Эта архитектура предполагает наличие в системе отдельной памяти для данных и отдельной памяти для команд (рис. 1.16). Обмен процессора с каждым из двух типов памяти происходит по своей шине.

Архитектура с общей шиной распространена гораздо больше, она применяется, например, в персональных компьютерах и в сложных микрокомпьютерах. Архитектура с раздельными шинами применяется в основном в однокристальных микроконтроллерах.

Рассмотрим некоторые достоинства и недостатки обоих архитектурных решений.

Архитектура с общей шиной (принстонская, фон-неймановская) проще, она не требует от процессора одновременного обслуживания двух шин, контроля обмена по двум шинам сразу. Наличие единой памяти данных и команд позволяет гибко распределять ее объем между кодами данных и команд.

Например, в некоторых случаях нужна большая и сложная программа, а данных в памяти надо хранить не слишком много. В других случаях, наоборот, программа требуется простая, но необходимы большие объемы хранимых данных. Перераспределение памяти не вызывает никаких проблем, главное — чтобы программа и данные вместе помещались в памяти системы. Как правило, в системах с такой архитектурой память бывает довольно большого объема (до десятков и сотен мегабайт). Это позволяет решать самые сложные задачи.

Рис. 1.16. Архитектура с раздельными шинами данных и команд. Архитектура с раздельными шинами данных и команд сложнее, она заставляет процессор работать одновременно с двумя потоками кодов, обслуживать обмен по двум шинам одновременно. Программа может размещаться только в памяти команд, данные — только в памяти данных. Такая узкая специализация ограничивает круг задач, решаемых системой, так как не дает возможности гибкого перераспределения памяти. Память данных и память команд в этом случае имеют не слишком большой объем, поэтому применение систем с данной архитектурой ограничивается обычно не слишком сложными задачами.

В чем же преимущество архитектуры с двумя шинами (гарвардской)? В первую очередь, в быстродействии.

Дело в том, что при единственной шине команд и данных процессор вынужден по одной этой шине принимать данные (из памяти или устройства ввода/вывода) и передавать данные (в память или в устройство ввода/вывода), а также читать команды из памяти. Естественно, одновременно эти пересылки кодов по магистрали происходить не могут, они должны производиться по очереди. Современные процессоры способны совместить во времени выполнение команд и проведение циклов обмена по системной шине. Использование конвейерных технологий и быстрой кэш-памяти позволяет им ускорить процесс взаимодействия со сравнительно медленной системной памятью. Повышение тактовой частоты и совершенствование структуры процессоров дают возможность сократить время выполнения команд. Но дальнейшее увеличение быстродействия системы возможно только при совмещении пересылки данных и чтения команд, то есть при переходе к архитектуре с двумя шинами.

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

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

1.5. Типы микропроцессорных систем Диапазон применения микропроцессорной техники сейчас очень широк, требования к микропроцессорным системам предъявляются самые разные. Поэтому сформировалось несколько типов микропроцессорных систем, различающихся мощностью, универсальностью, быстродействием и структурными отличиями. Основные типы следующие:

• микроконтроллеры — наиболее простой тип микропроцессорных систем, в которых все или большин ство узлов системы выполнены в виде одной микросхемы; • контроллеры — управляющие микропроцессорные системы, выполненные в виде отдельных моду • микрокомпьютеры — более мощные микропроцессорные системы с развитыми средствами сопряже ния с внешними устройствами. • компьютеры (в том числе персональные) — самые мощные и наиболее универсальные микропроцес сорные системы. Четкую границу между этими типами иногда провести довольно сложно. Быстродействие всех типов микропроцессоров постоянно растет, и нередки ситуации, когда новый микроконтроллер оказывается быстрее, например, устаревшего персонального компьютера. Но кое-какие принципиальные отличия все-таки имеются.

Микроконтроллеры представляют собой универсальные устройства, которые практически всегда используются не сами по себе, а в составе более сложных устройств, в том числе и контроллеров. Системная шина микроконтроллера скрыта от пользователя внутри микросхемы. Возможности подключения внешних устройств к микроконтроллеру ограничены. Устройства на микроконтроллерах обычно предназначены для решения одной задачи.

Контроллеры, как правило, создаются для решения какой-то отдельной задачи или группы близких задач. Они обычно не имеют возможностей подключения дополнительных узлов и устройств, например, большой памяти, средств ввода/вывода. Их системная шина чаще всего недоступна пользователю. Структура контроллера проста и оптимизирована под максимальное быстродействие. В большинстве случаев выполняемые программы хранятся в постоянной памяти и не меняются. Конструктивно контроллеры выпускаются в одноплатном варианте.

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

Наконец, компьютеры и самые распространенные из них — персональные компьютеры — это самые универсальные из микропроцессорных систем. Они обязательно предусматривают возможность модернизации, а также широкие возможности подключения новых устройств. Их системная шина, конечно, доступна пользователю. Кроме того, внешние устройства могут подключаться к компьютеру через несколько встроенных портов связи (количество портов доходит иногда до 10). Компьютер всегда имеет сильно развитые средства связи с пользователем, средства длительного хранения информации большого объема, средства связи с другими компьютерами по информационным сетям.

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

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

В настоящее время при разработке новых микропроцессорных систем чаще всего выбирают путь использования микроконтроллеров (примерно в 80% случаев). При этом микроконтроллеры применяются или самостоятельно, с минимальной дополнительной аппаратурой, или в составе более сложных контроллеров с развитыми средствами ввода/вывода.

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

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

Глава 2. Организация обмена информацией 2. Лекция: Шины микропроцессорной системы и циклы обмена В этой лекции речь идет об обмене информацией по шинам микропроцессорных систем, о циклах обмена информацией и их фазах, о принципах синхронизации обмена, принципах организации прерываний и ПДП. Самое главное, что должен знать разработчик микропроцессорных систем — это принципы организации обмена информацией по шинам таких систем. Без этого невозможно разработать аппаратную часть системы, а без аппаратной части не будет работать никакое программное обеспечение.

За более чем 30 лет, прошедших с момента появления первых микропроцессоров, были выработаны определенные правила обмена, которым следуют и разработчики новых микропроцессорных систем.

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

Обмен информацией в микропроцессорных системах происходит в циклах обмена информацией.

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

Циклы обмена информацией делятся на два основных типа:

• Цикл записи (вывода), в котором процессор записывает (выводит) информацию; • Цикл чтения (ввода), в котором процессор читает (вводит) информацию. В некоторых микропроцессорных системах существует также цикл «чтение-модификация-запись» или же «ввод-пауза-вывод». В этих циклах процессор сначала читает информацию из памяти или устройства ввода/вывода, затем как-то преобразует ее и снова записывает по тому же адресу. Например, процессор может прочитать код из ячейки памяти, увеличить его на единицу и снова записать в эту же ячейку памяти. Наличие или отсутствие данного типа цикла связано с особенностями используемого процессора.

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

Во время каждого цикла устройства, участвующие в обмене информацией, передают друг другу информационные и управляющие сигналы в строго установленном порядке или, как еще говорят, в соответствии с принятым протоколом обмена информацией.

Длительность цикла обмена может быть постоянной или переменной, но она всегда включает в себя несколько периодов сигнала тактовой частоты системы. То есть даже в идеальном случае частота чтения информации процессором и частота записи информации оказываются в несколько раз меньше тактовой частоты системы.

Чтение кодов команд из памяти системы также производится с помощью циклов чтения. Поэтому в случае одношинной архитектуры на системной магистрали чередуются циклы чтения команд и циклы пересылки (чтения и записи) данных, но протоколы обмена остаются неизменными независимо от того, что передается — данные или команды. В случае двухшинной архитектуры циклы чтения команд и записи или чтения данных разделяются по разным шинам и могут выполняться одновременно.

2.1. Шины микропроцессорной системы Прежде чем переходить к особенностям циклов обмена, остановимся подробнее на составе и назначении различных шин микропроцессорной системы.

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

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

Шина данных всегда двунаправленная, так как предполагает передачу информации в обоих направлениях. Наиболее часто встречающийся тип выходного каскада для линий этой шины — выход с тремя состояниями.

Обычно шина данных имеет 8, 16, 32 или 64 разряда. Понятно, что за один цикл обмена по 64разрядной шине может передаваться 8 байт информации, а по 8-разрядной — только один байт. Разрядность шины данных определяет и разрядность всей магистрали. Например, когда говорят о 32разрядной системной магистрали, подразумевается, что она имеет 32-разрядную шину данных.

Шина адреса — вторая по важности шина, которая определяет максимально возможную сложность микропроцессорной системы, то есть допустимый объем памяти и, следовательно, максимально возможный размер программы и максимально возможный объем запоминаемых данных. Количество адресов, обеспечиваемых шиной адреса, определяется как 2N, где N — количество разрядов. Например, 16-разрядная шина адреса обеспечивает 65 536 адресов. Разрядность шины адреса обычно кратна 4 и может достигать 32 и даже 64. Шина адреса может быть однонаправленной (когда магистралью всегда управляет только процессор) или двунаправленной (когда процессор может временно передавать управление магистралью другому устройству, например контроллеру ПДП). Наиболее часто используются типы выходных каскадов с тремя состояниями или обычные ТТЛ (с двумя состояниями).

Как в шине данных, так и в шине адреса может использоваться положительная логика или отрицательная логика. При положительной логике высокий уровень напряжения соответствует логической единице на соответствующей линии связи, низкий — логическому нулю. При отрицательной логике — наоборот. В большинстве случаев уровни сигналов на шинах — ТТЛ.

Для снижения общего количества линий связи магистрали часто применяется мультиплексирование шин адреса и данных. То есть одни и те же линии связи используются в разные моменты времени для передачи как адреса, так и данных (в начале цикла — адрес, в конце цикла — данные). Для фиксации этих моментов (стробирования) служат специальные сигналы на шине управления. Понятно, что мультиплексированная шина адреса/данных обеспечивает меньшую скорость обмена, требует более длительного цикла обмена (рис. 2.1). По типу шины адреса и шины данных все магистрали также делятся на мультиплексированные и немультиплексированные.

Рис. 2.1. Мультиплексирование шин адреса и данных. В некоторых мультиплексированных магистралях после одного кода адреса передается несколько кодов данных (массив данных). Это позволяет существенно повысить быстродействие магистрали.

Иногда в магистралях применяется частичное мультиплексирование, то есть часть разрядов данных передается по немультиплексированным линиям, а другая часть — по мультиплексированным с адресом линиям.

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

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

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

• Строб записи (вывода), который определяет момент времени, когда устройствоисполнитель может принимать данные, выставленные процессором на шину данных; • Строб чтения (ввода), который определяет момент времени, когда устройствоисполнитель должно выдать на шину данных код данных, который будет прочитан процессором. При этом большое значение имеет то, как процессор заканчивает обмен в пределах цикла, в какой момент он снимает свой строб обмена. Возможны два пути решения (рис. 2.2):

• При синхронном обмене процессор заканчивает обмен данными самостоятельно, через раз и навсе гда установленный временной интервал выдержки (tвыд), то есть без учета интересов устройства исполнителя; • При асинхронном обмене процессор заканчивает обмен только тогда, когда устройствоисполнитель подтверждает выполнение операции специальным сигналом (так называемый режим handshake — рукопожатие). Рис. 2.2. Синхронный обмен и асинхронный обмен. Достоинства синхронного обмена — более простой протокол обмена, меньшее количество управляющих сигналов. Недостатки — отсутствие гарантии, что исполнитель выполнил требуемую операцию, а также высокие требования к быстродействию исполнителя.

Достоинства асинхронного обмена — более надежная пересылка данных, возможность работы с самыми разными по быстродействию исполнителями. Недостаток — необходимость формирования сигнала подтверждения всеми исполнителями, то есть дополнительные аппаратурные затраты.

Какой тип обмена быстрее, синхронный или асинхронный? Ответ на этот вопрос неоднозначен. С одной стороны, при асинхронном обмене требуется какое-то время на выработку, передачу дополнительного сигнала и на его обработку процессором. С другой стороны, при синхронном обмене приходится искусственно увеличивать длительность строба обмена для соответствия требованиям большего числа исполнителей, чтобы они успевали обмениваться информацией в темпе процессора.

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

По используемому типу обмена магистрали микропроцессорных систем также делятся на синхронные и асинхронные.

2.2. Циклы обмена информацией 2.2.1. Циклы программного обмена Рассмотрим для примера два довольно типичных случая программного обмена по магистрали микропроцессорной системы.

Первый пример — это обмен по мультиплексированной асинхронной магистрали Q-bus, предложенной фирмой DEC и широко применявшейся в микрокомпьютерах и промышленных контроллерах.

Упрощенные временные диаграммы циклов чтения (ввода) и записи (вывода) по этой магистрали приведены на рис. 2.3 и 2.4.

Отметим, что в дальнейшем тексте знак «минус» перед названием сигнала говорит о том, что активный уровень сигнала низкий, пассивный — высокий, то есть сигнал отрицательный. Если минуса перед названием сигнала нет, то сигнал положительный, его низкий уровень пассивный, а высокий — активный.

На шине адреса/данных (AD) в начале цикла обмена (в фазе адреса) процессор (задатчик) выставляет код адреса. На этой шине используется отрицательная логика. Средний уровень сигналов на шине AD обозначает, что состояния сигналов на шине в данные временные интервалы не важны. Для стробирования адреса используется отрицательный синхросигнал -SYNC, выставляемый также процессором. Его передний (отрицательный) фронт соответствует действительности кода адреса на шине AD. Фаза адреса одинакова в обоих циклах записи и чтения.

Рис. 2.3. Цикл чтения на магистрали Qbus. Получив (распознав) свой код адреса, устройство ввода/вывода или память (исполнитель) готовится к проведению обмена. Через некоторое время после начала (отрицательного фронта) сигнала -SYNC процессор снимает адрес и начинает фазу данных.

Рис. 2.4. Цикл записи на магистрали Qbus. В фазе данных цикла чтения (рис. 2.3) процессор выставляет сигнал строба чтения данных -DIN, в ответ на который устройство, к которому обращается процессор (исполнитель), должно выставить свой код данных (читаемые данные). Одновременно это устройство должно подтвердить выполнение операции сигналом подтверждения обмена -RPLY.

Для сигнала -RPLY используется тип выходного каскада ОК, чтобы не было конфликтов между устройствами-исполнителями. Процессор, получив сигнал -RPLY, заканчивает цикл обмена. Для этого он снимает сигнал -DIN и сигнал -SYNC. Устройство-исполнитель в ответ на снятие сигнала -DIN должно снять код данных с шины AD и закончить сигнал подтверждения -RPLY. После этого процессор снимает сигнал -SYNC.

В фазе данных цикла записи (рис. 2.4) процессор выставляет на шину AD код записываемых данных и сопровождает его отрицательным сигналом строба записи данных -DOUT. Устройствоисполнитель должно по этому сигналу принять данные от процессора и сформировать сигнал подтверждения обмена -RPLY. Процессор, получив сигнал -RPLY, заканчивает цикл обмена. Для этого он снимает код данных с шины AD и сигнал -DOUT. Устройство-исполнитель в ответ на снятие сигнала -DOUT должно закончить сигнал подтверждения -RPLY. После этого процессор снимает сигнал -SYNC.

То есть на данной магистрали адрес передается синхронно (без подтверждения его получения исполнителем), а данные передаются асинхронно, с обязательным подтверждением их выдачи или приема исполнителем. Отсутствие сигнала подтверждения -RPLY в течение заданного времени воспринимается процессором как аварийная ситуация. В принципе возможна и асинхронная передача адреса, что увеличивает надежность обмена, хотя может снижать его скорость.

Помимо циклов чтения и записи на магистрали Q-bus используются также и циклы типа «ввод-паузавывод» («чтение-модификация-запись»). Упрощенная временная диаграмма этого цикла представлена на рис. 2.5.

Рис. 2.5. Цикл «вводпаузавывод» на магистрали Qbus. В этом цикле адресная фаза производится точно так же, как и в циклах чтения (ввода) и записи (вывода). Но в фазе данных процессор производит сначала чтение из заданного в адресной фазе адреса, а потом запись в тот же самый адрес. Для чтения используется строб чтения -DIN, а для записи – строб записи -DOUT. В ответ на сигнал -DIN устройство-исполнитель выдает свои данные на шину AD, а по сигналу -DOUT – принимает данные с шины AD. Как и в циклах чтения и записи, устройствоисполнитель подтверждает выполнение каждой операции сигналом подтверждения -RPLY. Понятно, что цикл «ввод-пауза-вывод» требует больше времени, чем каждый из циклов чтения или записи, но меньше времени, чем два последовательно произведенных цикла чтения и записи (так как для него нужна только одна адресная фаза). Сигнал -SYNC вырабатывается процессором в начале цикла «ввод-пауза-вывод» и держится до окончания всего цикла.

В качестве второго примера рассмотрим циклы обмена на синхронной немультиплексированной магистрали ISA (Industrial Standard Architecture), предложенной фирмой IBM и широко используемой в персональных компьютерах. Упрощенные циклы записи в устройство ввода/вывода и чтения из устройства ввода/вывода приведены на рис. 2.6 и 2.7.

Оба цикла начинаются с выставления процессором (задатчиком) кода адреса на шину адреса SA (логика на этой шине положительная). Адрес остается на шине SA до конца цикла. Фаза адреса, одинаковая для обоих циклов, заканчивается с началом строба обмена данными -IOR или -IOW. В течение фазы адреса устройство-исполнитель должно принять код адреса и распознать или не распознать его.

Если адрес распознан, исполнитель готовится к обмену.

В фазе данных цикла чтения (рис. 2.6) процессор выставляет отрицательный сигнал чтения данных из устройства ввода/вывода -IOR. В ответ на него устройство-исполнитель должно выдать на шину данных SD свой код данных (читаемые данные). Логика на шине данных положительная. Через установленное время строб обмена -IOR снимается процессором, после чего снимается также и код адреса с шины SA. Цикл заканчивается без учета быстродействия исполнителя.

Рис. 2.6. Цикл чтения из УВВ на магистрали ISA. Рис. 2.7. Цикл записи в УВВ на магистрали ISA. Но так происходит только в случае основного, синхронного обмена. Кроме него на магистрали ISA также предусмотрена возможность асинхронного обмена. Для этого применяется сигнал готовности канала (магистрали) I/O CH RDY. Тип выходного каскада для данного сигнала — ОК, для предотвращения конфликтов между устройствами-исполнителями. При синхронном обмене сигнал I/O CH RDY всегда положительный. Но медленное устройство-исполнитель, не успевающее работать в темпе процессора, может этот сигнал снять, то есть сделать нулевым сразу после начала строба обмена.

Тогда процессор до того момента, пока сигнал I/O CH RDY не станет снова положительным, приостанавливает завершение цикла, продлевает строб обмена. Конечно, слишком большая длительность этого сигнала рассматривается как аварийная ситуация. Для простоты понимания можно считать, что устройство-исполнитель формирует в данном случае отрицательный сигнал неготовности завершить обмен. На время этого сигнала обмен на магистрали приостанавливается.

Принципиальное отличие асинхронного обмена по магистрали ISA от асинхронного обмена по магистрали Q-bus состоит в следующем. Если в случае Q-bus сигнал подтверждения обязателен, и его должен формировать каждый исполнитель, то в случае ISA сигнал о неготовности исполнитель может не формировать, если он успевает работать в темпе процессора. Зато в случае Q-bus к концу цикла обмена процессор всегда уверен, что устройство-исполнитель выполнило требуемую операцию, а в случае ISA такой уверенности нет.

В фазе данных цикла записи по магистрали ISA (рис. 2.7) процессор выставляет на шину данных SD код записываемых данных и сопровождает их стробом записи данных в устройство ввода/вывода IOW. Получив этот сигнал, устройство-исполнитель должно принять с шины SD код записываемых данных. Если оно не успевает сделать это в темпе процессора, то оно может снять на нужное время сигнал I/O CH RDY после получения переднего фронта сигнала -IOW. Тогда процессор приостановит окончание цикла записи.

Рассмотренные примеры, конечно, не раскрывают всех тонкостей обмена по упомянутым магистралям. Они всего лишь иллюстрируют главные принципы обмена по ним.

2.2.2. Циклы обмена по прерываниям Циклы обмена в режиме прерываний строятся по тем же принципам, что и циклы программного обмена, но имеют ряд специфических особенностей.

Прерывания в микропроцессорных системах бывают двух основных типов:

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

При векторном прерывании код номера прерывания передается процессору тем устройством ввода/вывода, которое данное прерывание запросило. Для этого процессор проводит цикл чтения по магистрали, и по шине данных получает код номера прерывания. Шина адреса в данном цикле обычно не используется, так как устройство, запросившее прерывание, и так знает, что процессор будет обращаться именно к нему. В этом случае в магистрали достаточно всего одной линии запроса прерывания для всех устройств ввода/вывода. Так организованы прерывания, например, в магистрали Qbus.

Рис. 2.8. Сигналы запроса и предоставления прерывания в магистрали Qbus. Схема распространения сигналов, участвующих в прерываниях на магистрали Q-bus, показана на рис. 2.8. Упрощенная временная диаграмма цикла запроса и предоставления магистрали представлена на рис. 2.9.

Рис. 2.9. Цикл запроса/предоставления векторного прерывания на магистрали Qbus. Запрос прерывания осуществляется отрицательным сигналом -VIRQ, который может формироваться каждым из устройств, запрашивающих прерывание. Тип выходного каскада для этого сигнала — ОК, чтобы избежать конфликтов между запрашивающими прерывания устройствами. Получив сигнал VIRQ, процессор предоставляет прерывание (закончив предварительно выполнение текущей команды). Для этого он выставляет сигнал чтения данных -DIN и сигнал предоставления прерывания IAKO. Этот сигнал IAKO последовательно проходит через все устройства, которые могут запрашивать прерывания. Если устройство запросило прерывание, то оно не пропускает через себя этот сигнал. В результате получается, что если прерывания одновременно запросили два или более устройств, то сигнал предоставления прерывания получит только одно устройство, а именно то, которое ближе к процессору. Такой механизм разрешения конфликтов называется иногда географическим приоритетом (или цепочечным приоритетом, Daisy Chain). Получив сигнал IAKO, устройство, запросившее прерывание, должно снять свой сигнал -VIRQ.

Затем процессор проводит цикл безадресного чтения номера прерывания. В ответ на полученные сигналы -DIN и IAKO устройство, которому предоставлено прерывание, должно выдать на шину адреса/данных AD код номера прерывания (адреса вектора прерывания) и выставить сигнал подтверждения -RPLY. Процессор читает код номера прерывания и заканчивает цикл безадресного чтения снятием сигналов -DIN и IAKO.

Рис. 2.10. Структура связей для организации радиальных прерываний на магистрали ISA. При радиальном прерывании в магистрали имеется столько линий запроса прерывания, сколько всего может быть разных прерываний. То есть каждое устройство ввода/вывода, желающее использовать прерывание, подает сигнал запроса прерывания по своей отдельной линии. Процессор узнает о номере прерывания по номеру линии, по которой пришел сигнал запроса прерывания. Никаких циклов обмена по магистрали при этом не требуется. В случае радиальных прерываний в систему обычно включается дополнительная микросхема контроллера прерываний, обрабатывающая сигналы запросов прерываний. Именно так организованы прерывания, например, в магистрали ISA.

Упрощенная структура связей между устройствами, участвующими в обмене по прерываниям, на магистрали ISA показана на рис. 2.10. Процессор общается с контроллером прерываний как по магистрали (чтобы задать ему режимы работы), так и вне магистрали (при обработке запросов на прерывание). Сигналы запросов прерываний IRQ распределяются между всеми устройствами магистрали.

На каждую линию IRQ приходится одно устройство. Тип выходного каскада для этих линий — 2С, так как конфликты здесь не предусмотрены. Запросом прерывания является передний, положительный фронт сигнала IRQ. При одновременном поступлении сигналов IRQ от нескольких устройств порядок их обслуживания определяется контроллером прерываний.

Какой тип прерываний лучше — векторный или радиальный?

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

Радиальных прерываний в системе обычно не очень много (от 1 до 16). При этом типе прерываний, как правило, требуется введение в систему специального контроллера прерываний. Каждое радиальное прерывание требует введения дополнительной линии в шину управления системной магистрали.

Но работать с радиальными прерываниями проще, так как все сводится только к выработке единственного сигнала IRQ, и никаких циклов обмена по магистрали не требуется.

2.2.3. Циклы обмена в режиме ПДП Циклы обмена в режиме прямого доступа к памяти выполняются по тем же правилам, что и циклы программного обмена, и циклы предоставления прерываний.

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

На магистрали Q-bus запрос и предоставление ПДП организуются подобно запросу и предоставлению прерывания. Упрощенная структура связей устройств, участвующих в ПДП, показана на рис.

2.11. Временная диаграмма запроса/предоставления ПДП очень близка к временной диаграмме запроса/предоставления прерывания (см. рис. 2.9).

Рис. 2.11. Структура связей запроса/предоставления ПДП на магистрали Qbus. Сигнал запроса ПДП, называемый -DMR, передается всеми устройствами, нуждающимися в ПДП, по одной линии магистрали. Тип выходного каскада на этой линии — ОК. Процессор, получив сигнал DMR, выдает сигнал предоставления ПДП DMGO, аналогичный сигналу IAKO. Этот сигнал также проходит через все устройства последовательно, в результате чего ПДП получает только то устройство, которое находится ближе к процессору (географический приоритет). А затем устройство, получившее ПДП, проводит циклы обмена по магистрали, аналогично циклам программного обмена. В циклах ПДП информация читается из памяти и записывается в устройство ввода/вывода, или наоборот — читается из устройства ввода/вывода и передается в память.

На магистрали ISA запрос/предоставление ПДП очень напоминает организацию радиальных прерываний (рис. 2.12). Точно так же в системе существует контроллер ПДП, к которому сходятся сигналы запроса ПДП, называемые DRQ, и от которого расходятся сигналы предоставления ПДП, называемые -DACK. К каждому каналу ПДП (пара сигналов DRQ и -DACK) подключается только одно устройство, запрашивающее ПДП. Тип выходных каскадов для этих сигналов —2С. Устройство, нуждающееся в ПДП, посылает сигнал запроса DRQ и получает в ответ сигнал предоставления -DACK.

После этого контроллер ПДП проводит циклы обмена по магистрали между устройством ввода/вывода и памятью.

Упрощенная временная диаграмма циклов ПДП на магистрали ISA показана на рис. 2.13.

На магистрали ISA используются раздельные стробы записи в память (-MEMW) и записи в устройства ввода/вывода (-IOW), а также раздельные стробы чтения из памяти (-MEMR) и чтения из устройств ввода/вывода (-IOR). Это позволяет за один цикл обмена ПДП читать информацию из памяти и записывать ее в устройство ввода/вывода или же читать информацию из устройства ввода/вывода и записывать ее в память. При этом на шине адреса выставляется адрес памяти, а адрес устройства ввода/вывода заменяется одним-единственным сигналом AEN. Естественно, в цикле обмена в режиме ПДП участвует только то устройство ввода/вывода, которое предварительно запросило ПДП и которому ПДП было предоставлено. Поэтому никаких конфликтов между устройствами ввода/вывода из-за такой упрощенной адресации не возникает.

Рис. 2.12. Структура связей запроса/предоставления ПДП на магистрали ISA. Рис. 2.13. Цикл ПДП на магистрали ISA. 2.3. Прохождение сигналов по магистрали При организации обмена по магистралям и шинам разработчику необходимо учитывать несколько важных моментов, связанных как с особенностью распространения сигналов по шинам, так и с самой природой шин. В противном случае микропроцессорная система может попросту не работать или работать неустойчиво, хотя вся логика цифровых устройств, входящих в систему, будет спроектирована безошибочно.

В случае, когда системная шина (магистраль) микропроцессорной системы является внешней, а не скрыта внутри микросхемы, необходимо учитывать особенности распространения сигналов по длинным линиям. Хотя в большинстве случаев длина магистрали не слишком велика, не превышает 1— десятков сантиметров, это все равно оказывает большое влияние на синхронизацию обмена.

На прохождение сигналов по магистрали влияют следующие факторы:

• конечная величина задержки распространения сигналов по линиям магистрали; • различие задержек распространения сигналов по разным линиям шины; • неодновременное выставление сигналов на линии шины; • искажение фронтов сигналов, проходящих по линиям магистрали; • отражение сигналов от концов линий связи (рис. 2.14). Рис. 2.14. Прохождение сигналов по шине. Для учета всех этих факторов разработчики стандартных магистралей обмена и стандартных протоколов обмена всегда закладывают необходимые задержки между сигналами, участвующими в обмене. Кроме того, задержки между сигналами выбираются таким образом, чтобы устройство, которому адресован тот или иной сигнал, имело достаточно времени для его обработки. Если разрабатывается новая магистраль, все это тоже надо учитывать.

Поэтому пытаться «модернизировать» какой-то стандартный протокол и ускорять обмен по магистрали путем уменьшения задержек, предусмотренных стандартом, очень опасно. Точно так же опасно, не изменяя протокола обмена, пытаться увеличить длину магистрали, увеличивая тем самым задержки распространения сигналов по линиям и шинам. Особенно чувствительны к такого рода «модернизациям» синхронные магистрали, в которых не предусмотрено обязательное подтверждение выполнения каждой операции.

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

Естественно, для гарантии в длительность адресной фазы еще добавляется небольшая дополнительная задержка.

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

Для улучшения формы сигналов, распространяющихся по магистрали, иногда применяют оконечные согласователи (терминаторы) на концах линий магистрали. Особенно важно их применение в случае, когда допустимая длина магистрали превышает несколько метров. Например, в случае магистрали Qbus применяются два типа согласователей: 120-омный и 250-омный (рис. 2.15).

Рис. 2.15. Оконечные согласователи на магистрали Qbus. Включение согласователей предъявляет дополнительные требования к нагрузочной способности передатчиков, работающих на линии магистрали. В магистрали ISA подобные согласователи не используются, хотя к некоторым линиям присоединены резисторы, соединенные другим своим выводом с шиной питания (прежде всего это линии, тип выходного каскада для которых — ОК).

В любом случае выходные каскады передатчиков, работающих на линии магистрали, должны обеспечивать высокие выходные токи, так как к магистрали может подключаться несколько устройств, каждое из которых потребляет входной ток. Типичные величины требуемых выходных токов магистральных передатчиков находятся в пределах 20—30 мА. В то же время входные токи магистральных приемников должны быть малыми, чтобы не перегружать передатчики. Типичные величины допустимых входных токов магистральных приемников лежат в пределах 0,2—0,8 мА.

3. Лекция: Функции устройств магистрали В этой лекции рассказывается о функциях основных устройств микропроцессорной системы: процессора, па мяти, устройств вводавывода, о принципах их устройства и подключения к магистрали. 2.4. Функции устройств магистрали Рассмотрим теперь, как взаимодействуют на магистрали основные устройства микропроцессорной системы: процессор, память (оперативная и постоянная), устройства ввода/вывода.

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

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

Кроме выводов для сигналов трех основных шин процессор всегда имеет вывод (или два вывода) для подключения внешнего тактового сигнала или кварцевого резонатора (CLK), так как процессор всегда представляет собой тактируемое устройство. Чем больше тактовая частота процессора, тем он быстрее работает, то есть тем быстрее выполняет команды. Впрочем, быстродействие процессора определяется не только тактовой частотой, но и особенностями его структуры. Современные процессоры выполняют большинство команд за один такт и имеют средства для параллельного выполнения нескольких команд. Тактовая частота процессора не связана прямо и жестко со скоростью обмена по магистрали, так как скорость обмена по магистрали ограничена задержками распространения сигналов и искажениями сигналов на магистрали. То есть тактовая частота процессора определяет только его внутреннее быстродействие, а не внешнее. Иногда тактовая частота процессора имеет нижний и верхний пределы. При превышении верхнего предела частоты возможно перегревание процессора, а также сбои, причем, что самое неприятное, возникающие не всегда и нерегулярно. Так что с изменением этой частоты надо быть очень осторожным.

Рис. 2.16. Схема включения процессора. Еще один важный сигнал, который имеется в каждом процессоре, — это сигнал начального сброса RESET. При включении питания, при аварийной ситуации или зависании процессора подача этого сигнала приводит к инициализации процессора, заставляет его приступить к выполнению программы начального запуска. Аварийная ситуация может быть вызвана помехами по цепям питания и «земли», сбоями в работе памяти, внешними ионизирующими излучениями и еще множеством причин. В результате процессор может потерять контроль над выполняемой программой и остановиться в какомто адресе. Для выхода из этого состояния как раз и используется сигнал начального сброса. Этот же вход начального сброса может использоваться для оповещения процессора о том, что напряжение питания стало ниже установленного предела. В таком случае процессор переходит к выполнению программы сохранения важных данных. По сути, этот вход представляет собой особую разновидность радиального прерывания.

Иногда у микросхемы процессора имеется еще один-два входа радиальных прерываний для обработки особых ситуаций (например, для прерывания от внешнего таймера).

Шина питания современного процессора обычно имеет одно напряжение питания (+5В или +3,3В) и общий провод («землю»). Первые процессоры нередко требовали нескольких напряжений питания. В некоторых процессорах предусмотрен режим пониженного энергопотребления. Вообще, современные микросхемы процессоров, особенно с высокими тактовыми частотами, потребляют довольно большую мощность. В результате для поддержания нормальной рабочей температуры корпуса на них нередко приходится устанавливать радиаторы, вентиляторы или даже специальные микрохолодильники.

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

После включения питания процессор переходит в первый адрес программы начального пуска и выполняет эту программу. Данная программа предварительно записана в постоянную (энергонезависимую) память. После завершения программы начального пуска процессор начинает выполнять основную программу, находящуюся в постоянной или оперативной памяти, для чего выбирает по очереди все команды. От этой программы процессор могут отвлекать внешние прерывания или запросы на ПДП. Команды из памяти процессор выбирает с помощью циклов чтения по магистрали. При необходимости процессор записывает данные в память или в устройства ввода/вывода с помощью циклов записи или же читает данные из памяти или из устройств ввода/вывода с помощью циклов чтения.

Таким образом, основные функции любого процессора следующие:

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

Рис. 2.17. Внутренняя структура микропроцессора. Основные функции показанных узлов следующие.

Схема управления выборкой команд выполняет чтение команд из памяти и их дешифрацию. В первых микропроцессорах было невозможно одновременное выполнение предыдущей команды и выборка следующей команды, так как процессор не мог совмещать эти операции. Но уже в 16разрядных процессорах появляется так называемый конвейер (очередь) команд, позволяющий выбирать несколько следующих команд, пока выполняется предыдущая. Два процесса идут параллельно, что ускоряет работу процессора. Конвейер представляет собой небольшую внутреннюю память процессора, в которую при малейшей возможности (при освобождении внешней шины) записывается несколько команд, следующих за исполняемой. Читаются эти команды процессором в том же порядке, что и записываются в конвейер (это память типа FIFO, First In — First Out, первый вошел — первый вышел). Правда, если выполняемая команда предполагает переход не на следующую ячейку памяти, а на удаленную (с меньшим или большим адресом), конвейер не помогает, и его приходится сбрасывать. Но такие команды встречаются в программах сравнительно редко.

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

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

Арифметико-логическое устройство (или АЛУ, ALU) предназначено для обработки информации в соответствии с полученной процессором командой. Примерами обработки могут служить логические операции (типа логического «И», «ИЛИ», «Исключающего ИЛИ» и т.д.) то есть побитные операции над операндами, а также арифметические операции (типа сложения, вычитания, умножения, деления и т.д.). Над какими кодами производится операция, куда помещается ее результат — определяется выполняемой командой. Если команда сводится всего лишь к пересылке данных без их обработки, то АЛУ не участвует в ее выполнении.

Быстродействие АЛУ во многом определяет производительность процессора. Причем важна не только частота тактового сигнала, которым тактируется АЛУ, но и количество тактов, необходимое для выполнения той или иной команды. Для повышения производительности разработчики стремятся довести время выполнения команды до одного такта, а также обеспечить работу АЛУ на возможно более высокой частоте. Один из путей решения этой задачи состоит в уменьшении количества выполняемых АЛУ команд, создание процессоров с уменьшенным набором команд (так называемые RISC-процессоры). Другой путь повышения производительности процессора — использование нескольких параллельно работающих АЛУ.

Что касается операций над числами с плавающей точкой и других специальных сложных операций, то в системах на базе первых процессоров их реализовали последовательностью более простых команд, специальными подпрограммами, однако затем были разработаны специальные вычислители — математические сопроцессоры, которые заменяли основной процессор на время выполнения таких команд. В современных микропроцессорах математические сопроцессоры входят в структуру как составная часть.

Регистры процессора представляют собой по сути ячейки очень быстрой памяти и служат для временного хранения различных кодов: данных, адресов, служебных кодов. Операции с этими кодами выполняются предельно быстро, поэтому, в общем случае, чем больше внутренних регистров, тем лучше. Кроме того, на быстродействие процессора сильно влияет разрядность регистров. Именно разрядность регистров и АЛУ называется внутренней разрядностью процессора, которая может не совпадать с внешней разрядностью.

По отношению к назначению внутренних регистров существует два основных подхода. Первого придерживается, например, компания Intel, которая каждому регистру отводит строго определенную функцию. С одной стороны, это упрощает организацию процессора и уменьшает время выполнения команды, но с другой — снижает гибкость, а иногда и замедляет работу программы. Например, некоторые арифметические операции и обмен с устройствами ввода/вывода проводятся только через один регистр — аккумулятор, в результате чего при выполнении некоторых процедур может потребоваться несколько дополнительных пересылок между регистрами. Второй подход состоит в том, чтобы все (или почти все) регистры сделать равноправными, как, например, в 16-разрядных процессорах Т-11 фирмы DEC. При этом достигается высокая гибкость, но необходимо усложнение структуры процессора. Существуют и промежуточные решения, в частности, в процессоре MC68000 фирмы Motorola половина регистров использовалась для данных, и они были взаимозаменяемы, а другая половина — для адресов, и они также взаимозаменяемы.

Регистр признаков (регистр состояния) занимает особое место, хотя он также является внутренним регистром процессора. Содержащаяся в нем информация — это не данные, не адрес, а слово состояния процессора (ССП, PSW — Processor Status Word). Каждый бит этого слова (флаг) содержит информацию о результате предыдущей команды. Например, есть бит нулевого результата, который устанавливается в том случае, когда результат выполнения предыдущей команды — нуль, и очищается в том случае, когда результат выполнения команды отличен от нуля. Эти биты (флаги) используются командами условных переходов, например, командой перехода в случае нулевого результата. В этом же регистре иногда содержатся флаги управления, определяющие режим выполнения некоторых команд.

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

Схема управления прямым доступом к памяти служит для временного отключения процессора от внешних шин и приостановки работы процессора на время предоставления прямого доступа запросившему его устройству.

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

Таким образом, в ходе работы процессора схема выборки команд выбирает последовательно команды из памяти, затем эти команды выполняются, причем в случае необходимости обработки данных подключается АЛУ. На входы АЛУ могут подаваться обрабатываемые данные из памяти или из внутренних регистров. Во внутренних регистрах хранятся также коды адресов обрабатываемых данных, расположенных в памяти. Результат обработки в АЛУ изменяет состояние регистра признаков и записывается во внутренний регистр или в память (как источник, так и приемник данных указывается в составе кода команды). При необходимости информация может переписываться из памяти (или из устройства ввода/вывода) во внутренний регистр или из внутреннего регистра в память (или в устройство ввода/вывода).

Внутренние регистры любого микропроцессора обязательно выполняют две служебные функции:

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

Реферат: Микропроцессоры и основные понятия

2. Исторические развития М.П. Основные понятия М.Г.

В 1959 г. инженеры фирмы “Texas Instruments” разработали способ, как разместить внутри одного полупроводникового кристалла несколько транзисторов и соединить их между собой – родилась первая интегральная микросхема (ИМС). По сравнению с функционально теми же устройствами, собранными из отдельных транзисторов, резисторов и т.п., ИМС обладает значительными преимуществами: меньшими габаритами, более высокой надежностью и т.д. Неудивительно, что количество выпускаемых микросхем стало быстро возрастать, а их ассортимент неуклонно расширяться. Последнее обстоятельство создавало ряд трудностей для потребителей. Важно даже не столько то, что стремительно возраставшее количество типов ИМС затрудняло ориентацию в море наименований. Значительно большим недостатком была узкая специализация ИМС, из-за которой объем их выпуска не мог быть большим, а значит стоимость одной микросхемы оставалась высокой. Улучшить ситуацию позволило бы создание универсальной логической ИМС, специализация которой определялась бы не заложенной на заводе внутренней структурой, а заданной непосредственно самим потребителем программой работы.

Таким образом, оказывается, что первые микропроцессоры (МП) появились совсем не для миниатюризации ЭВМ, а в целях создания более дешевой логической микросхемы, легко адаптируемой к потребностям пользователя.

Микропроцессор — это программно управляемое устройство предназначенное для

обработки цифровой информации и управления процессами этой обработки,

выполненной в виде одной или нескольких интегральных схем с высокой степенью

интеграции электронных компонентов.

Микропроцессорный комплект — это набор микросхем необходимых для реализации

одного функционально завершённого вычислительного устройства.

Архитектура МП — это совокупность аппаратных, микропрограммных и программных

средств, определяющая технические, эксплутационные характеристики.

Микропроцессорная система — это управляемая и контрольно — измерительная

система, обрабатывающим элементом в которой является микропроцессор.*

В состав микропроцессорной системы входит микропроцессор (центральный

элемент), который может быть реализован в виде одной СБИС либо в виде одной

платы на которой микропроцессор будет собран из БИС, входящих в единый

микропроцессорный комплект. Микропроцессор МПС выполняет две функции:

1 — служит центральным устройством управления

2 — выполняет арифметико — логическое преобразование данных.

Память МПС имеет иерархическую структуру. Она делится на внутреннюю (ОЗУ, ПЗУ

и КЭШ-память) и внешнюю (накопители на магнитных носителях, на магнитных

лентах, жёсткие диски, флоппи диски).

Устройство ввода — для передачи информации из вне в регистры МП или память

(клавиатура, различные датчики)

Устройство вывода — принимающее информацию из регистра МП или памяти МПС.

Все устройства, входящие в состав МПС имеют стандартный интерфейс, через

который они подключаются к магистрали. Стандартный интерфейс во всех узлах

представлен следующими магистралями: МУ — магисталь управления, МА —

магистраль адреса, МД — магистраль данных.

2.Электрические сигналы. Свойства информации. Обработка цифровых сигналов.

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

2. Цифровой сигнал — представляет собой последовательность нулей и единиц. Цифровой сигнал легче передавать на большие расстояния, чем аналоговый сигнал, так как нет проблем с усилением и в несколько раз легче бороться с помехами.

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

4. Импульсный сигнал представляет собой сигнал с кратковременным изменением установившегося состояния, характеризующийся малым интервалом времени по сравнению с временными характеристиками установившегося процесса.

Информация — совокупность данных, зафиксированных на материальном носителе, сохранённых и распространённых во времени и пространстве.

Основные виды информации по ее форме представления, способам ее кодирования и хранения, что имеет наибольшее значение для информатики, это:

  • графическая или изобразительная — первый вид, для которого был реализован способ хранения информации об окружающем мире в виде наскальных рисунков, а позднее в виде картин, фотографий, схем, чертежей на бумаге, холсте, мраморе и др. материалах, изображающих картины реального мира;
  • звуковая — мир вокруг нас полон звуков и задача их хранения и тиражирования была решена с изобретение звукозаписывающих устройств в 1877 г. (см., например, историю звукозаписи на сайте — ее разновидностью является музыкальная информация — для этого вида был изобретен способ кодирования с использованием специальных символов, что делает возможным хранение ее аналогично графической информации;
  • текстовая — способ кодирования речи человека специальными символами — буквами, причем разные народы имеют разные языки и используют различные наборы букв для отображения речи; особенно большое значение этот способ приобрел после изобретения бумаги и книгопечатания;
  • числовая — количественная мера объектов и их свойств в окружающем мире; особенно большое значение приобрела с развитием торговли, экономики и денежного обмена; аналогично текстовой информации для ее отображения используется метод кодирования специальными символами — цифрами, причем системы кодирования (счисления) могут быть разными;
  • видеоинформация — способ сохранения «живых» картин окружающего мира, появившийся с изобретением кино.
  • Объективность информации . Объективный – существующий вне и независимо от человеческого сознания. Информация – это отражение внешнего объективного мира. Информация объективна, если она не зависит от методов ее фиксации, чьего-либо мнения, суждения.
    Пример. Сообщение «На улице тепло» несет субъективную информацию, а сообщение «На улице 22°С» – объективную, но с точностью, зависящей от погрешности средства измерения.
    Объективную информацию можно получить с помощью исправных датчиков, измерительных приборов. Отражаясь в сознании конкретного человека, информация перестает быть объективной, так как, преобразовывается (в большей или меньшей степени) в зависимости от мнения, суждения, опыта, знаний конкретного субъекта.
  • Достоверность информации . Информация достоверна, если она отражает истинное положение дел. Объективная информация всегда достоверна, но достоверная информация может быть как объективной, так и субъективной. Достоверная информация помогает принять нам правильное решение. Недостоверной информация может быть по следующим причинам:
    • преднамеренное искажение (дезинформация) или непреднамеренное искажение субъективного свойства;
    • искажение в результате воздействия помех («испорченный телефон») и недостаточно точных средств ее фиксации.
  • Полнота информации . Информацию можно назвать полной, если ее достаточно для понимания и принятия решений. Неполная информация может привести к ошибочному выводу или решению.
  • Точность информации определяется степенью ее близости к реальному состоянию объекта, процесса, явления и т. п.
  • Актуальность информации – важность для настоящего времени, злободневность, насущность. Только вовремя полученная информация может быть полезна.
  • Полезность (ценность) информации . Полезность может быть оценена применительно к нуждам конкретных ее потребителей и оценивается по тем задачам, которые можно решить с ее помощью.

Цифрова́я обрабо́тка сигна́лов — преобразование сигналов, представленных в цифровой форме.

Обработка сигналов во временной области широко используется в современной электронной осциллографии и в цифровых осциллографах. А для представления сигналов в частотной области используются цифровые анализаторы спектра. Для изучния математических аспектов обработки сигналов импользуются пакеты расширения (чаще всего под именем Signal Processing) систем компьютерной математики MATLAB, Mathcad, Mathematica, Maple и др.

3. Арифметические основы микропроцессорной техники. Логические основы микропроцессорной техники.

  • Одноразрядное двоичное бинарное (двухоперандное) АЛУ с бинарным (двухразрядным) выходом может выполнять до двоичных бинарных (двухоперандных) функций (операций) с бинарным (двухразрядным) выходом.
  • Одноразрядное троичное бинарное (двухоперандное) АЛУ с унарным (одноразрядным) выходом (полуАЛУ) может выполнять до троичных бинарных (двухоперандных) функций (операций) с унарным (одноразрядным) выходом.
  • Одноразрядное троичное бинарное (двухоперандное) АЛУ с бинарным (двухразрядным) выходом может выполнять до троичных бинарных (двухоперандных) функций (операций) с бинарным (двухразрядным) выходом.

3.Арифметические и логические основы МП.

Арифметическо-логическое устройство в зависимости от выполнения функций можно разделить на две части:

  1. микропрограммное устройство (устройство управления), задающее последовательность микрокоманд (команд);
  2. операционное устройство (АЛУ), в котором реализуется заданная последовательность микрокоманд (команд).

В состав арифметическо-логического устройства, условно, для примера на картинке, включается регистры Рг1 — Рг7, которые служат для обработки информации, поступающей из оперативной или пассивной памяти N1, N2, …NS и логические схемы, которые используются для обработки слов по микрокомандам, поступающим из устройства управления. Различают два вида микрокоманд: внешние — такие микрокоманды, которые поступают в АЛУ от внешних источников и вызывают в нём преобразование информации (на рисунке 2 это микрокоманды А1,А2,…,Аn) и внутренние — те, которые генерируются в АЛУ и оказывают влияние на микропрограммное устройство, изменяя таким образом нормальный порядок следования команд. р1, p2,…, pm на рисунке 2 — это и есть микрокоманды. А результаты вычислений из АЛУ передаются в ОЗУ по кодовым шинам записи у1, у2, …, ys.

Функции регистров, входящих в арифметическо-логическое устройство

  • Рг1 — сумматор (или сумматоры) — главный регистр АЛУ, в котором образуется результат вычислений;
  • Рг2,Рг3 — регистры операндов (слагаемого/сомножителя/делителя/делимого и др.) в зависимости от выполняемой операции;
  • Рг4 — регистр адреса (или адресные регистры), предназначенные для запоминания (бывает что формирования) адреса операндов результата;
  • Рг6 — k индексных регистров, содержимое которых используется для формирования адресов;
  • Рг7 — l вспомогательных регистров, которые по желанию программиста могут быть аккумуляторами, индексными регистрами или использоваться для запоминания промежуточных результатов.

Часть операционных регистров могут быть адресованы в команде для выполнения операций с их содержимым и их называют программно-доступными. К таким регистрам относятся: сумматор, индексные регистры и некоторые вспомогательные регистры. Остальные регистры нельзя адресовать в программе, то есть они являются программно-недоступными.

4.Элементы памяти. Элементы преобразования логической информации.

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

Внутренняя память предназначена для хранения относительно небольших объемов информации при ее обработке микропроцессором.

Внешняя память предназначена для длительного хранения больших объемов информации независимо от того включен или выключен компьютер.

Логические элементы — устройства, предназначенные для обработки информации в цифровой форме (последовательности сигналов высокого — «1» и низкого — «0» уровней в двоичной логике, последовательность «0», «1» и «2» в троичной логике, последовательности «0», «1», «2», «3», «4», «5», «6», «7», «8»и «9» в десятичной логике). Физически логические элементы могут быть выполнены механическими, электромеханическими (на электромагнитных реле), электронными (на диодах и транзисторах), пневматическими, гидравлическими, оптическими и др.

Логические операции (булева функция) своё теоретическое обоснование получили в алгебре логики.

Логические операции с одним операндом называются унарными , с двумя — бинарными , с тремя — тернарными (триарными , тринарными ) и т. д.

Из возможных унарных операций с унарным выходом интерес для реализации представляют операции отрицания и повторения, причём, операция отрицания имеет большую значимость, чем операция повторения, так как повторитель может быть собран из двух инверторов, а инвертор из повторителей не собрать.

Отрицание, НЕТ, НЕ

Повторение, ДА

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

Из возможных бинарных логических операций с двумя знаками c унарным выходом интерес для реализации представляют 10 операций, приведённых ниже.

Конъюнкция (логическое умножение). Операция 2И

Мнемоническое правило для конъюнкции с любым количеством входов звучит так: На выходе будет:

· «1» тогда и только тогда, когда на всех входах действуют «1»,

· «0» тогда и только тогда, когда хотя бы на одном входе действует «0»

Дизъюнкция (логическое сложение). Операция 2 ИЛИ

Мнемоническое правило для дизъюнкции с любым количеством входов звучит так: На выходе будет:

· «1» тогда и только тогда, когда хотя бы на одном входе действует «1»,

· «0» тогда и только тогда, когда на всех входах действуют «0»

Инверсия функции конъюнкции. Операция 2 И-НЕ (штрих Шеффера)

Мнемоническое правило для И-НЕ с любым количеством входов звучит так: На выходе будет:

· «1» тогда и только тогда, когда хотя бы на одном входе действует «0»,


· «0» тогда и только тогда, когда на всех входах действуют «1»

Инверсия функции дизъюнкции. Операция 2 ИЛИ-НЕ (стрелка Пирса)

Мнемоническое правило для ИЛИ-НЕ с любым количеством входов звучит так: На выходе будет:

· «1» тогда и только тогда, когда на всех входах действуют «0»,

· «0» тогда и только тогда, когда хотя бы на одном входе действует «1»

Эквивалентность (равнозначность), 2 ИСКЛЮЧАЮЩЕЕ_ИЛИ-НЕ

Мнемоническое правило эквивалентности с любым количеством входов звучит так: На выходе будет:

· «1» тогда и только тогда, когда на входа действует четное количество «1»,

· «0» тогда и только тогда, когда на входа действует нечетное количество «1»,

Сложение по модулю 2 (2 Исключающее_ИЛИ, неравнозначность). Инверсия равнозначности.

В англоязычной литературе 2XOR.

Мнемоническое правило для суммы по модулю 2 с любым количеством входов звучит так: На выходе будет:

· «1» тогда и только тогда, когда на входа действует нечётное количество «1»,

· «0» тогда и только тогда, когда на входа действует чётное количество «1»,

Импликация от A к B (инверсия декремента)

Импликация от B к A (инверсия инкремента)

Декремент. Запрет импликации по B. Инверсия импликации от A к B

Инкремент. Запрет импликации по A. Инверсия импликации от B к A

Примечание 1 . Элементы импликаций не имеют промышленных аналогов для функций с количеством входов, не равным 2.
Примечание 2 . Элементы импликаций не имеют промышленных аналогов.

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

· И, НЕ (2 элемента)

· ИЛИ, НЕ (2 элемента)

· ИЛИ-НЕ (1 элемент).

Для преобразования логических функций в один из названых базисов необходимо применять Закон (правило) де-Моргана

5.Структура микропроцессорной системы. Принцип программного управления Неймана.

Базовая структура микропроцессорной системы имеем вид

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

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

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

— его структуру, т.е. совокупность компонентов, составляющих микропроцессор, и связей между ними; для пользователя достаточно ограничиться регистровой моделью микропроцессора;

— способы представления и форматы данных;

— способы обращения ко всем программно-доступным для пользователя элементам структуры ( адресация к регистрам, ячейкам постоянной и оперативной памяти, внешним устройствам);

— набор операций, выполняемых микропроцессором;

— характеристики управляющих слов и сигналов, вырабатываемых микропроцессором и поступающих в него извне;

— реакцию на внешние сигналы ( система обработки прерываний и т.п.).

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

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

Организация, при которой память программ CSEG (Code Segment) и память данных DSEG (Data Segment) разделены и имеют свои собственные адресные пространства и способы доступа к ним, называется Гарвардской архитектурой ( по имени лаборатории Гарвардского Университета, предложившей ее). Такая архитектура является более сложной и требует дополнительных управляющих сигналов. Однако, она позволяет осуществлять более гибкие манипуляции информации, реализовывать компактно кодируемый набор машинных команд и, в ряде случаев, ускорять работу микропроцессора. Представителями такой архитектуры являются микроконтроллеры семейства MCS-51 фирмы Intel.

6.Представление числовой информации. Представление текстовой информации.

В ЭВМ используются три вида чисел: с фиксированной точкой (запятой), с плавающей точкой (запятой) и двоично-десятичное представление. Точка (запятая) — это подразумеваемая граница целой и дробной частей числа.

У чисел с фиксированной точкой в двоичном формате предполагается строго определенное место точки (запятой). Обычно это место определяется или перед первой значащей цифрой числа, или после последней значащей цифрой числа. Если точка фиксируется перед первой значащей цифрой, то это означает, что число по модулю меньше единицы. Диапазон изменения значений чисел определяется неравенством

Если точка фиксируется после последней значащей цифры, то это означает, что п- разрядные двоичные числа являются целыми. Диапазон изменения их значений составляет:

Перед самым старшим из возможных разрядов двоичного числа фиксируется его знак. Положительные числа имеют нулевое значение знакового разряда, отрицательные — единичные.

Другой формой представления чисел является представление их в виде чисел с плавающей точкой (запятой). Числа с плавающей точкой представляются в виде мантиссы т a и порядка р a , иногда это представление называют полулогарифмической формой числа. Например, число A10 = 373 можно представить в виде 0.373 • 103, при этом т = 0.373, р = 3, основание системы счисления подразумевается фиксированным и равным десяти. Для двоичных чисел А 2 в этом представлении также формируется т a и порядок р a при основании системы счисления равным двум.

что соответствует записи

Порядок числа р a определяет положение точки (запятой) в двоичном числе. Значение порядка лежит в диапазоне a max max , где величина pa mах определяется числом разрядов к, отведенных для представления порядка

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

Значение рa носит название “характеристика числа”. Обычно под порядок (модифицированный порядок — характеристику) выделяют один байт. Старший разряд характеристики отводится под знак числа, а семь оставшихся разрядов обеспечивают изменение порядка в диапазоне

Модифицированный порядок рa вычисляется по зависимости

Этим самым значения р ‘ a формируются в диапазоне положительных чисел

Мантисса числа ma представляется двоичным числом, у которого точка фиксируется перед старшим разрядом, т. е.

где k — число разрядов, отведенных для представления мантиссы.

то старший значащий разряд мантиссы в системе счисления с основанием N отличен от нуля. Такое число называется нормализованным. Например, A2 =(100;0.101101)2 -нормализованное число А 2 = 1011.01 или А 10 = 11.25, а то же самое число А 2 = (101 ;0.0101101) — число ненормализованное, так как старший разряд мантиссы равен нулю.

Диапазон представления нормализованных чисел с плавающей точкой определяется

где r и k — соответственно количество разрядов, используемых для представления порядка и мантиссы.

Третья форма представления двоичных чисел — двоично-десятичная. Ее появление объясняется следующим. При обработке больших массивов десятичных чисел (например, больших экономических документов) приходится тратить существенное время на перевод этих чисел из десятичной системы счисления в двоичную для последующей обработки и обратно -для вывода результатов. Каждый такой перевод требует выполнения двух — четырех десятков машинных команд. С включением в состав отдельных ЭВМ специальных функциональных блоков или спецпроцессоров десятичной арифметики появляется возможность обрабатывать десятичные числа напрямую, без их преобразования, что сокращает время вычислений. При этом каждая цифра десятичного числа представляется двоичной тетрадой. Например, A10 =3759, A2-10 = 0011 0111 0101 1001. Положение десятичной точки (запятой), отделяющей целую часть от дробной, обычно заранее фиксируется. Значение знака числа отмечается кодом, отличным от кодов цифр. Например, “+” имеет значение тетрады “1100”, а “-” — “1101”.

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

С точки зрения ЭВМ текст состоит из отдельных символов. К числу символов принадлежат не только буквы (заглавные или строчные, латинские или русские), но и цифры, знаки препинания, спецсимволы типа «=», «(«, «&» и т.п. и даже (обратите особое внимание!) пробелы между словами. Да, не удивляйтесь: пустое место в тексте тоже должно иметь свое обозначение.

Каждый символ хранится в виде двоичного кода, который является номером символа. Можно сказать, что компьютер имеет собственный алфавит, где весь набор символов строго упорядочен. Количество символов в алфавите также тесно связано с двоичным представлением и у всех ЭВМ равняется 256 . Иными словами, каждый символ всегда кодируется 8 битами , т.е. занимает ровно один байт .

Как видите, хранится не начертание буквы, а ее номер. Именно по этому номеру воспроизводится вид символа на экране дисплея или на бумаге. Поскольку алфавиты в различных типах ЭВМ не полностью совпадают, при переносе с одной модели на другую может произойти превращение разумного текста в «абракадабру». Такой эффект иногда получается даже на одной машине в различных программных средах: например, русский текст, набранный в MS DOS, нельзя без специального преобразования прочитать в Windows. Остается утешать себя тем, что задача перекодировки текста из одной кодовой таблицы в другую довольно проста и при наличии программ машина сама великолепно с ней справляется.

Наиболее стабильное положение в алфавитах всех ЭВМ занимают латинские буквы, цифры и некоторые специальные знаки. Это связано с существованием международного стандарта ASCII (American Standard Code for Information Interchange — Американский стандартный код для обмена информацией). Русские же буквы не стандартизированы и могут иметь различную кодировку.

Желающие могут в качестве примера ознакомится с таблицей стандартной части алфавита ЭВМ — символы с шестнадцатиричными кодами с 20 до 7F.

7. Структурная схема микропроцессора.

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

Ранее было отмечено, что каждый процессор характеризуется набор команд , который он в состоянии выполнить. Например, процессор Pentium фирмы не может обработать программы, написанные для процессора SPARC фирмы Sun, а SPARC не может выполнить программы, написанные для Pentium.

Укрупненную структурную схему типичного процессора можно представить в виде трех основных блоков: управляющего блока УБ, операционного блока ОБ и интерфейсного блока ИБ. Управляющий блок выполняет функции выборки, декодирования и вычисления адресов операндов, а так же генерирует последовательности микрокоманд, реализующих команды процессора. Он содержит устройство управления, прерывания, синхронизации. Операционный блок служит для обработки данных. Он объединяет арифметико-логическое устройство АЛУ, регистры общего назначения РОН и специальные регистры. АЛУ выполняет арифметические (сложение, вычитание и т.п.) и логические (логическое И, ИЛИ и т.п.) операции. Регистры являются своего рода памятью ОБ, предназначенной для хранения промежуточных результатов и некоторых команд управления, информацию о состоянии процессора. Информация из них считываются и записываются очень быстро, поскольку они находятся внутри процессора. Регистров может быть от несколько десятков до нескольких сотен штук в зависимости от типа процессора. Большим количеством регистров характеризуются RISC — процессоры , а небольшим — CISC — процессоры

Интерфейсный блок ИБ позволяет подключить память и периферийные устройства к процессору. ИБ выполняет также функции канала прямого доступа к памяти. Интерфейс процессора содержит информационные шины данных ШД, адресов ША и управления ШУ. Надо заметить, что такое распределение аппаратных блоков процессора между функциональными частями весьма условно и приводится для примера.

Процессор выполняет каждую команду за несколько шагов:
1. вызывает следующую команду из памяти и переносит ее в регистр команд;
2. меняет положение счетчика команд, который теперь должен указывать на следующую команду;
3. определяет тип вызванной команды;
4. если команда использует данные из памяти, определяет место нахождение данных;
5. переносит данные в регистр процессора;
6. выполняет команду;
7. переходит к 1 шагу, что бы начать выполнение следующей команды.

Эта последовательность шагов (выборка – декодирование – исполнение) является основой работы для всех процессоров.

Упрощенная структурная схема типичного процессора изображена на следующем рисунке.

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

Первый байт любой команды поступает из ОЗУ по шине данных на регистр команд РК. Этот первый байт подается в управляющий блок УБ, который определяет вид операции. В частности, он определяет, является ли команда однобайтовой, или она состоит из большего числа байтов. В последнем случае дополнительные байты передаются по шинам данных из ОЗУ и принимаются или в регистр адреса РА данных, или в один из регистров РОН

Регистр адреса данных РА содержит адрес операнда для команд, обращающихся к памяти, адрес порта для команд ввода/вывода или адрес следующей команды для команд перехода. Регистры РОН могут содержать операнды для всех команд, работающих с данными. Среди РОН есть специальный регистр результата РР или аккумулятор, участвующий во всех арифметических и логических операциях. В частности, он содержит один из операндов перед выполнением операции и получает результат после ее завершения. Все арифметические и логические операции выполняются в арифметико – логическом устройстве АЛУ. Результаты из АЛУ передаются либо в РР, либо в какой-то из регистров РОН.

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

В управляющем блоке УБ дешифрируется и анализируется код команды, поступающий из РК. В УБ из АЛУ и от триггера переноса поступают сигналы, по которым определяются условия для передачи управления. Все остальные компоненты процессора получают от УБ управляющие и синхронизирующие сигналы, необходимые для выполнения команды.

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

В целях улучшения характеристик центральных процессоров их разработчики давно отказались от простой модели, в которой за один такт может быть считана, декодирована и выполнена только одна команда. Многие современные процессоры обладают возможностями выполнения нескольких команд одновременно. Например, у процессора могут быть раздельные модули, занимающиеся выборкой, декодированием и выполнением команд, и во время выполнения команды с номером n он может декодировать команду с номером n + 1 и считывать команду с номером n + 2. Подобная организация процесса называется конвейером. Более передовым по сравнению с конвейерной конструкцией является суперскалярный процессор. В этой структуре присутствует множество выполняющих узлов: один для целочисленных арифметических операций, второй — для операций с плавающей точкой и еще один — для логических операций. За один такт считывается две или более команды, которые декодируются и сбрасываются в буфер хранения, где они ждут своей очереди на выполнение. Когда выполняющее устройство освобождается, оно заглядывает в буфер хранения, интересуясь, есть ли там команда, которую оно может обработать, и если да, то забирает ее и выполняет. В результате команды часто исполняются не в порядке их следования. В большинстве случаев аппаратура должна гарантировать, что результат совпадет с тем, который выдала бы последовательная конструкция

Большинство процессоров, используемых в современных ЭВМ, имеют два режима работы: режим ядра и пользовательский режим. Обычно режим задается битом РП или слова состояния процессора. Если процессор запущен в режиме ядра, он может выполнять все команды из набора инструкций и использовать все возможности аппаратуры. Операционная система работает в режиме ядра, предоставляя доступ ко всему оборудованию.

В противоположность этому программы пользователей работают в пользовательском режиме, разрешающем выполнение подмножества команд и делающем доступным лишь часть аппаратных средств. Как правило, все команды, включая ввод-вывод данных и защиту памяти, запрещены в пользовательском режиме. Установка бита режима ядра в регистре признаков РП пользовательском режиме естественно, недоступна.

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

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

8. Основные параметры и классификация МП.

Микропроцессор как функциональное устройство ЭВМ обеспечивает эффективное автоматическое выполнение операций обработки цифровой информации в соответствии с заданным ал-горитмом. Для решения широкого круга задач в различных облас-тях применений микропроцессор должен обладать алгоритмически полной системой команд (операций).
Теоретически показано, что минимальная алгоритмически полная система команд процессора состоит из одной или несколь-ких универсальных команд. Однако использование процессоров с минимальными по числу операций системами команд ведет к не-экономичному использованию информационных емкостей памяти и значительным затратам времени на выполнение «длинных» про-грамм. Поэтому обычно в МП встраиваются аппаратурные средст-ва, позволяющие реализовать многие десятки и сотни команд. Та-кие развитые системы команд дают возможность обеспечить ком-пактную запись алгоритмов и соответственно эффективные про-граммы.
При проектировании МП решаются задачи определения на-боров команд, выполняемых программным или аппаратурным способом на основе заданной системы микрокоманд. Аппаратур-ная реализация сложных команд дает возможность увеличить бы-стродействие микропроцессора, но требует значительных аппара-турных ресурсов кристалла интегральной схемы МП. Программ-ная реализация сложных команд позволяет обеспечивать програм-мирование сложных задач, изменять количество и особенности исполнения сложных команд. Однако скорость исполнения программных команд ниже скорости исполнения аппаратурно-реализованных команд.
Практически во всех современных МПС используются сложные развитые системы команд. Их ядро, состоящее из набора универсальных команд, реализуется аппаратурным способом в центральном МП. Кроме того, специализированные части наборов системы команд реализуются вспомогательными или периферий-ными микропроцессорами. Эти расширяющие возможности обра-ботки данных специальные арифметические или логические МП позволяют ускорить выполнение определенных команд и тем са-мым сократить время исполнения программ.
Для описания МП как функциональных устройств необхо-димо охарактеризовать формат обрабатываемых данных и команд, количество, тип и гибкость команд, методы адресации данных, число внутренних регистров общего назначения и регистров ре-зультата, возможности организации и адресации стека, параметры виртуальной памяти и информационную емкость прямо адресуе-мой памяти. Большое значение имеют средства построения систе-мы прерываний программ, построения эффективных систем ввода — вывода данных и развитого интерфейса.
МП могут быть реализованы на различной физической ос-нове: на электронной, оптоэлектронной, оптической, биологиче-ской и даже на пневматической или гидравлической.
По назначению различают универсальные и специализиро-ванные микропроцессоры.
Универсальные МП предназначены для решения широкого круга задач. При этом их эффективная производительность слабо зависит от проблемной специфики решаемых задач В системе ко-манд МП заложена алгоритмическая универсальность, означаю-щая, что выполняемый машиной состав команд позволяет полу-чить преобразование информации в соответствии с любым задан-ным алгоритмом.
К универсальным МП относятся и секционные микропро-цессоры, поскольку для них система команд может быть оптими-зирована в каждом частном проекте создания секционного микро-процессора.
Эта группа МП наиболее многочисленна, в нее входят та-кие комплекты как К580, Z80, Intel 80?86, К582, К587, К1804, К1810 и др.
Специализированные МП предназначены для решения оп-ределенного класса задач, а иногда только для решения одной конкретной задачи. Их существенными особенностями являются простота управления, компактность аппаратурных средств, низкая стоимость и малая мощность потребления.
Специализированные МП имеют ориентацию на ускорен-ное выполнение определенных функций, что позволяет резко уве-личить эффективную производительность при решении только оп-ределенных задач.
Среди специализированных микропроцессоров можно вы-делить различные микроконтроллеры, ориентированные на вы-полнение сложных последовательностей логических операций; математические МП, предназначенные для повышения производи-тельности при выполнении арифметических операций за счет, на-пример матричных методов их выполнения; МП для обработки данных в различных областях применений и т. д.
С помощью специализированных МП можно эффективно решать новые сложные задачи параллельной обработки данных. Например, они позволяют осуществить более сложную математи-ческую обработку сигналов, чем широко используемые методы корреляции, дают возможность в реальном масштабе времени на-ходить соответствие для сигналов изменяющейся формы путем сравнения их с различными эталонными сигналами для эффектив-ного выделения полезного сигнала на фоне шума и т.д.
По виду обрабатываемых входных сигналов различают цифровые и аналоговые микропроцессоры.
Сами МП являются цифровыми устройствами обработки информации. Однако в ряде случаев они могут иметь встроенные аналого-цифровые и цифро-аналоговые преобразователи. Поэтому входные аналоговые сигналы передаются в МП через преобразова-тель в цифровой форме, обрабатываются и после обратного преоб-разования в аналоговую форму поступают на выход.
С архитектурной точки зрения такие микропроцессоры представляют собой аналоговые функциональные преобразователи сигналов. Они выполняют функции любой аналоговой схемы (например, производят генерацию колебаний, модуляцию, смеще-ние, фильтрацию, кодирование и декодирование сигналов в реаль-ном масштабе времени и т. д., заменяя сложные схемы, состоящие из операционных усилителей, катушек индуктивности, конденса-торов и т.д.). При этом применение аналогового МП значительно повышает точность обработки аналоговых сигналов и их воспро-изводимость, а также расширяет функциональные возможности за счет программной “настройки” цифровой части микропроцессора на различные алгоритмы обработки сигналов.
Обычно в составе однокристальных аналоговых МП имеет-ся несколько каналов аналого-цифрового и цифро-аналогового преобразования. В аналоговом микропроцессоре разрядность об-рабатываемых данных достигает 24 бит и более. Большое значение уделяется увеличению скорости выполнения арифметических опе-раций.
Отличительная черта аналоговых МП — это способность к переработке большого объема числовых данных, т. е. к выполне-нию операций сложения и умножения с большой скоростью, при необходимости даже за счет отказа от операций прерываний и пе-реходов. Аналоговый сигнал, преобразованный в цифровую фор-му, обрабатывается в реальном масштабе времени и передается на выход обычно в аналоговой форме через цифро-аналоговый пре-образователь. При этом согласно теореме Котельникова частота квантования аналогового сигнала должна вдвое превышать верх-нюю частоту сигнала.
Одним из направлений дальнейшего совершенствования аналоговых МП является повышение их универсальности и гибко-сти. Поэтому вместе с повышением скорости обработки большого объема цифровых данных будут развиваться средства обеспечения развитых вычислительных процессов обработки цифровой инфор-мации за счет реализации аппаратурных блоков прерывания про-грамм и программных переходов.
По количеству выполняемых программ различают одно- и многопрограммные микропроцессоры.
В однопрограммных МП выполняется только одна про-грамма. Переход к выполнению другой программы происходит после завершения текущей программы.
В много- или мультипрограммных МП одновременно вы-полняется несколько (обычно несколько десятков) программ. Ор-ганизация мультипрограммной работы микропроцессорных управ-ляющих систем, например, позволяет осуществить контроль за со-стоянием и управлением большим числом источников или прием-ников информации.

9.Запоминающие устройства. Основные параметры и классификация.

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

По устойчивости записи и возможности перезаписи ЗУ делятся на:

  • Постоянные ЗУ (ПЗУ), содержание которых не может быть изменено конечным пользователем (например, BIOS). ПЗУ в рабочем режиме допускает только считывание информации.
  • Записываемые ЗУ (ППЗУ), в которые конечный пользователь может записать информацию только один раз (например, CD-R).
  • Многократно перезаписываемые ЗУ (ПППЗУ) (например, CD-RW).
  • Оперативные ЗУ (ОЗУ) обеспечивает режим записи, хранения и считывания информации в процессе её обработки. Быстрые, но дорогие ОЗУ (SRAM) строят на триггерах, более медленные, но дешёвые разновидности ОЗУ — динамические ЗУ (DRAM) строят на конденсаторах. В обоих видах ЗУ информация исчезает после отключения от источника тока.

По типу доступа ЗУ делятся на:

  • Устройства с последовательным доступом (например, магнитные ленты).
  • Устройства с произвольным доступом (RAM) (например, оперативная память).
  • Устройства с прямым доступом (например, жесткие магнитные диски).
  • Устройства с ассоциативным доступом (специальные устройства, для повышения производительности БД)

По геометрическому исполнению :

  • дисковые (магнитные диски, оптические, магнитооптические);
  • ленточные (магнитные ленты, перфоленты);
  • барабанные (магнитные барабаны);
  • карточные (магнитные карты, перфокарты, флэш-карты, и др.)
  • печатные платы (карты DRAM, картриджи).

По физическому принципу :

  • перфорационные (с отверстиями или вырезами)
    • перфокарта
    • перфолента
  • с магнитной записью
    • ферритовые сердечники
    • магнитные диски
      • Жёсткий магнитный диск
      • Гибкий магнитный диск
    • магнитные ленты
    • магнитные карты
  • оптические
    • CD
    • DVD
    • HD-DVD
    • Blu-ray Disc
  • магнитооптические:
    • CD-MO
  • использующие накопление электростатического заряда в диэлектриках (конденсаторные ЗУ, запоминающие электроннолучевые трубки);
  • использующие эффекты в полупроводниках (EEPROM, флэш-память)
  • звуковые и ультразвуковые (линии задержки);
  • использующие сверхпроводимость (криогенные элементы);
  • другие.

По форме записанной информации выделяют аналоговые и цифровые запоминающие устройства.

Цифровые запоминающие устройства — устройства, предназначенные для записи, хранения и считывания информации, представленной в цифровом коде.

К основным параметрам ЗУ относятся информационная ёмкость (бит), потребляемая мощность, время хранения информации, быстродействие.

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

  • Магнитные ЗУ в пластиковых картах
  • Флеш-память: USB-накопители, карты памяти в телефонах и фотоаппаратах, SSD
  • Оптические диски: CD, DVD, Blu-Ray и др.
  • Жёсткие диски (НЖМД)
  • Микросхемы SDRAM (DDR и XDR)

Некоторые типы запоминающих устройств оформлены как компактные, носимые человеком устройства, приспособленные для переноса информации. В частности:

  • Флеш-память
  • Переносной жёсткий диск:
    • Mobile Rack
    • Контейнеры для жёстких дисков
    • ZIV

10. Адресная, стековая и ассоциативная память. Стековая память. Полупроводниковая память.

Память — совокупность отдельных устройств, которые запоминают, хранят, выдают информацию. Отдельные устройства памяти называют запоминающими устройствами. Производительность вычислительных систем в значительной мере определяется составом и характеристиками отдельных запоминающих устройств, которые различают по принципу действия, техническим характеристикам, назначениям. Основные операции с памятью — процедура записи, процедура чтения (выборки). Процедуры записи и чтения также называют обращением к памяти. За одно обращение к памяти «обрабатывается» для различных устройств различные единицы данных (байт, слово, двойное слово, блок).

Основные технические характеристики памяти

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

Время обращения к устройству зависит от типа памяти.

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

  1. время от начала операции обращения до того момента, как данные станут доступны (время доступа);
  2. считывание;
  3. регенерация.

Основные технические характеристики процедуры записи:

  • время доступа;
  • время подготовки (приведение в исходное состояние поверхности магнитного диска при записи);
  • запись.

Максимальная длительность чтения-записи называется временем обращения к памяти.

По физическим основам все запоминающие устройства разделяются: полупроводниковые, магнитно-оптические и т.д.

Организация полупроводниковой памяти

С точки зрения функционального построения, любое запоминающее устройство такого типа представляет собой некоторый массив элементов памяти. Структурные элементы памяти образуют ячейки памяти. Ширина ячеек — ширина выборки из памяти. Структура модуля памяти определяется способом организации памяти (способ адресации).

Существует 3 разновидности организации памяти:

  1. адресная память
  2. память со стековой организацией
  3. ассоциативная память

Random Access Memory — запоминающие устройства с произвольной выборкой

В адресной памяти, размещение и поиск информации в массиве запоминания, базируется на основе номера (адреса). Массив запоминания элементов содержит N n-разрядных слов, которые пронумерованы (0. N-1). Электронное обрамление включает в себя регистры для хранения адреса памяти, регистр информации (само слово), схемы адресной выборки (адресации), разрядные усилители для чтения и записи.

Цикл обращения таких устройств не зависит от того, в каком физическом месте ЗУ находятся требуемые данные. Такой способ доступа характерен для полупроводниковых ЗУ. Число записанных одновременно битов данных за одно обращение называют шириной выборки (доступа).

Основная память современных компьютеров реализуется на микросхемах статических и динамических RAM.

Статическая память

Память на основе микросхем, которые могут сохранять свое состояние лишь тех пор, пока к ним подключено питание, называется статической (Static RAM, SRAM). Может быть реализована на триггерах. Микросхемы статических SRAM имеют малое время доступа и не требуют циклов регенерации.

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

Динамическая память

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

Ячейка динамической памяти, состоим из конденсатора С и транзистора Т. Для записи информации в эту ячейку включается транзистор Т и на линию бита подается соответствующее напряжение. В результате на конденсаторе образуется определенный заряд.

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

Ко всем строкам всех микросхем DRAM основной памяти компьютера должны производиться периодические обращения в пределах определенного временного интервала порядка 10:60 наносекунд. Это требование кроме всего прочего означает, что система основной памяти компьютера оказывается иногда недоступной процессору, так как она вынуждена рассылать сигналы регенерации каждой микросхеме. Разработчики DRAM стараются поддерживать время, затрачиваемое на регенерацию, на уровне менее 5% общего времени. Обычно контроллеры памяти включают в свой состав аппаратуру для периодической регенерации DRAM.

В процессе развития DRAM с ростом их емкости основным вопросом стоимости таких микросхем был вопрос о количестве адресных линий и стоимости соответствующего корпуса. Было принято решение о необходимости мультиплексирования адресных линий, позволившее сократить наполовину количество контактов корпуса, необходимых для передачи адреса. Поэтому обращение к DRAM обычно происходит в два этапа: первый этап начинается с выдачи сигнала RAS — row-access strobe (строб адреса строки), который фиксирует в микросхеме поступивший адрес строки, второй этап включает переключение адреса для указания адреса столбца и подачу сигнала CAS — column-access stobe (строб адреса столбца), который фиксирует этот адрес и разрешает работу выходных буферов микросхемы. Названия этих сигналов связаны с внутренней организацией микросхемы, которая как правило представляет собой прямоугольную матрицу, к элементам которой можно адресоваться с помощью указания адреса строки и адреса столбца.

Емкость DRAM по грубым оценкам в 4 — 8 раз превышает емкость SRAM, но SRAM имеют в 8 — 16 раз меньшую длительность цикла и большую стоимость. По этим причинам в основной памяти практически любого компьютера используется полупроводниковые микросхемы DRAM (для построения кэш-памяти при этом применяются SRAM). Естественно были и исключения, например, в оперативной памяти суперкомпьютеров компании Cray Research использовались микросхемы SRAM.

Стековая память

Стековая память является безадресной. Все ячейки памяти организованы по принципу «первым вошел — последним вышел» (LIFO). Реализовано это таким образом, что для операций с памятью доступна только 0-я ячейка.

Каждая операция записи, инициируемая сигналом обращения к памяти, приводит к тому, что записанные данные помещаются в 0 ячейку памяти. При этом все ранние записи в памяти слова автоматически сдвигаются на 1 адрес ниже. Операция чтения, инициируемая сигналом обращения, приводит к тому, что на выходе памяти формируется значение слова, находящиеся в 0 ячейке памяти. При этом все имеющиеся слова сдвигаются на одно слово вверх. Счетчик стека нужен только для контроля заполнения и очищения стека. Техническая реализация стековой памяти оказывается сложнее адресной памяти. Стековая память используется достаточно широко. Чаще всего применяется не стековая память, а адресное поле, которое функционирует по принципу стека.

Ассоциативная память.

Исторически последняя. Является представителем многофункциональных запоминающих устройств (возможна обработка данных без процессора в памяти). Отличительная особенность — поиск любой информации в ЗМ производится не по адресу, а по ассоциативным признакам (признакам опроса). Поиск производится одновременно по всем ячейкам ЗМ.

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

Иерархия памяти

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

Иерархия памяти современных компьютеров строится на нескольких уровнях, причем более высокий уровень меньше по объему, быстрее и имеет большую стоимость в пересчете на байт, чем более низкий уровень. Уровни иерархии взаимосвязаны: все данные на одном уровне могут быть также найдены на более низком уровне, и все данные на этом более низком уровне могут быть найдены на следующем нижележащем уровне и так далее, пока мы не достигнем основания иерархии.

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

Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss). Попадание — есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне. Доля попаданий (hit rate) или коэффициент попаданий (hit ratio) есть доля обращений, найденных на более высоком уровне. Иногда она представляется процентами. Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне.

Поскольку повышение производительности является главной причиной появления иерархии памяти, частота попаданий и промахов является важной характеристикой. Время обращения при попадании (hit time) есть время обращения к более высокому уровню иерархии, которое включает в себя, в частности, и время, необходимое для определения того, является ли обращение попаданием или промахом. Потери на промах (miss penalty) есть время для замещения блока в более высоком уровне на блок из более низкого уровня плюс время для пересылки этого блока в требуемое устройство (обычно в процессор). Потери на промах далее включают в себя две компоненты: время доступа (access time) — время обращения к первому слову блока при промахе, и время пересылки (transfer time) — дополнительное время для пересылки оставшихся слов блока. Время доступа связано с задержкой памяти более низкого уровня, в то время как время пересылки связано с полосой пропускания канала между устройствами памяти двух смежных уровней.

Чтобы описать некоторый уровень иерархии памяти надо ответить на следующие четыре вопроса:

  1. Где может размещаться блок на верхнем уровне иерархии? (размещение блока).
  2. Как найти блок, когда он находится на верхнем уровне? (идентификация блока).
  3. Какой блок должен быть замещен в случае промаха? (замещение блоков).
  4. Что происходит во время записи? (стратегия записи).

Организация кэш-памяти

Сегодня кэш-память имеется практически в любом классе компьютеров, а в некоторых компьютерах — во множественном числе.

Принципы размещения блоков в кэш-памяти определяют три основных типа их организации:

  • Если каждый блок основной памяти имеет только одно фиксированное место, на котором он может появиться в кэш-памяти, то такая кэш-память называется кэшем с прямым отображением (direct mapped). Это наиболее простая организация кэш-памяти, при которой для отображение адресов блоков основной памяти на адреса кэш-памяти просто используются младшие разряды адреса блока.
  • Если некоторый блок основной памяти может располагаться на любом месте кэш-памяти, то кэш называется полностью ассоциативным (fully associative).
  • Если некоторый блок основной памяти может располагаться на ограниченном множестве мест в кэш-памяти, то кэш называется множественно-ассоциативным (set associative). Обычно множество представляет собой группу из двух или большего числа блоков в кэше.
  • Если множество состоит из n блоков, то такое размещение называется множественно-ассоциативным с n каналами (n-way set associative).

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

У каждого блока в кэш-памяти имеется адресный тег, указывающий, какой блок в основной памяти данный блок кэш-памяти представляет. Эти теги обычно одновременно сравниваются с выработанным процессором адресом блока памяти.

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

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

При обращениях к кэш-памяти на реальных программах преобладают обращения по чтению. Все обращения за командами являются обращениями по чтению и большинство команд не пишут в память. Обычно операции записи составляют менее 10% общего трафика памяти. Желание сделать общий случай более быстрым означает оптимизацию кэш-памяти для выполнения операций чтения, однако при реализации высокопроизводительной обработки данных нельзя пренебрегать и скоростью операций записи.

Общий случай является и более простым. Блок из кэш-памяти может быть прочитан в то же самое время, когда читается и сравнивается его тег. Таким образом, чтение блока начинается сразу как только становится доступным адрес блока. Если чтение происходит с попаданием, то блок немедленно направляется в процессор. Если же происходит промах, то от заранее считанного блока нет никакой пользы, правда нет и никакого вреда.

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

Очень часто организация кэш-памяти в разных машинах отличается именно стратегией выполнения записи. Когда выполняется запись в кэш-память имеются две базовые возможности:

  • сквозная запись (write through, store through) — информация записывается в два места: в блок кэш-памяти и в блок более низкого уровня памяти.
  • запись с обратным копированием (write back, copy back, store in) — информация записывается только в блок кэш-памяти. Модифицированный блок кэш-памяти записывается в основную память только когда он замещается. Для сокращения частоты копирования блоков при замещении обычно с каждым блоком кэш-памяти связывается так называемый бит модификации (dirty bit). Этот бит состояния показывает был ли модифицирован блок, находящийся в кэш-памяти. Если он не модифицировался, то обратное копирование отменяется, поскольку более низкий уровень содержит ту же самую информацию, что и кэш-память.

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

При промахе во время записи имеются две дополнительные возможности:

  • разместить запись в кэш-памяти (write allocate) (называется также выборкой при записи (fetch on write)). Блок загружается в кэш-память, вслед за чем выполняются действия аналогичные выполняющимся при выполнении записи с попаданием. Это похоже на промах при чтении.
  • не размещать запись в кэш-памяти (называется также записью в окружение (write around)). Блок модифицируется на более низком уровне и не загружается в кэш-память.

Обычно в кэш-памяти, реализующей запись с обратным копированием, используется размещение записи в кэш-памяти (в надежде, что последующая запись в этот блок будет перехвачена), а в кэш-памяти со сквозной записью размещение записи в кэш-памяти часто не используется (поскольку последующая запись в этот блок все равно пойдет в память).

Принципы организации основной памяти в современных ЭВМ

Основная память представляет собой уровень иерархии памяти. Основная память удовлетворяет запросы кэш-памяти и служит в качестве интерфейса ввода/вывода, поскольку является местом назначения для ввода и источником для вывода. Для оценки производительности основной памяти используются два основных параметра: задержка и полоса пропускания.

Задержка памяти традиционно оценивается двумя параметрами: временем доступа (access time) и длительностью цикла памяти (cycle time). Время доступа представляет собой промежуток времени между выдачей запроса на чтение и моментом поступления запрошенного слова из памяти. Длительность цикла памяти определяется минимальным временем между двумя последовательными обращениями к памяти.

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

Основными методами увеличения полосы пропускания памяти являются:

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

Виртуальная память и организация защиты памяти

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

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

Другой вопрос, тесно связанный с реализацией концепции виртуальной памяти, касается организации вычислений на компьютере задач очень большого объема. Если программа становилась слишком большой для физической памяти, часть ее необходимо было хранить во внешней памяти (на диске) и задача приспособить ее для решения на компьютере ложилась на программиста. Программисты делили программы на части и затем определяли те из них, которые можно было бы выполнять независимо, организуя оверлейные структуры, которые загружались в основную память и выгружались из нее под управлением программы пользователя. Программист должен был следить за тем, чтобы программа не обращалась вне отведенного ей пространства физической памяти. Виртуальная память освободила программистов от этого бремени. Она автоматически управляет двумя уровнями иерархии памяти: основной памятью и внешней (дисковой) памятью.

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

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

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

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

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

Для увеличения эффективности такого типа схем в процессорах используется специальная полностью ассоциативная кэш-память, которая также называется буфером преобразования адресов (TLB translation-lookaside buffer). Хотя наличие TLB не меняет принципа построения схемы страничной организации, с точки зрения защиты памяти, необходимо предусмотреть возможность очистки его при переключении с одной программы на другую.

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

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

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

Сегментация памяти

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

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

Для реализации сегментации было предложено несколько схем, которые отличаются деталями реализации, но основаны на одних и тех же принципах.

В системах с сегментацией памяти каждое слово в адресном пространстве пользователя определяется виртуальным адресом, состоящим из двух частей: старшие разряды адреса рассматриваются как номер сегмента, а младшие — как номер слова внутри сегмента. Наряду с сегментацией может также использоваться страничная организация памяти. В этом случае виртуальный адрес слова состоит из трех частей: старшие разряды адреса определяют номер сегмента, средние — номер страницы внутри сегмента, а младшие — номер слова внутри страницы.

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

Таблицы сегментов различных пользователей операционная система хранит в основной памяти. Для определения расположения таблицы сегментов выполняющейся программы используется специальный регистр защиты, который загружается операционной системой перед началом ее выполнения. Этот регистр содержит дескриптор таблицы сегментов (базу и границу), причем база содержит адрес начала таблицы сегментов выполняющейся программы, а граница — длину этой таблицы сегментов. Разряды номера сегмента виртуального адреса используются в качестве индекса для поиска в таблице сегментов. Таким образом, наличие базово-граничных пар в дескрипторе таблицы сегментов и элементах таблицы сегментов предотвращает возможность обращения программы пользователя к таблицам сегментов и страниц, с которыми она не связана. Наличие в элементах таблицы сегментов индикаторов режима доступа позволяет осуществить необходимый режим доступа к сегменту со стороны данной программы. Для повышения эффективности схемы используется ассоциативная кэш-память.

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

11. Динамические ОЗУ (Dynamic RAM) )

Экономичный вид памяти. Для хранения разряда (бита или трита) используется схема, состоящая из одного конденсатора и одного транзистора (в некоторых вариациях конденсаторов два). Такой вид памяти решает, во-первых, проблему дороговизны (один конденсатор и один транзистор дешевле нескольких транзисторов) и во-вторых, компактности (там, где в SRAM размещается один триггер, то есть один бит, можно уместить восемь конденсаторов и транзисторов). Есть и свои минусы. Во-первых, память на основе конденсаторов работает медленнее, поскольку если в SRAM изменение напряжения на входе триггера сразу же приводит к изменению его состояния, то для того чтобы установить в единицу один разряд (один бит) памяти на основе конденсатора, этот конденсатор нужно зарядить, а для того чтобы разряд установить в ноль, соответственно, разрядить. А это гораздо более длительные операции (в 10 и более раз), чем переключение триггера, даже если конденсатор имеет весьма небольшие размеры. Второй существенный минус — конденсаторы склонны к «стеканию» заряда; проще говоря, со временем конденсаторы разряжаются. Причём разряжаются они тем быстрее, чем меньше их ёмкость. За то, что разряды в ней хранятся не статически, а «стекают» динамически во времени память на конденсаторах получила своё название динамическая память. В связи с этим обстоятельством, дабы не потерять содержимое памяти, заряд конденсаторов для восстановления необходимо «регенерировать» через определённый интервал времени. Регенерация выполняется центральным микропроцессором или контроллером памяти, за определённое количество тактов считывания при адресации по строкам. Так как для регенерации памяти периодически приостанавливаются все операции с памятью, это значительно снижает производительность данного вида ОЗУ.

12. Массочные ПЗУ. Программируемые ПЗУ. Перепрограмируемые ПЗУ.

К масочным относятся ПЗУ, информация в ко­торые записывается непосредственно в процессе их изготовления. Само название данного подкласса устройств связано с техноло­гическим процессом их изготовления. Известно, что нанесение «рисунка» структуры на исходный полупроводниковый материал выполняется при помощи нескольких последовательных циклов фотолитографии (проецирование рисунка через фотошаблон на­зываемый маской) При этом отдельные элементы формируемых полупроводниковых приборов выполняются с использованием раз­личных масок, например, коллекторные и эмиттерные переходы би­полярных или выводы стока и истока полевых транзисторов.

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

Как следует из описания, масочные ПЗУ имеют простую и ре­гулярную структуру, что предполагает выполнение ИС, способных хранить большие объемы информации.

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

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

13.Внешние запоминающие устройства МП систем. Гибкие магнитные диски. Жесткие диски. Оптические носители информации. Магнитооптические диски. (см. 9 и 10)

14.Переферийные устройства МПС.

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

1. Периферийное устройство сигнализирует ЦП о том, что имеются новые данные. Устройство ввода-вывода должно соответствующим образом сформировать сигнал и держать его до тех пор. пока ЦП его не примет;

2. Периферийное устройство посылает данные в ЦП. Устройство ввода-вывода должно хранить их до тех пор, пока ЦП не будет готов их считать;

3. Центральный процессор считывает данные. Устройство ввода-вывода должно иметь блок дешифрирования, который выбирает определенную часть УВВ (или порт ). Считывание данных должно снять сигнал, свидетельствующий о том, что данные имеются; результатом этого может быть также подтверждение, посланное периферийному устройству, о том что оно может посылать новые данные.

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

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

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

Устройство ввода-вывода может выполнить эти задачи аппаратными средствами быстрее, чем ЦП может выполнить их программными методами. Устройство ввода-вывода ЭВМ может быть программируемым и даже содержать процессор для реализации его некоторых задач.

Адресная шина передает адрес порта ввода или вывода, который нужен для использования ЦП. Сигнал ввода-вывода определяет направление передачи. По шине данных осуществляется передача информации между устройствами. Шина управления передает сигналы, указывающие, что данные готовы и что передача завершена. Что касается шин между ЦП и ЗУ, то некоторые из них могут быть одними и теми же, но разделенными во времени для выполнения различных операций.

Более того, шины могут соединять ЦП как с памятью, так и с УВВ. Одна линия управления может определять назначение блоков. Действительно, некоторые ЭВМ (например, Motorola 6800) полностью совмещают по адресному полю память и УВВ; они обращаются к устройствам ввода или вывода так же, как к ячейкам памяти.

Современные ЭВМ имеют прямую связь межу памятью и УВВ, что позволяет осуществлять передачу данных к периферийным устройствам и обратно без участия ЦП. Этот метод передачи данных называется прямым доступом к памяти (ПДП). Преимуществом ПДП является то, что скорость передачи обеспечивается только временем доступа к памяти (обычно менее 1 мкс). Для передачи данных через ЦП требуется несколько команд, и на это уходит в 10-20 раз больше времени. Прямой доступ к памяти применяется с быстродействующими периферийными устройствами, такими как магнитные диски, быстродействующие линии связи или дисплеи.

15. Понятие архитектуры и основные элементы

Основные понятия и характеристики архитектуры микропроцессоров

Микропроцессор (МП) — это программно управляемое устройство, которое предназначено для обработки цифровой информации и управления процессом этой обработки и выполнено в виде одной или нескольких больших интегральных схем (БИС).

Понятие большая интегральная схема в настоящее время четко не определено. Ранее считалось, что к этому классу следует относить микросхемы, содержащие более 1000 элементов на кристалле. И действительно, в эти параметры укладывались первые микропроцессоры. Например, 4-разрядная процессорная секция микропроцессорного комплекта К584, выпускавшегося в конце 1970-х годов, содержала около 1500 элементов. Сейчас, когда микропроцессоры содержат десятки миллионов транзисторов и их количество непрерывно увеличивается, под БИС будем понимать функционально сложную интегральную схему.

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

Микропроцессор характеризуется большим количеством параметров и свойств, так как он является, с одной стороны, функционально сложным вычислительным устройством, а с другой — электронным прибором, изделием электронной промышленности. Как средство вычислительной техники он характеризуется прежде всего своей архитектурой , то есть совокупностью программно-аппаратных свойств, предоставляемых пользователю. Сюда относятся система команд, типы и форматы обрабатываемых данных, режимы адресации, количество и распределение регистров, принципы взаимодействия с оперативной памятью и внешними устройствами (характеристики системы прерываний, прямой доступ к памяти и т. д.). По своей архитектуре микропроцессоры разделяются на несколько типов (рис. 1.1).

Универсальные микропроцессоры предназначены для решения задач цифровой обработки различного типа информации от инженерных расчетов до работы с базами данных, не связанных жесткими ограничениями навремя выполнения задания. Этот класс микропроцессоров наиболее широко известен. К нему относятся такие известные микропроцессоры, как МП ряда Pentium фирмы Intel и МП семейства Athlon фирмы AMD.

Рис. 1.1. Классификация микропроцессоров

Характеристики универсальных микропроцессоров:

  • разрядность: определяется максимальной разрядностью целочисленных данных, обрабатываемых за 1 такт, то есть фактически разрядностью арифметико-логического устройства (АЛУ);
  • виды и форматы обрабатываемых данных;
  • система команд, режимы адресации операндов;
  • емкость прямоадресуемой оперативной памяти: определяется разрядностью шины адреса;
  • частота внешней синхронизации. Для частоты синхронизации обычно указывается ее максимально возможное значение, при котором гарантируется работоспособность схемы. Для функционально сложных схем, к которым относятся и микропроцессоры, иногда указывают также минимально возможную частоту синхронизации. Уменьшение частоты ниже этого предела может привести к отказу схемы. В то же время в тех применениях МП, где не требуется высокое быстродействие, снижение частоты синхронизации — одно из направлений энергосбережения. В ряде современных микропроцессоров при уменьшении частоты он переходит в , при котором сохраняет свое состояние. Частота синхронизации в рамках одной архитектуры позволяет сравнить производительность микропроцессоров. Но разные архитектурные решения влияют на производительность гораздо больше, чем частота;
  • производительность: определяется с помощью специальных тестов, при этом совокупность тестов подбирается таким образом, чтобы они по возможности покрывали различные характеристики микроархитектуры процессоров, влияющие на производительность.

Универсальные микропроцессоры принято разделять на CISC — и RISC-микропроцессоры. CISC-микропроцессоры (Completed Instruction Set Computing — вычисления с полной системой команд) имеют в своем составе весь классический набор команд с широко развитыми режимами адресации операндов. Именно к этому классу относятся, например, микро процессоры типа Pentium. В то же время RISC-микропроцессоры (reduced instruction set computing — вычисления с сокращенной системой команд) используют, как следует из определения, уменьшенное количество команд и режимов адресации. Здесь прежде всего следует выделить такие микропроцессоры, как Alpha 21×64, Power PC. Количество команд в системе команд — наиболее очевидное, но на сегодняшний день не самое главное различие в этих направлениях развития универсальных микропроцессоров. Другие различия мы будем рассматривать по мере изучения особенностей их архитектуры.

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

В настоящее время две трети всех производимых микропроцессорных БИС в мире составляют МП этого класса, причем почти две трети из них имеет разрядность, не превышающую 16 бит. К классу однокристальных микроконтроллеров прежде всего относятся микропроцессоры серии MCS-51 фирмы Intel и аналогичные микропроцессоры других производителей, архитектура которых де-факто стала стандартом.

Отличительные особенности архитектуры однокристальных микроконтроллеров:

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

Основные характеристики микроконтроллеров (в качестве примера численные значения представлены для MK-51):

  1. Разрядность (8 бит).
  2. Емкость внутренней памяти команд и памяти данных, возможности и пределы их расширения:
    • внутренняя память команд — 4 Кбайт (в среднем команда имеет длину 2 байта, таким образом, во внутренней памяти может быть размещена программа длиной около 2000 команд); возможность наращивания за счет подключения внешней памяти до 64 Кбайт;
    • память данных на кристалле 128 байт (можно подключить внешнюю память общей емкостью до 64 Кбайт).
  3. Тактовая частота:
    • внешняя частота 12 МГц;
    • частота машинного цикла 1 МГц.
  4. Возможности взаимодействия с внешними устройствами: количество и назначение портов ввода-вывода, характеристики системы прерывания, программная поддержка взаимодействия с внешними устройствами.

Наличие и характеристики встроенных аналого-цифровых преобразователей (АЦП) и цифро-аналоговых преобразователей (ЦАП) для упрощения согласования с датчиками и исполнительными устройствами системы управления.

Секционированные микропроцессоры (другие названия: микропрограммируемые и разрядно-модульные) — это микропроцессоры, предназначенные для построения специализированных процессоров. Они представляют собой микропроцессорные секции относительно небольшой (от 2 до 16) разрядности с пользовательским доступом к микропрограммному уровню управления и средствами для объединения нескольких секций.

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

Одним из первых комплектов секционированных микропроцессоров были МП БИС семейства Intel 3000. В нашей стране они выпускались в составе серии К589 и 585. Процессорные элементы этой серии представляли собой двухразрядный микропроцессор. Наиболее распространенным комплектом секционированных микропроцессоров является Am2900, основу которого составляют 4-разрядные секции. В нашей стране аналог этого комплекта выпускался в составе серии К1804. В состав комплекта входили следующие БИС:

  • разрядное секционное АЛУ;
  • блок ускоренного переноса;
  • разрядное секционное АЛУ с аппаратной поддержкой умножения;
  • типа схем микропрограммного управления;
  • контроллер состояния и сдвига;
  • контроллер приоритетных прерываний.

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

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

16. МП – комплекты.

Микропроцессорные средства включают: МПК БИС, однокристальные и одноплатные микропроцессоры, микро-ЭВМ, микроконтроллеры, устройства ввода-вывода, хранения, отображения, коммутации информации и т. п. Основой построения МПС являются: МПК БИС, микросхемы запоминающих устройств и преобразования вида информации (АЦП, ЦАП).
Микропроцессорный комплект БИС представляет собой набор электрически совместимых цифровых БИС, достаточный для построения различных МПУ. Существующие МПК БИС можно разделить на две группы: с фиксированной системой команд и секционированные. Основное различие этих комплектов заключается в способе реализации устройства управления. В первом случае оно реализовано на комбинационных схемах и конструктивно объединено с арифметическим устройством в одной БИС. Это объединение представляет собой функционально законченный микропроцессор с фиксированной системой команд, ориентированной на широкий круг решаемых задач. Такие МПК обычно имеют стандартные отладочные средства и относительно развитое программное обеспечение, что обеспечивает их широкое применение.
Примером однокристального микропроцессора является центральный процессорный элемент КР580ИК.80. Особенности построения и реализации арифметического и управляющего устройств делают недоступным программисту микропрограммный уровень управления. Он оперирует командами, которые не может изменить. Вместе с тем проектирование конструктивно встраиваемых в РЭА МПУ предполагает их специализацию в соответствии с реализуемым алгоритмом. Кроме того, как .будет показано в гл. 2, одним из основных требований, предъявляемых к МПУ, является реальный масштаб времени вычислений решаемых алгоритмов. Необходимость специализации системы команд и структуры проектируемых МПУ ограничивает применение однокристальных микропроцессоров в РЭА.
Основной элементной базой конструктивно встраиваемых в РЭА МПУ являются секционированные МПК БИС, у которых в отличие от однокристальных микропроцессоров управляющее устройство реализовано на принципах микропрограммного управления. Такой подход обеспечивает доступ разработчика к уровню микрокоманд, что позволяет изменять команды и соответствующие им микропрограммы исходя из решаемых алгоритмов. Секционированные МПК имеют различные системы команд, разрядность, типы интерфейса ввода-вывода и т. п. Проектируемые на основе секционированных МПК МПУ обладают большой гибкостью, так как расширение функциональных возможностей обеспечивается изменением отдельных микрокоманд или заменой всей памяти микропрограмм.
Построение арифметического устройства требуемой разрядности осуществляется объединением 4-, 8- или 16-разрядных процессорных секций. Микропрограммное устройство управления выполняется на одной или нескольких БИС. Соединив между собой несколько БИС микропрограммного управления, можно увеличить объем микропрограммной памяти. Объединение арифметического и управляющего устройств позволяет получить базовую структуру микропроцессора. Подключение к ней специализированных БИС ввода-вывода, вспомогательных аппаратных микропроцессоров и других специализированных микросхем приводит к повышению производительности МПУ.
Использование секционируемых МПК обеспечивает гибкость проектирования как по аппаратным решениям, так и по реализации требуемой системы команд. Однако при этом предполагается, что разработчик знает возможности и особенности всех микросхем, входящих в состав МПК, принципы объединения их в уст-ройство, организацию синхронизации в устройстве; владеет методами разработки и отладки микропрограмм. Вместе с тем работа на микропрограммном уровне создает и определенные трудности. Микропрограммный уровень определяется конкретными схемными решениями, поэтому программирование на этом уровне требует от разработчика знаний аппаратных особенностей МПК, учета временных соотношений и т. п. Кроме того, разработка оригинальной .системы команд приведет к необходимости проектирования дополнительных аппаратных средств и программного обеспечения, предназначенного для отладки программ. Это обуславливает увеличение сроков [разработки и повышение стоимости МПУ, проектируемых «а основе секционируемых МПК БИС.
Микропроцессорные комплекты БИС отличаются своими характеристиками, основными из которых являются: число БИС в комплекте, число внутренних магистралей, разрядность, система микрокоманд, число регистров общего назначения, число уровней прерывания, быстродействие, число буферных регистров (портов) ввода-вывода (Явв, ЯВЫв) и др.
Число БИС в комплекте во многом определяет функциональные возможности МПК. Наличие в составе комплекта разнообразных специализированных БИС позволяет проектировать функционально законченные МПУ при минимальном использовании микросхем средней и малой степени интеграции. Если число специали-зированных БИС в МПК ограничено, то некоторые функциональные узлы приходится проектировать на (микросхемах малой и средней степени интеграция, что снижает плотность упаковки МПУ и ухудшает его конструктивные параметры. Кроме того, использование специализированных БИС для аппаратной реализации некоторых сложных (с вычислительной точки зрения) функций повышает производительность МПУ.
Как было показано в § 1.1, число внутренних магистралей микропроцессорных БИС колеблется от одной до трех. При выборе МПК необходимо учитывать, что уменьшение числа магистралей снижает процент использования площади кристалла под магистрали, а также быстродействие этих микросхем.
Большинство современных МПК имеют разрядность 4, 8 или 16 бит. Ограничение разрядности обусловлено размерами кристалла и технологическими допусками изготовления логических элементов. Биполярные секционированные МПК обычно имеют разрядность 4 и 8 бит. Разрядность МПК, выполненных по МОП-тех-нологии, достигает 16 бит.
Система микрокоманд (как и число БИС) определяет функциональные возможности МПК. Системы микрокоманд распространенных МПК БИС, их (форматы, разрядность, особенности реализации подробно рассмотрены в [6 — 12]. Отметим, что при выборе типа МПК необходимо, чтобы его система микрокоманд соот-ветствовала решаемому алгоритму. При этом особое значение приобретают микрокоманды, реализующие специальные функции, например умножение, деление, нормализацию чисел и т. п. Эти функции могут быть реализованы аппаратно на специализированных БИС, либо программно, например в МПК БИС КМ1804 [12]. Для ряда применений, не требующих высоких скоростей обработки информации, программная реализация специальных функций может оказаться предпочтительней, так как не требует дополнительных аппаратных затрат.
Число регистров общего назначения (РОН) определяет емкость внутренней сверхоперативной памяти МП и колеблется от 2 до 16. Увеличение числа РОН в МПК дает возможность хранить в них большее число исходных данных и промежуточных результатов вычислений. При этом в микропрограмме вычислений будут шире использоваться микрокоманды типа регистр-регистр, а следовательно, уменьшится число обращений к ЗУ. Быстродействие выполнения такой микропрограммы будет выше.
Прерывание представляет собой процедуру обмена данными с внешними устройствами. При этом инициатором обмена является внешнее устройство, которое посылает сигнал «Запрос на прерывание». Получив этот сигнал, МП приостанавливает выполнение основной программы и переходит к реализации специальной подпрограммы обмена, называемой подпрограммой обработки прерываний. Эта подпрограмма выключает ряд действий, описание которых можно найти в [10, 13]. Число уровней прерывания определяет число внешних устройств, способных обращаться к микропроцессору и обмениваться с ним информацией. Этот параметр имеет особое значение при использовании МПК для построения систем сбора и распределения данных, характеризующихся большим числом датчиков информации, имеющих различный приоритет.
Параметром, характеризующим быстродействие МПК, обычно является время цикла выполнения простейшей микрооперации. Поскольку микрокоманды состоят из последовательности микроопераций различной длины, то время цикла выполнения микроопераций дает очень относительное представление о реальном времени реализации микрокоманд. Один из методов определения времени выполнения микрокоманд приведен в Приложении. При совместном включении нескольких арифметических и управляющих устройств с различным быстродействием такт работы всего МПУ определяется длительностью такта устройства, обладающего меньшим быстродействием.
Число буферных регистров (портов) ввода-вывода является параметром, характеризующим структуру МПК БИС. Для секционированных МПК характерно использование многопортовых структур (обычно двух-трех). Увеличение числа портов ввода-вывода приводит к уменьшению длительности цикла выполнения микро-команды, упрощает построение МПУ, реализованных по «конвейерной» структуре. Остальные параметры МПК такие же, как и у Других цифровых микросхем. Это прежде всего уровни напряжений логических сигналов (U0 и U’), потребляемая мощность, устойчивость к изменениям напряжения питания, коэффициент объединения по входу, коэффициент разветвления по выходу (нагрузочная способность), помехоустойчивость и др.
Функциональная сложность МПК БИС определяется максимальными размерами полупроводниковых кристаллов, изготовление которых может обеспечить современный уровень развития технологии. Небольшие размеры кристаллов (до 50 мм2) требуют упрощения структур и ограничения разрядности БИС. Для опреде-ления содержимого внутренних регистров МП требуются специальные программы, обеспечивающие вывод содержимого регистров из МП. Большее число выводов БИС упрощает разработку МПУ. Однако корпуса, имеющие большее число выводов, занимают большую площадь на плате. Ограниченное число внешних вы-водов приводит к необходимости использования одних и тех же выводов для нескольких целей, например для ввода и вывода данных.
При построении МПУ необходимо обеспечить электрическое сопряжение между микросхемами МПК БИС. Условиями правильного сопряжения являются одинаковые представления логических О и 1 (U°, U1) и обеспечение допустимой нагрузки на каждый выход. При построении МПУ на одном или электрически совместимых МПК БИС первое условие выполняется и задача электрического сопряжения сводится к обеспечению допустимой нагрузки на каждый выход. Для МПК, выполненных по биполярной технологии, это условна может быть записано в виде неравенства [4]

I1 макс
Умножитель параллельный (8X8) КР1802ВРЗ 2206.42 — 2 tу=200 не; Рп = 3 Вт
Умножитель параллельный (12X12) КР1802ВР4 2136.64 — 1 tу=200 не; Рп=4 Вт Пвв=2; Пвыв=1
Умножитель параллельный (16X16) КР1802ВР5 2136.64 — 1 ty=200 не; Рп=5 Вт Пвв=2; ПвыВ=1
Сумматор на четыре входа К.Р1802ИМ1 2207.48 — 1 tс = 150 не Пвв=4; Пвыв=1
4-разрядная процессорная секция КМ1804ВС1 Серия КМ1804 2123.40 — 6 Uв=5 В±10%; Гц = 110 не.
Разрядность — кратная 4. Система команд по ОСТ 11.305.909 — 82 Аналог Ат2901
Схема формирования ускоренного переноса КМ1804ВР1 201.16 — 16
Аналог Ат2902
Схема управления последовательностью мк КМ1804ВУ1, КМ1804ВУ2 2121.28 — 1 2121.28 — 1
Аналоги: Ат2909 Ат2911
Схема выбора адреса следующей мк КМ1804ВУЗ 201.16 — 16 16 инструкций Ат2918
Параллельный 4-разрядный регистр КМ1804ИР1 201.16 — 16 Гц=20 не; Рп=0,65 Вт Ат2918
4-разрядная процессорная секция КМ1804ВС2 2123.40 — 6 Число РОН 16 Ат2903
Схема управления состоянием и сдвигами КМ1804ВР2 2123.40 — 6 t3 — 60 не. Число шин 2 Ат2904
Схема управления микропрограммой КМ1804ВУ4 2123.40 — 6 Гц=95 не; Рп=1,7 Вт Ат2910

Микропроцессорный комплект БИС К1800 выполнен по ЭСЛ-функционально-технологическому принципу. Микросхемы отличаются повышенными быстродействием и потребляемой мощностью. Архитектура МПК К1800, как и предыдущих, обеспечивает наращивание разрядности, микропрограммное управление, конвейерную организацию вычислений. Отличительной особенностью ЭСЛ-комплекта является ограниченный функциональный состав БИС, что затрудняет построение законченных МПУ только на МПК К1800. Комплект БИС К1800 электрически совместим с цифровыми микросхемами серий К500, К1500. Наличие в составе комплекта двунаправленного транслятора К1800ВА4 позволяет использовать совместно с К1800 МПК БИС ТТЛШ, например КР1802, КМ1804. При построении МПК К1800 использовался ряд схемо-технических и конструктивно-технологических особенностей построения быстродействующих микросхем, что позволило достигнуть степени интеграции до 1000 логических элементов (ЛЭ) на кристалле, снизить потребляемую мощность до 4 — 5 мВт на один ЛЭ и обеспечить время задержки 1 — 1,5 не на один ЛЭ [16].

1.3. Функциональная схема операционного устройства, построенного на МПК БИС К.Р1802

Микропроцессорный комплект БИС К588 выполнен по КМОП-функцианально-технологичесшму принципу. Важнейшей отличительной особенностью таких микросхем является низкая потребляемая мощность. В статическом режиме потребляемая мощность на один ЛЭ примерно в 100 раз меньше, чем у ТТЛ ЛЭ. В дина-мическом режиме (мощность, потребляемая КМОП-ехемами, увеличивается при повышении тактовой частоты. При тактовой частоте 1 — 2 МГц она всего в 5 — 10 раз меньше мощности, потребляемой ТТЛ-схемами. Комплект БИС К588 имеет несколько меньшее быстродействие, чем ТТЛШ МПК. Однако МПК К588 обеспечивает построение МПУ РЭА с ограниченным потреблением энергии.
Рассмотрим несколько примеров построения различных аппаратных средств на базе рассмотренных МПК БИС.
Пример 1.1. На рис. 1.3 приведена схема 16-разрядного операционного устройства МП [17]. Операционное устройство выполняет арифметические и логические операции над битами, полями битов, 16-разрядными словами; сдвиг 16-разрядных слов на один разряд вправо и влево. Управление работой операционного устройства осуществляется по шине микрокоманд (ШМК) и шине адреса (ШАД). Передача операндов осуществляется по шинам А и В, результат операции выдается на шину А.
Синхронизация считывания информации из регистров и записи результата в регистр выполняется синхроимпульсом (СИ), импульсами чтения (Чт), импульсами записи (Зп). Результат операции сопровождается выдачей признаков равенства нулю (ПН) результата, переполнения разрядной сетки (ПП) и расширения (ПР). Арифметическое устройство выполнено на двух БИС КР1802ВС1 (Dl, D2). Сверхоперативная память данных и результата выполнена на четырех БИС РОН КР1802ИР1 (D3 — D6). Емкость памяти 16X16.
Пример 1.2. Процессор микро-ЭВМ общего назначения. На рис. 1.4 приведена функциональная схема процессора с системой команд и интерфейсом микро-ЭВМ «Электроника-60» [18]. Процессор предназначен для применения в МПУ с жестко ограниченными энергетическими ресурсами и быстродействием до 400 тыс. коротких операций. При этом может быть использовано математическое обеспечение микро-ЭВМ «Электроника-60». Процессор выполнен на БИС МПК К588: К588ВС2 (D6), К588ВУ2 (D1 — D5), К588ВГ1 (D7). Каждая БИС управляющей памяти (D1 — D5) отличается информационным содержанием.

1.4. Функциональная схема микропроцессора, построенного на МПК БИС К588

Данные адреса и команды передаются по 16-разрядной совмещенной магистрали данных-адреса ДА0 — ДА15. Эта магистраль соединена с каналом К1 D6 и регистрами команд управляющей памяти (Dl — D5).
Четыре БИС (Dl — D4) формируют микрокоманды, управляющие работой ДУ (D6). 12-разрядные МК объединяются по схеме «проводное И» и подключаются к регистру микрокоманд АУ. Системный контроллер (СК) К588ВП управляется 5-разрядной МК, формируемой D5. Свободные разряды МК (МК5 — МКИ) вырабатывают сигналы разрешения прерывания по запросам ППРО — ППР4, ППРТ и сигнал «Останов». Поскольку длина микропрограмм, записанных в Dl — D5, различная, синхронизация приема кода команды осу-ществляется по сигналам «Конец команды», объединенным по схеме «Про» водное И».
Таблица 1.3
Новер линии Обозначение линий системной магистрали Назначение линий системной магистрали
1 — 5 СИА, Ввод, Вывод, СИП, Байт Линии сигналов синхронизации активного уст-ройства, ввода, вывода, синхронизации пассивного устройства и вывода байта
6 Останов Линия сигнала аппаратного останова
7 ПИТН Линия сигнала источника питания, сигнализи-рующая о нормальном уровне напряжения
питания
8 — 10 ТПДП, ППДП,
ппд Линии сигналов требования, представления и подтверждения захвата системной магистрали внешним устройством для ПДП
11, 12 Пуск 0, Пуск 1 Линии начального запуска процессора соединены с входами R0 и R1
13 — 17 ТПРО — ТПР4 Линии требования прерывания внешними уст-ройствами
18 ТПРТ Сброс Линия сигнала требования прерывания от таймера
19
Линия сигнала инициализации внешних устройств
20 — 24 ППРО — ППР4 Линии разрешения прерывания по запросам ТПРО — ТПР4
25, 26 ППРТ, Останов Линии разрешения прерывания по запросам ТПРТ и Останов
27, 28 а, С2 Линии управления магистральными приемо-передатчиками (активные уровни сигналов — низкие). При активном С1 направление передачи — от процессора, при активном С2- — к процессору. При пассивных уровнях — состояние «отключено»
29, 30 ТПР, ППР Линии сигналов требования и разрешения пре-рываний
31-46 ДАО — ДА 15 Двунаправленные линии передачи данных, адреса и команд

Внутри и внепроцессорный обмен информацией осуществляется по асинхронному принципу с помощью сигналов «Выдано» (В) и «Принято (Я). При этом сигналы «Принято» всех БИС объединены, а «Выдано» соединяются следующим образом: В1 СК и В АУ, В2 СК и В D1 — D3, ВЗ СК и В D4 и DS, При таком соединении сигналов синхронизации обеспечивается разделение во времени приема данных и команд и запрещение приема команды в D1 — DS при наличии разрешенного прерывания. Соединением выводов С и Ф1 АУ и СК с соответствующими выводами управляющей памяти обеспечивается синхронизация передачи-приема МК.
Код состояния АУ выдается в канал К2 и далее поступает в канал К2 D1 — D3. В регистр состояния (канал K2) D4 и DS поступают сигналы прерывания СК Лр1 — Пр4.
Сигналы R0 и Rl D1 — D5 предназначены для начального запуска процессора. При ошибочном обращении к магистрали СК вырабатывает сигнал Я, который переводит D1 — D5 в режим формирования микропрограммы прерывания, вызванной этим ошибочным обращением к магистрали.
Интерфейс системной магистрали процессора включает 46 линий (табл. 1.3), 30 из которых (1 — 10, 18, 19, 29-46) по назначению совпадает с соответствующими линиями интерфейса микро-ЭВМ «Электроника-60». Остальные линии (11 — 17, 20 — 28) являются дополнительными.
Система команд процессора включает все команды микро-ЭВМ «Электроника-60», а также команды расширенной арифметики с фиксированной точкой. Для повышения производительности процессора в микропрограммах применено совмещение во времени отдельных этапов выполнения команд: считывание последующей команды совмещено с выполнением текущей, считывание данных из памяти — с не зависящими от него операциями. Применяемый в процессоре МПК БИС К588 электрически совместим с микросхемами серий 564 (при напряжении питания 5 В) и микросхемами серии 530 (при подключении не более двух нагрузок). Для повышения нагрузочной способности выводов внешнего интерфейса БИС процессора их можно подключать к системной магистрали через приемопередатчик К588ВА1, обеспечивающий согласование с 20 ТТЛШ-нагрузками и работу на емкостную нагрузку до 300 пФ. Потребляемая процессором мощность в динамическом режиме около 100 мВт.
Развитие МПК ведется в направлениях, указанных в 1.1, а также путем [совершенствования технологии МОП-структур, что постепенно выдвигает КМОП БИС и СБИС в первые ряды не только по малой потребляемой мощности, но и по быстродействию

17.Регистры МП и способы их использования. Счетчик команд.

Регистр является устройством временного хранения данных и используется с целью облегчения арифметических, логических и пересылочных операций. Регистры МП 80386 являются расширением регистров прежних МП 8086, 80186, 80286. Все 16-разрядные регистры МП предыдущих поколений содержатся внутри 32-разрядной архитектуры. Микропроцессор 80386 включает шесть непосредственно доступных программисту регистров селекторов сегментов, которые содержат указатели сегментов. Значения этих селекторов могут быть загружены при исполнении программы и являются специфичными для задачи. Это значит, что регистры сегментов перезагружаются автоматически при переключении МП 80386 на другую задачу. За регистрами селекторов сегментов стоят реальные регистры кэш-памяти сегментов, которые содержат описания сегментов, указываемых селектором. Это сделано на аппаратном уровне для того, чтобы избежать дополнительной выборки из памяти в случае, когда требуется описание сегмента.

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

Восемь регистров общего назначения имеют длину в 32 бит и содержат адреса или данные. Они поддерживают операнды-данные длиной 1, 8, 16, 32 и 64 бит: битовые поля от 1 до 32 бит: операнды-адреса длиной 16 и 32 бит. Эти регистры называются ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ЕВР, ESP. Доступ к младшим 16 бит этих регистров выполняется независимо. Это делается в большинстве ассемблеров при использовании 16-разрядных имен регистров: АХ, ВХ, СХ, DX, Sl, Dl, BP,SP.

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

Регистр EFLAGS управляет вводом-выводом, маскируемыми прерываниями, отладкой, переключением задач и включением исполнения в режиме виртуального МП 8086 в защищенной многозадачной среде — все это в дополнение к флагам состояния, которые отражают результат исполнения команды. Младшие 16 бит его представляют собой 16-разрядный регистр флагов и состояния МП 80286, называемый FLAGS, который наиболее полезен при исполнении программ для МП 8086 и 80286.

Шесть 16-разрядных регистров содержат значения селекторов сегментов, которые указывают на текущие адресуемые сегменты памяти. Ниже перечислены эти регистры. Регистр сегмента программы (CS) — указывает на сегмент, который содержит текущую последовательность исполняемых команд. Процессор выбирает все команды из этого сегмента, используя содержимое счетчика команд как относительный адрес. Содержимое CS изменяется в результате выполнения внутрисегментных команд управления потоком, прерываний и исключений. Он не может быть загружен явным способом. Регистр сегмента стека (SS). Вызовы подпрограмм, записи параметров и активизация процедур обычно требуют области памяти, резервируемой под стек. Все операции со стеком используют регистр SS при обращении к стеку. В отличие от регистра CS регистр SS может быть загружен явно с помощью команды программы. Остальные четыре регистра являются регистрами сегментов данных (DS, ES, FS, GS), каждый из которых адресуется текущей исполняемой программой. Доступ к четырем раздельным областям данных имеет целью повысить эффективность программ, позволяя им обращаться к различным типам структур данных. Содержимое этих регистров может быть заменено под управлением программы.

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

Регистр таблицы глобальных дескрипторов (GDTR). Содержит 32-разрядный линейный адрес и 16-разрядную границу таблицы глобальных дескрипторов. Регистр таблицы локальных дескрипторов (LDTR). Содержит 16-разрядный селектор для таблицы локальных дескрипторов. Так как эта таблица является специфичным для задачи сегментом, то она определяется значением селектора, хранимым в регистрах системного сегмента. Регистр дескриптора сегмента, связанный с этой таблицей, программно недоступен. Регистр таблицы дескрипторов прерываний (IDTR). Указывает на таблицу точек входа в программы обработки прерываний. Регистр содержит 32-разрядный линейный базовый адрес и 16-разрядную границу таблицы дескрипторов прерываний (IDT). Регистр задачи (TR). Указывает на информацию, необходимую процессору для определения текущей задачи. Регистр TR содержит 16-разрядный селектор дескриптора сегмента состояния задачи. Поскольку этот сегмент специфичен для задачи, то он определяется значениями селекторов, хранящихся в регистрах системного сегмента.

Расширенный указатель команд (EIP) является 32-разрядным регистром. Он содержит относительный адрес следующей команды, подлежащей выполнению. Относительный адрес отсчитывается от начала сегмента текущей программы. Указатель команд непосредственно не доступен программисту, но он управляется явно командами управления потоком, прерываниями и исключениями. Младшие 16 бит регистра EIP называются IP и могут быть использованы процессором независимо. Это свойство полезно при исполнении команд МП 8086 и 80286, которые имеют только регистр IP.

Микропроцессор 80386 имеет три 32-разрядных регистра управления (CRO, CR2 и CR3, a CR1 зарезервированы фирмой Intel), в которых хранятся состояния машины или глобальные состояния. Глобальное состояние — это такое состояние, к которому может получить доступ любой из логических блоков системы или которое управляет этими блоками. Вместе с регистрами системных адресов эти регистры хранят информацию о состоянии машины, которая влияет на все задачи в системе. Для доступа к регистрам управления определены команды их загрузки и сохранности содержимого. Системным программистам регистры управления доступны только через варианты команды MOV, которые позволяют их загружать или сохранять в регистрах общего назначения.

Шесть доступных программисту регистров отладки (DRO-DR3, DR6 и DR7) расширяют возможности отладки в МП 80386, они устанавливают точки останова по данным и позволяют устанавливать точки останова по командам без модификации сегментов программ. Регистры DRO-DR3 предназначены для четырех линейных точек останова. Регистры DR4 и DR5 зарезервированы фирмой Intel для будущих разработок. Регистр DR6 показывает текущее состояние точек останова, а регистр DR7 используется

Счетчик команд — регистр процессора, содержащий адрес текущей выполняемой команды. В зависимости от архитектуры содержит либо адрес инструкции, которая будет выполняться, либо той, которая выполняется в данный момент .

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

19.Система команд. Классификация команд

Материал из Википедии — свободной энциклопедии

Текущая версия (не проверялась)

Перейти к: навигация, поиск

Система команд — соглашение о предоставляемых архитектурой средствах программирования, а именно: определённых типах данных, инструкций, системы регистров, методов адресации, моделей памяти, способов обработки прерываний и исключений, методов ввода и вывода.

Система команд представляется спецификацией соответствия (микро)команд наборам кодов (микро)операций, выполняемых при вызове команды, определяемых (микро)архитектурой системы. (При этом, на системах с различной (микро)архитектурой может быть реализована одна и та же система команд. Например, Intel Pentium и AMD Athlon имеют почти идентичные версии системы команд x86, но имеют радикально различный внутренний дизайн.)

Базовыми командами являются, как правило, следующие:

  • арифметические, например «сложения» и «вычитания»;
  • битовые, например «логическое и», «логическое или» и «логическое не»;
  • присваивание данных, например «переместить», «загрузить», «выгрузить»;
  • ввода-вывода, для обмена данными с внешними устройствами;
  • управляющие инструкции, например «переход», «условный переход», «вызов подпрограммы», «возврат из подпрограммы».

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

  • Если объединить наиболее часто используемую последовательность микроопераций под одной микрокомандой, то надо будет обеспечивать меньше микрокоманд. Такое построение системы команд носит название CISC (Complex Instruction Set Computer), в распоряжении имеется небольшое число составных команд.
  • С другой стороны, это объединение уменьшает гибкость системы команд. Вариант с наибольшей гибкостью — наличие множества близких к элементарным операциям команд. Это RISC (Reduced Instruction Set Computer), в распоряжении имеются усечённые, простые команды.
  • Еще большую гибкость системы команд можно получить используя MISC подход, построенный на уменьшении количества команд до минимального и упрощении вычислительного устройства обработки этих команд.

19. Структура и форматы команд.

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

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

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

Например, команда, состоящая из двух полей, имеет вид:

Поле КО в виде двоичного кода задает тип операции (например, сложение) и тип данных, например, сложение целых чисел или сложение чисел с плавающей запятой. Различные операции, с различными типами данных имеют различный код КО. В адресной части команды, в полях А указываются адреса операндов. k и m — количество разрядов, отводимых под код операции КО и под адресную часть А, соответственно. Значение определяется количеством всех команд в системе команд. Значение зависит от способов адресации, количества операндов, разрядности и количества РОН, предполагаемого объема памяти.

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

Схема выполнения трехадресной команды: [А3]:=[А1]*[А2]. Содержимое ячейки с адресом А1 — [А1] (первый операнд) и содержимое ячейки с адресом А2 — [А2] (второй операнд), извлеченные из памяти, вступают в операцию *, заданную полем КО, и результат операции пересылается (записывается) в ячейку памяти с адресом А3. В общем случае, в зависимости от количества адресных полей, принято различать команды: безадресные, одноадресные, двухадресные, трехадресные.

Кроме того, в процессорах применяют команды различных форматов в зависимости от уровней памяти, т.е. в зависимости от того, адрес какого типа указан в адресной части команды — адрес типа R, в котором указывается номер РОН, или адрес типа А – номер ячейки ОП. Отсюда различные типы форматов: RR – команды типа регистр-регистр, RM – команды типа регистр-память, MM — команды типа память-память.

Примеры двухадресных команд типов RR (1), RM (2), MM (3) :

Надо отметить, что количество разрядов k для адресации РОН, меньше количества разрядов m для адресации ячейки памяти А, т.к. количесво РОН значительно меньше количества ячеек памяти.

Все возможные преобразования, дискретной информации могут быть сведены к четырем основным видам:

— передача информации в пространстве (из одного блока ЭВМ в дру­гой);

— передача информации во времени (хранение);

— логические (поразрядные) операции;

ЭВМ, являющаяся универсальным преобразователем дискретной ин­формации, выполняет указанные виды преобразований.

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

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

По характеру выполняемых операций различают следующие основные группы команд:

а) команды арифметических операций над числами с фиксированной и плавающей точками;

б) команды десятичной арифметики;

в) команды логических операций;

г) команды передачи кодов;

д) команды операций ввода-вывода;

е) команды передачи управления;

ж) команды задания режима работы машины и др.

В команде, как правило, содержатся не сами операнды, а информация об адресах ячеек памяти или регистрах, в которых они находятся.

Команда в общем случае состоит из операционной и адресной частей (рис.2.2,а).

В свою очередь, эти части, что особенно характерно для адресной части, могут состоять из нескольких полей.

Структуры команд: а) обобщенная; б) четырех-; в) трех-;

г) двух -; д) одно -; е) безадресная

Операционная часть содержит код операции (КОП), который задает вид операции (сложение, умножение и др.). Адресная часть содержит информа­цию об адресах операндов и результате операции, а в некоторых случаях -информацию об адресе следующей команды.

Структура команды определяется составом, назначением и расположе­нием полей в команде.

Форматом команды называют ее структуру с разметкой номеров раз­рядов (бит), определяющих границы отдельных полей команды, или с указа­нием числа бит в определенных полях.

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

Действительно, число двоичных разрядов, отводимых под код операции, должно быть таким, чтобы можно было представить все выполняемые ма­шинные операции. Если ЭВМ выполняет М различных операций, то число разрядов в коде операции

nком > log 2 M, например, при М=200, пкоп = 8.

Если основная память содержит S адресуемых ячеек (байт), то для явно­го представления только одного адреса необходимо в команде иметь адрес­ное поле для одного операнда с числом разрядов

nA > log2S, например, при S = 64 Мб, nA = 26.

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

Отмечавшиеся ранее характерные для процесса развития ЭВМ расшире­ние системы (наборы) команд и увеличение емкости основной памяти, а осо­бенно создание микроЭВМ с коротким словом, потребовали разработки ме­тодов сокращения длины команды. При решении этой проблемы существен­но видоизменилась структура команды, получили развитие различные спосо­бы адресации информации.

Проследим изменения классических структур команд.

Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это показано на рис. 2.2,6, содержать следующую информацию:

А1 , А2; — адреса операндов, А3 — адрес результата, А4 _ адрес следующей команды (принудительная адресация команд).

Такая структура приводит к большей длине команды (например, при S = 200, S = 32 Мб длина команды — 108 бит) и неприемлема для прямой ад­ресации операндов основной памяти. В компьютерах с RISC-архитектурой четырехадресные команды используются для адресации операндов, храня­щихся в регистровой памяти процессора.

Можно установить, как это принято для большинства машин, что после выполнения данной команды, расположенной по адресу К (и занимающей L ячеек), выполняется команда из (К+L)-й ячейки. Такой порядок выборки ко­манды называется естественным. Он нарушается только специальными ко­мандами (передачи управления). В таком случае отпадает необходимость указывать в команде в явном виде адрес следующей команды.

В трехадресной команде первый и второй адреса указывают ячейки памяти, в которых расположены операнды, а третий определяет ячей­ку, в которую помещается результат операции.

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

В одноадресной команде (подразумеваемые адреса имеют уже и результат операции и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называемого в этом случае регистром результата или аккумуля­тором (Akk). Результат операции записывается в тот же регистр:

Наконец, в некоторых случаях возможно использование безадресных команд (рис. 2.2,е), когда подразумеваются адреса обоих операндов и резуль­тата операции, например, при работе со стековой памятью.

С точки зрения программиста, наиболее естественны и удобны трехад­ресные команды. Однако из-за необходимости иметь большее число разрядов для представления адресов основной памяти и кода операции длина трехад­ресной команды становится недопустимо большой, и ее не удается размес­тить в машинном слове. Следует отметить, что очень часто в качестве опе­рандов используются результаты предыдущих операций, хранимые в регист­рах машины. По указанным причинам в современных ЭВМ применяют трех­адресные команды для адресации регистров.

Способ расширения кодов операции

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

Обычно в ЭВМ используется несколько структур и форматов команд разной длины.

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

20. Команды пересылки. Арифметические команды. Логические операции.

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

•пересылки данных общего назначения

•ввода-вывода в порт

•работы с адресами и указателями

•работы со стеком

Команды пересылки данных общего назначения

К этой группе относятся следующие команды:

mov — это основная команда пересылки данных . Она реализует самые разнообразные варианты пересылки.

Отметим особенности применения этой команды:

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

К примеру, рассмотрим фрагмент программы для пересылки байта из ячейки fls в ячейку fld:

. нельзя загрузить в сегментный регистр значение непосредственно из памяти. Поэтому для выполнения такой загрузки нужно использовать промежуточный объект. Это может быть регистр общего назначения или стек. В начале сегмента кода две команды mov, выполняющие настройку сегментного регистра ds. При этом из-за невозможности загрузить впрямую в сегментный регистр значение адреса сегмента, содержащееся в предопределенной переменной @data, приходится использовать регистр общего назначения ax;

. нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. Это объясняется тем, что в системе команд нет соответствующего кода операции. Но необходимость в таком действии часто возникает. Выполнить такую пересылку можно, используя в качестве промежуточных все те же регистры общего назначения. Вот пример инициализации регистра es значением из регистра ds:

Но есть и другой, более красивый способ выполнения данной операции — использование стека и команд push и pop:

push ds ;поместить значение регистра ds в стек

pop es ;записать в es число из стека

. нельзя использовать сегментный регистр cs в качестве операнда назначения. Причина здесь простая. Дело в том, что в архитектуре микропроцессора пара cs:ip всегда содержит адрес команды, которая должна выполняться следующей. Изменение командой mov содержимого регистра cs фактически означало бы операцию перехода, а не пересылки, что недопустимо.

Схема команды: mov приемник,источник

Назначение: пересылка данных между регистрами или регистрами и памятью.

Алгоритм работы: копирование второго операнда в первый операнд.

Состояние флагов после выполнения команды: !! выполнение команды не влияет на флаги

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

•направление пересылки в команде mov всегда справа налево, то есть из второго операнда в первый;

•значение второго операнда не изменяется;

•оба операнда не могут быть из памяти (при необходимости можно использовать цепочечную команду movs);

•лишь один из операндов может быть сегментным регистром;

•желательно использовать в качестве одного из операндов регистр al/ax/eax, так как в этом случае TASM генерирует более быструю форму команды mov.

MOV (MOVe operand to/from system registers)

Пересылка операнда в системные регистры (или из них)

Схема команды: mov приемник,источник

Назначение: пересылка данных между регистрами или регистрами и памятью.

Алгоритм работы: копирование второго операнда в первый.

Состояние флагов после выполнения команды:

11 07 06 04 02 00

OF SF ZF AF PF CF

Команда mov применяется для обмена данными между системными регистрами. Это одна из немногих возможностей доступа к содержимому этих регистров. Данную команду можно использовать только на нулевом уровне привилегий либо в реальном режиме работы микропроцессора.

;переключение микропроцессора в защищенный

XCHG (eXCHanGe) Обмен

Для двунаправленной пересылки данных применяют команду xchg . Для этой операции можно, конечно, применить последовательность из нескольких команд mov, но из-за того, что операция обмена используется довольно часто, разработчики системы команд микропроцессора посчитали нужным ввести отдельную команду обмена xchg.

Схема команды: xchg операнд_1,операнд_2

Назначение: обмен двух значений между регистрами или между регистрами и памятью.

Алгоритм работы: обмен содержимого операнд_1 и операнд_2.

Состояние флагов после выполнения команды: выполнение команды не влияет на флаги

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

!! операнды должны иметь один тип.

!! Не допускается (как и для всех команд ассемблера) обменивать между собой содержимое двух ячеек памяти.

xchg ax,bx ;обменять содержимое регистров ax и bx

xchg ax,word ptr [si] ;обменять содержимое регистра ax

;и слова в памяти по адресу в [si]

;поменять порядок следования байт в слове

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

В АЛУ производятся действия над целыми числами без знака. В двухоперандных операциях: сложение (ADD), сложение с переносом (ADDC) и вычитание с заемом (SUBB) аккумулятор является первым операндом и принимает результат операции. Вторым операндом может быть рабочий регистр выбранного банка рабочих регистров, регистр внутренней памяти данных с косвенно-регистровой и прямой адресацией или байт непосредственных данных. Указанные операции влияют на флаги: пеполнения, переноса, промежуточного переноса и флаг четности в слове состояния процессора (PSW).

Использование разряда переноса позволяет многократно повысить точность при операциях сложения (ADDC) и вычитания (SUBB).

Выполнение операций сложения и вычитания с учетом знака может быть осуществлено с помощью программного управления флагом переполнения (OV) регистра PSW. Флаг промежуточного переноса (АС) обеспечивает выполнение арифметических операций в двоично-десятичном коде.

Операции инкременирования и декременирования на флаги не влияют.

Операции сравнения не влияют ни на операнд назначения, ни на операнд источника, но они влияют на флаги переноса.

Существуют три арифметические операции, которые выполняются только на аккумуляторе: две команды проверки содержимого аккумулятора А (JZ, JNZ), и команда десятичной коррекции при сложении двоично-десятичных кодов.

При операции умножения содержимое аккумулятора А умножается на содержимое регистра В и результат размещается следующим образом: младший байт в регистре В, старший — в регистре А.

В случае выполнения операции деления целое от деления помещается в аккумулятор А, остаток от деления — в регистр В.

В эту группу входят такие команды, как: ADD (сложение), ADC (сложение с переносом), INC (ин­кремент), AAA (коррекция кода ASCII при сложе­нии), DAA (десятичная коррекция при сложении), SUB (вычитание), SBB (вычитание с заемом), DEC (декремент), NEG (отрицание), СМР (сравнение), AAS (коррекция кода ASCII при вычитании), DAS (десятичная коррекция при вычитании), MUL (умно­жение), IMUL (умножение целых чисел), ААМ (кор­рекция кода ASCII при умножении), DIV (деление), IDIV (деление целых чисел), AAD (коррекция кода ASCII при делении), CBW (перевод байта в слово), CWD (перевод слова в двойное слово).

К логическим операциям относятся операция логического И (&&) и операция логического ИЛИ (||). Операнды логических операций могут быть целого типа, плавающего типа или типа указателя, при этом в каждой операции могут участвовать операнды различных типов.

Операнды логических выражений вычисляются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, то второй операнд не вычисляется.

Логические операции не вызывают стандартных арифметических преобразований. Они оценивают каждый операнд с точки зрения его эквивалентности нулю. Результатом логической операции является 0 или 1, тип результата int.

Операция логического И (&&) вырабатывает значение 1, если оба операнда имеют нулевые значения. Если один из операндов равен 0, то результат также равен 0. Если значение первого операнда равно 0, то второй операнд не вычисляется.

Операция логического ИЛИ (||) выполняет над операндами операцию включающего ИЛИ. Она вырабатывает значение 0, если оба операнда имеют значение 0, если какой-либо из операндов имеет ненулевое значение, то результат операции равен 1. Если первый операнд имеет ненулевое значение, то второй операнд не вычисляется.

Отрицание (инверсия) , от латинского inversioпереворачиваю :

· соответствует частице НЕ, словосочетанию НЕВЕРНО, ЧТО;

Основы микропроцессорной техники. Микропроцессорная техника

Московский государственный инженерно-физический институт

Факультет Автоматики и электроники

ОСНОВЫ МИКРОПРОЦЕССОРНОЙ ТЕХНИКИ

1. Общая структура и принципы функционирования

2. Система команд микропроцессоров и способы адресации операндов

3. Реализация и организация памяти

4. Классификация микропроцессоров, основные варианты их архитектуры и структуры

Основы микропроцессорной техники

Микропроцессором называется программно-управляемое устройство для обработки цифровой информации и управления процессом обработки, реализованное в виде большой (БИС) или сверхбольшой (СБИС) интегральной микросхемы. Таким образом, микропроцессор выполняет роль процессора в цифровых системах различного назначения. Это могут быть системы обработки информации (компьютеры), системы управления объектами и процессами, информационно-измерительные системы и другие виды систем, используемых в промышленности, бытовой технике , аппаратуре связи и многих других областях применения.

4. Общая структура и принципы функционирования

Большинство микропроцессорных систем имеет магистрально-модульную структуру (рис.1.1), в которой отдельные устройства (модули), входящие в состав системы, обмениваются информацией по общей системной шине – магистрали.

Постоянное запоминающее устройство (ПЗУ) служит для хранения констант и стандартных (неизменяемых) программ. В ПЗУ обычно записываются программы начальной инициализации (загрузки) систем, тестовые и диагностические программы и другое служебное программное обеспечение , которое не меняется в процессе эксплуатации систем. В микропроцессорных системах, управляющих определенными объектами с использованием фиксированных или редко изменяемых программ, для их хранения также обычно используется ПЗУ (память ROM – Read-Only Memory) или репрограммируемое ПЗУ (память EPROM – Electrically Programmable Read-Only Memory или флеш-память).

Остальные устройства являются внешними и подключаются к системе с помощью интерфейсных устройств (ИУ), реализующих определенные протоколы параллельного или последовательного обмена. Внешними устройствами являются клавиатура, монитор, внешние запоминающие устройства (ВЗУ), использующие гибкие или жесткие магнитные диски, оптические диски (CD-ROM), магнитные ленты и другие виды носителей информации, датчики и преобразователи информации (аналого-цифровые или цифро-аналоговые), разнообразные исполнительные устройства (индикаторы, принтеры, электродвигатели, реле и другие). Для реализации различных режимов работы к системе могут подключаться дополнительные устройства – контроллеры прерываний, прямого доступа к памяти и другие, выполняющие необходимые специальные функции управления.

Данная структура соответствует архитектуре Фон-Неймана, предложенной этим ученым в 40-х годах для реализации первых моделей цифровых ЭВМ. Ниже будут рассмотрены и другие варианты процессорных архитектур.

Системная шина содержит несколько десятков (в сложных системах более 100) проводников, которые в соответствии с их функциональным назначением подразделяются на отдельные шины — адреса А, данных D и управления C. Шина A служит для передачи адреса, который формируется микропроцессором и позволяет выбрать необходимую ячейку памяти ОЗУ (ПЗУ) или требуемое ИУ при обращении к внешнему устройству. Шина D служит для выборки команд, поступающих из ОЗУ или ПЗУ в УУ микропроцессора, и для пересылки обрабатываемых данных (операндов) между микропроцессором и ОЗУ или ИУ (внешним устройством). По шине C передаются разнообразные управляющие сигналы, определяющие режимы работы памяти (запись или считывание), интерфейсных устройств (ввод или вывод информации) и микропроцессора (запуск, запросы внешних устройств на обслуживание, информация о текущем режиме работы и другие сигналы).

Разрядность шины данных D обычно соответствует разрядности операндов, обрабатываемых микропроцессором. Поэтому шина D содержит 8, 16 или 32 линии для передачи соответствующих разрядов данных и команд. В ряде последних моделей микропроцессоров используется шина D с расширенной разрядностью, чтобы обеспечить одновременную передачу нескольких команд или операндов. Например, 32-разрядные микропроцессоры Pentium имеют 64-разрядную шину данных.

Разрядность шины адреса A определяет максимальный объем адресуемой процессором внешней памяти. Например, 16-разрядная шина A обеспечивает адресацию памяти объемом до 64 Кбайт, а 32-разрядная шина – до 4 Гбайт. Процессоры Pentium II, Pentium III, Pentium 4 имеют 36-разрядную шину адреса, обеспечивающую обращение к памяти объемом до 64 Гбайт. Отметим, что в ряде микропроцессоров, например в Pentium, вместо младших разрядов адреса формируются сигналы выборки соответствующих байтов (сигналы байтной выборки BEi, где i – номер байта), которые позволяют организовать хранение байтов в отдельных банках памяти.

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

В некоторых системах для уменьшения числа необходимых линий связи и соответствующих выводов и контактов используется мультиплексирование линий адреса и данных. В таких системах для передачи адреса и данных используются одни и те же линии связи, на которые сначала выдается адрес, а затем поступают данные. Например, 16-разрядные микроконтроллеры семейства MCS-196, выпускаемые компанией Intel, имеют мультиплексированную 16-разрядную шину адреса-данных AD. Обмен информацией по мультиплексированной шине AD требует введения отдельного регистра для хранения адреса в процессе пересылки данных. При этом требуется также дополнительное время для реализации обмена, что несколько снижает производительность системы.

Разрядность шины управления С определяется организацией работы системы, возможностями реализации различных режимов ее функционирования, используемыми методами контроля микропроцессора и других устройств. Поэтому набор передаваемых по шине C управляющих сигналов является индивидуальным для каждой модели микропроцессора. Имеется ряд управляющих сигналов, которые используются в большинстве микропроцессорных систем. К ним относятся сигналы начального запуска (RESET), сигналы, задающие режим работы памяти (чтение – RD, запись — WR), сигналы, необходимые для реализации прерываний и ряд других. В простых системах для передачи управляющих сигналов может использоваться всего несколько линий, а в сложных системах число этих линий составляет несколько десятков.

В процессе функционирования микропроцессорной системы реализуются следующие основные режимы ее работы:

Выполнение основной программы;

Обслуживание прерываний и исключений;

Прямой доступ к памяти.

Рассмотрим основные принципы реализации этих режимов.

Выполнение основной программы.

В этом режиме процессор выбирает из ОЗУ очередную команду программы и выполняет соответствующую операцию. Команда представляет собой многоразрядное двоичное число (рис. 1.2), которое состоит из двух частей (полей) – кода операции КОП и кода адресации операндов КАД. Код операции КОП задает вид операции, выполняемой данной командой, а код адресации КАД определяет выбор операндов (способ адресации), над которыми производится заданная операция. В зависимости от типа микропроцессора команда может содержать различное число разрядов (байтов). Например, команды процессоров Pentium содержат от 1 до 15 байтов, а процессоры с RISC-архитектурой обычно используют фиксированный 4-байтный формат для любых команд.

Код операции (КОП)

Код адресации операндов (КАД)

Рис. 1.2. Формат типовой команды микропроцессора

Для хранения адреса очередной команды служит специальный регистр процессора – программный счетчик PC (Program Counter), содержимое которого автоматически увеличивается на 1 после выборки следующего байта команды. Таким образом, обеспечивается последовательная выборка команд в процессе выполнения программы. При выборке очередной команды содержимое PC поступает на шину адреса, обеспечивая считывание из ОЗУ следующей команды выполняемой программы. При реализации безусловных или условных переходов (ветвлений) или других изменений последовательности выполнения команд выполняется загрузка в PC нового содержимого, в результате чего производится переход к другой ветви программы или подпрограмме.

В процессорах Pentium и других моделях микропроцессоров компании Intel (8086, 80186, 80286, 386, 486), реализуется сегментная организация памяти. При этом адрес выбираемой команды определяется содержимым двух регистров – указателя команды EIP , указывающего положение команды в сегменте программ, и сегментного регистра CS , который задает начальный (базовый) адрес этого сегмента. Регистры EIP и CS выполняют в этих микропроцессорах функции программного счетчика PC :

(EIP) + (CS) = адрес очередной команды (PC).

Различные команды передачи управления реализуются путем изменения содержимого регистров EIP и CS .

Принятая из ОЗУ команда поступает в регистр команд, входящий в состав УУ процессора. Затем производится дешифрация команды, в процессе которой определяется вид выполняемой операции (расшифровка КОП) и формируется адрес необходимых операндов (расшифровка КАД). В соответствии с кодом поступившей команды УУ процессора генерирует последовательность микрокоманд , обеспечивающих выполнение заданной операции. Каждая микрокоманда выполняется в течении одного машинного такта — периода тактовых импульсов Tt , который задается тактовой частотой микропроцессора Ft = 1/Tt. Тактовые импульсы с частотой Ft формируются генератором тактовых импульсов (ГТИ), который входит в состав микропроцессора или реализуется в виде внешнего устройства, подключаемого к соответствующему входу микропроцессора. Величина Tt определяет время выполнения отдельных микрокоманд, последовательность которых обеспечивает получение необходимого результата операции (поступившей команды).

Для выполнения каждой поступившей команды требуется определенное количество командных циклов и тактов. Командным циклом называется промежуток времени, требуемый для выполнения обращения к ОЗУ или внешнему устройству с помощью системной шины. Обычно реализация такого цикла занимает от 2 до 4 системных тактов (периодов синхросигналов шины), которые требуются для установки требуемого адреса, выдачи сигналов, определяющих вид цикла – чтение или запись, получения сигнала готовности к обмену (от памяти или внешних устройств) и собственно передачи данных или команд. При современной технологии изготовления системных плат частота синхросигналов шины обычно составляет десятки Мгц (типичные значения 25, 33, 50, 66, 75, 100, 133 МГц).

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

Машинным (процессорным) тактом в микропроцессорных системах является длительность периода тактовых сигналов Tt, которая задается тактовой частотой микропроцессора Ft = 1/Tt. При выполнении операций, не требующих обращений к системной шине, эта частота определяет производительность микропроцессора. Для современных микропроцессоров частота Ft достигает 1 ГГц и более (последние модели микропроцессоров Pentium, AMD K7, Alpha и другие). Таким образом, обработка информации внутри процессора (без обращения к системной шине) производится значительно быстрее, чем обмен по шине. Если тактовая частота микропроцессора отличается от частоты обмена по системной шине, то вывод данных на шину реализуется с помощью промежуточной буферной памяти, в которой хранятся данные, посылаемые микропроцессором на системную шину. Данные выбираются из буферной памяти и поступают на системную шину с частотой, соответствующей скорости обмена по этой шине.

Текущее состояние процессора при выполнении программы определяется содержимым регистра состояния SR (State Register, в микропроцессорах Pentium данный регистр называется EFLAGS ). Этот регистр содержит биты управления , задающие режим работы процессора, и биты признаков (флаги) , указывающие характеристики результата выполненной операции:

N – признак знак (старший бит результата), N=0 при положительном результате, N=1 при отрицательном результате;

С – признак переноса , C=1, если при выполнении операции образовался перенос из старшего разряда результата;

V – признак переполнения , V=1, если при выполнении операций над числами со знаком произошло переполнение разрядной сетки процессора;

Z – признак нуля , Z=1, если результат операции равен нулю.

Некоторые микропроцессоры фиксируют также другие виды признаков: признак четности результата, признак переноса между тетрадами младшего байта. Специальные виды признаков устанавливаются по результатам операций над числами, представленными в формате с «плавающей точкой».

Обращение к подпрограмме реализуется при поступлении в микропроцессор специальной команды CALL (в некоторых процессорах эта команда имеет мнемоническое обозначение JSR – Jump-to-SubRoutine), которая указывает адрес первой команды вызываемой подпрограммы. Этот адрес загружается в PC , обеспечивая в следующем командном цикле выборку первой команды подпрограммы. Предварительно выполняется процедура сохранения в специальном регистре или ячейке памяти текущего содержимого PC , где хранится адрес следующей команды основной программы, чтобы обеспечить возвращение к ней после выполнения подпрограммы. Возврат к основной программе реализуется при поступлении команды RETURN (мнемоническое обозначение RET ), завершающей подпрограмму. По этой команде сохранявшееся содержимое PC снова загружается в программный счетчик, обеспечивая выполнение команды, которая в исходной программе следовала за командой CALL .

Особенность этой процедуры состоит в том, что большинство микропроцессоров обеспечивают возможности вложения подпрограмм, то-есть реализуют при выполнении подпрограммы вызов новой подпрограммы с последующим возвращением к предыдущей подпрограмме (рис.1.3). При вложении нескольких подпрограмм требуется сохранение нескольких промежуточных значений содержимого при возврате к предыдущим подпрограммам и к основной программе.

Рис.1.4. Варианты реализации стека: регистровый стек (а) и

стек, реализуемый в ОЗУ (б)

Регистровый стек (рис.1.4,а) реализуется с помощью реверсивных сдвиговых регистров. Каждая команда CALL вызывает ввод в стек очередного содержимого PC . По команде RETURN направление сдвига изменяется, и производится извлечение из стека последнего поступившего содержимого PC . Таким образом, обеспечивается выполнение вложенных подпрограмм. Возможное число вложенных подпрограмм определяется глубиной стека, то есть разрядностью используемых регистров сдвига. Если число вложений превышает глубину стека, первые из введенных в стек значений PC теряются, то есть возврат к основной программе не будет обеспечен. Поэтому при использовании регистрового стека необходим строгий контроль за числом вложений. Такая реализация стека применяется в системах, решающих задачи с ограниченным числом вложенных подпрограмм (обычно не более 10-20).

Значительно более широкие возможности вложения подпрограмм обеспечивает реализация стека в ОЗУ (рис.1.4,б). В этом случае часть ОЗУ выделяется для работы в качестве стека. Адресация к ячейкам стека производится с помощью специального регистра – указателя стека SP (Stack Pointer), который вводится в состав УУ процессора. Регистр SP содержит адрес верхней заполненной ячейки стека, в которой хранится значение PC , записанное при выполнении команды CALL . При поступлении новой команды CALL содержимое SP автоматически уменьшается на 1, адресуя следующую, еще незаполненную ячейку стека. Полученный адрес (SP-1) выдается на шину A, а на шину данных D поступает содержимое PC , которое должно сохраняться в стеке. Таким образом, производится последовательное заполнение ячеек стека «снизу-вверх», при этом SP всегда адресует вершину стека. По команде RETURN текущее содержимое SP выдается на шину A, и по шине D производится считывание с вершины стека последнего записанного значения PC . После этого содержимое SP увеличивается на 1, адресуя предыдущее значение PC , хранящееся в стеке. Так как ОЗУ обычно имеет значительный объем, то для размещения стека можно выделить достаточно большое количество ячеек памяти, обеспечивая необходимый уровень вложения подпрограмм.

Обслуживание прерываний и исключений

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

Прерываниями (interuption) являются ситуации, возникающие при поступлении соответствующих команд (программные прерывания) или сигналов от внешних устройств (аппаратные прерывания). Исключениями (exeption) являются нештатные ситуации (ошибки), возникающие при работе процессора. При выявлении таких ошибок соответствующие блоки, контролирующие работу процессора, вырабатывают внутренние сигналы запроса, обеспечивающие вызов необходимой подпрограммы обслуживания. Классификация прерываний и исключений иллюстрируется на рис.1.5.

Программные прерывания реализуются при поступлении специальных команд (INTn , INT 3, INTO для микропроцессоров Pentium, TRAPn для микропроцессоров семейства MC68000 и другие). Эти команды вызывают переход к выполнению стандартных подпрограмм обслуживания, для размещения которых выделяются определенные позиции в ОЗУ. Таким образом, при вызове подпрограмм обслуживания реализуется обращение к фиксированным адресам.

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

Запросы маскируемых прерываний обслуживаются только в том случае, если соответствующий бит управления I в регистре состояния SR , который называется маской прерываний , имеет значение 1. В процессорах Pentium это бит IF в регистре EFLAGS . С помощью специальных команд значение этого бита может быть установлено в 1 или сброшено в 0. Таким образом, можно разрешить или запретить обслуживание поступивших аппаратных прерываний при выполнении определенных программ или их фрагментов. При одновременном поступлении нескольких запросов обслуживание реализуется в соответствии их приоритетом. В ряде микропроцессорных систем для обеспечения приоритетного обслуживания запросов от многих внешних устройств включаются специальные микросхемы – контроллеры прерываний. Некоторые типы микропроцессоров имеют внутренние контроллеры для организации приоритетных прерываний.

Немаскируемые запросы прерывания обслуживаются в первоочередном порядке и не могут быть маскированы. Обычно микропроцессор имеет один вход для подачи немаскируемых запросов, которые формируются при возникновении каких-либо аварийных ситуаций. Чаще всего этот вход используется для контроля напряжения питания. Если напряжение питания выходит за допустимые пределы, то специальный датчик вырабатывает немаскируемый запрос прерывания, поступающий в микропроцессор. При этом источник питания должен некоторое время (порядка 10 мс) сохранять необходимый уровень напряжения питания, в течение которого микропроцессор выполняет подпрограмму перезаписи на магнитный диск информации, достаточной для продолжения прерванной программы после восстановления нормального режима питания.

Для передачи сигналов запроса и подтверждения прерывания между микропроцессором и внешними устройствами или контроллером прерываний используются соответствующие линии шины управления C.

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

Прямой доступ к памяти.

Режим прямого доступа к памяти DMA (Direct Memory Access) используется, если необходимо произвести пересылку значительного массива информации между ОЗУ и каким-либо внешним устройством, которое подает в систему соответствующий запрос. Реализация такой пересылки с помощью с помощью соответствующей программы обмена требует выполнения отдельной команды пересылки для передачи каждого байта или слова. При этом необходим определенный объем памяти для хранения программы и требуется значительное время для ее выполнения.

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

Передача сигналов запроса и подтверждения прямого доступа к памяти между микропроцессором и контроллером DMA производится по соответствующим линии шины управления C.

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

2. Система команд микропроцессоров и способы адресации операндов

Большинство микропроцессоров выполняют обработку следующих типов целочисленных данных:

Слова (16 разрядов),

Двойные слова (32 разряда).

Некоторые типы микропроцессоров обрабатывают также четверные слова (64 разряда), двоично-десятичные числа BCD (Binary Coded Decimal, представление одного десятичного разряда с помощью тетрады из 4-х битов, которая называется полубайтом или нибблом), строки символов. В состав современных высокопроизводительных микропроцессоров входят также блоки, производящие обработку чисел, представленных в формате с плавающей точкой (блоки FPU – Floating Point Unit), и выполняющие обработку видео — и аудиоданных, для которых используются специальные форматы представления.

Обрабатываемые данные — операнды могут располагаться в регистрах или памяти (ОЗУ, ПЗУ или кэш-памяти). Выборка операнда – байта, слова или двойного слова, производится в соответствии с заданным в команде номером (именем) регистра или адресом соответствующей ячейки памяти.

При размещении в памяти команд и данных используются два варианта расположения байтов в словах:

Начиная с младшего байта (“Little-Endian),

Начиная со старшего байта (“Big-Endian”).

При использования размещения “Little-Endian” младший байт располагается в ячейке памяти с меньшим адресом (рис. 1.6,а). Данный вариант размещения реализуется в микропроцессорах, выпускаемых компаниями Intel, AMD, Hitachi и рядом других производителей. При размещении “Big-Endian” старший байт располагается в ячейке с меньшим адресом (рис. 1.6,б). Такое расположение байтов обеспечивают микропроцессоры компании Motorola, ряд моделей микропроцессоров, выпускаемых IBM и некоторыми другими компаниями. При обращении к памяти микропроцессор адресует ячейку с меньшим адресом, поэтому при размещении “Little-Endian” команда или операнд выбираются, начиная с младшего байта, а при размещении “Big-Endian” – со старшего байта. По этой причине непосредственный перенос программного обеспечения между системами, использующими микропроцессоры с разными вариантами размещения байтов, оказывается практически невозможным. Чтобы решить эту проблему, некоторые современные микропроцессоры, например, семейства PowerPC, реализуют оба возможных варианта размещения и адресации байтов – “Little-Endian” или “Big-Endian”. Выбор необходимого варианта задается программно.

Основы микропроцессорной техники

    Михаил Скарятин 1 лет назад Просмотров:

1 Министерство образования и науки Российской Федерации САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ В.В. Шаляпин Основы микропроцессорной техники Учебное пособие Санкт-Петербург Издательство Политехнического университета 2011

2 УДК (075.8) ББК я73 Ш 189 Шаляпин В. В. Основы микропроцессорной техники: учеб пособие / Шаляпин В. В. / с. Учебное пособие посвящено основам микропроцессорной техники, в котором рассматриваются принципы организации микропроцессорных систем различной сложности, алгоритмы их функционирования, а также методы проектирования устройств на основе микроконтроллеров. Данное пособие предназначено для студентов обучающихся по направлению «Информатика и вычислительная техника» , по специальностям: и Шаляпин В. В., 2011 Санкт- Петербургский государственный политехнический университет,


3 Оглавление Введение Основные положения Определение микропроцессора Принципы построения микропроцессорных систем Классификация микропроцессоров Структурная схема МПС Архитектура микропроцессорных систем Типы микропроцессорных систем Функционирование процессора Функции процессора Методы адресации операндов Сегментирование памяти Адресация слов и байтов Регистры процессора Система команд процессора Быстродействие процессора Функции памяти Буферная память Кэш память Способы обмена информацией в микропроцессорной системе Режимы работы микропроцессорной системы Способы обмена информацией в микропроцессорной системе Организация прерываний в МПС Организация прямого доступа к памяти Функции устройств ввода/вывода Организация ввода/вывода в микропроцессорной системе Параллельная передача данных

4 7.3. Синхронный последовательный интерфейс Асинхронный последовательный интерфейс Классификация и структура микроконтроллеров Процессорное ядро микроконтроллеров Структура процессорного ядра МК Система команд процессора МК Схема синхронизации МК Память программ и данных МК Регистры МК Стек МК Внешняя память Организация связи микроконтроллера с внешней средой и временем Порты ввода/вывода Таймеры и процессоры событий Модуль прерываний МК Вспомогательные аппаратные средства микроконтроллера Минимизация энергопотребления в системах на основе МК Тактовые генераторы МК Аппаратные средства обеспечения надежной работы МК Схема формирования сигнала сброса МК Блок детектирования пониженного питания Сторожевой таймер Модули последовательного ввода/вывода Модули аналогового ввода/вывода Разработка микропроцессорной системы на основе микроконтроллера Основные этапы разработки Средства проектирования микропроцессорных контроллеров 198 4

5 11.3. Языки программирования для микроконтроллеров Разработка и отладка аппаратных средств Разработка и отладка программного обеспечения Методы и средства совместной отладки аппаратных и программных средств Библиографический список 213 5

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

7 1. Основные положения Микропроцессорная система может рассматриваться как частный случай электронной системы, предназначенной для обработки входных сигналов и выдачи выходных сигналов (рис. 1). В качестве входных и выходных сигналов при этом могут использоваться аналоговые сигналы, одиночные цифровые сигналы, цифровые коды, последовательности цифровых кодов. Внутри системы может производиться хранение, накопление сигналов (или информации), но суть от этого не меняется. Если система цифровая (а микропроцессорные системы относятся к разряду цифровых), то входные аналоговые сигналы преобразуются в последовательности кодов выборок с помощью АЦП, а выходные аналоговые сигналы формируются из последовательности кодов выборок с помощью ЦАП. Обработка и хранение информации производятся в цифровом виде. Характерная особенность традиционной цифровой системы состоит в том, что алгоритмы обработки и хранения информации в ней жестко связаны со схемотехникой системы. То есть изменение этих алгоритмов возможно только путем изменения структуры системы, замены электронных узлов, входящих в систему, и/или связей между ними. Например, если нам нужна дополнительная операция суммирования, то необходимо добавить в структуру системы лишний сумматор. Или если нужна дополнительная функция хранения кода в течение одного такта, то мы должны добавить в структуру еще один регистр. Естественно, это практически невозможно сделать в процессе эксплуатации, обязательно нужен новый производственный цикл проектирования, изготовления, отладки всей системы. Именно поэтому традиционная цифровая система часто называется системой на «жесткой логике». 7

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

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

10 задач (пусть даже и самых простых), которые бы они решали с максимально возможным быстродействием. За все приходится платить. Таким образом, можно сделать следующий вывод. Системы на «жесткой логике» хороши там, где решаемая задача не меняется длительное время, где требуется самое высокое быстродействие, где алгоритмы обработки информации предельно просты. А универсальные, программируемые системы хороши там, где часто меняются решаемые задачи, где высокое быстродействие не слишком важно, где алгоритмы обработки информации сложные. То есть любая система хороша на своем месте. Однако за последние десятилетия быстродействие универсальных (микропроцессорных) систем сильно выросло (на несколько порядков). К тому же большой объем выпуска микросхем для этих систем привел к резкому снижению их стоимости. В результате область применения систем на «жесткой логике» резко сузилась. Более того, высокими темпами развиваются сейчас программируемые системы, предназначенные для решения одной задачи или нескольких близких задач. Они удачно совмещают в себе как достоинства систем на «жесткой логике», так и программируемых систем, обеспечивая сочетание достаточно высокого быстродействия и необходимой гибкости. Так что вытеснение «жесткой логики» продолжается Определение микропроцессора. Микропроцессор (МП) — это программно-управляемое электронное цифровое устройство, предназначенное для обработки цифровой информации и управления процессом этой обработки, выполненное на одной или нескольких интегральных схемах с высокой степенью интеграции электронных элементов. Ядром любой микропроцессорной системы является микропроцессор или просто процессор (от английского processor). Перевести на русский язык это слово правильнее всего как «обработчик», так как именно микропроцессор 10

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

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

13 выполнить в микропроцессорах со структурой, отличающейся набором, количеством и порядком срабатывания логических блоков. Различные структуры микропроцессоров, как правило, обеспечивают их различные возможности, в том числе и различную скорость обработки данных. Основные логические блоки микропроцессора показаны на рис. 4. Рис Общая логическая структура микропроцессора: I — управляющая часть, II — операционная часть; БУПК — блок управления последовательностью команд; БУВОп — блок управления выполнением операций; БУФКА — блок управления формированием кодов адресов; БУВП — блок управления виртуальной памятью; БЗП — блок защиты памяти; БУПРПр — блок управления прерыванием работы процессора; БУВВ — блок управления вводом/выводом; РгСОЗУ — регистровое сверхоперативное запоминающее устройство; АЛБ — арифметико-логический блок; БДА — блок дополнительной арифметики; БС — блок синхронизации. Для разработчика микропроцессорных систем информация о тонкостях внутренней структуры процессора не слишком важна. Разработчик должен 13

14 рассматривать процессор как «черный ящик», который в ответ на входные и управляющие коды производит ту или иную операцию и выдает выходные сигналы. Разработчику необходимо знать систему команд, режимы работы процессора, а также правила взаимодействия процессора с внешним миром или, как их еще называют, протоколы обмена информацией. О внутренней структуре процессора надо знать только то, что необходимо для выбора той или иной команды, того или иного режима работы. Микропроцессор характеризуется большим числом параметров, поскольку он с одной стороны, является процессором, то есть частью компьютера, а с другой интегральной схемой. Поэтому для микропроцессора важны такие параметры как тип корпуса, количество выводов, мощность рассеивания, уровни сигналов, нагрузочная способность и т. д. Для описания микропроцессора как функционального устройства необходимо задать форматы команд и данных, количество и тип команд, методы адресации данных организацию и емкость стека и т. д. Создание микропроцессорных устройств систем все в большей степени становится функцией специалистов в конкретной предметной области, а не профессиональных программистов и специалистов по вычислительной технике. Это вызывает большую потребность в инженерных кадрах, которые, кроме своей предметной области, дополнительно разбираются в микропроцессорной технике. Как известно, МПС состоит из двух специфических частей: аппаратурных средств (АС) и прикладного программного обеспечения (ППО). При этом, рассматривая общий процесс проектирования МПС, можно отметить, что в большинстве случаев доля общей трудоемкости разработки ППО значительно превосходит трудоемкость разработки АС. Указанное обстоятельство объясняется тем, что разработка аппаратурной части МПУ на базе типовых микропроцессорных БИС сводится (чаще всего) к выполнению стандартных 14

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

16 фиксирует систему команд, но достигается максимальное быстродействие УУ. Микропроцессоры, использующие комбинационные УУ, называются микропроцессорами с фиксированным набором команд. Во втором случае смена выполняемой команды обеспечивается заменой микропрограммы. При считывании каждой микрокоманды требуется обращение к ПЗУ МК, что снижает быстродействие УУ. Микропрограммное управление заменяет аппаратные средства программными и обеспечивает высокую гибкость устройства, но при снижении быстродействия. Модульность. Принцип модульной организации предполагает построение микропроцессорных устройств (МПУ) и систем на основе модулей. Под модулем понимается конструктивно, функционально и электрически законченное устройство, позволяющее самостоятельно или в совокупности с другими модулями решать задачи заданного класса. При выборе функционального состава МПУ или системы необходимо учитывать многофункциональность (универсальность) и специализацию модулей. Повышение универсальности модулей обеспечивает снижение номенклатуры, снижение затрат на проектирование и изготовление, высокую серийность и, следовательно, низкую стоимость модулей. Специализация модулей является средством достижения соответствия структуры МПУ или системы выполняемым алгоритмам и тем самым повышения быстродействия и эффективности применения МПУ. Магистральный способ обмена информацией. Среди способов организации связей между модулями МПУ или системы можно выделить два: а) с помощью произвольных связей, реализующих принцип «каждый с каждым»; б) с помощью упорядоченных связей (магистралей); 16

17 Для достижения максимальной универсальности и упрощения протоколов обмена информацией в микропроцессорных системах применяется так называемая шинная структура связей между отдельными устройствами, входящими в систему. Суть шинной структуры связей сводится к следующему. Рис. 5. Классическая структура связей. При классической структуре связей (рис. 5) все сигналы и коды между устройствами передаются по отдельным линиям связи. Каждое устройство, входящее в систему, передает свои сигналы и коды независимо от других устройств. При этом в системе получается очень много линий связи и разных протоколов обмена информацией. В этом случае необходим значительный объем дополнительной аппаратуры (дешифраторы, коммутаторы), увеличивается сложность отладки системы; При шинной структуре связей (рис. 6) все сигналы между устройствами передаются по одним и тем же линиям связи, но в разное время (это называется мультиплексированной передачей). Причем передача по всем линиям связи может осуществляться в обоих направлениях (так называемая двунаправленная передача). В результате количество линий связи существенно сокращается, а правила обмена (протоколы) упрощаются. Группа линий связи, по которым передаются сигналы или коды как раз и называется шиной (англ. bus) или магистралью. Понятно, что при шинной структуре связей легко осуществляется пересылка всех информационных потоков в нужном направлении, например, их можно 17

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

19 мультиплексирования обмена информацией приводит к снижению быстродействия и необходимости использования дополнительных буферных регистров. 2. Классификация микропроцессоров 1. По назначению различают универсальные, сигнальные, медийные и специализированные микропроцессоры. Универсальные микропроцессоры предназначаются для применения в вычислительных системах: персональных компьютерах, рабочих станциях, в параллельных суперкомпьютерах. Цифровые сигнальные микропроцессоры рассчитаны на обработку на обработку в реальном времени цифровых потоков, образованных путем оцифровывания аналоговых сигналов. Современные сигнальные микропроцессоры способны проводить вычисления с плавающей точкой над разрядными операндами. Медийные микропроцессоры представляют собой законченные системы для обработки аудио- и видеоинформации. Специализированные микропроцессоры предназначаются для решения определенного класса задач или одной конкретной задачи. Среди специализированных микропроцессоров можно выделить микроконтроллеры, ориентированные на выполнение сложных последовательностей логических операций, математические МП, предназначенные для повышения производительности при выполнении арифметических операций за счет, например, матричных методов их выполнения, МП для обработки данных в различных областях применений. С помощью специализированных МП можно эффективно решать сложные задачи параллельной обработки данных. 2. По составу команд различают RISC- и CISC- процессоры. 19

20 Анализ кода программ, генерируемого компиляторами языков высокого уровня, показал, что практически используется только ограниченный набор простых команд форматов «регистр регистр, регистр память». Компиляторы не в состоянии эффективно использовать сложные команды. Это способствовало формированию концепции процессоров с сокращенным набором команд(risc-процессоров). RISC- процессоры эффективны в тех областях применения, в которых можно продуктивно использовать структурные способы уменьшения времени доступа к оперативной памяти. Если программа генерирует произвольные последовательности адресов обращения к памяти и каждая единица данных используется только для выполнения одной команды, то фактически производительность процессора определяется временем обращения к основной памяти. В этом случае использование сокращенного набора команд только ухудшает эффективность, так как требует пересылки операндов между памятью и регистром вместо выполнения команд «память, память- память». Процессоры с традиционными наборами команд называют CISCпроцессорами с полными наборами команд. Как правило, в этих процессорах команды имеют много разных форматов и требуют для своего представления различного числа ячеек памяти. Это обуславливает определение типа команды в ходе ее дешифрации при исполнении, что усложняет устройство управления процессора и препятствует повышению тактовой частоты до уровня, достижимого в RISC-процессорах на той же элементной базе. 3. По числу больших интегральных схем (БИС) в микропроцессорном комплекте различают микропроцессоры однокристальные, многокристальные и многокристальные секционные. Однокристальные микропроцессоры получаются при реализации всех аппаратных средств процессора в виде одной БИС или СБИС (сверхбольшой интегральной схемы). По мере увеличения степени интеграции элементов в 20

21 кристалле и числа выводов корпуса параметры однокристальных микропроцессоров улучшаются. Однако возможности однокристальных микропроцессоров ограничены аппаратными ресурсами кристалла и корпуса. Для получения многокристального микропроцессора необходимо провести разбиение его логической структуры на функционально законченные части и реализовать их в виде БИС (СБИС). Функциональная законченность БИС многокристального микропроцессора означает, что его части выполняют заранее определенные функции и могут работать автономно. Разбиение логической структуры можно выполнить двумя способами. Первый способ состоит в разделении логической структуры на функционально законченные части, например, операционное устройство (ОУ), память и устройство управления (УУ), как было сделано микропроцессоре i432(рис. 7, а)). Второй способ состоит в размещении на кристалле всех функциональных блоков (ОУ, память, УУ), но небольшой разрядности, например 2 или 4 разряда. На рис. 7, б) данный способ иллюстрируется вертикальными штриховыми линиями. Каждая микросхема дополняется входами/выходами для соединения друг с другом. В результате рассмотренного функционального разделения структуры микропроцессора на функционально и конструктивно законченные части создаются условия реализации каждой из них в виде БИС. Все они образуют комплект секционных БИС МП. Секционность БИС МП определяет возможность «наращивания» разрядности обрабатываемых данных или усложнения устройств управления микропроцессора при «параллельном» включении большего числа БИС. Однокристальные и трехкристальные БИС МП, как правило, изготовляют на основе микроэлектронных технологий униполярных полупроводниковых приборов, а многокристальные секционные БИС МП на основе технологии биполярных полупроводниковых приборов. Использование многокристальных микропроцессорных высокоскоростных биполярных БИС, имеющих 21

22 функциональную законченность при малой физической разрядности обрабатываемых данных и монтируемых в корпус с большим числом выводов, ОУ ОУ память память УУ УУ а) Рис. 7. Способы разделения логической структуры микропроцессора б) позволяет организовать разветвление связи в процессоре, а также осуществить конвейерные принципы обработки информации для повышения его производительности. 4. По виду обрабатываемых входных сигналов различают цифровые и аналоговые микропроцессоры. Сами микропроцессоры цифровые устройства, могут иметь встроенные аналого-цифровые и цифро-аналоговые преобразователи. Поэтому входные аналоговые сигналы передаются в МП через преобразователь в цифровой форме, обрабатываются. После обратного преобразования в аналоговую форму поступают на выход. С архитектурной точки зрения такие микропроцессоры представляют собой аналоговые функциональные преобразователи сигналов и называются аналоговыми микропроцессорами. Они выполняют функции любой аналоговой схемы (например, производят генерацию колебаний, модуляцию, смещение, фильтрацию, кодирование и декодирование сигналов в реальном масштабе 22

23 времени и т.д., заменяя сложные схемы, состоящие из операционных усилителей, катушек индуктивности, конденсаторов и т.д.). При этом применение аналогового микропроцессора значительно повышает точность обработки аналоговых сигналов и их воспроизводимость, а также расширяет функциональные возможности за счет программной «настройки» цифровой части микропроцессора на различные алгоритмы обработки сигналов. Обычно в составе однокристальных аналоговых МП имеется несколько каналов аналого-цифрового и цифро-аналогового преобразования. В аналоговом микропроцессоре разрядность обрабатываемых данных достигает 24 бит и более, большое значение уделяется увеличению скорости выполнения арифметических операций. Отличительная черта аналоговых микропроцессоров — способность к переработке большого объема числовых данных, т. е. к выполнению операций сложения и умножения с большой скоростью при необходимости даже за счет отказа от операций прерываний и переходов. Аналоговый сигнал, преобразованный в цифровую форму, обрабатывается в реальном масштабе времени и передается на выход обычно в аналоговой форме через цифро-аналоговый преобразователь. Производительность аналогового микропроцессора определяется его способностью быстро выполнять операции умножения. Одним из направлений дальнейшего совершенствования аналоговых микропроцессоров является повышение их универсальности и гибкости. Поэтому вместе с повышением скорости обработки большого объема цифровых данных будут развиваться средства обеспечения развитых вычислительных процессов обработки цифровой информации за счет реализации аппаратных блоков прерывания программ и программных переходов. 5. По характеру временной организации работы микропроцессоры делят на синхронные и асинхронные. 23

24 Синхронные микропроцессоры — микропроцессоры, в которых начало и конец выполнения операций задаются устройством управления (время выполнения операций в этом случае не зависит от вида выполняемых команд и величин операндов). Асинхронные микропроцессоры позволяют начало выполнения каждой следующей операции определить по сигналу фактического окончания выполнения предыдущей операции. Для более эффективного использования каждого устройства микропроцессорной системы в состав асинхронно работающих устройств вводят электронные цепи, обеспечивающие автономное функционирование устройств. Закончив работу над какой-либо операцией, устройство вырабатывает сигнал запроса, означающий его готовность к выполнению следующей операции. При этом роль естественного распределителя работ принимает на себя память, которая в соответствии с заранее установленным приоритетом выполняет запросы остальных устройств по обеспечению их командной информацией и данными. 6. По организации структуры микропроцессорных систем различают системы с одной, двумя и тремя шинами. 7. По числу разрядов микропроцессоры делят на 8-ми, 16-ти и 32-х разрядные. 3. Структурная схема МПС На рис. 8 приведена общая структурная схема микропроцессорной системы. Все устройства микропроцессорной системы объединяются общей системной шиной (она же называется еще системной магистралью или каналом). Системная магистраль включает в себя три основные шины: —шина адреса (Address Bus); —шина данных (Data Bus); 24

25 —шина управления (Control Bus). Рис.8. Структурная схема микропроцессорной системы. Шина данных это основная шина, которая используется для передачи информационных кодов между всеми устройствами микропроцессорной системы. Обычно в пересылке информации участвует процессор, который передает код данных в какое-то устройство или в ячейку памяти или же принимает код данных из какого-то устройства или из ячейки памяти. Но возможна также и передача информации между устройствами без участия процессора. Количество ее разрядов (линий связи) определяет скорость и эффективность информационного обмена, а также максимально возможное количество команд. Шина данных всегда двунаправленная, так как предполагает передачу информации в обоих направлениях. Наиболее часто встречающийся тип выходного каскада для линий этой шины выход с тремя состояниями. Обычно шина данных имеет 8, 16, 32 или 64 разряда. За один цикл обмена по 64-разрядной шине может передаваться 8 байт информации, а по 8-разрядной только один байт. Разрядность шины данных определяет и разрядность всей магистрали. Например, когда говорят о 32-разрядной системной магистрали, подразумевается, что она имеет 32-разрядную шину данных. 25

26 Шина адреса служит для определения адреса (номера) устройства, с которым процессор обменивается информацией в данный момент. Каждому устройству (кроме процессора), каждой ячейке памяти в микропроцессорной системе присваивается собственный адрес. Когда код какого-то адреса выставляется процессором на шине адреса, устройство, которому этот адрес приписан, понимает, что ему предстоит обмен информацией. Шина адреса вторая по важности шина, которая определяет максимально возможную сложность микропроцессорной системы, то есть допустимый объем памяти и, следовательно, максимально возможный размер программы и максимально возможный объем запоминаемых данных. Количество адресов, обеспечиваемых шиной адреса, определяется как 2 N, где N количество разрядов. Например, 16-разрядная шина адреса обеспечивает адресов. Разрядность шины адреса обычно кратна 4 и может достигать 32 и даже 64. Шина адреса может быть однонаправленной (когда магистралью всегда управляет только процессор) или двунаправленной (когда процессор может временно передавать управление магистралью другому устройству, например контроллеру ПДП). Как в шине данных, так и в шине адреса может использоваться положительная логика или отрицательная логика. При положительной логике высокий уровень напряжения соответствует логической единице на соответствующей линии связи, низкий логическому нулю. При отрицательной логике наоборот. В большинстве случаев уровни сигналов на шинах ТТЛ. Для снижения общего количества линий связи магистрали часто применяется мультиплексирование шин адреса и данных. То есть одни и те же линии связи используются в разные моменты времени для передачи как адреса, так и данных (в начале цикла адрес, в конце цикла данные). Для фиксации этих моментов (стробирования) служат специальные сигналы на шине управления. Понятно, что мультиплексированная шина адреса/данных обеспечивает 26

27 меньшую скорость обмена, требует более длительного цикла обмена (рис. 9). По типу шины адреса и шины данных все магистрали также делятся на мультиплексированные и немультиплексированные. Рис. 9. Мультиплексирование шин адреса и данных. В некоторых мультиплексированных магистралях после одного кода адреса передается несколько кодов данных (массив данных). Это позволяет существенно повысить быстродействие магистрали. Иногда в магистралях применяется частичное мультиплексирование, то есть часть разрядов данных передается по немультиплексированным линиям, а другая часть по мультиплексированным с адресом линиям. Шина управления в отличие от шины адреса и шины данных состоит из отдельных управляющих сигналов. Каждый из этих сигналов во время обмена информацией имеет свою функцию. Некоторые сигналы служат для стробирования передаваемых или принимаемых данных (то есть определяют моменты времени, когда информационный код выставлен на шину данных). Другие управляющие сигналы могут использоваться для подтверждения приема данных, для сброса всех устройств в исходное состояние, для тактирования всех устройств и т.д. Линии шины управления могут быть однонаправленными или двунаправленными. Шина управления это вспомогательная шина, управляющие сигналы на которой определяют тип текущего цикла и фиксируют моменты времени, соответствующие разным частям или стадиям цикла. Кроме того, управляющие сигналы обеспечивают согласование работы процессора (или другого хозяина магистрали, задатчика, master) с работой памяти или устройства ввода/вывода 27

28 (устройства-исполнителя, slave). Управляющие сигналы также обслуживают запрос и предоставление прерываний, запрос и предоставление прямого доступа. Сигналы шины управления могут передаваться как в положительной логике (реже), так и в отрицательной логике (чаще). Линии шины управления могут быть как однонаправленными, так и двунаправленными. Типы выходных каскадов могут быть самыми разными: с двумя состояниями (для однонаправленных линий), с тремя состояниями (для двунаправленных линий), с открытым коллектором (для двунаправленных и мультиплексированных линий). Самые главные управляющие сигналы это стробы обмена, то есть сигналы, формируемые процессором и определяющие моменты времени, в которые производится пересылка данных по шине данных, обмен данными. Чаще всего в магистрали используются два различных строба обмена: Строб записи (вывода), определяет момент времени, когда устройствоисполнитель может принимать данные, выставленные процессором на шину данных. Строб чтения (ввода), определяет момент времени, когда устройствоисполнитель должно выдать на шину данных код данных, который будет прочитан процессором. При этом большое значение имеет то, как процессор заканчивает обмен в пределах цикла, в какой момент он снимает свой строб обмена. Возможны два пути решения (рис. 10): — синхронный обмен; —асинхронный обмен. При синхронном обмене процессор заканчивает обмен данными самостоятельно, через раз и навсегда установленный временной интервал выдержки (t выд ), то есть без учета интересов устройства-исполнителя; 28

29 При асинхронном обмене процессор заканчивает обмен только тогда, когда устройство-исполнитель подтверждает выполнение операции специальным сигналом (так называемый режим handshake рукопожатие). Рис. 10. Синхронный обмен и асинхронный обмен. Достоинства синхронного обмена более простой протокол обмена, меньшее количество управляющих сигналов. Недостатки отсутствие гарантии, что исполнитель выполнил требуемую операцию, а также высокие требования к быстродействию исполнителя. Достоинства асинхронного обмена более надежная пересылка данных, возможность работы с самыми разными по быстродействию исполнителями. Недостаток необходимость формирования сигнала подтверждения всеми исполнителями, то есть дополнительные аппаратурные затраты. Какой тип обмена быстрее, синхронный или асинхронный? Ответ на этот вопрос неоднозначен. С одной стороны, при асинхронном обмене требуется какое-то время на выработку, передачу дополнительного сигнала и на его обработку процессором. С другой стороны, при синхронном обмене приходится искусственно увеличивать длительность строба обмена для соответствия требованиям большего числа исполнителей, чтобы они успевали обмениваться информацией в темпе процессора. Поэтому иногда в магистрали предусматривают возможность как синхронного, так и асинхронного обмена, причем синхронный обмен является основным и довольно быстрым, а асинхронный применяется только для медленных исполнителей. По используемому типу обмена магистрали микропроцессорных систем также делятся на синхронные и асинхронные. 29

30 Если в микропроцессорную систему надо ввести входной код (или входной сигнал), то процессор по шине адреса обращается к нужному устройству ввода/вывода и принимает по шине данных входную информацию. Если из микропроцессорной системы надо вывести выходной код (или выходной сигнал), то процессор обращается по шине адреса к нужному устройству ввода/вывода и передает ему по шине данных выходную информацию. Если информация должна пройти сложную многоступенчатую обработку, то процессор может хранить промежуточные результаты в системной оперативной памяти. Для обращения к любой ячейке памяти процессор выставляет ее адрес на шину адреса и передает в нее информационный код по шине данных или же принимает из нее информационный код по шине данных. В памяти (оперативной и постоянной) находятся также и управляющие коды (команды выполняемой процессором программы), которые процессор также читает по шине данных с адресацией по шине адреса. Постоянная память используется в основном для хранения программы начального пуска микропроцессорной системы, которая выполняется каждый раз после включения питания. Информация в нее заносится изготовителем раз и навсегда. Таким образом, в микропроцессорной системе все информационные коды и коды команд передаются по шинам последовательно, по очереди. Это определяет сравнительно невысокое быстродействие микропроцессорной системы. Оно ограничено обычно даже не быстродействием процессора (которое тоже очень важно) и не скоростью обмена по системной шине (магистрали), а именно последовательным характером передачи информации по системной шине (магистрали). Важно учитывать, что устройства ввода/вывода чаще всего представляют собой устройства на «жесткой логике». На них может быть возложена часть функций, выполняемых микропроцессорной системой. Поэтому у разработчика всегда 30

31 имеется возможность перераспределять функции системы между аппаратной и программной реализациями оптимальным образом. Аппаратная реализация ускоряет выполнение функции, но имеет недостаточную гибкость. Программная реализация значительно медленнее, но обеспечивает высокую гибкость. Аппаратная реализация функций увеличивает стоимость системы и ее энергопотребление, программная не увеличивает. Чаще всего применяется комбинирование аппаратных и программных функций. Иногда устройства ввода/вывода имеют в своем составе процессор, то есть представляют собой небольшую специализированную микропроцессорную систему. Это позволяет переложить часть программных функций на устройства ввода/вывода, разгрузив центральный процессор системы. В системах с шинной структурой связей применяют все три существующие разновидности выходных каскадов цифровых микросхем: —стандартный выход или выход с двумя состояниями (обозначается 2С, 2S, реже ТТЛ, TTL); —выход с открытым коллектором (обозначается ОК, OC); —выход с тремя состояниями или (что, то же самое) с возможностью отключения (обозначается 3С, 3S). Упрощенно эти три типа выходных каскадов могут быть представлены в виде схем на рис. 11. У выхода 2С два ключа замыкаются по очереди, что соответствует уровням логической единицы (верхний ключ замкнут) и логического нуля (нижний ключ замкнут). У выхода ОК замкнутый ключ формирует уровень логического нуля, разомкнутый логической единицы. У выхода 3С ключи могут замыкаться по очереди (как в случае 2С), а могут размыкаться одновременно, образуя третье, высокоимпедансное, состояние. Переход в третье состояние (Zсостояние) управляется сигналом на специальном входе EZ. 31

32 Рис. 11. Три типа выходов цифровых микросхем. Выходные каскады типов 3С и ОК позволяют объединять несколько выходов микросхем для получения мультиплексированных (рис. 12) или двунаправленных (рис. 13) линий. Рис. 12. Мультиплексированная линия. Рис. 13. Двунаправленная линия. При этом в случае выходов 3С необходимо обеспечить, чтобы на линии всегда работал только один активный выход, а все остальные выходы находились бы в это время в третьем состоянии, иначе возможны конфликты. Объединенные выходы ОК могут работать все одновременно, без всяких конфликтов. На рис.14 показано подключение ОЗУ, ПЗУ и порта ввода/вывода к системной магистрали. 32

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

34 Основное преимущество архитектуры Фон-Неймана упрощение устройства МПС, так как реализуется обращение только к одной общей памяти. Кроме того, использование единой области памяти позволило оперативно перераспределять ресурсы между областями программ и данных, что существенно повысило гибкость МПС с точки зрения разработчика программного обеспечения. Размещение стека в общей памяти облегчило доступ к его содержимому. Неслучайно поэтому фон-неймановская архитектура стала основной архитектурой универсальных компьютеров, включая персональные. Основной особенностью гарвардской архитектуры является использование раздельных адресных пространств для хранения команд и данных, как показано на рис. 16. Рис. 16. Структура МПС с гарвардской архитектурой. Гарвардская архитектура почти не использовалась до конца 70-х годов, пока производители МК не поняли, что она дает определенные преимущества разработчикам автономных систем управления. Дело в том, что, судя по опыту использования МПС для управления различными объектами, для реализации большинства алгоритмов управления такие преимущества фон-неймановской архитектуры как гибкость и универсальность не имеют большого значения. Анализ реальных программ управления показал, что необходимый объем 34

35 памяти данных МК, используемый для хранения промежуточных результатов, как правило, на порядок меньше требуемого объема памяти программ. В этих условиях использование единого адресного пространства приводило к увеличению формата команд за счет увеличения числа разрядов для адресации операндов. Применение отдельной небольшой по объему памяти данных способствовало сокращению длины команд и ускорению поиска информации в памяти данных. Кроме того, гарвардская архитектура обеспечивает потенциально более высокую скорость выполнения программы по сравнению с фон-неймановской за счет возможности реализации параллельных операций. Выборка следующей команды может происходить одновременно с выполнением предыдущей, и нет необходимости останавливать процессор на время выборки команды. Этот метод реализации операций позволяет обеспечивать выполнение различных команд за одинаковое число тактов, что дает возможность более просто определить время выполнения циклов и критичных участков программы. Большинство производителей современных 8-разрядных МК используют гарвардскую архитектуру. Однако гарвардская архитектура является недостаточно гибкой для реализации некоторых программных процедур. Поэтому сравнение МК, выполненных по разным архитектурам, следует проводить применительно к конкретному приложению. Фон-неймановская архитектура с общей, единой шиной для данных и команд (одношинную, или принстонская, архитектура) приведена на рис. 17. Рис. 17. Архитектура с общей шиной данных и команд. 35

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

37 данных. Перераспределение памяти не вызывает никаких проблем, главное чтобы программа и данные вместе помещались в памяти системы. Как правило, в системах с такой архитектурой память бывает довольно большого объема (до десятков и сотен мегабайт). Это позволяет решать самые сложные задачи. Архитектура с раздельными шинами данных и команд сложнее, она заставляет процессор одновременно с двумя потоками кодов, обслуживать обмен по двум шинам одновременно. Программа может размещаться только в памяти команд, данные только в памяти данных. Такая узкая специализация ограничивает круг задач, решаемых системой, так как не дает возможности гибкого перераспределения памяти. Память данных и память команд в этом случае имеют не слишком большой объем, поэтому применение систем с данной архитектурой ограничивается обычно не слишком сложными задачами. В чем же преимущество архитектуры с двумя шинами (гарвардской)? В первую очередь, в быстродействии. Дело в том, что при единственной шине команд и данных процессор вынужден по одной этой шине принимать данные (из памяти или устройства ввода/вывода) и передавать данные (в память или в устройство ввода/вывода), а также читать команды из памяти. Естественно, одновременно эти пересылки кодов по магистрали происходить не могут, они должны производиться по очереди. Современные процессоры способны совместить во времени выполнение команд и проведение циклов обмена по системной шине. Использование конвейерных технологий и быстрой кэшпамяти позволяет им ускорить процесс взаимодействия со сравнительно медленной системной памятью. Повышение тактовой частоты и совершенствование структуры процессоров дают возможность сократить время выполнения команд. Но дальнейшее увеличение быстродействия системы возможно только при совмещении пересылки данных и чтения команд, то есть при переходе к архитектуре с двумя шинами. 37

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

39 —микрокомпьютеры более мощные микропроцессорные системы с развитыми средствами сопряжения с внешними устройствами. —компьютеры (в том числе персональные) самые мощные и наиболее универсальные микропроцессорные системы. Четкую границу между этими типами иногда провести довольно сложно. Быстродействие всех типов микропроцессоров постоянно растет, и нередки ситуации, когда новый микроконтроллер оказывается быстрее, например, устаревшего персонального компьютера. Но кое-какие принципиальные отличия все-таки имеются. Микроконтроллеры представляют собой универсальные устройства, которые практически всегда используются не сами по себе, а в составе более сложных устройств, в том числе и контроллеров. Системная шина микроконтроллера скрыта от пользователя внутри микросхемы. Возможности подключения внешних устройств к микроконтроллеру ограничены. Устройства на микроконтроллерах обычно предназначены для решения одной задачи. Контроллеры, как правило, создаются для решения какой-то отдельной задачи или группы близких задач. Они обычно не имеют возможностей подключения дополнительных узлов и устройств, например, большой памяти, средств ввода/вывода. Их системная шина чаще всего недоступна пользователю. Структура контроллера проста и оптимизирована под максимальное быстродействие. В большинстве случаев выполняемые программы хранятся в постоянной памяти и не меняются. Конструктивно контроллеры выпускаются в одноплатном варианте. Микрокомпьютеры отличаются от контроллеров более открытой структурой, они допускают подключение к системной шине нескольких дополнительных устройств. Производятся микрокомпьютеры в каркасе, корпусе с разъемами системной магистрали, доступными пользователю. Микрокомпьютеры могут иметь средства хранения информации на магнитных носителях (например, 39

40 магнитные диски) и довольно развитые средства связи с пользователем (видеомонитор, клавиатура). Микрокомпьютеры рассчитаны на широкий круг задач, но в отличие от контроллеров, к каждой новой задаче его надо приспосабливать заново. Выполняемые микрокомпьютером программы можно легко менять. Наконец, компьютеры и самые распространенные из них персональные компьютеры это самые универсальные из микропроцессорных систем. Они обязательно предусматривают возможность модернизации, а также широкие возможности подключения новых устройств. Их системная шина, конечно, доступна пользователю. Кроме того, внешние устройства могут подключаться к компьютеру через несколько встроенных портов связи (количество портов доходит иногда до 10). Компьютер всегда имеет сильно развитые средства связи с пользователем, средства длительного хранения информации большого объема, средства связи с другими компьютерами по информационным сетям. Области применения компьютеров могут быть самыми разными: математические расчеты, обслуживание доступа к базам данных, управление работой сложных электронных систем, компьютерные игры, подготовка документов и т.д. Любую задачу в принципе можно выполнить с помощью каждого из перечисленных типов микропроцессорных систем. Но при выборе типа надо по возможности избегать избыточности и предусматривать необходимую для данной задачи гибкость системы. В настоящее время при разработке новых микропроцессорных систем чаще всего выбирают путь использования микроконтроллеров (примерно в 80% случаев). При этом микроконтроллеры применяются или самостоятельно, в микропроцессорных комплектах выпускаются сейчас довольно редко, с минимальной дополнительной аппаратурой, или в составе более сложных контроллеров с развитыми средствами ввода/вывода. 40

41 Классические микропроцессорные системы на базе микросхем процессоров и первую очередь, из-за сложности процесса разработки и отладки этих систем. Данный тип микропроцессорных систем выбирают в основном тогда, когда микроконтроллеры не могут обеспечить требуемых характеристик. Наконец, заметное место занимают сейчас микропроцессорные системы на основе персонального компьютера. Разработчику в этом случае нужно только оснастить персональный компьютер дополнительными устройствами сопряжения, а ядро микропроцессорной системы уже готово. Персональный компьютер имеет развитые средства программирования, что существенно упрощает задачу разработчика. К тому же он может обеспечить самые сложные алгоритмы обработки информации. Основные недостатки персонального компьютера большие размеры корпуса и аппаратурная избыточность для простых задач. Недостатком является и неприспособленность большинства персональных компьютеров к работе в сложных условиях (запыленность, высокая влажность, вибрации, высокие температуры и т.д.). Однако выпускаются и специальные персональные компьютеры, приспособленные к различным условиям эксплуатации. 4. Функционирование процессора 4.1. Функции процессора Процессор (рис.19) обычно представляет собой отдельную микросхему или же часть микросхемы (в случае микроконтроллера). В прежние годы процессор иногда выполнялся на комплектах из нескольких микросхем, но сейчас от такого подхода уже практически отказались. Микросхема процессора обязательно имеет выводы трех шин: шины адреса, шины данных и шины 41

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

43 тактовая частота процессора определяет только его внутреннее быстродействие, а не внешнее. Иногда тактовая частота процессора имеет нижний и верхний пределы. При превышении верхнего предела частоты возможно перегревание процессора, а также сбои, причем, что самое неприятное, возникающие не всегда и нерегулярно. Так что с изменением этой частоты надо быть очень осторожным. Еще один важный сигнал, который имеется в каждом процессоре, это сигнал начального сброса RESET. При включении питания, при аварийной ситуации или зависании процессора подача этого сигнала приводит к инициализации процессора, заставляет его приступить к выполнению программы начального запуска. Аварийная ситуация может быть вызвана помехами по цепям питания и «земли», сбоями в работе памяти, внешними ионизирующими излучениями и еще множеством причин. В результате процессор может потерять контроль над выполняемой программой и остановиться в каком-то адресе. Для выхода из этого состояния как раз и используется сигнал начального сброса. Этот же вход начального сброса может использоваться для оповещения процессора о том, что напряжение питания стало ниже установленного предела. В таком случае процессор переходит к выполнению программы сохранения важных данных. По сути, этот вход представляет собой особую разновидность радиального прерывания. Иногда у микросхемы процессора имеется еще один-два входа радиальных прерываний для обработки особых ситуаций (например, для прерывания от внешнего таймера). Шина питания современного процессора обычно имеет одно напряжение питания (+5В или +3,3В) и общий провод («землю»). Первые процессоры нередко требовали нескольких напряжений питания. В некоторых процессорах предусмотрен режим пониженного энергопотребления. Вообще, современные микросхемы процессоров, особенно с высокими тактовыми частотами, потребляют довольно большую мощность. В результате для поддержания 43

44 нормальной рабочей температуры корпуса на них нередко приходится устанавливать радиаторы, вентиляторы или даже специальные микрохолодильники. Для подключения процессора к магистрали используются буферные микросхемы, обеспечивающие, если необходимо, демультиплексирование сигналов и электрическое буферирование сигналов магистрали. Иногда протоколы обмена по системной магистрали и по шинам процессора не совпадают между собой, тогда буферные микросхемы еще и согласуют эти протоколы друг с другом. Иногда в микропроцессорной системе используется несколько магистралей (системных и локальных), тогда для каждой из магистралей применяется свой буферный узел. Такая структура характерна, например, для персональных компьютеров. После включения питания процессор переходит в первый адрес программы начального пуска и выполняет эту программу. Данная программа предварительно записана в постоянную (энергонезависимую) память. После завершения программы начального пуска процессор начинает выполнять основную программу, находящуюся в постоянной или оперативной памяти, для чего выбирает по очереди все команды. От этой программы процессор могут отвлекать внешние прерывания или запросы на ПДП. Команды из памяти процессор выбирает с помощью циклов чтения по магистрали. При необходимости процессор записывает данные в память или в устройства ввода/вывода с помощью циклов записи или же читает данные из памяти или из устройств ввода/вывода с помощью циклов чтения. Таким образом, основные функции любого процессора следующие: — выборка (чтение) выполняемых команд; — ввод (чтение) данных из памяти или устройства ввода/вывода; — вывод (запись) данных в память или в устройства ввода/вывода; 44

45 — обработка данных (операндов), в том числе арифметические операции над ними; — адресация памяти, то есть задание адреса памяти, с которым будет производиться обмен; — обработка прерываний и режима прямого доступа. Упрощенно структуру микропроцессора можно представить в следующем виде (рис. 20). Рис. 20. Внутренняя структура микропроцессора. Основные функции показанных узлов следующие. Схема управления выборкой команд выполняет чтение команд из памяти и их дешифрацию. В первых микропроцессорах было невозможно одновременное выполнение предыдущей команды и выборка следующей команды, так как процессор не мог совмещать эти операции. В 16 — ти разрядных процессорах появляется конвейер (очередь) команд, позволяющий выбирать несколько следующих команд, пока выполняется предыдущая. Два процесса идут параллельно, что ускоряет работу процессора. Конвейер представляет собой небольшую внутреннюю память процессора, в которую при малейшей возможности (при освобождении внешней шины) записывается несколько команд, следующих за исполняемой. Читаются эти команды 45

46 процессором в том же порядке, что и записываются в конвейер (это память типа FIFO, First In First Out, первый вошел первый вышел). Правда, если выполняемая команда предполагает переход не на следующую ячейку памяти, а на удаленную (с меньшим или большим адресом), конвейер не помогает, и его приходится сбрасывать. Но такие команды встречаются в программах сравнительно редко. Развитием идеи конвейера стало использование внутренней кэш-памяти процессора, которая заполняется командами, пока процессор занят выполнением предыдущих команд. Чем больше объем кэш-памяти, тем меньше вероятность того, что ее содержимое придется сбросить при команде перехода. Понятно, что обрабатывать команды, находящиеся во внутренней памяти, процессор может гораздо быстрее, чем те, которые расположены во внешней памяти. В кэш-памяти могут храниться и данные, которые обрабатываются в данный момент, это также ускоряет работу. Для большего ускорения выборки команд в современных процессорах применяют совмещение выборки и дешифрации, одновременную дешифрацию нескольких команд, несколько параллельных конвейеров команд, предсказание команд переходов и некоторые другие методы. Арифметико-логическое устройство (или АЛУ, ALU) предназначено для обработки информации в соответствии с полученной процессором командой. Примерами обработки могут служить логические операции (логическое «И», «ИЛИ», «Исключающего ИЛИ» и т.д.), побитные операции над операндами и арифметические операции (сложение, вычитание, умножение, деление и т.д.). Над какими кодами производится операция, куда помещается ее результат определяется выполняемой командой. Если команда сводится всего лишь к пересылке данных без их обработки, то АЛУ не участвует в ее выполнении. Быстродействие АЛУ во многом определяет производительность процессора. Причем важна не только частота тактового сигнала, которым тактируется АЛУ, 46

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

48 ввода/вывода проводятся только через один регистр аккумулятор, в результате чего при выполнении некоторых процедур может потребоваться несколько дополнительных пересылок между регистрами. Второй подход состоит в том, чтобы все (или почти все) регистры сделать равноправными, как, например, в 16-разрядных процессорах Т-11 фирмы DEC. При этом достигается высокая гибкость, но необходимо усложнение структуры процессора. Существуют и промежуточные решения, в частности, в процессоре MC68000 фирмы Motorola половина регистров использовалась для данных, и они были взаимозаменяемы, а другая половина для адресов, и они также взаимозаменяемы. Регистр признаков (регистр состояния) занимает особое место, хотя он также является внутренним регистром процессора. Содержащаяся в нем информация это не данные, не адрес, а слово состояния процессора (ССП, PSW Processor Status Word). Каждый бит этого слова (флаг) содержит информацию о результате предыдущей команды. Например, есть бит нулевого результата, который устанавливается в том случае, когда результат выполнения предыдущей команды нуль, и очищается в том случае, когда результат выполнения команды отличен от нуля. Эти биты (флаги) используются командами условных переходов, например, командой перехода в случае нулевого результата. В этом же регистре иногда содержатся флаги управления, определяющие режим выполнения некоторых команд. Схема управления прерываниями обрабатывает поступающий на процес- сор запрос прерывания, определяет адрес начала программы обработки прерывания (адрес вектора прерывания), обеспечивает переход к этой программе после выполнения текущей команды и сохранения в памяти (в стеке) текущего состояния регистров процессора. По окончании программы обработки прерывания процессор возвращается к прерванной программе с 48

49 восстановленными из памяти (из стека) значениями внутренних регистров. Подробнее о стеке будет рассказано в разделе функции памяти. Схема управления прямым доступом к памяти служит для временного отключения процессора от внешних шин и приостановки работы процессора на время предоставления прямого доступа запросившему его устройству. Логика управления организует взаимодействие всех узлов процессора, перенаправляет данные, синхронизирует работу процессора с внешними сигналами, а также реализует процедуры ввода и вывода информации. Таким образом, в ходе работы процессора схема выборки команд выбирает последовательно команды из памяти, затем эти команды выполняются, причем в случае необходимости обработки данных подключается АЛУ. На входы АЛУ могут подаваться обрабатываемые данные из памяти или из внутренних регистров. Во внутренних регистрах хранятся также коды адресов обрабатываемых данных, расположенных в памяти. Результат обработки в АЛУ изменяет состояние регистра признаков и записывается во внутренний регистр или в память (как источник, так и приемник данных указывается в составе кода команды). При необходимости информация может переписываться из памяти (или из устройства ввода/вывода) во внутренний регистр или из внутреннего регистра в память (или в устройство ввода/вывода). Внутренние регистры любого микропроцессора обязательно выполняют две служебные функции: — определяют адрес в памяти, где находится выполняемая в данный момент команда (функция счетчика команд или указателя команд); — определяют текущий адрес стека (функция указателя стека). В разных процессорах для каждой из этих функций может отводиться один или два внутренних регистра. Эти два указателя отличаются от других не только своим специфическим, служебным, системным назначением, но и особым способом изменения содержимого. Их содержимое программы могут менять 49

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

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

52 Все эти коды операндов (входные и выходные) должны где-то располагаться. Они могут находиться во внутренних регистрах процессора (наиболее удобный и быстрый вариант). Они могут располагаться в системной памяти (самый распространенный вариант). Наконец, они могут находиться в устройствах ввода/вывода (наиболее редкий случай). Определение места положения операндов производится кодом команды. Причем существуют разные методы, с помощью которых код команды может определить, откуда брать входной операнд и куда помещать выходной операнд. Эти методы называются методами адресации. Эффективность выбранных методов адресации во многом определяет эффективность работы всего процессора в целом. Количество методов адресации в различных процессорах может быть от 4 до 16. Рассмотрим несколько типичных методов адресации операндов, используемых сейчас в большинстве микропроцессоров. Непосредственная адресация (рис. 21) предполагает, что операнд (входной) находится в памяти непосредственно за кодом команды. Операнд обычно представляет собой константу, которую надо куда-то переслать, к чему-то прибавить и т.д. Например, команда может состоять в том, чтобы прибавить число 6 к содержимому какого-то внутреннего регистра процессора. Это число 6 будет располагаться в памяти, внутри программы в адресе, следующем за кодом данной команды сложения. Рис. 21. Непосредственная адресация. 52

53 Прямая (она же абсолютная) адресация (рис. 22) предполагает, что операнд (входной или выходной) находится в памяти по адресу, код которого находится внутри программы сразу же за кодом команды. Например, команда может состоять в том, чтобы очистить (сделать нулевым) содержимое ячейки памяти с адресом Код этого адреса будет располагаться в памяти, внутри программы в следующем адресе за кодом данной команды очистки. Рис. 22. Прямая адресация. Регистровая адресация (рис. 23) предполагает, что операнд (входной или выходной) находится во внутреннем регистре процессора. Например, команда может состоять в том, чтобы переслать число из нулевого регистра в первый. Номера обоих регистров (0 и 1) будут определяться кодом команды пересылки. Рис. 23. Регистровая адресация. Косвенно-регистровая (она же косвенная) адресация предполагает, что во внутреннем регистре процессора находится не сам операнд, а его адрес в памяти (рис. 24). Например, команда может состоять в том, чтобы очистить ячейку памяти с адресом, находящимся в нулевом регистре. Номер этого регистра (0) будет определяться кодом команды очистки. 53

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

55 регистровая, так как она не требует дополнительных циклов обмена по магистрали. Если же адресация требует обращения к памяти, то время выполнения команды будет увеличиваться за счет длительности необходимых циклов обращения к памяти. Понятно, что чем больше внутренних регистров у процессора, тем чаще и свободнее можно применять регистровую адресацию, и тем быстрее будет работать система в целом Сегментирование памяти Говоря об адресации, нельзя обойти вопрос о сегментировании памяти, применяемой в некоторых процессорах, например в процессорах IBM PCсовместимых персональных компьютеров. В процессоре Intel 8086 сегментирование памяти организовано следующим образом. Вся память системы представляется не в виде непрерывного пространства, а в виде нескольких кусков сегментов заданного размера (по 64 Кбайта), положение которых в пространстве памяти можно изменять программным путем. Для хранения кодов адресов памяти используются не отдельные регистры, а пары регистров: —сегментный регистр определяет адрес начала сегмента (то есть положение сегмента в памяти); —регистр указателя (регистр смещения) определяет положение рабочего адреса внутри сегмента. При этом физический 20-разрядный адрес памяти, выставляемый на внешнюю шину адреса, образуется так, как показано на рис. 25, то есть путем сложения смещения и адреса сегмента со сдвигом на 4 бита. Положение этого адреса в памяти показано на рис. 26. Сегмент может начинаться только на 16-байтной границе памяти (так как адрес начала сегмента, по сути, имеет четыре младших нулевых разряда, как видно из 55

56 рис. 25), то есть с адреса, кратного 16. Эти допустимые границы сегментов называются границами параграфов. Отметим, что введение сегментирования, прежде всего, связано с тем, что внутренние регистры процессора 16-разрядные, а физический адрес памяти 20- разрядный (16-разрядный адрес позволяет использовать память только в 64 Кбайт, что явно недостаточно). В процессоре MC68000 фирмы Motorola внутренние регистры 32-разрядные, поэтому там проблемы сегментирования памяти не возникает. Рис. 25. Формирование физического адреса памяти из адреса сегмента и смещения. Рис. 26. Физический адрес в сегменте (все коды шестнадцатеричные). Применяются и более сложные методы сегментирования памяти. Например, в процессоре Intel в так называемом защищенном режиме адрес памяти вычисляется в соответствии с рис

57 В сегментном регистре в данном случае хранится не базовый (начальный) адрес сегментов, а коды селекторов, определяющие адреса в памяти, по которым хранятся дескрипторы (то есть описатели) сегментов. Область памяти с дескрипторами называется таблицей дескрипторов. Каждый дескриптор сегмента содержит базовый адрес сегмента, размер сегмента (от 1 до 64 Кбайт) и его атрибуты. Базовый адрес сегмента имеет разрядность 24 бит, что обеспечивает адресацию 16 Мбайт физической памяти. Рис. 27. Адресация памяти в защищенном режиме процессора Intel Таким образом, на сумматор, вычисляющий физический адрес памяти, подается не содержимое сегментного регистра, как в предыдущем случае, а базовый адрес сегмента из таблицы дескрипторов. Еще более сложный метод адресации памяти с сегментированием использован в процессоре Intel и в более поздних моделях процессоров фирмы Intel. Этот метод иллюстрируется рис. 28. Адрес памяти (физический адрес) вычисляется в три этапа. Сначала вычисляется так называемый эффективный адрес (32-разрядный) путем 57

58 суммирования трех компонентов: базы, индекса и смещения (Base, Index, Displacement), причем возможно умножение индекса на масштаб (Scale). Эти компоненты имеют следующий смысл: Рис. 28. Формирование физического адреса памяти процессора в защищенном режиме. — смещение это 8-, 16- или 32-разрядное число, включенное в команду. — база это содержимое базового регистра процессора. Обычно оно используется для указания на начало некоторого массива. — индекс это содержимое индексного регистра процессора. Обычно оно используется для выбора одного из элементов массива. — масштаб это множитель (он может быть равен 1, 2, 4 или 8), указанный в коде команды, на который перед суммированием с другими компонентами умножается индекс. Он используется для указания размера элемента массива. Затем специальный блок сегментации вычисляет 32-разрядный линейный адрес, который представляет собой сумму базового адреса сегмента из сегментного регистра с эффективным адресом. Наконец, физический 32-битный адрес памяти образуется путем преобразования линейного адреса блоком страничной переадресации, который осуществляет перевод линейного адреса в физический страницами по 4 Кбайта. 58

59 В любом случае сегментирование позволяет выделить в памяти один или несколько сегментов для данных и один или несколько сегментов для программ. Переход от одного сегмента к другому сводится всего лишь к изменению содержимого сегментного регистра. Иногда это бывает очень удобно. Но для программиста работать с сегментированной памятью обычно сложнее, чем с непрерывной, несегментированной памятью, так как приходится следить за границами сегментов, за их описанием, переключением и т.д Адресация байтов и слов Многие процессоры, имеющие разрядность 16 или 32, способны адресовать не только целое слово в памяти (16-разрядное или 32-разрядное), но и отдельные байты. Каждому байту в каждом слове при этом отводится свой адрес. Так, в случае 16-разрядных процессоров все слова в памяти (16-разрядные) имеют четные адреса. А байты, входящие в эти слова, могут иметь как четные адреса, так и нечетные. Например, пусть 16-разрядная ячейка памяти имеет адрес 23420, и в ней хранится код 2А5Е (рис. 29). Рис. 29. Адресация слов и байтов. При обращении к целому слову (с содержимым 2А5Е) процессор выставляет адрес При обращении к младшему байту этой ячейки (с содержимым 5Е) 59

60 процессор выставляет тот же самый адрес 23420, но использует команду, адресующую байт, а не слово. При обращении к старшему байту этой же ячейки (с содержимым 2А) процессор выставляет адрес и использует команду, адресующую байт. Следующая по порядку 16-разрядная ячейка памяти с содержимым 487F будет иметь адрес 23422, то есть опять же четный. Ее байты будут иметь адреса и Для различия байтовых и словных циклов обмена на магистрали в шине управления предусматривается специальный сигнал байтового обмена. Для работы с байтами в систему команд процессора вводятся специальные команды или предусматриваются методы байтовой адресации Регистры процессора Как уже упоминалось, внутренние регистры процессора представляют собой сверхоперативную память небольшого размера, которая предназначена для временного хранения служебной информации или данных. Количество регистров в разных процессорах может быть от 6 8 до нескольких десятков. Регистры могут быть универсальными и специализированными. Специализированные регистры, которые присутствуют в большинстве процессоров, это регистр-счетчик команд, регистр состояния (PSW), регистр указателя стека. Остальные регистры процессора могут быть как универсальными, так и специализированными. Например, в 16-разрядном процессоре Т-11 фирмы DEC было 8 регистров общего назначения (РОН) и один регистр состояния. Все регистры имели по 16 разрядов. Из регистров общего назначения один отводился под счетчик команд, другой под указатель стека. Все остальные регистры общего назначения полностью взаимозаменяемы, то есть имеют универсальное назначение, могут хранить как данные, так и адреса (указатели), индексы и т.д. Максимально 60

61 допустимый объем памяти для данного процессора составлял 64 Кбайт (адрес памяти 16-разрядный). В 16-разрядном процессоре MC68000 фирмы Motorola было 19 регистров: 16- разрядный регистр состояния, 32-разрядный регистр счетчика команд, 9 регистров адреса (32-разрядных) и 8 регистров данных (32-разрядных). Два регистра адреса отведены под указатели стека. Максимально допустимый объем адресуемой памяти 16 Мбайт (внешняя шина адреса 24-разрядная). Все 8 регистров данных взаимозаменяемы. 7 регистров адреса тоже взаимозаменяемы. В 16-разрядном процессоре Intel 8086, который стал базовым в линии процессоров, используемых в персональных компьютерах, реализован принципиально другой подход. Каждый регистр этого процессора имеет свое особое назначение, и заменять друг друга регистры могут только частично или же не могут вообще. Остановимся на особенностях этого процессора подробнее. Процессор 8086 имеет 14 регистров разрядностью по 16 бит. Из них четыре регистра (AX, BX, CX, DX) это регистры данных, каждый из которых помимо хранения операндов и результатов операций имеет еще и свое специфическое назначение: — регистр AX умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода); — регистр BX базовый регистр в вычислениях адреса; — регистр CX счетчик циклов; — регистр DX определение адреса ввода/вывода. Для регистров данных существует возможность раздельного использования обоих байтов (например, для регистра AX они имеют обозначения AL младший байт и AH старший байт). 61

62 Следующие четыре внутренних регистра процессора это сегментные регистры, каждый из которых определяет положение одного из рабочих сегментов (рис. 30): — регистр CS (Code Segment) соответствует сегменту команд, исполняемых в данный момент; — регистр DS (Data Segment) соответствует сегменту данных, с которыми работает процессор; — регистр ES (Extra Segment) соответствует дополнительному сегменту данных; — регистр SS (Stack Segment) соответствует сегменту стека. Рис. 30. Сегменты команд, данных и стека в памяти. В принципе, все эти сегменты могут и перекрываться для оптимального использования пространства памяти. Например, если программа занимает только часть сегмента, то сегмент данных может начинаться сразу после завершения работы программы (с точностью 16 байт), а не после окончания всего сегмента программы. Следующие пять регистров процессора (SP Stack Pointer, BP Base Pointer, SI Source Index, DI Destination Index, IP Instruction Pointer) служат 62

63 указателями (то есть определяют смещение в пределах сегмента). Например, счетчик команд процессора образуется парой регистров CS и IP, а указатель стека парой регистров SP и SS. Регистры SI, DI используются в строковых операциях, то есть при последовательной обработке нескольких ячеек памяти одной командой. Последний регистр FLAGS это регистр состояния процессора (PSW). Из его 16 разрядов используются только девять (рис. 31): CF (Carry Flag) флаг переноса при арифметических операциях; PF (Parity Flag) флаг четности результата, AF (Auxiliary Flag) флаг дополнительного переноса; ZF (Zero Flag) флаг нулевого результата; SF (Sign Flag) флаг знака (совпадает со старшим битом результата); TF (Trap Flag) флаг пошагового режима (используется при отладке),; IF (Interrupt-enable Flag) флаг разрешения аппаратных прерываний; DF (Direction Flag) флаг направления при строковых операциях,; OF (Overflow Flag) флаг переполнения. Рис. 31. Регистр состояния процессора Биты регистра состояния устанавливаются или очищаются в зависимости от результата исполнения предыдущей команды и используются некоторыми командами процессора. Биты регистра состояния могут также устанавливаться и очищаться специальными командами процессора (о системе команд процессора будет рассказано в следующем разделе). Во многих процессорах выделяется специальный регистр, называемый аккумулятором (то есть накопителем). При этом, как правило, только этот регистр-аккумулятор может участвовать во всех операциях, только через него может производиться взаимодействие с устройствами ввода/вывода. Иногда в него же помещается результат любой выполненной команды (в этом случае 63

64 говорят даже об «аккумуляторной» архитектуре процессора). Например, в процессоре 8086 регистр данных АХ можно считать своеобразным аккумулятором, так как именно он обязательно участвует в командах умножения и деления, а также только через него можно пересылать данные в устройство ввода/вывода и из устройства ввода/вывода. Выделение специального регистра-аккумулятора упрощает структуру процессора и ускоряет пересылки кодов внутри процессора, но в некоторых случаях замедляет работу системы в целом, так как весь поток информации должен пройти через один регистр-аккумулятор. В случае, когда несколько регистров процессора полностью взаимозаменяемы, таких проблем не возникает Система команд процессора В общем случае система команд процессора включает в себя следующие четыре основные группы команд: — команды пересылки данных; — арифметические команды; — логические команды; — команды переходов. Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника (Source) в приемник (Destination). Источником и приемником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется. Команды пересылки данных занимают очень важное место в системе команд любого процессора. Они выполняют следующие важнейшие функции: загрузка (запись) содержимого во внутренние регистры процессора; сохранение в памяти содержимого внутренних регистров процессора; копирование содержимого из одной области памяти в другую; 64

65 запись в устройства ввода/вывода и чтение из устройств ввода/вывода. В некоторых процессорах все эти функции выполняются одной единственной командой MOV (для байтовых пересылок MOVB) но с различными методами адресации операндов. В других процессорах помимо команды MOV имеется еще несколько команд для выполнения перечисленных функций. Например, для загрузки регистров могут использоваться команды загрузки, причем для разных регистров разные команды (их обозначения обычно строятся с использованием слова LOAD загрузка). Часто выделяются специальные команды для сохранения в стеке и для извлечения из стека (PUSH сохранить в стеке, POP извлечь из стека). Эти команды выполняют пересылку с автоинкрементной и с автодекрементной адресацией (даже если эти режимы адресации не предусмотрены в процессоре в явном виде). Иногда в систему команд вводится специальная команда MOVS для строчной (или цепочечной) пересылки данных (например, в процессоре 8086). Эта команда пересылает не одно слово или байт, а заданное количество слов или байтов (MOVSB), то есть инициирует не один цикл обмена по магистрали, а несколько. При этом адрес памяти, с которым происходит взаимодействие, увеличивается на 1 или на 2 после каждого обращения или же уменьшается на 1 или на 2 после каждого обращения. То есть в неявном виде применяется автоинкрементная или автодекрементная адресация. В некоторых процессорах (например, в процессоре 8086) специально выделяются функции обмена с устройствами ввода/вывода. Команда IN используется для ввода (чтения) информации из устройства ввода/вывода, а команда OUT используется для вывода (записи) в устройство ввода/вывода. Обмен информацией в этом случае производится между регистромаккумулятором и устройством ввода/вывода. Начиная с процессора 80286, добавлены команды строчного (цепочечного) ввода (команда INS) и строчного 65

66 вывода (команда OUTS). Эти команды позволяют пересылать целый массив (строку) данных из памяти в устройство ввода/вывода (OUTS) или из устройства ввода/вывода в память (INS). Адрес памяти после каждого обращения увеличивается или уменьшается (как и в случае с командой MOVS). Также к командам пересылки данных относятся команды обмена информацией (их обозначение строится на основе слова Exchange). Может быть предусмотрен обмен информацией между внутренними регистрами, между двумя половинами одного регистра (SWAP) или между регистром и ячейкой памяти. Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам требуется один или два входных операнда. Формируют команды один выходной операнд. Арифметические команды рассматривают коды операндов как числовые двоичные или двоично-десятичные коды. Эти команды могут быть разделены на пять основных групп: — команды операций с фиксированной запятой (сложение, вычитание, умножение, деление); — команды операций с плавающей запятой (сложение, вычитание, умножение, деление); — команды очистки; — команды инкремента и декремента; — команда сравнения. Команды операций с фиксированной запятой работают с кодами в регистрах процессора или в памяти как с обычными двоичными кодами. Команда сложения (ADD) вычисляет сумму двух кодов. Команда вычитания (SUB) вычисляет разность двух кодов. Команда умножения (MUL) вычисляет произведение двух кодов (разрядность результата вдвое больше разрядности 66

67 сомножителей). Команда деления (DIV) вычисляет частное от деления одного кода на другой. Причем все эти команды могут работать как с числами со знаком, так и с числами без знака. Команды операций с плавающей запятой (точкой) используют формат представления чисел с порядком и мантиссой (обычно эти числа занимают две последовательные ячейки памяти). В современных мощных процессорах набор команд с плавающей запятой не ограничивается только четырьмя арифметическими действиями, а содержит и множество других более сложных команд, например, вычисление тригонометрических функций, логарифмических функций, а также сложных функций, необходимых при обработке звука и изображения. Команды очистки (CLR) предназначены для записи нулевого кода в регистр или ячейку памяти. Эти команды могут быть заменены командами пересылки нулевого кода, но специальные команды очистки обычно выполняются быстрее, чем команды пересылки. Команды очистки иногда относят к группе логических команд, но суть их от этого не меняется. Команды инкремента (увеличения на единицу, INC) и декремента (уменьшения на единицу, DEC) также бывают очень удобны. Их можно в принципе заменить командами суммирования с единицей или вычитания единицы, но инкремент и декремент выполняются быстрее, чем суммирование и вычитание. Эти команды требуют одного входного операнда, который одновременно является и выходным операндом. Наконец, команда сравнения (обозначается CMP) предназначена для сравнения двух входных операндов. По сути, она вычисляет разность этих двух операндов, но выходного операнда не формирует, а всего лишь изменяет биты в регистре состояния процессора (PSW) по результату этого вычитания. Следующая за командой сравнения команда (обычно это команда перехода) будет анализировать биты в регистре состояния процессора и выполнять 67

68 действия в зависимости от их значений. В некоторых процессорах предусмотрены команды цепочечного сравнения двух последовательностей операндов, находящихся в памяти (например, в процессоре 8086 и совместимых с ним). Логические команды производят над операндами логические операции, например, логическое И, логическое ИЛИ, исключающее ИЛИ, очистку, инверсию, разнообразные сдвиги (вправо, влево, арифметический сдвиг, циклический сдвиг). Этим командам, как и арифметическим, требуется один или два входных операнда, и формируют они один выходной операнд. Логические команды выполняют над операндами логические (побитовые) операции, то есть они рассматривают коды операндов не как единое число, а как набор отдельных битов. Этим они отличаются от арифметических команд. Логические команды выполняют следующие основные операции: — логическое И, логическое ИЛИ, сложение по модулю 2 (Исключающее ИЛИ); — логические, арифметические и циклические сдвиги; — проверка битов и операндов; — установка и очистка битов (флагов) регистра состояния процессора (PSW). Команды логических операций позволяют побитно вычислять основные логические функции от двух входных операндов. Кроме того, операция И (AND) используется для принудительной очистки заданных битов (в качестве одного из операндов при этом используется код маски, в котором разряды, требующие очистки, установлены в нуль). Операция ИЛИ (OR) применяется для принудительной установки заданных битов (в качестве одного из операндов при этом используется код маски, в котором разряды, требующие установки в единицу, равны единице). Операция «Исключающее ИЛИ» (XOR) используется для инверсии заданных битов (в качестве одного из операндов при этом применяется код маски, в котором биты, подлежащие инверсии, установлены в 68

69 единицу). Команды требуют двух входных операндов и формируют один выходной операнд. Команды сдвигов позволяют побитно сдвигать код операнда вправо (в сторону младших разрядов) или влево (в сторону старших разрядов). Тип сдвига (логический, арифметический или циклический) определяет, каково будет новое значение старшего бита (при сдвиге вправо) или младшего бита (при сдвиге влево), а также определяет, будет ли где-то сохранено прежнее значение старшего бита (при сдвиге влево) или младшего бита (при сдвиге вправо). Например, при логическом сдвиге вправо в старшем разряде кода операнда устанавливается нуль, а младший разряд записывается в качестве флага переноса в регистр состояния процессора. А при арифметическом сдвиге вправо значение старшего разряда сохраняется прежним (нулем или единицей), младший разряд также записывается в качестве флага переноса. Циклические сдвиги позволяют сдвигать биты кода операнда по кругу (по часовой стрелке при сдвиге вправо или против часовой стрелки при сдвиге влево). При этом в кольцо сдвига может входить или не входить флаг переноса. В бит флага переноса (если он используется) записывается значение старшего бита при циклическом сдвиге влево и младшего бита при циклическом сдвиге вправо. Соответственно, значение бита флага переноса будет переписываться в младший разряд при циклическом сдвиге влево и в старший разряд при циклическом сдвиге вправо. Для примера на рис. 32 показаны действия, выполняемые командами сдвигов вправо. Команды проверки битов и операндов предназначены для установки или очистки битов регистра состояния процессора в зависимости от значения выбранных битов или всего операнда в целом. Выходного операнда команды не формируют. Команда проверки операнда (TST) проверяет весь код операнда в целом на равенство нулю и на знак (на значение старшего бита), она требует 69

70 только одного входного операнда. Команда проверки бита (BIT) проверяет только отдельные биты, для выбора которых в качестве второго операнда используется код маски. В коде маски проверяемым битам основного операнда должны соответствовать единичные разряды. Рис. 32. Команды сдвигов вправо. Наконец, команды установки и очистки битов регистра состояния процессора (то есть флагов) позволяют установить или очистить любой флаг, что бывает очень удобно. Каждому флагу обычно соответствуют две команды, одна из которых устанавливает его в единицу, а другая сбрасывает в нуль. Например, флагу переноса C (Carry) будут соответствовать команды CLC (очистка) и SEC или STC (установка). Команды переходов предназначены для изменения обычного порядка последовательного выполнения команд. С их помощью организуются переходы на подпрограммы и возвраты из них, всевозможные циклы, ветвления программ, пропуски фрагментов программ и т.д. Команды переходов всегда меняют содержимое счетчика команд. Переходы могут быть условными и безусловными. Именно эти команды позволяют строить сложные алгоритмы обработки информации. 70

71 В соответствии с результатом каждой выполненной команды устанавливаются или очищаются биты регистра состояния процессора (PSW). Но надо помнить, что не все команды изменяют все имеющиеся в PSW флаги. Это определяется особенностями каждого конкретного процессора. У разных процессоров системы команд существенно различаются, но в основе своей они очень похожи. Количество команд у процессоров также различно. Например, у процессора МС68000 всего 61 команда, а у процессора команды. У современных мощных процессоров количество команд достигает нескольких сотен. В то же время существуют процессоры с сокращенным набором команд (так называемые RISC-процессоры), в которых за счет максимального сокращения количества команд достигается увеличение эффективности и скорости их выполнения. Рассмотрим теперь особенности четырех выделенных групп команд процессора более подробно. Команды переходов предназначены для организации всевозможных циклов, ветвлений, вызовов подпрограмм и т.д., то есть они нарушают последовательный ход выполнения программы. Эти команды записывают в регистр-счетчик команд новое значение и тем самым вызывают переход процессора не к следующей по порядку команде, а к любой другой команде в памяти программ. Некоторые команды переходов предусматривают в дальнейшем возврат назад, в точку, из которой был сделан переход, другие не предусматривают этого. Если возврат предусмотрен, то текущие параметры процессора сохраняются в стеке. Если возврат не предусмотрен, то текущие параметры процессора не сохраняются. Команды переходов без возврата делятся на две группы: — команды безусловных переходов; — команды условных переходов. 71

72 В обозначениях этих команд используются слова Branch (ветвление) и Jump (прыжок). Команды безусловных переходов вызывают переход в новый адрес независимо ни от чего. Они могут вызывать переход на указанную величину смещения (вперед или назад) или же на указанный адрес памяти. Величина смещения или новое значение адреса указываются в качестве входного операнда. Команды условных переходов вызывают переход не всегда, а только при выполнении заданных условий. В качестве таких условий обычно выступают значения флагов в регистре состояния процессора (PSW). То есть условием перехода является результат предыдущей операции, меняющей значения флагов. Всего таких условий перехода может быть от 4 до 16. Несколько примеров команд условных переходов: — переход, если равно нулю; — переход, если не равно нулю; — переход, если есть переполнение; — переход, если нет переполнения; — переход, если больше нуля; — переход, если меньше или равно нулю. Если условие перехода выполняется, то производится загрузка в регистрсчетчик команд нового значения. Если же условие перехода не выполняется, счетчик команд просто наращивается, и процессор выбирает и выполняет следующую по порядку команду. Специально для проверки условий перехода применяется команда сравнения (CMP), предшествующая команде условного перехода (или даже нескольким командам условных переходов). Но флаги могут устанавливаться и любой другой командой, например командой пересылки данных, любой арифметической или логической командой. Отметим, что сами команды 72

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

74 счетчика команд (текущий адрес) сохраняется перед выполнением перехода в стеке. Рис. 34. Реализация разветвления на три ветви. Для обратного возврата в точку вызова подпрограммы (точку перехода) используется специальная команда возврата (RET или RTS). Эта команда извлекает из стека значение адреса команды перехода и записывает его в регистр-счетчик команд. Особое место среди команд перехода с возвратом занимают команды прерываний (распространенное название INT). Эти команды в качестве входного операнда требуют номер прерывания (адрес вектора). Обслуживание таких переходов осуществляется точно так же, как и аппаратных прерываний. То есть для выполнения данного перехода процессор обращается к таблице векторов прерываний и получает из нее по номеру прерывания адрес памяти, в который ему необходимо перейти. Адрес вызова прерывания и содержимое регистра состояния процессора (PSW) сохраняются в стеке. Сохранение PSW важное отличие команд прерывания от команд переходов с возвратом. Команды прерываний во многих случаях оказываются удобнее, чем обычные команды переходов с возвратом. Сформировать таблицу векторов прерываний можно один раз, а потом уже обращаться к ней по мере необходимости. Номер 74

75 прерывания соответствует номеру подпрограммы, то есть номеру функции, выполняемой подпрограммой. Поэтому команды прерывания гораздо чаще включаются в системы команд процессоров, чем обычные команды переходов с возвратом. Для возврата из подпрограммы, вызванной командой прерывания, используется команда возврата из прерывания (IRET или RTI). Эта команда извлекает из стека сохраненное там значение счетчика команд и регистра состояния процессора (PSW). Отметим, что у некоторых процессоров предусмотрены также команды условных прерываний, например, команда прерывания при переполнении. Конечно, в данном разделе мы рассмотрели только основные команды, наиболее часто встречающиеся в процессорах. У конкретных процессоров могут быть и многие другие команды, не относящиеся к перечисленным группам команд. Но изучать их надо уже после того, как выбран тип процессора, подходящий для задачи, решаемой данной микропроцессорной системой Быстродействие процессора Быстродействие процессора это одна из важнейших его характеристик, определяющая эффективность работы всей микропроцессорной системы в целом. Быстродействие процессора зависит от множества факторов, что затрудняет сравнение быстродействия даже разных процессоров внутри одного семейства, не говоря уже о процессорах разных фирм и разного назначения. Выделим важнейшие факторы, влияющие на быстродействие процессора. Прежде всего, быстродействие зависит от тактовой частоты процессора. Все операции внутри процессора выполняются синхронно, тактируются единым тактовым сигналом. Понятно, что чем больше тактовая частота, тем быстрее работает процессор, причем, например, двукратное увеличение тактовой 75

76 частоты какого-то процессора снижает вдвое время выполнения команд этим процессором. Однако надо учитывать, что разные процессоры выполняют одинаковые команды за разное количество тактов, причем количество тактов, затрачиваемых на команду, может изменяться от одного такта до десятков или даже сотен. В некоторых процессорах за счет распараллеливания микроопераций на команду тратится даже меньше одного такта. Количество тактов, затрачиваемых на выполнение команды, зависит от сложности этой команды и от методов адресации операндов. Например, быстрее всего (за меньшее число тактов) выполняются команды пересылки данных между внутренними регистрами процессора. Медленнее всего (за большое число тактов) выполняются сложные арифметические команды с плавающей запятой, операнды которых хранятся в памяти. Первоначально для количественной оценки производительности процессоров применялась единица измерения MIPS (Mega Instruction Per Second), соответствовавшая количеству миллионов выполняемых инструкций (команд) за секунду. Естественно, изготовители микропроцессоров старались ориентироваться на самые быстрые команды. Понятно, что подобный показатель не слишком удачен. Для измерения производительности при выполнении вычислений с плавающей запятой (точкой) чуть позже была предложена единица FLOPS (Floating point Operations Per Second), но она по определению узкоспециальная, так как в некоторых системах операции с плавающей запятой просто не используются. Другой аналогичный показатель быстродействия процессора время выполнения коротких (быстрых) операций. Время выполнения команд важный, но далеко не единственный фактор, определяющий быстродействие. Большое значение имеет также структура системы команд процессора. Например, некоторым процессорам для выполнения какой-то операции 76

77 понадобится одна команда, а другим процессорам несколько команд. Какието процессоры имеют систему команд, позволяющую быстро решать задачи одного типа, а какие-то задачи другого типа. Важны и методы адресации, разрешенные в данном процессоре, и наличие сегментирования памяти, и способы взаимодействия процессора с устройствами ввода/вывода и т.д. Существенно влияет на быстродействие системы в целом и то, как процессор «общается» с памятью команд и памятью данных, применяется ли совмещение выборки команд из памяти с выполнением ранее выбранных команд. Быстродействие системы в целом определяется также и разрядностью процессора. Например, 8-разрядный процессор будет медленнее пересылать и обрабатывать большие массивы данных, чем 16-разрядный процессор. Точно так же 16-разрядный процессор будет значительно медленнее работать с большими числами (большими, чем 65536), чем 32-разрядный процессор. При высокой сложности решаемых задач быстродействие системы зависит и от общего объема системной памяти. Ведь если системной памяти мало, системе приходится сохранять данные во внешней памяти (например, на магнитном диске), а это очень сильно (на несколько порядков) замедляет работу. Так что разрядность шины адреса процессора тоже важна. Поэтому количественные показатели производительности процессоров очень условны, они лишь косвенно характеризуют быстродействие системы на базе этого процессора. Тем не менее, некоторые производители предлагают количественные показатели для своих процессоров, которые характеризуют время выполнения специально составленных тестовых программ, содержащих самые различные команды в тех или иных соотношениях. Так, для сравнения производительности 32-разрядных процессоров фирма Intel, производящая процессоры для персональных компьютеров, в 1992 году предложила свою единицу измерения icomp Index (Intel COmparative Microprocessor Performance). Для вычисления этого показателя используется 77

78 смесь 16- и 32-битных целочисленных команд, команд с плавающей точкой, команд обработки графики и видео. В качестве базового взят процессор i486sx-25, чей индекс принят равным 100. В 1996 году разработчиками Intel был предложен другой показатель icomp Index 2.0, для вычисления которого не используются 16-разрядные команды, зато введен мультимедийный тест, а за базу взят Pentium-120, чей индекс принят равным 100. При этом надо учитывать, что измерения проводятся в составе системы, настроенной на максимальное быстродействие именно данных процессоров, и только самой фирмой Intel. Ценность этих показателей и всех им подобных не слишком велика. Для конкретного компьютера и разных процессоров величина показателя может предоставить вполне объективные данные, позволяющие оценить, например, целесообразность замены процессора на более мощный. Но усредненность показателей icomp не позволяет точно сказать, как будет себя вести процессор в различных задачах, которые ориентированы на преимущественное использование разных типов команд. Точная оценка быстродействия процессора возможна только в составе конкретной системы при решении определенной задачи. Но все перечисленные здесь факторы можно и нужно учитывать при выборе процессора. А количественные показатели помогают сделать выбор. 5. Функции памяти Память микропроцессорной системы выполняет функцию временного или постоянного хранения данных и команд. Объем памяти определяет допустимую сложность выполняемых системой алгоритмов, а также в некоторой степени и скорость работы системы в целом. Модули памяти выполняются на микросхемах памяти (оперативной или постоянной). Все чаще в составе микропроцессорных систем используется флэш-память (англ. flash memory), 78

79 которая представляет собой энергонезависимую память с возможностью многократной перезаписи содержимого. Информация в памяти хранится в ячейках, количество разрядов которых равно количеству разрядов шины данных процессора. Обычно оно кратно восьми (например, 8, 16, 32, 64). Допустимое количество ячеек памяти определяется количеством разрядов шины адреса как 2 N, где N количество разрядов шины адреса. Чаще всего объем памяти измеряется в байтах независимо от разрядности ячейки памяти. Используются также следующие более крупные единицы объема памяти: килобайт 2 10 или 1024 байта (обозначается Кбайт), мегабайт 2 20 или байт (обозначается Мбайт), гигабайт 2 30 байт (обозначается Гбайт), терабайт 2 40 (обозначается Тбайт). Совокупность ячеек памяти называется обычно пространством памяти системы. Для подключения модуля памяти к системной магистрали используются блоки сопряжения, которые включают в себя дешифратор (селектор) адреса, схему обработки управляющих сигналов магистрали и буферы данных (рис. 35). Рис. 35. Структура модуля памяти. Оперативная память общается с системной магистралью в циклах чтения и записи, постоянная память только в циклах чтения. Обычно в составе системы имеется несколько модулей памяти, каждый из которых работает в 79

80 своей области пространства памяти. Селектор адреса как раз и определяет, какая область адресов пространства памяти отведена данному модулю памяти. Схема управления вырабатывает в нужные моменты сигналы разрешения работы памяти (CS) и сигналы разрешения записи в память (WR). Буферы данных передают данные от памяти к магистрали или от магистрали к памяти. В пространстве памяти микропроцессорной системы обычно выделяются несколько особых областей, которые выполняют специальные функции. Память программы начального запуска всегда выполняется на ПЗУ или флэш-памяти. Именно с этой области процессор начинает работу после включения питания и после сброса его с помощью сигнала RESET. Память для стека или стек (Stack) это часть оперативной памяти, предназначенная для временного хранения данных в режиме LIFO (Last In First Out). Особенность стека по сравнению с другой оперативной памятью это заданный и неизменяемый способ адресации. При записи любого числа (кода) в стек число записывается по адресу, определяемому как содержимое регистра указателя стека, предварительно уменьшенное (декрементированное) на единицу (или на два, если 16-разрядные слова расположены в памяти по четным адресам). При чтении из стека число читается из адреса, определяемого содержимым указателя стека, после чего это содержимое указателя стека увеличивается (инкрементируется) на единицу (или на два). В результате получается, что число, записанное последним, будет прочитано первым, а число, записанное первым, будет прочитано последним. Такая память называется LIFO или памятью магазинного типа (например, в магазине автомата патрон, установленный последним, будет извлечен первым). Принцип действия стека показан на рис.36 (адреса ячеек памяти выбраны условно). 80

81 Пусть, например, текущее состояние указателя стека , и в него надо записать два числа (слова). Первое слово будет записано по адресу (перед записью указатель стека уменьшится на два). Второе по адресу После записи содержимое указателя стека Если затем прочитать из стека два слова, то первым будет прочитано слово из адреса , а после чтения указатель стека станет равным Вторым будет прочитано слово из адреса , а указатель стека станет равным Все вернулось к исходному состоянию. Первое записанное слово читается вторым, а второе первым. Рис. 36. Принцип работы стека. Необходимость такой адресации становится очевидной в случае многократно вложенных подпрограмм. Пусть, например, выполняется основная программа, и из нее вызывается подпрограмма 1. Если нам надо сохранить значения данных и внутренних регистров основной программы на время выполнения подпрограммы, мы перед вызовом подпрограммы сохраним их в стеке (запишем в стек), а после ее окончания извлечем (прочитаем) их из стека. Если же из подпрограммы 1 вызывается подпрограмма 2, то ту же самую операцию мы проделаем с данными и содержимым внутренних регистров подпрограммы 1. Понятно, что внутри подпрограммы 2 крайними в стеке (читаемыми в первую очередь) будут данные из подпрограммы 1, а данные из основной 81

82 программы будут глубже. При этом в случае чтения из стека автоматически будет соблюдаться нужный порядок читаемой информации. То же самое будет и в случае, когда таких уровней вложения подпрограмм гораздо больше. То есть то, что надо хранить подольше, прячется глубже, а то, что скоро может потребоваться с краю. В системе команд любого процессора для обмена информацией со стеком предусмотрены специальные команды записи в стек (PUSH) и чтения из стека (POP). В стеке можно прятать не только содержимое всех внутренних регистров процессоров, но и содержимое регистра признаков (слово состояния процессора, PSW). Это позволяет, например, при возвращении из подпрограммы контролировать результат последней команды, выполненной непосредственно перед вызовом этой подпрограммы. Можно также хранить в стеке и данные, для того чтобы удобнее было передавать их между программами и подпрограммами. В общем случае, чем больше область памяти, отведенная под стек, тем больше свободы у программиста и тем более сложные программы могут выполняться. Следующая специальная область памяти это таблица векторов прерываний. Вообще, понятие прерывания довольно многозначно. Под прерыванием в общем случае понимается не только обслуживание запроса внешнего устройства, но и любое нарушение последовательной работы процессора. Например, может быть предусмотрено прерывание по факту некорректного выполнения арифметической операции типа деления на ноль. Или же прерывание может быть программным, когда в программе используется команда перехода на какую-то подпрограмму, из которой затем последует возврат в основную программу. В последнем случае общее с истинным прерыванием только то, как осуществляется переход на подпрограмму и возврат из нее. 82

83 Любое прерывание обрабатывается через таблицу векторов (указателей) прерываний. В этой таблице в простейшем случае находятся адреса начала программ обработки прерываний, которые и называются векторами. Длина таблицы может быть довольно большой (до нескольких сот элементов). Обычно таблица векторов прерываний располагается в начале пространства памяти (в ячейках памяти с малыми адресами). Адрес каждого вектора (или адрес начального элемента каждого вектора) представляет собой номер прерывания. В случае аппаратных прерываний номер прерывания или задается устройством, запросившим прерывание (при векторных прерываниях), или же задается номером линии запроса прерываний (при радиальных прерываниях). Процессор, получив аппаратное прерывание, заканчивает выполнение текущей команды и обращается к памяти в область таблицы векторов прерываний, в ту ее строку, которая определяется номером запрошенного прерывания. Затем процессор читает содержимое этой строки (код вектора прерывания) и переходит в адрес памяти, задаваемый этим вектором. Начиная с этого адреса, в памяти должна располагаться программа обработки прерывания с данным номером. В конце программы обработки прерываний обязательно должна располагаться команда выхода из прерывания, выполнив которую, процессор возвращается к выполнению прерванной основной программы. Параметры процессора на время выполнения программы обработки прерывания сохраняются в стеке. Пусть, например, процессор (рис. 37) выполнял основную программу и команду, находящуюся в адресе памяти 5000 (условно). В этот момент он получил запрос прерывания с номером (адресом вектора) 4. Процессор заканчивает выполнение команды из адреса Затем он сохраняет в стеке текущее значение счетчика команд (5001) и текущее значение PSW. После этого процессор читает из адреса 4 памяти код вектора прерывания. Пусть этот 83

84 код равен Процессор переходит в адрес памяти 6000 и приступает к выполнению программы обработки прерывания, начинающейся с этого адреса. Пусть эта программа заканчивается в адресе Дойдя до этого адреса, процессор возвращается к выполнению прерванной программы. Для этого он извлекает из стека значение адреса (5001), на котором его прервали, и бывшее в тот момент PSW. Затем процессор читает команду из адреса 5001 и дальше последовательно выполняет команды основной программы. Рис. 37. Упрощенный алгоритм обработки прерывания. Прерывание в случае аварийной ситуации обрабатывается точно так же, только адрес вектора прерывания (номер строки в таблице векторов) жестко привязан к данному типу аварийной ситуации. Программное прерывание тоже обслуживается через таблицу векторов прерываний, но номер прерывания указывается в составе команды, вызывающей прерывание. Такая сложная, на первый взгляд, организация прерываний позволяет программисту легко менять программы обработки прерываний, располагать их в любой области памяти, делать их любого размера и любой сложности. Во время выполнения программы обработки прерывания может поступить новый запрос на прерывание. В этом случае он обрабатывается точно так же, как описано, но основной программой считается прерванная программа обработки предыдущего прерывания. Это называется многократным 84

85 вложением прерываний. Механизм стека позволяет без проблем обслуживать это многократное вложение, так как первым из стека извлекается тот код, который был сохранен последним, то есть возврат из обработки данного прерывания происходит в программу обработки предыдущего прерывания. Отметим, что в более сложных случаях в таблице векторов прерываний могут находиться не адреса начала программ обработки прерываний, а так называемые дескрипторы (описатели) прерываний. Но конечным результатом обработки этого дескриптора все равно будет адрес начала программы обработки прерываний. С точки зрения реализации механизма доступа к стековой памяти выделяют аппаратный и аппаратно-программный (внешний) стеки. Аппаратный стек представляет собой совокупность регистров, связи между которыми организованы таким образом, что при записи и считывании данных содержимое стека автоматически сдвигается. Обычно емкость аппаратного стека ограничена диапазоном от нескольких регистров до нескольких десятков регистров, поэтому в большинстве МП такой стек используется для хранения содержимого программного счетчика и его называют стеком команд. Основное достоинство аппаратного стека — высокое быстродействие, а недостаток — ограниченная емкость. Наиболее распространенным в настоящее время и, возможно, лучшим вариантом организации стека является использование области памяти. Для адресации стека используется указатель стека, который предварительно загружается в регистр и определяет адрес последней занятой ячейки. Помимо команд CALL и RET, по которым записывается в стек и восстанавливается содержимое программного счетчика, имеются команды PUSH и POP, которые используются для временного запоминания в стеке содержимого регистров и их восстановления, соответственно. В некоторых МП содержимое основных регистров запоминается в стеке автоматически при прерывании программ. 85

86 Содержимое регистра указателя стека при записи уменьшается, а при считывании увеличивается на 1 при выполнении команд PUSH и POP, соответственно. Наконец, еще одна специальная область памяти микропроцессорной системы это память устройств, подключенных к системной шине. Такое решение встречается нечасто, но иногда оно очень удобно. То есть процессор получает возможность обращаться к внутренней памяти устройств ввода/вывода или каких-то еще подключенных к системной шине устройств, как к своей собственной системной памяти. Обычно окно в пространстве памяти, выделяемое для этого, не слишком большое. Все остальные части пространства памяти, как правило, имеют универсальное назначение. В них могут располагаться как данные, так и программы (конечно, в случае одношинной архитектуры). Иногда это пространство памяти используется как единое целое, без всяких границ. А иногда пространство памяти делится на сегменты с программно изменяемым адресом начала сегмента и с установленным размером сегмента. Оба подхода имеют свои плюсы и минусы. Например, использование сегментов позволяет защитить область программ или данных, но зато границы сегментов могут затруднять размещение больших программ и массивов данных. В заключение остановимся на проблеме разделения адресов памяти и адресов устройств ввода/вывода. Существует два основных подхода к решению этой проблемы: — выделение в общем адресном пространстве системы специальной области адресов для устройств ввода/вывода; — полное разделение адресных пространств памяти и устройств ввода/вывода. Первый подход хорош тем, что при обращении к устройствам ввода/вывода процессор может использовать те же команды, которые служат для взаимодействия с памятью. Но адресное пространство памяти должно быть 86

87 уменьшено на величину адресного пространства устройств ввода/вывода. Например, при 16-разрядной шине адреса всего может быть 64К адресов. Из них 56К адресов отводится под адресное пространство памяти, а 8К адресов под адресное пространство устройств ввода/вывода. Преимущество второго подхода состоит в том, что память занимает все адресное пространство микропроцессорной системы. Для общения с устройствами ввода/вывода применяются специальные команды и специальные стробы обмена на магистрали. Именно так сделано, например, в персональных компьютерах. Но возможности взаимодействия с устройствами ввода/вывода в данном случае существенно ограничены по сравнению с возможностями общения с памятью Буферная память В микропроцессорных системах используются подсистемы с различным быстродействием, и, в частности, с различной скоростью передачи данных (рис. 38). Обычно обмен данными между такими подсистемами реализуется с использованием прерываний или канала прямого доступа к памяти. В первую очередь подсистема 1 формирует запрос на обслуживание по мере готовности данных к обмену. Однако обслуживание прерываний связано с непроизводительными потерями времени и при пакетном обмене производительность подсистемы 2 заметно уменьшается. При обмене данными с использованием канала прямого доступа к памяти подсистема 1 передает данные в память подсистемы 2. Данный способ обмена достаточно эффективен с точки зрения быстродействия, но для его реализации необходим довольно сложный контроллер прямого доступа к памяти. Наиболее эффективно обмен данными между подсистемами с различным быстродействием реализуется при наличии между ними специальной буферной памяти. Данные от подсистемы 1 временно запоминаются в буферной памяти 87

88 Рис. 38. Применение буферной памяти. до готовности подсистемы 2 принять их. Емкость буферной памяти должна быть достаточной для хранения тех блоков данных, которые подсистема 1 формирует между считываниями их подсистемой 2. Отличительной особенностью буферной памяти является запись данных с быстродействием и под управлением подсистемы 1, а считывание — с быстродействием и под управлением подсистемы 2 («эластичная память»). В общем случае память должна выполнять операции записи и считывания совершенно независимо и даже одновременно, что устраняет необходимость синхронизации подсистем. Буферная память должна сохранять порядок поступления данных от подсистемы 1, т.е. работать по принципу «первое записанное слово считывается первым» (First Input First Output — FIFO). Таким образом, под буферной памятью типа FIFO понимается ЗУПВ, которое автоматически следит за порядком поступления данных и выдает их в том же порядке, допуская выполнение независимых и одновременных операций записи и считывания. На рис. 39 приведена структурная схема буферной памяти типа FIFO емкостью 64×4. Рис. 39. Структурная схема буфера 64×4. 88

89 На кристалле размещены 64 4-битных регистра с независимыми цепями сдвига, организованных в 4 последовательных 64-битных регистра данных, 64-битный управляющий регистр, а также схема управления. Входные данные поступают на линии DI0-DI3, а вывод данных осуществляется через контакты DO0-DO3. Ввод (запись) данных производится управляющим сигналом SI (shift in), а вывод (считывание) — сигналом вывода SO (shift out). Ввод данных осуществляется только при наличии сигнала готовности ввода IR (input ready), а вывод — при наличии сигнала готовности вывода OR (output ready). Управляющий сигнал R (reset) производит сброс содержимого буфера. При вводе 4-битного слова под действием сигнала SI оно автоматически передвигается в ближайший к выходу свободный регистр. Состояние регистра данных отображается в соответствующем ему управляющем триггере, совокупность триггеров образует 64-битный управляющий регистр. Если регистр содержит данные, то управляющий триггер находится в состоянии 1, а если регистр не содержит данных, то триггер находится в состоянии 0. Как только управляющий бит соседнего справа регистра изменяется на 0, слово данных автоматически сдвигается к выходу. Перед началом работы в буфер подается сигнал сброса R и все управляющие триггеры переводятся в состояние 0 (все регистры буфера свободны). На выводе IR формируется логическая 1, т.е. буфер готов воспринимать входные данные. При действии сигнала ввода SI входное слово загружается в регистр P1, а управляющий триггер этого регистра устанавливается в состояние 1: на входе IR формируется логический 0. Связи между регистрами организованы таким образом, что поступившее в P1 слово «спонтанно» копируется во всех регистрах данных FIFO и появляется на выходных линиях DO0-DO3. Теперь все 64 регистра буфера содержат одинаковые слова, управляющий триггер последнего регистра P64 находится в состоянии 1, а остальные управляющие триггеры сброшены при передаче данных в соседние справа регистры. Состояние управляющего триггера P64 89

90 выведено на линию готовности выхода OR; OR принимает значение 1, когда в триггер записывается 1. Процесс ввода может продолжаться до полного заполнения буфера; в этом случае все управляющие триггеры находятся в состоянии 1 и на линии IR сохраняется логический 0. При подаче сигнала SO производится восприятие слова с линий DO0-DO3, управляющий триггер P64 переводится в состояние 1, на линии OR появляется логическая 1, а управляющий триггер P64 сбрасывается в 0. Затем этот процесс повторяется для остальных регистров и нуль в управляющем регистре перемещается к входу по мере сдвига данных вправо. В некоторых кристаллах буфера FIFO имеется дополнительная выходная линия флажка заполнения наполовину. На ней формируется сигнал 1, если число слов составляет более половины емкости буфера. Рассмотренный принцип организации FIFO допускает выполнение записи и считывания данных независимо и одновременно. Скорость ввода определяется временным интервалом, необходимым для передачи данных из P1, а выводить данные можно с такой же скоростью. Единственным ограничением является время распространения данных через FIFO, равное времени передачи входного слова на выход незаполненного буфера FIFO. Оно равняется произведению времени внутреннего сдвига и числа регистра данных. В буферах FIFO, выполненных по МОП — технологии и имеющих емкость 64 слова, время распространения составляет примерно 30 мкс, а в биполярных FIFO такой же емкости — примерно 2 мкс. Буферы можно наращивать как по числу слов, так и по их длине Кэш-память. Кэш-память (или просто кэш, от англ. Cache склад, тайник) предназначена для промежуточного хранения информации из системной памяти с целью ускорения доступа к ней. Ускорение достигается за счет использования более 90

91 быстрой памяти и более быстрого доступа к ней. При этом в кэш-памяти хранится постоянно обновляемая копия некоторой области основной памяти. Необходимость введения кэша связана с тем, что системная память персонального компьютера выполняется на микросхемах динамической памяти, которая характеризуется меньшей стоимостью, но и более низким быстродействием, по сравнению со статической памятью. Идея состоит в том, что благодаря введению быстрой буферной, промежуточной статической памяти можно ускорить обмен с медленной динамической памятью. По сути, кэш-память делает то же, что и применявшийся ранее конвейер команд, но на более высоком уровне. В кэш-памяти хранится копия некоторой части системной памяти, и процессор может обмениваться с этой частью памяти гораздо быстрее, чем с системной памятью. Причем в кэш-памяти могут храниться как команды, так и данные. Выигрыш в быстродействии от применения кэша связан с тем, что процессор в большинстве случаев обращается к адресам памяти, расположенным последовательно, один за другим, или же близко друг к другу. Поэтому высока вероятность того, что информация из этих адресов памяти окажется внутри небольшой кэш-памяти. Если же процессор обращается к адресу, расположенному далеко от тех, к которым он обращался ранее, кэш оказывается бесполезным и требует перезагрузки, что может даже замедлить обмен по сравнению со структурой без кэш-памяти. В принципе кэш-память может быть как внутренней (входить в состав процессора), так и внешней. Внутренний кэш называется кэшем первого уровня, внешний кэшем второго уровня. Объем внутреннего кэша обычно невелик типовое значение 32 Кбайт. Объем внешнего кэша может достигать нескольких мегабайт. Но принцип функционирования у них один и тот же. Кэш первого уровня процессора 486 имеет четырехканальную структуру (рис. 40). Каждый канал состоит из 128 строк по 16 байт в каждой. Одноименные 91

92 строки всех четырех каналов образуют 128 наборов из четырех строк, каждый из которых обслуживает свои адреса памяти. Каждой строке соответствует 21- разрядная информация об адресе скопированного в нее блока системной памяти. Эта информация называется тегом (Tag) строки. Кроме того, в состав кэша входит так называемый диспетчер, то есть область памяти с организацией 128 х 7, в которой хранятся 4-битные теги действительности (достоверности) для каждого из 128 наборов и 3-битные коды LRU (Least Recently Used) для каждого из 128 наборов. Тег действительности набора включает в себя 4 бита достоверности каждой из 4 строк, входящих в данный набор. Бит достоверности, установленный в Рис. 40. Структура внутреннего кэша процессора 486. единицу, говорит о том, что соответствующая строка заполнена; если он сброшен в нуль, то строка пуста. Биты LRU говорят о том, как давно было обращение к данному набору. Это нужно для того, чтобы обновлять наименее используемые наборы. Адресация кэш-памяти осуществляется с помощью 28 разрядов адреса. Из них 7 младших разрядов выбирают один из 128 наборов, а 21 старший разряд сравнивается с тегами всех 4 строк выбранного набора. Если теги совпадают с разрядами адреса, то получается ситуация кэш-попадания, а если нет, то ситуация кэш-промаха. 92

93 В случае цикла чтения при кэш-попадании байт или слово читаются из кэшпамяти. При кэш-промахе происходит обновление (перезагрузка) одной из строк кэш-памяти. В случае цикла записи при кэш-попадании производится запись как в кэшпамять, так и в основную системную память. При кэш-промахе запись производится только в системную память, а обновление строки кэш-памяти не производится. Эта строка становится недостоверной (ее бит достоверности сбрасывается в нуль). Такая политика записи называется сквозной или прямой записью (Write Through). В более поздних моделях процессоров применяется и обратная запись (Write Back), которая является более быстрой, так как требует гораздо меньшего числа обращений по внешней шине. При использовании обратной записи в основную память записываемая информация отправляется только в том случае, когда нужной строки в кэше нет. В случае же попадания модифицируется только кэш. В основную память измененная информация попадет только при перезаписи новой строки в кэш. Прежняя строка при этом целиком переписывается в основную память, и тем самым восстанавливается идентичность содержимого кэша и основной памяти. В случае, когда требуемая строка в кэше не представлена (ситуация кэшпромаха), запрос на запись направляется на внешнюю шину, а запрос на чтение обрабатывается несколько сложнее. Если этот запрос относится к кэшируемой области памяти, то выполняется цикл заполнения целой строки кэша (16 байт из памяти переписывается в одну из строк набора, обслуживающего данный адрес). Если затребованные данные не укладываются в одной строке, то заполняется и соседняя строка. Заполнение строки процессор старается выполнить самым быстрым способом пакетным циклом, однако внешний контроллер памяти может потребовать использования более медленных пересылок. 93

94 Внутренний запрос процессора на данные удовлетворяется сразу, как только данные считываются из памяти, а дальнейшее заполнение строки может идти параллельно с обработкой данных. Если в наборе, который обслуживает данный адрес памяти, имеется свободная строка, заполнена будет именно она. Если же свободных строк нет, заполняется строка, к которой дольше всех не обращались. Для этого используются биты LRU, которые модифицируются при каждом обращении к строке данного набора. Кроме того, существует возможность аннулирования строк (объявления их недостоверными) и очистки всей кэш-памяти. При сквозной записи очистка кэша проводится специальным внешним сигналом процессора, программным образом с помощью специальных команд, а также при начальном сбросе по сигналу RESET. При обратной записи очистка кэша подразумевает также выгрузку всех модифицированных строк в основную память. Отметим, что в пространстве памяти персонального компьютера имеются области, для которых кэширование принципиально недопустимо (например, разделяемая память аппаратурных адаптеров плат расширения). Режим пакетной передачи (Burst Mode), впервые появившийся в процессоре 486, предназначен для быстрых операций со строками кэша. Пакетный цикл обмена (Burst Cycle) отличается тем, что для пересылки всего пакета адрес по внешней шине адреса передается только один раз в начале пакета, а затем в каждом следующем такте передаются только данные. Адрес для каждого следующего кода данных вычисляется из начального адреса по правилам, установленным как передатчиком данных, так и их приемником. Например, адрес каждого следующего слова данных вычисляется как инкрементированный адрес предыдущего. В результате время передачи одного слова данных значительно сокращается. Понятно, что обмен пакетными циклами возможен только с устройствами, изначально способными 94

95 обслуживать такой цикл. Допустимая длина пакета не слишком велика, например, при чтении размер пакета ограничен одной строкой кэша. 6. Способы обмена информацией в микропроцессорной системе 6.1. Режимы работы микропроцессорной системы Как уже отмечалось, микропроцессорная система обеспечивает большую гибкость работы, она способна настраиваться на любую задачу. Гибкость эта обусловлена прежде всего тем, что функции, выполняемые системой, определяются программой (программным обеспечением, software), которую выполняет процессор. Аппаратура (аппаратное обеспечение, hardware) остается неизменной при любой задаче. Записывая в память системы программу, можно заставить микропроцессорную систему выполнять любую задачу, поддерживаемую данной аппаратурой. К тому же шинная организация связей микропроцессорной системы позволяет довольно легко заменять аппаратные модули, например, заменять память на новую большего объема или более высокого быстродействия, добавлять или модернизировать устройства ввода/вывода, наконец, заменять процессор на более мощный. Это также позволяет увеличить гибкость системы, продлить ее жизнь при любом изменении требований к ней. Но гибкость микропроцессорной системы определяется не только этим. Настраиваться на задачу помогает еще и выбор режима работы системы, то есть режима обмена информацией по системной магистрали (шине). Практически любая развитая микропроцессорная система (в том числе и компьютер) поддерживает три основных режима обмена по магистрали: — программный обмен информацией; — обмен с использованием прерываний (Interrupts); 95

96 — обмен с использованием прямого доступа к памяти (ПДП, DMA Direct Memory Access). Программный обмен информацией является основным в любой микропроцессорной системе. Он предусмотрен всегда, без него невозможны другие режимы обмена. В этом режиме процессор является единоличным хозяином (задатчиком, Master) системной магистрали. Все операции (циклы) обмена информацией в данном случае инициируются только процессором, все они выполняются строго в порядке, предписанном исполняемой программой. Процессор читает (выбирает) из памяти коды команд и исполняет их, читая данные из памяти или из устройства ввода/вывода, обрабатывая их, записывая данные в память или передавая их в устройство ввода/вывода. Путь процессора по программе может быть линейным, циклическим, может содержать переходы (прыжки), но он всегда непрерывен и полностью находится под контролем процессора. Ни на какие внешние события, не связанные с программой, процессор не реагирует (рис. 41). Все сигналы на магистрали в данном случае контролируются процессором. Рис. 41. Программный обмен информацией. Обмен по прерываниям используется тогда, когда необходима реакция микропроцессорной системы на какое-то внешнее событие, на приход 96

97 внешнего сигнала. В случае компьютера, внешним событием может быть, например, нажатие на клавишу клавиатуры или приход по локальной сети пакета данных. Компьютер должен реагировать на это, соответственно, выводом символа на экран или же чтением и обработкой принятого по сети пакета. В общем случае организовать реакцию на внешнее событие можно тремя различными путями: — с помощью постоянного программного контроля факта наступления события (так называемый метод опроса флага или polling); — с помощью прерывания, то есть насильственного перевода процессора с выполнения текущей программы на выполнение экстренно необходимой программы; — с помощью прямого доступа к памяти (ПДП), то есть без участия процессора при его отключении от системной магистрали. Проиллюстрировать эти три способа можно следующим простым примером. Допустим, вы готовите себе завтрак, поставив на плиту кипятиться молоко. Естественно, на закипание молока надо реагировать, причем срочно. Как это организовать? Первый путь постоянно следить за молоком, но тогда вы ничего другого не сможете делать. Правильнее будет регулярно поглядывать на молоко, делая одновременно что-то другое. Это программный режим с опросом флага. Второй путь установить на кастрюлю с молоком датчик, который подаст звуковой сигнал при закипании молока, и спокойно заниматься другими делами. Услышав сигнал, вы выключите молоко. Правда, возможно, вам придется сначала закончить то, что вы начали делать, так что ваша реакция будет медленнее, чем в первом случае. Наконец, третий путь состоит в том, чтобы соединить датчик на кастрюле с управлением плитой так, чтобы при закипании молока горелка была выключена без вашего участия (правда, 97

98 аналогия с ПДП здесь не очень точная, так как в данном случае на момент выполнения действия вас не отвлекают от работы). Первый случай с опросом флага реализуется в микропроцессорной системе постоянным чтением информации процессором из устройства ввода/вывода, связанного с тем внешним устройством, на поведение которого необходимо срочно реагировать. Во втором случае в режиме прерывания процессор, получив запрос прерывания от внешнего устройства (часто называемый IRQ Interrupt ReQuest), заканчивает выполнение текущей команды и переходит к программе обработки прерывания. Закончив выполнение программы обработки прерывания, он возвращается к прерванной программе с той точки, где его прервали (рис. 42). Здесь важно то, что вся работа, как и в случае программного режима, осуществляется самим процессором, внешнее событие просто временно отвлекает его. Реакция на внешнее событие по прерыванию в общем случае медленнее, чем при программном режиме. Как и в случае программного обмена, здесь все сигналы на магистрали выставляются процессором, то есть он полностью контролирует магистраль. Для обслуживания прерываний в систему иногда вводится специальный модуль контроллера прерываний, но он в обмене информацией не участвует. Его задача состоит в том, чтобы упростить работу процессора с внешними запросами прерываний. Этот контроллер обычно программно управляется процессором по системной магистрали. Естественно, никакого ускорения работы системы прерывание не дает. Его применение позволяет только отказаться от постоянного опроса флага внешнего события и временно, до наступления внешнего события, занять процессор выполнением каких-то других задач. Прямой доступ к памяти (ПДП, DMA) это режим, принципиально отличающийся от двух ранее рассмотренных режимов тем, что обмен по 98

99 системной шине идет без участия процессора. Внешнее устройство, требующее обслуживания, сигнализирует процессору, что необходим режим ПДП. В ответ Рис. 42. Обслуживание прерывания. на это процессор заканчивает выполнение текущей команды и отключается от всех шин, сигнализируя запросившему устройству, что обмен в режиме ПДП можно начинать. Операция ПДП сводится к пересылке информации из устройства ввода/вывода в память или же из памяти в устройство ввода/вывода. Когда пересылка информации будет закончена, процессор вновь возвращается к прерванной программе, продолжая ее с той точки, где его прервали (рис. 43). Это похоже на режим обслуживания прерываний, но в данном случае процессор не участвует в обмене. Как и в случае прерываний, реакция на внешнее событие при ПДП существенно медленнее, чем при программном режиме. Понятно, что в этом случае требуется введение в систему дополнительного устройства (контроллера ПДП), которое будет осуществлять полноценный обмен по системной магистрали без всякого участия процессора. Причем процессор предварительно должен сообщить этому контроллеру ПДП, откуда ему следует брать информацию и/или куда ее следует помещать. Контроллер ПДП может считаться специализированным процессором, который отличается 99

100 тем, что сам не участвует в обмене, не принимает в себя информацию и не выдает ее (рис. 44). Рис. 43. Обслуживание ПДП. Рис. 44. Информационные потоки в режиме ПДП. В принципе контроллер ПДП может входить в состав устройства ввода/вывода, которому необходим режим ПДП или даже в состав нескольких устройств ввода/вывода. Теоретически обмен с помощью прямого доступа к памяти может обеспечить более высокую скорость передачи информации, чем программный обмен, так как процессор передает данные медленнее, чем специализированный контроллер ПДП. Однако на практике это преимущество реализуется далеко не всегда. Скорость обмена в режиме ПДП обычно ограничена возможностями магистрали. К тому же необходимость 100

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

102 передачах данных между основной памятью и быстродействующим ВУ. Заметим, что во всех вышеуказанных случаях основные действия, выполняемые на системной магистрали МПС, подчиняются двум основным принципам: 1. В процессе взаимодействия любых двух устройств МПС одно из них обязательно выполняет активную, управляющую роль и является задатчиком, второе оказывается управляемым, исполнителем. Чаще всего задатчиком является процессор. 2. Другим важным принципом, заложенным в структуру интерфейса, является принцип квитирования (запроса — ответа): каждый управляющий сигнал, посланный задатчиком, подтверждается сигналом исполнителя. При отсутствии ответного сигнала исполнителя в течение заданного интервала времени формируется так называемый тайм-аут, задатчик фиксирует ошибку обмена и прекращает данную операцию. Программно-управляемый ввод/вывод характеризуется тем, что все действия по вводу/выводу реализуются командами прикладной программы. Наиболее простыми эти действия оказываются для «всегда готовых» внешних устройств, например индикатора на светодиодах. При необходимости ВВ в соответствующем месте программы используются команды IN или OUT. Такая передача данных называется синхронным или безусловным ВВ. Однако для большинства ВУ до выполнения операций ВВ надо убедиться в их готовности к обмену, т.е. ВВ является асинхронным. Общее состояние устройства характеризуется флагом готовности READY, называемым также флагом готовности/занятости (READY/BUSY). Иногда состояния готовности и занятости идентифицируются отдельными флагами READY и BUSY, входящими в слово состояния устройства. Процессор проверяет флаг готовности с помощью одной или нескольких команд. Если флаг установлен, то инициируются собственно ввод или вывод 102

103 одного или нескольких слов данных. Когда же флаг сброшен, процессор выполняет цикл из 2-3 команд с повторной проверкой флага READY до тех пор, пока устройство не будет готово к операциям ВВ. Данный цикл называется циклом ожидания готовности ВУ и реализуется в различных процессорах поразному. Основной недостаток программного ВВ связан с непроизводительными потерями времени процессора в циклах ожидания. К достоинствам следует отнести простоту его реализации, не требующей дополнительных аппаратных средств Организация прерываний в МПС Одной из разновидностей программно-управляемого обмена данными с внешним устройством (ВУ) в МПС является обмен с прерыванием программы, отличающийся от асинхронного программно-управляемого обмена тем, что переход к выполнению команд, физически реализующих обмен данными, осуществляется с помощью специальных аппаратных средств. Команды обмена данными в этом случае выделяют в отдельный программный модуль — подпрограмму обработки прерывания. Задачей аппаратных средств обработки прерывания в процессоре МПС как раз и является приостановка выполнения одной программы (ее еще называют основной программой) и передача управления подпрограмме обработки прерывания. Действия, выполняемые при этом процессором, как правило, те же, что и при обращении к подпрограмме. Только при обращении к подпрограмме они инициируются командой, а при обработке прерывания — управляющим сигналом от ВУ, который называют «Запрос на прерывание» или «Требование прерывания». Эта важная особенность обмена с прерыванием программы позволяет организовать обмен данными с ВУ в произвольные моменты времени, не 103

104 зависящие от программы, выполняемой в МПС. Таким образом, появляется возможность обмена данными с ВУ в реальном масштабе времени, определяемом внешней по отношению к МПС средой. Обмен с прерыванием программы существенным образом экономит время процессора, затрачиваемое на обмен. Это происходит за счет того, что исчезает необходимость в организации программных циклов ожидания готовности ВУ, на выполнение которых тратится значительное время, особенно при обмене с «медленными» ВУ. Прерывание программы по требованию ВУ не должно оказывать на прерванную программу никакого влияния кроме увеличения времени ее выполнения за счет приостановки на время выполнения подпрограммы обработки прерывания. Поскольку для выполнения подпрограммы обработки прерывания используются различные регистры процессора (счетчик команд, регистр состояния и т.д.), то информацию, содержащуюся в них в момент прерывания, необходимо сохранить для последующего возврата в прерванную программу. Обычно задача сохранения содержимого счетчика команд и регистра состояния процессора возлагается на аппаратные средства обработки прерывания. Сохранение содержимого других регистров процессора, используемых в подпрограмме обработки прерывания, производится непосредственно в подпрограмме. Отсюда следует достаточно очевидный факт: чем больший объем информации о прерванной программе сохраняется программным путем, тем больше время реакции МПС на сигнал прерывания, и наоборот. Предпочтительными с точки зрения повышения производительности МПС (сокращения времени выполнения подпрограмм обработки, а, следовательно, и основной программы) являются уменьшение числа команд, обеспечивающих сохранение информации о прерванной программе, и реализация этих функций аппаратными средствами. 104

105 Формирование сигналов прерываний — запросов ВУ на обслуживание происходит в контроллерах соответствующих ВУ. В простейших случаях в качестве сигнала прерывания может использоваться сигнал «Готовность ВУ», поступающий из контроллера ВУ в системный интерфейс МПС. Однако такое простое решение обладает существенным недостатком — процессор не имеет возможности управлять прерываниями, т. е. разрешать или запрещать их для отдельных ВУ. В результате организация обмена данными в режиме прерывания с несколькими ВУ существенно усложняется. Для решения этой проблемы регистр состояния и управления контроллера ВУ (рис. 45) дополняют еще одним разрядом — «Разрешение прерывания». Запись 1 или 0 в разряд «Разрешение прерывания» производится программным путем по одной из линий шины данных системного интерфейса. Управляющий сигнал Рис. 45. Фрагмент блок-схемы контроллера ВУ с разрядом «Разрешение прерывания» в регистре состояния и управления 105

106 системного интерфейса «Запрос на прерывание» формируется с помощью схемы совпадения только при наличии единиц в разрядах «Готовность ВУ» и «Разрешение прерывания» регистра состояния и управления контроллера. Аналогичным путем решается проблемам управления прерываниями в МПС, в целом. Для этого в регистре состояния процессора выделяется разряд, содержимое которого определяет, разрешены или запрещены прерывания от внешних устройств. Значение этого разряда может устанавливаться программным путем. В МПС обычно используется одноуровневая система прерываний, т. е. сигналы «Запрос на прерывание» от всех ВУ поступают на один вход процессора. Поэтому возникает проблема идентификации ВУ, запросившего обслуживание, и реализации заданной очередности (приоритета) обслуживания ВУ при одновременном поступлении нескольких сигналов прерывания. Существуют два основных способа идентификации ВУ, запросивших обслуживания: — программный опрос регистров состояния (разряд «Готовность ВУ») контроллеров всех ВУ; — использование векторов прерывания. Организация прерываний с программным опросом готовности предполагает наличие в памяти МПС единой подпрограммы обслуживания прерываний от всех внешних устройств. Структура такой подпрограммы приведена на рис. 46. Обслуживание ВУ с помощью единой подпрограммы обработки прерываний производится следующим образом. В конце последнего машинного цикла выполнения очередной команды основной программы процессор проверяет наличие требования прерывания от ВУ. Если сигнал прерывания есть и в процессоре прерывание разрешено, то процессор переключается на выполнение подпрограммы обработки прерываний. После сохранения содержимого регистров процессора, используемых в подпрограмме, начинается последовательный опрос регистров состояния 106

107 контроллеров всех ВУ, работающих в режиме прерывания. Как только подпрограмма обнаружит готовое к обмену ВУ, сразу выполняются действия по его обслуживанию. Завершается подпрограмма обработки прерывания после опроса готовности всех ВУ и восстановления содержимого регистров процессора. Рис. 46. Структура единой программы обработки прерываний и ее связь с основной программой. по его обслуживанию. Завершается подпрограмма обработки прерывания после опроса готовности всех ВУ и восстановления содержимого регистров процессора. Приоритет ВУ в МПС с программным опросом готовности внешнего устройства однозначно определяется порядком их опроса в подпрограмме обработки прерываний. Чем раньше в подпрограмме опрашивается готовность ВУ, тем меньше время реакции на его запрос и выше приоритет. 107

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

109 прерывание» процессор формирует управляющий сигнал «Предоставление прерывания (вх)», который разрешает контроллеру ВУ, запросившему обслуживание, выдачу вектора прерывания в шину адреса системного интерфейса. Для этого в контроллере используются регистр вектора прерывания и схема совпадения И3. Регистр вектора прерывания обычно Рис. 47. Формирование векторов прерывания в контроллере ВУ реализуется с помощью перемычек или переключателей, что позволяет пользователю устанавливать для конкретных ВУ требуемые значения векторов прерывания. Управляющий сигнал «Предоставление прерывания (вых)» формируется в контроллере ВУ с помощью схемы совпадения И2. Этот сигнал используется для организации последовательного аппаратного опроса готовности ВУ и реализации тем самым требуемых приоритетов ВУ. Процессор при поступлении в него по общей линии системного интерфейса «Запрос на 109

110 прерывание» сигнала прерывания формирует управляющий сигнал «Предоставление прерывания (вх.)», который поступает сначала в контроллер ВУ с наивысшим приоритетом (рис.48). Если это устройство не требовало обслуживания, то его контроллер пропускает сигнал «Предоставление прерывания» на следующий контроллер, иначе дальнейшее распространение сигнала прекращается и контроллер выдает вектор прерывания на адресноинформационную шину(системную магистраль). Рис. 48. Реализация приоритетов ВУ в МПС с векторной системой прерываний: с интерфейсным вектором ППР (вх) — «Предоставление прерывания (входной)»; ППР (вых) Предоставление прерывания (выходной)» Аппаратный опрос готовности ВУ производится гораздо быстрее, нежели программный. Но если обслуживания запросили одновременно два или более ВУ, обслуживание менее приоритетных ВУ будет отложено на время обслуживания более приоритетных, как и в системе прерывания с программным опросом. Векторная система с внеинтерфейсным вектором прерывания используется в IBM-совместимых персональных компьютерах. В этих компьютерах контроллеры внешних устройств не имеют регистров для хранения векторов прерывания, а для идентификации устройств, запросивших обслуживания, используется общий для всех ВУ контроллер прерываний. 110

111 6.4. Организация прямого доступа к памяти Одним из способов обмена данными с ВУ является обмен в режиме прямого доступа к памяти (ПДП). В этом режиме обмен данными между ВУ и основной памятью МПС происходит без участия процессора. Обменом в режиме ПДП управляет не программа, выполняемая процессором, а электронные схемы, внешние по отношению к процессору. Обычно схемы, управляющие обменом в режиме ПДП, размещаются в специальном контроллере, который называется контроллером прямого доступа к памяти. Обмен данными в режиме ПДП позволяет использовать в МПС быстродействующие внешние запоминающие устройства, такие, например, как накопители на жестких магнитных дисках, поскольку ПДП может обеспечить время обмена одним байтом данных между памятью и ВЗУ, равное циклу обращения к памяти. Для реализации режима прямого доступа к памяти необходимо обеспечить непосредственную связь контроллера ПДП и памяти МПС. Для этой цели можно было бы использовать специально выделенные шины адреса и данных, связывающие контроллер ПДП с основной памятью. Но такое решение нельзя признать оптимальным, так как это приведет к значительному усложнению МПС в целом, особенно при подключении нескольких ВЗУ. В целях сокращения количества линий в шинах МПС контроллер ПДП подключается к памяти посредством шин адреса и данных системного интерфейса. При этом возникает проблема совместного использования шин системного интерфейса процессором и контроллером ПДП. Можно выделить два основных способа ее решения: реализация обмена в режиме ПДП с «захватом цикла» и в режиме ПДП с блокировкой процессора. Существуют две разновидности прямого доступа к памяти с «захватом цикла». Наиболее простой способ организации ПДП состоит в том, что для обмена 111

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

113 промежутках между сигналами ТПДП процессор продолжает выполнять команды программы. Тем самым выполнение программы замедляется, но в меньшей степени, чем при обмене в режиме прерываний. Применение в МПС обмена данными с ВУ в режиме ПДП всегда требует предварительной подготовки, а именно: для каждого ВУ необходимо выделить область памяти, используемую при обмене, и указать ее размер, т.е. количество записываемых в память или читаемых из памяти байт (слов) информации. Следовательно, контроллер ПДП должен обязательно иметь в своем составе регистр адреса и счетчик байт (слов). Перед началом обмена с ВУ в режиме ПДП процессор должен выполнить программу загрузки. Эта программа обеспечивает запись в указанные регистры контроллера ПДП начального адреса выделенной ВУ памяти и ее размера в байтах или словах в зависимости от того, какими порциями информации ведется обмен. Сказанное не относится к начальной загрузке программ в память в режиме ПДП. В этом случае содержимое регистра адреса и счетчика байт слов устанавливается переключателями или перемычками непосредственно на плате контроллера. Блок-схема простого контроллера ПДП, обеспечивающего ввод данных в память МПС по инициативе ВУ в режиме ПДП «Захват цикла», приведена на рис. 49. Перед началом очередного сеанса ввода данных из ВУ процессор загружает в регистры его контроллера следующую информацию: в счетчик байт — количество принимаемых байт данных, а в регистр адреса — начальный адрес области памяти для вводимых данных. Тем самым контроллер подготавливается к выполнению операции ввода данных из ВУ в память МПС в режиме ПДП. Байты данных из ВУ поступают в регистр данных контроллера в постоянном темпе. При этом каждый байт сопровождается управляющим сигналом из ВУ 113

114 «Ввод данных», который обеспечивает запись байта данных в регистр данных контроллера. По этому же сигналу и при ненулевом состоянии счетчика байт контроллер формирует сигнал ТПДП. По ответному сигналу процессора ППДП контроллер выставляет на шины адреса и данных системного интерфейса содержимое своих регистров адреса и данных соответственно. Формируя управляющий сигнал «Вывод», контроллер ПДП обеспечивает запись байта данных из своего регистра данных в память МПС. Сигнал ППДП используется в контроллере и для модификации счетчика байт и регистра адреса. По Рис. 49. Контроллер ПДП для ввода данных из ВУ в режиме «Захват цикла» и отключением процессора от шин системного интерфейса. каждому сигналу ППДП из содержимого счетчика байт вычитается единица, и как только содержимое счетчика станет равно нулю, контроллер прекратит формирование сигналов «Требование прямого доступа к памяти». На примере простого контроллера ПДП мы рассмотрели только процесс подготовки контроллера и непосредственно передачу данных в режиме ПДП. 114

115 На практике любой сеанс обмена данными с ВУ в режиме ПДП всегда инициируется программой, выполняемой процессором, и включает два следующих этапа. 1. На этапе подготовки ВУ к очередному сеансу обмена процессор в режиме программно-управляемого обмена опрашивает состояние ВУ (проверяет его готовность к обмену) и посылает в ВУ команды, обеспечивающие подготовку ВУ к обмену. Такая подготовка может сводиться, например, к перемещению головок на требуемую дорожку в накопителе на жестком диске. Затем выполняется загрузка регистров контроллера ПДП. На этом подготовка к обмену в режиме ПДП завершается и процессор переключается на выполнение другой программы. 2. Обмен данными в режиме ПДП начинается после завершения подготовительных операций в ВУ по инициативе либо ВУ, как это было рассмотрено выше, либо процессора. В этом случае контроллер ПДП необходимо дополнить регистром состояния и управления, содержимое которого будет определять режим работы контроллера ПДП. Один из разрядов этого регистра будет инициировать обмен данными с ВУ. Загрузка информации в регистр состояния и управления контроллера ПДП производится программным путем. Наиболее распространенным является обмен в режиме прямого доступ к памяти с блокировкой процессора. Он отличается от ПДП с «захватом цикла» тем, что управление системным интерфейсом передается контроллеру ПДП не на время обмена одним байтом, а на время обмена блоком данных. Такой режим ПДП используется в тех случаях, когда время обмена одним байтом с ВУ сопоставимо с циклом системной шины. В МПС можно использовать несколько ВУ, работающих в режиме ПДП. Предоставление таким ВУ шин системного интерфейса для обмена данными производится на приоритетной основе. Приоритеты ВУ реализуются так же, 115

116 как и при обмене данными в режиме прерывания, но вместо управляющих сигналов «Требование прерывания» и «Предоставление прерывания» используются сигналы «Требование прямого доступа» и «Предоставление прямого доступа», соответственно. 7. Функции устройств ввода/вывода Устройства ввода/вывода обмениваются информацией с магистралью по тем же принципам, что и память. Наиболее существенное отличие с точки зрения организации обмена состоит в том, что модуль памяти имеет в адресном пространстве системы много адресов (до нескольких десятков миллионов), а устройство ввода/вывода обычно имеет немного адресов (обычно до десяти), а иногда и всего один адрес. Но модули памяти системы обмениваются информацией только с магистралью, с процессором, а устройства ввода/вывода взаимодействуют еще и с внешними устройствами, цифровыми или аналоговыми. Поэтому разнообразие устройств ввода/вывода неизмеримо больше, чем модулей памяти. Часто используются еще и другие названия для устройств ввода/вывода: устройства сопряжения, контроллеры, карты расширения, интерфейсные модули и т.д. Объединяют все устройства ввода/вывода общие принципы обмена с магистралью и, соответственно, общие принципы организации узлов, которые осуществляют сопряжение с магистралью. Упрощенная структура устройства ввода/вывода (точнее, его интерфейсной части) приведена на рис. 50. Как и в случае модуля памяти, она обязательно содержит схему селектора адреса, схему управления для обработки стробов обмена и буферы данных. Самые простейшие устройства ввода/вывода выдают на внешнее устройство код данных в параллельном формате и принимают из внешнего устройства код данных в параллельном формате. Такие устройства ввода/вывода часто называют параллельными портами ввода/вывода. Они наиболее универсальны, 116

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

118 устройством (буфер может и отсутствовать). Данные из шины данных записываются в регистр по сигналу С и выдаются на внешнее устройство. Выходной буфер данных передает входные данные с внешнего устройства на шину данных магистрали в цикле чтения из порта. Более сложные устройства ввода/вывода (устройства сопряжения) имеют в своем составе внутреннюю буферную оперативную память и даже могут иметь микроконтроллер, на который возложено выполнение функций обмена с внешним устройством. Каждому устройству ввода/вывода отводится свой адрес в адресном пространстве микропроцессорной системы. Дублирование адресов должно быть исключено, за этим должны следить разработчик и пользователь микропроцессорной системы. Устройства ввода/вывода помимо программного обмена могут также поддерживать режим обмена по прерываниям. В этом случае они преобразуют поступающий от внешнего устройства сигнал запроса на прерывание в сигнал запроса прерывания, необходимый для данной магистрали (или в последовательность сигналов при векторном прерывании). Если нужно использовать режим ПДП, устройство ввода/вывода должно выдать сигнал запроса ПДП на магистраль и обеспечить работу в циклах ПДП, принятых для данной магистрали. В составе микропроцессорных систем, как правило, выделяются три специальные группы устройств ввода/вывода: — устройства интерфейса пользователя (ввода информации пользователем и вывода информации для пользователя); — устройства ввода/вывода для длительного хранения информации; — таймерные устройства. К устройствам ввода для интерфейса пользователя относятся контроллеры клавиатуры, тумблеров, отдельных кнопок, мыши, трекбола, джойстика и т.д. К устройствам вывода для интерфейса пользователя относятся контроллеры светодиодных индикаторов, табло, жидкокристаллических, плазменных и 118

119 электронно-лучевых экранов и т.д. В простейших случаях управляющих контроллеров или микроконтроллеров эти средства могут отсутствовать. В сложных микропроцессорных системах они есть обязательно. Роль внешнего устройства в данном случае играет человек. Устройства ввода/вывода для длительного хранения информации обеспечивают сопряжение микропроцессорной системы с дисководами (компакт-дисков или магнитных дисков), а также с накопителями на магнитной ленте. Применение таких устройств существенно увеличивает возможности микропроцессорной системы в отношении хранения выполняемых программ и накопления массивов данных. В простейших контроллерах эти устройства отсутствуют. Таймерные устройства отличаются от других устройств ввода/вывода тем, что они могут не иметь внешних выводов для подключения к внешним устройствам. Эти устройства предназначены для того, чтобы микропроцессорная система могла выдерживать заданные временные интервалы, следить за реальным временем, считать импульсы и т.д. В основе любого таймера лежит кварцевый тактовый генератор и многоразрядные двоичные счетчики, которые могут перезапускать друг друга. Процессор может записывать в таймер коэффициенты деления тактовой частоты, количество отсчитываемых импульсов, задавать режим работы счетчиков таймера, а читает процессор выходные коды счетчиков. В принципе выполнить практически все функции таймера можно и программным путем, поэтому иногда таймеры в системе отсутствуют. Но включение в систему таймера позволяет решать более сложные задачи и строить более эффективные алгоритмы. Еще один важный класс устройств ввода/вывода это устройства для подключения к информационным сетям (локальным и глобальным). Эти устройства распространены не так широко, как устройства трех перечисленных ранее групп, но их значение с каждым годом становится все больше. Сейчас 119

120 средства связи с информационными сетями вводятся иногда даже в простые контроллеры. Иногда устройства ввода/вывода обеспечивают сопряжение с внешними устройствами с помощью аналоговых сигналов. Это бывает очень удобно, поэтому в состав некоторых микроконтроллеров даже вводят внутренние ЦАП и АЦП Организация ввода/вывода в микропроцессорной системе Вводом/выводом (ВВ) называется передача данных между ядром компьютера, включающим в себя микропроцессор и основную память, и внешними устройствами (ВУ). Это единственное средство взаимодействия компьютера с «внешним миром», и архитектура ВВ (режимы работы, форматы команд, особенности прерываний, скорость обмена и др.) непосредственно влияет на эффективность всей системы. За время эволюции компьютеров подсистема ВВ претерпела наибольшие изменения благодаря расширению сферы применения компьютеров и появлению новых внешних устройств. Особенно важную роль средства ВВ играют в управляющих компьютерах. Разработка аппаратных средств и программного обеспечения ВВ является наиболее сложным этапом проектирования новых систем на базе компьютера, а возможности ВВ серийных машин представляют собой один из важных параметров, определяющих выбор машины для конкретного применения. Подключение внешних устройств к системной шине осуществляется посредством электронных схем, называемых контроллерами ВВ (интерфейсами ВВ). Они согласуют уровни электрических сигналов, а также преобразуют машинные данные в формат, необходимый устройству, и наоборот. Обычно контроллеры ВВ конструктивно оформляются вместе с процессором в виде интерфейсных плат. 120

121 В процессе ввода/вывода передается информация двух видов: управляющие данные (слова) и собственно данные, или данные-сообщения. Управляющие данные от процессора, называемые также командными словами или приказами, инициируют действия, не связанные непосредственно с передачей данных, например запуск устройства, запрещение прерываний и т.п. Управляющие данные от внешних устройств называются словами состояния; они содержат информацию об определенных признаках, например о готовности устройства к передаче данных, о наличии ошибок при обмене и т.п. Состояние обычно представляется в декодированной форме — один бит для каждого признака. Регистр, содержащий группу бит, к которой процессор обращается в операциях ВВ, образует порт ВВ. Таким образом, наиболее общая программная модель внешнего устройства, которое может выполнять ввод и вывод, содержит четыре регистра ВВ: регистр выходных данных (выходной порт), регистр входных данных (входной порт), регистр управления и регистр состояния (рис. 51). Каждый из этих регистров должен иметь однозначный адрес, который идентифицируется дешифратором адреса. В зависимости от особенностей устройства общая модель конкретизируется, например, отдельные регистры состояния и управления объединяются в один регистр, в устройстве ввода (вывода) имеется только регистр входных (выходных) данных, для ввода и вывода используется двунаправленный порт. Непосредственные действия, связанные с вводом/выводом, реализуются одним из двух способов, различающихся адресацией регистров ВВ. Интерфейс с изолированными шинами характеризуется раздельной адресацией памяти и внешних устройств при обмене информацией. Изолированный ВВ предполагает наличие специальных команд ввода/вывода, общий формат которых показан на рис. 52. При выполнении команды ввода IN содержимое адресуемого входного регистра PORT передается во внутренний регистр REG процессора, а при выполнении команды OUT содержимое регистра REG 121

122 Рис. 51. Программная модель внешнего устройства. передается в выходной порт PORT. В процессоре могут быть и другие команды, относящиеся к ВВ и связанные с проверкой и модификацией содержимого регистра управления и состояния. Рис. 52. Команды ввода/вывода (общий формат) Нетрудно заметить, что в этом способе адресное пространство портов ввода и вывода изолировано от адресного пространства памяти, т.е. в компьютере один и тот же адрес могут иметь порт ВВ и ячейка памяти. Разделение адресных пространств осуществляется с помощью управляющих сигналов, относящихся к системам ВВ и памяти (MEMRD# — считывание данных из памяти, MEMWR# — запись данных в память, IORD# — чтение порта ВВ, IOWR# — запись в порт ВВ) (# — активный низкий уровень сигналов). В компьютере, рассчитанном на изолированный ВВ, нетрудно перейти к ВВ, отображенному на память. Если, например, адресное пространство памяти составляет 64 Кбайт, а для программного обеспечения достаточно 32 Кбайт, то область адресов от 0 до 32 К-1 используется для памяти, от 32 К до 64 К-1 — для 122

123 ввода/вывода. При этом признаком, дифференцирующим обращения к памяти и портам ВВ, может быть старший бит адреса. Таким образом, интерфейс с общими шинами (ввод/вывод с отображением на память) имеет организацию, при которой часть общего адресного пространства отводится для внешних устройств, регистры которых адресуются так же, как и ячейки памяти. В этом случае для адресации портов ВВ используются полные адресные сигналы: READ — чтение, WRITE — запись. В операционных системах компьютеров имеется набор подпрограмм (драйверов ВВ), управляющих операциями ВВ стандартных внешних устройств. Благодаря им пользователь может не знать многих особенностей ВУ и интерфейсов ВВ, а применять четкие программные протоколы. Рассмотрим некоторые общие вопросы, связанные с обменом данными между ВУ и МПС. Существуют два способа передачи слов информации по линиям данных: параллельный, когда одновременно пересылаются все биты слова, и последовательный, когда биты слова пересылаются поочередно, начиная, например, с его младшего разряда. Так как между отдельными проводниками шины для параллельной передачи данных существует электрическая емкость, то при изменении сигнала, передаваемого по одному из проводников, возникает помеха (короткий выброс напряжения) на других проводниках. С увеличением длины шины (увеличением емкости проводников) помехи возрастают и могут восприниматься приемником как сигналы. Поэтому рабочее расстояние для шины параллельной передачи данных ограничивается длиной 1-2 м, и только за счет существенного удорожания шины или снижения скорости передачи длину шины можно увеличить до м. Указанное обстоятельство и желание использовать для дистанционной передачи информации телеграфные и телефонные линии обусловили широкое распространение способа последовательного обмена данными между ВУ и 123

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

125 Стандартный формат асинхронной последовательной передачи данных, используемый в компьютере и ВУ, содержит n пересылаемых бит информации (при пересылке символов n равно 7 или 8 битам) и 3-4 дополнительных бита: стартовый бит, бит контроля четности (или нечетности) и 1 или 2 стоповых бита (рис. 53, а). Бит четности (или нечетности) может отсутствовать. Когда передатчик бездействует (данные не посылаются на линию), на линии сохраняется уровень сигнала, соответствующий логической 1. Рис. 53. Формат асинхронной последовательной передачи данных. Передатчик может начать пересылку символа в любой момент времени посредством генерирования стартового бита, т. е. перевода линии в состояние логического 0 на время, точно равное времени передачи бита. Затем происходит передача битов символа, начиная с младшего значащего бита, за которым следует дополнительный бит контроля по четности или нечетности. Далее с помощью стопового бита линия переводится в состояние логической 1 (рис. 53, б). При единичном бите контроля стоповый бит не изменяет состояния сигнала на линии. Состояние логической 1 должно поддерживаться в течение промежутка времени, равного 1 или 2 временам передачи бита. Промежуток времени от начала стартового бита до конца стопового бита (стоповых бит) называется кадром. Сразу после стоповых бит передатчик 125

126 может посылать новый стартовый бит, если имеется другой символ для передачи; в противном случае уровень логической 1 может сохраняться на протяжение всего времени, пока бездействует передатчик. Новый стартовый бит может быть послан в любой момент времени после окончания стопового бита, например, через промежуток времени, равный 0.43 или 1.5 времени передачи бита. В линиях последовательной передачи данных передатчик и приемник должны быть согласованы по всем параметрам формата, изображенного на рис. 53, включая номинальное время передачи бита. Для этого в приемнике устанавливается генератор синхроимпульсов, частота которого должна совпадать с частотой аналогичного генератора передатчика. Кроме того, для обеспечения оптимальной защищенности сигнала от искажения, шумов и разброса частоты синхроимпульсов приемник должен считывать принимаемый бит в середине его длительности. Рассмотрим работу приемника с того момента, когда он закончил прием символа данных и перешел в режим обнаружения стартового бита следующего слова. Если линия перешла в состояние логического нуля и находится в этом состоянии в течение времени, не меньшего половины временного интервала передачи бита, то приемник переводится в режим считывания бит информации. В противном случае приемник остается в режиме обнаружения, так как вероятнее всего это был не стартовый бит, а шумовая помеха. В новом режиме приемник вырабатывает сигналы считывания через интервалы, равные времени передачи бита, т. е. выполняет считывание и сохранение принимаемых бит примерно на середине их передачи. Аналогичным образом будут считаны бит контроля четности и сигнал логической единицы (стоповый бит). Если оказалось, что на месте стопового бита обнаружен сигнал логического нуля, то произошла «Ошибка кадра» и символ принят неправильно. Иначе проверяется, 126

127 четно ли общее число единиц в информационных битах и бите контроля, и если оно четно, производится запись принятого символа в буфер приемника. Передний фронт стартового бита сигнализирует о начале поступления передаваемой информации, а момент его появления служит точкой отсчета времени для считывания бит данных. Стоповый бит предоставляет время для записи принятого символа в буфер приемника и обеспечивает возможность выявления ошибки кадра. Наиболее часто ошибки кадра появляются тогда, когда приемник ошибочно синхронизирован с битом 0, который в действительности не является стартовым битом. Если передатчик бездействует (посылает сигнал логической единицы) в течение одного кадра или более, то всегда можно восстановить правильную синхронизацию. Хуже обстоит дело при рассинхронизации генераторов передатчика и приемника, когда временной интервал между сигналами считывания принимаемых битов будет меньше или больше времени передачи бита. Например, если при считывании битов посылки, показанной на рис. 53, б, временной интервал между сигналами считывания станет на 6% меньше, чем время передачи бита, то восьмой и девятый сигналы считывания будут выработаны тогда, когда на линии находится бит контроля четности (рис.54). Следовательно, не будет обнаружен стоповый бит и будет зафиксирована ошибка кадра, несмотря на правильность принятой информации. Однако при 18%-й рассинхронизации генераторов, когда вместо кода ( ) приемник зафиксирует код ( ), никаких ошибок не будет обнаружено — четность соблюдена и стоповый (девятый по порядку) бит равен 1( рис. 54). 127

128 Рис. 54. Ошибка из-за рассинхронизации генераторов передатчика и приемника 7.2. Параллельная передача данных Параллельная передача данных между контроллером и ВУ является по своей организации наиболее простым способом обмена. Для организации параллельной передачи данных помимо шины данных, количество линий в которой равно числу одновременно передаваемых битов данных, используется минимальное количество управляющих сигналов. В простом контроллере ВУ, обеспечивающем побайтную передачу данных на внешнее устройство (рис. 55), в шине связи с ВУ используются всего два управляющих сигнала: «Выходные данные готовы» и «Данные приняты». Для формирования управляющего сигнала «Выходные данные готовы» и приема из ВУ управляющего сигнала «Данные приняты» в контроллере используется одноразрядный адресуемый регистр состояния и управления А2 (обычно используются раздельные регистр состояния и регистр управления). Одновременно с записью очередного байта данных с шины данных системного интерфейса в адресуемый регистр данных контроллера (порт вывода А1) в регистр состояния и управления записывается логическая единица. Тем самым 128

129 формируется управляющий сигнал «Выходные данные готовы» в шине связи с ВУ. Рис. 55. Простой параллельный контроллер вывода. ВУ, приняв байт данных, управляющим сигналом «Данные приняты» обнуляет регистр состояния контроллера. При этом формируются управляющий сигнал системного интерфейса «Готовность ВУ» и признак готовности ВУ к обмену, передаваемый в процессор по одной из линий шины данных системного интерфейса посредством стандартной операции ввода при реализации программы асинхронного обмена. Логика управления контроллера обеспечивает селекцию адресов регистров контроллера, прием управляющих сигналов системного интерфейса и формирование на их основе внутренних управляющих сигналов контроллера, формирование управляющего сигнала системного интерфейса «Готовность ВУ». Для сопряжения регистров контроллера с шинами адреса и данных системного интерфейса в контроллере используются соответственно приемники шины адреса и приемопередатчики шины данных. 129

130 Рассмотрим на примере, каким образом контроллер ВУ обеспечивает параллельную передачу данных в ВУ под управлением программы асинхронного обмена. Алгоритм асинхронного обмена в данном случае передачи простой. 1. Процессор МПС проверяет готовность ВУ к приему данных. 2. Если ВУ готово к приему данных (в данном случае это логический 0 в нулевом разряде регистра А2), то данные передаются с шины данных системного интерфейса в регистр данных А1 контроллера и далее в ВУ. Иначе повторяется п. 1. Пример 1. Фрагмент программы передачи байта данных в асинхронном режиме с использованием параллельного контроллера ВУ (табл. 1). Для написания программы асинхронной передачи воспользуемся командами процессора Команда во второй строке приводит к следующим действиям. При ее выполнении процессор по шине адреса передает в контроллер адрес А2, сопровождая его сигналом «Ввод» (IORD#; здесь и далее в скобках указаны сигналы на шине ISA). Логика управления контроллера, реагируя на эти сигналы, обеспечивает передачу в процессор содержимого регистра Т а б л и ц а 1 Фрагмент программы передачи байта данных в асинхронном режиме MOV DX, A2 номер порта A2 помещаем в DX m1:in AL, DX чтение байта из порта A2 TEST AL, 1 проверка нулевого состояния регистра A2 JNS ml переход на метку ml если разряд не нулевой MOV AL, 64 выводимый байт данных помещается в AL MOV DX, A1 номер порта A1 записываем в DX OUT DX, AL содержимое регистра AX передаем в порт A1 состояния А2 по шине данных системного интерфейса. 130

131 Команда в третьей строке приводит к следующим действиям. Процессор проверяет значение соответствующего разряда принятых данных. Нуль в этом разряде указывает на неготовность ВУ к приему данных и, следовательно, на необходимость возврата к проверке содержимого А2, т. е. процессор, выполняя три первые команды, ожидает готовности ВУ к приему данных. Единица в этом разряде подтверждает готовность ВУ и, следовательно, возможность передачи байта данных. В седьмой строке осуществляется пересылка данных из регистра AX процессора в регистр данных контроллера А1. Процессор по шине адреса передает в контроллер адрес А1, а по шине данных — байт данных, сопровождая их сигналом «Вывод» (IOWR#). Логика управления контроллера обеспечивает запись данных с шины данных в регистр данных А1 и устанавливает в ноль бит готовности регистра состояния А2, формируя тем самым управляющий сигнал для ВУ «Выходные данные готовы». ВУ принимает байт данных и управляющим сигналом «Данные приняты» устанавливает в единицу регистр состояния А2. Далее контроллер ВУ по этому сигналу может сформировать и передать в процессор сигнал «Готовность ВУ», который в данном случае извещает процессор о приеме данных внешним устройством и разрешает процессору снять сигнал «Вывод». Тем самым завершается цикл вывода данных в команде пересылки. В IBM-совместимых персональных компьютерах с шиной ISA сигнал «Готовность ВУ» не формируется, а имеется сигнал IO CH RDY#, позволяющий продлить цикл обмена, если устройство недостаточно быстрое. В данном случае нет необходимости в сигнале «Готовность ВУ». Шина ISA является синхронной и, следовательно, все операции выполняются по тактовым импульсам. Блок-схема простого контроллера ВУ, обеспечивающего побайтный прием данных из ВУ, приведена на рис. 56. В этом контроллере при взаимодействии с 131

132 внешним устройством также используются два управляющих сигнала: «Данные от ВУ готовы» и «Данные приняты». Для формирования управляющего сигнала «Данные приняты» и приема из ВУ управляющего сигнала » Данные от ВУ готовы» используется одноразрядный адресуемый регистр состояния и управления А2. Внешнее устройство записывает в регистр данных контроллера А1 очередной байт данных и управляющим сигналом «Данные от ВУ готовы» устанавливает в единицу регистр состояния и управления А2. При этом формируются: управляющий сигнал системного интерфейса «Готовность ВУ»; признак готовности ВУ к обмену, передаваемый в процессор по одной из линий шины данных системного интерфейса посредством операции ввода при реализации программы асинхронного обмена. Тем самым контроллер извещает процессор о готовности данных в регистре А1. Рис. 56. Простой параллельный контроллер ввода Процессор, выполняя программу асинхронного обмена, читает байт данных из регистра данных контроллера и обнуляет регистр состояния и управления А2. 132

133 При этом формируется управляющий сигнал «Данные приняты» в шине связи с внешним устройством. Логика управления контроллера и приемопередатчики шин системного интерфейса выполняют те же функции, что и в контроллере вывода (рис. 55), Рассмотрим работу параллельного интерфейса ввода при реализации программы асинхронного обмена. Алгоритм асинхронного ввода так же прост, как и асинхронного вывода. 1. Процессор проверяет наличие данных в регистре данных контроллера А1. 2. Если данные готовы (логическая 1 в регистре А2), то они передаются из регистра данных А1 на шину данных системного интерфейса и далее в регистр процессора или ячейку памяти микрокомпьютера. Иначе повторяется п. 1. Пример 2. Фрагмент программы приема байта данных в асинхронном режиме с использованием параллельного интерфейса (контроллер ВУ): В третьей строке выполняется проверка содержимого регистра А2, т.е. признака наличия данных в регистре данных А1. Команда выполняется точно так же, как и в примере 1. Единица в нулевом разряде (содержимое регистра А2) подтверждает, что данные от ВУ записаны в регистр данных контроллера и необходимо переслать их на шину данных. Нуль в знаковом разряде указывает на неготовность данных от ВУ и, следовательно, на необходимость вернуться к проверке готовности. IN AL, DX — пересылка данных из регистра данных контроллера A1 в регистр процессора AL. Процессор передает в контроллер по шине адреса системного интерфейса адрес A1, сопровождая его сигналом «Ввод». Логика управления контроллера в ответ на сигнал «Ввод» (IORD#) обеспечивает передачу байта данных из регистра данных A1 на шину данных и, в общем случае, сопровождает его сигналом «Готовность ВУ». Этот сигнал подтверждает наличие данных от ВУ на шине данных и, по которому процессор считывает 133

134 Т а б л и ц а 2 Фрагмент программы приема байта данных в асинхронном режиме с использованием параллельного интерфейса (контроллер ВУ) MOV DX, A2 номер порта A2 помещаем в DX m1:in AL, DX чтение байта из порта A2 TEST AL, 1 проверка нулевого разряда состояния регистра A2 JZ ml переход на метку ml если разряд не нулевой MOV DX, A1 номер порта A1 записываем в DX IN AL, DX содержимое регистра A1 передаем в регистр AL байт с шины данных и помещает его в указанный регистр. В IBM-совместимом персональном компьютере с шиной ISA процессор считывает байт с шины данных по истечении определенного времени после установки сигнала IORD#. Затем логика управления обнуляет регистр состояния и управления А2, формируя тем самым управляющий сигнал для внешнего устройства «Данные приняты». Таким образом завершается цикл ввода данных. Как видно из рассмотренных примеров, для приема или передачи одного байта данных процессору необходимо выполнить всего несколько команд, время выполнения которых и определяет максимально достижимую скорость обмена данными при параллельной передаче. Таким образом, при параллельной передаче обеспечивается довольно высокая скорость обмена данными, которая ограничивается только быстродействием ВУ. Последовательная передача данных. Использование последовательных линий связи для обмена данными с внешними устройствами возлагает на контроллеры ВУ дополнительные по сравнению с контроллерами для параллельного обмена функции. Во-первых, возникает необходимость преобразования формата данных из параллельного формата, в котором они 134

135 поступают в контроллер ВУ из системного интерфейса компьютера, в последовательный при передаче в ВУ. И обратно из последовательного в параллельный при приеме данных из ВУ. Во-вторых, требуется реализовать соответствующий режиму работы внешнего устройства способ обмена данными: синхронный или асинхронный Синхронный последовательный интерфейс Простой контроллер для синхронной передачи данных в ВУ по последовательной линии связи (последовательный интерфейс) представлен на рис. 57. Рис. 57. Контроллер последовательной синхронной передачи Восьмиразрядный адресуемый буферный регистр контроллера А1 служит для временного хранения байта данных до его загрузки в сдвиговый регистр. Запись байта данных в буферный регистр с шины данных системного интерфейса производится так же, как и в параллельном интерфейсе. 135

136 Параллельная передача данных (рис. 55), только при наличии единицы в одноразрядном адресуемом регистре состояния контроллера А2. Единица в регистре состояния указывает на готовность контроллера принять очередной байт в буферный регистр. Содержимое регистра А2 передается в процессор по одной из линий шины данных системного интерфейса и используется для формирования управляющего сигнала системного интерфейса «Готовность ВУ». При записи очередного байта в буферный регистр A1 обнуляется регистр состояния А2. Программа записи байта данных в буферный регистр аналогична программе из примера 1 за исключением команды перехода: вместо команды JNZ m1 (переход, если не ноль) необходимо использовать команду JZ m1 (переход, если ноль). Преобразование данных из параллельного формата, в котором они поступили в буферный регистр контроллера из системного интерфейса, в последовательный, и передача их на линию связи производятся в сдвиговом регистре с помощью генератора тактовых импульсов и двоичного трехразрядного счетчика импульсов. Последовательная линия связи контроллера с ВУ подключается к выходу младшего разряда сдвигового регистра. По очередному тактовому импульсу содержимое сдвигового регистра сдвигается на один разряд вправо и в линию связи «Данные» выдается значение очередного разряда. Одновременно со сдвигом в ВУ передается по отдельной линии «Синхронизация» тактовый импульс. Таким образом, каждый передаваемый по линии «Данные» бит информации сопровождается синхронизирующим сигналом по линии «Синхронизация», что обеспечивает его однозначное восприятие на приемном конце последовательной линии связи. Количество переданных в линию тактовых сигналов, а следовательно, и переданных бит информации подсчитывается счетчиком тактовых импульсов. 136

137 Как только содержимое счетчика становится равным 7, т. е. в линию переданы 8 бит (1 байт) информации, формируется управляющий сигнал «Загрузка», обеспечивающий запись в сдвиговый регистр очередного байта из буферного регистра. Этим же управляющим сигналом устанавливается в «1» регистр состояния. Очередным тактовым импульсом счетчик будет сброшен в «0», и начнется очередной цикл выдачи восьми битов информации из сдвигового регистра в линию связи. Синхронная последовательная передача отдельных битов данных на линию связи должна производиться без какого-либо перерыва, и следующий байт данных должен быть загружен в буферный регистр из системного интерфейса за время, не превышающее времени передачи восьми битов в последовательную линию связи. При записи байта данных в буферный регистр обнуляется регистр состояния контроллера. Нуль в этом регистре указывает, что в линию связи передается байт данных из сдвигового регистра, а следующий передаваемый байт данных загружен в сдвиговый регистр. Контроллер для последовательного синхронного приема данных из ВУ состоит из тех же компонентов, что и контроллер для синхронной последовательной передачи, за исключением генератора тактовых импульсов Асинхронный последовательный интерфейс Организация асинхронного последовательного обмена данными с внешним устройством осложняется тем, что на передающей и приемной стороне последовательной линии связи используются настроенные на одну частоту, но физически разные генераторы тактовых импульсов и, следовательно, общая синхронизация отсутствует. Рассмотрим на примерах организацию контроллеров последовательных интерфейсов для последовательных асинхронных передачи и приема данных. 137

138 Простейший контроллер для асинхронной передачи данных в ВУ по последовательной линии связи представлен на рис. 58. Он предназначен для передачи данных в формате с двумя стоповыми битами. После передачи очередного байта данных в регистр состояния А2 записывается 1. Единичный выходной сигнал регистра А2 информирует процессор о готовности контроллера к приему следующего байта данных и передаче его по линии связи в ВУ. Этот же сигнал запрещает формирование импульсов со схемы выработки импульсов сдвига — делителя частоты сигналов тактового генератора на 16. Счетчик импульсов сдвига (счетчик по mod10) находится в нулевом состоянии и его единичный выходной сигнал поступает на вентиль И, Рис. 58. Контроллер последовательной асинхронной передачи. подготавливая цепь выработки сигнала загрузки сдвигового регистра. Процесс передачи байта данных начинается с того, что процессор, выполняя команду «Вывод», выставляет этот байт на шине данных. Одновременно процессор формирует управляющий сигнал системного интерфейса «Вывод», 138

139 по которому производятся запись передаваемого байта в буферный регистр А1, сброс регистра состояния А2 и формирование на вентиле И сигнала «Загрузка». Передаваемый байт переписывается в разряды 1. 8 сдвигового регистра, в нулевой разряд сдвигового регистра записывается 0 (стартовый бит), а в разряды 9 и 10-1 (стоповые биты). Кроме того, снимается сигнал «Сброс» с делителя частоты, он начинает накапливать импульсы генератора тактовой частоты и в момент приема шестнадцатого тактового импульса вырабатывает импульс сдвига. На выходной линии контроллера «Данные» поддерживается состояние 0 (значение стартового бита) до тех пор, пока не будет выработан первый импульс сдвига. Импульс сдвига изменит состояние счетчика импульсов сдвига и перепишет в нулевой разряд сдвигового регистра первый информационный бит передаваемого байта данных. Состояние, соответствующее значению этого бита, будет поддерживаться на линии «Данные» до следующего импульса сдвига. Аналогично будут переданы остальные информационные биты, первый стоповый бит и, наконец, второй стоповый бит, при передаче которого счетчик импульсов сдвига снова установится в нулевое состояние. Это приведет к записи 1 в регистр состояния А2. Единичный сигнал с выхода регистра А2 запретит формирование импульсов сдвига, а также информирует процессор о готовности к приему нового байта данных. После завершения передачи очередного кадра (стартового бита, информационного байта и двух стоповых бит) контроллер поддерживает в линии связи уровень логической единицы (значение второго стопового бита). Уровень логической единицы поступает по линии «Данные» в контроллер для асинхронного приема данных (рис. 59). Этот уровень создает условия для выработки сигнала, запрещающего работу делителя частоты генератора тактовых импульсов. Действительно, после приема предыдущего байта 139

140 данных счетчик импульсов сдвига (счетчик по mod9) находится в нулевом состоянии и на вентиль «И» поступают два единичных сигнала: со счетчика сдвигов и из линии «Данные». На выходе вентиля «И» вырабатывается сигнал сброса делителя частоты сигналов тактового генератора, запрещающий формирование импульсов сдвига. В момент смены стопового бита на стартовый бит (момент начала передачи нового кадра) на линии «Данные» появится уровень логического нуля и тем самым будет снят сигнал сброса с делителя частоты. Состояние 4-разрядного двоичного счетчика (делителя частоты) начнет изменяться. Когда на счетчике накопится значение 8, он выдаст сигнал, поступающий на входы сдвигового Рис. 59. Контроллер последовательного асинхронного приема регистра и счетчика импульсов сдвига. Так как частота сигналов генератора тактовых импульсов приемника должна совпадать с частотой генератора тактовых импульсов передатчика, то сдвиг (считывание) бита произойдет примерно на середине временного интервала, отведенного на передачу бита 140

141 данных, т. е. времени, необходимого для выработки шестнадцати тактовых импульсов. Это делается для уменьшения вероятности ошибки из-за возможного различия частот генераторов передатчика и приемника, искажения формы передаваемых сигналов (переходные процессы) и т. п. Следующий сдвиг произойдет после прохождения шестнадцати тактовых импульсов, т. е. на середине временного интервала передачи первого информационного бита. При приеме в сдвиговый регистр девятого бита кадра (восьмого информационного бита) из него «выдвинется» стартовый бит и, следовательно, в сдвиговом регистре будет размещен весь принятый байт информации. В этот момент счетчик импульсов сдвига придет в нулевое состояние и на его выходе будет выработан единичный сигнал, по которому содержимое сдвигового регистра перепишется в буферный регистр, в регистр состояния А2 запишется 1 и он будет информировать процессор об окончании приема очередного байта, вентиль И подготовится к выработке сигнала «Сброс» (этот сигнал сформируется после прихода первого стопового бита). Получив сигнал готовности (1 в регистре А2), процессор выполнит команду «Ввод» (см. пример 2, раздела «Параллельная передача данных»). При этом вырабатывается управляющий сигнал системного интерфейса «Ввод», по которому производятся пересылка принятого байта данных из буферного регистра в процессор (сигнал «Чтение») и сброс регистра состояния А2. Отметим, что для простоты изложения в контроллере на рис. 59 не показаны схемы контроля стоповых бит принимаемого кадра. Не показаны также схемы контроля четности или нечетности (паритета) передаваемой информации (обычно в передаваемом байте восьмому биту придается значение 0 или 1, так чтобы в этом байте было четное количество единиц). В реальных контроллерах имеются такие схемы, и если контроллер не принимает из линии связи нужного количества стоповых бит или вырабатывается сигнал ошибки паритета в схеме 141

142 контроля четности, то принятые в текущем кадре биты данных игнорируются и контроллер ожидает поступления нового стартового бита. Обмен данными с ВУ по последовательным линиям связи широко используется в МПС, особенно в тех случаях, когда не требуется высокой скорости обмена. Вместе с тем применение в них последовательных линий связи с ВУ обусловлено двумя важными причинами. Во-первых, последовательные линии связи просты по своей организации: два провода при симплексной и полудуплексной передаче и максимум четыре — при дуплексной. Во-вторых, в МПС используются внешние устройства, обмен с которыми необходимо вести в последовательном коде. В современных МПС применяют, как правило, универсальные контроллеры для последовательного ВВ, обеспечивающие как синхронный, так и асинхронный режим обмена данными с ВУ. 8. Классификация и структура микроконтроллеров В настоящее время выпускается целый ряд типов микроконтроллеров (МК). Все эти приборы можно условно разделить на три основных класса: разрядные МК для встраиваемых приложений; и 32-разрядные МК; — цифровые сигнальные процессоры (DSP). Наиболее распространенным представителем семейства МК являются 8- разрядные приборы, широко используемые в промышленности, бытовой и компьютерной технике. Они прошли в своем развитии путь от простейших приборов с относительно слаборазвитой периферией до современных многофункциональных контроллеров, обеспечивающих реализацию сложных алгоритмов управления в реальном масштабе времени. Причиной жизнеспособности 8-разрядных МК является использование их для управления 142

143 реальными объектами, где применяются, в основном, алгоритмы с преобладанием логических операций, скорость обработки которых практически не зависит от разрядности процессора. Росту популярности 8-разрядных МК способствует постоянное расширение номенклатуры изделий, выпускаемых такими известными фирмами, как Motorola, Microchip, Intel, Zilog, Atmel и многими другими. Современные 8- разрядные МК обладают, как правило, рядом отличительных признаков. Перечислим основные из этих признаков: — модульная организация, при которой на базе одного процессорного ядра (центрального процессора) проектируется ряд (линейка) МК, различающихся объемом и типом памяти программ, объемом памяти данных, набором периферийных модулей, частотой синхронизации; — использование закрытой архитектуры МК, которая характеризуется отсутствием линий магистралей адреса и данных на выводах корпуса МК. Таким образом, МК представляет собой законченную систему обработки данных, наращивание возможностей которой с использованием параллельных магистралей адреса и данных не предполагается; — использование типовых функциональных периферийных модулей (таймеры, процессоры событий, контроллеры последовательных интерфейсов, аналогоцифровые преобразователи и др.), имеющих незначительные отличия в алгоритмах работы в МК различных производителей; —расширение числа режимов работы периферийных модулей, которые задаются в процессе инициализации регистров специальных функций МК. При модульном принципе построения все МК одного семейства содержат процессорное ядро, одинаковое для всех МК данного семейства, и изменяемый функциональный блок, который отличает МК разных моделей. Структура модульного МК приведена на рис. 60. Процессорное ядро включает в себя: 143

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

145 — набор регистров для хранения промежуточных данных; система команд процессора; — способы адресации операндов в пространстве памяти; — организация процессов выборки и исполнения команды. С точки зрения системы команд и способов адресации операндов процессорное ядро современных 8-разрядных МК реализует один из двух принципов построения процессоров: процессоры с CISC-архитектурой, реализующие так называемую полную систему команд (Complicated Instruction Set Computer); процессоры с RISC-архитектурой, реализующие сокращенную систему команд (Reduced Instruction Set Computer). CISC-процессоры выполняют большой набор команд с развитыми возможностями адресации, давая разработчику возможность выбрать наиболее подходящую команду для выполнения необходимой операции. В применении к 8-разрядным МК процессор с CISC-архитектурой может иметь однобайтовый, двухбайтовый и трехбайтовый (редко четырехбайтовый) формат команд. При этом система команд, как правило, неортогональна, то есть не все команды могут использовать любой из способов адресации применительно к любому из регистров процессора. Выборка команды на исполнение осуществляется побайтно в течение нескольких циклов работы МК. Время выполнения команды может составлять от 1 до 12 циклов. К МК с CISC-архитектурой относятся МК фирмы Intel с ядром MCS-51, которые поддерживаются в настоящее время целым рядом производителей, МК семейств НС05, НС08 и НС11 фирмы Motorola и ряд других. В процессорах с RISC-архитектурой набор исполняемых команд сокращен до минимума. Для реализации более сложных операций приходится комбинировать команды. При этом все команды имеют формат фиксированной длины (например, 12, 14 или 16 бит), выборка команды из памяти и ее 145

146 исполнение осуществляется за один цикл (такт) синхронизации. Система команд RISC-процессора предполагает возможность равноправного использования всех регистров процессора. Это обеспечивает дополнительную гибкость при выполнении ряда операций. К МК с RISC-процессором относятся МК AVR фирмы Atmel, МК PIC16 и PIC17 фирмы Microchip и другие. На первый взгляд, МК с RISC-процессором должны иметь более высокую производительность по сравнению с CISC МК при одной и той же тактовой частоте внутренней магистрали. Однако на практике вопрос о производительности более сложен и неоднозначен. Во-первых, оценка производительности МК по времени выполнения команд различных систем (RISC и CISC) не совсем корректна. Обычно производительность МП и МК принято оценивать числом операций пересылки «регистр-регистр», которые могут быть выполнены в течение одной секунды. В МК с CISC-процессором время выполнения операции «регистр-регистр» составляет от 1 до 3 циклов, что, казалось бы, уступает производительности МК с RISC-процессором. Однако стремление к сокращению формата команд при сохранении ортогональности системы команд RISC-процессора приводит к вынужденному ограничению числа доступных в одной команде регистров. Так, например, системой команд МК PIC16 предусмотрена возможность пересылки результата операции только в один из двух регистров: регистр-источник операнда f или рабочий регистр W. Таким образом, операция пересылки содержимого одного из доступных регистров в другой (не источник операнда и не рабочий) потребует использования двух команд. Такая необходимость часто возникает при пересылке содержимого одного из регистров общего назначения (РОН) в один из портов МК. В то же время, в системе команд большинства CISC-процессоров присутствуют команды пересылки содержимого РОН в один из портов ввода/вывода. То есть более сложная система команд иногда позволяет реализовать более эффективный способ выполнения операции. 146

147 Во-вторых, оценка производительности МК по скорости пересылки «регистррегистр» не учитывает особенностей конкретного реализуемого алгоритма управления. Так, при разработке быстродействующих устройств автоматизированного управления основное внимание следует уделять времени выполнения операций умножения и деления при реализации уравнений различных передаточных функций. А при реализации пульта дистанционного управления бытовой техникой следует оценивать время выполнения логических функций, которые используются при опросе клавиатуры и генерации последовательной кодовой посылки управления. Поэтому в критических ситуациях, требующих высокого быстродействия, следует оценивать производительность на множестве тех операций, которые преимущественно используются в алгоритме управления и имеют ограничения по времени выполнения. В-третьих, необходимо еще учитывать, что указанные в справочных данных на МК частоты синхронизации обычно соответствуют частоте подключаемого кварцевого резонатора, в то время как длительность цикла центрального процессора определяется частотой обмена по ВКМ. Соотношение этих частот индивидуально для каждого МК и должно быть принято в расчет при сравнении производительности различных моделей контроллеров. С точки зрения организации процессов выборки и исполнения команды в современных 8-разрядных МК применяется одна из двух уже упоминавшихся архитектур МПС: фон-неймановская (принстонская) или гарвардская. Большинство производителей современных 8-разрядных МК используют гарвардскую архитектуру. Однако гарвардская архитектура является недостаточно гибкой для реализации некоторых программных процедур. Поэтому сравнение МК, выполненных по разным архитектурам, следует проводить применительно к конкретному приложению. 147

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

149 зависимости от исполнения центрального процессора командный цикл может включать в себя от одного до нескольких (4 6) тактов синхронизации. Схема синхронизации формирует также метки времени, необходимые для работы таймеров МК. В состав схемы синхронизации входят делители частоты, которые формируют необходимые последовательности синхросигналов Память программ и данных МК В МК используется три основных вида памяти. Память программ представляет собой постоянную память (ПЗУ), предназначенную для хранения программного кода (команд) и констант. Ее содержимое в ходе выполнения программы не изменяется. Память данных предназначена для хранения переменных в процессе выполнения программы и представляет собой ОЗУ. Регистры МК этот вид памяти включает в себя внутренние регистры процессора и регистры, которые служат для управления периферийными устройствами (регистры специальных функций). Память программ Основным свойством памяти программ является ее энергонезависимость, то есть возможность хранения программы при отсутствии питания. С точки зрения пользователей МК следует различать следующие типы энергонезависимой памяти программ: —ПЗУ масочного типа mask — ROM. В ПЗУ запись информации производится в последней операции производства микросхемы — металлизации. Металлизация производится при помощи маски, поэтому такие ПЗУ получили название масочных. Содержимое ячеек ПЗУ этого типа не может быть впоследствии заменено или перепрограммировано. Поэтому МК с таким типом памяти программ следует использовать только после достаточно длительной опытной эксплуатации. Основным недостатком данной памяти является необходимость значительных затрат на создание нового комплекта 149

150 фотошаблонов и их внедрение в производство. Обычно такой процесс занимает 2-3 месяца и является экономически выгодным только при выпуске десятков тысяч приборов. ПЗУ масочного типа обеспечивают высокую надежность хранения информации по причине программирования в заводских условиях с последующим контролем результата (рис. 61). Масочные ПЗУ изображаются на принципиальных схемах как показано на рис. 62. Адреса ячеек памяти в этой микросхеме подаются на выводы A0. A9. Микросхема выбирается сигналом CS. При помощи этого сигнала можно наращивать объем ПЗУ. Чтение микросхемы производится сигналом RD. Рис. 61. Схема масочного постоянного запоминающего устройства. Программирование масочного ПЗУ производится на заводе изготовителе, что очень неудобно для мелких и средних серий производства, не говоря уже о стадии разработки устройства. Естественно, что для крупносерийного производства масочные ПЗУ являются самым дешевым видом ПЗУ, и поэтому широко применяются в настоящее время. Для мелких и средних серий 150

151 Рис. 62. Обозначение масочного постоянного запоминающего устройства на принципиальных схемах. производства радиоаппаратуры были разработаны микросхемы, которые можно программировать в специальных устройствах — программаторах. В этих микросхемах постоянное соединение проводников в запоминающей матрице заменяется плавкими перемычками, изготовленными из поликристаллического кремния. При производстве микросхемы изготавливаются все перемычки, что эквивалентно записи во все ячейки памяти логических единиц. В процессе программирования на выводы питания и выходы микросхемы подается повышенное питание. При этом, если на выход микросхемы подается напряжение питания (логическая единица), то через перемычку ток протекать не будет и перемычка останется неповрежденной. Если же на выход микросхемы подать низкий уровень напряжения (присоединить к корпусу), то через перемычку будет протекать ток, который испарит эту перемычку. При последующем считывании информации из этой ячейки будет считываться логический ноль. Программируемые ПЗУ оказались очень удобны при мелкосерийном и среднесерийном производстве. —ПЗУ, программируемые пользователем, с ультрафиолетовым стиранием EPROM (Erasable Programmable ROM). 151

152 ПЗУ с ультрафиолетовым стиранием строится на основе запоминающей матрицы построенной на ячейках памяти, внутреннее устройство которой приведено на рис.63. Ячейка представляет собой МОП транзистор, в котором затвор выполняется из поликристаллического кремния. Затем в процессе изготовления микросхемы этот затвор окисляется и в результате он будет окружен оксидом кремния — Рис. 63. Запоминающая ячейка ПЗУ с ультрафиолетовым и электрическим стиранием. диэлектриком с прекрасными изолирующими свойствами. В описанной ячейке при полностью стертом ПЗУ заряда в плавающем затворе нет, и поэтому транзистор ток не проводит. При программировании микросхемы на второй затвор, находящийся над плавающим затвором, подается высокое напряжение и в плавающий затвор за счет туннельного эффекта индуцируются заряды. После снятия программирующего напряжения на плавающем затворе индуцированный заряд остается и, следовательно, транзистор остается в проводящем состоянии. Заряд на плавающем затворе может храниться десятки лет. Структурная схема постоянного запоминающего устройства не отличается от описанного ранее масочного ПЗУ. Единственно вместо перемычки используется описанная выше ячейка. В репрограммируемых ПЗУ стирание ранее записанной информации осуществляется ультрафиолетовым излучением. Для того, чтобы этот свет мог беспрепятственно проходить к 152

153 полупроводниковому кристаллу, в корпус микросхемы встраивается окошко из кварцевого стекла. При облучении микросхемы, изолирующие свойства оксида кремния теряются и накопленный заряд из плавающего затвора стекает в объем полупроводника и транзистор запоминающей ячейки переходит в закрытое состояние. Время стирания микросхемы колеблется в пределах минут. Количество циклов записи — стирания микросхем находится в диапазоне от 10 до 100 раз, после чего микросхема выходит из строя. Это связано с разрушающим воздействием ультрафиолетового излучения. В качестве примера таких микросхем можно назвать микросхемы 573 серии российского производства, микросхемы серий 27сXXX зарубежного производства. В этих микросхемах чаще всего хранятся программы BIOS универсальных компьютеров. Репрограммируемые ПЗУ изображаются на принципиальных схемах как показано на рис. 64. Рис. 64. Обозначение репрограммируемого постоянного запоминающего устройства на принципиальных схемах. Такой керамический корпус с кварцевым окошком стоит довольно дорого, что значительно увеличивает стоимость МК. Для уменьшения стоимости МК с EPROM его заключают в корпус без окошка (версия EPROM с однократным программированием). 153

154 ПЗУ, однократно программируемые пользователем, OTPROM (One — Time Programmable ROM). Они представляют собой версию EPROM, выполненную в корпусе без окошка для уменьшения стоимости МК на его основе. Сокращение стоимости при использовании таких корпусов настолько значительно, что в последнее время эти версии EPROM часто используют вместо масочных ПЗУ. Так так корпуса с кварцевым окошком очень дороги, а также малое количество циклов записи — стирания привели к поиску способов стирания информации из ППЗУ электрическим способом. В качестве запоминающей ячейки в них используются такие же ячейки как и в РПЗУ, но они стираются электрическим потенциалом, поэтому количество циклов записи — стирания для этих микросхем достигает раз. Время стирания ячейки памяти в таких микросхемах уменьшается до 10 мс. Схема управления для таких микросхем получилась сложная, поэтому наметилось два направления развития этих микросхем: — ЭСППЗУ; — FLASH ПЗУ. Электрически стираемые ППЗУ дороже и меньше по объему, но зато позволяют перезаписывать каждую ячейку памяти отдельно. В результате эти микросхемы обладают максимальным количеством циклов записи — стирания. Область применения электрически стираемых ПЗУ — хранение данных, которые не должны стираться при выключении питания. К таким микросхемам относятся отечественные микросхемы 573РР3, 558РР и зарубежные микросхемы серии 28cXX. Электрически стираемые ПЗУ обозначаются на схемах как показано на рис ПЗУ, программируемые пользователем, с электрическим стиранием EEPROM (Electrically Erasable Programmable ROM). ПЗУ данного типа можно считать новым поколением EPROM, в которых стирание ячеек памяти производится также электрическими сигналами за счет использования 154

155 Рис. 65. Обозначение электрически стираемого постоянного запоминающего устройства на принципиальных схемах. туннельных механизмов. Применение EEPROM позволяет стирать и программировать МК, не снимая его с платы. Таким способом можно производить отладку и модернизацию программного обеспечения. Это дает огромный выигрыш на начальных стадиях разработки микроконтроллерных систем или в процессе их изучения, когда много времени уходит на поиск причин неработоспособности системы и выполнение циклов стиранияпрограммирования памяти программ. Технология программирования памяти EEPROM допускает побайтовое стирание и программирование ячеек. Несмотря на очевидные преимущества EEPROM, только в редких моделях МК такая память используется для хранения программ. Связано это с тем, что, во-первых, EEPROM имеют ограниченный объем памяти. Во-вторых, почти одновременно с EEPROM появились Flash-ПЗУ, которые при сходных потребительских характеристиках имеют более низкую стоимость; — ПЗУ с электрическим стиранием типа Flash Flash-ROM. Рис. 66. Ячейка флэш-памяти на одном транзисторе. 155

156 Ячейки флэш-памяти бывают как на одном (рис.66), так и на двух транзисторах. В простейшем случае каждая ячейка хранит один бит информации и состоит из одного полевого транзистора со специальной электрически изолированной областью («плавающим» затвором — floating gate), способной хранить заряд многие годы. Наличие или отсутствие заряда кодирует один бит информации. При записи заряд помещается на плавающий затвор одним из двух способов (зависит от типа ячейки): методом инжекции «горячих» электронов или методом туннелирования электронов. Стирание содержимого ячейки (снятие заряда с «плавающего» затвора) производится методом туннелирования. Как правило, наличие заряда на транзисторе понимается как логический «0», а его отсутствие — как логическая «1». Современная флэш-память обычно изготавливается по 0,13- и 0,18-микронному техпроцессу. Общий принцип работы ячейки флэш-памяти. Рассмотрим простейшую ячейку флэш-памяти на одном n p — n транзисторе. Ячейки подобного типа чаще всего применяются в микросхемах EPROM (табл. 3). Поведение транзистора зависит от количества электронов на «плавающем» затворе. «Плавающий» затвор играет ту же роль, что и конденсатор в динамической памяти, т. е. хранит запрограммированное значение. Помещение заряда на «плавающий» затвор в такой ячейке производится методом инжекции «горячих» электронов (CHE — channel hot electrons), а снятие заряда осуществляется методом квантомеханического туннелирования. Эффект туннелирования — один из эффектов, использующих волновые свойства электрона. Сам эффект заключается в преодолении электроном потенциального барьера малой «толщины». Для наглядности представим себе структуру, состоящую из двух проводящих областей, разделенных тонким слоем диэлектрика (обеднѐнная область). Преодолеть этот слой обычным способом электрон не может — не хватает энергии. Но при создании 156

157 определѐнных условий (соответствующее напряжение и т.п.) электрон проскакивает слой диэлектрика (туннелирует сквозь него), создавая ток. Важно отметить, что при туннелировании электрон оказывается «по другую сторону», не проходя через диэлектрик. Функционально Flash-память (рис. 67) мало отличается от EEPROM. Основное различие состоит в способе стирания записанной информации. В памяти EEPROM стирание производится отдельно для каждой ячейки, а во Flash-памяти стирать можно только целыми блоками. Если необходимо изменить содержимое одной ячейки Flash-памяти, потребуется перепрограммировать весь блок. Упрощение декодирующих схем по сравнению с EEPROM привело к тому, что МК с Flash-памятью становятся конкурентоспособными по отношению не только к МК с однократно программируемыми ПЗУ, но и с масочными ПЗУ также. Существует три основных типа доступа к флэш-памяти: — обычный (Conventional): произвольный асинхронный доступ к ячейкам памяти. — пакетный (Burst): синхронный, данные читаются параллельно, блоками по 16 или 32 слова. Считанные данные передаются последовательно, передача синхронизируется. Преимущество перед обычным типом доступа — быстрое последовательное чтение данных. Недостаток — медленный произвольный доступ. — страничный (Page): асинхронный, блоками по 4 или 8 слов. Преимущества: очень быстрый произвольный доступ в пределах текущей страницы. Недостаток: относительно медленное переключение между страницами. Существуют микросхемы флэш-памяти, позволяющие одновременную запись и стирание (RWW — Read While Write или Simultaneous R/W) в разные банки памяти. 157

158 Т а б л и ц а 3 Общий принцип работы ячейки флэш-памяти. При чтении, в отсутствие заряда на «плавающем» затворе, под воздействием положительного поля на управляющем затворе, образуется n-канал в подложке между истоком и стоком, и возникает ток. Наличие заряда на «плавающем» затворе меняет вольт — амперные характеристики транзистора таким образом, что при обычном для чтения напряжении канал не появляется, и тока между истоком и стоком не возникает. При программировании, на сток и управляющий затвор подаѐтся высокое напряжение (на управляющий затвор напряжение подаѐтся приблизительно в два раза выше). «Горячие» электроны из канала инжектируются на плавающий затвор и изменяют вольт — амперные характеристики транзистора. При стирании высокое напряжение подаѐтся на исток. На управляющий затвор (опционально) подаѐтся высокое отрицательное напряжение. Электроны туннелируют на исток. 158

159 Электроны называют «горячими» за то, что обладают высокой энергией, достаточной для преодоления потенциального барьера, создаваемого тонкой плѐнкой диэлектрика. Рис. 67. Обозначение Flash-памяти на принципиальных схемах. В общем случае при обращении к постоянному запоминающему устройству сначала необходимо выставить адрес ячейки памяти на шине адреса, а затем произвести операцию чтения из микросхемы. Эта временная диаграмма приведена на рис. 68. Рис. 68. Временная диаграмма чтения информации из ПЗУ. На рис. 68 стрелками показана последовательность, в которой должны формироваться управляющие сигналы. На этом рисунке RD — это сигнал чтения, A — сигналы выбора адреса ячейки (так как отдельные биты в шине адреса могут принимать разные значения, то показаны пути перехода как в 159

Торгаев с н основы микропроцессорной техники. Основы микропроцессорной техники

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

CPU – центральный процессор (центральное процессорное устройство – ЦПУ)

RAM – оперативное запоминающее устройство (ОЗУ)

ROM – постоянное запоминающее устройство (ПЗУ)

Port I / O – порт ввода/вывода

Что такое процессор вы уже немного знаете. ОЗУ и ПЗУ – это два вида памяти. Их можно было бы не разделять. Процессор их и не разделяет и работает с обоими видами памяти одинаково. Но между ними есть одно довольно существенное различие. ОЗУ хранит информацию только при наличии напряжения питания. Классический пример ячейки ОЗУ – это простейший регистр, построенный на D -триггерах. В такой регистр можно записывать информацию и она там будет храниться. Но после выключения питания при последующем включении все D -триггера регистра установятся в случайное положение. Информация будет утеряна. ОЗУ на основе параллельных регистров сейчас почти не применяется. Однако и по сей день не придумано достаточно быстродействующее устройство памяти, не теряющее информации с выключением питания.

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

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

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

На схеме, на рис. 24 изображены три основные шины микропроцессорной системы. Вместе они составляют системную шину. Системная шина состоит из следующих составляющих:

ШД – шина данных (DATA bus )

ША – шина адреса (ADDR bus)

ШУ – шина управления (CONTROL bus )

Эта шина предназначена для передачи данных от микропроцессора к периферийным устройствам и обратно. Напомню, что периферийными устройствами для процессора являются устройства памяти (ОЗУ и ПЗУ) и порты ввода/вывода. В простых микропроцессорных контроллерах она имеет обычно 8 разрядов. В более сложных – 16, 32, 64 … Количество разрядов всегда кратно восьми. По восьми разрядам передается один байт информации (то есть двоичное восьмиразрядное число). По шестнадцати разрядам можно одновременно передавать два байта. По 32-разрядной шине передача информации может происходить тремя способами: один байт (по младшим восьми разрядам), два байта (по младшим 16) и сразу по 4 байта. Аналогичный принцип используется и в 64-разрядной шине. Таким образом, как видим, байт тоже стал своеобразным стандартом, единицей измерения данных.

Предназначена для передачи адреса ко всем периферийным устройствам (как к устройствам памяти, так и к портам ввода/вывода). Количество разрядов адресной шины отличается большим разнообразием. Например, микропроцессор серии К580ИК80 имеет 16 разрядов адреса. Это можно считать минимальным количеством. Процессор Intel 8086, На котором собран родоначальник всех современных персональных компьютеров – IBM PC -XT , имеет 20 разрядов адреса. Современные процессоры имеют до 32 разрядов и больше. От количества разрядов шины адреса зависит, какое количество ячеек памяти может адресовать процессор. Процессор, имеющий шестнадцатиразрядную шину данных может обращаться к 2 16 (то есть к 65536) ячейкам памяти. Это число называется объемом памяти. То есть, по другому можно сказать, что такой процессор имеет объем адресуемой памяти в 65536 байт.

В вычислительной технике используется необычная размерность для измерения объема памяти. Число 1024 (а это 2 10) байт информации принято называть Килобайтом. Почему 1024, а не 1000? Ну во первых потому, что количество ячеек памяти, адресуемых любым микропроцессором всегда является величиной, равной какой либо степени числа два. Например, для адресации 1024 ячеек памяти нужна шина адреса, имеющая ровно 10 разрядов. При этом шина не будет избыточна. Если бы мы захотели иметь только 1000 ячеек памяти, то для того, что бы обеспечить возможность обратиться к любой из них, нам все равно потребовалось бы 10 разрядов адреса, так как при девяти разрядах можно обратиться только к 512 ячейкам. Поэтому никто и ни когда не делал запоминающего устройства с объемом не равным одной из степеней двойки. Логично, что и объем памяти удобнее измерять в величинах, из того же ряда.

Поэтому один килобайт равен 1024 байта. Один мегабайт равен 1024 килобайта. Один гигабайт равен 1024 мегабайту. Ну, дальше наша техника пока еще не пошла. Пока объемы памяти, реально используемой на современных компьютерах, не превышают нескольких гигабайт.

Для адресации портов ввода/вывода используется та же самая шина данных. Но в отличие от режима обмена данными с ОЗУ, при обмене с ПЗУ обычно используются только восемь (реже 16) младших разрядов той же самой шины адреса. Это связано с тем, что в реальной микропроцессорной системе портов ввода вывода бывает гораздо меньше, чем ячеек памяти.

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

RD – сигнал чтения

WR – сигнал записи

MREQ – сигнал, инициализации устройств памяти (ОЗУ или ПЗУ)

IORQ –сигнал инициализации портов ввода/вывода

Кроме того, к сигналам шины управления относятся:

READY – сигнал готовности

RESET – сигнал сброса

И еще несколько специальных сигналов, о которых мы поговорим позже.

В данной книге мы будем рассматривать простую микропроцессорную систему, имеющую восьмиразрядную шину данных и шестнадцатиразрядную шину адреса.

Рассмотрим подробнее, как работает микропроцессорная система, изображенная на рис. 28. В основном режиме работы, всей микропроцессорной системой управляет центральный процессор (CPU ). При этом он может выполнять четыре основных операции: чтение из ячейки памяти, запись в ячейку памяти, чтение из порта и запись в порт.

Для того, что бы прочитать байт из ячейки памяти, процессор сначала устанавливает на шине адреса адрес нужной ячейки. Затем он устанавливает сигнал MREQ в активное состояние (Лог. 0). Этот сигнал поступает на устройства памяти и служит разрешением для их работы. При этом сигнал IORQ остается равным лог. 1. Поэтому порты ввода/вывода микропроцессорной системы не активны.

В следующий момент времени процессор переводит в активное состояние сигнал RD . Этот сигнал поступает как на устройства памяти, так и на порты ввода/вывода. Однако порты не реагируют на него, так как они отключены высоким уровнем сигнала IORQ . Устройство памяти напротив, получив управляющие сигналы RD и MREQ, выдает на шину данных байт информации из той ячейки памяти, адрес которой поступает на него по шине адреса.

Процесс записи данных в память происходит в следующей последовательности: Сначала центральный процессор выставляет на адресную шину адрес нужной ячейки памяти. Затем на шину данных он выставляет байт, предназначенный для записи в эту ячейку. После этого активизируется сигнал MREQ , разрешающий доступ к модулю памяти. И уже затем процессор устанавливает сигнал WR в активное (лог. 0) состояние. По этому сигналу происходит запись байта в ячейку памяти, адрес которой присутствует на шине адреса.

Некоторые виды памяти работают очень медленно. Они могут не успеть выдать информацию или произвести ее записать так быстро, как это способен сделать центральный процессор. Для согласования работы медленных устройств памяти с быстрыми процессорами существует сигнал READY (готовность). Сразу после того, как процессор установит сигнал чтения или записи в активное состояние, устройство памяти устанавливает сигнал READY в пассивное состояние (лог. 0). Такой уровень сигнала означает, что внешнее устройство не готово, то есть еще не выполнило команду. Сигнал READY поступает на процессор, и он переходит в режим ожидания. Когда устройство памяти выполнит команду, оно установит сигнал в активное состояние (лог. 1). Процессор, получив этот сигнал, возобновляет работу. Сигнал READY применяется и в случае работы с медленными портами ввода/вывода.

Операции чтения и записи с портами ввода/вывода происходят аналогично операциям чтения/записи с ОЗУ. Различие лишь в том, что вместо сигнала MREQ , в активное состояние переходит сигнал IORQ , разрешающий работу портов.

Как видно из схемы (рис. 24), к одной системной шине могут подключаться несколько модулей памяти, а так же несколько портов. Все устройства ко всем шинам подключаются параллельно. Как же происходит, что процессор записывает информацию в тот модуль памяти, в который нужно и при этом он не попадает в другие модули? Для этого в каждый модуль памяти встроен специальный дешифратор. На него подаются сигналы старших разрядов адресной шины. Далее, при помощи внутренних перемычек, для каждого модуля выбирается свой диапазон адресов с таким расчетом, что бы модули занимали разные не пересекающиеся диапазоны. Для того, что бы это было понятнее, предположим, что мы имеем четыре модуля памяти по шестнадцать ячеек в каждом. Для адресации шестнадцати ячеек достаточно четырех разрядов адресной шины. Еще два разряда понадобятся для того, что бы выбирать один из модулей. Поэтому четыре младших разряда шины данных (D 0..D 3) подаются на все модули памяти параллельно и используются для выбора одной из ячеек в модуле. Следующие два разряда (D 4, D 5) подаются на дешифраторы выбора модуля. Такие модули еще называют банками памяти. Перемычки в выбираемых модулях при этом нужно установить так, что бы первый модуль (банк памяти) активизировался тогда, когда разряды D4, D5 примут значение 00 2 . Во втором модуле перемычки должны быть установлены в положение, при котором модуль будет активизироваться если D 5, D 5 примут значение 01 2 . Третий модуль активизируется при D 4, D 5 =10 2 , а четвертый при 11 2 . При таком способе включения модулей памяти первый банк памяти будет занимать в адресном пространстве адреса с 000000 2 по 001111 2 . Второй банк – адреса с 010000 2 по 011111 2 . Третий – с 100000 2 по 101111 2 . И четвертый — с 110000 2 по 111111 2 . Таким образом, процессор сможет обращаться к любой ячейке любого банка памяти. И при этом все модули будут подключены ко всем шинам микропроцессорной системы параллельно.

В заключение этой главы необходимо сказать о еще одном элементе, обязательно присутствующем в любой микропроцессорной системе. Это тактовый генератор. На рис. 24 тактовый генератор для простоты не показан. Каждая операции в микропроцессорной системе разделена на несколько тактов. Тактовый генератор вырабатывает прямоугольные импульсы, которые поступают на специальный вход микропроцессора, а иногда и на некоторые другие микросхемы микропроцессорной системы. Эти импульсы синхронизирует все процессы, происходящие в микропроцессорной системе и, в конечном счете, определяют быстродействие всей системы. У микроконтроллеров AT 89C 2051 и аналогичных ему, тактовый генератор входит в состав самой микросхемы контроллера.

Московский государственный инженерно-физический институт

Факультет Автоматики и электроники

ОСНОВЫ МИКРОПРОЦЕССОРНОЙ ТЕХНИКИ

1. Общая структура и принципы функционирования

2. Система команд микропроцессоров и способы адресации операндов

3. Реализация и организация памяти

4. Классификация микропроцессоров, основные варианты их архитектуры и структуры

Основы микропроцессорной техники

Микропроцессором называется программно-управляемое устройство для обработки цифровой информации и управления процессом обработки, реализованное в виде большой (БИС) или сверхбольшой (СБИС) интегральной микросхемы. Таким образом, микропроцессор выполняет роль процессора в цифровых системах различного назначения. Это могут быть системы обработки информации (компьютеры), системы управления объектами и процессами, информационно-измерительные системы и другие виды систем, используемых в промышленности, бытовой технике , аппаратуре связи и многих других областях применения.

4. Общая структура и принципы функционирования

Большинство микропроцессорных систем имеет магистрально-модульную структуру (рис.1.1), в которой отдельные устройства (модули), входящие в состав системы, обмениваются информацией по общей системной шине – магистрали.

Постоянное запоминающее устройство (ПЗУ) служит для хранения констант и стандартных (неизменяемых) программ. В ПЗУ обычно записываются программы начальной инициализации (загрузки) систем, тестовые и диагностические программы и другое служебное программное обеспечение , которое не меняется в процессе эксплуатации систем. В микропроцессорных системах, управляющих определенными объектами с использованием фиксированных или редко изменяемых программ, для их хранения также обычно используется ПЗУ (память ROM – Read-Only Memory) или репрограммируемое ПЗУ (память EPROM – Electrically Programmable Read-Only Memory или флеш-память).

Остальные устройства являются внешними и подключаются к системе с помощью интерфейсных устройств (ИУ), реализующих определенные протоколы параллельного или последовательного обмена. Внешними устройствами являются клавиатура, монитор, внешние запоминающие устройства (ВЗУ), использующие гибкие или жесткие магнитные диски, оптические диски (CD-ROM), магнитные ленты и другие виды носителей информации, датчики и преобразователи информации (аналого-цифровые или цифро-аналоговые), разнообразные исполнительные устройства (индикаторы, принтеры, электродвигатели, реле и другие). Для реализации различных режимов работы к системе могут подключаться дополнительные устройства – контроллеры прерываний, прямого доступа к памяти и другие, выполняющие необходимые специальные функции управления.

Данная структура соответствует архитектуре Фон-Неймана, предложенной этим ученым в 40-х годах для реализации первых моделей цифровых ЭВМ. Ниже будут рассмотрены и другие варианты процессорных архитектур.

Системная шина содержит несколько десятков (в сложных системах более 100) проводников, которые в соответствии с их функциональным назначением подразделяются на отдельные шины — адреса А, данных D и управления C. Шина A служит для передачи адреса, который формируется микропроцессором и позволяет выбрать необходимую ячейку памяти ОЗУ (ПЗУ) или требуемое ИУ при обращении к внешнему устройству. Шина D служит для выборки команд, поступающих из ОЗУ или ПЗУ в УУ микропроцессора, и для пересылки обрабатываемых данных (операндов) между микропроцессором и ОЗУ или ИУ (внешним устройством). По шине C передаются разнообразные управляющие сигналы, определяющие режимы работы памяти (запись или считывание), интерфейсных устройств (ввод или вывод информации) и микропроцессора (запуск, запросы внешних устройств на обслуживание, информация о текущем режиме работы и другие сигналы).

Разрядность шины данных D обычно соответствует разрядности операндов, обрабатываемых микропроцессором. Поэтому шина D содержит 8, 16 или 32 линии для передачи соответствующих разрядов данных и команд. В ряде последних моделей микропроцессоров используется шина D с расширенной разрядностью, чтобы обеспечить одновременную передачу нескольких команд или операндов. Например, 32-разрядные микропроцессоры Pentium имеют 64-разрядную шину данных.

Разрядность шины адреса A определяет максимальный объем адресуемой процессором внешней памяти. Например, 16-разрядная шина A обеспечивает адресацию памяти объемом до 64 Кбайт, а 32-разрядная шина – до 4 Гбайт. Процессоры Pentium II, Pentium III, Pentium 4 имеют 36-разрядную шину адреса, обеспечивающую обращение к памяти объемом до 64 Гбайт. Отметим, что в ряде микропроцессоров, например в Pentium, вместо младших разрядов адреса формируются сигналы выборки соответствующих байтов (сигналы байтной выборки BEi, где i – номер байта), которые позволяют организовать хранение байтов в отдельных банках памяти.

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

В некоторых системах для уменьшения числа необходимых линий связи и соответствующих выводов и контактов используется мультиплексирование линий адреса и данных. В таких системах для передачи адреса и данных используются одни и те же линии связи, на которые сначала выдается адрес, а затем поступают данные. Например, 16-разрядные микроконтроллеры семейства MCS-196, выпускаемые компанией Intel, имеют мультипл

Название: Микропроцессоры и основные понятия
Раздел: Рефераты по коммуникации и связи
Тип: реферат Добавлен 10:14:35 12 июня 2011 Похожие работы
Просмотров: 1346 Комментариев: 12 Оценило: 2 человек Средний балл: 5 Оценка: неизвестно Скачать