Текст книги "Организация ЭВМ и периферийные устройства"
Автор книги: Михаил Рыбальченко
Жанр: Компьютерное Железо, Компьютеры
сообщить о неприемлемом содержимом
Текущая страница: 2 (всего у книги 6 страниц) [доступный отрывок для чтения: 2 страниц]
3.3. Контроллеры и интерфейсы
Контроллер – устройство, управляющее работой некоторого другого устройства (внешнего или внутреннего).
Контроллер прерываний используется для реализации механизма прерываний, используемого для обеспечения своевременного обслуживания устройств компьютера со стороны процессора. Для этого устройство (например, клавиатура, контроллер HDD, сетевой адаптер) имеет свою линию запроса на прерывание и номер прерывания, обозначаемые IRQ n (Interrupt ReQuest).
Контроллер прерываний выполняет следующие функции:
• приём запросов прерываний от устройств, требующих обслуживания со стороны ЦП;
• учёт приоритетов запросов в случае одновременного поступления нескольких запросов;
• маскирование (запрет) запросов на основе данных от процессора (только для маскируемых запросов);
• выдача процессору запроса прерывания и кода устройства, которое сделало запрос.
После получения кода устройства процессор находит в памяти и выполняет соответствующую программу обработки прерывания. В дальнейшем механизм прерываний будет рассмотрен подробнее.
Контроллер прямого доступа к памяти (ПДП) обеспечивает обмен данными между оперативной памятью и внешними устройствами (ВУ), например с жёстким диском, без участия центрального процессора. Контроллер ПДП, таким образом, замещает процессор и выполняет прямую пересылку данных между ОП и ВУ.
Процессор программирует контроллер для обмена, для чего задаёт:
• направление передачи (чтение/запись1111
Под чтением понимается считывание данных из ОП и пересылка их на устройство ввода.
[Закрыть]);
• начальный адрес блока данных в ОП;
• адрес внешнего устройства;
• размер блока данных (количество слов).
Пересылка данных может выполняться в одном из режимов:
• блочная передача: контроллер ПДП монополизирует шину на всё время пересылки блока данных, при этом для ЦП шина недоступна;
• одиночная передача: контроллер ПДП после завершения передачи каждого слова освобождает шину минимум на один цикл, в течение которого шина доступна ЦП, но после обнаружения сигнала запроса от ВУ контроллер ПДП выполняет захват шины для очередной передачи;
• передача по требованию: осуществляется так же, как и блочная передача, но с выполнением дополнительной проверки наличия сигнала запроса ПДП от ВУ, и в случае его отсутствия, передача приостанавливается до момента появления данного сигнала.
Очевидно, что режимы различаются по времени передачи и эффективностью использования процессора. Процессор во время операций ПДП имеет возможность продолжать работу, при условии, что установленный режим обмена не занимает всей пропускной способности системной шины.
Для обозначения прямого доступа к памяти часто используется сокращение DMA от Direct Memory Access. Существуют более производительные разновидности – Ultra DMA. Обмен посредством ПДП меньше загружает процессор, а скорость обмена с использованием ПДП может быть выше, чем посредством процессора (так называемого программируемого обмена или PIO – Programmable Input/Output), поскольку процессор может выделить для обмена только часть всего времени работы.
Также ПДП может осуществляться так называемыми каналами или процессорами ввода/вывода. Они, в отличие от контроллера ПДП, сами выполняют программы ввода-вывода из ОП по указанию ЦП. В дальнейшем механизм прямого доступа к памяти будет рассмотрен подробнее.
Интерфейс аппаратный (Interface) – средство сопряжения двух систем или подсистем, в котором все конструктивные, электрические и логические параметры предварительно согласованы или стандартизованы.
Физически аппаратный интерфейс реализуется обычно в виде разъёма. Основными разновидностями интерфейсов компьютера являются последовательный и параллельный интерфейс.
Последовательный интерфейс – сопряжение, через которое информация передаётся по одному биту за один такт передачи. Примером стандартного последовательного интерфейса может служить интерфейс RS 232, предназначенный для подключения к компьютеру относительно медленных периферийных устройств (модем, мышь). В настоящее время последовательный тип интерфейса используется и для подключения к компьютеру устройств среднего быстродействия, например, накопители на жёстких магнитных дисках (SATA), внешние накопители, сканеры (USB) и т.д.
Параллельный интерфейс – сопряжение, через которое за один такт передаётся два и более бита информации (обычно по одному байту). Примером стандартного параллельного интерфейса является Centronics, используемый для подключения принтера.
Вопросы для самопроверки
1. Поясните назначение и особенности построения оперативной памяти.
2. Поясните назначение и особенности построения кэш-памяти.
3. В чём назначение и основные функции System BIOS компьютера?
4. В чём назначение и основные функции CMOS RAM компьютера?
5. Поясните назначение, функции и состав чипсета компьютера.
6. Поясните назначение и функции контроллера прерываний.
7. Поясните назначение и функции контроллера прямого доступа к памяти.
8. Дайте понятие интерфейса и укажите его основные разновидности.
4. Центральный процессор
4.1. Принципы адресации к памяти в реальном режиме работы процессоров
Особенности адресации в реальном режиме определены следующими факторами.
1. Особенности процессоров i8086/88, впервые применённых в микрокомпьютерах типа IBM PC: эти процессоры содержат 16-разрядные регистры, имеют 20-разрядную шину адреса и, таким образом, могут адресовать 220≈ 1 млн слов данных. С учётом того, что внешняя шина данных является 8-разрядной (для i8088), слово данных имеет размер 1 байт, и поэтому максимальный объём адресуемой памяти составляет 1 Мбайт.
2. Сегментная организация памяти и соответствующий механизм адресации. Это позволяет процессору, используя 16-разрядные регистры, формировать 20-разрядные адреса.
Для обеспечения доступа вся память логически разбивается на сегменты размером по 64 Кбайт, внутри которых процессор может адресовать память, используя 16-разрядные адреса. При этом физический адрес байта памяти т.е. адрес, выставляемый процессором на шине адреса, определяется по формуле
Addr = Segment + Offset ,
где Addr – физический адрес;
Segment – адрес начала сегмента памяти (20-битный);
Offset – смещение относительно начала сегмента (16-битное); первый байт сегмента имеет смещение 0, второй байт – 1 и т.д. до 65 535.
Всё адресное пространство памяти, начиная с нулевого адреса, логически разбито также на параграфы – области памяти, состоящие из 16-ти смежных байт (рис. 2).
Сегмент – непрерывная область памяти размером 64 Кбайта, выровненная на границу параграфа, т.е. имеющая адрес, кратный 16 (рис. 2).
Рассмотрим теперь, каким образом процессоры 8086/8088 адресуют память, размером в 1 Мбайт. Так как адрес сегмента расположен на границе параграфа, младшие четыре бита его адреса всегда равны нулю (рис. 2). Хранить биты, всегда равные нулю, нецелесообразно. Поэтому значение адреса сегмента XXXX0h хранится в так называемых сегментных регистрах процессора в виде XXXXh, где X – шестнадцатеричная цифра. Процессор же «понимает», что дополнительно имеется младший шестнадцатеричный нуль (четыре младших нулевых бита), который и добавляется перед вычислением физического адреса. Наибольшее значение адреса сегмента FFFF0h плюс максимальное смещение FFFFh с избытком позволяет адресовать 1 Мбайт памяти.
Рис. 2. Сегментация памяти
Таким образом, при помощи 16-разрядных регистров процессоры i8086/88 обеспечивают доступ к адресному пространству Addr = 00000h ÷ FFFFFh размером 220 адресов.
Адреса принято обозначать 16-ричными числами, например, 1000 : 0112, где первое значение соответствует содержимому сегментного регистра, а второе – смещению. Сами значения адресов представляются с буквой h после числа (от англ. hexadecimal – шестнадцатеричный). Например, адресу 1000 : 0112h соответствует физический адрес 10000 + 0112 = 10112h.
Примечание. Реально в компьютере адрес сегмента сначала сдвигается влево на 4 бита, а затем складывается со смещением, в результате чего получается 20-разрядный физический адрес.
Аналогичным образом используется сегментация памяти и рассмотренный механизм адресации старшими моделями процессоров семейства x86 при работе в реальном режиме. Поэтому формально в этом режиме им доступен 1 Мбайт памяти. В защищённом режиме эта процедура гораздо сложнее.
В памяти выделяют следующие сегменты:
• сегмент кода – область памяти, предназначенная для хранения команд программы;
• сегмент данных – область памяти, предназначенная для размещения данных программ;
• сегмент стека – область памяти, предназначенная для системного стека;
• сегмент дополнительных данных – область памяти, предназначенная для выполнения операций над строками.
Сегментный механизм адресации предоставляет следующие возможности:
• упрощает распределение памяти при загрузке программ;
• позволяет выполнять программы, написанные для реального режима, также и в защищенном режиме;
• позволяет перемещать программы и данные в памяти без изменения самих программ.
4.2. Структура микропроцессора
Рассмотрим построение микропроцессоров на примере упрощённой структуры типового 16-разрядного МП (рис. 3). Данный МП не является какой-либо конкретной моделью микропроцессора, хотя его логическая структура (состав и функции основных компонентов, а также связи между ними) во многом аналогична МП i8088. Данная структура даёт возможность наглядно проиллюстрировать принцип работы микропроцессоров при выполнении различных команд.
Часто для описания микропроцессора используется его программная модель – состав, назначение и разрядность основных программно-доступных регистров процессора.
Хотя в настоящее время подобные микропроцессоры уже не используются, изучение их структуры оказывается полезным, поскольку:
• это даёт возможность наглядно проиллюстрировать принцип работы микропроцессоров;
• более современные микропроцессоры семейства x86 также используют те же регистры (с расширением) и в реальном режиме функционируют аналогично i8086/88.
Рассмотрим кратко основные компоненты микропроцессора.
АЛУ – арифметико-логическое устройство, выполняет одну из главных функций процессора – обработку данных. Буферные регистры обеспечивают временное хранение операндов.
Регистр – устройство, которое выполняет приём, хранение и передачу информации. Строится в виде набора триггеров, имеющих общие цепи управления и функционирующих синхронно. Рассматриваемые регистры относятся преимущественно к регистрам параллельного типа.
Рис. 3. Пример структуры микропроцессора
Регистры общего назначения (РОНы) АХ, BX, CX, DX . Являются программно-доступными 16-разрядными регистрами и используются при выполнении различных операций обработки данных (т.е. могут быть использованы программистом по своему усмотрению). К РОНам можно адресоваться либо как к единому 2-байтному слову, например СХ, либо к каждому байту по отдельности, например CL (младший байт) и CH (старший байт) (L – сокращение от Low, Н – от High). Помимо общих функций каждый РОН имеет и свои специальные функции:
• регистр AX (accumulator) – аккумулятор или регистр результата, используется в командах ввода-вывода, обязательно используется как операнд в командах умножения, деления и др.;
• регистр ВX (base) – базовый регистр, может быть использован для указания базы (начального адреса) памяти при косвенной или базовой адресации;
• регистр СX (counter) – регистр-счётчик, используется для управления числом повторений циклов;
• регистр DX (data) – регистр данных, используется в паре с AX в операциях умножения и деления для расширения диапазона хранимых значений.
Сегментные регистры : CS, DS, SS, ES. Микропроцессоры i8086/88 содержат четыре сегментных регистра, предназначенных для хранения адресов сегментов кода (программы), данных, стека и дополнительных данных.
Каждый такой регистр содержит адрес сегмента памяти (16-разрядный), т.е. начальный адрес области памяти объёмом 64 Кбайта, выровненной на границу параграфа. У адреса сегмента предполагается наличие 4-х нулевых младших бита, которые фактически не хранятся в сегментных регистрах:
• регистр СS (Code Segment) – регистр сегмента кода, содержит адрес сегмента кода (программы). При суммировании значения из CS (предварительно сдвинутого на 4 бита влево) с указателем команды (IP) определяется физический адрес команды в памяти: Аф= CS×24 + IP;
• регистр DS (Data Segment) – регистр сегмента данных, содержит адрес сегмента данных программы, смещение содержится либо в команде, либо задаётся в регистре-указателе;
• регистр SS (Stack Segment) – регистр сегмента стека, содержит адрес сегмента системного стека (области данных для стековой адресации), смещение хранится в регистрах SP, BP;
• регистр ES (Extra Segment) – регистр сегмента дополнительных данных, используемый для управления адресацией данных, например, в операциях над строками, смещение при этом указывается в индексном регистре DI.
Примечание. Все команды МП, имеющие дело с обращением к памяти, по умолчанию подразумевают использование определённого сегментного регистра. Так, например, команда MOV (пересылка данных) использует регистр DS, а команда JMP (безусловный переход) – регистр CS. При необходимости такое соответствие можно изменить.
Регистры смещения . Общая функция этих регистров – хранение смещения относительно адреса начала сегментов. К регистрам смещения относятся регистры IP, BP, SP, SI, DI.
Счётчик команд (СК) или указатель команд (IP – Instruction Pointer) . Указывает (содержит адрес) на команду из сегмента кода, которая будет выполнена после текущей. Программа не может явно получить или изменить значение этого регистра (программно-недоступен), однако неявным образом это можно сделать с помощью команды перехода или вызова подпрограммы.
Регистры-указатели BP, SP:
• регистр BP (Base Pointer) – указатель базы (начала) стека – области памяти для стековой адресации, используется для доступа к содержимому стека;
• регистр SP (Stack Pointer) – указатель стека, указывает на вершину стека.
Индексные регистры: SI, DI:
• регистр SI (Source Index) – индекс источника, используется для расширенной адресации (например, базовой индексной) и в ряде операций над строками;
• регистр DI (Destination Index) – индекс назначения, используется аналогично.
Регистр состояния (регистр флагов, FLAGS) – хранит ряд признаков (флагов), характеризующих текущее значение результата вычислений и состояние процессора. Эти признаки используются, в частности, командами передачи управления (например, условного перехода).
Примечание. Имеются следующие признаки, отображаемые соответствующими битами регистра состояния (табл. 1).
Таблица 1
Признаки (флаги) состояния микропроцессора
Флаги состояния результата:
• CF (Carry Flag) – флаг переноса/заёма, устанавливается (т.е. принимает единичное значение) при возникновении переноса в арифметических операциях и операциях сдвига;
• PF (Parity Flag) – флаг чётности, устанавливается при чётном числе единичных бит в слове данных результата;
• AF (Auxiliary Flag) – дополнительный флаг переноса (для двоично-десятичных операций устанавливается при переносе из третьего бита тетрады или заёме из четвёртого бита);
• ZF (Zero Flag) – флаг нулевого результата, устанавливается при равенстве нулю результата операции или равенстве в операции сравнения;
• SF (Sign Flag) – флаг знака, устанавливается, если знаковый (старший) бит результата равен единице (результат отрицательный);
• OF (Overflow Flag) – флаг переполнения, устанавливается при арифметическом переполнении, т.е. если результат не умещается в операнде назначения.
Флаги состояния процессора:
• TF (Trap Flag) – флаг трассировки (ловушки), при его установке процессор переходит в режим пошагового выполнения команд;
• IF (Interrupt-enable Flag) – флаг управления прерываниями, при его нулевом состоянии маскируемые аппаратные прерывания запрещены, при единичном – разрешены;
• DF (Direction Flag) – флаг управления направлением для команд обработки строк. При единичном состоянии индексные регистры, используемые в строковых операциях, автоматически декрементируются, а при нулевом – инкрементируются.
Регистр адреса (РА) – регистр для хранения рабочих адресов памяти и портов ввода-вывода; его содержимое может изменяться в цикле выполнения команды, например, для выборки её операндов. Выход регистра адреса образует шину адреса микропроцессора.
Регистр команд (РК) – регистр хранит код текущей команды в процессе её декодирования и выполнения.
Дешифратор команд и устройство управления – осуществляет декодирование кода команды и формирование последовательности управляющих сигналов на все компоненты процессора для выполнения команды (в структуре, приведенной на рис. 3, эти линии показаны оборванными).
Внутренняя шина данных – шина передачи данных между компонентами процессора. Выводы компонентов обычно отключены от шины и подключаются к ней только после поступления управляющего сигнала от УУ (только те компоненты, которые участвуют в выполнении текущего шага команды). Большая часть компонентов имеет двунаправленную связь с этой шиной, т.е. компоненты могут как принимать, так и выставлять данные на шину по сигналам от УУ.
Вопросы для самопроверки
1. Что содержит счётчик команд при выполнении программы?
2. Что содержит регистр команд при выполнении программы?
3. Каково назначение и функции регистра состояния (регистра флагов)?
4. Каково назначение основных сегментных регистров процессора?
5. Какой из компонентов процессора используется для хранения рабочих адресов при выполнении программы?
4.3. Система команд процессора
4.3.1. Основные понятияКоманда процессора – это код, задающий выполняемую операцию, и данные, участвующие в операции, а также явно или неявно содержащий информацию об адресе результата и следующей команды.
Система команд процессора – набор команд, которые могут быть выполнены процессором.
Тип команды определяется характером выполняемых операций. Различают следующие основные типы команд: арифметические и логические, пересылки данных, ввода-вывода, передачи управления, работы со строками, SIMD-команды, управляющие команды (например, остановка выполнения программы).
Структура команды определяется составом, расположением и назначением отдельных полей в коде команды. Поле – составная часть кода команды, которая характеризуется единым назначением.
Формат команды – структура команды с поразрядной разметкой границ отдельных полей команды.
4.3.2. Структуры команд процессораРассмотрим структуры команд процессора с точки зрения количества адресных полей в коде команды. В общем случае различают следующие 5 типов структур команд.
1. Четырёхадресная команда – содержит код операции (КОП) и 4 адресных поля для указания адресов двух операндов, адреса результата и адреса следующей команды соответственно (рис. 4).
Рис. 4. Структура 4-адресной команды
КОП – поле, задающее тип выполняемой операции (пересылка, сложение, ввод и т.д.) и способ адресации.
Пример символического представления операции:
Результат[А3] = Операнд[А1] * Операнд[А2],
где Операнд[Аi] – операнд, расположенный по адресу Аi (содержимое ячейки ОП либо регистра);
* – символ операции.
Особенности четырёхадресных команд:
• принудительный порядок выборки команд, так как адрес следующей команды указан явным образом (в системе команд не требуются команды безусловного перехода);
• наибольшая длина команд.
В настоящее время четырёхадресные команды не используются.
2. Трёхадресная команда – содержит КОП и 3 адресных поля, аналогичных по назначению первым трём полям 4-адресной команды (рис. 5).
Рис. 5. Структура 3-адресной команды
Особенности:
• естественный порядок выборки команд (определяется порядком расположения команд в памяти компьютера, например, в смежных ячейках памяти в порядке возрастания адресов);
• при необходимости нарушения естественного порядка выборки требуется наличие команд передачи управления;
• достаточно большая длина команд.
3. Двухадресная команда – предполагает, что результат операции всегда помещается на месте одного из операндов, например, первого (рис. 6).
Рис.. 6. Структура 2-адресной
Использование для результата подразумеваемого адреса позволяет сократить одно поле команды. Однако при этом из регистра процессора (памяти) удаляется операнд, который возможно команды будет необходим для выполнения следующих команд.
4. Одноадресная команда – предполагает, что подразумеваемый адрес имеют результат операции и один из операндов (рис.7). В качестве такого подразумеваемого адреса часто используется аккумулятор микропроцессора (регистр AX).
Рис. 7. Структура одноадресной команды
Пример символического представления операции:
Аккумулятор = Операнд[А1] * Аккумулятор
Такие команды имеют малую длину, однако для выполнения операции может потребоваться большее количество команд.
Имеются также некоторые специфические одноадресные команды, например, запись в стэк содержимого регистра (PUSH AX) или инкремент содержимого регистра на единицу (INC AX).
5. Безадресная команда – содержит только код операции и предполагает, что либо операнды для команды не нужны, либо все адреса являются подразумеваемыми или неявными. Примером такой команды является команда запрета маскируемых прерываний процессора (STI), устанавливающая в нуль флаг IF.
Рис. 8. Структура безадресной команды
Более короткий формат команд обеспечивает в среднем большее быстродействие при их выборке и выполнении.
Форматы команд различаются также в зависимости от уровней используемой памяти, т.е. в зависимости от того, адрес какого типа указан в адресной части команды – адрес типа R (регистр), в котором указывается номер регистра, или адрес типа M (память) – адрес ячейки ОП. Отсюда различные форматы:
• RR – команды типа регистр-регистр;
• RM – команды типа регистр-память;
• MM – команды типа память-память.
Отметим, что количество разрядов для адресации регистра процессора меньше количества разрядов для адресации ячейки памяти, так как количество регистров значительно меньше количества ячеек памяти.
Структуры команд современных процессоров семейства x86 являются достаточно сложными и могут содержать до шести полей различной длины. Это связано с тем, что архитектура развивалась несколько поколений и приходилось соблюдать требование обратной совместимости.
Внимание! Это не конец книги.
Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?