Книга
Книга
От редактора перевода
Знание принципов работы микропроцессора необходимо не только разработчикам средств вычислительной техники, но и специалистам других отраслей техники, где внедряются микропроцессоры. Действительно, последние нашли широкое применение в специализированных устройствах управления, таких, как станки с ЧПУ, промышленные роботы, технологические линии, измерительная техника, медицинское оборудование, бытовая техника. Поэтому имеется потребность в литературе, посвященной основам работы микропроцессоров и рассчитанной на широкий круг инженерных работников. Предлагаемая книга в достаточной мере отвечает этой потребности. В ней содержится обзор современных 8-, 16- и 32-разрядных микропроцессоров фирм Intel, Motorola и Zilog. Подробно описаны их архитектура, функционирование и взаимодействие с внешними устройствами. Проведен сравнительный анализ возможностей микропроцессоров. Большое внимание в книге уделено различным типам памяти, интерфейсам периферийных устройств, а также .вычислительным системам.
Особый интерес для советского читателя представляет описание работы устройств на базе 32-разрядных микропроцессоров, в которых реализованы такие современные идеи, как кэш-память, виртуальная память и конвейерная обработка. Автор доводит изложение до современного уровня развития вычислительной техники
По содержанию книга представляет собой учебно^ пособие и вполне доступна студентам специальностей, связанных с проектированием микроЭВМ и микропроцессорных систем. Хотя она ориентирована в основном на американские разработки в области микропроцессоров, тем не менее в ней достаточно полно отражен японский опыт преподавания дисциплин, связанных с микропроцессорами. Учитывая успехи Японии в развитии электронной техники, ознакомление с этим опытом может оказаться полезным для советского читателя.
Н. Г. Волков
Предисловие автора
Книга посвящена аппаратному обеспечению микрокомпьютеров и по содержанию связана с книгой X. Исиды «Программирование для микрокомпьютеров*. Обе книги рассчитаны на углубление знаний в области вычислительной техники, связанной с микрокомпьютерами. В настоящее время эта область развивается быстрыми темпами. Разрядность микрокомпьютеров увеличилась с 8 до 16 и 32 бит, адресное пространство уже измеряется мега- и гигабайтами, расширяются их возможности благодаря поддержке операционной системы и виртуальной памяти, а также благодаря средствам обеспечения мультипрограммного режима, встроенному устройству управления памятью и встроенной кэш-памяти.
В книге все эти вопросы рассмотрены довольно подробно. Расширение возможностей микрокомпьютеров обусловлено необходимостью, с одной стороны, повышения их производительности, а с другой — упрощения разработки крупномасштабного шюграммного.обеспечения, ядром которого является операционная система. При проектировании аппаратных средств также необходимо учитывать особенности построения крупномасштабного программного обеспечения.
Описание аппаратных средств является основной целью книги, и в каждой главе рассмотрены некоторые из них, их назначение и приведены примеры таких изделий.
Разумеется, охватить в одной книге всю область микрокомпьютеров — задача довольно сложная, поэтому автор будет признателен читателям за критические замечания и советы.
Август 1984 г.Август 1984 г.Ивао Морисита
Август 1984 г.
Август 1984 г.
Исида X., Программирование для микрокомпьютеров. М.: Мир, 1988.
1
Введение
Что такое микрокомпьютер!
Структура микрокомпьютера
Компьютер состоит из центрального процессора (ЦП), памяти и периферийных устройств (рис. 1.1). Эти составные части компьютера соединяются между собой множеством сигнальных проводов, называемым шиной. Центральный процессор представляет собой устройство обработки данных, а память — устройство для их хранения. Под устройствами понимаются изделия довольно больших размеров, в частности устройствами являются процессор и память. Периферийные устройства можно разделить на устройства ввода-вывода и внешнюю память. Эти устройства обычно с помощью соответствующих интерфейсов (устройств сопряжения) подсоединяются к шине. Поэтому компьютер (рис. 1.2) можно представить в виде собственно вычислительной машины и периферийных устройств. Часто компьютером называют саму вычислительную машину.
Основным устройством компьютера является центральный процессор, имеющий наиболее сложную структуру. Однако благодаря развитию микроэлектроники его удалось реализовать в виде одной интегральной схемы, называемой микропроцессором. Современные интегральные схемы состоят из сложных транзисторных схем, размещенных на монокристалле кремния размером примерно 5X5X0,3 мм. Интегральная схема в виде готового изделия называется кристаллом интегральной схемы или просто кристаллом (чипом). Применительно к микропроцессору такую интегральную схему- можно назвать кристаллом микропроцессора.
Существуют также интегральные схемы, выполняющие функции памяти; их называют кристаллами памяти. Кроме того, разработаны интегральные схемы, выполняющие функции интерфейсов периферийных устройств, их называют кристалла-
ми интерфейсов. Следовательно, компьютер можно представить в виде кристалла микропроцессора и нескольких кристаллов памяти и интерфейсов периферийных устройств (рис. 1.3). Такой компьютер называется микрокомпьютером. Создание микрокомпьютеров позволило существенно уменьшить размеры вычислительных машин и резко снизить их стоимость.
Чтобы использовать кристалл интегральной схемы в виде готового изделия, его нужно поместить в соответствующий корпус. На рис. 1.4, а показан самый распространенный тип корпуса. Выводы корпуса, с помощью которых осуществляется соединение узлов интегральной схемы с печатной платой, расположены в два ряда, поэтому он называется корпусом с двухрядным расположением выводов или сокращенно DIP-корпусом (dual inline package). В последнее время стали применяться плоские корпусы с матричным расположением штырьковых выводов и плоские безвыводные корпусы (или «кристаллодержателп») (рис. 1.4, бив). Примечательно, что несмотря на большое количество выводов, эти корпусы отличаются компактностью. У корпуса, показанного на рис. 1.4, б, выводы расположены с
Рис. 1.1. Структура компьютера.
Рис. 1.2. Компьютер и периферийные устройства.
Рис. 1.4. Корпусы интегральных схем.
у — 64-выводной плоский корпус с двухрядный расположением выводов: б — 68-вы водной плоский корпус с матричным расположением штырьковых выводов: в — без вы води ой корпус с 68 контактами.
Рис. 1.5. Однокристальный микрокомпьютер.
нижней стороны в виде решетки, а у корпуса, показанного на рис. 1.4, в, имеются контактные площадки, расположенные по его периметру.
В небольшом микрокомпьютере все его устройства (ЦП, память, интерфейсы) можно объединить в один чип (рис. 1.5).
Рис. 1.6. Одноплатный микрокомпьютер.
Такой микрокомпьютер называется однокристальным. Помещенный в корпус он выполняет функции компьютера. Однокристальные микрокомпьютеры широко используются для управления малогабаритной аппаратурой, например в бытовых электроприборах, или в качестве главного элемента микрокалькулятора.
Размещая на одной плате несколько кристаллов, можно получить настоящий компьютер (рис. 1.6). Он называется одноплатным микрокомпьютером. Большие компьютеры состоят из множества плат; они могут быть дополнены платами памяти, если емкость памяти, находящейся на плате компьютера, недостаточно большая. Кроме того, когда такой компьютер требуется соединить с большим числом периферийных устройств, он может быть дополнен интерфейсными платами. Все платы компьютера также соединяются между собой с помощью общей шины (рис. 1.7), которая называется системной шиной. Шина, соединяющая на плате микропроцессор, память и интерфейсы периферийных устройств, в отличие от системной * называется локальной шиной. На рис. 1.8 показаны плата компьютера и плата памяти. Все платы такого компьютера имеют одинаковые размеры. Однако используются еще такие системы, в которых большие платы компьютеров дополняются платами памяти и интерфейсов меньших размеров.
Уже давно разрабатываются цифровые интегральные схемы с применением биполярных транзисторов. Они обладают боль-
Плата компьютераПлата компьютераПлата памятиПлата памятиПлата интерфейсаПлата интерфейсаРис. 1.7. Структура многоплатного микрокомпьютера.Рис. 1.7. Структура многоплатного микрокомпьютера.
Плата компьютера
Плата компьютера
Плата памяти
Плата памяти
Плата интерфейса
Плата интерфейса
Рис. 1.7. Структура многоплатного микрокомпьютера.
Рис. 1.7. Структура многоплатного микрокомпьютера.
б
Рис. 1.8. Внешний вил плат. в\о (яших в сослав вычислите. L.iioii спсн-мы: плата компьютера (и) и ила и памяти ри
шим быстродействием, хотя получить для схем такого типа высокую степень интеграции довольно трудно. Существует несколько типов биполярных интегральных схем. В настоящее время наиболее широкое применение получили так называемые ТТЛ-схемы (схемы с транзисторно-транзисторной логикой).
Процессор, память и интерфейсы периферийных устройств выполняются на интегральных МОП-схемах, так как они облегчают достижение высокой степени интеграции. Однако ТТЛ- схемы необходимы и в качестве вспомогательных элементов. Примерами таких схем являются схемы 74-й серии, выпускаемые фирмой «Тексас инструменте» (США) (74 — порядковый номер, приписанный этой серии). Различные фирмы выпускают аналоги данных элементов. В состав 74-й серии входит большое число различных элементов типа вентилей, триггеров, регистров, матриц тристабильных вентилей, дешифраторов, шинных формирователей и др. Используемые в настоящее время МОП- схемы имеют одинаковые с ТТЛ-схемами напряжение питания и уровни сигналов, поэтому их можно непосредственно подключать друг к другу.
.0. Применения микрокомпьютеров
Компьютеры являются универсальными устройствами. Благодаря этому в них с помощью программ можно выполнить обработку любой информации. Раньше факторами, сдерживающими широкое применение компьютеров, были их стоимость и размеры. Однако с разработкой микрокомпьютеров ситуация резко изменилась. Появилась возможность использовать компьютер как отдельное устройство. Прежде всего специальные цифровые системы в соответствии с назначением стали широко заменяться микрокомпьютерами. Используемые изделия на базе микрокомпьютеров можно разделить на универсальные компьютеры и специальные вычислительные системы (системы обработки информации и системы управления в реальном времени). Типичным примером универсальных компьютеров является персональный компьютер. В настоящее время продолжается разработка компьютеров с большими функциональными возможностями, называемых персональными суперкомпьютерами или рабочими станциями. В изделиях обоих типов пользователю предоставляется возможность свободно применять разработанные программы.
В специальных вычислительных системах существует фиксированный набор программ. Типичным примером системы обработки информации является процессор слов, используемый для составления документов. К этой категории относится и однокристальный электронный калькулятор. Существуют всевоз-
Рис. 1.9. Конфигурация робототехнической системы.
можные системы управления в реальном времени, такие, как робототехнические системы, системы управления автомобильными двигателями, предприятиями и др. Тем же целям служит однокристальный компьютер, встроенный в бытовой электроприбор. Соединение объекта управления с компьютером осуществляется через интерфейс (рис. 1.9).
.1.3. Роль повышения степени интеграции
Технические средства микрокомпьютеров развиваются быстрыми темпами. Это обусловлено повышением степени интеграции за счет миниатюризации схем. Первый микропроцессор 4004, созданный в 1971 г., оперировал словами длиной 4 бит; число транзисторов в нем не превышало 2300. По мере повышения степени интеграции появились 8- и 16-разрядные микропроцессоры, и в настоящее время разрабатываются процессоры с длиной слова 32 бит, содержащие на кристалле до нескольких сотен тысяч транзисторов. Однако процесс увеличения масштаба интеграции не ограничивается только увеличением разрядности устройств.
Как показано в гл. 3, необходимо уделять внимание расширению их функциональных возможностей за счет средств поддержки языков высокого уровня, поддержки операционной системы, средств поддержки управления памятью и виртуальной памяти, а также использования встроенного устройства управления памятью и встроенной кэш-памяти.
Кроме того, емкость памяти кристаллов запоминающих устройств за несколько лет возросла в 4 раза. Когда в 1974 г. бы- ли разработаны 8-разрядные процессоры 8080 и МС6800, ем-
кость памяти составляла 4К бит. В настоящее время наибольшее распространение получили кристаллы емкостью 64К бит и уже началось производство кристаллов емкостью 256К бит. На исследовательском уровне уже ведется опытное производство образцов емкостью 1 Мбит. Если удастся создать такое устройство, то даже в одноплатном компьютере можно будет легко реализовать память емкостью в несколько мегабайт. Тогда для создания памяти емкостью 256К байт достаточно будет двух кристаллов с организацией 128КХ8 бит.
В дальнейшем степень интеграции будет некоторое время повышаться. Изделия, обладающие очень большими функциональными возможностями, будут предлагаться по цене, доступной каждому покупателю. В настоящее время проблема заключается в стоимости разработок программного обеспечения. Программное обеспечение 32-разрядных процессоров, разумеется, претерпевает большие изменения. Однако надо учитывать, что машин одного типа выпускается от нескольких сотен тысяч до нескольких миллионов, в результате этого стоимость в пересчете на одного пользователя становится очень низкой и при поддержке рынка сбыта индустрия программного обеспечения, по-видимому, будет широко развиваться.
1.2. Стандартная структура шины и временная диаграмма ее работы
Стандартная структура шины
Как уже говорилось выше, микропроцессор, память и интерфейс периферийного устройства соединяются шиной. Такая шина обеспечивает 3 вида передачи данных:
процессор память;
процессор интерфейс;
память интерфейс.
Рассмотрим первые два вида. В обоих случаях передачей данных управляет процессор. Память и интерфейс по управляющему сигналу от процессора осуществляют передачу данных. Направление передачи данных, как правило, определяется процессором. Пересылка данных снаружи внутрь процессора называется считыванием, обратный процесс — записью.
Шина (рис. 1.10) состоит из шины данных, адресной шины и шины управления. Данные передаются по шине данных. Если в качестве такой шины использовать 8-жильный сигнальный провод, можно параллельно передавать 8 бит информации, соответственно по 16-жильному проводу можно передавать 16 бит информации. Таким образом, количество сигнальных линий оп-
Рис. 1.10. Стандартная структура шины.
ределяет разрядность шины. Обычно разрядность шины данных и длину слов, обрабатываемых в процессоре, выбирают одинаковыми. Шина данных используется как для передачи данных в направлении процессор * память и процессор * интерфейс, так и для их передачи в обратном направлении. Другими словами, шина данных является двунаправленной.
Память представляет собой единую совокупность ячеек для хранения данных. Каждой ячейке присваивается адрес в следующем порядке: нулевой адрес, первый адрес и т. д. Шина для передачи сигналов, указывающих эти адреса, называется адресной шиной; эта шина является выходной по отношению к процессору. Если обозначить разрядность адресной шины п, наибольшее число адресов, к которым можно обращаться по этой шине, равно 2П. Так, для 16-разрядной шины это число равно 64К, для 24-разрядной—16М, для 32-разрядной— 4G (где 1К=210, 1М=220, 1G = 230). Распределяемая область адресов называется адресным пространством.
В интерфейсе периферийного устройства имеются области, предназначенные для ввода и вывода данных. Первая из них называется портом ввода, вторая — портом вывода. Считывание данных из порта ввода называется вводом данных, а запись в порт вывода — выводом данных. Для обращения к портам ввода-вывода существуют следующие два способа: 1) изолированный ввод-вывод; 2) • ввод-вывод с отображением на память.
В первом способе память и порты ввода-вывода используются как различные устройства. На практике для осуществления ввода-вывода применяются специальные команды ввода- вывода. В портах ввода-вывода порту ввода и порту вывода присваиваются номера, не зависящие от адреса памяти. Для указания номера порта также используются адресные сигналы. Однако, если нет необходимости использовать все 16 бит адреса, для этой цели можно взять только восемь младших (анало-
импульсыимпульсыРис. 1.11. Сигналы управления считыванием-записью в память и вводом-выводом данных из портов ввода-вывода.Рис. 1.11. Сигналы управления считыванием-записью в память и вводом-выводом данных из портов ввода-вывода.
импульсы
импульсы
Рис. 1.11. Сигналы управления считыванием-записью в память и вводом-выводом данных из портов ввода-вывода.
Рис. 1.11. Сигналы управления считыванием-записью в память и вводом-выводом данных из портов ввода-вывода.
гично из 32 бит используются 16 младших). Во втором способе память и порты ввода-вывода используются как одинаковые устройства. Для этого часть адресов, не распределенная в памяти, приписывается портам ввода-вывода, поэтому эти порты можно считать частью памяти, Для их адресации используются полные адресные сигналы. Оба способа имеют свои преимущества и недостатки.
Шина управления служит для передачи различных управляющих сигналов, часть которых является выходными сигналами, а другая часть — входными сигналами. Конкретный состав этих сигналов зависит от типа процессора. Основными сигналами, передаваемыми по этой шине, являются сигналы управления записью-чтением из памяти и сигналы управления вводом-выводом данных из соответствующего порта. Причем, когда применяется способ изолированного ввода-вывода, передаются четыре управляющих сигнала:
MEMRD (считывание данных из памяти);
MEMWR (запись данных в память)
IORD (ввод данных из порта ввода)
IOWR (вывод данных в порт вывода) (рис. 1.11).
В случае ввода-вывода с отображением адресов на память порты ввода-вывода и память не различаются по характеру, поэтому можно использовать 2 сигнала RD и WR.
Временная диаграмма работы шины
Стандартная временная диаграмма. Время осуществления однократного считывания, записи, ввода и вывода данных называется циклом шины. Процессор управляет работой шины синхронно с входной тактовой частотой. Пример временной диа-
Рис. 1.12. Пример временной диаграммы работы шины.
граммы работы шины приведен на рис. 1.12. Каждый цикл шины содержит 4 периода тактовой частоты, или 4 такта, обозначаемые условно Ть Т2, Тз, Т4. Обычно значения информационных и адресных сигналов обозначаются 0 и 1, значения управляющих сигналов также можно обозначить 0 и 1, но чаще их обозначают соответствующим уровнем напряжения; L (low)—низкий уровень напряжения и Н (high)—высокий уровень напряжения. Сигналы MEMRD, MEMWR, IORD, IOWR являются управляющими синхронизирующими сигналами, показывающими, в какой интервал времени в цикле шины должно осуществляться считывание, запись, ввод и вывод данных. Управляющие синхронизирующие сигналы также называются стробирующими сигналами. Эти сигналы делятся на два типа:
сигналы, имеющие в обычном состоянии низкий уровень и в установленное время переходящие на высокий уровень;
сигналы, имеющие в обычном состоянии высокий уровень и в установленное время переходящие на низкий уровень.
Первые называются сигналами с высоким активным уровнем, а вторые — сигналами с низким активным уровнем. Сигналы второго типа обычно помечаются сверху горизонтальной чертой.
Перечисленные выше четыре управляющих сигнала относятся ко второму типу.
Теперь рассмотрим процесс считывания-записи в память. Схема соединения памяти с шиной приведена на рис. 1.13. Как показано на рис. 1.12, в начале цикла считывания процессор передает адресный сигнал, по которому в памяти осуществляется выборка адреса, и указанная ячейка памяти подключается к линиям Х7, Х6, .. . , Хо. В первой половине такта Т2 сигнал
Рис. 1.13. Сопряжение памяти с процессором.
MEMRD переходит на низкий уровень, а во второй половине такта Т4 он возвращается на высокий уровень. Низким уровнем этого сигнала отпирается тристабильный вентиль Gr и линии Х7, Х6, ...» Хо соединяются с линиями D7, D6, ..., Do шины данных. По заднему фронту положительного импульса такта Т4 содержимое шины данных заносится в процессор.
С момента передачи адресного сигнала в память до выдачи содержимого указанной ячейки памяти требуется определенное время, которое называют временем обращения к памяти. Во время считывания процессором данные в памяти должны поддерживаться в неизменном состоянии.
В начале цикла записи в память процессор передает адресный сигнал. Кроме toi*o, процессор с первой половины такта Т2 до окончания такта Т4 осуществляет вывод записываемых данных на линии Р7, De, .. •, Do шины данных. Низким уровнем сигнала MEMWR отпирается тристабильный вентиль Gw н линии Р7, D6, ..., Do соединяются с линиями Х7, Х6, ..., Хо. Когда уровень сигнала MEMWR становится высоким, содержи-
Первый порт вводаПервый порт вводаНулевой порт вводаНулевой порт вводаПервый порт выводаПервый порт выводаНулевой порт выводаНулевой порт выводаРис. 1.14. Сопряжение портов ввода-вывода с процессором.Рис. 1.14. Сопряжение портов ввода-вывода с процессором.Адреса X
Первый порт ввода
Первый порт ввода
Нулевой порт ввода
Нулевой порт ввода
Первый порт вывода
Первый порт вывода
Нулевой порт вывода
Нулевой порт вывода
Рис. 1.14. Сопряжение портов ввода-вывода с процессором.
Рис. 1.14. Сопряжение портов ввода-вывода с процессором.
МЕМ/IO— rd/wr-/
IXIXббРис. 1.15. Сигналы управления считыванием-записью в память.Рис. 1.15. Сигналы управления считыванием-записью в память.STB "I V
I
X
I
X
б
б
Рис. 1.15. Сигналы управления считыванием-записью в память.
Рис. 1.15. Сигналы управления считыванием-записью в память.
мое линий Х7, Хе, ..., Хо заносится в ячейки памяти, указанные адресным сигналом. Для записи информации в память также требуется некоторое время. В течение времени, пока сигнал MEMWR имеет высокий уровень, данные в памяти должны поддерживаться в неизменном состоянии.
На рис. 1.14 приводится схема соединения портов ввода-вывода с шинами компьютера. Каждый порт ввода представляет собой ряд тристабильных вентилей, при отпирании которых данные, поступающие в этот порт, передаются на линии D7> D6, ..., Do шины данных, откуда уже считываются процессором.
Порт вывода представляет собой регистр, работа которого заключается в следующем. Процессор выводит данные на линии D7, D6Do шины данных. Эти данные стробирующим сигналом С заносятся в регистр, который обеспечивает их сохранность до записи новых данных. Для выбора портов ввода- вывода используется дешифратор. Тремя младшими битами адресной шины можно осуществить выбор 8 бит порта ввода или вывода. Временная диаграмма работы в циклах ввода-вывода данных аналогична временной диаграмме в циклах чтения- записи в память. Различие состоит в том, что вместо сигналов MEMRD и MEMWR процессор передает сигналы 1ORD и IOWR.
До сих пор описывалась система, в которой используются четыре управляющих сигнала MEMRD, MEMW R, IORD, IOWR. Однако кроме указанной существуют системы с другим составом управляющих сигналов. В системе, показанной на рис. 1.15, а, используются три управляющих сигнала МЕМ/IO, RD, WR. Сигнал МЕМ/IO указывает, какое из устройств (память или порт ввода-вывода) является объектом функционирования в данный цикл. Если этот сигнал имеет высокий уровень, выбирается память, а если низкий — выбирается порт ввода-вывода. RD — строб, используемый в чтении, WR— строб, используемый в записи; оба этих сигнала являются общими как для памяти, так и для портов ввода-вывода. В системе, показанной на рис. 1.15, б, используются также три управляющих сигнала: МЕМ/IO, RD/WR, STB. Сигнал RD/WR указывает, является ли данный цикл циклом записи или циклом чтения. STB — строб, используемый как для чтения, так и для записи.
Сигналы подтверждения окончания цикла шины. В описанной выше стандартной временной диаграмме работы временные соотношения в циклах считывания-записи полностью задаются процессором. Следовательно, при такой временной диаграмме память и порты ввода-вывода должны постоянно находиться в ра-
Тактовые импульсыТактовые импульсыРис. 1.16. Дополнение шины управления сигналом подтверждения READY.Рис. 1.16. Дополнение шины управления сигналом подтверждения READY.
Тактовые импульсы
Тактовые импульсы
Рис. 1.16. Дополнение шины управления сигналом подтверждения READY.
Рис. 1.16. Дополнение шины управления сигналом подтверждения READY.
Рис. 1.17. Пример временной диаграммы работы с применением сигнала подтверждения READY.
бочем состоянии, что нежелательно. Ниже предлагается система, позволяющая произвольно увеличивать длительности циклов считывания-записи. Из памяти или из портов ввода-вывода передаются управляющие сигналы, задающие время окончания цикла (рис. 1.16). В показанном на рис. 1.16 примере для этой цели используется сигнал READY (ГОТОВНОСТЬ), но кроме всего могут использоваться сигналы WAIT (ОЖИДАНИЕ) и TRANSFER ACKNOWLEDGE (ПОДТВЕРЖДЕНИЕ ПЕРЕДА- ЧИ). Эти сигналы подтверждают окончание цикла.
На рис. 1.17 приведена временная диаграмма работы компьютера. Процессор по заднему фронту положительного им- пульса такта Т3 (момент 1) анализирует состояние сигнала READY. Если данный сигнал имеет высокий уровень, цикл дополняется еще одним тактом Tw. По заднему фронту положительного импульса такта Tw (момент 2) также анализируется -состояние сигнала READY. Если уровень этого сигнала низкий,
новые дополнительные такты не используются, а следующий такт (в данном случае Т4) является последним тактом цикла. Если же сигнал READY, анализируемый за период Tw, имеет высокий уровень, цикл дополняется новыми тактами. Таким образом, длительность цикла можно произвольно растягивать. Разумеется, в памяти или интерфейсе периферийного устройст- ва должна быть схема, формирующая сигнал READY. Напри- мер, такая схема спустя два такта после того, как уровень сиг- нала MEMRD стал низким, формирует низкий уровень сигнала READY, а когда уровень сигнала MEMRD становится высоким, возвращает высокий уровень сигналу READY.
Совмещение адресной шины и шины данных. Основной проблемой больших интегральных схем является сокращение числа выводов. Известно, что большое число выводов дает возможность использовать множество входных-выходных сигнальных линий, однако надо учитывать, что затраты на производство таких элементов возрастают. Поэтому обычно, несмотря на высокую сложность схемы внутри кристалла схемы, число выводов выгодно делать небольшим. Для этого предлагается совместить адресную шину с шиной данных. Вернемся к рис. 1.12: в течение первого такта цикла шина данных не используется, поэтому этот интервал можно использовать для передачи по ней адресных сигналов.
На рис. 1.18 приведена временная диаграмма работы такой системы. Рассматривается случай, когда 8-разрядным процессором 8 младших бит адресной шины передаются по шине данных, но, разумеется, этот принцип пригоден и для 16-разрядного процессора. В течение первого такта Ti по общей шине AD?—ADo передаются адресные сигналы А7—Ао. Эти сигналы фиксируются в регистре-фиксаторе, который находится вне процессора. Сигналом, управляющим данной операцией, является ALE (отпирание фиксатора адреса). В конфигурации, показанной на
Рис. 1.18. Временная диаграмма работы системы с совмещением адресной шины с шиной данных.
Рис. 1.19. Выделение младших адресов с помощью сигнала ALE.Рис. 1.19. Выделение младших адресов с помощью сигнала ALE.тема совмещения безусловно iтема совмещения безусловно iрис. 1.19, возможно разделение данных и адресов. Когда уровень управляющего сигнала, приходящего на вход С регистра-фиксатора, становится высоким, его входные сигналы без изменения передаются на выход, причем это состояние сохраняется до тех пор, пока на входе С не установится низкий уровень управляющего сигнала. Поэтому для передачи адресных сигналов можно использовать 8 младших бит из первого периода Ть Такая сис- способствует сокращению вре
Рис. 1.19. Выделение младших адресов с помощью сигнала ALE.
Рис. 1.19. Выделение младших адресов с помощью сигнала ALE.
тема совмещения безусловно i
тема совмещения безусловно i
мени, отведенного для передачи адресных сигналов, но имеется и преимущество, заключающееся в том, что регистры-фиксаторы, требуемые для ее реализации, выполняют функцию усилителей тока, обеспечивающих подачу адресных сигналов на большое число кристаллов памяти.
Считывание-запись. Если адресация к памяти осуществляется побайтно, то оказывается выгодно считывание-запись информации также производить байтами, причем, когда используется слово длиной 16 бит, состоящее из старшего и младшего байтов, необходимо учитывать два варианта распределения адресов, показанных на рис. 1.20. В любом из этих вариантов требуется управляющий сигнал, способный осуществлять считывание-запись только старшего или только младшего байта. В системе, показанной на рис. 1.21, а, кроме стробов считывания- записи RD WR используются еще 2 сигнала для выбора старшего или младшего байта, а в системе, показанной на рис. 1.21, б используются общий сигнал при считывании-записи RD/WR и два строба для старшего и младшего байтов соответ
ственно.
1.3. Быстродействие процессора
Среднее время выполнения команды
Процессор осуществляет поочередное считывание команд, хранящихся в памяти, т. е. основными действиями процессора являются:
считывание команды,
ее выполнение.
Рис. 1.20. Распределение 16-разрядных слов по номерам байтов.
Рис. 1.21. Система выбора байтов 16-разрядных слов.
При выполнении команды (кроме внутрипроцессорной обработки) при необходимости считываются и записываются данные.
Считывание команды называется выборкой. Командный цикл состоит из цикла выборки команды и цикла ее выполнения. В командном цикле укладывается целое число периодов такто-
Работа ^ процессораРабота ^ процессораКомандный циклКомандный циклПериодПериодРабота процессораРабота процессораЦикл шины | » 14—™Считывание СчитываниеЦикл шины | » 14—™Считывание Считываниеожидания Считывание ^ Период" ожиданияожидания Считывание ^ Период" ожиданияВыборкаЗапись данныхВыборкаЗапись данныхЦикл шиныЦикл шиныСчитывание Считывание СчитываниеСчитывание Считывание СчитываниеСчитываниеСчитываниеЗаписьЗапись
Работа ^ процессора
Работа ^ процессора
Командный цикл
Командный цикл
Период
Период
Работа процессора
Работа процессора
Цикл шины | » 14—™
Считывание Считывание
Цикл шины | » 14—™
Считывание Считывание
ожидания Считывание ^ Период" ожидания
ожидания Считывание ^ Период" ожидания
Выборка
Запись данных
Выборка
Запись данных
Цикл шины
Цикл шины
Считывание Считывание Считывание
Считывание Считывание Считывание
Считывание
Считывание
Запись
Запись
Рис. 1.22* Увеличение быстродействия путем предварительного считываний команды.
вой частоты, причем в техническом описании на процессор для каждого командного цикла указывается это число. При этом следует быть внимательным, так как иногда в описании указывается только число тактов на этапе выполнения команды в этом цикле. Обычно длительность командного цикла называют временем выполнения команды (она не совпадает с непосредственной длительностью исполнительного цикла). На рис. 1.22, а показан случай последовательного выполнения всего набора команд. В этом случае время выполнения всех команд равно сумме времен выполнения каждой команды. Полное время выполнения всех команд равно среднему времени выполнения одной команды, умноженному на число выполненных команд.
Среднее время выполнения команды определяется следующим образом. Обозначим набор команд, выполняемых в процессоре, через 11, 12, ..., In, а число периодов тактовой частоты для каждого командного цикла соответственно с,, с2, ..., Cn. Допустим, что при выполнении некоторой программы команда h появляется п, раз, команда 12 — п2 раз, команда In — nN раз, тогда частота fk появления к-й команды равна
fk = -fT- k = l, 2, ...N
k=l
а среднее время выполнения команды определяется выражением
NT=P^kckk I
где р — длительность периода тактовой частоты.
Число команд, выполняемых в единицу времени, является величиной, обратной среднему времени выполнения одной команды, и обычно выражается в единицах MIPS (миллион операций в секунду). Трудность сравнения заключается в том, что не известно, одинаковы или нет возможности компилирующей программы, используемой в каждом процессоре. Кроме того, следует иметь в виду, что выбор определенного языка высокого уровня ставит в неравное положение различные процессоры. Разумеется, при сравнении процессоров учитывать незначительную разницу в быстродействии не имеет смысла.
Повышение быстродействия путем предварительного считывания команды
В командном цикле имеются такты, когда используется шина и когда она не используется. Основными из первой категории являются такты, когда осуществляется выборка команды и считывание-запись данных. Такты, в которые шина не используется, называются холостыми. Число их может колебаться от 1—2 до нескольких десятков в зависимости от времени выполнения операций в командах умножения или деления. Поэтому можно воспользоваться системой с предварительным считыванием (предварительной выборкой) следующей команды в холостом такте. Как показано на рис. 1.22, б, это позволяет значительно сократить общее время выполнения команд. В данном случае если есть незанятый промежуток времени с числом тактовых импульсов, необходимых для выборки одной команды, то в нем автоматически проводится предварительная выборка. Можно организовать предварительное считывание большого количества команд с их хранением.
Если учесть, что команды обычно считываются заранее, за общее время выполнения команды следует принимать только ту часть цикла, где она выполняется. В этом случае в техническом описании указывается число тактовых импульсов только в той части цикла, где выполняется команда. Однако для процессора, осуществляющего предварительную выборку, сложнее вычислить среднее время выполнения команды, так как при вычислении уже нельзя ограничиться только частотой появления каждой команды. Кроме того, может возникнуть ситуация, когда из-за отсутствия холостых тактов нельзя осуществлять предваритель-
ную выборку. Отметим, что при появлении команд перехода, условного перехода, вызова предварительно считанная команда становится недействительной, поэтому выборку команды необходимо осуществить повторно. Практическое распространении получил метод определения количества выполняемых команд в единицу времени на основании фактического времени выполнения программы.
Повышение быстродействия за счет использования сложных команд
Обычно довольно большая часть рабочего времени процессора уходит на выборку команд. Допустим, например, что в процессоре имеется 16 регистров общего назначения RO, R1, ..., R15 и их содержимое надо записать в память (процедура, необходимая, например, при возникновении прерывания). Если для записи содержимого одного такого регистра используется одна команда, для записи содержимого всех регистров потребуются 32 цикла шины (рис. 1.23, а). Однако, если для этой цели использовать специальную команду записи в память, эта процедура завершится на 17-м цикле (рис. 1.23, б). Получается выигрыш во времени без учета времени выборки команды почти в 2 раза. Использование большого числа сложных команд является эффективным средством повышения быстродействия. В первых микропроцессорах использовалось только несколько основных команд, но затем с повышением степени интеграции стали вводиться и сложные команды. В этом случае следует учитывать, что, если быстродействие процессоров сравнивается в MIPS, может возникнуть ситуация, когда этот показатель будет наибольшим у процессора, выполняющего только простейшие команды.
Иногда же достаточно иметь небольшое число основных команд. Компьютеры, в которых реализована эта идея, называются компьютерами с сокращенным набором команд или RISC (reduced instruction set computer). В противоположность им компьютеры, способные выполнять множество сложных команд, называются компьютерами с расширенным набором команд или CISC (complex instruction set computer). Следует отметить, что благодаря небольшому числу команд упрощаются аппаратные средства компьютеров типа RISC и, кроме того, перед ними открываются следующие возможности:
Создание памяти на кристалле процессора для хранения большого объема данных.
Увеличение скорости выполнения команд.
Время выполнения команд становится примерно одинаковым.
ROROВыборка командыЗаписьВыборка командыЗаписьRIRIВыборка командыЗаписьВыборка командыЗапись
RO
RO
Выборка команды
Запись
Выборка команды
Запись
RI
RI
Выборка команды
Запись
Выборка команды
Запись
Выборка команды
Запись
Выборка командыЗаписьЗаписьЗаписьЗаписьЗаписьR0R1R2R3R4Выборка командыЗаписьЗаписьЗаписьЗаписьЗаписьR0R1R2R3R4R2
Выборка команды
Запись
Запись
Запись
Запись
Запись
R0
R1
R2
R3
R4
Выборка команды
Запись
Запись
Запись
Запись
Запись
R0
R1
R2
R3
R4
ВведениеВведениеРис. 1.23. Увеличение быстродействия за счет использования составных команд.
Введение
Введение
а —для каждого регистра используется отдельная команда; б — все регистры обрабатываются общей командой.
Выборка командыВыборка командыОбработкаОбработка
Выборка команды
Выборка команды
Обработка
Обработка
Выборка команды
Обработка
Выборка командыВыборка командыѩѩ
Выборка команды
Выборка команды
С©
С©
Обработка
Выборка команд ы
Обрабо1ка
Рис. 1.24. Параллельное выполнение выборки команды и внутрипроцессорнойобработки в компьютерах с сокращенным набором команд.
Использование внутрикристальной памяти сокращает число циклов считывания-записи по сравнению с памятью, находящейся вне кристалла процессора, а предварительная выборка команды позволяет выполнить ее в форме, представленной на рис. 1.24. Из рисунка видно, что для выборки команды специального времени не требуется.
Аргументом в пользу компьютеров типа RISC является тот факт, что частота использования команд неодинакова и для основных наиболее часто встречающихся и занимающих большую часть времени команд можно и необходимо обеспечить высокую скорость выполнения; кроме того, существует мнение, что наличие большого числа сложных команд затрудняет разработку эффективно действующих компиляторов.
Тем не менее если применить данную классификацию к компьютерам, получившим в настоящее время практическое применение, их всех можно отнести к типу CISC. При проектировании микропроцессоров основное внимание уделялось реализации максимального числа функций аппаратными средствами. С этой точки зрения компьютеры с сокращенным набором команд нс соответствуют направлению развития вычислительной техники, и остается много вопросов, касающихся эффективности таких компьютеров. Следует обратить внимание на тот факт, что при выборе между набором составных команд и встроенной памятью большой емкости не всегда предпочтение отдается второму варианту. Однако с повышением степени интеграции постепенно создается возможность реализации процессоров, обладающих обоими указанными выше качествами.
2
8-разрядные процессоры4
Разработки 8-разрядных. процессоров положили начало широкому распространению микропроцессорной техники. В настоящее время выпускается большое число 4-разрядных приборов, но все они, как правило, представляют собой управляющие однокристальные микрокомпьютеры, используемые в малогабаритной аппаратуре типа бытовых электроприборов, в то время как 8-разрядные процессоры практически используются для построения универсальных компьютеров.
Для составления программ и управления такими компьютерами необходимо пользоваться определенными символами (цифрами и латинскими буквами). Причем при длине слова 8 бит каждый такой символ можно представить одним словом, поэтому ввод, запоминание, обработка и вывод символов упрощаются. Команду можно представить одним словом (возможно 256 вариантов). Разумеется, для представления числовых значений недостаточно 8 бит, но в этом случае требуемая точность обеспечивается использованием нескольких слов.
В настоящее время разрабатывается много 8-разрядных процессоров. Названия основных из них приводятся в табл. 2.1. Ниже следует описание процессоров 8080, МС6800, Z80, являющихся типовыми устройствами такого класса. Во время разработки этих процессоров степень интеграции составляла ^5000 транзисторов на кристалл, поэтому в них были реализованы лишь основные функции. Несмотря на это, такие устройства получили широкое практическое применение. Следует
1 Под процессором в тексте подразумевается микропроцессор. — Прим, перев.
Типовые 8-разрядные процессоры (число выводов равно 40)
Таблица 2.1.
Тип прибора
Фирма-изготовитель
Год выпуска
80801)
Intel
1974
МС6800
Motorola
1974
MSC6502
MOS Technology
1975
Z80
Zilog
1976
80851)
Intel
1976
МС6809
Motorola
1979
’) Формально следует писать 18080, 18085, но для изделий фирмы Intel буква 1 опускается.
отметить также, что в настоящее время широко используется процессор Z80.
В настоящее время, когда уже разработаны 16- и 32-разряд- ные устройства, может показаться, что 8-разрядный процессор — устройство с небольшими функциональными возможностями. На самом деле это не так. Следует помнить, что «число разрядов» и «функция», в сущности, различные понятия. И если число используемых транзисторов достаточно велико, то даже при 8 разрядах можно реализовать многофункциональное устройство. Возможности таких устройств, конечно, ограниченны, так как длина слова составляет всего 8 бит, тем не менее этих 8 бит достаточно для многих областей практического применения, если учесть еще невысокую стоимость таких устройств. В последнее время также разрабатываются 8-разрядные универсальные процессоры, примером которых является МС6809. Этот микропроцессор по своим функциональным возможностям находится на уровне 16-разрядного устройства, поэтому в данной главе он не рассматривается. Его средства станут более понятными при рассмотрении 16-разрядных процессоров.
Стандартная архитектура
Детали архитектуры 8-разрядных микропроцессоров различаются в зависимости от типа устройств, но основные характеристики ЦП следующие:
длина слова: 8 бит;
адресуемое пространство памяти: 64К байт;
операционный блок с аккумулятором.
При проектировании ЦП обычно выбираются одинаковыми длина слова и разрядность арифметическо-логического устрой-
Так том* частотаТактовая частотаТактовая частота
Рис. 2.1. Расположение выводов в 8-разрядных процессорах 8080 (о), МС 6800 (б) и Z80 (в).
Рис. 2.2. Архитектура процессора с аккумулятором.
ства (АЛУ), аккумулятора (Акк), регистров данных, регистра команд (РК) и шины данных. 8-разрядные процессоры, как уже говорилось выше, оперируют словами длиной 8 бит. Однако для адресов восьми бит недостаточно, поэтому каждый адрес представлен 16 бит или словом двойной длины, т. е. программный счетчик (ПС), указатель стека (УС) и другие регистры адресов и адресная шина являются 16-разрядными. Число выводов кристалла в любом случае равно 40 (рис. 2.1).
Процессор, структура которого приводится на рис. 2.2, имеет в своем составе аккумулятор. Одним из двух операндов, поступающих в АЛУ, обычно является операнд, хранящийся в аккумуляторе, а в качестве другого используется операнд, считанный из основной памяти или регистра общего назначения (РОН). Результат операции хранится, как правило, в аккумуляторе. Следовательно, в команде выполняемой операции достаточно указать лишь один адрес, т. е. команда имеет следующий формат:
Ячейка памятиЯчейка памятиКод опе-рации
Ячейка памяти
Ячейка памяти
Например, по команде сложения выполняется
Акк -« (Акк) + (адрес)
Отметим, что содержимое регистра выражается названием регистра, взятым в скобки, а содержимое основной памяти — ее адресами в скобках.
На рис. 2.2 показан также блок регистров общего назначения, но обычно в процессорах с аккумулятором регистровый блок является лишним. Есть процессоры, в которых он отсутствует, например МС6800. Кроме того, на рис. 2.2 словом ФЛАГИ обозначены флаги условия (вместо них можно использовать сокращение КУ— код условия).
Регистровые структуры
На рис. 2.3 приведены регистровые структуры 8-разрядных процессоров. Как видно из рисунка, процессоры сильно различаются своими регистровыми структурами. Например, регистровая структура процессора Z80 значительно сложнее, чем процессора 8080, хотя оба устройства имеют одинаковую архитектуру, т. е. сохраняется взаимозаменяемость процессоров 8080 и Z80 и в то же время расширяются возможности устройства.
8080. Кроме аккумулятора А содержит 6 регистров общего назначения В, С, D, Е, Н, L. Регистры В и С, D и Е, Н и L можно использовать как пары 16-разрядных регистров, обозначаемые как ВС, DE, HL; последней регистровой паре отводится спепчальная функция, используемая при адресации.
МС6800. Регистров общего назначения для хранения данных не имеет, но снабжен двумя аккумуляторами А и В. Кроме них
' АFВСDЕНL' АFВСDЕНL
' А
F
В
С
D
Е
Н
L
' А
F
В
С
D
Е
Н
L
Рис. 2.3. Регистровые структуры для 8-разрядных процессоров 8080 (а), МС6800 (6) и Z80 (в).v /.
имеется 16-разрядный регистр X (называемый индексным регистром) для хранения адресов. Он используется при адресации.
Z80. Содержит два блока (старший и младший) регистров А—L (А'—L') с возможностью использования каждого в определенный момент времени. Переключение этих блоков производится по команде ЕХХ (замена блока регистров).
Такая организация удобна тем, что содержимое регистровых блоков сохраняется при вызове подпрограммы или при возникновении прерывания. Но она обладает недостатком: отсутствуют средства подтверждения, какой из блоков (старший или младший) используется в данный момент. Кроме того, процессор содержит 16-разрядные регистры IX, IY (также называемые индексными регистрами) для хранения адресов.
Отметим, что указатель стека (УС) применяется во всех процессорах, так как использование стека для временного хранения чисел позволяет более экономно использовать основную память, т. е. при вызове подпрограммы или при возникновении прерывания содержимое ПС (адрес возврата) автоматически «вталкивается» (заносится) в стек. По команде RET (ВОЗВРАТ) данной подпрограммы этот адрес извлекается из стека и заносится в ПС.
Операции и флаги условий
Все операции в основном выполняются в АЛУ. Функции операций могут сильно различаться в зависимости от типа процессора, но основные операции, выполняемые над 8-разрядными числами, остаются одинаковыми для всех типов процессоров. К ним относятся: сложение и вычитание; приращение или уменьшение на 1; сравнение; логические операции; сдвиг, в том числе циклический.
В табл. 2.2 приводятся основные команды, используемые при вычислениях (команды умножения и деления не приведены, так как они выполняются программными средствами).
В системе 8080 для 16-разрядных адресов используются команды сложения и команды приращения и уменьшения на 1. Эти команды можно использовать и для операций над 16-раз- рядными данными.
В процессоре МС6800 для 16-разрядных адресов используются команды приращения и уменьшения на 1 и команды сравнения.
Содержимое флагов условий (кодов условий) также существенно различается в зависимости от типа устройства. В табл. 2.3 приводятся флаги условий, используемые в 8-разрядных про-
Основные команды 8-разрядных процессоров
Таблица 2.2
Операция
Код операции
8080
MC6800
Z80
Сложение
ADD
ADD
ADD
Вычитание
SUB
SUB
SUB
Сложение с переносом
ADC
ADC
ADC
Вычитание с заемом
SBB
SBC
SBC
Приращение
INR
INC
INC
Уменьшение
DCR
DEC
DEC
Сравнение
CMP
CMP
CP
И
ANA
AND
AND
ИЛИ
ORA
ORA
OR
ИСКЛЮЧАЮЩЕЕ ИЛИ
XRA
XOR
XOR
Дополнение до 1
CMA
COM
CPL
Дополнение до 2
NEG
NEG
Циклический сдвиг вправо
RRC
RRCA
Циклический сдвиг влево
RLC
ROR
RLCA
Циклический сдвиг вправо
RAR
RRA
с использованием разряда переноса Циклический сдвиг влево с использо
RAL
ROL
RLA
ванием разряда переноса Арифметический сдвиг вправо
ASR
SRA
Арифметический сдвиг влево
ASL
SLA
Логический сдвиг вправо
LSR
SRL
цессорах. Во флаге каждое условие представлено одним разрядом, причем устройство, в котором они хранятся, называется флаговым регистром или регистром кодов условий. Среди 8 разрядов флага могут быть и неиспользуемые. На рис. 2.4 показаны примеры распределения разрядов флага.
По команде условного перехода переход выполняется в соответствии со значением флагов условий. Для указания условия в процессорах 8080 и Z80 используются флаги, а в МС6800 есть возможность подробнее указывать условия (табл. 2.4).
Рис. 2.4. Формат регистра флага условия (кода условия) для процессоров 8080 (а), МС6800 (6) и Z80 (в).’Рис. 2.4. Формат регистра флага условия (кода условия) для процессоров 8080 (а), МС6800 (6) и Z80 (в).’HNZVcHNZVc
Рис. 2.4. Формат регистра флага условия (кода условия) для процессоров 8080 (а), МС6800 (6) и Z80 (в).’
Рис. 2.4. Формат регистра флага условия (кода условия) для процессоров 8080 (а), МС6800 (6) и Z80 (в).’
H
N
Z
V
c
H
N
Z
V
c
Таблица 2.3
Флаги условий (коДы условий)
—•
Название флага
Код
Условие
Перенос
С
Устанавливается, когда при сложении производится перенос 1 в . старший разряд или при вычитании заем 1 старшего разряда
Нуль
Z
Устанавливается, когда результат операции равен 0, т. е. все разряды равны 0
Знак или отрицательность
S, N
Устанавливается, если результат операции есть отрицательное число, т. е. старший значащий разряд равен 1.
Переполнение
V
Устанавливается, когда результат операции превышает пределы положительного и отрицательного представления чисел (—128, + 127)
Четность
Р
Устанавливается, когда в коде результата операции количество единиц — четное число
Дополнительный перенос, полуперенос
А, И
Устанавливается, когда при сложении производится перенос 1 в 4-й разряд или при вычитании заем 1 из 4-го разряда
Вычитание
N
Устанавливается при выполнении вычитания
Способы адресации
Основные способы адресации
Основной задачей 8-разрядных процессоров является эффективное использование имеющихся способов адресации. Программные средства таких устройств недостаточно совершенны, поэто-
8080/Z80
МС6800
NC (перенос отсутствует)
С (перенос)
С = 0
С=1
СС (сброс переноса)
CS (установка переноса)
С=0
С=1
NZ (не нуль)
7 = 0
NE (не равно)
Z-0
Z (нуль)
Z=1
EQ (равно)
7=1
Р (положительная величина)
S = 0
GE (больше или равно)
Nev-o
М (минус)
S-l
GT (больше чем)
Z+(N®V)—0
РО (четность)
Р = 0
LE (меньше или равно)
Z+(N®V)-1
РЕ (нечетность)
Р=1
LT (меньше чем)
HI (выше)
LS (ниже или такой же)
PL (не минус)
MI (минус)
VC (сброс переполнения)
VS (установка переполнения)
N®V-1 C + Z-0 C + Z=l N=0 N=1 V=0 V = 1
Таблица 2.4
Указание условий в командах условного перехода
Примечание: знаком плюс обозначена операция ИЛИ, а плюс в кружке — ИСКЛЮЧАЮЩЕЕ ИЛИ.
Таблица 2.5
Способы адресации, используемые в 8-разрядных процессорах
Способ
Содержимое указателя
Исполнительный адрес
Регистровая прямая адресация
Регистр данных
Непосредственная адресация
Данные
Абсолютная адресация
Абсолютный адрес
Регистровая косвенная адресация
Регистр адреса R
(R)
Относительная адресация по базе
Регистр адреса В, смещение d
(B) + d
Относительная адресация с использованием ПС (программного счетчика)
Смещение d
(PC)+d
му и число командных слов, используемых ими, большое. Это объясняется тем, что информационная емкость кристалла памяти составляет порядка 4К бит и не позволяет составлять программы большого объема.
В табл. 2.5 представлены основные способы адресации. При регистровой прямой адресации указывается регистр, в котором хранятся требуемые данные. При абсолютной адресации указываются абсолютные адреса основной памяти. При непосредственной адресации данные содержатся в следующем командном слове. Этот способ удобен для применения констант при составлении программы.
При регистровой косвенной адресации указывается регистр адреса R, а уже его содержимое определяет адреса основной памяти. Адрес, фактически используемый при выполнении команды, называется исполнительным адресом. Если его обозначить еа (effective address), можно написать
ea = (R).
Это позволяет адрес операнда выразить через результат операции. Например, при поочередном обращении к данным, хранящимся в основной памяти, с помощью операции
INCR (приращение содержимого регистра R)
DFCR (уменьшение содержимого регистра R)
определяется следующий адрес. При относительной адресации по базе базовый адрес помещается в адресный регистр, поэтому указывается смещение d относительно этого адреса, т. е. можно записать
ea=(B) + d.
Как показано на рис. 2.5, а, если после некоторого базового адреса следует группа переменных X, Y, ..., то, указав величину смещения d=0, 1, ..., можно определить каждую переменную. Так как содержимое адресного регистра представляет
Рис. 2.5. Относительная адресация по базе (а) и индексная адресация (б).
собой базовые адреса основной памяти, то модификация -их также упрощается. Регистр, в который помещаются базовые адреса, называется базовым. Способ адресации, аналогичный описанному выше, носит название индексной адресации. При индексной адресации некоторый фиксированный адрес b указывается в качестве базового, и содержимое индексного регистра IX представляет собой смещение относительно этого адреса. Другими словами, исполнительный адрес равен
еа = Ь + (1Х).
Этот способ широко используется при обращениях к массивам (рис. 2.5, б). Если в индексном регистре IX содержится индекс 1, то можно обратиться к X (I). В этом случае, так как указывается абсолютный адрес, адрес b должен быть 16-разрядпым Разрядность индексного регистра IX может быть меньше разрядности адреса. При адресации по базе базовый регистр должен быть 16-разрядным. Разрядность смещения d может быть меньше разрядности адреса. Регистры X (МС6800), IX, IY (Z80) называются индексными, но фактически они используются в качестве базовых (смещение занимает 8 бит).
Относительная адресация с использованием программного счетчика (ПС) применяется для указания начального адреса перехода по команде перехода или условного перехода. Так как начало перехода указывается с помощью относительного смещения от местоположения текущей команды, т. е.
ea = (PC) + d, то даже при изменении местоположения программы в памяти начало перехода может не изменяться.
Примеры
8080. Существуют 4 способа адресации, приведенные в табл. 2.6, причем эти способы не являются универсальными для всех команд, но самый существенный недостаток — отсутствие относительной адресации с использованием базовых адресов. Это в первую очередь неудобно при определении группы переменных, следующих в памяти за некоторым адресом.
МС6800. Как показано в табл. 2.6, здесь также используются 4 способа адресации. Из-за отсутствия регистров общего назначения регистровая адресация не используется. И хотя видов адресации у этого устройства не много, тем не менее универсальность способов для всех команд является его характерной особенностью. 8-разрядная абсолютная адресация используется для обращения к адресу 0—255. С этой точки зрения удобно использовать относительную адресацию по базе с применением
Таблица 2.6
Способы адресации, используемые в 8-разрядных процессорах
Способы для 8080
Примечание
Регистровая прямая адресация
Непосредственная адресация
Абсолютная адресация
Регистровая косвенная адресация
А. В, С, D, Е, Н, L
Одно слово данных, два слова адреса
16 разрядов
HL1
Способы для МС6800
Непосредственная адресация
Абсолютная адресация
Относительная адресация по базе
Относительная адресация с использованием ПС
Одно слово данных, два слова адреса
16 разрядов, 8 разрядов
8 разрядов смещения, используется регистр X
8 разрядов смещения
Способы для Z80
Регистровая прямая адресация Непосредственная адресация
Абсолютная адресация
Регистровая косвенная адресация
Относительная адресация по базе
Относительная адресация с использованием ПС
А, В, С. D. Е, Н, L
Одно слово данных, два слова адреса
16 разрядов
Используются HL. IX, 1Y
8 разрядов смещения, используются IX, IV*
8 разрядов смещения
ПС. Но так как имеется только один базовый регистр X» то не- /юстаток такой системы обнаруживается при обработке переменных, хранящихся в двух областях памяти (одна из которых следует после адреса Мь а другая — после адреса М2.
Z80. Используются 6 способов адресации. Причем кроме HL для хранения адресов имеются два дополнительных регистра IX и IY. Эти способы адресации не являются универсальными для всех команд; недостаток их заключается также в большой длине командного слова, что снижает скорость обработки. Для использования регистров IX и IY требуются по меньшей мере 3 слова (т. е. возможности процессора расширяются толь-
ко за счет кодов команд, неиспользуемых в модели 8080). Кроме того, имеется возможность выполнения программ процессора 8080 без изменения.
Обычные прерывания и прерывания при возникновении непредусмотренной ситуации
Прерывание является средством запроса со стороны периферийного устройства на выполнение некоторого вида обработки данных в процессоре. В -8-разрядном процессоре по крайней мере один вывод предназначен для приема этого запроса, передаваемого периферийным устройством. Процессор при выполнении каждой команды проверяет наличие запроса прерывания и при его обнаружении переходит к его обработке (рис. 2.6).
Действия, осуществляемые процессором при обработке пре
рывания, зависят от типа процессора, но, как правило, аппарат
ными средствами выполняется следующее:
устанавливается триггер разрешения прерывания;
содержимое ПС заносится в стек; .
в ПС помещается некоторый адрес.
Таким образом, следующая команда выполняется начиная с нового адреса, помещенного в ПС. За этим адресом помещается подпрограмма, используемая при обработке прерываний. Удобно использовать две разновидности прерываний: обычные (маскируемые) и немаскируемые. Обычные прерывания обеспечивают запрет приема данных. Триггер, используемый для уп-
Рис. 2.6. Обнаружение и обработка прерывания.Рис. 2.6. Обнаружение и обработка прерывания.равления режимами приема, называется триггером разрешения прерывания. Командами сброса и установки этого триггера является EI (разрешение прерывания) и DI (запрет прерывания).
Рис. 2.6. Обнаружение и обработка прерывания.
Рис. 2.6. Обнаружение и обработка прерывания.
Выше говорилось, что когда принимается запрос прерывания, устанавливается маска прерывания, после чего процессор переходит в состояние запрета приема. Если в подпрограмме обработки прерывания содержится команда EI, после нее возможен прием нового прерывания. Отметим, что команда ^1 должна быть помещена в конце подпрограммы.
На запрос немаскируемого прерывания не может быть запрета приема. При обнаружении запроса на обычное прерывание процессор выявляет, установлена или нет маска прерывания, и при ее наличии он переходит к выполнению следующей команды, не выполняя действий по обслуживанию прерывания. В отличие от этого при немаскируемом прерывании процессор сразу же переходит к обработке прерывания. Такие прерывания, как правило, используются для сигнализации о неисправностях, например при сбоях питания.
В 8-разрядных процессорах используется также команда прерывания при возникновении непредусмотренной или специальной ситуации TRAP. Действия, выполняемые процессором по этой команде, такие же, как и в случае приема запроса прерывания:
устанавливается триггер разрешения прерывания;
содержимое ПС заносится в стек;
в ПС помещается некоторый адрес.
В результате процессор начинает выполнение некоторой подпрограммы, помещенной за этим адресом. Прерывание при возникновении непредусмотренной ситуации иначе называется программным прерыванием. Эти прерывания широко используются при обращении к подпрограммам, помещенным в операционную систему, из пользовательских программ (см. разд. 3.6).
Примеры
МС6800. Применяются обычные немаскируемые и программные прерывания. В памяти имеются адреса, определяющие начало подпрограммы обработки соответствующего прерывания. Эти адреса называются векторами прерываний или векторами программных прерываний. При обслуживании прерывания указываются адреса соответствующих векторов (рис. 2.7) и за ними следует адрес вектора возврата.
Так как обычно в подпрограмме выполняется несколько операций, то содержимое аккумулятора и регистра кодов условий должно обязательно загружаться в стек. При использовании других регистров эта процедура также обязательна. В процессоре МС6800 загрузка содержимого всех регистров в стек осуществляется автоматически (рис. 2.7, б).
Используются только обычные прерывания. Особенностью действий по обслуживанию прерываний процессора 8080 является автоматическая установка триггера разрешения прерывания. Векторов прерывания память процессора 8080 не содержит, они сообщаются периферийным устройством, передавшим запрос прерывания. Процессор после приема сигнала прерывания INT вырабатывает сигнал подтверждения INTA. По
Адрес СодержимоеАдрес СодержимоеFFF8 FFF9 FFFA FFFB FFFC FFFD FFFE FFFF
Адрес Содержимое
Адрес Содержимое
- Обычное прерывание -- Обычное прерывание -- Системное прерывание -_Немаскируемое"~прерывание~-Сброс-- Системное прерывание -_Немаскируемое"~прерывание~-Сброс-Рис. 2.7. Обработка прерываний в процессоре МС 6800. а — адреса векторов; б —обработка обычного прерывания.
- Обычное прерывание -
- Обычное прерывание -
- Системное прерывание -
_Немаскируемое"
~прерывание~
-Сброс-
- Системное прерывание -
_Немаскируемое"
~прерывание~
-Сброс-
этому сигналу периферийное устройство должно заслать в шину данных команду вызова подпрограммы. Обычно ею служит команда повторного запуска длиной в одно слово, являющаяся специальной командой вызова подпрограммы:
RST (повторный запуск)
Процессор осуществляет считывание этой команды, заносит содержимое ПС в стек, после чего осуществляет переход к указанным адресам. Эта команда имеет следующую структуру:
—।—।—।—।—"-i—।—I—
11 N; N, Nc 111
В соответствии со значениями N2, Ni, No осуществляется переход к адресам
00000000 00 N2 Ni No 0002
Другими словами, возможно использование 8 векторов прерывания:'
0000(16), 0008(16), 0010(|в), 0018(|в),
0020(16), 0028(16), 0030(16), 0038(i6).
Рис. 2.8. Способ определения вектора прерывания в процессоре Z80 (режим М2).
Загрузка содержимого аккумулятора, флагового регистра и регистров общего назначения в стек должна осуществляться в подпрограмме на основании требований основной программы.
Z80. Используются обычные и немаскируемые прерывания. В случае немаскируемого прерывания вектору прерывания приписывается адрес 0066(16). За этим адресом обязательно помещается подпрограмма обработки прерывания.
Для обслуживания обычного прерывания в процессоре предусмотрены три режима МО, Ml и М2, которые можно установить с помощью соответствующей команды. В режиме Ml существует только один используемый вектор прерывания с фиксированным адресом 0038(i6). В режиме МО действия процессора аналогичны действиям модели 8080. Обычно периферийным устройством на шину данных выдается однобайтовая команда повторного запуска. Режим М2 является усиленным; он позволяет использовать 128 векторов прерываний. Все 128 векторов представлены в памяти в виде таблицы. В этом режиме используется 8-разрядный регистр I (рис. 2.3, в). Процессор, как и в режиме МО, считывает 8-разрядные данные, передаваемые периферийным устройством. Регистр I и считанные из него данные V7, V6, ..., Vi, 0 используются в качестве указателя таблицы адресов (рис. 2.8). Вектор прерывания, считанный из позиции, указанной точками, помещается в ПС. Отметим, что самый младший разряд передаваемых периферийным устройствам данных должен быть равен 0. Кроме того, так как в регистре I хранятся произвольные числа, то таблица векторов может быть расположена в любом месте основной памяти.
2.6. Структура шины и время выполнения команды
Структура шины
На рис. 2.9 показаны структуры шин 8-разрядных процессоров. Для процессора 8080 используются два вспомогательных кристалла: 16-цыводной генератор тактовых импульсов 8224 и 28- выводной контроллер системы шинных формирователей 8228. В качестве управляющих сигналов используются 4 строба MEMRD, MEMWR, 1ORD, IOWR.
В МС6800 используется система ввода-вывода с отображением адресов на память, поэтому отсутствует необходимость в разделении адресов памяти и портов ввода-вывода. Режимы считывания-записи цикла шины задаются сигналом RD/WR. В качестве стробирующего синхросигнала в циклах считывания- записи используется сигнал с фазой ф» двухфазного генератора
8080
6
Рис. 2.9. Структура шины 8-разрядных процессоров 8080 (о), МС6800 (б) и Z80 (в).
таковых импульсов. Таким образом, стробирующий сигнал передается в каждом такте. Сигнал VMA (выдача адреса памяти) служит для разделения на периоды, в которые осуществляется считывание-запись, и периоды, в которые эти операции не осуществляются. МС6871 —генератор тактовых импульсов.
В процессоре Z80 сигналы МЕМ, Ю управляют обращением к памяти и порту ввода-вывода в цикле шины. RD, WR — стробирующие сигналы. Тактовые импульсы могут быть однофазными.
Время выполнения команды
Тактовая частота, на которой работают процессоры 8080, МС6800, Z80, составляет соответственно 2, 1 и 4 МГц. В табл. 2.7 приводятся значения времени выполнения команд для этих процессоров. Быстродействие процессоров удовлетворяет целям практического применения. Кроме того, соотношение произво- дительность/цена этих устройств очень высокое.
Разработки 8-разрядных процессоров оказали большое влияние на развитие вычислительной техники. Следует заметить, что до сих пор наблюдалась тенденция к применению микропроцессоров в изделиях, состоящих из большого числа ТТЛ-схем. Однако вскоре подтвердилась их пригодность и для построения универсальных компьютеров. Так, несмотря на недостаточное число способов адресации в процессоре 8080, последний усовершенствован под операционную систему типа СР/М, а также для
Таблица 2.7 Время выполнения команды (единицей измерения является число тактовых импульсов) в 8-разрядных процессорах
Процессор
8080
МС6800
Z80
Тактовая частота, МГц
2
1
4
Минимальный цикл шины
3
1
3
Операция
Время выполнения, такты (мкс)
Сложение с содержимым регистра
4(2,0)
2(2,0)
4(1,0)
Сложение с содержимым памяти, абсолютная адресация
—*
4(4,0)
—
Сложение с содержимым памяти, относительная адресация
5(5,0)
19(4,75)
составления программ-интерпретаторов на Бейсике и для разработки персонального компьютера.
3
16-разрядные процессоры
Вследствие ограниченного количества транзисторов, размещаемых на одном кристалле, 8-разрядные процессоры представляют собой класс устройств, в которых функции универсального ЦП недостаточно полно реализуются на одном кристалле, поэтому для построения универсальных компьютеров они не годятся. По этой причине эти микропроцессоры характеризовались как миниатюрные и недорогие устройства, но с довольно ограниченными функциональными возможностями. Разработки 16- разрядных микропроцессоров резко изменили ситуацию. Благодаря им микропроцессоры достигли уровня современных ЦП.
16-разрядные процессоры
Таблица 3.1
Поколение
Тип устройства
Число выводов
Фирма-изготовитель
Год выпуска
TMS9900
64
Texas Instruments
1976
8086
40
Intel
1978
1
Z8001
48
Zilog
1979
MC68000
64
Motorola
1980
80186
68
Intel
1981
TMS99000
64
Texas Instruments
1982
80286
68
Intel
1983
2
МС68010
64
Motorola
1983
Z8003
48
Zilog
1983
В табл. ЗД приводятся .основные типы 16-разрядных процессоров, разработанных к настоящему времени. Этот класс устройств удобно изучать, если их разделить на процессоры 1-го и 2-го поколения в соответствии с их возможностями. В данной главе рассматриваются модели MC68000, 8086, Z8001 — представители первого поколения.
Стандартная архитектура
В 16-разрядных процессорах длина слова равна 16 бит, адресуемое пространство памяти составляет 1 —16 Мбайт, операционный блок состоит из 16 регистров общего назначения. Адресная шина данных является 16-разрядной. Используется расширенный набор команд, включающий, например, команды умножения и деления, отсутствующие в 8-разрядных процессорах. Адреса обычно представляют собой 20—24-разрядные слова. Среди устройств этого класса имеются процессоры с раздельными шинами данных и адресов (МС6800) с большим количеством выводов и процессоры с совмещенными шинами данных
ПитаниеПитаниеТактовый генераторТактовый генераторРис. 3.1. Примеры расположения выводов 16-разрядных процессоров MC68000 (а), 8086 (б) и Z8001 (в).Рис. 3.1. Примеры расположения выводов 16-разрядных процессоров MC68000 (а), 8086 (б) и Z8001 (в).
Питание
Питание
Тактовый генератор
Тактовый генератор
Рис. 3.1. Примеры расположения выводов 16-разрядных процессоров MC68000 (а), 8086 (б) и Z8001 (в).
Рис. 3.1. Примеры расположения выводов 16-разрядных процессоров MC68000 (а), 8086 (б) и Z8001 (в).
регистров общегоназначениярегистров общегоназначения
регистров общего
назначения
регистров общего
назначения
Внутренняя информационная шина X
Рис. 3.2. Архитектура процессора с регистрами общего назначения.Рис. 3.2. Архитектура процессора с регистрами общего назначения.внутренняя инфор- ^мационная шина Y
Рис. 3.2. Архитектура процессора с регистрами общего назначения.
Рис. 3.2. Архитектура процессора с регистрами общего назначения.
и адресов (8086, Z8001) с меньшим количеством выводов (рис. 3.1). Процессор MC68000 с64 выводами имеет наиболее слож*- ную архитектуру. Процессор 8086 с более простой архитектурой является самым дешевым прибором.
Базовая структура операционного блока на регистрах общего назначения показана на рис. 3.2; в ней отсутствует специальный регистр, называемый аккумулятором. В качестве двух операндов, поступающих в АЛУ, могут использоваться числа, хранящиеся в любых регистрах общего назначения. Одним из этих операндов может быть число, хранящееся в основной памяти. Результат операции, выданный АЛУ, записывается в регистр или в основную память устройства.
При адресации указываются два адреса операндов, т. е. команда имеет следующую структуру:
Код операции
Первый адрес
Второй адрес
Здесь первый и второй адреса определяют места хранения двух операндов. Обычно первый адре^ указывается только в регистре общего назначения, а второй может указываться как в регистре общего назначения, так и в основной памяти. Для адресации основной памяти требуется большее число разрядов. чем для адресации регистра общего назначения, поэтому в 16-разрядном слове нельзя поместить команду, содержащую 2 адреса операндов, хранящихся в основной памяти. Результат операции обычно записывается по первому адресу, однако удобной в данном случае считается система, позволяющая выборочно производить запись и по второму адресу. В этом случае возможны 3 способа передачи данных:
РОН, РОН > РОН;
РОН, основнаяпамять ►•РОН;
РОН, основнаяпамять ►основнаяпамять.
Адресное пространство
Когда разрабатывались 8-разрядные процессоры, считалось, что для их практического применения достаточно 64К-байт пространства адресов. Поэтому в широко используемых в настоящее время 16-разрядных мини-компьютерах длина адресного слова составляет 16 бит. При такой длине адреса с адресами и данными можно обращаться одинаково, что значительно упрощает структуру ЦП.
Рис. 3.3. Сегментированное адресное пространство.Рис. 3.3. Сегментированное адресное пространство.
Рис. 3.3. Сегментированное адресное пространство.
Рис. 3.3. Сегментированное адресное пространство.
Однако со временем существенно увеличился объем памяти на кристаллах, и как следствие этого программное обеспечение стало сложным и разнообразным. Кроме этого, для построения универсальных компьютеров требуется достаточно большое адресное пространство. Поэтому 16-разрядные процессоры проектировались с длинным адресным словом: 20 бит в 8086, 23 бит в Z8001 и 24 бит в MC68000.
Линейная и сегментная адресации
Если число разрядов адреса превышает длину информационного слова, возникают вопросы: в какой форме поместить такой адрес в регистр и каким образом осуществлять вычисление адреса? Для решения этих задач используют два способа адресации: линейную и сегментную адресации.
По первому способу адрес представляет собой отдельное целочисленное значение и в 8-разрядных процессорах адреса хранятся в 16-разрядных регистрах двойной длины. Вычисление адреса осуществляется с помощью операции сложения, приращения и уменьшения 16 разрядов слова двойной длины. В 16-разрядных процессорах выполняются аналогичные операции, т. е. адреса хранятся в 32-разрядных регистрах двойной длины, а вычисление адреса производится с помощью 32-раз-
рядного сумматора (для этой цели можно дважды использовать 16-разрядное АЛУ, но для ускорения вычисления адреса лучше использовать 32-разряд- ный сумматор). Архитектура микропроцессора довольно сложная, но зато удобная, так как все адресное пространство используется как единое целое.
По второму способу все пространство адресов делится на множество сегментов (рис. 3.3). Пространство, разбитое на такие сегменты, называется сегментированным пространством адресов. Начальный адрес сегмента называется базовым. За каждым сегментом закреплен соответствующий номер. Порядок разбиения пространства может быть произвольным, и, после
того как он установлен, адрес можно представить с помощью номера сегмента и некоторого смещения. При сегментной адресации такое разбиение позволяет представить адрес в виде двух целочисленных величин — номера сегмента и смещения, т. е. можно использовать два 16-разрядных регистра, хранящих номера сегментов и значения смещений. Следовательно, максимальный размер одного сегмента составит 64К байт. Таким образом, вычисление адреса в принципе сводится только к вычислению смещения, т. е. для вычисления адреса можно воспользоваться тем же 16-разрядным АЛУ, не прибегая к помощи 32-разрядных регистров и сумматоров, что значительно упрощает структуру процессора.
Модульное представление и сегментация адресного пространства
В целях рационализации процесса программирования программы и данные удобно разбивать на модули. Каждому модулю присваивается соответствующее имя, а адрес внутри модуля представляется некоторым смещением (рис. 3.4). Такие модули используются в произвольных комбинациях. Программа, разбитая на модули, может быть помещена в любую область основной памяти. При таком подходе пространство адресов удобно представлять в виде сегментированного пространства, т. е. если каждый модуль расположить в отдельном сегменте памяти, то обращение к памяти осуществляется с помощью номера соответствующего сегмента и величины смещения. Это не что иное, как способ сегментной адресации, хотя, строго говоря, последний является более широким понятием.
Однако при таком способе адресации, используемом в 16-разрядных процессорах, возникают проблемы, связанные с тем, что размеры сегмента ограничены 64К байт. Дело в том, что в настоящее время существует немало модулей, размеры, которых превышают 64К байт (например, графические данные), и при большом числе сегментов, соответствующих одному модулю, вычисление адреса значительно усложняется.
Способ линейной адресации в случае сегментированного адресного пространства решает эту проблему следующим образом: несколько старших разрядов адреса указывают номер сегмента, а остальные разряды — величину смещения. Например, в 24-разрядном коде адреса старшие 8 разрядов могут определять номер сегмента, а младшие 16 разрядов — величину смещения. Допустим, что общее число сегментов с максимальным размером 64Кбайт равно 256. Тогда, если даже и существуют модули, превышающие 64К байт, при соответствующем распределении непрерывных номеров сегментов адрес вычисляется
ДОВОЛЬНО ПрОСТО. ПОСКОЛЬКУНазвание модуля
производится сложение 24- alpha beta datai разрядных слов, одновре- огтгт пп*"
менно определяющих номер сегмента и значение смещения,l___J
то первый автоматически вычисляется переносом единицы 16-го разряда в 17-й или зае-
мом единицы 17-го разряда для 16-го.„
Кроме того, число разрядов; | определяющих номер сегмента,, I можно устанавливать произ-3,, ВОЛЬНЫМ, ЧТО позволяет ИС- Рис. 3.4. Модульный принцип органи- ПОЛЬЗОВЗТЬ либо незначитель- зации программного обеспечения, ное число больших сегментов, либо большое число малых сегментов. Допускается также смешанное использование сегментов обоих типов. Например, если адресное слово состоит из разрядов А23А22...А0, то при наличии трех 4-Мбайт сегментов и 64 64К~байт сегментов их адресация осуществляется по табл. 3.2.
Таблица 3.2 Пример сегментной структуры при линейной адресации
Номер сегмента
Разряды
А23
А22
А21
А20
А19
А18
А17
А1в
Нулевой сегмент
0
0
Первый сегмент
0
1
Второй сегмент
1
0
Третий сегмент
1
1
0
0
0
0
0
0
Четвертый сегмент
1
1
0
0
0
0
0
1
Пятый сегмент
1
1
0
0
0
0
1
0
67-й сегмент
1
1
1
1
1
1
1
1
3.2.3. Примеры
MC68000. Используется линейная адресация. 24-разрядный код адреса позволяет последовательно обращаться к 16-Мбайт пространству (рис. 3.5, а). Адреса хранятся в 32-разрядных регистрах. Операционный блок (рис. 3.6) кроме 16-разрядного АЛУ содержит два 16-разрядных сумматора, с помощью кото-
23 бит SNe.o • А15-о
Рис. 3.5. Адресное пространство 16-разрядных процессоров MC68000 (а) 8086 (б) и Z8001 (в).
161616
Рис. 3.6. Операционный блок процессора MC68000.
рых одновременно осуществляется вычисление 32-разрядных адресов и 16-разрядных информационных слов.
8086. Используется сегментная адресация, причем не в виде номеров сегментов и смещения, а с использованием базового адреса сегмента и смещения. Оба этих числа являются 16-раз- рядными. Из них формируется 20-разрядный код адреса (рис. 3.5, б), т. е. база сегмента в 20-разрядном коде адреса представлена старшими 16 бит. Оставшиеся 4 младших бита равны 0000. Ограничения на базу сегмента практически отсутствуют (базовым адресом может быть любое число, кратное 16). Если предположить, что имеется 8 младших разрядов (00000000), можно сформировать 24-разрядный код адреса (в этом случае базовый адрес сегмента был бы целым числом, кратным 256), но, чтобы число выводов кристалла не превышало 40, используются 20-разрядные адреса. Микропроцессор 8086 кроме 16-разрядного АЛУ содержит специальный 16-разрядный сумматор для формирования такого адреса, что позволяет параллельно осуществлять вычисление адреса и обработку данных.
Z8001. Используется сегментная адресация. Номера сегментов и смещения хранятся в соответствующих 16-разрядных регистрах процессора, но фактически номер сегмента (рис. 3.5, в), задается 7 бит, т. е. процессором выдается 32-разрядный код, состоящей из SN6-o разрядов сегмента и^А^-о разрядов адреса. Несмотря на возможность использования номера сегмента в виде тех же 7 старших разрядов адреса, базовый адрес сегмента должен быть целым числом, кратным 64К, поэтому для расположения сегмента в любом месте адресного пространства в процессоре Z8001 необходимо использовать устройство управления памятью, описываемое ниже.
Регистровые структуры
Во всех 16-разрядных процессорах используются регистры общего назначения. Конкретные регистровые структуры (рис. 3.7) зависят от типа устройства.
MC68000. Имеется шестнадцать 32-разрядных регистров общего назначения: 8 регистров данных DO—D7 и 8 адресных регистров АО—А7; функции этих типов регистров сильно различаются. Поскольку при обработке данных, хранящихся в первой группе регистров, используется АЛУ, то с ними можно осуществлять арифметические и логические операции, операции сдвига и др., кроме того, возможен произвольный выбор формата данных в виде байта, слова или слова двойной длины.
Операции с адресами, хранящимися во второй группе регистров, сводятся лишь к сложению с использованием имею-
31161587 о
00
'I
АХ
АН ! AL
R0
I
01
СХ
СН । CL
R1
I
г мни
02
ОХ
ОН ] CL
R2
Г1"
03
R3
1
7 Мне
04
ВХ
ВН ; BL
R4
05
■ * ■1
SP
R5
1
> HR4
06
BP
R6
07
SI
1— ■
R7
R8
АО
01
-
> RR8
R9
А1
R10
У
А2
DS
R11
л nniu
АЗ
SS
R12
А4
ES
R13
> RR12
А5
R14* Rui
| УСС
Аб
IP
г
А7*
| Указатель системного стека
I SR
R15'
| УСС
I
► RR14
А7 |
| Указатель стека пользователя
Г
б
R15
|УСП
г
РС|
- ■■■—
sr|
PC
а
SR
PSAP
:
в
Рис. 3.7. Регистровые структуры 16-разрядных процессоров MC68000 (а), 8086 (б) и Z8001 (в).
УСС— } казан ель системного снека; УСП -у каза!ель стека пользователя.
щегося арифметического устройства. Кроме того, допускается использование адресов длиной, равной только слову или двойному слову. Последний адресный регистр (А7) выполняет функцию указателя стека. В процессоре предусмотрены 2 режима работы: системный режим и режим пользователя; поэтому в качестве указателя стека используются, два регистра: A7Z в системном режиме и А7 в режиме пользователя. В системном режиме автоматически выбирается регистр А7\ Кроме этих регистров имеются 32-разрядиый программный счетчик (PC) и 16-разрядный регистр состояния SR. Следует отметить, что регистровая структура процессора MC68000 может без изменения применяться и в 32-разрядных процессорах.
8086. Имеется восемь 16-разрядных регистров общего назначения (АХ, СХ, DX, ВХ, SP, BP, SI, DI), которые, за исключением регистров АХ, СХ, DX, можно использовать для специальных целей. В любой момент времени существует возможность
обращения к четырем сегментам. Для хранения базовых адресов этих сегментов используются следующие регистры:
CS (code segment) для сегмента программ;
DS (data segment) для сегмента данных;
SS (stack segment) для сегмента стека;
ES (extra segment) для дополнительного сегмента.
Когда указатель команд IP (instruction pointer) функционирует как программный счетчик, регистр CS автоматически выбирается для хранения базового адреса сегмента. Если регистр SP функционирует как указатель стека, то регистр SS автоматически выбирается для хранения базового адреса сегмента. В остальных случаях при обращении к данным в качестве базового адреса сегмента автоматически выбирается регистр DS. При адресации с целью выборки данных используются ВХ и ВР (базовые регистры), а также SI и D1 (индексные регистры).
Когда в качестве базового регистра используется ВР, регистр SS автоматически выбирается для хранения базового адреса сегмента. Другими словами, осуществляется обращение к сегменту стека. Однако для хранения базового адреса сегмента при обращении к данным могут также использоваться регистры ES, SS, CS. Кроме того, когда базовым регистром служит регистр ВР, регистры DS, ES, CS могут указываться в качестве базовых адресов сегмента.
Z8001. Имеется шестнадцать 16-разрядных регистров общего назначения, из которых R0—R7 можно использовать как шестнадцать 8-разрядных регистров. Все регистры образуют 8 регистровых пар RRO- RR14, которые служат для хранения адресов. Кроме того, регистр RR14 выполняет функцию указателя стека. Процессор, как и MC68000, может работать в двух режимах: в системном режиме и в режиме пользователя; поэтому имеются также два указателя: RR14' используется в первом режиме, RR14 — во втором. О назначении регистровой пары PSAP (указателя области состояния программы) будет сказано ниже.
Способы адресации
В 16-разрядных процессорах достаточно развиты различные способы адресации, кроме того, эти процессоры спроектированы таким образом, что имеющиеся в них способы адресации одинаково эффективно работают с большим числом команд. Благодаря этому число используемых ими команд сократилось, а скорость обработки возросла.
MC68000. Имеется 10 способов адресации:
регистровая прямая;
Рис. 3.8. Стек и организация очереди.
непосредственная (операнд содержится в командном слове);
абсолютная короткая адресация (используется при обращении к области 0000—FFFFie); абсолютная длинная адресация;
регистровая косвенная;
регистровая косвенная поставтоинкрементная;
регистровая косвенная предавтодекрементная;
относительная по базе;*
индексная по базе;
относительная с использованием программного счетчика;
индексная и относительная адресации с использованием программного счетчика.
Эти способы являются универсальными почти для всех команд. Особенность процессора — использование поставтоинкрементной и предавтодекрементной адресаций. При поставтоинкрементной адресации после выполнения команды содержимое регистра адреса автоматически увеличивается на постоянную величину. При предавтодекрементной адресации перед выполнением команды содержимое того же регистра автоматически уменьшается на постоянную величину. Как будет показано ниже, формат данных можно задавать байтами, словами и двойными словами, поэтому величина приращения или уменьшения в соответствии с форматом данных равна 1, 2 и 4.
Эти способы адресации удобны при обращении к данным, последовательно хранящимся в памяти.
При поставтоинкрементной и предавтодекрементной адресациях любой адресный регистр можно использовать в качестве указателя стека. При организации стека, нарастающего от больших адресов к малым, целесообразно использовать команды
PUSH (предавтодекрементная адресация) и
POP (поставтоинкрементная адресация) (рис. 3.8, а).
Кроме того, упрощается образование очередей постоянного объема в памяти. Как показано на рис. 3.8, б, начало и конец очереди указываются с помощью двух адресных регистров. Если выборка из начала очереди производится по команде GET, а дополнение к се концу - по команде PUT, то в случае поставтоинкрементной адресации можно записать
GET:АшPUT:Ап
Следует отметить, что после выполнения этих команд исследуется содержимое адресного регистра и, если оно превышает значение максимального адреса, его следует приравнять значению минимального адреса (фактически необходимо контролировать состояние пустой и полной очередей). Структура команды сложения для регистра данных имеет следующий вид:
15О
11Г— 110 1
""■I "I*
D
S
11 Режим
11 m
Код операции Регистр / Размер Исполнительный Направление адрес
где п — номер регистра данных, D — направление пересылки результата операции, S — формат данных, поле «режим» и m — исполнительный адрес еа (табл. 3.3). Иначе говоря, числом п и исполнительным адресом указываются две ячейки памяти, с помощью величины D можно выбрать место хранения результата операции, т. е. при D = 0 Dn -*- (Dn) + (ea), при D=1 еа -<- (ea) + (iDn), а с помощью S можно выбрать формат данных: при S = 0 — байт, при S = 1—слово, при S = 2— двойное слово.
При базовой или относительной адресации с использованием программного счетчика поле «режим» указывает на дополнительное смещение длиной одно слово:
15о15о
15о
15о
В случае индексной и базовой адресаций (или относительной адресации с использованием ПС) применяется расширенное командное слово:
157О
D/A
11
H/L
1 ООО
।I i।I I I
de
Исполнительные адреса процессора MC68000
Таблица 3.3
Режим
m
Исполнительный адрес еа
ООО
Dn
001
Ап
010
(Ап)
011
0—71>
(Ап) +
100
-(Ап)
101
(An) + d|6
по
(An)+d.+ (Ri)
0
Абсолютный адрес (1 слово)
1
Абсолютный адр^с (2 слова)
111
2
ПС + die
3
nC + d8+(Ri)
4
Непосредственная адресация
1) Цифра указывает номер регистра.
где D/А указывает, какой из регистров (регистр данных или регистр адреса) используется в качестве индексного, i — номер этого регистра, H/L указывает, какие (младшие или старшие) 16 бит этого регистра используются в качестве индекса, de определяет смещение. Неудобство такой команды заключается в том, что величина смещения ограничена 8 бит. При абсолютной адресации добавляется одно или два адресных слова, а при непосредственной — одно слово данных.
Структура команды пересылки имеет следующий вид:
Код Размер Приемник Передатчик операции
Эта команда допускает пересылку из памяти в память. Расширенное командное слово добавляется в требуемом режиме в следующем порядке: расширенное слово передатчика, расширенное слово приемника.
8086. Имеется 8 регистров (АХ, СХ, DX, ВХ, SP, BP, SI, DI), которые можно использовать для хранения 16-разрядных данных; 8 регистров (AL, CL, DL, BL, АН, CH, DH, ВН), ис-
пользуемые для хранения 8-разрядных данных; 2 регистра {ВХ, ВР), используемые в качестве базовых, и 2 регистра (SI, Р1)^
используемые в качестве индексных.
Таким образом, все регистры являются регистрами специ
ального назначения, для адресации которых используются следующие восемь способов (универсальные для всех команд):
регистровая непосредственная;
непосредственная;
абсолютная (указывается смещение);
регистровая косвенная;
относительная по базе;
индексная по базе;
индексная;
относительная и индексная с использованием программного счетчика (ПС).
Структура команды сложения для этих регистров дана ниже:
15
0
—Г 0
г 0
0
0
0
0
D
S
I i Режим
11
п
1 " r/m
Код операции Направ-YРегистр
пение
Размер Исполнительный адрес
где п — указатель регистра (соответствующие его значению регистры приводятся в табл. 3.4), D — направление пересылки результата операции. Если содержимое регистра обозначить Rn, то при
D=0 еач(ea) + (Rn), а при
D = 1 Rn^(Rn) + (ea).
S определяет формат данных:
при 5 = 0 — байт, при S = 1 — слово.
Режим и значение г/m определяют исполнительные адреса. В табл. 3.5 приводятся адреса, соответствующие их значениям. Даже в случае индексной адресации 16-разрядное смещение в этом процессоре меньше, чем в процессоре MC68000. При смещении длиной 8 и 16 бит добавляют соответственно однобайтное и двухбайтное расширенное командное слово. В качестве абсолютного адреса используется двухбайтное расширенное командное слово длиной 16 бит. Отметим, что непосредственная адресация используется с различными кодами команд.
Структура команды пересылки приведена ниже:
15 о
Т 1Т” ■■■Т" Г- 1 00 010
D
S
I !"
Режим
11
I '
Код операции Направ- РазмерРегистр
пение
Таблица 3.4
Адресация регистров процессора 8086
п
Адресация словами
Адресация байтами
ООО
АХ
AL
001
сх
CL
' 010
DX
DL
011
вх
BL
100
SP
АН
101
ВР
СН
по
SI
DH
111
DI
ВН
Таблица 3.5
Исполнительные адреса процессора 8086
г/ш
Режим
00
01
10
11
000
(BX)+(SI)
(BX)+(Sl)+d„
(BX)+(SI)+du
AX/AL
001
(BX)+(DI)
(BX)+(DI)+de
(BX)-KDI)+dM
CX/CL
010
(BP)+(SI)
(BP)+(SI)+d8
(BP)+(SI)+dH
DX/DL
он
(BPH-(DI)
(BP)+(DI)+dN
(BP)4 (DI) 4 d,«
BX/BL
100
(SI)
(SI)+d„
(SI)4 dle
SP/AH
101
(DI)
(DI)+d,
(DI)+d„
BP/CH
по
Абсолютный
(BP)+d,
(BP)+d„
SI/DH
адрес
111
(ВХ)
(BX)+d,
(BX)+d„
DI/BH
где в соответствии со значением D осуществляются пересылки
при D==0 еа -с (Rn),а при D = 1 Rn -<(еа).
Передатчик или приемник должен быть регистром; пересылка из памяти в память не допускается.
Z8001. Адреса хранятся в регистровых парах (RRO—RR14)
в виде номеров сегментов и смещений. Эта же форма используется и при их хранении в памяти в виде слов двойной длины:
111111 Номер сегмента
Смещение
Индекс хранится в одном из регистров R1—R15. Структура команды сложения, выполняемой с помощью регистров, приведена ниже:
—1— Режим
1111 0 0 0 0 0
S
—1—1—1— m
11 1 1
п
мер
Исполнительный адрес
Результат операции помещается только в регистр, т. е. осуществляется только следующая операция:
Rn -< (Rn)+(ea)
Такая операция, как
еа -<(ea) + (Rn), не допускается (ограничение по направлению).
Значение S является однобитовым, и формат данных при 5 = 0 представляет собой слово, а при 5 = 1—байт. Тем не менее могут выполняться операции и со словами двойной длины (при этом несколько отличается код операции). В процессоре используются следующие способы адресации (однако только 5 из них (табл. 3.6) являются универсальными для всех команд) :
Таблица 3.6 Исполнительные адреса процессора Z8001 (универсальные для всех команд)
Режимгл*)
Исполнительный адрес
000
002—14
010
.011—15
100—15
Непосредственная адресация (RRn)
Абсолютная адресация b23**HRn)
Rn
') Указывается номер регистра.
регистровая прямая;
непосредственная;
абсолютная (указывается номер сегмента и смещения);
регистровая косвенная;
относительная адресация по базе;
индексная по базе;
индексация и относительная адресация с фиксированной базой.
В режиме непосредственной адресации в качестве расширенного командного слова добавляется одно слово данных, при абсолютной адресации добавляются два слова: номера сегмента и смещения, а при относительно адресации с фиксированной базой — также два слова: номера сегмента и смещения.
В команде пересылки приемником или передатчиком обязательно является регистр Rn. Однако возможны и другие исполнительные адреса, в частности адреса со смещением по базе (еа= (RRm)+di6) и с индексацией по базе (еа= (iRRm) + (Ri)).
Для команды пересылки существует несколько кодов. Например, когда осуществляется операция
Rn ч (еа),
то, согласно способам адресации, указанным в табл. 3.6, структура команды будет следующей:
15О
■ 1 Режим
1I-11
1 0 0 00
S
—I—I—I— п
Размер ТПриемник
Передатчик
При относительной адресации по базе она имеет вид
Поддержка языка высокого уровня
Так как в 16-разрядных процессорах обычно используется большое количество регистров данных, имеется множество способов адресации (причем универсальных для всех команд) и
применяются команды умножения и деления, то упрощается переход от программы, написанной на языке высокого уровня, к высокоэффективной программе на машинном языке. В целях сокращения числа команд в программе целесообразно использовать специальные команды для поддержки языка высокого уровня.
В процессоре MC68000 используется наибольшее число специальных команд, таких, как
LINK (связь с подпрограммой),
UNLK (разрыв связи с подпрограммой),
РЕА (запись исполнительного адреса),
LEA (загрузка исполнительного адреса), SCC (установка согласно кодам условий).
Команду MOVEM (пересылка содержимого группы регистров) нельзя строго назвать специальной, тем не менее она также удобна, ибо позволяет одновременно пересылать содержимое любого числа регистров из 16 регистров общего назначения (номера регистров, содержимое которых подлежит пересылке, указываются 16-разрядной маской). В процессоре 8086 для этой цели используется команда LEA. В процессоре Z8001 имеются команда LDA, соответствующая LEA в модели MC68000, и команда LDM, соответствующая MOVEM.
Ниже приведены комментарии к основным командам процессора MC68000.
Обращение к переменным
При обращении к переменным очень важно повысить эффективность вычисления адреса. Благодаря множеству способов адресации в процессоре MC68000 упрощается процедура обращения к переменным. Допустим, имеется следующее описание переменных:
type INVENTRY = record
PARTNUMBER : integer;
PARTNAME : packed array [0 .. 9] of char ;
QUANTITY: integer;
PRICE: integer end ;
var PARTS: array [0 .. 999J of INVENTRY ;
Размещение массива — важный элемент такой записи — приводится на рис. 3.9. Так как размер записи равен 16 байт, в индексный регистр Di помещается значение 161, причем операция
еа = (Am)+d + (Di)
Рис. 3.9. Обращение к переменным, упорядоченным в запись.Рис. 3.9. Обращение к переменным, упорядоченным в запись.
Рис. 3.9. Обращение к переменным, упорядоченным в запись.
Рис. 3.9. Обращение к переменным, упорядоченным в запись.
позволяет обратиться к начальному адресу массива . PARTS [I]. Однако для обращения к каждому элементу массива необходимо ввести смещения относительно этого адреса:
PARTNUMBER: d' = О
PARTNAME : d' = 2
QUANTITY : d' = 12
PRICE:d'=11
С помощью команды LEA значение исполнительного адреса можно поместить в любой адресный регистр. Другими словами, операция
LFA d (Am, Di), An
позволяет начальный адрес массива PARTS [I] загрузить в регистр Ап. К любому элементу можно обратиться с помощью операции
еа= An+d'.
Даже к каждому знаку, входящему в состав слова PARTNAME, можно обратиться с помощью операции
ea = (An) + d' + (Dj).
В процессоре MC68000 смещение при индексной адресации по базе ограничено 8 бит. Если адресация осуществляется без учета этого ограничения, следует использовать только базовую адресацию и индексную адресацию по базе с нулевым смещением, т. е. вначале по команде
LEA d (Am), Anначальный адрес каждой -переменной загружается во вспомо-гательный регистр адреса Ап. Содержимое переменной опреде-ляется обращением к Ап как к базовому регистру. Если пере-менная представлена простым массивом, с помощью операцииеа = (An) + (Di)
можно обратиться к каждому ее элементу. Если же содержимое имеет сложную структуру, команду LEA следует использовать повторно.
Так как в языках высокого уровня используется множество процедур, то очень важное значение приобретает повышение эффективности их обработки. Процедура, конечно, организуется как подпрограмма, причем бывает необходимо обеспечивать повторный (рекурсивный) вызов такой процедуры, т. е. до окончания выполнения некоторой подпрограммы осуществляется повторный вызов этой подпрограммы. Следовательно, каждый раз при вызове процедуры переменные, описанные в ней, помещаются в стек. Это осуществляется с помощью команд LINK и UNLK. Символическое представление этих команд имеет вид
LINKAn, d
UNLKAn
где Ап используется в качестве базового регистра, который называется указателем кадра (УК) и используется для обращения к переменной процедуры, d указывает размеры области переменных. Порядок действий, выполняемый по команде LINK, следующий:
стек-<~ Ап (занести содержимое Ап в стек)
Ап -*- (УС) (содержимое указателя стека поместить в Ап) (УС) (УС)+б (прибавить d к содержимому указателя стека)
Порядок действий, выполняемых по команде UNLK> следующий:
(УС) -*- (Ап) (содержимое Ал поместить в указатель стека)
Ап -<- стек (содержимое стека занести в Ап)
Как уже говорилось выше, процедура организуется в виде подпрограммы, в начале которой следует команда LINK, а в конце— команды UNLK и RET. Ниже приводится пример подобной программы:
program EX;
var VO, VI, ••• : real;
procedure PROC;
var A, В : real;
begin
if ••• then PROC;
end;
begin
PROC;
end.
В этом примере переменными, описанными в процедуре PROC, являются два действительных числа А и В, занимающие 8 байт. Если в качестве указателя кадра использовать Аб, то подпрограмма приобретает следующую форму:
PROC:LINK Аб, -8
UNLK Аб
RET
На рис. 3.10, а показано состояние стека непосредственно перед вызовом этой подпрограммы в основной программе. Указатель кадра (УК) определяет адрес основания стека то, над которым помещаются переменные, описанные в основной программе. К этим переменным можно обратиться, если указатель кадра считать базовым регистром. Указатель стека (УС) определяет вершину области этих переменных. По команде CALL PROC основной программы вначале в стек заносится адрес возврата ш, а затем выполняется начальная команда LINK подпрограммы и стек переходит в состояние, показанное на рис. 3.10, б (вначале содержимое то указателя кадра (УК) заносится в стек, содержимое УС, т. е. пн, помещается в УК и в конце к содержимому УС добавляется «—8»). К переменным А и В, описанным в процедуре, можно обратиться, если указатель кадра использовать в качестве базового регистра. Перед указателем кадра помещаются базовые адреса области переменных программы (в данном случае основной программы), вызвавшей эту процедуру.
При таком построении в процессе выполнения процедуры PROC она может вызвать саму себя. На рис. 3.10, в показано состояние стека в этом случае (пг — адрес возврата). Перед указателем кадра хранился адрес пи, поэтому в этот адрес заносится то. Такая последовательность называется динамической связью. Когда выполнение указанной процедуры осуществляется без повторного вызова, содержимое УКт2 по команде UNLK заносится в УС, поэтому в итоге стек переходит в состояние, показанное на рис. 3.10, г. Если выполяется команда RET, стек возвращается в состояние, показанное на рис. 3.10, б, а если завершается выполнение первоначально вызванной процедуры — в состояние, показанное на рис. 3.10, а.
Стек
Стек
Указатель ■ ,, -1Г . • ь
стека (УС)Iк—,
(А7) 11
Указатель! " ""I
стека (УСНmi’8Г
В А то «1
mt
то
указатель,i
кадра (УК)!..„ -2-Г (Аб)
Указатель!1
кадра(У К Mf1Г
Переменные основной прог раммы
то
Переменные основной программы
V1
V1
V0
V0
СтекСтек
mi
т0
Указатель! _1 _
стека (УСП| х
В
Указатель!_I
стека (УСнт2Г"
А
Указатель) кадра (УК)!^ Г*
т1
УказагельГ " '1
кадра( У К»1 Г
л2
т2 mi
п2
В
В
А
А
то
то
п1
п1
Переменные основной программы
Переменные основной программы
V1
V1
V0
V0
т0
Рис. ЗЛО. Расположение в стеке переменных процедуры.
Ниже рассматривается случай, когда процедура PROC, имеющая 2 параметра, описывается следующим образом:
procedure PROC(X : real; var Y : real) ;
var A, В: real;
begin
end.
В этом случае при вызове в основной программе процедуры PROC (VO; VI) в стек помещаются значение параметра V0 и адрес параметра VI. Для занесения адресов переменных в стек используется команда РЕА. В основной программе записывается
MOVE (Аб), —(А7); (занести в стек значение V0)
РЕА -—4(Аб); (занести в стек адрес VI)
CALL PROC; (вызов процедуры)
ADD #8, А7; (к содержимому указателя стека прибавить 8).
На рис. 3.11, а показано состояние стека сразу после выполнения команды LINK подпрограммы вслед за выполнением команды CALL PROC. При этом не только к переменным, они санным в процедуре, но и к параметрам можно обратиться' используя указатель кадра. На рис. 3.11, б показано состояние стека после выполнения команд UNLK и RET в подпрограмме.
СтекСтек
Рис. 3.11. Передача параметров процедуры.Рис. 3.11. Передача параметров процедуры.то КАдрес переменной V1Значение V0Переменные основной программыV1V2то КАдрес переменной V1Значение V0Переменные основной программыV1V2
Рис. 3.11. Передача параметров процедуры.
Рис. 3.11. Передача параметров процедуры.
то К
Адрес переменной V1
Значение V0
Переменные основной программы
V1
V2
то К
Адрес переменной V1
Значение V0
Переменные основной программы
V1
V2
Для вычисления объема стека, используемого для хранения значений параметров, после возвращения к основной программе к содержимому указателя стека прибавляется 8.
Кроме того, когда в процедуре используются регистры общего назначения, их содержимое, необходимо переслать в стек. Для этого служит команда MOVEM, причем, когда пересылаются содержимые всех регистров данных, подпрограмма имеет следующий вид;
PROC: LINK Аб, -8
MOVEM D0-D7, - (А7)
MOVEM (А7)+, DO—D7 UNLK
RET
В процессоре 80286, как будет показано ниже, для обработки процедур используются специальные команды: ENTER и LEAVE. Эти команды обладают большими возможностями, чем команды LINK и U'NLNK процессора MC68000, причем в стеке содержатся все базовые адреса областей переменных, к которым разрешено обращение.
В качестве примера рассмотрим программу, структура которой приведена на рис. 3.12, а. Видно, что в основной программе описывается процедура А, в процедуре А описываются процедуры В и С, а в процедуре С описывается процедура D.
Основная программа М
Первый уровеньПервый уровеньВторойВторойПроцедура ВПроцедура ВуровеньуровеньПроцедура А
Первый уровень
Первый уровень
Второй
Второй
Процедура В
Процедура В
уровень
уровень
I Четвертый
Процедура СПроцедура СD уровень
Процедура С
Процедура С
б
Процедура D
Рис. 3.12. Пример древовидной структуры программы.
УС*-
с
УС*
тм
УК-»
тм
УС*
22а.
-»м.
УК-*»
Дисплей
^с"
7?FrAg
Дисплей
тс
м
тм
21м. 22м
УК*
Дисплей
т.
тм
22а.
22м. тм
тв
т
м
тм
тм
В
А
22В. тА
т£
тв
тА
м
Лм.
тМ
режима «дисплей» по командережима «дисплей» по командеб
режима «дисплей» по команде
режима «дисплей» по команде
Рис. 3.13. Автоматическая организация ENTER (адреса возврата не показаны).
Связь между этими процедурами можно представить с помощью древовидной структуры, показанной на рис. 3.12, б. Каждый уровень такой структуры соответствует лексическому уровню каждой процедуры. Вершиной дерева является основная программа М, ее уровень принимается за 1. Возможность обращения в некоторой процедуре существует только к переменным, присутствующим в процедурах, расположенных по маршруту от этой процедуры до вершины.
В начале подпрограммы помещается команда ENTER, а в конце — команды LEAVE и RET. Команда ENTER имеет следующий формат:
ENTER d, 1
где d — размер области переменных, 1 — лексический уровень. Указатель кадра не требуется, так как в его качестве обычно используется специальный регистр ВР. На рис. 3.13, а показано состояние стека при выполнении основной программы (М. — область переменных основной программы), на рис. 3.13, б — после вызова процедуры А основной программой, на рис. 3.13,в — после вызова процедуры В процедурой А, а на рис. 3,13, г — его состояние после вызова процедуры С процедурой В. Обращение к переменным процедуры В не разрешается.
Оценка выражения отношения
В языках высокого уровня широко применяется оценка выражения отношения, например
if (X > = Y) AND (В<С) then ...
Оценка отдельных выражений отношения может быть осуществлена с помощью команды сравнения, причем результаты этой операции хранятся в регистре состояния (PC) в виде кода условий. Для этой цели можно, конечно, также использовать команду условного перехода, однако при неоднократном использовании утрачивается эффективность предварительной выборки команды. В этом случае удобно воспользоваться SCC:
SCC условие, адрес
По указанному адресу помещается истинное значение, если данное условие установлено, и ложное в противном случае. Если в регистрах данных и в основной памяти хранятся различные логические значения, их оценку можно легко осуществить любой логической формулой.
Поддержка операционной системы
Основные функции операционной системы
Программы, используемые для обработки информации, необходимой пользователю компьютера, называются прикладными программами или прикладным программным обеспечением. Для функционирования прикладной программы ее прежде всего необходимо поместить в соответствующую область основной памяти, а затем выполнить команду перехода к ее начальному адресу. Однако для выполнения этих операций также требуется несколько программ. Программы, используемые для управления компьютером, принято называть операционной системой (ОС).
В любом компьютере имеются по крайней мере одно устройство ввода, одно устройство вывода и внешняя память. Они представляют собой систему аппаратного обеспечения компьютера. В качестве устройства ввода можно использовать клавиатуру, устройства вывода — дисплей, внешней памяти — гибкие диски. С клавиатуры вводятся команды управления компьютером, а ответ компьютера на команду отображается на дисплее. Клавиатура используется как для ввода программ, так и для ввода данных. Дисплей используется для индикации программ и данных, а также для отображения результатов выполнения программы. Гибкие диски служат для хранения программ и
Рис. 3.14. Стандартная конфигурация вычислительной системы с точки зрения программного обеспечения.
данных. Операционная система полностью управляет работой такого компьютера, поэтому она должна обладать функциями трансляции и выполнения команд, вводимых в данном случае с клавиатуры, и функцией, приводящей в действие все периферийные устройства.
Среди прикладных программ также должны быть программы, приводящие в действие периферийные устройства. Однако реализовать эту функцию в прикладной программе трудно, поэтому для этой цели удобно непосредственно использовать программу операционной системы. Таким образом, все периферийные устройства, используемые в прикладных программах, приводятся в действие с помощью ОС. В свою очередь сами прикладные программы запускаются и останавливаются под управлением ОС. А так как функционирование всех периферийных устройств в прикладной программе осуществляется под управлением ОС, то в итоге оказывается, что прикладные программы полностью управляются ОС (рис. 3.14). Так как ОС управляет работой всех периферийных устройств, то оно осуществляет и обработку всех прерываний. Благодаря ОС и тому, что ОС берет на себя функции управления периферийными устройствами, широко используются прикладные программы.
Структуры интерфейсов, периферийных устройств различных персональных компьютеров, даже выполненных на базе одного и того же микропроцессора, различаются в зависимости от модели персонального компьютера. Поэтому, когда среди прикладных программ имеется программа, непосредственно приводящая в действие периферийное устройство, ее можно ис-
пользовать только в данном персональном компьютере. В отличие от этого когда периферийные устройства приводятся в действие с помощью ОС, то, поскольку в ней содержатся все элементы, требуемые для обеспечения работы интерфейсов периферийных устройств, эту ОС можно использовать в любом персональном компьютере, работающем с данной ОС. В настоящее время широко используются следующие операционные системы:
СР/М (разработка фирмы Digital Research)
MS-DOS (разработка фирмы Microsoft)
UCSD p-system (разработка Калифорнийского университета г Сан-Диего).
Разумеется, это не означает, что ОС, разработанную для какого-нибудь персонального компьютера, можно без изменений использовать в другом персональном компьютере. Части ОС, зависящие от интерфейсов периферийных устройств, должны быть переписаны. Этот процесс называется переносом ОС.
В настоящее время широкое распространение получила система UNIX, разработанная фирмой Bell Laboratories и обладающая большими возможностями.
Системный и пользовательский режимы
Запуск компьютера означает запуск ОС, которая в процессе его работы постоянно хранится в памяти. В той же памяти хранятся также прикладные программы. ОС инициирует прикладную программу, причем в том месте прикладной программы, где используется периферийное устройство, управление передается ОС, то же происходит и при возникновении прерывания от периферийного устройства. По окончании работы операционной системы возобновляется функционирование прикладной программы. Для обеспечения такой последовательности работы вычислительной системы требуются средства, предотвращающие выход из строя ОС вследствие ошибок прикладной программы. С этой целью предусмотрено разделение на два типа работы процессора: системный режим и пользовательский режим. Другими словами, процессор работает в двух режимах: ОС функционирует в системном режиме, а прикладная программа — в пользовательском. Обычно один бит регистра состояния используется для определения этих режимов. Основная память разделена на системную область и область пользователя (рис. 3.15), что предотвращает обращение к системной области в пользовательском режиме. В каждой области имеется свой стек — тем самым предотвращается взаимное вмешательство. Для этого предусмотрено 2 указателя стека (для системы и пользователя). Из системного режима можно свободно перейти в пользовательский, однако возможность об-
Рис. 3.15. Разделение основной памяти на системную область и область пользователя.Рис. 3.15. Разделение основной памяти на системную область и область пользователя.ратного перехода отсутствует. Поэтому должны быть средства, обеспечивающие обращение к подпрограммам, имеющимся в ОС, в пользовательском режиме. Одним из примеров такой ситуации является описанное выше использование периферийного устройства. Обычно в операционной системе требование выполнения ее подпрограммы называется системным вызовом. Для реализации системного вызова имеется команда захвата (TRAP). Эту команду можно назвать программным прерыванием, и при ее поступлении выполняется
Рис. 3.15. Разделение основной памяти на системную область и область пользователя.
Рис. 3.15. Разделение основной памяти на системную область и область пользователя.
одна и та же последовательность действий:
содержимое программного счетчика заносится в системный стек;
содержимое регистра состояния заносится в системный стек;
в регистре состояния изменяется разряд режима;
в программный счетчик помещается некоторый адрес.
В следующем командном цикле с переходом в системный режим начинается обработка некоторой подпрограммы. Подпрограмму, хранящуюся в системной области, нельзя выполнить в пользовательском режиме непосредственно с помощью команды вызова (запрет обращения к системной области), однако это можно осуществить, если воспользоваться командой захвата. Отметим, что при системном вызове параметры, передаваемые в подпрограмму, нельзя занести в стек. Поэтому при переходе в системный режим производится замена стека. Если параметров немного, они помещаются в регистр общего назначения.
Обработка специальных прерываний
Помимо обработки с помощью команды захвата в системном режиме может осуществляться обработка по запросу прерывания от периферийного устройства. Кроме того, с помощью ОС удобно осуществлять обработку отказов аппаратуры и обработку очевидных ошибок в системе программного обеспечения. Обработка с помощью ОС путем автоматического перехода в системный режим в ходе выполнения прикладной программы в
пользовательском режиме называется обработкой специального прерывания. Действия при переходе к такой обработке — общие почти для всех ее случаев и аналогичны действиям; производимым по команде захвата. Начальный адрес подпрограммы, выполняющей обработку специального прерывания, называется вектором обработки данной ситуации (например, при обработке прерывания он называется вектором прерывания, а при использовании команды захвата — вектором захвата). В конце подпрограммы, выполняющейся в системном режиме, имеется специальная команда возврата: RTE (возврат из программы обработки специального прерывания).
При обычном вызове подпрограммы по команде возврата RET из стека пользователя извлекается адрес возврата, а по команде RTE адрес возврата извлекается из системного стека.
Примеры
MC68000. Работает в двух режимах — системном и пользовательском. На рис. 3.16, а представлена битовая организация регистра состояния, по значению 13-го разряда S которого определяется режим работы. Процессор выдает 3 сигнала состояния (FC2, FCi, FC0), показывающих, в каком режиме находится в настоящее время цикл шины и осуществляется ли обращение к данным или к программе (табл. 3.7). Применение этих сигналов позволяет разбить память на 4 области. Данный процессор обладает широкими возможностями обработки специальных прерываний (табл. 3.8).
В процессоре предусмотрено 7 уровней приоритета прерываний. Три входных сигнала запроса прерывания IPL2-0 ука-
Таблица 3.7
Сигналы состояния процессора MC68000
fc2
FC.
FCo
Содержание
0
0
0
Не используется
0
0
1
Данные пользователя
0
1
0
Программа пользователя
0
1
1
Не используется
1
0
0
То же
1
0
1
Системные данные
1
1
0
Системная программа
1
1
1
Прием прерывания
т
S
*2
*0
X
N
Z
W
с
15
87
Режим Систем- трасси- ный ровки режим
\/
Код условия
Маска прерыванияМаска прерыванияСистем- х'4-ный МаскаКод условиярежим прерыванияСистем- х'4-ный МаскаКод условиярежим прерывания-> Сегментный режим-> Сегментный режим
Маска прерывания
Маска прерывания
Систем- х'4-
ный МаскаКод условия
режим прерывания
Систем- х'4-
ный МаскаКод условия
режим прерывания
-> Сегментный режим
-> Сегментный режим
в
Рис. 3.16. Структура регистра состояния в процессоре MC68000 (а), в процессоре 8086 (б), в процессоре Z8001 (в).
зывают уровень приоритета прерывания: ООО — отсутствие запроса прерывания; 111 — прерывание с наивысшим уровнем приоритета. Уровень прерывания в процессе обработки хранится в маске прерывания 12—1о регистра состояния. Отметим, что запрос прерывания с уровнем ниже или таким же, который хранится в регистре состояния, не принимается. Принимается только запрос на прерывание с более высоким уровнем приоритета, причем содержимое маски переписывается в соответствии с этим уровнем. В случае приема прерывания передается комбинация сигналов состояния 111 и осуществляются следующие действия. Процессор тремя младшими разрядами адресной шины Аз—Ai передает уровень приоритета принятого прерывания. Периферийное устройство, запросившее прерывание этого уровня, помещает 8-разрядный номер вектора в младшие 8 бит D?—Do шины данных. Процессор их считывает и определяет вектор прерывания. Теоретически можно использовать все 256 возможных векторов прерывания, но практически используется 192 вектора с 64-го по 255-й. Если периферийное устройство не представляет номера вектора, автоматически
Таблица 3.8
Обработка специальных прерываний в процессоре MC68000
Номер
.Ситуация
Условия запуска
1
Сброс
При наличии сигнала сброса
2
Прерывание
При приеме прерывания
3
Ошибка шины
При наличии ошибки шины
4
Захват •
При выполнении команды захвата
5
Непредусмотренная команда
При выполнении непредусмотренной .команды
6
Нарушение привилегии
При выполнении привилегированной команды в пользовательском режиме
7
Деление на 0
При попытке деления на 0
8
За пределами области адресов
При выполнении команды СНК° (за пределами области адресов)
9
Переполнение
При выполнении команды TRAPV (когда возникает переполнение)
10
Ошибка адресации
При обращении к данным длиной, равной одному слову или двойному слову по нечетному адресу
11
Трассировка
При работе в режиме трассировки
*) Команда СНК с операндами A, R осуществляет проверку, находится ли содержимое регистра R на участке памяти с адресами от 0 до А,- Прим, ред.
производится выбор предварительно заданного вектора (автовекторизация). Такой вектор имеется для каждого уровня приоритета.
Команда захвата имеет следующую структуру:
15 3О
Код команды
11-1 Номер вектора
т. е. номер вектора указывается 4 младшими разрядами. Всего можно использовать не более 16 векторов захвата.
Как известно, сброс используется для инициализации процессора. Действия в этом случае немного отличаются от обычной обработки специального прерывания: в программный счетчик и указатель системного стека помещаются начальные значения. Отметим, что в этом случае должно быть два вектора прерывания.
Обработка специального прерывания «ошибка шины» начинается, когда уровень сигнала на выводе процессора BERR
Глава 3Глава 3, 80
Глава 3
Глава 3
(ошибка) становится низким. Этот сигнал генерируется внешней схемой. Его можно использовать для обнаружения любого отказа аппаратуры, но наиболее часто используют для обнаружения аномалий при обращении к памяти. Аномалией считается отсутствие ответного действия по истечении определенного интервала времени после начала цикла считывания- записи шины (например, когда осуществляется обращение к ' несуществующему в памяти адресу). Ниже показано, что сигнал BERR используется также для ввода сигнала сегментной ошибки, когда применяется устройство управления памятью.
Обработка специального прерывания «непредусмотренная команда» выполняется в том случае, когда передается код команды, не предусмотренной в процессоре. В частности, при кодах команд, 4 старших разряда которых равны 1010 и 1111, соответственно (12 младших разрядов могут быть любыми) передаются различные векторы обработки. Эта обработка используется, например, для эмуляции в подпрограмме команды, не предусмотренной в данном процессоре.
Обработка при нарушении привилегии необходима для защиты ОС. Команда, выполнение которой разрешается только в системном режиме, называется привилегированной командой. Если делается попытка выполнения привилегированной команды в пользовательском режиме, начинается обработка данного специального прерывания. К привилегированным командам относятся следующие:
команда изменения содержимого регистра состояния;
• команда возврата RTE из подпрограммы обработки специального прерывания;
команда останова STOP;
команда сброса RESET.
Трассировка (trace) используется для отладки программы. Программа переходит в состояние трассировки, когда 15-й разряд регистра состояния равен 1. В этом состоянии обработка специального прерывания начинается при выполнении каждой команды, при этом имеется возможность идентификации команды, выполняемой в данный момент, и изменения содержимого внутренних регистров.
В процессоре MC68000 можно использовать все 256 векторов обработки специальных прерываний. В табл. 3.9 приводятся адреса этих векторов, для хранения которых, начиная с нулевого адреса, потребуется 1К байт.
8086. В этом процессоре не предусмотрено разделение на системный и пользовательский режимы; имеется только один режим работы. В 3.10 приводятся адреса векторов, используемых для обработки специальных прерываний. Отметим, что при сбросе выполняются команды начиная с адреса FFFFOie.
Таблица 3.9
Адреса векторов обработки специальных прерываний в процессоре MC68000
Номер
Адрес в 16-ричной системе
Ситуация
0
ООО
Сброс (указателя системного стека)
1
004
Сброс (программного счетчика)
2
008
Ошибка шины
3
00С
Ошибка адресации
4
010
Непредусмотренная команда
5
014
Деление на 0
6
018
За пределами области адресов
7
01С
Переполнение
8
020
Нарушение привилегии
9
024
Трассировка
10
028
Непредусмотренная команда (старшие 4 разряда = 1010)
11
02С
Непредусмотренная команда (старшие 4 разряда=1111)
12
030
Зарезервировано для использования в бу-
•
дущем фирмой Motorola
23
05С
.24
060
Возникновение ошибки шины в процессе обработки прерывания
25
064
Автоматический вектор первого уровня прерывания
31
07С
Автоматический вектор седьмого уровня прерывания
32
080
Захват по вектору 0
•
•
47
овс
Захват по вектору 15
ОСО
Зарезервирована для использования в буду
48
щем фирмой Motorola
•
63
0F0
64
100
64-й вектор прерывания
е
255
3FC
255-й вектор прерывания
Таблица 3.10
Адреса векторов обработки специальных прерываний процессора 8086
Номер
Адрес в 16-ричной системе
Ситуация
0
ООО
Деление на 0
1
004
Режим трассировки
2
008
Немаскируемое прерывание
3
ООС
Прерывание по контрольной точке
4
010
Зарезервированы для использования в бу
•
•
дущем фирмой Intel
31
080
Прерывания по вектору пользователя
32
084
255
3FC
Z8001. Работает в двух режимах — системном и пользовательском. На рисунке 3.16, в показана структура регистра состояния этого процессора, по значению 14-го разряда S/N которого определяется режим работы. Процессор выдает сигнал состояния NORMAL/SYSTEM, показывающий, в каком режиме он работает. Кроме этого сигнала имеются еЩе четыре сигнала состояния ST3—ST0, с помощью которых осуществляется раздельное обращение к данным или обращение к программе (возможно также обращение к стеку).
В процессоре используются 3 типа прерываний: немаскируемые, векторные и невекторные. Немаскируемые прерывания принимаются обычным способом. Прием векторых или невекторных прерываний определяется маской прерывания, имеющейся в регистре состояния (11-й и 12-й разряды). После приема запроса прерывания периферийное устройство, запросившее его, помещает в шину данных 16-разрядный код для распознавания типа прерывания и передает их в процессор. В случае векторного прерывания его восемь младших разрядов указывают номер вектора.
В табл. 3.11 приведены 6 типов обработки специальных прерываний, предусмотренных в процессоре Z8001, среди которых захват сегмента служит для обработки сегментной ошибки при обращении к памяти с использованием устройства управлейия памятью (подробно эти вопросы рассмотрены ниже).
Таблица 3.11
Обработка специальных прерываний в процессоре Z8001
Обработка специальных прерываний
Условие запуска
1
Сброс
При появлении сигнала сброса
2
Прерывание
При приеме прерывания
3
Сегментная ошибка
При появлении сигнала сегментной ошибки
4
Захват (системный вызов)
При выполнении команды захвата
5
Непредусмотренная команда
При выполнении непредусмотренной команды
6
Нарушение привилегии
При обращении к привилегированной команде в пользовательском режиме
Таблица 3.12
Адреса векторов обработки специальных прерываний в процессоре Z8001
Номер
Адрес в 16-ричной системе
Ситуация
0
ООО
Зарезервировано для использования в будущем фирмой Zilog
1
008
Непредусмотренная команда
2
010
Нарушение привилегии
3
018
Захват
4
020
Сегментная ошибка
5
028
Немаскируемое прерывание
6
030
Невекторное прерывание
7
038
Прерывание по вектору 0
8
ОЗС
Прерывание по вектору 1
262
434
Прерывание по вектору 255
При обработке специального прерывания выполняются еле1 дующие действия:
Содержимое программного счетчика (смещение и номер сегмента) пересылается в системный стек.
Содержимое регистра состояния заносится в системный стек.
Рис. 3.17. Область состояния программы (ячейки памяти могут быть любыми).*
В регистр состояния заносится идентифицирующий код. В случае прерывания или захвата сегмента этот код передается периферийным устройством или устройством управления памятью, а в случае команды захвата или нарушения привилегированной команды вместо него используется первое слово команды. Считывая идентифицирующий код, можно узнать источник прерывания.
Обновляется содержимое программного счетчика и регистра состояния. Содержимое, которое должно быть в них помещено, хранится в памяти в области состояния программы (табл. 3.12). Как показано на рис. 3.17, начальный адрес этой области содержится в указателе области состояния программы процессора. Следовательно, область состояния программы может находиться в любом месте памяти.
Кроме того, в случае сброса содержимое ПС и PC считывается, начиная с нулевого адреса.
3 J. Средства управления памятью
Преобразование логических адресов в физические
Программный модуль и модуль данных организуются в виде отдельных сегментов (рис. 3.18), поэтому программирование удобно осуществлять с помощью логических адресов, начиная
Основная памятьОсновная памятьФизические адресаФизические адресаПрограммный модуль или модуль данныхПрограммный модуль или модуль данныхЛогические адресаЛогические адресаРис. 3.18. Логические и физические адреса.Рис. 3.18. Логические и физические адреса.
Основная память
Основная память
Физические адреса
Физические адреса
Программный модуль или модуль данных
Программный модуль или модуль данных
Логические адреса
Логические адреса
Рис. 3.18. Логические и физические адреса.
Рис. 3.18. Логические и физические адреса.
с нулевого. Однако при обращении к этим сегментам, расположенным в основной памяти, в память надо заслать физический адрес, устанавливаемый аппаратными средствами. Когда выполняется программа, составленная с помощью логических адресов, процессор в качестве адреса, конечно, выдает логический адрес. Например, если в некотором сегменте выполняется команда JUMP 0, процессор для считывания следующей команды выдает нулевой адрес. Однако в основной памяти нулевого адреса не существует, поэтому необходимо указать началь-
Рис. 3.19. Преобразование логических адресов в физические с помощью усройства управления памятью
ный адрес данного сегмента. Для этой цели между процессором и основной памятью -помещают устройство, преобразующее логические адреса в физические (рис. 3.19), которое называется устройством управления памятью (УУП).
Принцип преобразования логических адресов в физические простой. В УПП помещается базовый адрес каждого сегмента. Логический адрес представлен номером сегмента и смещением, поэтому, используя адрес базы сегмента, соответствующий его номеру, получим
Физический адрес = Базовый адрес сегмента+Смещение.
Другими словами, местоположение сегмента в основной памяти указывается его базовым адресом.
Защита памяти
Важнейшей функцией устройства управления памятью (УПП) является защита памяти. В составляемой программе как правило имеются ошибки. Ошибочный переход к области данных может привести к их уничтожению. Кроме того, чрезвычайно опасна запись данных в область программы. При разрушении области ОС обычно возникает системный отказ. Для предотвращения таких ситуаций необходима защита памяти. Для ее осуществления кроме базового адреса сегмента указываются размер и атрибут сегмента.
В этом случае ситуация, когда величина смещения превышает размер сегмента, считается нарушением из-за возможности проникновения в область соседнего сегмента.
Атрибуты сегментов могут быть самыми разными; из них широко используются следующие:
азделение на системную область и область пользователя;
Сегментная ошибкаСегментная ошибкаббРис. 3.20. Обнаружение сегментной ошибки с помощью устройства управления памятью.Рис. 3.20. Обнаружение сегментной ошибки с помощью устройства управления памятью.
Сегментная ошибка
Сегментная ошибка
б
б
Рис. 3.20. Обнаружение сегментной ошибки с помощью устройства управления памятью.
Рис. 3.20. Обнаружение сегментной ошибки с помощью устройства управления памятью.
«— сопряжение процессора с устройством управления памятью; б — обнаружение сегментной ошибки.
разделение на область программ и область данных;
в случае работы с областью программы разделение на области, допускающие только ее выполнение или также и считывание;
в случае работы с областью данных разделение на области, допускающие только считывание данных или также и запись.,
В табл. 3.13 приведен пример определения атрибута сегмента.
Процессор в каждом цикле шины вырабатывает серию сигналов состояния и управляющий сигнал, показывающий, явля-
Таблица 3.13
Пример определения атрибута сегмента
Режим
Содержимое
Атрибут
Код атрибута
Система
Программа
Только выполнение
Допускается считывание
ООО 001
Данные
Только считывание
Допускается запись
010 011
Пользователь
Программа
Только выполнение
Допускается считывание
100
101
Данные
Только считывание
Допускается запись
110
111
ется ли данный цикл циклом считывания или записи. УУП при каждом обращении памяти сравнивает атрибуты сегментов с этими сигналами (рис. 3.20). Если в размере сегмента или в его атрибуте обнаруживается ошибка, УУП выдает в процессор сигнал сегментной ошибки, для приема которого в процессоре предусмотрен входной вывод. После приема сигнала ошибки процессор приостанавливает выполнение команды и приступает к обработке специального прерывания. Сегментная ошибка означает, что в программе имеется ошибка. После приостановки программы индицируется команда, в которой имеются ошибка, адрес, содержание ошибки.
Регистры — дескрипторы сегментов
В УУП имеются регистры хранения базового адреса, размера и атрибута сегмента. Они называются регистрами — дескрипторами сегментов. Число этих регистров определяется числом используемых сегментов. Существуют два способа выбора регистров. На рис. 3.21, а поясняется способ выбора регистра, по которому адресом служит номер сегмента. При этом, если номер сегмента является п-разрядным, необходимо использовать 2П регистров. С помощью рис. 3.21,6 поясняется метод работы ассоциативной памяти. В этом случае в памяти хранятся номера сегментов и совпадение обнаруживается путем сравнения
Номер сегмента
Номер сегмента
Рис. 3.21. Способы выбора регистров — дескрипторов сегментов
а — способ, при котором номер сегмента используется в качестве адреса: б — способ, при котором номер сегмента также помещается в регистр и с помощью схемы сравнения обнаруживается совпадение его с входными данными (принцип ассоциативной памяти).
в соответствующей схеме вводимого номера с хранящимся номером сегмента. Схемы сравнения имеются во всех регистрах; таким образом, сравнение осуществляется параллельно. Число регистров может быть меньше 2П.
Примеры
MC68000. Выдает 3 сигнала FC2-o состояния и сигнал управления считыванием-записью R/W. По этим сигналам распознаются все атрибуты сегментов, представленные в табл. 3.13. Для приема сигнала ошибки предусмотрен вывод, называемый BERR (ошибка шины). По этому сигналу начинается обработка* прерывания. Для управления памятью процессора MC68000 используется устройство МС68451. На рис. 3.22 пом*ещена схема его соединения с процессором. Данное УУП содержит 32 регистра — дескриптора сегментов. В MC68000 используется способ линейной адресации, поэтому непосредственно указывается
Рис. 3.22. Сопряжение процессора MC68000 с устройством управления памятью МС68451.
область сегмента, без использования номера сегмента. Для выбора регистра используется принцип ассоциативной памяти. В каждом регистре — дескрипторе сегмента (рис. 3.23) имеются 16-разрядные поля записи базы логического адреса (БЛА), маски логического адреса (МЛА), базы физического адреса (БФА), 8-разрядное поле записи атрибута и др. Из 24 бит логического адреса (ЛА) младшие 8 бит непосредственно используются в качестве физического адреса (ФА). Старшие 16 бит формируются в УУП. Для указания области определенного сегмента используется база логического адреса (БЛА) и маска логического адреса (МЛА). БЛА показывает начало области сегмента, а конец области определяется по МЛА. Например, если
БЛА: 11001000 00000000
МЛА: 11111100 00000000, то
начало области: 1100100000000000
конец области: 1100101111111111
Так как в этом случае старшие 6 бит МЛА равны 1, то область указывается шестью старшими битами БЛА. Если бы старшие 6 бит логического адреса (ЛА) были равны 110010, то также указывался бы данный сегмент. Для распознавания, содержится ли выданный процессором логический адрес в данной области, следует сравнить логическое произведение БЛА и МЛА с логическим произведением ЛА и МЛА. На рис. 3.24, а приводится подобная схема сравнения (отметим, что т^кая схема имеется в каждом регистре — дескрипторе сегмента).
База логического Маска логи- База физи-Дт/гие
адреса ческого адреса ческого адреса Атрибут
15 |БЛА’ 0 15 ,МЛА’ 0 15 (БФА| 0 7О^"’
Рис 3.23. Регистры — дескрипторы сегментов устройства управления памятью \AC6845l.
Рис. 3.24. Работа устройства управления памятью MC6845L
а — логика обнаружения совпадения сегмента (i-«-номер бита); б — преобразование логического адреса в физический; ЛА — логический адрес; МЛА —• маска логического адреса; БЛА — база логического адреса; ФА — физический адрес.
Размер сегмента определяется маской логического адреса. Так, если старшие к бит МЛА равны I. то
Размер= 224~к, к= 1, 2, ... , 16.
При к= 16 размер сегмента равен 256 байт. Можно адресовать до 64К сегментов с таким размером. При к = 4 можно адресовать 16 сегментов размером 1 Мбайт. Кроме того, допускает-
Номер регистра 1$
База иег мента
0
Размер
Атрибут
7
0
7
0
0
1
2
63
Рис. 3.25. Регистры — дескрипторы сегментов устройства управления памятью* Z8010.
ся одновременное использование сегментов разных размеров. При линейной сегментации (табл. 3.2) 4-Мбайт сегментов может быть 3, а 64К-байт — 64.
На рис. 3.24, б поясняется принцип преобразования логических адресов в физические, согласно которому при формировании ФЛ а разрядах МЛА, равных единице, используется БЛА, а в разрядах, равных нулю, — ЛА. Это преобразование можно выполнить с помощью простой логической схемы, поэтому сумматор не требуется. В каждом регистре имеется такая схема преобразования, которая выбирает соответствующую сегментную область.
Z800L В качестве сигналов состояния выдает сигналы NORMAL/SYSTEM и S3-o, а для управления считыванием-записью— сигнал READ/WRITE. С помощью этих сигналов распознаются атрибуты. Для приема сигнала сегментной ошибки используется вывод SEGT (захват сегмента).
Для управления памятью процессора Z8001 используется устройство Z8010, в котором содержатся 64 регистра — дескриптора сегментов. Каждый регистр (рис. 3.25) имеет 16-раз- рядное поле записи базового адреса сегмента и 8-разрядные поля записи размера и атрибута сегмента. Семиразрядный номер сегмента используется в качестве адреса для выбора регистра. Параллельное подключение двух таких устройств позволяет использовать 128 сегментов. В этом случае по самому старшему биту SN6 в номере сегмента производится выбор одного из устройств.
Преобразование логических адресов в физические осуществляется по способу, показанному на рис. 3.26. Физический адрес содержит 24 бит, из которых 8 младших, показывающих величину смещения, те же, что и в логическом адресе. Следовательно, базовый адрес сегмента — число, кратное 256, и размер
Логический адрес 60 158 7О
Физический адрес
Рис. 3.26. Преобразование логических адресов в физические с помощью устройства управления памятью Z8010.
сегмента также кратен 256. В этом устройстве кроме сигнала ошибки SEGT, передаваемого в процессор, используется сигнал запрета SUP (блокировка), передаваемый в основную память. Он предназначен для предотвращения неправильных записей в основную память.
3.8. Структура шины
и время выполнения команды
Структура шины
На рис. 3.27 представлены структуры шин 16-разрядных процессоров. В процессоре 8086 используются максимальный и минимальный режимы работы шины, которые указываются сигналом, подаваемым на вход MN/MX. На рисунке выбран минимальный режим.
MC68000
Z8001
в
Рис. 3.2 7. Структуры шин 16-разрядных процессоров 8086 (а), МС6800 (б) и Z8001 (в).
Тактовый генератор 8224 А и два 8-разрядных регистра-фиксатора используются в качестве вспомогательных кристаллов. Управляющими сигналами шины являются M/IO, RD, WR. Сигнал подтверждения окончания цикла шины READY подается на вход устройства 8224 А. Сигналы ВНЕ и Ао указывают, какой из байтов (старший или младший) передается в случае побайтной передачи данных. HOLD и HLDA — соответственно сигнал запроса на право пользования шиной и сигнал разрешения.
В процессоре MC68000 в качестве управляющих используются сигналы AS, R/W, UDS, LDS. Сигналы AS и R/W соответственно показывают, выдан ли исполнительный адрес в адресную шину (в ходе выполнения цикла шины) и является ли данный цикл циклом считывания или записи. UDS и LDS — стробирующие сигналы, первый из которых используется для передачи старшего байта, а второй — для передачи младшего байта. DTACK — сигнал подтверждения окончания цикла шины. VMA, Е, VPA — сигналы управления, используемые для связи с интерфейсами периферийных устройств процессора 6800. BR, BG, BGACK — соответственно сигналы запроса на право пользования шиной, разрешения и подтверждения разрешения (показывающий, что шина задействована). На рис.
3.27 показано также подключение к процессору шифратора уровня приоритета SN74LS148. С его помощью можно организовать прерывания с 7-уровневым приоритетом. Поэтому после дешифрации сигналов состояния FC2--0 должен генерироваться сигнал подтверждения прерывания INTA.
В процессоре Z8001 в качестве управляющих используются сигналы DS? MREQ, READ/WRITE,. BYTE/WORD. DS — стробирующий сигнал. Сигнал MREQ указывает, производится ли в данном цикле шины обращение к памяти или обращение к порту ввода-вывода. Режимы считывания-записи определяются сигналом READ/WRITE. Сигнал BYTE/WORD показывает, в каких единицах производится передача данных (в байтах или словах). AS — стробирующий сигнал адреса, используемый для разделения данных и адресов (выполняет ту же функцию, что и сигнал ALE в процессоре 8086). BUSREQ и BUSACK — соответственно сигналы запроса на право пользования шиной и разрешения.
Время выполнения команды
16-разрядные процессоры обладают большой скоростью выполнения команд. Кроме того, в разрабатываемых процессорах одного типа тактовая частота постепенно увеличивалась. В табл. 3.14 приведено время выполнения команд в различных процессорах. Из таблицы видно, что в продолжительность выполнения
Таблица 3.14
Время выполнения команд 16-разрядными процессорами (в тактах)
Процессор
MC68000
8086
Z8001
Тактовая частота, МГц
8, 10, 12,5
5, 8, 10
4, 6, 10
Минимальный цикл шины
4
4
3
Сложение (между регистрами)
4
3
4
Сложение (память, регистр**регистр)
8
14
7
ф регистровая косвенная адреса- * ция
12
18
ф относительная адресация по
базе
ф индексная адресация по базе
14
21
—
Умножение (между регистрами)
70
144
70
Деление (между регистрами)
158
177
107
команды процессором 8086 не входит время ее вызова. В этом процессоре имеется 6-байт буфер предварительного считывания команд, поэтому в те интервалы времени, когда шина не используется, процессор осуществляет предварительное считывание команд, т. е. в таблице указано значение времени выполнения команды, когда в буфере уже имеется следующая выполняемая команда.
В процессоре MC68000 также осуществляется предварительное считывание команды длиной одно слово, поэтому в среднем выполнение команды продолжается в интервале времени короче указанного в таблице. Обычно довольно трудно сравнивать производительности процессов с различной архитектурой. Однако приблизительную оценку производительности всегда можно дать. По имеющимся данным, производительность описанных 16-разрядных процессоров довольно велика и достигает 20—50% производительности 32-разрядного супер- мини-компьютера VAX 11/780. Если учесть незначительную стоимость 16-разрядных процессоров, можно лишь удивляться их возможностям. Можно с полной уверенностью сказать, что благодаря ’6-разрядным процессорам открываются новые области применения вычислительной техники. '
4
16-разрядные процессоры нового поколения
Благодаря разработке 16-разрядных процессоров MC68000, 8086, Z8001 микропроцессорная техника в основном достигла уровня, необходимого для построения компьютера массового спроса. 16-разрядные процессоры нового поколения (такие, как МС68010, 80286, Z8003) обладают более широкими возможностями, чем 16-разрядные процессоры 1-го поколения. Архитектура этих моделей в основном одинакова, и уделяется внимание взаимозаменяемости их программного обеспечения. Для расширения возможностей 16-разрядных процессоров используется поддержка средствами виртуальной памяти. Предпосылкой к реализации виртуальной памяти служит применение УУП. Процессоры МС68010 и Z8003 дополняются отдельными кристаллами УУП. Кристалл процессора 80286 содержит встроенное УУП и является более быстродействующим устройством, чем процессор 8086.
Поддержка средствами виртуальной памяти
Что такое виртуальная память!
Применение УУП позволяет различать логические и физические адреса и упрощает составление программ. При выполнении программы, однако, предполагается, что все сегменты содержатся в основной памяти, так как обращение к не существующим в основной памяти сегментам невозможно. Следовательно, общая емкость памяти сегментов ограничивается емкостью основной памяти, т. е. аппаратными средствами. Однако было бы удобнее составлять программу, не учитывая емкость основной памяти. В самом деле, использование 24-разряд-
пых адресов предусматривает возможность обращения к 16-Мбайт адресному пространству.
В микрокомпьютерах кроме основной памяти используется также внешняя память. В качестве внешней памяти широко применяются гибкие диски и жесткие диски винчестерского типа. Память винчестерских дисков в настоящее время обладает довольно большой емкостью, и диски емкостью несколько десятков мегабайт уже вполне доступны. Функции же основной и внешней памяти одинаковы. Различие между ними состоит только в том, что содержимое внешней памяти каждый раз при обработке должно пересылаться в основную память и, кроме того, время доступа к ней больше. Тем не менее стоимость одного бита такой памяти гораздо меньше стоимости бита основной полупроводниковой памяти.
Виртуальная память — это способ организации основной памяти большой емкости с помощью внешней памяти. Она позво- ляет^при составлении программы распоряжаться всем пространством адресов, зарезервированных в процессоре. Такие адреса называются виртуальными. При выполнении программы УУП преобразует виртуальные адреса в физические. Обычно сегментов, к которым в данной части программы осуществляется обращение, сравнительно немного, причем в основную память помещаются только необходимые в данное время сегменты. Поэтому при ссылке на несуществующие сегменты выполнение программы приостанавливается и производится замена содержимого основной памяти. При этом сегменты, которые не предполагается использовать, пересылают во внешнюю память, а на их место помещают требуемые сегменты. После этого возобновляется выполнение приостановленной программы. Поэтому чем меньше частота замен содержимого основной памяти, тем выше средняя скорость выполнения программы. Функция автоматической замены содержимого памяти должна выполняться, конечно, операционной системой. В случае реализации виртуальной памяти функции УУП должны быть дополнены. Обычно виртуальный адрес обозначается номером сегмента и смещением. При такой организации в основной памяти находится только часть сегментов, поэтому, для того чтобы узнать, хранится ли данный сегмент в основной памяти или нет, требуется дополнительная информация. С этой целью при использовании виртуальной памяти (рис. 4.1) дескриптор сегмента дополняется полем управляющих данных — битом Р, показывающим, что сегмент содержится в основной памяти Когда процессор обращается к памяти, устройство управления памятью исследует содержимое дескриптора данного сегмента, и, если Р=1, оно осуществляет преобразование виртуального адреса в физический, в противном случае (если Р =
Управляющая
Базовый адресРа «мер Атрибут информация
Рис. 4.1. Дескриптор сегмента виртуальной памяти.
= 0) передает в процессор сигнал отсутствия сегмента. Эта ситуация называется ошибкой памяти (memory fault). При осуществлении записи в данный сегмент бит записи W равен 1. При пересылке новых сегментов из внешней в основную память необходимо использовать пространство, освободившееся после удаления старых сегментов. Содержимое сегмента, бит записи которого ^равен 1, можно не пересылать во внешнюю память. Его следует стереть, а сам сегмент использовать для записи содержимого нового сегмента.
Проблема, возникающая при пересылке новых сегментов в основную память, заключается в том, какой из старых сегментов следует удалить. Желательно, конечно, удалить сегменты, которые не понадобятся в ближайшем будущем, но оценить реально их необходимость довольно трудно. Разработаны различные способы отбора сегментов. Наиболее широко используется метод отбора сегментов, число обращений к которым на текущий момент наименьшее. Он носит название алгоритма замещения наименее используемого в прошлом сегмента. По этому алгоритму требуется регистрация числа обращений к каждому сегменту. Было бы удобно иметь в поле управляющих данных участок длиной, достаточной для регистрации этого числа, и схему селекции участков с наименьшим содержимым. В действительности в поле имеется только один бит А, которому при обращении присваивается значение 1. В ОС хранится справочная таблица. ОС в фиксированные интервалы времени исследует значение бита обращения А, и если он равен 1, производит приращение содержимого справочной таблицы и, кроме того, осуществляет сброс бита А. Таким образом, с помощью справочной таблицы ОС отбирает сегменты, подлежащие удалению.
Замена содержимого памяти со страничной организацией
Когда осуществляется замена содержимого памяти, различие в размерах сегментов создает дополнительные трудности. Например, отобранный сегмент, размеры которого не совпадают
w/////////////////^w/////////////////^
w/////////////////^
w/////////////////^
Рис. 4.2. Образование неиспользуемых областей при замене содержимого памяти.
а — начальное расположение сегментов; б— расположение сегментов после нескольких замен.
Первый сегментОсновная память
Одна страница
Рис. 4.3. Управление памятью со страничной организацией. (В основной памяти хранятся не все страницы сегментов.)
с размерами сегмента, хранящегося в основной памяти, должен быть возвращен во внешнюю память. Если все же такой сегмент поместить в основную память, образуются узкие неиспользуемые зоны (рис. 4.2). Для повышения коэффициента использования основной памяти необходимо выполнить перераз- мещение всех сегментов.
Для упрощения замены содержимого памяти следует заменять области одинакового размера. С этой целью предлагается система управления страничной организацией памяти, согласно которой основная память разбивается на страницы объемом, например, 2К байт. Сегменты также делятся на такие страницы, причем в основную память помещаются только те из них, которые необходимы для выполнения программы (рис. 4.3). При обращении к некоторой странице некоторого сегмента, не существующей в основной памяти, генерируется сигнал ее отсутствия. Этот сигнал также называется ошибкой памяти, но, когда хотят подчеркнуть страничную организацию памяти, ее называют страничной ошибкой.
Кроме простоты замены содержимого страничной памяти другое преимущество такого подхода заключается в возможности хранения в ней множества сегментов. Кроме того, поскольку программирование осуществляется только с учетом сегментов, можно не принимать во внимание, используется ли страничная организация, сколько байт занимает страница и др. Однако для преобразования виртуальных адресов в физические требуются дескрипторы страниц, что приводит к увеличению масштабов устройства управления памятью. Поэтому широко используется метод хранения в УУП только наиболее часто используемых страниц.
Функции процессоров, необходимые для реализации виртуальной памяти
Из изложенного выше видно, что принцип организации виртуальной памяти довольно прост. Однако в действительности, чтобы реализовать виртуальную память, процессор необходимо дополнить новыми функциями.
На рис. 4.4 показан командный цикл процессора, который включает 3 цикла шины. В первом цикле шины производится считывание команды, во втором — считывание данных, а в третьем — запись данных В этих циклах возможно возникновение ошибки памяти. Если ошибка все же возникла, начинается обработка специального прерывания и с помощью ОС осуществляется замена содержимого основной памяти. Задача заключается в ликвидации последствий ошибки, так как выполнение команды приостанавливается на промежуточной ста-
Командный циклaJ
Считывание команды
Считывание данных
Выполнение команды
Запись данных
1
I
1
Первый
Второй
Iх
Цикл
1 Т -1
Третий
1
цикл шины
цик/} шины
простоя шины
цикл шины
Рис. 4 4.
Пример командного цикла.
дии, и из этого состояния необходимо осуществить повторный запуск программы. Когда виртуальная память отсутствует и осуществляется управление реальной памятью, то после начала выполнения команды на промежуточной стадии может возникнуть также сегментная ошибка. Однако это означает наличие ошибки в программе, поэтому после ее возникновения можно не продолжать выполнение программы. Когда из-за сегментной ошибки начинается обработка специального прерывания, ОС только выявляет, где и какая ошибка возникла. Причем результаты выполнения команд, завершенных к этому моменту, можно сохранить. В отличие от этого при возникновении ошибки, связанной с необходимостью обращения к виртуальной памяти, ОС после замены содержимого памяти должна продолжить выполнение программы. При возникновении прерывания выполнение программы также приостанавливается. Однако в этом случае команда, выполняемая в момент возникновения прерывания, выполняется до конца. Затем осуществляется переход к подпрограмме обработки прерывания и, начиная со следующей команды, вся информация, необходимая для повторного запуска программы, помещается в стек (ПС, PC и другие регистры общего назначения). Таким образом, повторный запуск программы может быть осуществлен без труда. Что касается ошибки памяти, то выполнение команды приостанавливается на промежуточной стадии, поэтому обычно повторный запуск программы трудноосуществим.
Для повторного запуска программы используются метод перезапуска и метод продолжения.
Первый метод предусматривает повторное выполнение (с начала) команды, прерванной на промежуточной стадии. Второй метод предусматривает выполнение команды со стадии, на которой она была приостановлена. Обратимся к рис. 4.5, а, на котором команда организуется в три цикла шины (1, 2, 3), и предположим, что во втором цикле возникла ошибка памяти. Тогда по методу перезапуска после исправления ошибки осуществляется повторное выполнение команды, начиная с первого цикла шины (считывания команды) (рис. 4.5,6), а по
методу продолжения работа возобновляется с конца второго цикла (рис. 4.5,в).
В первом случае содержимое ПС, PC и других регистров общего назначения необходимо восстановить, т. е. оно должно быть таким же, каким было до выполнения команды. В начале обработки специального прерывания содержимое этих регистров помещается в стек, однако к этому моменту в содержимом регистров уже имеются изменения. Поэтому содержимое ПС обычно указывается в следующей команде, и восстановить его в первоначальное состояние довольно легко. Сложность заключается в распознавании того, изменилось ли содержимое регистров общего назначения, и в его восстановлении в случае изменения. Например, если при выполнении команды MOVE— (АО),— (А1), для которой используется предавтодекрементная адресация, в цикле считывания данных возникла ошибка памяти, содержимое регистра АО успело измениться, а содержимое А1 осталось прежним. Поэтому восстановить содержимое регистра АО довольно сложно. В принципе самым простым выходом из этого положения является хранение копий содержимого всех регистров в дополнительной группе регистров, но такой способ требует слишком большого числа транзисторов на кристалле процессора.
Если воспользоваться методом продолжения, то необходимо сохранить не только содержимое ПС, ВС, регистров общего назначения, но и содержимое всех регистров, имеющихся в операционном и управляющем блоках (внутренние состояния, нефиксируемые извне). Эта необходимость диктуется тем, что. внутреннее состояние всех регистров обычно изменяется в хо-
Рис. 4.5. Исправление ошибки памяти.
а — ряд циклов шины в команде. 6 — метод перезапуска; в — метод продолжения.
де выполнения программы обработки специального прерывания. Однако для его сохранения также требуется большой объем памяти.
Примеры
МС68010. Используется метод продолжения. Для приема сигнала ошибки памяти имеется вывод BERR (ошибка шины). В начале обработки специального прерывания "ошибка шины” процессор также заносит в стек содержимое регистров, определяющих внутреннее состояние операционного и управляющего блоков. Рабочая область стека может занимать 58 байт или 29 слов (рис. 4.6,а). После окончания обработки в системном режиме по команде возврата RTE автоматически восстанавливается внутреннее состояние процессора и производится перезапуск команды с промежуточной стадии. На рис. 4.6,6 показано содержимое стека в случае обработки обычного специального прерывания. Хранящиеся в 4-м слове формат и номер вектора служат для различения двух типов обработки прерывания.
Используется метод перезапуска. Данный процессор содержит устройство управления сегментированной памятью, причем на одном кристалле процессора имеются все средства управления сегментированной виртуальной памятью. Как и в процессоре 8086, число одновременно используемых сегментов равно 4, номера этих сегментов помещаются в регистры CS, DS, SS, ES. В момент занесения номеров сегментов в эти регистры можно обнаружить ошибку памяти. Так как ошибка обнаруживается до выполнения команды, то перезапуск упрощается. При возврате из обработки специального прерывания адрес команды, в которой возникла ошибка памяти, снова помещается в программный счетчик и автоматически начинается повторное выполнение команды.
Z8003. Используется метод перезапуска. Этот процессор проектировался в расчете на применение устройства управления страничной памятью Z8015. На рис. 4.7 показана схема их соединения. Для приема сигнала страничной ошибки имеется вывод ABORT (преждевременное прекращение выполнения программы). По этому сигналу начинается обработка специального прерывания, затем в зависимости от типа команды перед ее повторным выполнением необходимо восстановить с помощью ОС содержимое РОН, которое в них было непосредственно до прерывания. Это осуществляется с помощью регистра состояния, который имеется в устройстве Z8015 (рис. 4.8). Примером такой команды является LDIR (загрузить, дать приращение и повторить).
0
Регистр состояния (PC)
2
Старшие разряды программного счетчика (ПС)
4
Младшие разряды ПС
8
Формат, номер вектора
10
Специальное слово состояния
12
Старшие разряды адреса ошибки
14
Младшие разряды адреса ошибки
16
Не используется
18
Выходной регистр данных
20
Не используется
22
Входной регистр данных
24
Не используется
26
Предварительно считанная команда
28
Другие внутрипроцессорные состояния
56
Регистр состояния (PC)
а
Регистр состояния (PC)
Старшие разряды ПС
Младшие разряды ПС
Формат, номер вектора
b
Рис. 4.6. Содержимое стека при обработке специального прерывания процессором МС68010.
а ~ при возникновении ошибки шины; б — в случае обработки других специальных прерываний.
В этой команде указываются регистровая пара и одиночный .регистр. В пару входят регистры передаваемого и принимаемого адресов, а одиночный регистр используется для счета чио
Рис. 4.7. Схема сопряжения модулей Z8003 и Z8015.
ла данных. Для выполнения этой команды используются 4 цикла шины (рис. 4.9). В циклах 3, 4 осуществляется только повторение числа данных. Поэтому, если страничная ошибка •возникает в третьем и четвертом циклах, их исправление должен осуществить пользователь. На рис. 4.9 поясняются также способы обнаружения ошибок в цикле шины и порядок их ис-
7
VTR
Тип ошибки
VSN
Номер сегмента, в котором содержится адрес ошибки
VOFF
Старшие разряды смещения адреса ошибки
ISN
Номер сегмента, в котором содержится адрес команды
IOFF
Старшие разряды смещения адреса команды
BSR
О
О
N/S
R/W | ST$
ST2
STi
ST,
VOFF/LOW
Младшие разряды смещения адреса ошибки
IOFF/LOW
Младшие разряды смещения адреса команды
RWCR
Число циклов шины в ходе выполнения команды
Рис. 4.8. Содержимое регистра состояния устройства управления памятью
ЦиклышиныЦиклышиныНачалоНачало112233КонецКонецРис. 4.9. Пример действий, осуществляемых процессором Z8003 при возникновении ошибки памяти (случай, когда выполняется команда LOIR).Рис. 4.9. Пример действий, осуществляемых процессором Z8003 при возникновении ошибки памяти (случай, когда выполняется команда LOIR).Способ обнаруженияДействия4 младших бита регистра состояния равны 1101Не обязательны4 младших бита регистра состояния равны 1100Не обязательныЧетное число циклов шиныСодержимое регистра счетчика 4-1Нечетное число циклов шиныСодержимое регистра передаваемого адреса —2Способ обнаруженияДействия4 младших бита регистра состояния равны 1101Не обязательны4 младших бита регистра состояния равны 1100Не обязательныЧетное число циклов шиныСодержимое регистра счетчика 4-1Нечетное число циклов шиныСодержимое регистра передаваемого адреса —2
Циклышины
Циклышины
Начало
Начало
1
1
2
2
3
3
Конец
Конец
Рис. 4.9. Пример действий, осуществляемых процессором Z8003 при возникновении ошибки памяти (случай, когда выполняется команда LOIR).
Рис. 4.9. Пример действий, осуществляемых процессором Z8003 при возникновении ошибки памяти (случай, когда выполняется команда LOIR).
Способ обнаружения
Действия
4 младших бита регистра состояния равны 1101
Не обязательны
4 младших бита регистра состояния равны 1100
Не обязательны
Четное число циклов шины
Содержимое регистра счетчика 4-1
Нечетное число циклов шины
Содержимое регистра передаваемого адреса —2
Способ обнаружения
Действия
4 младших бита регистра состояния равны 1101
Не обязательны
4 младших бита регистра состояния равны 1100
Не обязательны
Четное число циклов шины
Содержимое регистра счетчика 4-1
Нечетное число циклов шины
Содержимое регистра передаваемого адреса —2
правления. Таким образом, получается довольно сложная программа для обработки страничной ошибки. Отметим, что в устройстве Z8015 имеется таблица преобразования виртуальных адресов в физические, разделенная на 64 страницы.
Мультипрограммный режим
Параллельное выполнение задач
Предположим, что требуется выполнить некоторую прикладную программу. При этом известно, что в памяти хранится несколько независимых программ, одной из которых является прикладная программа, которая будет с настоящего момента выполняться, другие программы — это ОС, библиотечные подпрограммы (например, для вычисления функций sin X, logX, УХ) и др.
При запуске прикладной программы выполняются не только ее команды, но и команды изОСи из библиотечных подпрограмм. С момента начала работы над заданием до ее окончания выполняется последовательность команд и время от времени осуществляется переход от одной программы к другой. Такое выполнение последовательности команд называется процессом и, так как это соответствует выполнению определенной работы, может называться задачей.
Желательно иметь средства, позволяющие одновременно выполнять несколько задач. Допустим, например, что на компьютере требуется выполнить следующие операции:
Последовательно ввести с клавиатуры числа, затем вычислить суммы каждого вводимого числа с предыдущим (т. е. введенным до него числом), и результат воспроизвести на экране дисплея.
Нажатием клавиши В * воспроизвести на экране дисплея значения переменных «час, минута, секунда», показывающих время.
Импульсом тактового генератора С, вырабатывающего каждую секунду импульс, обновлять значения переменных, показывающих текущее время.
е Эти три операции в принципе должны выполняться параллельно и запрограммировать их в виде последовательных действий нельзя. Их следует считать самостоятельными задачами, которые выполняются параллельно, как если, бы имелось три отдельных устройства.
В обычном компьютере имеется только один процессор, поэтому в каждый момент он может выполнять команды только одной задачи. При этом команды другой задачи не выполняются. Однако для выполнения* команд задачи 1 (TJ требуется довольно мало времени сразу после ввода с клавиатуры числа; то же самое верно и для задач 2 и 3 (Т2, Т3). Ввод данных ^клавиатуры, нажатие на клавишу В и сигнал тактового генератора обнаруживаются с помощью прерываний. Большую часть времени процессор ждет прерывания. Таким образом, параллельное выполнение трех задач Ть Т2, Т3 является практически осуществимым.
При использовании периферийных устройств также удобно, когда независимые задачи выполняются параллельно. Примером может служить вывод на принтер сумм вводимых чисел (задача Т4) в дополнение к перечисленным выше. Допустим, что на печать выводятся суммы ста вводимых чисел, тогда задача Т4 инициируется задачей ?! и прекращается по окончании печати (рис. 4.10).
Итак, команды всех задач выполняются с использованием процессора в режиме разделения времени. Выполнение задачи
77Т< IОстановТ< IОстановНачало выполнения программыНачало выполнения программыРис. 4.10. Параллельное выполнение задач.Рис. 4.10. Параллельное выполнение задач.Область второй задачиОбласть второй задачиОбласть первой задачиОбласть первой задачи
7
7
Т< IОстанов
Т< IОстанов
Начало выполнения программы
Начало выполнения программы
Рис. 4.10. Параллельное выполнение задач.
Рис. 4.10. Параллельное выполнение задач.
Область второй задачи
Область второй задачи
Область первой задачи
Область первой задачи
Гп1
\ Пуск
Останов |
Конецвыполненияпрограммы
Рис. 4.11. Распределение памяти между задачами.
может быть приостановлено на любой команде, поэтому необходимо обеспечить ее перезапуск. Каждой задаче отводится отдельная область памяти (рис. 4.11), в том числе и стек для хранения всех данных, используемых в задаче. Кроме того, в памяти предусмотрены ячейки для хранения содержимого ПС, PC и регистров общего назначения (РОН) процессора. Когда выполнение задачи приостанавливается, в них помещаются начальные значения содержимого этих регистров (в частности, если речь идет о ПС, это адрес начальной команды задачи). При возобновлении выполнения задачи содержимое этих я<1е- ек пересылается в ПС, PC и РОН процессора, после чего на-
чинается выполнение задачи. Совокупность этих ячеек называется блоком управления задачей. Обычно помимо содержимого указанных регистров в них может храниться и другая информация.
Переход задачи из одного состояния в другое и планирование выполнения задач
Возможные состояния задачи можно разделить в основном на два типа: пассивное и активное. Активное состояние подразделяется на состояния выполнения, готовности и ожидания. Эти состояния характеризуются следующими свойствами.
Пассивное состояние
Запуск еще не производился или работа уже завершена.
Состояние выполнения (прогона)
Выполняются команды.
Состояние готовности
Возможно выполнение любой команды (в ходе выполнения процессором команд другой задачи).
Состояние ожидания
Ожидается генерация некоторых условий, например возникновение прерывания (до генерации этого условия следующую команду выполнять нельзя).
Для реализации мультипрограммного режима в ОС должны быть предусмотрены программы, выполняющие специальные функции. Одной из них является программа управления задачей, которая управляет переходом задачи из одного состояния в другое. Переход осуществляется по диаграмме, показанной на рис. 4.12. При запуске какой-либо задачи уста-
Рис. 4.12. Изменение состояний задачи.
навливается состояние готовности (с помощью системного вызова СТАРТ). ’
В большинстве задач в этом состоянии ожидается начало выполнения команд. Если в задаче, находящейся в состоянии прогона, происходит обращение к команде, выполнение которой возможно после генерации некоторых условий, выполнение приостанавливается и задача переходит в состояние ожидания (с помощью системного вызова ОЖИДАНИЕ). Когда выполнение команд полностью закончено, задача переходит в пассивное состояние (с помощью системного вызова ОКОНЧАНИЕ). В обоих случаях выбирается одна из задач, находящихся в состоянии готовности, и переводится в состояние выполнения. Выбор задачи — это уже проблема планирования выполнения задач, решение которой зависит от стратегии разработчика программы управления задачей, поэтому существуют различные способы ее решения. Широко используется метод, по которому первой выбирается задача, находившаяся в состоянии выполнения непосредственно перед последней выполненной задачей. Так, если генерируется ожидаемое задачей условие, эта задача переходит в состояние готовности (это означает, что в программу управления задачей необходимо сообщать обо всех генерируемых условиях).
Замена задачи в состоянии выполнения называется переключением задач. В этом случае в блок управления выполняемой задачей необходимо переслать содержимое ПС, PC и РОН, а из блока управления новой задачей считать содержимое этих регистров. Однако для реализации этих действий программными средствами требуется много времени. Кроме того, из приведенного выше примера ясно, что для управления задачей требуются различные системные вызовы, а на их выполнение также уходит много времени, которое является дополнительным по отношению ко времени, требуемому для выполнения основной работы. Таким образом, реализация мультипрограммного режима сопровождается перерасходом времени. В целях сокра щения времени основные операции желательно выполнять автоматически аппаратными средствами.
Взаимные исключения и семафор
Каждая задача обычно не является полностью независимой, но выполнение задачи продолжается и при взаимодействии задач. Примером такого взаимодействия является обращение к общим переменным. Если вернуться к разд. 4.2.1, общими переменными в задачах Т2 и Т3 являются час, минута и секунда. Однако, если в момент обращения задачи к этим переменным выполнение задачи приостанавливается, результат такой операции может оказаться ошибочным.
В качестве примера рассмотрим случай, когда нажатием клавиши В задача Т2 воспроизводит на дисплее время, и допустим, что значения переменных, указывающих час, минуты и секунды, равны0
06:07:59
Сразу после передачи задачей Т2 на дисплей информации «59 секунд» генерируется прерывание от тактового генератора С. При этом начинает выполняться задача Т3 и значение времени обновляется:
06:08: 00
После этого снова начинает выполняться задача Т2 и на дисплей передаются значения «минуты =08, часы =06». В итоге на экране индицируется
06: 08: 59
Рассмотрим другой случай обновления значений времени задачей Т3 по сигналу от тактового генератора С. Если сразу после вычисления количества секунд 59+1=60 и замены его на 00 генерируется прерывание от клавиши В, время, индицируемое дисплеем, равно
06 :07:00
Таким образом, до окончания обращения одной задачи к общим переменным следует исключить возможность обращения к ним другой задачи. Эта ситуация называется принципом взаимного исключения, а область программы, в которой должен соблюдаться этот принцип, — критической областью.
Наиболее простым способом реализации принципа взаимного исключения является запрещение прерываний непосредственно перед входом в критическую область и разрешение его сразу после выхода из этой области. Однако по этому способу прерывание в критической области запрещается в течение всего времени выполнения, поэтому уменьшается скорость ответа на прерывание (общие переменные обычно занимают объем, равный нескольким Кбайтам).
Для сокращения времени запрета прерываний применяется специальный флаг, называемый семафором, и для каждого взаимного исключения используется свой семафор. В семафоре имеются флаг и очередь ожидания задачи (мы рассматриваем здесь семафор логического типа; более общим типом является семафор с применением целочисленных переменных вместо
ь Вывод на дисплей осуществляется в порядке: секунды, минуты, часы.— Прим. ред.
Рис. 4.13. Семафор как общая переменная.Рис. 4.13. Семафор как общая переменная.флага). Итак, перед входом задачи в критическую область опрашивается флаг семафора, и если его значение равно О, вход задачи в область запрещается. Если же значение флага равно 1, задача входит в критическую область. При выходе из критической области флагу возвращается нулевое
Рис. 4.13. Семафор как общая переменная.
Рис. 4.13. Семафор как общая переменная.
значение. Когда значение флага равно 1, выполнение команд приостанавливается и задача входит в очередь ожидания семафора (т. е. переходит из состояния выполнения в состояние ожидания). В этом случае снова начинают выполняться команды одной из задач, находя
щихся в состоянии готовности.
Семафор также является общей переменной, и при обращении к нему необходимо соблюдать принцип взаимного исключения (рис. 4.13). Это можно реализовать методом запрета прерываний, так как время обращения к семафору мало и имеет определенное значение. Кроме того, если имеется команда TAS (проверка и установка), проверку и установку флага следует осуществлять с ее помощью. Так как она представляет собой единую команду, проверка и установка флага осуществляются одновременно, т. е. исключается их разделение прерыванием. При выполнении команды TAS всегда осуществляется установка флага. Первоначальное значение флага 0 или 1 определяется битом регистра состояния.
Работу семафора можно запрограммировать следующим образом:
wait (time);
критическая область; signal (time);
где time определяется как семафор.
Функцией wait выполняются проверка и установка флага time, а также перевод задачи в другое состояние, если флаг равен 1. Функцией signal сбрасывается флаг time.
Синхронизация и связь между задачами
Иногда при выполнении команд нескольких задач между ними требуется установить определенную связь. Этот процесс называется синхронизацией. Синхронизацию можно реализо*
вать с помощью семафора. Если обозначить семафор буквой s,
программа принимает вид
Задача Tt
Задача Tj
Команда АОжидание (s);
Сигнал (s);Команда В
Итак, до выполнения команды А задачи Ъ команда В задачи Tj не выполняется.
Для передачи данных из задачи Ti в задачу Tj имеется буфер связи, в котором хранятся эти данные (общие для двух задач переменные). После подтверждения записи данных передающей задачей в буфер связи принимающая задача считывает эти данные. Передающая задача записывает новые данные после того, как подтвердится считывание предыдущих данных принимающей задачей. Это осуществляется синхронизацией с использованием двух семафоров (пустого и полного) (рис. 4.14). Программа при этом принимает вид
Задача TiЗадача Tj
Ожидание (пустой) Передающая программа Сигнал (полный)Ожидание (пустой) Передающая программа Сигнал (полный)Ожидание (полный) Принимающая программа Сигнал (пустой)Ожидание (полный) Принимающая программа Сигнал (пустой)
Ожидание (пустой) Передающая программа Сигнал (полный)
Ожидание (пустой) Передающая программа Сигнал (полный)
Ожидание (полный) Принимающая программа Сигнал (пустой)
Ожидание (полный) Принимающая программа Сигнал (пустой)
Управление виртуальной памятью процессора 80286
Кристалл процессора 80286 имеет встроенное УУП, поэтому функцию управления памятью можно реализовать на самом кристалле, причем это устройство оказывает поддержку виртуальной памяти и мультипрограммного режима.
Структура УУП
На рис. 4.15 показана регистровая структура процессора 80286. По сравнению с процессором 8086 структура регистров CS, DS> SS, ES, предназначенных для управления памятью, расшире-
Рис. 4.14. Связь между задачами с помощью семафоров.
на за счет дополнительной группы битов, используемых в качестве дескрипторов сегментов. Кроме них имеются дополнительные регистры: TR, LDTR, GDTR и IDTR. Заштрихованные части регистров не используются непосредственно в программе. Их содержимое автоматически записывается процессором и используется для управления памятью.
В процессоре 80286. имеются средства управления мультипрограммным режимом работы. Содержимое селектора в регистре задачи (TR) указывает задачу, выполняемую в данный момент. Все пространство виртуальных адресов состоит из локальных адресных пространств, отдельных для каждой задачи, и глобального адресного пространства, общего для всех задач (рис. 4.16, а). Системные программы (ОС и другие) хранятся в глобальном адресном пространстве. Пространство виртуальных адресов каждой задачи занимает объем 1 Гбайт. Как и в процессоре 8086, в данном устройстве осуществляется сегментная адресация.
На рис. 4.16,6 показана форма представления виртуальных адресов. Разделение на глобальное и локальное адресные пространства осуществляется битом TI (индикатор таблицы) селектора сегментов. Адреса в этих пространствах представлены 13-разрядным индексом и 16-разрядным смещением. 13-раз- рядный индекс указывает один сегмент. В обоих пространствах может находиться 8К сегментов с максимальным размером 64К байт. Назначение поля RPL здесь не рассматривается. Физические адреса, выдаваемые процессором во внешние блоки, являются 24-разрядными (т. е. объем основной памяти мо-
1515ОО1515ООSRIPMSWSRIPMSWРегистр-дескриптор сегментаРегистр-дескриптор сегментаCS DS SSESTR LDTR GDTRCS DS SSESTR LDTR GDTRАтрибут Базовый адрес РазмерАтрибут Базовый адрес Размер
15
15
О
О
15
15
О
О
SR
IP
MSW
SR
IP
MSW
Регистр-дескриптор сегмента
Регистр-дескриптор сегмента
CS DS SS
ES
TR LDTR GDTR
CS DS SS
ES
TR LDTR GDTR
Атрибут Базовый адрес Размер
Атрибут Базовый адрес Размер
IDTR
Рис. 4.15. Регистровая структура процессора 80286.
Третья задачаПространство виртуальных адресов объемом 1 ГбайтТретья задачаПространство виртуальных адресов объемом 1 ГбайтЛокальноеадресноепространствоЛокальноеадресноепространствоПервая задачаПространство виртуальных, адресов объемом 1 ГбайтПервая задачаПространство виртуальных, адресов объемом 1 ГбайтВторая задачаПространство виртуальных адресов объемом 1 ГбайтВторая задачаПространство виртуальных адресов объемом 1 Гбайт
Третья задача
Пространство виртуальных адресов объемом 1 Гбайт
Третья задача
Пространство виртуальных адресов объемом 1 Гбайт
Локальноеадресноепространство
Локальноеадресноепространство
Первая задача
Пространство виртуальных, адресов объемом 1 Гбайт
Первая задача
Пространство виртуальных, адресов объемом 1 Гбайт
Вторая задача
Пространство виртуальных адресов объемом 1 Гбайт
Вторая задача
Пространство виртуальных адресов объемом 1 Гбайт
ЛокальноеадресноепространствоЛокальноеадресноепространствоГлобальноеадресноепространствоГлобальноеадресноепространствоЛокальноеадресноепространствоЛокальноеадресноепространство
Локальноеадресноепространство
Локальноеадресноепространство
Глобальноеадресноепространство
Глобальноеадресноепространство
Локальноеадресноепространство
Локальноеадресноепространство
Селектор сегментовСелектор сегментовСмещение сегментаСмещение сегментаИндексTl RPLИндексTl RPL
Селектор сегментов
Селектор сегментов
Смещение сегмента
Смещение сегмента
ИндексTl RPL
ИндексTl RPL
б
Рис. 4.16. Пространство виртуальных адресов процессора 80286.
""Распределение адресного пространства между задачами; б ~ форма представления виртуального адреса.
жет достигать 16 Мбайт). С помощью 24-разрядной базы физического адреса, хранящейся в регистре — дескрипторе сегмента, процессором вычисляется база физического адреса+ +смещение сегмента. Результат этого вычисления выдается в качестве физического адреса. Одновременно на основании атрибута и размера сегмента, хранящихся в этом же регистре, обнаруживаются сегментные ошибки и ошибки памяти (при их возникновении инициируется обработка исключительной ситуации).
Дескрипторы сегментов и их таблицы
Каждый сегмент имеет свой дескриптор. На рис. 4.17 показана форма его представления. Из четырех слов дескриптора одно пока не используется (его использование предполагается в 32-разрядном процессоре 80386). В дескрипторе содержится 24-разрядный базовый адрес, 16 разрядов размера, 3 разряда типа, которые определяют атрибут сегмента. Кроме них имеются биты: Р (хранение в основной памяти), А (обращение), DPL (уровень привилегии дескриптора).
Существуют 4 уровня привилегии сегмента: 0 — высший уровень, 3 — низший. Эти уровни указываются двумя битами DPL.
Упорядоченное расположение дескрипторов сегментов, имеющихся в глобальном адресном пространстве, называется глобальной таблицей дескрипторов (ГТД), а сегментов, расположенных в локальном адресном пространстве,—локальной таблицей дескрипторов (ЛТД). Если число задач равно п, число локальных адресных пространств также равно п и соответственно число ЛТД также равно п (рис. 4.18). ГТД и п ЛТД располагаются в глобальном адресном пространстве. Следует помнить, что сама ЛТД также представляет собой отдельный сегмент и для его описания требуется дескриптор. Дескриптор сегмента ЛТД хранится в ГТД.
ГТД хранится в некоторой области основной памяти (внутри глобального адресного пространства). Ее базовый адрес и
158 7О
Неиспользуемое поле
Р
DPL
1
Тил
А
Старшие разряды базы
Младшие разряды базы
Ра хмер
Рис. 4.17. Форма представления дескриптора сегмента.
гтдгтдлтдпервойзадачилтдпервойзадачиЛТДвторойзадачиЛТДвторойзадачиЛТДтретьейзадачиЛТДтретьейзадачиЛТД п- й задачиЛТД п- й задачи
гтд
гтд
лтдпервойзадачи
лтдпервойзадачи
ЛТДвторойзадачи
ЛТДвторойзадачи
ЛТДтретьейзадачи
ЛТДтретьейзадачи
ЛТД п- й задачи
ЛТД п- й задачи
Рис. 4.18. Таблицы дескрипторов сегментов, расположенные в глобальном адресном пространстве.
размер при запуске системы помещаются в регистр ГТД (РГТД) (рис. 4.15). После этого процессор на основании содержимого РГТД обращается к ГТД.
Способы обращения к основной памяти
Допустим, что процессор выполняет задачу, которой соответствует локальное адресное пространство и ЛТД сегментов, расположенных в нем. Дескрипторы сегментов данной таблицы хранятся в ГТД. При инициировании этой задачи селектор ЛТД, служащий для выбора дескриптора сегмента, автоматически помещается в соответствующую часть регистра ЛТД (РЛТД). Индекс, содержащийся в селекторе, дает смещение относительно базового адреса ГТД (рис. 4.19). Дескриптор сегмента имеет длину 4 слова или 8 байт. Индекс помещается в старшие 13 бит селектора, и если считать смещением 3 млад* ших бита, равных ООО, то
Смещение = (Числовое значение индекса) х 8.
При таком способе обращения автоматически считываются дескрипторы сегментов ЛТД, хранящиеся в ГТД, и помещают* ся в свой регистр дескрипторов сегментов РЛТД. С помощью- содержимого этого регистра можно обратиться к ЛТД. В селекторной части регистра CS хранится селектор сегментов программы. Дескриптор сегмента программы, указываемого этим селектором, автоматически считывается из ЛТД и помещается в регистр дескрипторов сегментов CS. Содержимое его принимается за базу, а содержимое IP (указателя индекса)—за смещение, и на основании их значений команда осуществляет обращение. Процессор может одновременно обратиться к четырем сегментам (рис. 4.20). В этих сегментах уже задается смещение, поэтому формирование физического адреса можно осу*
Pac. 4.19. Преобразование виртуальных адресов в физические в процессоре
База
Дескриптор CSДескриптор CSДескриптор SSДескриптор SSДескриптор ESДескриптор ESБазаБазаДескриптор DSДескриптор DSСегмент командСегмент командСегмент данныхСегмент данныхСегмент стекаСегмент стекаБаза БазаБаза БазаДополнительный сегмент данныхДополнительный сегмент данных
Дескриптор CS
Дескриптор CS
Дескриптор SS
Дескриптор SS
Дескриптор ES
Дескриптор ES
База
База
Дескриптор DS
Дескриптор DS
Сегмент команд
Сегмент команд
Сегмент данных
Сегмент данных
Сегмент стека
Сегмент стека
База База
База База
Дополнительный сегмент данных
Дополнительный сегмент данных
Рис. 4,20. Обращение к четырем сегментам.
ществить с высокой скоростью. Кроме того, при изменении селекторов CS, DS, SS, ES автоматически обновляются дескрипторы сегментов.
Защита памяти
Кроме базы физического адреса в дескрипторе сегмента имеются следующие поля раписи:
— поле размера- сегмента;
— поле типа сегмента;
— поле уровня привилегии сегмента;
— поле других параметров.
С помощью этих полей УУП обнаруживает ошибки при обращении к памяти и начинает обработку специального прерывания.
Рис. 4.21. Пример использования четырех уровней привилегии.
Контроль границ сегмента осуществляется сравнением смещения и размера сегмента. При этом необходимо учитывать специфику работы стека, так как адреса стека увеличиваются от большего к меньшему. Для учета этого необходимо принимать специальные меры. С этой целью используется один бит из типа сегмента. Контроль ошибок осуществляется по типу сегментов, среди которых имеются сегменты, включающие:
— команды, допускающие только выполнение;
— команды, допускающие считывание;
— данные, допускающие только считывание;
— данные, допускающие считывание и запись.
Существуют четыре уровня привилегии сегмента (рис. 4.21). В процессорах MC68000 и Z8001 предусмотрено два уровня привилегии в системном и пользовательском режимах. В процессоре 80286 число этих уровней увеличено до четырех. Поскольку стек используется в каждой задаче, для всех уровней привилегии используются 4 стека. Уровень привилегии дескриптора по отношению к сегменту выполняет функции указателя. Кроме того, уровни привилегии дают представление о состоянии выполнения задачи процессором. В пределах одной задачи
используются сегменты с различным уровнем привилегии и в определенные моменты времени выполняются определенные сегменты программы. Уровень привилегии сегмента программы, выполняемой в настоящий момент времени, называется текущим уровнем привилегии процессора. Уровень привилегии сегмента данных, к которому осуществляется обращение, должен быть таким же, как и текущий уровень, или меньше его. Обращение к сегменту с более высоким уровнем привилегии воспринимается как ошибка, так как, существует опасность изменения данных с высоким уровнем привилегии в программе с низким уровнем привилегии.
Выполнение команды ветвления ограничивается сегментами в пределах одной программы. В командах вызова и перехода допускается переход в сегменты другой программы при условии, что уровень ее привилегии равен текущему уровню. Для перехода в программу с более высоким уровнем привилегии необходимо использовать вентиль вызова, который описывается ниже в следующем разделе. При таком способе предотвращается проникновение в программу с высоким уровнем привилегии.
Переход на высокий уровень привилегии
Как уже говорилось выше, при наличии двух режимов работы — системного и пользовательского — нельзя непосредственно осуществить переход из режима пользователя к программе первого режима. Тем не менее команда захвата позволяет вызвать подпрограммы, используемые в системном режиме. В этом случае начальные адреса этих подпрограмм используются в качестве таблицы векторов захвата и в команде захвата указывается один из этих векторов.
Подобный принцип используется в процессоре 80286. Различие состоит лишь в том, что начальный адрес перехода описывается так называемым дескриптором вентиля. На рис. 4.22 показана форма его представления. Существуют дескрипторы вентилей вызова, задачи, прерывания и захвата, каждый из которых указывается тремя битами, описывающими их тип.
Неиспользуемое поле
Р
DPL
0
Тип
X X X X | Число слов
Индекс селектора
TI
XX
Смещение
Рис. 4.22. Форма представления дескриптора вентиля
База
гтдилиЛТД
Код команды
Селектор вентиля
Команда вызова
Смещение
Дескриптор вентиля
Рис. 4.23. Вызов подпрограммы с помощью вентиля вызова.Рис. 4.23. Вызов подпрограммы с помощью вентиля вызова.
Рис. 4.23. Вызов подпрограммы с помощью вентиля вызова.
Рис. 4.23. Вызов подпрограммы с помощью вентиля вызова.
Рис. 4.24. Переход к программному сегменту с высоким уровнем привилегии с помощью вентиля вызова.
Например, если биты типа равны 100, осуществляется обращение к дескриптору вентиля вызова, который хранится в ГТД или ЛТД (рис. 4.23). В адресной части команды вызова имеется селектор данного дескриптора. Поэтому при выполнении такой команды дескриптор вентиля считывается автоматически и (рис. 4.24) осуществляется переход к адресу, указанному этим дескриптором (при этом селектор, хранящийся в дескрипторе, помещается в регистр CS, а смещение — в указатель индекса IP). В конце подпрограммы имеется команда возврата RET. Эти действия аналогичны и для команды перехода.
Как уже говорилось выше, стек используется в каждой задаче, но так как в ней имеются четыре уровня привилегии, то на каждом уровне имеется свой стек. При переходе в сегмент
УРОВНЯУРОВНЯРис. 4.25. Замена стека при переходе на другой уровень привилегииРис. 4.25. Замена стека при переходе на другой уровень привилегииSS,SP-*Прежнее содержимое IPPARAJPARA2PARA1Прежнее содержимое SPПрежнее содержимое SSСтек нового уровняSS,SP-*Прежнее содержимое IPPARAJPARA2PARA1Прежнее содержимое SPПрежнее содержимое SSСтек нового уровня
УРОВНЯ
УРОВНЯ
Рис. 4.25. Замена стека при переходе на другой уровень привилегии
Рис. 4.25. Замена стека при переходе на другой уровень привилегии
SS,SP-*
Прежнее содержимое IP
PARAJ
PARA2
PARA1
Прежнее содержимое SP
Прежнее содержимое SS
Стек нового уровня
SS,SP-*
Прежнее содержимое IP
PARAJ
PARA2
PARA1
Прежнее содержимое SP
Прежнее содержимое SS
Стек нового уровня
программы с другим уровнем привилегии осуществляется автоматическая замена стека. При передаче параметров в подпрограмму используется способ записи их. в стек. Однако, когда изменяется уровень привилегии и заменяется* стек, считывать эти параметры в подпрограмме уже нельзя. Поэтому в процессоре 80286 предусмотрена автоматическая пересылка в новый стек параметров, указываемых определенным числом слов. Для этого используется 5-разрядное поле записи, рассчитанное на заданное число слов, которое находится в дескрипторе вентиля вызова (рис. 4.25). Например, при выполнении
PUSH PARA1
PUSH PARA2 I
PUSH PARAS
CALL вентиль вызова (указывается 3 параметра)
содержимое старого стека записывается в новый стек.
Управление мультипрограммным режимом процессора 80286
Как уже говорилось выше, в процессоре 80286 имеются средства управления мультипрограммным режимом. Во-первых, в каждой задаче возможно распределение адресов на полностью независимые локальные адресные пространства, что позволяет предотвратить взаимное влияние задач друг на друга при возникновении ошибок. Во-вторых, функция автоматического перевода задачи в другое состояние, реализуемая аппаратными средствами, осуществляется очень быстро.
Сегмент состояния задачи
Выше говорилось, что в случае приостановки выполнения команды задачи информация, необходимая для ее перезапуска, должна сохраняться в блоке управления задачей.
В процессоре 80286 блок управления задачей называется сегментом состояния задачи (ССЗ). Для этого сегмента также используется свой дескриптор, который хранится в ГТД. Для выполнения п задач соответственно используются п сегментов состояния задачи, т. е. в ГТД хранятся п дескрипторов ЛТД и п дескрипторов ССЗ. Когда некоторая задача переходит в состояние прогона, в соответствующую часть регистра задачи (TR) помещается селектор, с помощью которого осуществляется считывание дескриптора ССЗ. Автоматически считанный из ГТД дескриптор ССЗ помещается в регистр дескрипторов сегментов (TR), который в свою очередь выдает базовый адрес ССЗ (рис. 4.26).
ССЗ состоит из 22 слов, или 44 байт (рис. 4.27). В этом сегменте помимо начальных значений всех регистров, характеризующих состояние процессора, хранятся также начальные значения указателей стеков нулевого, первого и второго уровней привилегии. В конце сегмента располагается селектор ЛТД данной задачи. При запуске задачи восстанавливается содержимое регистров процессора, а содержимое селектора ЛТД автоматически помещается в селекторную часть РЛТД. В поле обратной связи, расположенном в верхней части этого сегмента, хранятся данные о связи с задачей, которая выполнялась непосредственно перед этой задачей.
Рис. 4.26. Автоматическое запоминание дескриптора ССЗ с помощью селектора задачи.
TR(регистрзадачи)TR(регистрзадачи)
TR(регистрзадачи)
TR(регистрзадачи)
Селектор задачиДескриптор
Рис. 4.27. Сегмент состояния задачи (ССЗ).
Переключение с задачи на задачу
При переключении на другую задачу осуществляются следующие действия:
Состояние выполняемой задачи помещается в ССЗ.
Селектор новой задачи — в селекторную часть TR.
Дескриптор ССЗ новой задачи помещается в регистр дескрипторов TR.
Состояние новой задачи из ССЗ пересылается в процессор. Кроме того, в процессор посылается селектор ЛТД, с помощью которого можно обратиться к новой ЛТД. В процессоре 80286 эта последовательность действий выполняется аппарат-
Рис. 4.28. Переключение с задачи на задачу с помощью вентиля задачи.
ными средствами автоматически, на что требуется ~180 тактовых импульсов, т. е. при тактовой частоте 8 МГц на это уходит 22 мкс, а на частоте 10 МГц—18 мкс. Для переключения на другую задачу осуществляются следующие действия:
Выполняются команды вызова или перехода, т. е. выполняется
CALL-селектор, смещение
JUMP-селектор, смещение
Селектором можно непосредственно указать дескриптор ССЗ новой задачи и вентиль задачи (рис. 4.28). Смещение в команде игнорируется.
Выполняются команды возврата в конце подпрограммы обработки прерываний.
Для выполнения подпрограммы обработки прерываний имеется специальная команда возврата IRET (возврат по прерыванию).
Если при выполнении этой команды так называемый бит вложенной задачи, имеющийся в регистре состояния (PC), установлен в состояние 1, производится переключение на выполнение предыдущей задачи, т. е. той задачи, которая выполнялась непосредственно перед текущей (используется обратная связь ССЗ).
С помощью прерывания переключаются на другую задачу.
Для непосредственного переключения в векторе прерывания указывается вентиль задачи.
Связь между задачами
В ССЗ хранится информация об обратной связи, на основании которой указывается следующая задача, подлежащая выполнению. Обычно текущая задача связана с предыдущей. Если й ходе выполнения задачи Tt по команде вызова производится переключение на задачу Т2, то с ней автоматически устанавливается связь (на рис. 4.29 автоматически устанавливается связь 3). Если переключение производится с помощью прерывания, автоматически устанавливается связь с задачей, выполняемой в момент возникновения прерывания. Таким обра.зом, и в случае применения команды вызова, и в случае переключения по прерыванию по команде возврата в конце задачи автоматически осуществляется возвращение к прежней задаче.
Такая обратная связь очень удобна с точки зрения автоматического переключения с задачи на задачу. Действительно, после завершения обработки прерывания наиболее оптимальным вариантом является возвращение к предыдущей задаче. Планирование выполнения задач можно, конечно, также осуществить в программе управления задачей в самой ОС. Для этого при запуске программы управления задачей информацию о связи со следующей задачей, подлежащей выполнению, следует поместить в поле обратной связи ССЗ.
Команда вызова
Рис. 4.29. Переключения с задачи на задачу и организация обратной связи с помощью команды вызова.
Обработка прерываний ,
Так как переключение с задачи на задачу осуществляется быстро, то подпрограмма обработки прерываний практически используется в качестве отдельной задачи. В случае возникновения прерывания в качестве дескриптора вентиля вызова используется дескриптор вентиля прерывания. Таблица дескрипторов прерываний (ТДП) в виде отдельного сегмента располагается в глобальном адресном пространстве. В регистре ТДП (РТДГ1), показанном на рис. 4.15, хранится дескриптор этого сегмента. Номер вектора прерывания служит селектором для выбора конкретного дескриптора вентиля из ТДП при возникновении прерывания. В этот дескриптор помещается селектор дескрипторов ССЗ, который указывает задачу, подлежащую выполнению.
Итак, в процессоре 80286 имеются средства обеспечения переключения задач, но отсутствуют средства обеспечения синхронизации выполнения задач и связи между ними.
Конвейер
Компьютер в целом представляет собой сложную логическую схему, и, как правило, в определенные периоды тактовых сигналов одни узлы этой схемы работают, а другие нет. Поэтому для увеличения скорости обработки информации схему следует построить так, чтобы в ней работало одновременно максимальное количество узлов. Для реализации этой идеи предлагается метод конвейерной обработки данных.
Рассмотрим отдельный функциональный блок (рис. 4.30, а). Вводимые данные помещаются во входной регистр, а с выхода этого регистра они поступают в функциональный блок. Выходные данные этого блока фиксируются в выходном регистре. Таким образом, данные из входного регистра достигают выходного, пройдя через сложную логическую обработку в блоке. Далее, если обозначить максимальное время задержки сигнала, которое требуется для прохождения его через функциональный блок, как tdMSKc, то период поступления данных во входной регистр должен быть не меньше этого значения. Следовательно, скорость обработки данных определяется максимальным временем задержки сигнала в функциональном блоке.
Отметим, что времена задержки прохождения через функциональный блок различны для разных сигналов, однако обычно не известно, достигает ли данный сигнал выходного регистра за меньшее время. Поэтому содержимое входного регистра нельзя изменять до тех пор, пока самые последние из обрабатываемых данных не достигнут выходного регистра.
Тактовые
импульсы(с периодом1с)маск^
импульсы (с периодомб
1имакс1
импульсы (с периодом
Теперь представим первоначальный функциональный блок в виде трех последовательных блоков (рис. 4.30,6). Будем считать, что максимальное время задержки для всех блоков одинаково и равно td макс/3. При такой структуре блока период поступления данных тем не менее должен быть не меньше td макс/3. Если период поступления данных равен, например, td макс/3, возможен ошибочный результат, так как содержимое входного регистра изменяется, когда часть сигналов достигает выходного регистра, пройдя за минимальное время все 3 блока. Теперь поместим между блоками промежуточные регистры (рис. 4.30, в). Тогда сигнал с максимальным временем задержки достигает промежуточного регистра через время td макс/3. Сигнал с минимальным временем задержки не распространяется дальше промежуточного регистра. Если в такой структуре период поступления данных равен td макс/3, содержимое каждого регистра уже можно обновлять с периодом td макс/3.' Таким образом, хотя время задержки от момента поступления данных до момента их вывода равно td макс, время обработки единицы данных равно td макс/3. В этом состоит принцип конвейерной обработки. Если снова вернуться к структуре, показанной на рис. 4.30, а, то, грубо говоря, в первую треть периода работает только одна треть (левая часть) блока, а две трети (правая часть) не работают. В следующую треть периода работает только центральная треть блока и т. д., что совершенно неэффективно. Напротив, в структуре, показанной на рис. 4.30, в, в любой момент времени работают все блоки, т. е. ее производительность в три раза больше.
В действительности значения максимального времени задержки сигнала в каждом функциональном блоке могут быть различными. В этом случае за рабочий период принимается максимальное из этих значений. Кроме того, если процесс обработки в каком-то блоке сложен, время обработки различных входных данных может быть разным, например оно может измениться в зависимости от типа команды. В данном случае в структуре, показанной на рис. 4.30, в, производительность снизится, так как период следования входных сигналов определяется максимальным временем обработки данных в каждом блоке. Для устранения этого недостатка каждый регистр следует заменить на очередь, способную хранить множество данных (рис. 4.30,г). При этом ввод данных из предыдущей очереди и вывод данных в следующую очередь выполняются независимо друг от друга каждым функциональным блоком, т. е. каждый блок после завершения одной процедуры обработки переходит к следующей. Обработка в каждом блоке может продолжаться, пока предыдущая очередь не ликвидируется либо пока не переполнится следующая очередь.
Если объем очереди достаточно большой, изменения во времени обработки не сказываются на производительности. Однако желательно, чтобы средние значения времени обработки всех блоков были одинаковыми, в противном случае скорость обработки ограничивается блоком, для которого это значение максимально.
Конвейерная обработка в процессоре 80286
Конвейерная обработка в большей или меньшей степени используется в каждом процессоре. В качестве примера ниже рассматривается процессор 80286.
Конвейерный режим работы при обращении к памяти
На рис. 4.31,а приведена временная диаграмма работы при обычном обращении к памяти. Например, в режиме считывания в начале цикла шины передается адрес и в течение этого цикла осуществляется считывание данных из памяти. Интервал времени между передачей адреса и выдачей данных называется временем выборки. Очевидно, что для увеличения частоты счи-
Тактовые импульсыАдресаДанныеТактовые импульсыАдресаДанныеТактовые импульсыАдресаДанныеТактовые импульсыАдресаДанныеРис. 4.31. Способ сокращения цикла шины с сохранением времени выборки.Рис. 4.31. Способ сокращения цикла шины с сохранением времени выборки.
Тактовые импульсы
Адреса
Данные
Тактовые импульсы
Адреса
Данные
Тактовые импульсы
Адреса
Данные
Тактовые импульсы
Адреса
Данные
Рис. 4.31. Способ сокращения цикла шины с сохранением времени выборки.
Рис. 4.31. Способ сокращения цикла шины с сохранением времени выборки.
6
Рис 4.32. Обращение к памяти конвейерным методом.
тывания-записи данных в единицу времени следовало бы сократить цикл шины, но для этого надо пропорционально уменьшить время выборки (рис. 4.31,а). Следовательно, необходимо повысить быстродействие памяти. Было, бы удобно, если бы цикл шины удалось сократить, сохранив неизменным время выборки (рис. 4.31,6). При этом данные будут считываться в следующем цикле шины, т. е. после того, как изменится адрес.
Временную диаграмму в этом случае можно реализовать
Рис. 4.33. Временная диаграмма циклов записи-считывания памяти.
конвейерным методом: старшие разряды адреса поступают в дешифратор адреса, выходной сигнал которого используется контроллером динамического ЗУПВ° как сигнал CS (выбор кристалла) (рис. 4.32,а). Младшие разряды адреса поступают непосредственно в контроллер, однако до прихода сигнала выбора кристалла контроллер не запускается. На рис. 4.32,6 показана структура, в которой реализован конвейерный принцип за счет введения дополнительных схем на выходе дешифратора. После дешифрации переданного адреса передается сигнал ALE, по которому выходные сигналы дешифратора и младший адрес запоминаются в соответствующих регистрах-фиксаторах. Далее контроллер и кристалл памяти работают в соответствии с выходными сигналами этих регистров. Следовательно, процессор может передавать адрес следующего цикла шины до окончания их работы. На рис. 4.33 показана временная диаграмма работы такой схемы, из которой видно, что в дешифраторе используются два такта, а остальные четыре такта используются после него. Время прохождения сигнала также может быть большим в дешифраторе.
Внутрипроцессорная конвейерная обработка
Процессор 80286 состоит из 4 блоков (рис. 4.34): шинного (BU), командного (IU), исполнительного (EU) и адресного (AU), причем все блоки могут работать параллельно. Шинный
h Работа контроллера динамического ЗУПВ подробно описывается в гл. 6 данной книги. - Прим, перен.
Рис. 4.34. Архитектура процессора 80286.
Адрес
Выборка
Дешифрация
Выполнение
Выборка (нулевой шаг)
^;Выборка^ ^(первый шаг)'
Выборка (второй шаг)
Выборка (третий шаг)
I и:
Дешифрация (минус первый шаг)
Дешифрация (ми- нус второй шаг)
^Дешифрация /^ ^(первый шаг) /
Дешифрация
<второй шаг)
Еи:
Выполнение (ми. нус второй шаг)
Выполнение (ми- нус первый шаг)
Выполнение (нулевой шаг)
У/У/7/7/7Л /, Выполнение X ^(первый шаг)у/
AU:
^<Адрес^%Й
/(первый шагР'
Адрес (второй шаг)
Адрес (третий шаг)
Адрес 1 (четвертый шаг).
Рис. 4.35. Шаги выполнения команды конвейерным методом.
Адрес
Выборка
Дешифрация
Выполнение
Адрес
Запись
Запись (минус первый шаг)
^ВыборкаМ^ /(первый шаг)/
Запись (нулевой шаг)
Выборка (второй шаг)
77/Л»^//. ^(первый шаг)/
Выборка (третий шаг)
Дешифрация (нулевой шаг)
7 Деш ифра ция' ^(первый wat)/
Дешифрация (второй шаг)
—
—
Выполнение (нулевой шаг)
^Выполнением /(первый шаг)/
Выполнение (второй шаг)
7///Л^7/// ^(первый шаг)/
Адрес (нулевой шаг)
Адрес / (второй шаг)
77/,^7/7 /(первый шаг)/
Адрес (третий шаг)
Адрес (второй шаг)
б
Рис. 4.36. Шаги выполнения команды конвейерным методом.
блок осуществляет считывание памяти и считывание портов ввода-вывода. Командный блок производит дешифрацию команд. Исполнительный блок осуществляет операции с помощью АЛУ. Адресный блок вычисляет все адреса и формирует физические адреса.
Рассмотрим, например, команду выполнения операции с данными, находящимися в регистре общего назначения (РОН). Результат помещается в этот же регистр. Если эта команда выполняется последовательно, от вычисления адреса команды до исполнения ее потребуется четыре шага (рис. 4.35,а). На рис. 4.35,6 показано исполнение этой команды конвейерным способом с помощью четырех указанных блоков. Из рисунка видно, что все блоки работают во всех циклах и на каждом шаге выполняется одна команда (т. е. производительность возросла в 4 раза). -
Теперь рассмотрим команду выполнения операции с данными РОН и занесения результата в память (рис. 4.36). В этом случае вместо 6 шагрв, необходимых для последовательного выполнения команды, такой способ требует 2 шага (т. е. производительность возросла втрое). Дальнейшее увеличение производительности ограничивается временем использования шины, так как в двух ее циклах, требуемых для выполнения команды, командный и исполнительный блоки не работают.
Для использования шины с максимальной эффективностью применяется 6-байт очередь команд. При этом осуществляется
упреждающее считывание команд, время выполнения которых в АЛУ велико. Команды размещаются в очередь. В очередь можно поместить максимум три результата дешифрации команд. Поэтому командный блок после окончания выполнения одной команды сразу Жи переходит к выполнению следующей. Однако при появлении команды перехода или ветвления необходимо аннулировать содержимое этой очереди и начинать снова с момента вызова команды.
и
5и
32-разрядные процессоры
а
В материалах Международной конференции по твердотельным схемам, проходившей в 1981 г., сообщалось о разработках 32-разрядных процессоров фирмами Intel, Hewlett-Packard, Bell Laboratories, National Semiconductor и др. Таким образом, если появление первых коммерческих 4-разрядных микропроцессоров датируется 1971 г., то 32-разрядные устройства появились уже через 10 лет.
В табл. 5.1 перечислены основные типы 32-разрядных процессоров, в том числе и находящихся в настоящее время на стадии разработки. Помимо кристаллов, предназначенных для продажи, среди 32-разрядных процессоров разработаны устройства, предназначенные для использования в изделиях только своей фирмы. Поэтому другие фирмы — изготовители вычислительной техники вынуждены также разрабатывать микропроцессоры. Хотя некоторые микропроцессоры, первоначально предназначенные для внутреннего пользования, уже выпущены для продажи, тем не менее широкое распространение все же получили устройства общего назначения.
Ниже рассмотрены типичные устройства такого класса — микропроцессоры MC68020 и Z80000, особенностью которых является встроенная кэш-память.
Кэш-память
Принцип действия кэш-памяти
Быстродействующая память малой емкости, расположенная между процессором и основной памятью, называется кэш-па- мятью. Она предназначена для повышения производительности больших ЭВМ.
Таблица 5.1 32-разрядные процессоры
Название модели
Число ВЫВОДОВ
Фирма-изготовитель
Год выпуска
Разработаны для
432>а
64
Intel
1982
продажи
NS16032»)
48
National Semiconductoi
1982
NS32032
68
1984
MC68020
114
Motorola
1984
Z80000
68 ,
Zilog
1984
IMST424
84
INMOS
1985
(транспьютер)
80386»)
?
Intel
?
Разработаны для
Без названия
83
Hewlett-Packard
1982
применения в из
Bellmac-32
84
Bell Laboratories
1983
делиях своей
фирмы
NCR/32
68
NCR
1983
Без названия
68
DEC
1 1984
а^Имеет 3-кристальную конфигурацию.
б) Шина данных является 16-разрядной.
^Данный процессор выполнен в керамическом корпусе с матричным расположением 132 выводов. Его изготовление начато в 1985 г. — Прим перев.
Желательно, чтобы основная память, используемая процес-
сором, обеспечивала его функционирование с максимальным быстродействием. Однако быстродействующая память обычна
является дорогостоящей, по* этому повышать быстродейст* вие всей основной памяти большой емкости экономически невыгодно. Такую память предлагается реализовать с помощью быстродействующей памяти малой емкости.
Кэш-память располагают между процессором и основной памятью (рис. 5.1). В нее помещаются текущие программы и данные, хранящиеся в основной памяти. При выполнении программы процессор сначала передает адресный сигнал в кэш-память, с помощью кото-
Рис. 5.1. Расположение кэш-памяти. рого МОЖНО осуществить СЧИ-
Рис. 5.2. Архитектура компьютера.
тывание-запись. Наличие этого адреса в кэш-памяти называется совпадением кэша, а отсутствие — несовпадением. В случае совпадения кэша выполнение программы можно осуществить непосредственным обращением только к кэш-памяти. При возникновении, сигнала несовпадения кэша выполнение команды приостанавливается и осуществляется обмен содержимым кэш-памяти и основной памяти. Действия при этом аналогичны действиям, выполняемым при возникновении ошибки во время работы с виртуальной памятью. Таким образом, если процессор имеет средства поддержки виртуальной памяти, он обеспечивает поддержку и кэш-памяти.
Отношение числа совпадений к общему числу обращений к памяти называется коэффициентом эффективности поиска. Если этот коэффициент достаточно высокий, большую часть времени при выполнении программы обращение осуществляется к кэш-памяти, что эквивалентно использованию быстродействующей ocHQBHoft памяти. Емкость кэш-памяти обычно составляет несколько процентов емкости основной памяти. Этого достаточно для того, чтобы получить коэффициент эффективности поиска для основных программ свыше 95%.
Кэш-память позволяет другим устройствам пользоваться системной шиной, которая является центральным.узлом в архитектуре компьютера (рис. 5.2). Кроме обращения к основной памяти системная шина используется при пересылке содержимого основной памяти в видеопамять, а также для обмена информацией между основной памятью и дисковой. Следователь-
но, пока системная шина занята другими устройствами, процессор не может выполнять программу. На рис. 5.3 показана архитектура ЭВМ с применением кэш-памяти. При такой архитектуре процессор с помощью кэш-памяти продолжает выполнять программу даже в том случае, когда системная шина занята другими устройствами.
Структура кэш-памяти
Структурная единица кэш-памяти называется блоком. В примере, оказанном на рис. 5.4, используются блоки длиной 4 слова. Обмен содержимым между кэш-памятью и основной памятью осуществляется блоками. Кэш-память организуется как ассоциативная память, поэтому при обращении старшие биты адреса используются в качестве признака адреса, а младшие биты — для выбора слова в блоке. Слова внутри блока имеют непрерывные адреса. Как и в случае виртуальной памяти, в каждом блоке имеется поле управляющих данных. Бит V показывает, что в этом блоке хранится правильное содержимое, бит А — к данному блоку осуществляется обращение, бит W — в данный блок осуществляется запись.
Рис. 5.3. Архитектура ЭВМ с применением кэш-памяти.
В случае обмена содержимым между кэш-памятью и основной памятью при возникновении сигнала несовпадения по алгоритму замещения наименее используемого в прошлом cei мента выбирается блок, возвращаемый в основную намять. Для выбора блока используется бит А. В процессоре предусмотрено два способа записи. Способ записи, по которому при записи в кэш память (в конце цикла обмена с основной памятью) содержимое всех блоков записывается в основную память, называется перезаписью. В этом случае необходимость или необязательность записи определяется битом W. Способ одновременной записи в кэш-память и в основную память называется сквозной записью. При таком способе частота обращений к основной памяти увеличивается, однако содержимое основной и кэш-памяти обычно совпадает. Скорость обмена содержимым кэш-памяти и основной памяти ограничивается быстродействием основной Памяти. Для сокращения времени обмена в больших ЭВМ увеличивали разрядность шины данных между кэш-памятью и основной памятью, с тем чтобы параллельно передавать несколько слов (рис. 5.5). Однако при таком подходе усложняется организация основной памяти.
Микропроцессор обычно содержит внутрикристальную кэшпамять, поэтому отсутствует необходимость в дополнительном внешнем кристалле памяти. Преимущество внутрикристальной памяти заключается в возможности обращения к ней с высокой скоростью. Однако из-за ограниченного числа выводов ширина шины данных между кэш-памятью и основной памятью составляет 1 слово (рис. 5.6); при использовании 32-разрядного процессора на этот факт следует обратить внимание.
Рис. 5.5. Ускорение обмена содержимым между кэш-памятью и основной памятью.
кэш-память.
MC68020
Процессор оснащен раздельными 32-разрядными шинами данных и адресов. Число выводов равно 114. Основной состав регистров общего назначения такой же, как в процессорах MC68000 и МС68010; набор команд обеспечивает взаимозаменяемость этих устройств.
Встроенная иэш-память
Процессор имеет встроенную кэш'-память команд объемом 256 байт (рис. 5.7) и дополняется внешним устройством управления памятью. Кэш-память процессора имеет небольшое функциональное отличие от обычной кэш-памяти и используется для хранения предварительно считанных команд. При считывании команды сначала отпираются вентили Gt и G2 и производится обращение к кэш-памяти. В случае совпадения используется информация этой памяти. При несовпадении отпираются вентили G3, С4 и используются команды, считанные из основной памяти, причем одновременно отпираются вентили Gi и G2 и считанная команда записывается в кэш-память.
Организация кэш-памяти команд показана на рис. 5.8. Основной единицей команд является полуслово (16 бит). Первым
Рис. 5.7. Базовая структура микропроцессора MC68020.
битом логического адреса выбираются старшие или младшие разряды 32-разрядного слова. Биты логического адреса со второго по седьмой используются в качестве индекса, с помощью которого выбирается одна из 64 строк. Поле признака адреса выбранной строки сравнивается с битом признака из логического адреса и в случае совпадения считывается команда этой строки. В случае несовпадения в строку, выбранную с помощью индекса, записывается считанная из основной памяти команда. При этом биты логического адреса (с 8 по 31) записываются в поле признака адреса. Для определения признака адреса может использоваться самый старший бит FC2 сигнала состояния (разделение на системную область и область пользователя).
1Л inrrrx
Рис. 5.8. Кэш-память для хранения команд процессора MC68020.
Кэш-память с такой организацией обеспечивает хранение 128 команд с непрерывными логическими адресами. Если часть программы
LOOP:
BRA СС LOOP
организующая цикл, находится в числе этих 128 команд, отсутствует необходимость считывания команды извне. Уже благодаря этому возрастает скорость выполнения программы. В случае перехода в другое место программы (например, по команде перехода) сохранность команд обеспечивается с этого места.
Усовершенствование способов адресации
Способы адресации данного процессора дополнены двойной косвенной адресацией (табл. 5.2), которая удобна с точки зрения использования таблицы адресов, хранящихся в основной памяти. Для задания адреса в таблице адресов можно использовать относительную адресацию (базирование), индексную и относительную адресацию, относительную адресацию с использованием программного счетчика ПС и индексную адресацию с использованием ПС. Вначале указывается только адрес (без данных), по которому в процессор считывается окончатель-
Таблица 5.2
Дополнение способов адресации процессора MC68020 двойной косвенной адресацией
Способ
Исполнительные адреса
Регистровая косвенная
Двойная косвенная
Относительная адресация по базе
(An)+dw
(An) +di6'32
((An) +bd ie/32)
((An) +bdie/32) +°die
((An) +bdi6/32) +oda$
Индексная адресация по
(An) +d8+ (Ri) is
базе
(An) 4-dI6/M+ + (R*0 16/32
((An+bd ie/32 4- (Ri)ie/32)
((An + bdi6/32-i-(Ri)i6/32) +odie
((An + bd ie/32 + (Ri) ie/32) +od32
((An + bdie/32) + (Ri) ie/32
((An+bdi6/32+ (Ri) 16/32) +odj6
((An + bdi6/32+ (Ri) ie/32) +od32
Относительная адресация с
использованием ПС
(PC)+d„
(PC) +die/32
((PC)+bd16/32)
((PC) -f-bdie/32) 4-odie
((PC) +bd ie/32) +ods2
Индексация и
относительная адресация с исполь
(PC) + d8 + (RDi6
зованием ПС
(PC) +di6/32+ 4 (Ri) 16/32
((PC) +bdie/32) + (Ri) 16/32)
((PC) +bdi6/32) + (Ri) ie/32) 4-odie ((PC) +bdi6/3a) + (Ri) 16/32) +od32
((PC) +bdi6/32) + (Ri) 16/32)
((PC) +bd,6/32) 4- (Ri) 16/32) 4-odie ((PC) -4- bd 16/32) + (Ri) 16/32) +ods2
ный адрес. Смещение и индекс указываются также 32-разрядны- ми адресами. Кроме того, имеется возможность дополнить смещением адрес, считанный из основной памяти. Смещение, используемое для считывания адреса, называется базовым смещением (bd), а смещение, используемое для вычисления конечного исполнительного адреса, — внешним смещением (od). Кроме того, адреса, считанные из основной памяти, можно допол-
нить индексом, а также смещением с индексом. Следовательно, таблицу адресов основной памяти можно использовать как регистр адреса (автоинкрементирование и автодекрементирование в этом случае не допускается).
Имеется возможность умножения содержимого индексного регистра Ri на коэффициенты 1, 2, 4, 8 (в таблице этого не показано), т. е. обращение к данным, упорядоченным в байты, полуслова, слова и двойные слова, осуществляется просто. Кроме того, вместо содержимого An, PC, bd, Ri можно использовать bd32+(Ri)i6, (Ri)32+bdi6 и др.
3. Процессор Z80000
В этом процессоре 32-разрядные адресная и информационная шины объединены, поэтому число выводов сокращено до 68. Как и б процессоре Z8081, в данном устройстве имеется 16 регистров общего назначения, но их разрядность уже увеличена до 32 бит.
Встроенная кэш-память
Процессор имеет встроенные кэш-память объемом 256 байт и устройство управления памятью (рис. 5.9), благодаря которому для обращения к кэш-памяти используются физические адреса.
На рис. 5.10 показана организация кэш-памяти, состоящей из 16 блоков длиной 16 байт или 4 слова. Старшие 28 бит физического адреса используются в качестве признака; выбору подлежит блок, признак которого совпадает с признаком ад реса. Для выбора слова в блоке используются второй и третий биты физического адреса. Начальный адрес блока кратен 16, т. е. его слова имеют непрерывные адреса. Все 16 блоков можно произвольно выбрать из основной памяти.
Для ускорения обмена блоками между кэш-памятью и основной памятью помимо обычного метода передачи используется метод непрерывной передачи. При обычном методе считывание и запись осуществляются путем передачи адреса каждого слова, и так как для передачи одного слова используется 3 такта, то на четыре слова потребуется уже 12 тактов. По методу непрерывной передачи после передачи начального адреса блока осуществляется непрерывное считывание или запись всех четырех слов. Время их передачи сокращается до 6 тактов, что в 2 раза быстрее, чем обычным методом. Схемная реализация основной памяти должна обеспечивать непрерывную передачу слов. Поэтому, если основная память имеет стан-
Рис. 5.9. Базовая структура процессора Z80000.
дартную организацию, передача данных осуществляется только словами. Если возможно использование метода непрерывной передачи, при возникновении сигнала несовпадения осуществляется замена содержимого одного блока. Для выбора блока, подлежащего возвращению в основную память, применяется алгоритм замещения наименее используемого в прошлом блока. Если же нельзя использовать такой метод передачи, осуществляется считывание или запись только одного конкретного слова. В режиме записи кроме записи в кэш-память обычно осуществляется запись и в основную память (метод сквозной записи). Поэтому в основную память обычно помещаются обновленные значения.
Физическии адрес
$.3.2. Встроенное устройство управления памятью
Процессор имеет четыре формы представления адреса, из которых выборочно можно использовать одну (рис. 5.11). Сегментная адресация предусматривает использование 16-разряд- ного или 24-разрядного смещения. При таком способе адресации вычисление адреса сводится только к определению битов смещения (номер сегмента не имеет значения).
Устройство управления памятью имеет страничную организацию (одной странице соответствует 1 кбайт). Для преобразования виртуальных адресов в физические используются имеющиеся в процессоре 16 регистров — дескрипторов страницы (рис. 5.12). С 10-го по 31-й биты виртуального адреса используются в качестве признаков адреса, причем выбирается тот регистр, признак которого совпадает с указанным. В случае совпадения (называемого совпадением дескриптора страницы) считываются база и атрибут страницы и осуществляются преобразование адреса и проверка атрибута. В противном случае считывается содержимое таблицы страниц, хранящейся в основной памяти, на основании которого обновляется содержимое per ис 1 ров --- дескрипторов страниц. Выбор обновляемых регистров осуществляется по алгоритму замещения наименее используемого в прошлом, поэтому в них помещаются преобразованные данные наиболее часто используемых 16 страниц.
3116 15о
0
Номер сегмента
Смещение
а
1
Номер сегмента
Смещение
31
б
0
Линейный адрес
31
в
16 150
24 23
31
О
Адрес
Рис. 5.11. Формы представления адресов, используемых процессором Z80000.
и и б —для сегментной адресации; в—для линейной адресации; г — 16-разрядный адрес.
Виртуальный адрес 3124 2316 1510 90
Физимнскии адрес
Рис. 5.12. Преобразование виртуальных адресов в физические с помощью регистров— дескрипторов страниц, содержащихся в процессоре Z80000.
3124 2316 1510 9о
страницы в процессоре Z80000. (Таблицы первого и второго уровнейстраницы в процессоре Z80000. (Таблицы первого и второго уровней
страницы в процессоре Z80000. (Таблицы первого и второго уровней
страницы в процессоре Z80000. (Таблицы первого и второго уровней
Рис, 5.13. Метод считывания дескрипторов и таблица страниц хранятся в основной памяти.)
Содержимое, помещаемое в регистр — дескриптор страницы, определяется методом, показанным на рис. 5.13. Для этого используются 3 таблицы (таблицы первого и второго уровней и таблица страниц), хранящиеся в основной памяти. Основная память разбита на 4 области (области системных программ, системных данных, программ пользователя и данных пользователя), причем каждой области соответствует своя группа из трех указанных таблиц. Четыре регистра базы таблиц, имеющиеся в процессоре, указывают эти группы. Содержимое таблицы страниц считывается через таблицы первого и второго уровней. Преобразование адресов с применением дескрипторов страницы и проверка атрибутов, а также преобразование содержимого этих регистров в случае несовпадения признака осуществляются полностью автоматически.
Память
Запоминающие устройства (ЗУ), используемые для организации памяти, делятся на два класса:
Устройства для считывания и записи, или оперативное запоминающее устройство (ОЗУ) (энергозависимые ЗУ).
Устройства только для чтения, или постоянное запоминающее устройство (ПЗУ) (энергонезависимые ЗУ).
Устройства обоих классов представляют собой ЗУ с произвольной выборкой (ЗУПВ), обращение к которым возможно в любой момент времени и по любому адресу, однако в силу традиции первые из них принято называть ЗУПВ, а вторые — ПЗУ. Существует несколько видов ЗУПВ и ПЗУ. Ниже рас-
Таблица 6.1
Характеристики кристаллов памяти
Тип
Емкость, бит
Организация, словах бит
Время выборки, нс
Длительность цикла, нс
Статические ЗУПВ
4К
4KXI
35
35
16К 64К
2КХ8 8КХ8
120
120
Динамические ЗУПВ
64К
64КХ1
120
лол
256К
256КХ1
Стираемые программируемые
64К
8КХ8
200
200
постоянные ЗУ (СППЗУ)
128К
16КХ8
Электрически стираемые про
16К
2КХ8
2501)
250
граммируемые постоянные запоминающие устройства (ЭСППЗУ)
Масочные ПЗУ
1М
128КХ8
150
150
Ч Типовое значение в режиме стирания н записи равно 10 мс.
смотрены структуры, временные диаграммы работы, способы сопряжения с процессором основных видов этих устройств. Прогресс в области кристаллов памяти особенно стремителен, поэтому с каждым годом появляются все новые изделия. Характеристики выпускаемых в настоящее время ЗУ приведены в табл. 6.1.
.Статические ЗУПВ
Структура
На рис. 6.1 показана структура статического ЗУПВ емкостью 64 К бит. В таком ЗУ осуществляется параллельное считывание-запись 8 бит данных, т. е. оно имеет органыацию 8К слову ХУ бит. Для ввода-вывода данных используются 8 выводов
256 линий
Рис. 6.1. Структура статического ЗУПВ.
N.C< Pin С WEC RASC
1
2
3
4
16)GND 15)CAS 14 ) D0UT
А6С 5 АгС6 A,C7 Vi)»qi
13 12
11
10 9
) А® !)А3
)А4da5• )а7
N.C.C AizC a7c A6C
Л4С
2
3
4
5
6
28 ) VDu
27) WE
26
25
1 )CSi
VfpCL^^28 5Vdo
Ai2C 227 )РШ
Л7СЗ26)N.C,
25) A.
Л2С
A.C AoC
8
9
10
VOoC 11 I/O,C 12 I/o2c 13 GNDC 14
23
22
21
20
19
18
17
16
15
>At
»)CSt ')I/Or OI/Oe
)I/O$ ОI/O4 oi/o3
I/OeC 11
1/О,С 12 1/O2C 13 GNDC 14
24 )A, 23 D A.
22 )OT
21 )AW
20)CS
19)1/0,
18)1/0$
17)1/0$ 16)I/O4 15)1/0$
абв
Рис. 6.2. Примеры расположения выводов чипа памяти.
а — динамическое ЗУПВ емкостью 64К бит; б — статическое ЗУПВ емкостью 64К бит; в — стираемое программируемое ПЗУ емкостью 64К бит.
(1/Оо—I/От), для ввода адресных сигналов— 13 выводов (Ао—А12) и для ввода управляющих сигналов — 4 вывода (WE, ОЕ, CSi, CS2). Таким образом, корпус ЗУ является 28-вы- водным (рис. 6.2,6). Запоминающим элементом устройства является триггер. Триггеры расположены в виде матрицы размером 256 строкХ256 столбцов. Выбор строки осуществляется дешифрацией старших 8 бит адреса А$—А12, а выбор столбца — дешифрацией 5 младших бит Ао—А«. Когда управляющий сигнал WE имеет низкий логический уровень, вентиль Gw отпирается и производится запись данных, подаваемых на выводы I/O»—1/О7. По низкому уровню сигнала ОЕ отпирается вентиль Gr и считываемые данные выводятся на линии 1/О0—1/О7. Если уровни сигналов WE и ОЕ одновременно становятся низкими, приоритет отдается сигналу WE. Сигналы CSi, CS2 служат для выбора кристалла, т. е. когда CSi имеет низкий, a CS2— высокий уровень, выбирается данный кристалл, при этом сигналы WE и ОЕ становятся активными. После того как осуществлен выбор кристалла, (уровень сигнала CS2 стал высоким), приводятся в действие дешифраторы строк и столбцов.
Временная диаграмма работы
В табл. 6.2 приведен пример распределения интервалов времени работы статического ЗУПВ с временем выборки 120 нс. Временная диаграмма -работы статического ЗУПВ показана на рис. 6.3. В цикле считывания (рис. 6.3, а) за время выборки принимается 1асс, представляющее собой интервал времени от
Обозначение
• Минимальное значение, нс
Максимальное значение, нс
Таблица 6.2
Пример распределения временных интервалов работы статического ЗУПВ
Цикл считывания
120
Irc Iacc tcs toe 1он to ЕВ tOD’Irc Iacc tcs toe 1он to ЕВ tOD’120
Irc Iacc tcs toe 1он to ЕВ tOD’
Irc Iacc tcs toe 1он to ЕВ tOD’
120
60
20
5
5050Цикл записи
50
50
twc twp tcsw tAS Ids tDH
12080100 050 012080100 050 0установки адреса до вывода правильных данных, максимальное значение которого 120 нс. Это означает, что в самом худшем случае данные можно считать через 120 нс. Остальные величины здесь обозначают следующее: tcs — интервал времени от выбора кристалла до считывания правильных данных; 1ое— интервал от установки сигнала ОЕ на низкий уровень до вывода правильных данных; toEE— интервал от установки сигнала ОЕ на низкий уровень до отпирания вентиля Gr; ton — интервал от перехода сигнала ОЕ на высокий уровень до запирания того же вентиля; ton— время удержания считанных данных после изменения адреса; Irc — длительность цикла считывания (минимальное время, требуемое для однократного считывания данных).
120
80
100 0
50 0
120
80
100 0
50 0
В цикле записи (рис. 6.3,6) вводится время tcsw, необходимое от выбора кристалла до окончания записи (в данном случае минимальное значение его 100 нс); tWp— интервал времени, в течение которого сигнал WE имеет низкий уровень; tos — время записи данных до перехода сигнала WE на высокий уровень: tAs — интервал времени от установки адреса до перехода сигнала WE на низкий уровень (в данном случае может быть равен 0, другими словами, если даже одновременно с изменением адреса сигнал WE переходит на низкий уровень, запись данных осуществляется по правильному адресу); ton — время удер-
Рис. 6.3. Временные диаграммы работы статического ЗУПВ. а - цикл считывания; б — цикл записи.
жания записываемых данных после перехода сигнала WE на высокий уровень (в данном случае оно может быть равно 0); twc — минимальное время, требуемое для осуществления однократной записи.
Из изложенного выше понятно, что управление статическим ЗУПВ осуществляется просто, т. е. существует возможность работы непосредственно от управляющих сигналов, передаваемых
разрядов
Рис. 6.4. Организация памяти объемом 64КХ16 бит на статических ЗУПВ.
процессором. На рис. 6.4 показана организация памяти объемом 64КХ16 бит на статических ЗУПВ.
Динамические ЗУПВ
Структура
На рис. 6.5 показан пример структуры динамического ЗУПВ емкостью 64К бит. Считывание и запись данных в таком ЗУПВ осуществляется по битам, т. е. данные в нем представлены как 64К отдельных бит. Ввод и вывод данных осуществляются раздельно, для этого предусмотрено 2 вывода: D„x и DBwx. Для ввода адреса имеется 8 контактов (Ао—А7). Адресация 64К слов осуществляется 16-разрядными адресами (Ао—Аю), причем сначала передаются 8 старших бит адреса (А8—Аю), которые фиксируются в регистре адреса строки, а затем передаются младшие 8 бит, которые фиксируются в регистре адреса столбца. Для считывания адреса строки используется управляющий сигнал RAS (строб адреса строки), а считывание адреса столбца осуществляется управляющим сигналом CAS (строб адреса столбца). WE —сигнал управления записью. Таким образом, благодаря тому что ввод-вывод данных осуществляется по би-
Рис. 6.5. Структура динамического ЗУПВ.
там, а ввод адреса осуществляется поочередно по строкам и столбцам, кристалл ЗУПВ можно поместить в 16-выводной корпус (рис. 6.2, а). Запоминающим элементом такого ЗУ является конденсатор. Конденсаторы расположены в виде матрицы из 128 строк и 512 столбцов.
Дешифратором строк выбирается одна из 128 строк. 512 конденсаторов каждой строки подключены к такому же числу усилителей считывания. Усиленный сигнал по цепи обратной связи повторно записывается в этих конденсаторах. Дешифратор столбцов выбирает один из 512 усилителей считывания. Бит, выбранный в режиме считывания, выдается на линию Овых- В таком ЗУ существуют два режима записи: 1) ранняя запись и 2) считывание—модификация — запись. В режиме ранней записи данные, поступающие на вход DBX, записываются через усилитель считывания, выбранный дешифратором столб-
цов (в оставшиеся 511 запоминающих элементов перезаписывается считанное из них содержимое). В этом режиме сохраняется изолированное состояние вывода Ввых- Во втором режиме записи содержимое указанного запоминающего элемента считывается и передается на вывод DBwx, после чего осуществляется запись данных, поступающих на вход DBX.
Заряд конденсатора (который в данном случае является запоминающим элементом) вследствие утечки со временем уменьшается. Поэтому для сохранения содержимого памяти периодически через несколько миллисекунд необходимо осуществлять регенерацию (считывание+повторную запись). Когда в какой- то строке осуществляется считывание-запись данных, эта строка автоматически регенерируется; если осуществляется только регенерация, необходимость в установлении адреса столбца отсутствует. Адресу строки с помощью сигнала RAS можно присвоить порядковый номер с 0 по 127. Если матрица запоминающих элементов имеет размер 256 строкХ256 столбцов, то время, требуемое для регенерации, увеличивается вдвое. Кроме того, вдвое возрастет и число запоминающих элементов, подсоединяемых к одному усилителю считывания, т. е. надежное считывание информации усложняется. Этими причинами обусловливается организация динамического ЗУПВ— 128 строкХ512 столбцов.
Временные диаграммы работы
В табл. 6.3 приведен пример распределения временных интервалов работы динамического ЗУПВ с временем цикла считывания-записи 220 нс. На рис. 6.6 показаны примеры временных диаграмм. Для обеспечения правильной работы динамического ЗУПВ адреса и сигналы RAS и CAS необходимо передавать в строгой последовательности. Функционирование кристалла инициируется сигналом низкого уровня RAS (при отсутствии этого сигнала кристалл не функционирует, даже если передаются сигналы CAS и WE). Iras и tRP — минимальные интервалы, в течение которых сигнал RAS имеет соответственно низкий и высокий уровни (рис. 6.6 а). Их сумма представляет собой минимальную длительность цикла считывания tpS или цикла записи twc (в данном случае она равна 220 нс). Задается еще tcAs— минимальный интервал, в течение которого сигнал CAS имеет низкий логический уровень. Время Ircd между переходом сигналов RAS и CAS на низкий уровень называется временем задержки сигнала CAS относительно RAS. Его значение должно находиться в определенных пределах (25—60 нс). Кроме того, задаются минимальный интервал tCH— время возвращения
Таблица 6.3
Пример распределения временных интервалов работы динамического ЗУПВ
Обозначение
Минимальное значение, нс
Максимальное значение, нс
Сигналы RAS, CAS, адреса
tRAS
120
10000
tRP
100
tcAS
60
10000
ten
120
tRCD
25
60
tRAH
15
tcAH
35
tAH
95
Irc
Цикл считывания
220
tRACC
120
tcACC
60
ton
35
Цикл записи (режим ранней записи)
twc
220
twp
35
tnwc
95
twCH
35
twcs
10
ton
35
tRDH
95
сигнала CAS на высокий уровень после перехода сигнала RAS на низкий уровень (время удержания сигнала CAS) и интервал Irah — время удержания адреса строки после перехода сигнала RAS на низкий уровень, интервал 1слн — время удержания адреса столбца после перехода сигнала CAS на низкий уровень и интервал tAH — время удержания адреса столбца после перехода сигнала RAS на низкий уровень.
Рис. 6.6. Временные диаграммы работы динамического ЗУПВ. о — цикл считывания; б — цикл записи (режим ранней записи).
В цикле считывания за время выборки (tRAcc=120 нс) принимается время появления правильных данных на выходё DBWx после перехода сигнала RAS на низкий уровень. Кроме того, задаются также время выборки tCAcc относительно сигнала CAS и too — время запирания тристабильного вентиля на выходе Эвых после возвращения сигнала CAS на высокий уровень. Цикл записи поясняется на примере режима ранней записи (рис. 6.6,6). За время записи Irwc, которое в данном примере равно 95 нс, принимается интервал между переходом сигнала RAS на низкий уровень и возвращения сигнала WE на высокий уровень (после того как он перешел на низкий уровень). В данной временной диаграмме задается также минимальный интервал tWp, в который сигнал WE имеет низкий уровень. Кроме того, предусматриваются время удержания tRDH записываемых данных, выводимых процессором на линию DBX, относительно перехода сигнала RAS на низкий уровень и tDn относительно^ перехода сигнала CAS на низкий уровень. Когда сигнал CAS имеет низкий логический уровень, записываемые данные должны поступать на вывод DBX. Обычно сигнал WE переходит на низкий уровень раньше сигнала CAS. В данном случае минимальное значение этого опережения twcb равно —10 нс, т. е. это означает, что сигнал WE уже может перейти на низкий уровень и после перехода сигнала CAS на низкий уровень, однако эта задержка должна быть в пределах 10 нс. Кроме этого задается также минимальное значение twcn времени удержания сигнала WE в состоянии низкого логического уровня после перехода сигнала CAS в это состояние.
Из сказанного выше ясно, что использование динамического ЗУПВ требует довольно сложного управления. Тем не менее возможность приобретения ЗУ с большой емкостью по низкой цене, возможность построения памяти большой емкости на малых платах благодаря небольшим размерам корпуса динамических ЗУПВ и ряд других причин оправдывают широкое применение этих устройств.
Контроллер динамического ЗУПВ
Управление работой динамического ЗУПВ
Для использования динамического ЗУПВ необходима схема, передающая согласованные по времени сигналы адреса строки, RAS, адреса столбца, CAS, WE и др. Более того, требуется схема управления периодической регенерацией каждой строки че-
Рис. 6.7. Структура схемы управления динамическим ЗУПВ.
рез несколько миллисекунд. А если учесть, что запрос прерывания от процессора для считывания данных и запрос на регенерацию от схемы управления генерируются независимо друг от друга, то необходима схема, обеспечивающая упорядочение запросов от обоих устройств. Эта схема носит название арбитра. На рис. 6.7 показана структура схемы управления динамическим ЗУПВ. Если в ходе выполнения операций считывания-записи возникает запрос на регенерацию, его выполнение задерживается до окончания этих операций. Аналогично, если в режиме регенерации передается запрос на считывание-запись, выполнение этих операций задерживается до окончания регенерации. Допустим, что период регенерации равен 2,048 мс, а длительность цикла работы ЗУПВ составляет 250 нс. Тогда если регенерация всех 128 строк осуществляется непрерывно, работа процессора приостанавливается на длительное время (250 нсХ Х128 = 32 мкс). Поэтому обычно более предпочтительной является регенерация отдельных строк через равные интервалы времени (каждые 16 мкс — регенерация одной строки).
Таймер регенерации по истечении установленного .времени передает арбитру сигнал запроса на регенерацию. В свою очередь процессор передает арбитру сигнал запроса на считывание-запись (на рис. 6.7 эти сигналы обозначены RD и WR). Если память в данный момент не занята, арбитр разрешает осуществить считывание-запись и запускает схему формирования управляющих сигналов. Мультиплексор адреса служит для выбора старших или младших бит адреса, передаваемого процессором, а также выходных данных счетчика регенерируемого адреса. С каждым циклом регенерации содержимое этого счетчика увеличивается на 1. Кроме того, когда арбитр разрешает регенерацию по запросу, одновременно с этим сбрасывается таймер регенерации. Следует отметить, что в работе арбитра возможны ошибки, и хотя вероятность возникновения ошибки мала, ею нельзя пренебречь. Эти вопросы рассматриваются в разд. 8.2.4.
Схема контроллера
Построение схемы управления, показанной на рис. 6.7, на интегральных ТТЛ-схемах является довольно сложной задачей, ибо на это требуется по меньшей мере 20 кристаллов. Однако в настоящее время существует возможность реализации всей управляющей схемы на одном кристалле. Для увеличения быстродействия эта схема реализуется на биполярных ИС и носит название контроллера динамического ЗУПВ (например, модели 8203 фирмы Intel, DP8408 фирмы National Semiconductor и др.). Использование такого контроллера позволяет значительно упростить построение памяти на динамических ЗУПВ.
Контроллер работает с 16 входными и 8 выходными битами адреса и обеспечивает управление кристаллом емкостью 64К бит (рис. 6.8). Кроме того, он имеет 2-разрядные входы Bi и Во для выбора группы блоков памяти, которая в свою очередь может содержать максимально 4 такие группы. Для каждой группы вырабатывается свой сигнал RAS (в данном случае четыре сигнала RAS0—RAS3). Так как на линиях адресных сигналов 07-о и управляющих сигналов RAS0—RAS3, CAS и WE емкостная нагрузка составляет несколько сотен пикофарад, то контроллер можно непосредственно подсоединять к кристаллам памяти. Контроллер, схема которого показана на рис. 6.8, запускается, когда уровень какого-либо из сигналов RD или WP становится низким. В качестве этих управляющих сигналов можно использовать стробирующие сигналы RD и WR, передаваемые процессором для управления считыванием-записью. Однако в этом случае возникают задержки 1r или tw относительно нача-
WE Младшие разряды
WE
О7-0
CAS
RAS3
В
RAS2
А
RD
RAS1
RASO
CAS
Do
Старшие разряды
Сигнала- подтверждения
Вторая группа блоков
Третья группа блоков
Первая группа блоков
Выбор старших разрядов
Нулевая группа блоков
Выбор младших разрядов
А16-9
А1В
WE Адрес строки
Адрес столбца
Такто-—* вые импульсы
А8-1
УА7-0
°15-0 . ^
Рис. 6.8. Организация памяти объемом 256КХ16 бит с использованием контроллера динамического ЗУПВ.
Bn
ла цикла (рис. 6.9, а). Поэтому для сокращения времени считывания-записи в память запуск контроллера желательно осуществлять одновременно с началом цикла. Большинством процессоров используется стробирующий сигнал адреса, указывающий время начала цикла (рис. 6.9,6), и сигнал состояния (например, RD/WR), указывающий, является ли данный цикл циклом считывания или записи. По этим сигналам формируются управляющие сигналы READ (чтение), WRITE (запись), которые поступают в контроллер (рис. 6.9, в).
Программируемые ПЗУ
Стираемые программируемые ПЗУ
Стираемые программируемые ПЗУ (СППЗУ) представляют собой самый распространенный в последнее время тип программируемых ПЗУ. Все содержимое памяти таких ПЗУ можно сте-
б
Рис. 6.9. Формирование сигналов управления контроллером динамического ЗУПВ.
реть с помощью ультрафиолетового излучения, после чего произвести запись новых данных. Стандартная длина слова, хранимого в памяти, составляет 8 бит, поэтому устройства емкостью 64К бит имеют организацию 8К словХЗ бит. Расположение выводов такого ПЗУ показано на рис. 6.2, в. Выводы Vpp и PGM используются для программирования. Временная диаграмма работы и управление считыванием данных идентичны работе статического ЗУПВ. Выбор кристалла осуществляется сигналом низкого уровня CS. На выводе А]2-о подаются адрес-
ПодтверждениеПодтверждениеАдресаАдресаДанныеДанныеPGMPGMОЕОЕРис. 6.10. Временная диаграмма работы СППЗУ в циклах записи и подРис. 6.10. Временная диаграмма работы СППЗУ в циклах записи и подтверждения считывания.
Подтверждение
Подтверждение
Адреса
Адреса
Данные
Данные
PGM
PGM
ОЕ
ОЕ
Рис. 6.10. Временная диаграмма работы СППЗУ в циклах записи и под
Рис. 6.10. Временная диаграмма работы СППЗУ в циклах записи и под
ные сигналы. Считываемые данные выводятся на контакты О7 о при низком уровне сигнала ОЕ.
В режиме программирования (т. е. в режиме записи) сигнал CS имеет низкий логический уровень, а к выводу Vpp прикладывается высокое напряжение (~21 В). Адрес указывается с помощью сигналов, подаваемых на выводы А^-о, записываемые данные подаются на выводы 07-о. Запись осуществляется, если сигнал PGM имеет низкий уровень в течение 50 мс. После стирания ультрафиолетовым излучением содержимое всех ячеек памяти равно 1. В режиме записи определенные заранее биты переводятся из состояния логической «1» в состояние логического «0». После записи сигнал PGM переходит на высокий уровень и сигналом ОЕ, имеющим низкий уровень, производится считывание содержимого ячейки по данному адресу. Сравнением его с записываемой информацией подтверждается правильность записи. На рис. 6.10 показана временная диаграмма работы в режимах записи и подтверждения.
Однако на запись по данному способу 8 килослов потребуется 6 мин 40 с, а на запись 32К слов на кристалле емкостью 256К бит — уже 26 мин 40 с. Поэтому фирма Intel разработала способ записи данных, сокращающий это время почти в 5 раз.
Как известно, характеристики запоминающих элементов СППЗУ в режиме записи сильно различаются и для большей части элементов достаточно 8 мс интервала записи. По стандарту интервал времени записи выбирается равным 50 мс, что обусловлено характеристикой наихудшего запоминающего элемента. Поэтому если использовать метод циклической кратковременной записи-считывания, при котором запись оканчивается в момент ее правильного осуществления, то можно существенно сократить время записи.
Рис. 6.11. Схема сопряжения 28-выводного ЭСППЗУ 2817 с шиной.Рис. 6.11. Схема сопряжения 28-выводного ЭСППЗУ 2817 с шиной.Адреса^Адреса^RDY/BUSYRDY/BUSY250 нс250 нсCSCSWEWEДанныеДанные75 нс75 нс
Рис. 6.11. Схема сопряжения 28-выводного ЭСППЗУ 2817 с шиной.
Рис. 6.11. Схема сопряжения 28-выводного ЭСППЗУ 2817 с шиной.
Адреса^
Адреса^
RDY/BUSY
RDY/BUSY
250 нс
250 нс
CS
CS
WE
WE
Данные
Данные
75 нс
75 нс
Юме
>ис. 6.12. Временная диаграмма работы ЭСППЗУ 2817 в циклах стирания записи.
Фирма Intel предложила следующий метод записи (назы- 1аемый методом интеллектуального программирования):
Установить VPP = 21,0 В, Vdd = 6,0 В.
Циклически осуществлять запись длительностью 1 мс и юдтверждение ее считыванием (пока запись не станет правиль- юй).
Если запись повторялась N раз, осуществить дополни- ельную запись длительностью 4N мс.
Установить УРР=5,0 В; VDD=5,0 В.
Осуществить считывание и подтверждение всех данных.
Обычно второй этап заканчивается при N = 2, поэтому сред- ее время записи составляет 10 мс.
.4.2. Электрически стираемые программируемые ПЗУ
электрически стираемые программируемые ПЗУ (ЭСППЗУ) бладают следующими возможностями:
стирание и запись информации в рабочем состоянии стройства, смонтированного на плате;
пословное стирание и запись информации.
В отличие от СППЗУ, содержимое которого нельзя изменить, когда оно находится в рабочем состоянии (т. е. размещенные в нем программы и данные используются в фиксированном виде), ЭСППЗУ предусматривает возможность записи данных в рабочем состоянии, а так как оно является энергонезависимым ПЗУ, то информация сохраняется в нем и после отключения питания. Эту особенность можно использовать для придания ПЗУ новых функций.
По сравнению со считыванием стирание и запись осуществляются медленнее и требуют ~ 10 мс.
В качестве примера рассмотрим модель 2817 фирмы Intel с емкостью памяти 16К бит и организацией 2К словХВ бит, размещаемую в 28-выводном корпусе.
Подкючение к шине (рис. 6.11) осуществляется довольно просто. На вывод Vpp подается напряжение 21 В, и так как через этот вывод потребляется небольшой ток, его можно сформировать с помощью преобразователя от источника питания 5 В. На рис. 6.12 показана временная диаграмма работы этого устройства в режиме записи. В основном она идентична временной диаграмме в режиме записи статического ЗУПВ. Стробирующим сигналом записи, подаваемым на вход WE, адреса и данные фиксируются на кристалле, после чего автоматически осуществляется стирание и запись информации. Их разделение осуществляется сигналом низкого уровня (RDY/BUSY). Если вслед за этим осуществляется запись, по переднему фронту этого сигнала следует генерировать прерывание.
7
Интерфейсы периферийных устройств
Микрокомпьютеры используются в комбинации с различными периферийными устройствами. Типичными примерами таких устройств являются клавиатура, дисплей на базе электронно-лучевой трубки, принтер, накопитель на гибких дисках, модем и др. Эти устройства с помощью интерфейсов присоединяются к шине (рис. 7.1). Для упрощения аппаратных средств интерфейсы периферийных устройств эффективней реализовать на больших интегральных схемах, поэтому в настоящее время разрабатываются интерфейсные кристаллы. Ниже в качестве примеров рассматриваются интерфейсы последовательной связи, параллельного ввода-вывода и контроллер накопителя на гибких дисках.
7Л. Что такое интерфейс!
Для наиболее простого соединения периферийного устройства с шиной компьютера следует использовать порты ввода-вывода. Порт ввода представляет собой ряд тристабильных вентилей, а порт вывода является регистром (рис. 7.2). Это самая простая аппаратная реализация интерфейса. Все сигналы, которые компьютеру необходимо получить от периферийного устройства, поступают к нему через порт ввода. Все сигналы, которые компьютер должен передать периферийному устройству, выводятся через порт вывода. Прием и передача сигналов должны осуществляться под управлением программных средств. Однако такой способ реализации усложняет программное обеспечение и, кроме того, снижает производительность всей системы. Напротив, если имеются специальные аппаратные средства, автоматически выполняющие прием и передачу сигналов, программное обеспечение упрощается, а производительность
Основная памятьОсновная памятьЛиния связиЛиния связиРис. 7.1. Подключение к процессору различныхРис. 7.1. Подключение к процессору различных
Основная память
Основная память
Линия связи
Линия связи
Рис. 7.1. Подключение к процессору различных
Рис. 7.1. Подключение к процессору различных
периферийных устройств.
Периферийное устройство
Рис. 7.2. Соединение процессора с периферийным устройством через порт ввода-вывода.
системы возрастает. Кристалл, на котором реализованы аппаратные средства интерфейса, называется интерфейсным кристаллом.
Из рис. 7.1 следует, что интерфейсы могут быть двух типов: со стороны шины компьютера и со стороны периферийного устройства.
Характеристики интерфейса со стороны периферийного устройства должны быть согласованы с характеристиками этого устройства. В соответствии с типом устройства (например, для клавиатуры, дисплея, принтера, гибких дисков, модема и др.) надо использовать специализированный интерфейсный кристалл. Однако и здесь имеется реальная проблема, заключающаяся в том, что очень часто однотипные периферийные устройства имеют индивидуальные отличия, поэтому с целью унификации интерфейсного кристалла используется метод определения этих отличий программным путем. Интерфейс, в котором данная проблема решена подобным образом, называется программируемым интерфейсом. Отличия определяются с помощью записи соответствующих битовых комбинаций в предусмотренные для этого регистры интерфейсного кристалла.
Для приведения в действие периферийных устройств (таких, как накопитель на гибких дисках или дисплей) обычно требуется сложное управление, при этом желательно, чтобы такое управление осуществлялось всеми интерфейсами автоматически. Для этого имеется несколько команд, одна из которых ука-
Интерфейсы периферийных устройств зывается компьютером, который записывает требуемую команду в имеющийся в интерфейсном кристалле специальный регистр, называемый регистром команд. Остальное выполняется интерфейсом автоматически. Интерфейс подобного рода часто называют контроллером.
Желательно, чтобы интерфейс со стороны шины компьютера был совместим со структурой шины. Однако здесь приходится учитывать различия в структурах шин процессоров разных типов. Так, интерфейсный кристалл, спроектированный для модели 8086, совместим со структурой шины этого процессора, а интерфейсный кристалл, спроектированный для модели MC68000, совместим с шиной процессора MC68000. Интерфейсный кристалл, рассчитанный на конкретное применение, конечно, можно соединять с шиной процессора другого типа, однако для этого потребуются вспомогательные схемы. Конфигурацию вычислительной системы можно упростить, если выбрать процессор, совместимый с различными интерфейсными кристаллами. Набор интерфейсных кристаллов для определенного процессора называется семейством периферийных кристаллов. При выборе процессора необходимо учитывать степень совершенства такого семейства, а также перспективы его дальнейших разработок.
Интерфейс последовательной связи
Последовательная связь
Последовательная связь предусматривает последовательную (по битам) передачу данных. Такая связь может осуществляться как между компьютерами, так и между компьютером и другими устройствами. Этот вид связи широко используется для передачи данных между устройствами, расположенными в одном помещении, но, если воспользоваться телефонными линиями, такую связь можно осуществлять на любом расстоянии.
Ниже рассматривается последовательная связь между двумя устройствами (1—^l). В локальных сетях данные также передаются последовательно, однако существенное отличие от данного случая состоит в том, что между множеством устройств, соединяемых каналами связи, организуется связь N—► —>Nl). Существуют два режима последовательной связи: дуплексный и полудуплексный режимы (рис. 7.3).
В дуплексном режиме одновременно с передачей данных из устройства А в устройство В устройством А может осуществляться прием данных, передаваемых устройством В. В полудуплексном режиме осуществлять одновременно передачу и прием
н Ти есть каждое устройство соединено со всеми остальными - Прим, ped.'
Устройство ЛУстройство ЛУстройство ВУстройство Ваа
Устройство Л
Устройство Л
Устройство В
Устройство В
а
а
Устройство /1Устройство /1Устройство ВУстройство ВРис. 7.3. Режимы связи.а—дуплексный режим; б — полудуплексный режим.Рис. 7.3. Режимы связи.а—дуплексный режим; б — полудуплексный режим.
Устройство /1
Устройство /1
Устройство В
Устройство В
Рис. 7.3. Режимы связи.
а—дуплексный режим; б — полудуплексный режим.
Рис. 7.3. Режимы связи.
а—дуплексный режим; б — полудуплексный режим.
нельзя. В этом режиме предусмотрено временное разделение приема и передачи с помощью переключателя. Если оба устройства соединены между собой сигнальными проводами, для организации дуплексного режима понадобятся 3 таких провода (для передачи, приема и общая земля). В полудуплексном режиме достаточно двух проводов. Заметим, что режимы связи не определяются непосредственно количеством проводов, и в действительности, как будет далее показано, дуплексный режим можно организовать только двумя проводами телефонной линии. Таким образом, дуплексным называется режим одновременной передачи и приема данных, организованный любым способом.
Как уже говорилось выше, последовательную связь можно использовать не только для передачи данных между компьютерами, но и для передачи данных между любыми устройствами. Наиболее часто данный вид связи используется для соединения компьютера с информационным терминалом. « Этот терминал выполняет функции приема-передачи данных, и в его состав
КомпьютерИнформационный терминал
КомпьютерИнформационный терминал
б
Рис. 7.4. Способы подключения информационного терминала к компьютеру. а эхоплексная передача данных; б — прямая индикация (или полудуплексный режим).
обычно входят клавиатура, дисплей (или принтер) и интерфейс последовательной связи.
Информационный терминал широко используется в качестве операторского пульта для управления компьютером.
Последовательная связь информационного терминала обычно предусматривает дуплексный режим передачи данных. В этом режиме данные, вводимые с клавиатуры через передающую схему, поступают в компьютер, а выводимые из компьютера данные через схему приема отображаются на дисплее (рис. 7.4, а). Однако при такой организации связи оператор не может удостовериться в правильности набора данных на клавиатуре, поэтому вся принимаемая компьютером информация передается обратно на терминал. Этот режим работы терминала носит название эхоплексной передачи данных. Если такая передача не применяется, выход клавиатуры напрямую соединяется с дисплеем, и данные, вводимые с клавиатуры, непосредственно отображаются на экране дисплея (рис. 7.4,6). При таком методе работы в процессе ввода данных с клавиатуры ввод их в компьютер не производится. Таким образом, прием и
Рис. 7.5. Асинхронная передача данных (стартстопная система), а — сигнальные провода, б —сигнал
Один кадр
СтартовыйСтоловый
битббит
передача данных одновременно не осуществляются, поэтому данный режим работы можно назвать полудуплексным, т. е. информационный терминал может работать и в полудуплексном режиме.
Асинхронная передача данных
Последовательная связь организуется асинхронным и синхронным способами передачи данных. Ниже описывается наиболее распространенная асинхронная передача данных. Такая система служит для передачи символов, вводимых с клавиатуры информационного терминала, т. е. когда при каждом нажатии на клавишу передается код одного символа. Так как ввод данных с клавиатуры осуществляется нерегулярно, то передача является асинхронной. В качестве кода символов широко используется 7-разрядный код АЗСП0. Разумеется, этот код можно использовать для передачи любых данных, хранящихся в памяти. В этом случае осуществляется побайтовая передача данных. В асинхронном режиме необходимо указывать начало и конец единицы информации, поэтому в начале передаваемых данных помещают стартовый бит, а в конце — столовый бит. Таким образом, когда передачи нет, на линии устанавливается состояние логической «1», при передаче данных стартовый бит равен 0, а столовый бит равен 1. (Иногда используется более одного стартового бита.) На рис. 7.5 показан случай передачи 8-разрядного числа 10110010. Единица передаваемой информации называется кадром.
Приемник и передатчик не могут использовать одни и те же тактовые сигналы, однако их тактовую частоту можно подобрать таким образом, чтобы сигналы совпадали по времени. Скорость передачи данных устанавливается заранее. Например, при скорости передачи 300 бит/с интервал между битами данных составляет 3,33 мс. В приемнике проверяются значения входных сигналов в интервале времени несколько короче
u Американский стандартный код для обмена информацией. — Прим перев.
3,33 мс. Если в какой-то момент входной сигнал переходит из состояния логической единицы в нуль, этот момент считается началом кадра. Спустя 1,67 мс после этого проверяется значение входного сигнала. В середине первого бита оно должно быть нулевым (в противном случае переход из единицы в нуль, зарегистрированный в начале, считается сбоем). После этого каждые 3,33 мс считываются остальные 8 сигналов, представляющих собой информацию. Затем проверяется наличие стопового бита и идентифицируется момент перехода входного сигнала из 1 в 0. Такая система последовательной связи называется также стартстопной системой.
В стартстопной системе тактовые частоты передатчика и приемника могут отличаться на несколько процентов. Время обнаружения на принимающей стороне часто смещается от положения середины бита, и если оно не перекрывает положения соседнего бита в кадре, информация воспринимается правильно.
Модем
Для передачи данных по телефонным линиям используется модем (рис. 7.6). Этот вид связи имеет следующие ограничения: — используется только пара сигнальных проводов;
— диапазон частот составляет 300—3000 Гц.
Кроме того, при такой связи нельзя непосредственно передавать двоичные сигналы, содержащие постоянные составляющие тока (рис. 7.5,6). Однако в этом случае дуплексный режим можно реализовать только парой сигнальных проводов. В передатчике двоичные сигналы модулируют периодический сигнал с частотой из указанного диапазона, а на принимающей стороне эти сигналы демодулируются, т. е. восстанавливаются первоначальные двоичные сигналы. Устройство, используемое для модуляции и демодуляции сигналов, называется модемом (модем— сокращение слов модулятор — демодулятор).
Таблица 7.1
Пример распределения частот при работе с частотной модуляцией
Режим работы
Передача —• прием
Частота метки (частота пропуска), Гц
Вызов
Передача Прием
1080±100
1750±100
Ответ
Передача Прием
1750±100
1080±100
Рис. 7.6. Последовательная связь по телефонной линии.Рис. 7.6. Последовательная связь по телефонной линии.
Рис. 7.6. Последовательная связь по телефонной линии.
Рис. 7.6. Последовательная связь по телефонной линии.
Известны различные системы модуляции — демодуляции. В качестве примера рассмотрим наиболее простую систему работы с частотной модуляцией. В такой системе синусоидальный сигнал с некоторой частотой /о используется в качестве несущего, логическая единица соответствует сигналу с частотой /о + А/> а логический нуль — сигналу с частотой /о*—А/. Другими словами, в соответствии со значением сигнала 1 и 0 частота сдвигается влево и вправо на определенную величину. Частота, соответствующая передаваемой единице, называется частотой метки, а частота, соответствующая передаваемому нулю,— частотой пропуска. С помощью этой системы можно легко реализовать дуплексный режим связи со скоростью передачи 300 бит/с. В табл. 7.1 показан пример распределения частот. Модем работает в двух режимах: режиме вызова (CALL) и режиме ответа (ANSWER), т. е. если один
модем работает в режиме вызова, то другой модем — в режиме ответа.
Существуют два способа сопряжения модема с телефонной линией: акустический и электрический. Акустическое сопряжение предусматривает использование обычного телефонного аппарата (рис. 7.7, а) с микрофоном и громкоговорителем, которые образуют акустическое устройство связи. На практике модем и это устройство выпускаются в виде одного изделия, которое обычно и называется акустическим устройством связи.
При электрическом сопряжении между модемом и телефонной линией помещают разделительный трансформатор (рис. 7.7,6), который служит для защиты телефонного канала от сбо
ев модема, а также для защиты модема от напряжения постоянного тока, существующего в телефонной линии (это напри-
Демодулятор
ФильтрФильтрПринимаемыеПринимаемыеДатчикДатчик185G Гц185G Гцi&i&1650 Гц1650 Гц55МодуляторМодуляторТелефонная линияТелефонная линияДемодуляторФильтрДемодуляторФильтр6Рис. 7.7. Подключение модема к телефонной линии. и — акустическое сопряжение; б— электрическое сопряжение.6Рис. 7.7. Подключение модема к телефонной линии. и — акустическое сопряжение; б— электрическое сопряжение.
Фильтр
Фильтр
Принимаемые
Принимаемые
Датчик
Датчик
185G Гц
185G Гц
i&
i&
1650 Гц
1650 Гц
5
5
Модулятор
Модулятор
Телефонная линия
Телефонная линия
Демодулятор
Фильтр
Демодулятор
Фильтр
6
Рис. 7.7. Подключение модема к телефонной линии. и — акустическое сопряжение; б— электрическое сопряжение.
6
Рис. 7.7. Подключение модема к телефонной линии. и — акустическое сопряжение; б— электрическое сопряжение.
жение достигает нескольких десятков вольт). В этом случае модем и электрический соединитель выпускаются в виде одного изделия, которое обычно называется модемом.
Стандарт RS232C
Модем подключается к информационному терминалу (рис. 7.6), и, для того чтобы любой терминал можно было соединить с любым модемом, желательно стандартизировать систему соеди-
Рис. 7.8. 25-штырьковый двухрядный разъем, соответствующий стандарту RS232C. ' .
нения. В настоящее время широко используется американский стандарт RS232C. С этим стандартом согласуются и японские стандарты JIS и С6361. Максимальная скорость передачи данных, согласно стандарту RS232C, составляет 20 кбит/с.
Модем в этом стандарте называется устройством сопряжения. Кроме информационного терминала к нему подключаются различные устройства (в том числе и компьютер), которые объединяются одним названием «информационный терминал». Стандарт описывается в виде системы соединения устройства сопряжения с информационным терминалом.
Уровень напряжения на входе устройства сопряжения свыше +3 В считается высоким, а ниже —ЗВ — низким уровнем. Видно, что уровни сигналов ТТЛ использовать нельзя, и поэтому на входе и выходе устройства устанавливаются схемы преобразования уровня напряжения. Высокий и низкий уровни напряжения означают соответственно, что биты данных равны 0, управляющие сигналы активные и биты данных равны 1, управляющие сигналы неактивные.
Входной импеданс равен постоянному сопротивлению 3— 7 кОм плюс емкость не более 2500 пФ.
Напряжение от 4-5 до 4-15 В на выходе устройства сопряжения соответствует высокому логическому уровню сигналов, а напряжение от —5 до —15 В — низкому уровню.
На выходной импеданс не предусмотрено норм, однако ток короткого замыкания нс должен превышать 500 мА. Кроме того, существуют еще несколько ограничений, касающихся электрических характеристик, поэтому при проектировании схемы преобразования уровня напряжения необходимо подробно изучить настоящий стандарт.
Соединитель. В качестве соединителя используется 25-штырьковый двухрядный разъем (рис. 7.8)—широко распространенный тип соединителя. В устройстве сопряжения устанавливается гнездо разъема, а на конце кабеля от информационного терминала имеется его вилка.
Соединительные провода. Имеются 13 соединительных проводов, но из них обычно используются только девять (рис. 7.9).
Информационный герминалУстройство сопряжения
। ■ " "Земля" корпуса
———► Передаваемые данные
^—— Принимаемые данные
Запрос на передачу
■"• ■Разрешение передачи
<■— Готовность устройства сопряжения
" 1 "Подвешенная земля"
Обнаружение несущей
принимаемых данных
* Готовность информационного терминала
Номерштырькана оазъеме
Рис. 7.9. Основные соединительные провода по стандарту RS232C (помимо указанных можно использовать контакты 15, 17, 22, 24).
Передаваемые данные (второй штырек).
Данные передаются из терминала в устройство сопряжения через второй штырек. Если данные не передаются, на выходе терминала устанавливается логическая 1. Кроме того, пока все управляющие сигналы (готовность устройства сопряжения, готовность терминала, запрос на передачу, разрешение передачи) не установятся в активное состояние («включено»), передача данных не осуществляется.
Принимаемые данные (третий штырек).
Данные передаются из устройства сопряжения в терминал.
«Подвешенная земля» (седьмой штырек).
Общий земляной провод.
Готовность устройства сопряжения (шестой штырек).
Этот сигнал означает, что источник питания устройства сопряжения включен и устройство находится в рабочем состоянии. Терминал по этому управляющему сигналу передает сигнал запроса на передачу.
Готовность терминала (двадцатый штырек).
Этот сигнал означает, что источник питания терминала включен и терминал находится в рабочем состоянии. В устройстве сопряжения этот сигнал можно использовать для контроля за соединением с телефонной линией. При акустическом сопряжении оператор сам осуществляет эту связь, поэтому необходимость в данном сигнале отпадает.
Запрос на передачу (четвертый штырек).
Управляющий сигнал, требующий начала передачи данных из терминала в устройство сопряжения. Когда этот сигнал становится активным, включаются средства передачи данных устройства сопряжения (т. е. начинается передача несущей частоты). Если сигнал запроса на передачу становится неактивным (состояние «выключено»), устройство сопряжения после передачи единицы информации в ходе текущей передачи по телефонной линии выключает средства передачи.
Разрешение передачи (пятый штырек).
Управляющий сигнал, разрешающий начало передачи данных устройством сопряжения в терминал. После того как устройство сопряжения по сигналу запроса на передачу от терминала включает средства передачи, оно передает сигнал разрешения передачи в терминал (время задержки в этом случае обычно порядка сотен миллисекунд).
Обнаружение несущей частоты (восьмой штырек).
Если несущая из телефонного канала правильно принимается в устройстве сопряжения, этот сигнал становится активным.
Земля корпуса (первый штырек).
Провод, заземляющий корпус устройства.
Модель 8251А фирмы Intel
В настоящее время выпускается множество интерфейсных кристаллов для реализации последовательной связи. В качестве примера рассмотрим модель 8251А, производимую фирмой Intel. Это устройство можно использовать для асинхронной и синхронной передачи данных. Ниже описаны только средства асинхронного режима его работы.
Структура и функции. На рис. 7.10 показана структура интерфейсного кристалла, а на рис. 7.11 — пример его сопряжения с шиной. В этом интерфейсе используются пять 8-разрядных регистров: регистры передаваемых, принимаемых данных и установки режима, управляющий регистр и регистр состояния. 8 бит передаваемых данных записываются параллельно через порт D7.0, помещаются в регистр буфера передачи и выводятся в последовательной форме через выход TXD. Данные, приходящие в последовательной форме на вход RXD, помещаются в соответствующий регистр буфера приема и затем параллельно в 8-разрядном коде считываются из порта D7-0. Благодаря стартстопной системе передача и прием данных осуществляются автоматически. Кроме того, в режиме передачи в конце кадра автоматически устанавливается дополнительный бит контроля четности, а в режиме приема осуществляется проверка на четность принимаемых данных.
CLOCKCLOCKРис. 7.10. Структура интерфейса последовательной связи (Intel 8251 А).Рис. 7.10. Структура интерфейса последовательной связи (Intel 8251 А).°7-0°7-0
CLOCK
CLOCK
Рис. 7.10. Структура интерфейса последовательной связи (Intel 8251 А).
Рис. 7.10. Структура интерфейса последовательной связи (Intel 8251 А).
°7-0
°7-0
Рис. 7.11. Подключение интерфейса последовательной связи к шинам.
Синхросигналы передачи поступают на вход ТХС, а синхросигналы приема — на выход RXC. Обычно это одни и те же синхросигналы. Частота передаваемых синхросигналов определяет скорость передачи данных, которая составляет Vie или 7б4 их частоты и задается режимом работы. Для выбора дискретных данных, поступающих из порта RXD, используются те же синхросигналы передачи. Максимальная скорость передачи данных, согласно стандарту RS232C, равна 20 кбит/с. Данный интерфейс предусматривает возможность передачи на максимальной скорости. На практике часто используются следующие значения скорости: 300, 600, 1200, 2400, 4800, 9600, 19 200бит/с.
Тогда, например, для передачи данных со скоростью 1200 бит/с частота синхросигналов ТХС и RXC должна быть 16-кратной, т. е. равной 19,2 кГц, или 64-кратной, т. е. равной 76,8 кГц.
По окончании передачи и приема соответственно данных уровни сигналов TXRDY и RXRDY становятся высокими. Если сигналы TXRDY и RXDRY имеют высокие уровни, процессор может соответственно осуществлять запись и считывание следующих данных в интерфейс. Другими словами, когда ввод-вывод осуществляется по прерыванию, сигналы TXRDY и RXRDY служат сигналами прерывания, передаваемыми в процессор. Их значения можно также считывать из регистра состояния. При упорядоченном опросе считывается содержимое регистра состояния и после подтверждения высокого уровня сигналов TXRDY и RXRDY осуществляется запись или считывание данных. Если до считывания данных процессором принимаются следующие данные, они теряются. Поэтому время считывания принимаемых данных должно быть достаточно большим.
В кристалле используются еще 4 сигнала — два входных сигнала: DSR (готовность устройства сопряжения) и CTS (разрешение передачи) и два выходных сигнала: DTR (готовность терминала) и RTS (запрос передачи).
Значения входных сигналов определяются считыванием содержимого регистра состояния, а значения выходных сигналов устанавливаются путем записи 1 или 0 в управляющий регистр. Входные и выходные сигналы можно использовать и в качестве одноименных сигналов, предусмотренных стандартом RS232C. Так, если сигнал CTS имеет низкий уровень, то данные, записанные в регистре передаваемых данных, выводятся из порта TXD, и даже если уровень сигнала CTS станет высоким, данные будут передаваться до последнего бита кадра.
Иногда в процессе работы компьютера с терминалом необходимо передать в компьютер запрос прерывания. Например,
при выполнении некоторой программы может возникнуть необходимость приостановить ее и возвратиться в ОС. Для этого на клавиатуре терминала имеется специальная функциональная клавиша BREAK (перерыв). В системе последовательной связи это состояние соответствует непрерывной передаче нуля. Как уже говорилось выше, если передача данных не осуществляется, непрерывно передаются единицы. В состоянии передачи в конце каждого кадра обязательно передается столовый бит, который равен 1, поэтому нули могут передаваться непрерывно только в течение времени передачи одного кадра, т. е. ситуация, когда нули передаются по времени дольше длительности кадра, воспринимается как перерыв. Если какой-либо бит в управляющем регистре равен 1, интерфейс непрерывно передает нули. В интерфейсе имеются также средства обнаружения сигнала перерыва, передаваемого партнером, по которому уровень сигнала BRKDET становится высоким.
Управление записью-считыванием. В интерфейсе имеется ввод С/D для разделения сигналов на управляющие и информационные (данные). При записи передаваемых данных или считывании принятых данных уровень сигнала С/D задается низким. Если же осуществляется запись в регистр установки режима и управляющий регистр или считывание из регистра состояния, уровень этого сигнала задается высоким. На рис. 7.11 линия самого младшего бита адреса Ао соединяется с выводом С/D. В табл. 7.2 показано распределение сигналов управления записью-считыванием. Из таблицы видно, что, когда сигнал С/D имеет высокий уровень, осуществляется запись в регистр установки режима и управляющий регистр, однако лишь та запись воспринимается как установка режима, которая следует непосредственно после сброса.
Таблица 7,2
Управление записью-считыванием
CS C/D RD WR
Действия
0001
0010
0101
0110
0X11
1XXX
Считывание принятых данных
Запись передаваемых данных Считывание из регистра состояния Запись в регистр установки режима и в управляющий регистр
На выходах D7-o устанавливается безразличное состояние
Программирование. Регистр установки режима имеет следующую структуру:
7О
S2 ’ S,
ЕР
PEn| L2 1 L,
в2 в.
Название всех бит указано в табл. 7.3. Ситуация, когда В2В1=00, соответствует синхронному режиму работы, который здесь нс рассматривается. Из этой таблицы видно, что можно иметь 5—8 бит данных и 1, 1 ~ , 2 стоповых бит1).
Управляющий регистр имеет следующую структуру:
7О
0
IR
RTS
ER
SBRK
RXE
DTR
TXE
Если все биты регистра равны 1, осуществляются следующие операции управления:
1R (индексный : Сброс внутреннего состояния
регистр)
RTS: Уровень сигнала RTS становится низким
ER: Сбрасываются все флаги обнаружения ошибок
SBRK:Передается сигнал BREAK (перерыв)
RXE:Включаются средства приема
DTR:Уровень сигнала DTR становитсянизким
ТХЕ:Включаются средства передачи
Регистр состояния имеет следующую структуру:
7
0
DSR
BRK
DET
FE
OE
PE
TX EMP
RX RDY
TX I
DRY|
где сигнал DSR имеет низкий уровень; BRKDET— обнаружен сигнал BREAK; FE— обнаружена ошибка кадра (столовый бит нс обнаружен); ОЕ — обнаружена ошибка из-за увеличения темпа работы (преждевременный прием новых данных): РЕ — обнаружена ошибка, выявленная с помощью контроля четности; ТХЕМР — передача завершена; RXRDY — данные приняты (но еще не считаны процессором); TXRDY — регистр передаваемых данных пуст.
Биты BRKDET, ТХЕМР, RXRDY выводятся непосредственно через выходные контакты. Бит состояния TXRDY указывает только на то, что регистр передаваемых данных пуст, а выходной сигнал TXDRY указывает, что бит ТХЕ управляющего регистра равен 1, входной сигнал CTS имеет низкий уровень, а также, что регистр передаваемых данных пуст.
1А бита означает, что соответствующий сигнал передается в течение
времени, равного 1,5 длительности передачи 1 бит. — Прим. ред.
Таблица 7.3
Содержимое регистра установки режима
ВитыНазначение
Состояние
B2BiКратность частоты синхросиг-01
налов ТХС, RXCЮ
11
L2L]Разрядность данных00
10
11
PENКонтроль четности0
ЕРТип контроля четности0
16
64
5
6
7
8
Нерабочий режим Рабочий режим Нечетность Четность
S2SjЧисло стоповых бит00
01
Не используется
10
11
2
*) В этом случае на вход RXC необходимо подать так юные импульсы, синхронизм* роканныс с данными.
Примеры. На рис. 7.12, а показана схема включения интерфейса для случая сопряжения компьютера с модемом. Передача данных от компьютера осуществляется следующим образом. В начале устанавливается низкий уровень сигнала «готовность терминала» (DTR). Затем подтверждается низкий логический уровень сигнала «готовность устройства сопряжения» (DSR) и устанавливается низкий уровень сигнала «запрос» на передачу (RTS). После этого подтверждается сигнал разрешения передачи (CTS), поступающий из модема. Кроме того, подтверждается сигнал обнаружения несущей принимаемых данных (CD). Далее включаются средства передачи, т. е. бит ТХЕ становится равным 1, и с этого момента начинается передача данных. Прием данных подтверждается либо прерыванием по сигналу RXRDY, либо считыванием регистра состояния, после чего производится считывание принятых данных.
На рис. 7.12,6 показана схема включения интерфейса, когда терминал используется в качестве пульта управления компьютером. В этом случае можно обойтись тремя сигнальными проводами (сигналы RXD, TXD и GND (земля), так как при включении источника питания терминала автоматически устанавливаются режимы передачи и приема.
8251 А
8251 А
Рис. 7.12. Практическое применение интерфейса последовательной связи. а — подключение к модему; б — подключение к информационному терминалу.
Устройство ЛУстройство /?
кабель
Рис. 7.13. Сопряжение устройств А и В через интерфейс по стандарту RS232C.
Устройства с интерфейсом, выполненным в соответствии со стандартом RS232C, можно непосредственно сопрягать друг с другом. В этом случае используется только соединительный кабель (на рис. 7.13 обратите внимание на соответствие сигнальных проводов передающей и принимающей сторон). Однако здесь заранее необходимо определить порядок передачи управляющих сигналов DSR, DTR, CTS, RTS между устройствами А и В. Другими словами, возможность сопряжения означает лишь возможность создания канала связи аппаратным путем (должно быть соответствие соединителей, уровней сигналов, сигналов каждого вывода), при этом возникает другая проблема, заключающаяся в том, каким образом осуществить связь. Например, если устройства А и В на рис. 7.13 являются персональными компьютерами, они должны обладать программными средствами, обеспечивающими взаимосогласованную связь.
7.3. Интерфейс
параллельного ввода-вывода
Параллельный ввод-вывод
При параллельном вводе-выводе между интерфейсом и периферийным устройством одновременно передается большое количество бит. Широко используется 8-бит ввод-вывод, хотя возможен также параллельный ввод-вывод 16 бит.
При выводе данных из интерфейса в периферийное устройство осуществляются следующие операции:
Подготавливаются выходные данные (данные помещаются в выходной регистр).
Подтверждается сигнал окончания подготовки к приему данных от периферийного устройства.
В периферийное устройство передается сигнал считывания данных.
При вводе данных в интерфейс из периферийного устройства выполняются следующие операции:
Подготовка к вводу данных (очищается входной регистр).
Подтверждается сигнал завершения передачи данных в периферийное устройство.
Считываются данные и в периферийное устройство передается сигнал завершения считывания.
Сигналы, которыми обмениваются устройства с целью обеспечения передачи данных, называются сигналами квитирования установления связи (или сигналами «рукопожатия»).
Интерфейс
READY -
STROBE^
DATA к
—Р
Периферийное устройство
Рис. 7.15. Передача данных квитированием установления связи (относительно интерфейса).
а —• вывод данных; б — ввод данных.
При выводе данных (рис. 7.14, а) такими сигналами являются READY (готовность) и STROBE (строб), а при вводе данных (рис. 7.14,6) — READY и АСК (подтверждение). Сигнал READY передается периферийным устройством, причем высокий уровень этого сигнала соответствует окончанию подготовки к передаче. STROBE — стробирующий сигнал, по которому периферийное устройство производит считывание данных. Длительность импульса ts должна быть согласована с характеристиками периферийного устройства. Кроме того, состояние сигналов выходных данных должно поддерживаться неизменном все время, пока сигнал STROBE имеет низкий уровень. АСК— стробирующий сигнал, передаваемый после окончания считыва-
STROBE READY^ DATASTROBE READY^ DATAИнтерфейсИнтерфейсПериферийное устройствоПериферийное устройствоРис. 7.15. Передача данных квитированием установления связи (относительно периферийного устройства).и — вывод данных; б — ввод данных.Рис. 7.15. Передача данных квитированием установления связи (относительно периферийного устройства).и — вывод данных; б — ввод данных.
STROBE READY^ DATA
STROBE READY^ DATA
Интерфейс
Интерфейс
Периферийное устройство
Периферийное устройство
Рис. 7.15. Передача данных квитированием установления связи (относительно периферийного устройства).
и — вывод данных; б — ввод данных.
Рис. 7.15. Передача данных квитированием установления связи (относительно периферийного устройства).
и — вывод данных; б — ввод данных.
ния данных. Другими словами, считывание завершается до возвращения сигнала АСК на высокий уровень. Длительность импульса АСК должна соответствовать характеристикам периферийного устройства. Если подготовка заканчивается интерфейсом за короткий интервал времени, то ввод-вывод осуществляется по сигналу READY, имеющему высокий уровень, передаваемому периферийным устройством. Выше рассматривался случай определения времени считывания данных относительно интерфейса, однако то же можно осуществлять относительно периферийного устройства (рис. 7.15).
Кристалл интерфейса параллельного ввода-вывода использует сигналы, квитирующие установление связи с портами вво-
да-вывода. Но иногда необходимо использовать вспомогательные схемы, если этих сигналов недостаточно. Это обусловлено тем, что интерфейс полностью непрограммируем.
Модель Z8420 фирмы Zilog
В настоящее время выпускается множество разнообразных интерфейсных кристаллов, с помощью которых осуществляется параллельный ввод-вывод. В качестве примера такого интерфейса ниже рассматривается модель Z8420 фирмы Zilog.
Структура и функции. На рис. 7.16 показана структура этого интерфейса. Кристалл интерфейса снабжен двумя 8-разряд- ными портами А и В, в функции которых входит обеспечение четырех режимов работы:
режим 0 (побайтовый вывод данных);
режим 1 (побайтовый ввод данных);
режим 2 (двунаправленная передача данных);
режим 3 (побитовый ввод-вывод данных).
RDY и STB — сигналы, квитирующие установление связи. Кроме них используются еще два сигнала: C/D — разделение на команды и данные и А/В — разделение на порты А и В.
Сигналы IEI и IEO используются при организации приоритетных прерываний методом гирляндной цепи. Ниже подробно описываются операции, осуществляемые в каждом режиме. Режим 0 (побайтовый вывод данных). Когда процессор производит запись данных в порт, они помещаются в выходной ре-
IEOIEOIEIIEIBRDYВ7-0BRDYВ7-0А7-0А7-0Рис. 7.16. Организация кристалла интерфейса параллельного ввода-вывода (упрощенный вариант модели Z8420).Рис. 7.16. Организация кристалла интерфейса параллельного ввода-вывода (упрощенный вариант модели Z8420).
IEO
IEO
IEI
IEI
BRDY
В7-0
BRDY
В7-0
А7-0
А7-0
Рис. 7.16. Организация кристалла интерфейса параллельного ввода-вывода (упрощенный вариант модели Z8420).
Рис. 7.16. Организация кристалла интерфейса параллельного ввода-вывода (упрощенный вариант модели Z8420).
RDYSTBRDYSTB
RDY
STB
RDY
STB
INT
б
Рис. 7.17. Временная диаграмма работы интерфейса Z8420 в режимах 0 и 1.
гистр этого порта, а содержимое последнего выводится через выходные линии порта.
При этом, согласно временной диаграмме, показанной на рис. 7.17, а, сигнал DRY имеет высокий уровень. Периферийное устройство обнаруживает это состояние сигнала и осуществляет считывание данных. Кроме того, оно передает стробирующий сигнал STB. По этому сигналу интерфейс возвращает сигнал RDY на низкий уровень и одновременно передает сигнал запроса прерывания INT. Процессор в соответствии с этим сигналом осуществляет запись новых данных в порт.
Режим 1 (побайтовый ввод данных). Согласно временной диаграмме, показанной на рис. 7.17,6, при считывании данных процессором из входного регистра порта сигнал RDY имеет высокий уровень. Периферийным устройством идентифицируется состояние этого сигнала и осуществляется вывод новых данных на выходные линии порта. Кроме того, им передается стробирующий сигнал STB. По этому сигналу данные помещаются во входной регистр порта, сигнал RDY возвращается на низкий уровень и одновременно передается сигнал запроса прерывания INT. По сигналу INT процессор считывает из порта новые данные.
Режим 2 (двунаправленная побайтовая передача данных). В этом режиме можно использовать только порт А, причем сигналы ARDY, ASTB порта А служат для управления выводом,
а сигналы BRDY, BSTB порта В — для управления вводом данных. В этом случае порт В можно использовать только в режиме 3.
Как уже говорилось выше, этот режим позволяет осуществлять как ввод, так и вывод данных. Это не означает, однако, что выходные данные из порта А и выходные данные из периферийного устройства передаются одновременно. В отличие от режима О из порта А данные выводятся только тогда, когда сигнал ASTB имеет низкий уровень. Периферийное устройство работает аналогично, т. е. из него выводятся данные только тогда, когда сигнал BSTB имеет низкий уровень (т, е, выходные тристабильные вентили управляются сигналом BSTB). Если сигналы ARDY и BRDY имеют низкий уровень, ни сигнал ASTB, ни сигнал BSTB не передаются. Если сигнал ARDY имеет высокий уровень, а сигнал BRDY — низкий, то посылается сигнал ASTB и выходные данные считываются в периферийном устройстве. Наоборот, когда ARDY имеет низкий уровень, a BRDY — высокий, в порт передается сигнал BSTB, по которому выходные данные периферийного устройства считываются из порта и помещаются во входной регистр.
Режим 3 (побитовый ввод-вывод). В этом режиме можно указать любой бит для его ввода или вывода. Содержимое данных, записываемых в порт, появляется на выходной линии указанного к выводу бита. При считывании данных из порта осуществляется считывание значений текущих входных бит, одновременно также считываются значения текущих выходных бит.
В каждом порте имеется 8-разрядный регистр указания режима ввода-вывода, 8-разрядный регистр указания маски и 2-разрядный регистр указания условия прерывания. С помощью регистра указания маски автоматически контролируется указанный бит. Регистр условия прерывания указывает состояния: И или ИЛИ, Н (высокий) или L (низкий).
Всего возможно 4 комбинации из этих состояний. Например, когда указывается И и Н, то, если все контролируемые биты равны 1, передается сигнал запроса прерывания INT. Когда указывается ИЛИ и L, то, если хотя бы один из контролируемых бит равен 0, передается прерывание.
Программирование. Команда, указывающая режим работы, имеет следующий формат:
м, мг
X х
1111
Так, при М1Мо=ОО, 01, 10, 11 указываются соответственно режимы 0, 1, 2, 3. В случае режима 3 команда, следующая за
командой указания режима, распознается как команда указания ввода-вывода:
1111Г~ —11
*7*6 •ь Ц b h h *о
т. е. в формате этой команды биты, равные 1, указывают на ввод данных, а биты, равные 0,— на вывод данных.
Команда, указывающая условия прерывания, имеет следующий формат:
EI A/О H/L М ОEI A/О H/L М О1111
EI A/О H/L М О
EI A/О H/L М О
1
1
1
1
т. е. если бит Е1 равен L осуществляется работа по прерыванию от порта. A/О указывает состояние И или ИЛИ, H/L указывает состояние «высокий» или «низкий». Если М=1, следующая команда воспринимается в качестве команды указания маски с форматом:
—, , , , , , , м7 м6 м5 м4 м3 м2 м, м0
В этом случае контролируются нулевые биты. Кроме того, имеется возможность указания вектора прерывания для каждого порта, которое осуществляется в формате:
111II1
V, v6 V, V4 V3 V, V,
0
С помощью этой команды можно указать только четные адреса (этот интерфейсный кристалл входит в комплект процессора Z80, поэтому старшие 8 разрядов вектора прерывания хранятся в регистре I процессора).
Структура интерфейса принтера
Печать символов на принтере осуществляется путем параллельного вывода 8-разрядных данных. Так как буквы латинского алфавита и цифры представлены кодом ASCII, то печать каждого символа производится путем вывода байта данных. В текстах на японском языке каждый символ представлен 2 байт, ио и в этом случае осуществляется побайтовый вывод данных. Центральным узлом интерфейса является 8-разрядный порт вывода, хотя кроме него для работы принтера требуется еще несколько управляющих сигналов.
Стандарт на интерфейсы принтеров отсутствует, поэтому ыя каждого типа выпускаемого принтера необходимо исполь-
Рис. 7.18. Временная диаграмма работы принтера.
зовать специализированный интерфейс. Однако в основном средства интерфейсов совпадают, причем часто используется интерфейс, предложенный фирмой Centronics (США). Этот интерфейс предусматривает использование уровней ТТЛ-сигналов и в качестве соединителя имеет 36-выводной двухрядный разъем.
Назначение выводов указано в табл. 7.4, где направление передачи сигналов указано относительно принтера. Данные обозначены D7-0. Сигналы BUSY (занято), DATASTROBE (строб данных) и ACKNOWLEDGE (подтверждение) используются для квитирования установления связи.
Управление работой принтера осуществляется просто. Для этого интерфейсом выполняются следующие операции:
подтверждается, что сигнал BUSY имеет низкий уровень;
осуществляется вывод данных из 8-разрядного порта вывода;
передается сигнал DATASTROBE, управляющий началом печати.
Принтер выполняет следующие операции:
при наличии стробирующего сигнала уровень сигнала BUSY становится высоким, начинается печать;
2) когда печать завершена, передается сигнал ACKNOWLEDGE и уровень сигнала BUSY становится низким. '
Временная диаграмма работы принтера (рис. 7.18} должна устанавливаться в соответствии с техническими требованиями на принтер. Так, устанавливаются минимальные значения интервалов:
ti — время от установки данных до передачи стробирующего сигнала;
ts — длительность строб-импульса;
t2— время удержания данных после окончания передачи стробирующего сигнала.
Таблица 7 А
Нашаченпе выводов ра и>ема на ин1ерфейсе принтера (интерфейс типа Centronix
1к«мср вы вода
Нашанис cnina.ia
Направление
1
DATASTROBE
Ввод
2
Dr
>
3
Di
>
4
d2
»
5
D3
>
6
D4
>
7
De,
>
8
D„
>
9
D;
10
ACKNOWLEDGE
Вывод
11
BUSY
>
12
PE
>
13
SELECT
>
14
15
1G
17
18
19
20
21
22
23
24
25
26
27
28
29
зо
AUTOFEED
Нс используется
Земля
Земля корпуса
+ 5 В
Заземленная скрученная пара с выводом 1
То же с выводом 2
»^ *»*3
»»»>4
>»»»5
»❖»>6
>».»»7
»»»>8
»>А^9
>»»»ю
»»»»11
*»»»-31
Ввод
31
Пуп"
Ввод
32
33
31
35
3G
fault
Земля
Не используется
То же
Вывод
Рис. 7.19. Интерфейс принтера на базе интерфейса параллельного ввода-вывода.
Обычно ts. ti и t2 составляют 500 нс—1 мкс, tu равно 5— 10 мкс. Кроме того, в табл. 7.4 введены следующие сокращения: РЕ — отсутствие бумаги; FAULT — состояние, в котором печать невозможна, включая также отсутствиебумаги; SELECT—принтер находится в рабочем состоянии; 1NTI—сигнал сброса контроллера; AUTOFEED — сигнал, который управляет автоматическим переводом строки при появлении кода возврата каретки.
Интерфейс принтера можно построить на базе интерфейса параллельного ввода-вывода. На рис. 7.19 показан такой пример с применением модели Z8420. Порт А используется для побайтового вывода данных в режиме 0, порт В — для побитового ввода-вывода в режиме 3. В этом случае интерфейс дополняется внешним одновибратором для формирования сигнала DATASTROBE. Временная диаграмма работы этого интерфейса приводится на рис. 7.20. Интерфейс работает следующим образом: вначале считываются входные данные порта В и, если
Рис. 7.20 Временная диаграмма работы ни 1ерфейса принтера.
подтверждается низкий логический уровень сигнала BUkSY, осуществляется запись данных в порт А.
При записи данных сигнал ARDY переходит на низкий уровень. По заднему фронту этого сигнала запускается одновибратор, который генерирует импульсный сигнал. После окончания печати принимается сигнал ASTB, и уровень сигнала ARDY снова становится высоким.
При отсутствии одновибратора один бит порта В можно использовать в качестве сигнала DATASTROBE. Однако этот бит постоянно равен I, поэтому его необходимо запрограммировать так. чтобы после записи данных на соответствующем выходе устанавливался логический 0, а затем уже логическая 1.
В интерфейсе Z8420 по переднему фронту импульса ASTB сигнал ARDY возвращается на высокий уровень. Таким обра- юм. если, согласно временной диаграмме (рис. 7.20), использовать интерфейсный кристалл, позволяющий задавать любые моменты времени, в которые сигнал ARDY имеет низкий логический уровень, одновибратор станет ненужным. Эта возможность реализована в модели интерфейсного чипа Z8536.
7.4. Контроллер накопителя на гибких дисках
Гибкие диски
Гибкий диск представляет собой пластмассовый лист круглой формы, на поверхность которого нанесен магнитный материал, позволяющий осуществлять запись и считывание данных. Устройство, осуществляющее запись и считывание данных на гибкий диск, называется накопителем на гибких дисках. Такие накопители широко используются в качестве внешней памяти
Пазы для позиционирования конвертаПазы для позиционирования конвертаПаз запрета записиПаз запрета записи
Пазы для позиционирования конверта
Пазы для позиционирования конверта
Паз запрета записи
Паз запрета записи
Базисная линия
Рис 7.21. Конструкция 8-дюймоного гибкого диска.
микрокомпьютера. Первые гибкие диски диаметром 8 дюймов назывались стандартными. В последнее время стали широко применяться гибкие мини-диски диаметром 5,5 дюймов, и, кроме того, разрабатываются гибкие микродиски диаметром 3,5 дюйма. •
Гибкий диск хранится в специальном конверте (рис. 7.21). В этом конверте его вставляют в накопитель. В конверте имеется окно, вытянутое в радиальном направлении, которое называется отверстием головки. Через это отверстие магнитная головка накопителя сообщается с поверхностью диска. Диск, находящийся в конверте, с помощью вала приводится во враще-
ние с постоянной скоростью. Два небольших выреза на кромке конверта обеспечивают фиксацию отверстия, находящегося в центре диска, на вращающемся валу накопителя. Справа от них может располагаться еще один вырез для запрета записи. В накопителе имеется датчик, обнаруживающий наличие данного выреза.
Данные записываются на концентрические окружности, называемые дорожками, в виде последовательности бит. 8-дюймовые диски имеют 77 дорожек, которые нумеруются, начиная с внешней, в следующем порядке: 00, 01,..., 76. Позиция дорожки 00 определяется накопителем механически. Расстояние между дорожками равно 1/48 дюйма. Для фиксации головки в направлении вращения на диске имеется индексное отверстие, для которого в конверте предусмотрено круглое окно. Когда ин- 1ексное отверстие проходит под окном, специальный фототранзистор вырабатывает короткий импульс, по которому обнаруживается позиция начала дорожки, вращающейся под магнитной головкой.
Формат дорожки
На дорожке 00 данные не хранятся. Она используется для определения способа записи данных на диск. Дорожки 75 и 76 являются резервными (они используются в том случае, когда некоторые дорожки оказываются дефектными среди остальных 01—74 дорожек). Таким образом, для хранения данных используются 74 дорожки. Дорожка разбита на отдельные участки записи, называемые секторами, т. е. каждый сектор является минимальной единицей считываемых и записываемых данных. Существуют два способа магнитной записи на диск: с одинарной и двойной плотностью.
Вначале были разработаны диски с одинарной плотностью, а затем получили широкое применение диски с двойной плотностью записи. Кроме того, запись может производиться как на одну из поверхностей диска, гак и на обе поверхности. Таким образом, в настоящее время используются три способа записи: односторонняя запись с одинарной плотностью и двусторонняя запись с одинарной и двойной плотностью.
Последний способ записи наиболее перспективен. Дорожка может быть разбита на 26, 15 и 8 секторов. Количество байт в каждом секторе равно 128, 256 и 512 при одинарной плотности и 256, 512 и 1024 при двойной плотности.
В табл. 7.5 приведена емкость памяти гибких дисков.
При записи (или считывании) данных магнитная головка сначала перемещается к выбранной дорожке. После этого осуществляется запись (считывание) данных из нужного сектора
Емкость памяти 8-дюймовых гибких дисков
Таблица 7.5
Способ записи
Число секторов на дорожке
Число байт в секторе
Число дорожек на одной стороне
Емкость памяти, байи
Односторонняя запись с
26
128
74
246 272
одинарной плотностью
15
256
74
284 160
8
512
74
303 104
Двусторонняя запись с
26
128
74
492 544
одинарной плот ностыо
15
256
74
568 320
8
512
74
606 208
Двусторонняя запись с
26
256
74
985 088
с двойной плотностью
15
512
74
1 136 640
8
1024
74
1 212416
на дорожке. Проблема в данном случае заключается в определении местоположения сектора. Поэтому в каждом секторе гибкого диска предварительно записываются номера дорожки и сектора. Другими словами, в секторе перед полем хранимых данных имеется поле идентификации ID. в котором хранятся номера дорожки и сектора.
Путем считывания содержимого поля идентификации определяются номера дорожки и сектора, после чего осуществляется считывание (или запись) данных. Для этого на гибкие диски предварительно записываются данные о формате, как показано на рис. 7.22. Эта процедура называется форматированием диска. Таким образом, црежде чем использовать новый диск, его необходимо форматировать. За индексным отверстием, показывающим местоположение начала дорожки, следует постиндексный промежуток G0. За ним расположены индексное после и промежуток G1. Далее следуют поле, где размещается идентификатор сектора (поле идентификации), промежуток G2. поле данных, промежуток G3. Оставшаяся часть дорожки — предын- дексный пробел G4. Структуры индексного поля, поля идентификации и поля данных показаны отдельно. Содержимое кода синхронизации и адресной метки рассмотрено ниже. Информация, касающаяся сектора, хранится в кадрах номера дорожки, номера головки, номера сектора и разрядности данных поля идентификации. В кадры записываются следующие числовые значения: I—74 (номер дорожки), 0—1 (номер головки — нулевая сторона, первая сторона), I—26 (номер сектора), 0—3 (размер сектора— 128, 256, 512, 1024).
□ I
Индексный сигнал
1Г
Запись 124124111111
с двойной плотностью
Сектор N
124256, 512, 102411
Р-рс. 7.22. Формат дорожки 8-дюймового гибкого диска.
GO, Gl, G2, G3 и G4 - промс*у|ки между полями; числа и двух строках cooibciciвуют Количеству байт в каждом кадре для случаев одинарной и двойной плотное!и записи.
При наличии дефектной дорожки в поле идентификации записывается число 255, равное FF(i6). В кадрах CRCI—CRC2 хранится 16-разрядный код циклического избыточного контроля, сформированный на основании всех данных, расположенных после адресной метки. По результатам считывания составляется контрольный код, и ситуация, когда он не совпадает с содер-
Таблица 7.6
*) Число бай i — величина, зависящая от числа секторов. Так, первая цифра соот- 1нчствует 26 секторам, вторая цифра — 15; и третья — 8 секюрам.
2) Длина этого промежутка тависнг от скорости вращения при форматированной записи. -
жимым кадров CRC1 и CRC2, означает возникновение ошибки. Поле данных используется для хранения основной информации. Таким образом, в каждом из 26 секторов при одинарной плотности записывается 128 байт данных, а при двойной плотности— 256 байт. CRC1 и CRC2 — коды контроля всех данных, записываемых после метки адреса данных.
В промежутки G0—G4 при одинарной плотности записывается число FF в шестнадцатеричной системе счисления, а при двойной — 4E(i6). В табл. 7.6 приведено число байт, записываемых в каждом случае. Так как число байт при двойной' плотности записи в 2 раза больше, чем при одинарной плотности, то время прохождения промежутков одинаково. * Последний промежуток G4 имеет протяженность до участка индексного сигнала, поэтому число байт в нем непостоянно. Оно изменяется в зависимости от скорости вращения при форматированной записи.
Методы записи
Запись с одинарной плотностью осуществляется методом частотной модуляции (ЧМ-мстод), а запись с двойной плотностью— методом модифицированной частотной модуляции (МЧМ-метод).
При ЧМ-методе сигналы записи представляют собой биты данных, расположенные между битами тактовых импульсов синхронизации (рис. 7.23, а). Магнитная запись этих сигналов осуществляется методом «без возвращения к нулю», при котором в случае записи сплошных единиц частота считываемых импульсов увеличивается вдвое. В режиме считывания получают сигналы считывания, соответствующие сигналам записи. Из
ччзинвс ан ажмвх вэчгХими олояохявх хид Ч наявН тяд хгсннвг хид HiniiArNradii ии-эа ‘аеьХгэ я о HdflBd хяннвг хид ии-эа (g
‘.вэхавяиоиивЕ эн ВЭЧ^Хими охояох
«мех хид мин radau иитпвохэ Ч HaaBd хмннвг хид ада (j :woEBdgo миПтснХгагэ кэxaXdимdoф иэииж
Гох, аозч^Хики Х1ЧЯОХХВХ хид вюии винатт^моэ хана вс аояге xacxaedcoa хиннвГ иоииве яхэонхои*и аГГохам-whW и^П хмннвГ ModoxBdBuao вэхаеяш
-вн ‘хнннвтг хид аинауапча и номо aинвaodикd6ф квтснв1гахзд1н
-Хоо ‘вмахэ XI4HHBV ихид хснв1гаГ1чя махес в ‘имвэчи-Лимн им ччяохявх э ai4HHBaodHEHHodxHH3 4х1чннвг внмо xo^Xdиwdoф хин
(илэонкяги yoHyoiiV кгГ) ГолоА-whW 9 Hbldohiovu yoHdBHMVo KL*r) Voiak-^h ._ „ мзнг цимдна вн иэнивс rvojo^ EK х dnf]
9
№
ITUиIf
энннеу
jnJTJTJTJTJTLJTJn. xRHMeV bhxq
ITU и U If
ITUу—1Г"1Г"
-ITUиЦ—
I L О I О О I
TnfnnnTTTirir
у—иIf
XIRHHBV BHXQ
1ППГ
иэииес хо£
anHHetf
|язяиАиии »saaixei
иэииес
1яиенаиэ
ыхэуо(11э\ Х1чниииафи1]аи нэиаф(1дхнц
ыиневнниьз киенаиэ
юииес moi
иэииег 1яиенииэ
aMHHetf
АОчиЛиичи aisaoixejL
д1янмеу
ьине81Я1иьэ
|яиензиэ
Тактовые импульсы JUl_f|IT-J1_J1_J1—JT-JL.
00000000 Данные— — 1
Сигналы считывания JLJLJLJLJLJLJLJLJL
Окна данныхП П П П_П П П П
Рис. 7.24. Сшналы считывания и окна данных на участке кода снихропи за ции.
вается (пропускаются и бит тактового импульса, и бит данных), однако, если предыдущий бит данных был равен 0, стоящий перед ним бит тактового импульса сохраняется.
Из рис. 7.23,6 видно, что, хотя тактовая частота при МЧМ-методе записи в два раза больше, чем при ЧМ-методе, минимальный интервал времени изменения тока записи в обоих случаях одинаков, т. е. при одинаковой плотности магнитной записи МЧМ-метод позволяет вдвое увеличить плотность записи данных. В режиме записи сигналы синхронизируются импульсами определенной тактовой частоты. При считывании скорость вращения изменяется, поэтому синхронизация в некоторой степени нарушается. Тем не менее поскольку при ЧМ-методе сохраняются биты тактовых импульсов, то из сигналов считывания легко сформировать окна, синхронизированные с тактовыми импульсами. Кроме того, если даже сепаратор данных выполнен на простых логических схемах, при незначительном изменении скорости вращения все равно существует возможность правильного выделения бит данных. При записи МЧМ-методом считываемые сигналы не синхронизированы с тактовыми импульсами, поэтому приходится усложнять схему сепаратора данных.
Как показано на рис. 7.22, в передней части индексного поля, идентификатора и поля данных записывается код синхронизации. Этим кодом служат данные 00(1б> длиной 12 байт. Сигналы, считываемые из участка этого кода, принимаются за тактовые импульсы (рис. 7.24). С их помощью формируются окна данных, синхронизированные с этими тактовыми импульсами. На рис. 7.25 показана схема фазовой автоподстройки (ФАП-схема), выполняющая эту функцию.
Данная схема работает следующим образом: генератор, управляемый напряжением (ГУН), формирует сигналы, синхронизированные с тактовыми импульсами. Разность фаз этих сигналов и считываемых сигналов контролируется фазовым детектором. выходной сигнал которого через сглаживающий фильтр низких частот подается в ГУН. Генерируемая частота
Рис. 7.25. Струм ура сепаратора данных с ФАП.
регулируется таким образом, чтобы разность фаз свести к нулю. Если скорость срабатывания ФАП установить достаточно высокой, то для синхронизации выходных сигналов ГУН с тактовыми импульсами достаточно будет нескольких байт кода синхронизации. Такая синхронизация называется фазовой автоподстройкой. После того как на участке кода синхронизации установлена синхронизация, генерируемую частоту следует настроить в соответствии с изменением числа оборотов. Но так как изменение числа оборотов характеризуется только низкочастотными составляющими, го скорость срабатывания ФАП может быть небольшой. На участке данных, следующем за участком кода синхронизации, также содержатся составляющие тактовой частоты, поэтому, даже если скорость срабатывания ФАП небольшая, медленное изменение разности фаз можно обнаружить с большой точностью. Таким образом, генерируемая частота отслеживает изменение скорости вращения. Для изменения скорости срабатывания ФАП величину коэффициента усиления низкочастотного фильтра следует изменить соответствующим образом. Например, если код синхронизации имеет длину 4 байт (вместо 12), для автоподстройки устанавливается новый коэффициент усиления. Сепаратор данных с ФАП можно применять и при ЧМ-записи. Так как при больших отклонениях скорости вращения сепаратор позволяет правильно осуществлять выделение данных, в последнее время он находит широкое применение. Следует отметить, что при ЧМ-методе используются непосредственно тактовые импульсы, поэтому отпадает необходимость в переключении скорости срабатывания на участке кода синхронизации и за его пределами.
Скорость вращения гибкого диска, как правило, равна 360 об/мин, период тактовой частоты при одинарной плотности— 4 мкс, при двойной плотности — 2 мкс.
Скорость записи-считывания данных при одинарной плотности составляет 250 кбит/с, а при двойной'—500 кбит/с. Число бит и байт, умещающихся на одной дорожке при одинарной плотности, равно 41666 бит или 5208 байт, а при двойной — 83 332 бит или 10 416 байт.
Однако в используемые для записи данных 26 секторов можно записать только 3328 байт при одинарной плотности и 6656 байт при двойной плотности. Таким образом, 36% формата не используется.
Адресные метки
В формате дорожки записываются адресные метки трех видов. Индексная адресная метка указывает положение начала дорожки, метка идентификации и метка данных указывают начало поля идентификации и поля данных. Для формирования адресной метки желательно записать специальный код, отличающийся от данных. Поскольку возможны различные битовые комбинации данных, для различения данных и адресной метки используются специальным образом выбранные битовые комбинации тактовых импульсов. Другими словами, в качестве адресной метки используется часть бит тактовых импульсов.
Таблица 7.7
Битовые комбинации адресных меюк (длина при записи с одинарной плотностью составляет I бант. а с двойной плотностью 4 байт)
Тип MeiKM
Так юные сю-
Код
Запись с
Индексная адресная метка
D7
ГС
одинарной
Адресная метка идентифи
плотностью
катора
С7
ЕЕ
Адресная ме!ка данных
С7
ЕВ
Адресная метка данных
(без данных)
С7
F8
Запись с
Индексная адресная метка
С2*. С2*. С2»,
ГС
двойной
Адресная метка идентифи
AH, АН, А1 •,
ЕЕ
ПЛОТ ностью
катора
Адресная метка данных
\Н, АН, АН
,ЕВ
Адресная метка данных
АН, АН, АН
,Е8
(бет данных)
01 I 2 13456701 I 2 134567
0
1 I 2 1
3
4
5
6
7
0
1 I 2 1
3
4
5
6
7
Полный ряд **
тактовых II1
1 1 I
11
1 п г
1
11
1
11
1
1
1
Л_
импульсов FF
1
11
1
1
0
0
Код FCП
п
_П. п
п
п
Бит
™а'ния JLJULJlUl_n_JLJl_JUl_JLJ^ПП.
Неполный рядП
1
I
1
1
0
г
1
1
0
г
1
LГ
1
1г
1 1 п
тактовых “J *“ импульсов D7
Код FC
1
п
1
п
п
1 п
п
п
0
0
^^„я Л-П-Л-ПП-JLJL-—П—П—П—ППП_
б
Рис. 7.26. Раз [слепне на метки адреса и данных. и - при испольювании всех 1акюкы\ импульсов; б - при испольювании неполною ряда 1ак1овых импульсов
Рис. 7.27. Битовая комбинация адресной метки, используемой в случае за* писи с двойной плотностьюРис. 7.27. Битовая комбинация адресной метки, используемой в случае за* писи с двойной плотностьюНа рис. 7.26 показан пример индексной адресной метки для случая записи с одинарной плотностью. На рис. 7.26, а показан случай записи кода FC(i6) при наличии всех тактовых импульсов. Он не отличается от случая записи кода F(lb) данных. На рис 7.26,6 в качестве тактовых импульсов используется битовая комбинация D7(ib). Так как эта битовая комбинация сигналов считывания не появляется в режиме записи данных, то адресную метку можно легко различить.
Рис. 7.27. Битовая комбинация адресной метки, используемой в случае за* писи с двойной плотностью
Рис. 7.27. Битовая комбинация адресной метки, используемой в случае за* писи с двойной плотностью
Для записи адресной метки можно использовать 1 байт при одинарной плотности и 4 байт при двойной плотности. В табл. 7.7 приведены битовые комбинации тактовых импульсов и их коды. Из нее видно, что при записи с двойной плотностью в трех байтах из четырех наблюдается выпадение тактовых импульсов (это соответствует обозначению С2* и А1*). Последний байт кодируется без выпадения тактовых импульсов. Битовые комбинации С2* и А1* показаны на рис. 7.27.
Адресные метки данных разделяются на метки поля данных, где хранятся данные, и метки поля данных, где данные не хранятся.
Устройство накопителя на гибких дисках
На рис. 7.28 показан принцип действия накопителя. С помощью двигателя диск приводится во вращение с постоянной скоростью. Перемещение головки в радиальном направлении осуществляется с помощью шагового двигателя. При записи-считывании специальный соленоид прижимает головку к диску. На рис. 7.29 приведена структурная схема всего накопителя. В накопителе имеются 3 датчика, выполненные на светодиодах и фото- транзисторах. Один m них используется для обнаружения положения головки над дорожкой 00. другой — для обнаружения индексного отверстия, третий — для обнаружения выреза запрета записи. По результатам обнаружения вырабатываются сигналы TRACK00, INDEX, WRITE PROTECTED. Кроме этих сигналов используется выходной сигнал READY (готовность), показывающий, что накопитель находится в рабочем состоянии.
Сигнал READY имеет высокий уровень, когда
- включен источник питания;
диск вложен в накопитель;
после начала вращении чека прошел установленный ин- гервал времени.
Для управления накопшелк м используются 4 входных сигнала. Направление перемещения головок указывается сигналом
Вращение диска
Рис. 7.28. Устройство накопителя.
READ DATA
WRITE DATA
WRITE GATE
WRITE PROTECTED
DIRECTION
STEP
HEAD LOAD
HEAD SELECT
TRACK 00 INDEX
READY
Рис. 7.29. Структура накопителя на гибких дисках.
а
Рис. 7.30. Пример типовой временной диаграммы работы накопителя. а — перемещение головки; б — считывание; в —запись.
2 мкс ±10 нс 4 мкс ±20 нс 150-1100 нс
С 1 С О С 1 С
Рис. 7.31. Формы сигналов записи (ЧМ-метод).
DIRECTION (направление), на вход STEP (шаг) подаются одиночные импульсы, с помощью которых головка перемещается на одну дорожку. Когда уровень сигнала HEAD LOAD (прижим головок) становится низким, головки прижимаются к диску. Сигнал HEAD SELECT (выбор головки) используется для выбора плоскостей диска. Когда осуществляется прижим головок, сигналы считывания выводятся на линию READ DATA (считываемые данные). В режиме записи уровень сигнала WRITE GATE (вентиль записи) становится низким. Сигналы записи подаются на вход WRITE DATA (записываемые дан-
ные). На рис. 7.30 показан пример временной диаграммы работы накопителя, а на рис. 7.31 — временные соотношения для сигналов записи.
Структура контроллера накопителя на гибких дисках
Для осуществления операций считывания-записи таким накопителем требуется довольно сложное управление накопителем. Интерфейс, который автоматически осуществляет управление накопителем, называется контроллером накопителя на гибких дисках. Для упрощения аппаратных средств контроллера многими фирмами выпускаются специальные кристаллы, выполняющие основные его функции. На рис. 7.32 показан пример структуры такого кристалла. Данный кристалл содержит встроенный сепаратор данных, при использовании которого вывод READ DATA накопителя непосредственно подключается к входу ED DATA (вход XTDS присоединен к +5 В, вход FD CLOCK не используется). Однако возможности встроенного сепаратора данных ограниченны вследствие его простоты, поэтому часто используются внешние сепараторы; в этих случаях данные, выделенные внешним сепаратором, и тактовая 'частота подаются на входы FD DATA и FD CLOCK (выход XTDS заземляется) .
Кристалл контроллера содержит пять 8-разрядных регистров: регистры данных, команд, сектора, дорожек и состояния. Запись и считывание данных в эти регистры можно осуществлять из процессора. Тип регистра указывается битами AiA0 (табл. 7.8). Действия контроллера определяются по команде,.
Таблица 7.8
Назначение регистров
А|Ао
RD
WR
Действия
00
1
0
Запись команды
0
1
Считывание состояния
01
1
0
Запись на дорожку
0
1
Считывание с дорожки
10
1
0
Запись в сектор
0
1
Считывание из сектора
11
1
0
Запись данных
0
1
Считывание данных
PROTECTEDPROTECTEDWRITE GATEWRITE GATEDIRECTIONDIRECTIONWRITE DATAXTDSWRITE DATAXTDSРис. 7.32. Структура чипа контроллера накопителя на гибких дисках (упрощенный вариант модели FD1771 фирмы Western Digital).Рис. 7.32. Структура чипа контроллера накопителя на гибких дисках (упрощенный вариант модели FD1771 фирмы Western Digital).
PROTECTED
PROTECTED
WRITE GATE
WRITE GATE
DIRECTION
DIRECTION
WRITE DATA
XTDS
WRITE DATA
XTDS
Рис. 7.32. Структура чипа контроллера накопителя на гибких дисках (упрощенный вариант модели FD1771 фирмы Western Digital).
Рис. 7.32. Структура чипа контроллера накопителя на гибких дисках (упрощенный вариант модели FD1771 фирмы Western Digital).
Команды контроллера
Таблица 7.9
Команда
Действия
RESTORE
SEEK
STEP
STEP IN
STEP OUT
READ
WRITE
READ ADDRESS
Головка перемещается к дорожке 00
Головка перемещается к указанной дорожке
Головка перемещается на одну дорожку
Головка перемещается в пределах одной дорожки Головка перемещается за пределы одной дорожки Из указанного сектора считываются данные Данные записываются в указанный сектор Считывается идентификатор первого появившегося сектора
READ TRACK WRITE TRACK INTERRUPT
Считывание данных от начала дорожки Запись данных от начала дорожки Генерируется сигнал запроса прерывания INT
записанной в регистре команд. Всего имеется 11 команд (табл. 7.9). Описание основных команд приводится ниже.
Команда RESTORE. Головка перемещается к дорожке 00. По окончании перемещения в регистр дорожки помещается 0.
Команда SEEK. Сначала в регистр данных записывается номер дорожки, после чего выполняется данная команда. Головка перемещается к указанной дорожке. После перемещения в регистр дорожки помещается номер следующей дорожки.
Команда STEP. В контроллере имеется триггер, запоминающий указанное направление перемещения головки. Поэтому головка перемещается на одну дорожку в этом направлении.
Команды STEP IN, STEP OUT. Головка перемещается в пределах или за пределы одной дорожки.
Команда READ. Головка перемещается к указанной дорожке, и после записи в регистр сектора его номера осуществляется выполнение данной команды. В случае когда номера дорожки и сектора, записанные в поле идентификации, совпадают с содержанием регистров дорожки и сектора, а также при отсутствии ошибок, выявленных циклическим избыточным контролем, из этого сектора начинается считывание данных. Данные, считываемые побайтно, помещаются в регистр данных, при этом уровень сигнала запроса передачи данных DRQ становится высоким. Этот процесс продолжаемся до считывания последнего байта данного сектора. Когда сигнал DRQ имеет высокий
уровень, содержимое регистра данных должно считываться во внешние блоки. В противном случае в регистре состояния устанавливается бит LOST DATA (потерянные данные). Кроме того, в конце операции считывания осуществляется контроль информации считыванием кода циклического избыточного контроля и при наличии ошибки устанавливается бит CRC ERROR.
Команда WRITE. Головка перемещается к указанной дорожке. Данная команда осуществляется после записи номера сектора в регистр сектора. В случае когда номера дорожки и сектора, записанные в поле идентификации, совпадают с содержимым соответствующих регистров дорожки и сектора, а также при отсутствии ошибок, выявленных циклическим избыточным контролем, в этот сектор начинается запись данных. Уровень сигнала запроса передачи данных DRQ становится высоким, при этом ожидается прохождение промежутка G2. Когда осуществляется запись в регистр данных, уровень сигнала DRQ становится низким. После подтверждения этого состояния передается сигнал WRITE GATE. По окончании записи кода синхронизации в начале поля данных и адресной метки данных содержимое регистра данных пересылается в сдвиговый регистр, и одновременно уровень сигнала DRQ становится высоким. Запись данных осуществляется сдвигом содержимого этого регистра. Эта операция продолжается до записи последнего байта сектора. В заключение осуществляется запись двухбайтового кода циклического избыточного контроля и однобайтового кода промежутков, после чего сигнал WRITE GATE CTaHQBHTCH неактивным. При возникновении ситуации, когда данные не передаются из внешних блоков, в регистре состояния устанавливается бит LOST DATA.
Обычно после окончания выполнения команды контроллер передает сигнал прерывания INT. Процессор в ответ на него передает следующую команду. Кроме того, в начале выполнения команды бит BUSY регистра состояния переходит в состояние 1, после завершения — в состояние 0. Считывая содержимое регистра состояния, можно передавать команды методом упорядоченного опроса (полинга).
При выполнении команды READ по сигналу DRQ из контроллера необходимо считать данные и записать их в память. При выполнении команды WRITE необходимо осуществить обратное, т. е. по сигналу DRQ считать данные из памяти и записать их в контроллер. Так как при записи с одинарной плотностью время записи-считывания данных равно 32 мкс, то пересылку данных можно осуществлять процессором. При записи с двойной плотностью время записи-считывания данных составляет 16 мкс, поэтому обычно пересылка данных осуществляется с помощью контроллера прямого доступа к памяти.
8
Конфигурация системы
Вычислительные системы могут иметь самые разные конфигурации. Возможность построения системы, выполняющей требуемые функции, путем произвольного соединения основных ее элементов также отличительная особенность компьютера. Проблема выбора конфигурации системы в основном сводится к проблеме ее проектирования, и общих подходов для решения последней не существует.
В данной главе рассматриваются устройства, необходимые для построения сравнительно большой системы. Мы не можем здесь рассмотреть все эти устройства, поэтому ниже описаны только главные из них — сопроцессор, шинный арбитр и системная шина.
Сопроцессор
При современной технологии не все многообразие функций процессора можно реализовать на одном кристалле. Поэтому наряду с основным используется вспомогательный процессор, выполняющий некоторые специальные функции, что существенно расширяет возможности вычислительной системы. Такой процессор называется сопроцессором.
Подходы к проектированию сопроцессора
Сопроцессор, соединяемый с шиной, используется параллельно с главным процессором (рис. 8.1), и оба процессора работают как система. Допустим, что в главном процессоре имеются ариф- метическо-логическое устройство (АЛУ) и регистры общего назначения. Набор команд, которые можно использовать
13^
Рис. 8.1. Применение сопроцессора.
в этом процессоре, обозначим ISm (рис. 8.2). Сопроцессор также имеет арифметическо-логическое устройство (АЛУ), регистры общего назначения и может использовать набор команд (ISc). Следовательно, при совместной работе обоих процессоров можно использовать суммарный набор команд, т. е. ISm + ISc. Программы в этом случае составляются с помощью команд из обоих наборов, но если появляется команда из набора ISm, ее выполняет главный процессор, а при появлении команды из набора ISc ее выполняет сопроцессор (рис. 8.3). Другими словами, когда работает главный процессор, сопроцессор останавливается, и наоборот. На первый взгляд это кажется бессмысленным, однако в действительности такая очередность работы позволяет значительно сократить время выполнения программы. Так. например, время выполнения операций с плавающей запятой в сопроцессоре составляет сотую часть времени выполнения их (имеется в виду программными средствами) в главном процессоре, т. е. преимущество сопроцессора, используемого для выполнения программ, предусматривающих большое количество операций с плавающей запятой, неоспоримо. Конечно, можно организовать и параллельную работу обоих процессоров.
Как известно, программа и данные, которыми процессор манипулирует в ходе вычислений, хранятся в основной памяти. Кроме того, результаты вычислений также должны храниться в основной памяти. Работой основной памяти управляет главный процессор, т. е. только в главном процессоре имеется программный счетчик и только" главный процессор выполняет функцию вычисления адреса.
На рис. 8.4 показана стандартная схема объединения главного процессора с сопроцессором. Их совместная работа осуществляется следующим образом: главный процессор путем пере-
Главный процессорГлавный процессорСопроцессорСопроцессорПри использовании сопроцессораПри использовании сопроцессораАЛУ главногопроцессораАЛУ главногопроцессораАЛУсопроцессораАЛУсопроцессораАЛУ главногосопроцессораАЛУ главногосопроцессораАЛУсопроцессораАЛУсопроцессораРегистры об-щего назначе-ния главногопроцессораРегистры об-щего назначе-ния главногопроцессораРегистрыобщегоназначениясопроцессораРегистрыобщегоназначениясопроцессораРегистры об-щего назначе-ния главногопроцессораРегистры об-щего назначе-ния главногопроцессораРегистрыобщегоназначениясопроцессораРегистрыобщегоназначениясопроцессораНаборкомандглавногопроцессораНаборкомандглавногопроцессораНаборкомандсопроцессораНаборкомандсопроцессораНаборкомандглавногопроцессора
Главный процессор
Главный процессор
Сопроцессор
Сопроцессор
При использовании сопроцессора
При использовании сопроцессора
АЛУ главногопроцессора
АЛУ главногопроцессора
АЛУсопроцессора
АЛУсопроцессора
АЛУ главногосопроцессора
АЛУ главногосопроцессора
АЛУсопроцессора
АЛУсопроцессора
Регистры об-щего назначе-ния главногопроцессора
Регистры об-щего назначе-ния главногопроцессора
Регистрыобщегоназначениясопроцессора
Регистрыобщегоназначениясопроцессора
Регистры об-щего назначе-ния главногопроцессора
Регистры об-щего назначе-ния главногопроцессора
Регистрыобщегоназначениясопроцессора
Регистрыобщегоназначениясопроцессора
Наборкомандглавногопроцессора
Наборкомандглавногопроцессора
Наборкомандсопроцессора
Наборкомандсопроцессора
Наборкомандсопроцессора
б
Рис. 8.2. Расширение возможностей благодаря применению сопроцессора. а — аппаратные средства и набор команд для каждого чипа; б — расширение их при использовании сопроцессора.
Серия команд
Команды, выполняемые главным процессором |4
Команды, выполняемые сопроцессором
Рис, 8.3. Выполнение команд главным процессором и сопроцессором.
дачи адресных сигналов считывает команды из основной памяти. Сопроцессор по сигналу состояния удостоверяется в том, что текущий цикл шины служит для вызова команды, и параллельно с главным процессором считывает команду. Если считанная команда принадлежит главному процессору, сопроцессор не предпринимает никаких действий к ее выполнению. Если же она входит в набор команд сопроцессора, последний выполняет ее. Однако в зависимости от типа команды иногда требуется считать данные из памяти и записать данные в память.
При обращении к основной памяти можно воспользоваться функциями главного процессора. Вычисление исполнительного адреса и вывод его результата на адресную шину осуществляются в главном процессоре. Считывание информации с шины данных и вывод ее на шину данных осуществляет сопроцессор. Так как шина находится в общем пользовании двух процессоров,
Рис. 8.4. Объединение сопроцессора с главным процессором.
то обеспечение автономного доступа обоих устройств к памяти является излишним.
Рассмотрим несколько конкретных случаев. Например, когда требуется считать или записать данные в память, в главном процессоре выполняется фиктивный цикл считывания, т. е. в этой ситуации главный процессор передает адреса и управляющий сигнал считывания, но считывание данных не производит. Сопроцессор при считывании данных выполняет следующие действия:
считывает адреса, переданные главным процессором на адресную шину;
считывает данные, выводимые из памяти на шину данных;
путем передачи сигнала BUS REQUEST в главный процессор запрашивает разрешение на право пользования шиной;
при получении разрешения (прием сигнала BUS GRANT) передает адресные и управляющие сигналы и считывает данные» начиная со второго слова.
При записи данных он выполняет следующие действия:
считывает адреса, переданные главным процессором на адресную шину;
путем передачи сигнала BUS REQUEST в главный процессор запрашивает разрешение на право пользования шиной;
при получении разрешения (прием сигнала BUS GRANT) передает адресные и управляющие сигналы и осуществляет запись данных в память.
В начале выполнения команды сопроцессором уровень сигнала BUSY становится высоким. Главный процессор считывает следующую команду после того, как удостоверится, что уровень этого сигнала стал низким. Таким образом, работа главного процессора синхронизируется с работой сопроцессора.
Из сказанного ясно, что главный процессор должен распознавать коды команд сопроцессора. Кроме того, при выполнении команды из набора команд сопроцессора система должна предусматривать поддержку при его обращении к памяти.
Арифметический сопроцессор
Типичным примером сопроцессора является процессор, выполняющий операции с плавающей запятой. К таким устройствам относится модель 8087 фирмы Intel и модель МС 68881 фирмы Motorola. Ниже в качестве примера рассматривается модель 8087.
Тип данных. На рис. 8.5 показаны типы данных, используемых для вычислений в модели 8087. Помимо чисел с плавающей запятой (которые на языках высокого уровня называются действительными) данный сопроцессор может обращаться и с целыми числами.
В качестве чисел с плавающей запятой используются 32- и 64-разрядные числа. Промежуточный результат вычислений в сопроцессоре представлен с высокой точностью, соответствующей 80-разрядному числу. Самый старший бит S является знаковым; Ej — биты порядка числа; Fj — биты ^мантиссы. По числу бит порядка определяются границы представления числа (максимальное и минимальное значения абсолютной величины). По числу бит мантиссы определяется точность представления числа
Рис. 8.5. Типы данных, используемых в модели 8087.
Таблица 8.1
Представление чисел с плавающей запятой
32-разрядные слова
Условие
Представление числа
1 ^Е7Еб...Ео^254
(_l)S.2E7Ee...Eo-127 . ] Fip2 Fm
Е7Еб...Ео=О
FiF2...F23=#0
(—1)s.2-'26.o.FiF2...F23
Е7Е6...Е0—0
FlF2...F23=0
(-I)S.O
Е7Еб...Ео=255
F1F2...F23 = O
(-l)Soo
Е7Е6...Ео=255
FiF2...F23=/:0
Число не существует
64-разрядные слова
Условие
Представление числа
l<EwEe...Eo^2O46
(—1)8.2^»^ • • • Ео—1023.1 .Р^.. .F52
Е10Ед...Е0 = 0
F|F2...Fs2^=0
(—1)s.2-1022.0.FiF2...Fm
EioEg...Eo=O
FiF2...F52=0
(-1)8-0
Е1оЕ9...Ео=2047
FiF2...F52==0
(-1)8-00
ЕюЕд...Ео=2О47
F1F2...Ебг^О
Число не существует
(число разрядов значащих цифр). Число с плавающей запятой обычно представляется в «нормализованной» форме. Другими словами, в числовом формате самый старший разряд мантиссы не равен 0. В двоичном представлении числа используются только два значения — 0 или 1, поэтому самый старший разряд Fo мантиссы равен 1. Для краткости при описании данных разряд Fo опускают. В табл. 8.1 показаны числа, представленные 32- и
64-бит словами данных. При длине слова 32 бит порядок может иметь значения от 0 до 255. В случае представления данных в нормализованной форме порядок имеет значения от 1 до 254.
При невозможности нормализации из-за исчезновения значащих разрядов порядку присваивается значение, равное 0 (самый старший разряд Fo равен 0), а в случае переполнения значащих разрядов порядку присваивается значение, равное 255, и все биты мантиссы равны 0. Кроме того, у точного нуля порядок и мантисса равны 0. Эти принципы представления сохраняются и при длине слова данных 64 бит. В случае внутрипроцессорного представления 80-разрядным словом значение разряда Fo мантиссы также указывается среди данных. Другими словами, вычисления осуществляются над числами, представленными в виде
(—l)s.2EuEi3.. .Eo-32 766.Fo.FiFa e e е F($3
Все целые числа представляются в дополнительном коде. Десятичные целые числа представляются в двоично-десятичном коде, т. е. каждый разряд десятичного числа представлен четырьмя битами. Число значащих разрядов при этом равно 18.
Структура сопроцессора. На рис. 8.6 показана структура сопроцессора. Регистры, используемые для выполнения программы, подразделяются на стек регистров для хранения данных объемом 80 бит Х8, тег регистров объемом 2 битХ8, 16-разрядный управ-
Рис. 8.6. Структура сопроцессора 8087.
сигналы
Рис. 8.7. Сопряжение моделей 8086 и 8087.
ляющий регистр, 16-разрядный регистр состояния и два 32-раз- рядных указателя команд и данных.
При вычислениях используются данные, хранящиеся в вершине регистрового стека, результат вычислений также помещается в вершину стека. В отдельных случаях могут использоваться данные, хранящиеся в памяти или в основании стека. Тег показывает на одно из следующих состояний регистра: регистр пуст, в нем хранятся действительные данные, хранящиеся данные равны 0.
Каждой бит управляющего регистра определяет характер действий процессора, например указывает наличие-отсутствие прерывания при возникновении ошибки или способ округления при нормализации числа с внутрипроцессорным представлением (способы округления до единицы, сокращения, округления десятичной дроби). В регистре состояния фиксируется возникновение ошибки. Кроме того, используется 3-разрядный код условия, который устанавливается и сбрасывается при выполнении команды сравнения. В регистр состояния помещен также 3-разрядный указатель стека регистров, имеющего объем 8 слов. В указателе команды хранится адрес текущей команды, а в указателе данных— адрес данных памяти, к которым осуществляется обращение.
Совместная работа с главным процессором. На рис. 8.7 показана схема сопряжения главного процессора 8086 с сопроцессо-
рОм 8087. В процессоре 8086 предусмотрено два режима работы: максимальный и минимальный. В максимальном режиме используется сопроцессор. В этом режиме процессор 8086 использует 3-разрядный сигнал состояния S2-0, который содержит всю необходимую для генерации управляющего сигнала информацию. Пока процессор 8086 управляет шиной, сопроцессор считывает значения бит S2-o, на основании которых обнаруживает цикл вызова команды.
Если сопроцессор 8087 осуществляет считывание или запись данных в" память, он также передает сигнал Бг-о- Для запроса разрешения на право пользования шиной и получения разрешения используется сигнал RQ/GT1.
В процессоре 8086 предусмотрена 6-байт очередь команд, поэтому вызванная команда сразу не выполняется. В процессоре 8087 также имеется 6-байт очередь команд, таким образом, выполнение команды в процессоре 8087 синхронизируется с выполнением команды в процессоре 8086. Синхронизацию обеспечивает сигнал QSi-o.
Пять старших бит кода любой команды, принадлежащей сопроцессору 8087, равны ПОП. Этот код в процессоре 8086 трактуется как команда ESC (переключение кода). Когда команда ESC указывает на обращение к памяти, процессор 8086 вычисляет исполнительный адрес и передает его через адресную шину. Это называется фиктивным циклом считывания памяти, так как данные, выводимые из памяти, считываются и обрабатываются сопроцессором.
В набор команд входят как обычные команды, так и команды переключения кода. Пока одна из таких команд выполняется в сопроцессоре 8087, процессор 8086 не выполняет следующую команду переключения кода. Для синхронизации выполнения команд сопроцессор 8087 передает сигнал BUSY. Автоматическое считывание этого сигнала процессором 8086 не производится. Процессор контролирует его значение, так как в нем предусмотрена специальная команда WAIT (ожидание) перехода в состояние ожидания до тех пор, пока уровень сигнала BUSY не станет низким. Следовательно, перед командой ESC должна быть помещена команда WAIT. Поэтому программа записывается следующим образом:
WAIT
ESC
WAIT
ESC
Когда сопроцессор 8087 приступает к выполнению команды переключения кода, уровень сигнала BUSY становится высоким. В это время процессор 8086 выполняет команду, следующую за командой переключения кода. Кроме того, возможен режим автономной работы управляющего блока сопроцессора 8087 даже в ходе выполнения команды операционным блоком. Управляющий блок, синхронизированный с процессором 8086, считывает команды из начала очереди, и если удостоверяется, что команда не принадлежит его набору, он ее не выполняет. Эта система позволяет обоим процессорам работать параллельно.
Набор команд. Кроме общепринятых команд имеются команды для вычисления функций:
ух, tg X, arctg (X/Y), log2 X, log2 (X+l)
Таких функций немного. Было бы удобно иметь набор функций, который позволял комбинировать все общепринятые функции, предусмотренные языками высокого уровня. С точки зрения набора функций наилучшие возможности предоставляет процессор МС 68881, способный вычислять
sin X, cos X, tg X, arc sin X, arc cos X, arctg X
sh X, ch X, th X, ar th Xex, ex —1, 10х ,2хloge X, loge (X+l), log10 X, log2 X,причем sin X и cos X он вычисляет одновременно.
Шинный арбитр
На рис. 8.8 показано, как можно использовать несколько компьютеров, соединенных друг с другом системной шиной. В любой момент времени только один компьютер может занимать системную шину, т. е. если несколько компьютеров одновременно запрашивают разрешение на право пользования шиной, это право предоставляется только одному из них. Устройство, осуществляющее управление доступом к шине, называется шинным арбитром.
Интерфейс системной шины
Плата компьютера снабжена интерфейсом системной шины. На рис. 8.9 показана структура такого интерфейса. Процессор имеет
Рис. 8.8. Сопряжение нескольких компьютеров по системной шипе.
Локальная память, периферийные устройства READYЛокальная память, периферийные устройства READYЛокальная шинаЛокальная шинаКомандыКомандыДанныеДанныеАдресаАдресаАдресаАдресаДанныеДанныеКомандыКомандыREQUEST GRANTREQUEST GRANTСистемная шинаСистемная шина
Локальная память, периферийные устройства READY
Локальная память, периферийные устройства READY
Локальная шина
Локальная шина
Команды
Команды
Данные
Данные
Адреса
Адреса
Адреса
Адреса
Данные
Данные
Команды
Команды
REQUEST GRANT
REQUEST GRANT
Системная шина
Системная шина
Общая память,периферийныеустройства
READY
Шинный арбитр
системном шины.системном шины.
системном шины.
системном шины.
Рис. 8.9. Стандартная структура интерфейса
Рис. 8.10. Интегральные схемы для построения шинного интерфейса.
и—8-разрядный буфер шины; б — 8-разрядный приемопередатчик шины; в —- 8-разря i- ный регистр-фиксатор.
адресную шину, шину данных и шину команд. Шина команд служит для передачи стробирующих сигналов MEMRD, MEMWR, IORD, IOWR. Указанные шины через ряды триста- бильных вентилей должны соединяться с системной шиной. При использовании системной шины вентили отпираются, обеспечивая связь внутренней шины с системной. В тристабильных вентилях применяются схемы с достаточно большим выходным током, позволяющим запускать другие устройства, подключенные к системной шине. Ряд таких вентилей называется буфером шины. В частности, для шины данных необходимо использовать ряд двунаправленных вентилей, который называется приемопередатчиком шины. Для отпирания и запирания вентилей буфера шины достаточно использовать один управляющий сигнал ОЕ (разрешение вывода данных), но для приемопередатчика также
требуется управляющий сигнал T/R (передача-прием), указывающий направление передачи данных.
В современных интерфейсах каждая 8-разрядная часть выполнена в виде отдельной ТТЛ-схемы (рис. 8.10, а и б). На рис. 8.10, в показан 8-разрядный регистр-фиксатор, используемый для блокировки адреса. Практическое применение получили следующие модели:
8-разрядный буфер шины SN74ALS541 и SN74ALS241; 8-разрядный приемопередатчик шины SN74ALS645, SN74ALS245 и SN74ALS8286; 8-разрядный регистр-фиксатор SN74ALS573, SN74ALS373, SN74ALS8282. В этих моделях выходы инвентиро- ваны относительно входов. В схеме, показанной на рис. 8.9, со стороны локальной шины также используются буфер и приемопередатчик. Они позволяют подключить к локальной шине память большей емкости и интерфейсы различных периферийных устройств.
Адресные сигналы, передаваемые из процессора, определяют, какая из шин (локальная или системная) используется в данном цикле шины, так как при обращении к локальной памяти или периферийным схемам, расположенным на плате процессора, используется локальная шина, а при обращении к общим периферийным схемам, расположенным на других платах, используется системная шина. Для разделения этих режимов блок дешифрации адреса генерирует управляющий сигнал SYSTEM/ /LOCAL. Низкий логический уровень этого сигнала соответствует обращению к локальной шине, при котором отпираются вентили с ее стороны, а высокий уровень — обращению к системной шине. Этот сигнал передается в устройство управления доступом к системной шине, которое с помощью сигнала REQUEST запрашивает у арбитра разрешение на право пользования шиной. Если от шинного арбитра передается сигнал GRANT, означающий разрешение пользования, устройство управления сигналом ACCESS, имеющим низкий уровень, открывает доступ к системной шине. Таким образом, устройство управления доступом к системной шине использует четыре входных и выходных сигнала: сигнал запроса разрешения на право пользования шиной (SYSTEM/LOCAL), который поступает от устройства дешифрации адреса и ниже сокращенно называется «запрос»; сигнал разрешения пользования шиной (ACCESS), передаваемый в интерфейс системной шины (буферы, приемопередатчик) и сокращенно называемый «разрешение»; сигнал запроса разрешения на право пользования шиной (REQUEST), передаваемый шинному арбитру, и, наконец, сигнал разрешения пользования шиной (GRANT), поступающий от шинного арбитра.
Если пользование системной шиной не разрешается, то, по-
скольку из общей памяти или периферийной схемы не приходит ответного сигнала READY, процессор переходит в состояние ожидания и его цикл шины автоматически удлиняется. Если разрешено пользование шиной, по окончании обращения к памяти или периферийной схеме приходит ответ READY, на этом цикл шины заканчивается. Таким образом, программу уже не нужно составлять с учетом разделения на режимы системной и локальной шин, так как цикл автоматически удлиняется, когда системной шиной нельзя пользоваться.
Шинный арбитр параллельного действия
Существуют два типа шинных арбитров: параллельного и последовательного действия (с организацией гирляндной цепи).
На рис. 8.11 показан шинный арбитр параллельного действия. Он состоит из отдельных блоков и располагается на одной из плат, соединенных с системной шиной. Обычно плата, обладающая возможностью управления шиной, например плата компьютера, называется «ведущей» (master), а плата, работающая под управлением шины, например плата памяти, называется «ведомой» (slave). Например, если максимальное число «ведущих» равно 4, системная шина имеет 4 линии сигнала REQUEST и 4 линии сигнала GRANT. Каждый «ведущий» по своей линии REQUEST запрашивает у арбитра разрешения на право пользования шиной. Разрешение пользования принимается также через свою линию GRANT.
Рассмотрим несколько вариантов распределения права пользования шиной между «ведущими». Наиболее простым из них
REQUESTS 2 1 оGRANTS 2 1 ОREQUESTS 2 1 оGRANTS 2 1 ОРис. 8.11. Шинный арбитр параллельного действия.Рис. 8.11. Шинный арбитр параллельного действия.
REQUESTS 2 1 о
GRANTS 2 1 О
REQUESTS 2 1 о
GRANTS 2 1 О
Рис. 8.11. Шинный арбитр параллельного действия.
Рис. 8.11. Шинный арбитр параллельного действия.
dbr7 DBR6 DBR5dbr7 DBR6 DBR5dbr0 dbg7 DBG6 DBGs "DBGodbr0 dbg7 DBG6 DBGs "DBGoBgack BCLRBgack BCLRРис. 8.12. Структура шинного арбитра на базе модели МС68452.Рис. 8.12. Структура шинного арбитра на базе модели МС68452.
dbr7 DBR6 DBR5
dbr7 DBR6 DBR5
dbr0 dbg7 DBG6 DBGs "DBGo
dbr0 dbg7 DBG6 DBGs "DBGo
Bgack BCLR
Bgack BCLR
Рис. 8.12. Структура шинного арбитра на базе модели МС68452.
Рис. 8.12. Структура шинного арбитра на базе модели МС68452.
является присвоение уровня приоритета каждому «ведущему». Например, если считать 3 наивысшим уровнем приоритета, то при одновременном запросе разрешения на право пользования шиной это право предоставляется «ведущему» с более высоким уровнем приоритета. Примером шинного арбитра параллельного действия является модель МС68452 фирмы Motorola. Этот арбитр способен управлять максимально восемью «ведущими» шины. В схеме, показанной на рис. 8.12, DBR7-o — сигналы запроса разрешения на право пользования шиной, a DBG7-0— сигналы разрешения пользования шиной. Цифра 7 означает наивысший уровень приоритета, а 0 — низший уровень приоритета. Кроме указанных используются сигналы BGACK (подтверждение права пользования шиной) и BCLR (освободить шину).
Каждое устройство управления доступом к шине может в любой момент времени передать сигнал DBR. После приема сигнала DBG устройство занимает шину, свидетельствует об этом сигналом BGACK с низким логическим уровнем. По окончании пользования шиной уровень сигнала BGACK вновь становится высоким. Среди устройств, передающих сигнал DBR,
арбитр передает сигнал DBG устройству с наиболее высоким приоритетом. Для правильной работы устройства управления доступом к шине необходимо:
поддерживать низкий логический уровень принимаемого им сигнала DBG, пока уровень сигнала BGACK не станет низким (до этого уровень сигнала DBR становится низким);
после принятия сигнала DBG вначале восстановить высокий уровень сигнала DBR и после этого уже восстановить высокий уровень сигнала BGACK.
На временной диаграмме (рис. 8.13) этот порядок действий помечен цифрами в кружках 1, 2, 3 и 4. Из диаграммы видно, что шинный арбитр восстанавливает высокий уровень сигнала DBG после того, как уровень сигнала BGACK становится низ- ним (метка 2).
Если во время пользования шиной принимается сигнал DBR от устройства с более высоким приоритетом, арбитр МС68452 передает сигнал BCLR, т. е. если во время пользования некоторым «ведущим» шины уровень сигнала BCLR становится высоким, следующий цикл шины не выполняется. Если же уровень этого сигнала сохраняется низким, по окончании одного цикла шины желательно сохранить за этим устройством право пользования шиной. Поэтому устройства управления доступом к шине должны проектироваться с учетом этой особенности.
Каждое обращение к общей памяти через системную шину должно, как правило, осуществляться через арбитр. Поэтому шинный арбитр должен обладать высоким быстродействием. Для модели МС68452 время, необходимое для арбитража, составляет — 50 нс.
Шинный арбитр последовательного действия
На рис. 8.14 показан принцип последовательного арбитража. В этом случае арбитры распределяются между «ведущими» шины. Отметим, что каждый арбитр функционирует и в качестве устройства управления доступом к шине. Уровень приоритета задается по принципу гирляндной цепи, т. е. каждому арбитру передается входной сигнал IN, указывающий на право пользования шиной. Право пользования предоставляется низким уровнем сигнала IN. У крайнего левого (согласно рис. 8.14) арбитра сигнал IN постоянно имеет низкий уровень, поэтому уровень приоритета этого арбитра наивысший. Чем правее арбитр, тем меньше уровень его приоритета. Если при низком уровне сигнала IN шина не используется, уровень выходного сигнала OUT становится низким, т. е. правый арбитр получает право пользования шиной. Как только он занимает шину, уровень его выходного сигнала OUT становится высоким, т. е. следующему правому арбитру запрещается пользоваться шиной.
Если некоторый «ведущий» занял шину, он должен пользоваться ею до конца данного цикла шины, т. е. другое устройство даже с более высоким приоритетом должно ожидать окончания цикла шины, несмотря на то что приходящий сигнал IN имеет низкий уровень. С этой целью используется сигнал BUSY (занято), показывающий, занята или свободна шина.
Таким образом, каждый шинный арбитр обязан:
установить сигнал BUSY на низкий уровень сразу после
Рис. 8.14. Шинный арбитр последовательного действия.
занятия вать его течениезанятия вать его течениеРис. 8.15. Соединения сигнальных линий между платами.Рис. 8.15. Соединения сигнальных линий между платами.шины и поддержи- в этом состоянии в всего времени поль-
занятия вать его течение
занятия вать его течение
Рис. 8.15. Соединения сигнальных линий между платами.
Рис. 8.15. Соединения сигнальных линий между платами.
зования шиной;
занимать шину только после того, хак им получен
высо- BUSY, когдавысо- BUSY, когдасигнал подтверждения кого уровня сигнала даже в том случае,
высо- BUSY, когда
высо- BUSY, когда
сигнал IN имеет низкий логический уровень. При такой организации отсутствует необходимость в использовании линий REQUEST и GRANT в количестве, пропорциональ-
ному числу «ведущих» шины. Таким образом, на каждой пла- те может быть только один вход 1N и один выход OUT. На рис. 8.15 показана схема соединения плат, из которой видно, что обычные сигнальные линии шины соединяются параллель- но, а вывод OUT левой платы соединяется с выводом IN правой платы.
Однако при организации гирляндной цепи проблема заклю-*
чается в возникновении времени задержки распространения сигнала, предоставляющего право пользования шиной, от крайнего левого до крайнего правого арбитра. Если время, требуемое для прохождения сигнала в арбитре, обозначить td, то общее время задержки' п арбитров равно ntd. Будем считать, что никто из «ведущих» не пользуется шиной, т. е. сигнал IN каждого арбитра имеет низкий логический уровень, а сигнал BUSY — высокий. Если при этом крайний левый «ведущий» занимает шину, то несмотря на то что сигнал OUT имеет высокий уровень, для распространения его до крайнего правого устройства потребуется время ntd. В течение этого времени существует вероятность занятия шины другим «ведущим».
Чтобы этого не происходило, работа всех арбитров синхронизируется общим синхросигналом шины BCLK. Например, если считать, что сигнал BUSY обнаруживается задним фронтом синхроимпульса, то до формирования заднего фронта следующего синхроимпульса пользоваться шиной нельзя, даже если сигнал BUSY имеет высокий уровень. Для предотвращения сбоев время задержки не должно превышать одного цикла шины. Это условие ограничивает число «ведущих» шины. Примером шинного арбитра последовательного действия является модель 8289 фирмы Intel. На рис. 8.16 показана схема включения арбит-
Рис. 8.16. Структура арбитра на базе модели 8289.
ра 8289. С платой арбитр обменивается следующими сигналами: SYSB/RESB— запрос разрешения на право пользования шиной (сответствует сигналу SYSTEM/LOCAL на рис. 8.9); AEN — разрешение пользования системной шиной (соответствует сигналу ACCESS на рис. 8.9).
С системной шиной он обменивается следующими сигналами: S2-0 — сигналы состояния;
BCLK — синхросигналы шины;
BUSY — сигнал, показывающий занятость шины;
CBRQ — сигнал, показывающий, что возник запрос разрешения на право пользования шиной от устройства с более высоким приоритетом;
BPRN — BUS PRIORITY IN (соответствует сигналу IN на рис. 8.14);
BPRO — BUS PRIORITY OUT (соответствует сигналу OUT на рис. 8.14).
Сигнал CBRQ соответствует сигналу BCLR, используемому шинным арбитром параллельного действия. Благодаря возвращению сигнала BUSY на высокий уровень в каждом цикле шины обращение к системной шине осуществляется с высокой скоростью.
Время задержки сигнала разрешения пользования шиной в модели 8289 составляет 25 нс. При тактовой частоте 10 МГц к нему можно подключить не менее трех «ведущих».
Сбои арбитра
Арбитр, как и любое другое устройство, не защищен от сбоев, вероятность возникновения которых в принципе нельзя свести к нулю. Однако путем усовершенствования его схемы эту вероятность можно существенно уменьшить. Так, например, вероятность 10~14 соответствует тому, что при осуществлении арбитра-
SYSTEM /LOCALSYSTEM /LOCALBCLK -BCLK -Рис. 8.18. Узел ошибочного срабатывания шинного арбитра.а — арбитр параллельного действия; б — арбитр последовательного действия.Рис. 8.18. Узел ошибочного срабатывания шинного арбитра.а — арбитр параллельного действия; б — арбитр последовательного действия.
SYSTEM /LOCAL
SYSTEM /LOCAL
BCLK -
BCLK -
Рис. 8.18. Узел ошибочного срабатывания шинного арбитра.
а — арбитр параллельного действия; б — арбитр последовательного действия.
Рис. 8.18. Узел ошибочного срабатывания шинного арбитра.
а — арбитр параллельного действия; б — арбитр последовательного действия.
жа каждую микросекунду сбой возникает один раз в три года. В настоящее время сбои такого рода считаются неизбежными.
Арбитр, в сущности, является асинхронной схемой. На вход его поступают по крайней мере два независимо действующих сигнала X и Y, когда один из них, например Y, переходит с низкого уровня на высокий. При этом низким или высоким уровнем сигнала X необходимо сбрасывать или устанавливать управляющий триггер. Таким образом, его работу можно реализовать с помощью D-триггера, показанного на рис. 8.17. В D-триггере
аб
Рис. 8.19. Ошибочное срабатывание D-триггера.
« — время установки данных; б— случай, когда не выдерживается время установки данных.
при переходе синхронизирующего импульса с низкого уровня на высокий значение сигнала на входе D фиксируется и выводится через выход Q.
На рис. 8.18, а показана схема арбитра параллельного действия. Схема выбора уровня приоритета выполнена на комбинационной схеме. Последняя в свою очередь построена по принципу отбора и вывода сигнала с наивысшим уровнем приоритета из нескольких входных сигналов, причем асинхронное изменение входных сигналов DBR не влияет на правильную работу комбинационной логической схемы. Ее выходные сигналы U2, Ui и Uo поступают на информационные входы D соответствующих D-триггеров. При переходе сигнала BGACK с низкого уровня на высокий значения сигналов U2, Ui и Uo должны запоминаться в D-триггерах.
Арбитр последовательного действия синхронизируется тактовыми импульсами шины BCLK, поэтому дополнительной схемы синхронизации для него не требуется. Сигнал запроса доступа к системной шине SYSTEM/LOCAL не синхронизируется с тактовыми импульсами BCLK, однако для формирования выходных сигналов, синхронизированных с этими импульсами, следует использовать схему, показанную на рис. 8.18, б.
Проблема в данном случае заключается в необходимости соблюдения времени установки данных (рис. 8.19, а) для обеспечения правильности работы D-триггера (например, в модели SN74ALS74 минимальное значение этого времени составляет 15 нс). Но так как данные не синхронизируются тактовой частотой, время установки данных часто не соблюдается.
Неправильное срабатывание D-триггера происходит в том случае, когда данные изменяются непосредственно перед переходом тактового импульса с низкого уровня на высокий. Ясно,
что в этом случае нельзя зафиксировать ни высокий, ни низкий уровень информационных сигналов. Проблема усложняется тем, что выходной сигнал Q, не совпадающий ни с низким, ни с высоким уровнем (например, 1,4 В), довольно длительное время находится
Промежуточное
значение сигнала
D Q >С
Рис. 8.20. Ошибочное срабатывание из-за поступления промежуточного сигнала в последующую схему.
в этом промежуточном состоянии (рис. 8.19). Это состояние не является стабильным, поэтому сигнал в конце концов переходит на низкий или высокий уровень, и любое из этих Длительность промежуточного
состояний является стабильным, состояния может составлять от
10 мкс до 1 с. Таким образом, сигнал промежуточного уровня, подаваемый в другую схему, является источником ошибочного срабатывания (рис. 8.20). Для уменьшения вероятности возникновения ошибочного срабатывания при построении схемы
D-триггера следует использовать транзисторы с максимальным коэффициентом усиления.
Кроме того, следует максимально увеличить времена получения результата распознавания состояния (т. е. понизить быстродействие D-триггера). Для этого широко используется метод последовательного соединения нескольких D-триггсров. Указанная проблема ошибочного срабатывания характерна не только для D-триггера, она неизбежно возникает в случае применения любого триггера (бистабильной схемы).
На практике эта проблема характерна не только для арбитра. Например, если процессор синхронизируется тактовой частотой, входной сигнал от внешнего устройства (типа запроса прерывания) может быть не синхронизирован этой частотой. Поэтому проблема ошибочного срабатывания обычно возникает
при считывании такого несинхронизированного входного сигнала в тактируемый триггер. Всегда необходимо следить за тем, чтобы вероятность возникновения ошибочного срабатывания была пренебрежимо малой.
8.2.5. Пример структуры интерфейса системной шины
Рассмотрим случай, когда процессор 8086 работает в максимальном режиме, т. е. в схеме, показанной на рис. 8.21, вывод MN/MX заземлен. Шинный контроллер 8288 по сигналам состояния S2-o формирует команды управления шиной. Три 8-разряд- ных регистра-фиксатора определяют и выдают на адресную ши-
Рис. 8.21. Схема включения модели 8086 в максимальном режиме.
ну 20-разрядные адреса. Два 8-разрядных приемопередатчика 8286 работают как буферы 16-разрядной шины данных. Сигналы ALE (разблокирование фиксатора адреса) для управления регистрами 8288, DEN (разблокирование^ данных) для управления приемопередатчиками 8286 и DT/R (передача-прием данных) также генерируются контроллером 8288.
На рис. 8.22 показан пример схемы интерфейса системной шины. Со стороны системной и локальной шин используются контроллеры 8288, три регистра 8282 и два приемопередатчика 8286. В качестве шинного арбитра применяется модель 8289. В начале цикла шины процессор 8086 формирует адресный сигнал. Дешифратор адреса определяет, осуществляется ли в этот цикл обращение к системной или к локальной шине. Шинный контроллер 8288 помимо входов для сигналов состояния S2-0 имеет еще два управляющих входа CEN и AEN. Данный контроллер функционирует только тогда, когда на входе CEN сигнал имеет высокий уровень, а на входе AEN — низкий. Когда уровень выходного сигнала SYSTEM/LOCAL дешифратора адреса становится высоким, на входе SYSB/RESB арбитра 8289 высокий уровень сигнала инициирует запрос разрешения на право пользования шиной. Одновременно уровень сигнала на входе CEN конроллера 8288 со стороны системной шины становится высоким, т. е. выполняется одно из условий его работы. В то же время сигнал на вход CEN другого контроллера (со стороны локальной шины) имеет низкий уровень, его работа запрещается. Если арбитр 8289 предоставляет право пользования шиной,,
Рис. 8.22. Интерфейс системной шины, который расположен на плате компьютера, выполненного на базе процессора 8086.
уровень выходного управляющего сигнала AEN становится низким, т. е. контроллер 8288 запускается. В результате приводятся в действие адресный регистр-фиксатор 8282 и приемопередатчик 8286. По ответному сигналу подтверждения передачи данных ХАСК от системной шины тактовый генератор 8284А передает в процессор 8086 сигнал READY, что свидетельствует о завершении данного цикла шины. Генератор 8284А оснащен двумя
схемами формирования сигнала READY. При низком, уровне сигнала AEN1 сигнал READY формируется по сигналу, посту» пающему на вход RDY1, при низком уровне сигнала AEN2 он формируется по сигналу, поступающему на вход RDY2, т. е. первая схема используется при обращении к системной шине, а вторая схема — при обращении к локальной шине.
Если конфигурацию, показанную на рис. 8.22, дополнить устройством управления прерываниями, то получится завершенная плата компьютера, обеспечивающая сопряжение интерфейсов периферийных устройств с локальной шиной.
Системная шина
Каждая система организуется с помощью соответствующего набора функциональных плат компьютера, памяти и других устройств. Как уже говорилось выше, все эти платы соединяются по системной шине. Поэтому необходимо, чтобы их шинные интерфейсы обладали совместимостью. При этом возникает проблема, какого типа системную шину использовать.
Стандартизация системной шины
Средства системной шины могут быть самыми разнообразными. В этой ситуации рационально принять какую-нибудь системную шину в качестве стандарта и все платы привести в соответствие с этим стандартом, т. е. изготовителям плат следует позаботиться о том, чтобы их продукция отвечала средствам одной шины, а пользователи благодаря этому получают возможность непосредственного подсоединения к шине изделий любого изготовителя.
•В этом направлении прилагаются определенные усилия. Требуется, чтобы путем четкого описания средств шины, подлежащих стандартизации и проектированию устройств в соответствии с этим стандартом, была обеспечена их полная взаимозаменяемость. В настоящее время широкое применение получили системная шина MULTIBUS (16 бит данных и 24 бит адреса), спроектированная фирмой Intel, и шина VERSABUS (32 бит данных и 32 бит адресов), спроектированная фирмой Motorola. В ИИЭР0 основным стандартом считается шина IEEE796 — аналог шины MULTIBUS. В данное время Международная электротехническая комиссия (МЭК) продолжает работы по стандартизации шин, и в мировой стандарт кроме шины IEEE796 включены также средства шины VERSABUS. *
Институт инженеров по электротехнике и радиоэлектронике, США.— Прим. перев.
Стандарт на средства системной шины должен определить следующее:
виды и функции сигнальных линий и назначение контактов;
электрические характеристики сигналов;
форму и размеры платы.
Поэтому описанию средств шины уделяется довольно большое внимание.
Шине IEEE796
Ниже кратко описаны средства этой шины.
Форма и размеры платы. На рис. 8.23 показаны форма и основные размеры платы. Часть платы, стыкуемая с разъемом, называется краевым соединителем, который состоит из двух участков Р1 и Р2. На участке Р1 расположено 43 контакта с одной стороны платы, т. е. всего 86 контактов (шаг между контактами составляет 0,156 дюйма). На участке Р2 расположено 30 контактов с каждой стороны платы, т. е. всего 60 контактов (с шагом 0,100 дюйма). Контакты, расположенные на лицевой стороне поверхности с элементами, нумеруются нечетными числами, с обратной стороны контакты нумеруются четными числами. Краевой соединитель при необходимости может быть расположен и в верхней части платы (обычно это делается при соединении с периферийным устройством).
Лицевая поверхность
Р1 (43 х 2 контактов» Р2(30 х 2 контактов)
~*l I*- 0,156
Рис. 8.23. Шина IEEE796 (размеры даны в дюймах).
Назначение контактов шины IEEE796
Участок Р1
Лицевая сторона платы
Номер контакта
Условное обозначение
Назначение
Питание
1
GND
«Подвешенная земля»
3
+ 5V
+ 5 В постоянного тока
5
+ 5V
-1- 5 В постоянного тока
7
+ 12V
+12 В постоянного тока
9
Запасной, шинный
11
GND
«Подвешенная земля»
13
BCLK
Синхроимпульсы шины
Управление шиной
15
BPRN
Разрешение пользования шиной
17
BUSY
Сигнал занятости шины
19
MRDC
Команда считывания памяти
21
IORC
Команда считывания порта ввода-
вывода
23
ХАСК
Подтверждение передачи
25
LOCK
Задержка доступа к памяти
Управление
27
BHEN
Передача старшего байта
шиной
адреса
29
CBRQ
Общий запрос шины
31
CCLK
Тактовые синхроимпульсы
33
INTA
Подтверждение прерывания
Прерывания
35
37
INT6
INT4
Запрос прерывания
39.
INT2
41
Into
Адреса
43
ADRE
45
ADRC
47
ADRA
49
ADR8
Адресная шина
51
ADR6
Лицевая сторона платы
Номер контакта
Условное обозначение
Назначение
53
ADR4
55
APR?
57
APR0
59
DATE
Данные
61
DATC
Шина данных
63
РАТА
65
DAT8
67
DAT6
69
DAT4
71
DAT2
73
РАТО
75
GNP
«Подвешенная земля»
Питание
77
Запасной, шинный
79
—12V
— 12 В постоянного тока
81
4- 5V
4- 5 В постоянного тока
83
4- 5V
4- 5 В постоянного тока
85
GNP
«Подвешенная земля»
2
GNP
«Подвешенная земля»
Питание
4
4- 5V
4- 5 В постоянного тока
6
+ 5V
4- 5 В постоянного тока
8
4-12V
4-12 В постоянного тока
10
Запасной, шинный
12
GNP
«Подвешенная земля»
14
1NIT
Инициализация
Управление
16
BPRO
Запрещение пользования шиной
шиной
18
BREQ
Запрос шины
20
MWTC
Команда записи в память
22
IOWC
Команда записи в порт ввода-вы
вода
Номер контакта
Условное обозначение
Назначение
24
INHT
Запрет 1 (блокировка ОЗУ)
26
INH2
Запрет 2 (блокировка ППЗУ или
ПЗУ)
Управление
adrTo
шиной и ад-
28
ресом
30
adrTi
Адресная шина
32
ADR12
34
ADR13
36
LNTT*
38
1NT5™
Прерывания
40
IntT
Запрос прерывания
42
INTI
44
ADRF
Адреса
46
ADRD
48
ADRB
50
ADR9
52
ADR7
Адресная шина
54
ADR5
56
ADR3"
58
ADR?
60
DATE
62
PAID
Данные
64
DATB
66
DAT9*
Шина данных
68
DAT?
70
DATS'
72
DATS
74
DAT1
76
GND
«Подвешенная земля»
78
Запасной, шинный
Питание
80
—12 V
—12 В постоянного тока
Номер контакта
Условное обозначение
Назначение
82
+ 5V
4- 5 В постоянного тока
84
+ 5V
+ 5 В постоянного тока
86
GND
«Подвешенная земля»
Участок Р2
Лицевая сторона
Обратная сторона
Номер контакта
Условное обозначение
Назначение
Номер контакта
Условное обозначение
Назначение
1
Запасные,
2
Запасные, нешин
•
нешинные
ные
39
40
41
43
45
47
Запасные,
42
44
46
48
Запасные, шинные
49
51
53
шинные
50
52
54
55
ADR16
Адресная
56
ADR17
Адресная шина
57
ADR 14
шина
58
ADR 15
59
Запасной, нешинный
60
Запасной, нешинный
Функции и виды сигналов, а также назначение контактов приведены в табл. 8.2. Мы не описываем подробно электропитание и информационные сигналы. Адреса состоят в основном из 20 разрядов, но могут быть дополнены четырьмя старшими разрядами, соответствующие контакты которых расположены на участке Р2.
Рис. 8.24. Шина IEEE796. Временные диаграммы в циклах считывания (а) и записи (б).
Командами управления шиной являются следующие:
MRDC — команда считывания памяти;
MWTC— команда записи в память;
IORDC — команда считывания порта ввода-вывода;
IOWTC — команда записи в порт ввода-вывода.
Сигнал ХАСК (подтверждение передачи) указывает на окончание цикла считывания-записи.
На рис. 8.24 показаны временные диаграммы цикла считывания-записи. В цикле считывания «ведущий» шины передает сначала адреса, а затем сигнал MRDC. В случае готовности памяти к выдаче данных уровень сигнала ХАСК становится низким. По этому сигналу «ведущий» шины осуществляет считывание данных и команда считывания заканчивается, а сигнал ХАСК средствами памяти возвращается на высокий уровень. В цикле записи «ведущий» шины сначала передает адреса и данные, а затем сигнал MWTC. Со стороны памяти осуществля-
Требования, предъявляемые к формирователю сигналов, к приемнику и к оконечной нагрузке
Формирователь
Приемник
Оконечная нагрузка
Сигнал
Тип
^L* mA
^н» 002 мкА пФ
'if *1 мА m
H- Cl$)- кА пФ
Местоположение
Тип
Сопротивление
DATO—
DATF
TC
16
—2000 300
-0,8
125
18
В ОДНОМ месте
Привязка к +5В
2,2 кОм
ADRO - ADRF
TC
16
—2000 300
—0,8
125
18
То же
То же
2,2 кОм
BHEN MRDC MWTC
TC
32
—2000 300
—2
125
18
« «
« «
1 кОм
IORC
IOWC
TC
32
—2000 300
—2
125
18
« «
« «
1 кОм
ХАСК
TC-
32
-2000 300
-2
125
18
< «
« «
510 Ом
INH1, INH2
OK
16
—300
—2
50
18
« «
« «
1 кОм
BCLK
ТТЛ
48
-3000 300
—2
125
18
На объединительной плате
+ 5В Земля
220
330 Ом
BREQ
BPRO
BPRN
ТТЛ
« «
5
5
5
-400 60
—400 60
—40060
—2
— 1,6
-2
50
50
50
18
18
На модуле шинного арбитра
Привязка к +5В
1 кОм
BUSY
CBRQ
ок
32
—300
—2
50
18
В одном месте
То же
1 кОм
INIT
OK
32
- 300
—2
50
18
То же
« «
2,2 кОм
CCLK
TntT
ТТЛ
48
—3000 300
—2
125
18
На объединительной плате
; 5 в
3ev.v
220 Ом
330 Ом
TC
32
-2000 300
-2
125
18
В одном месте
Привязка к +5 В
1 кОм
INTO—
TNT7“
OK
16
-300
— 1,6
40
18
То же
То же
1 кОм
’) ТС —тристабильный выход; ОК — выход с открытым коллектором;
2) ^Ol’ ^Он — минимальный выходной ток соответственно низкого и высокого уров- «''А. С., - миннма.ч чая смк<"'1Ь naipx ,ки:
°) Ll* L’ " максимальный выхода >й ток госiзетстн нно низкого и высокого уровней, ^i ■ м«!» с льная ем осн» на1рузки
ется запись данных, причем уровень сигнала ХАСК становится низким. На этом заканчивается команда записи (запись данных со стороны памяти может осуществляться и по переднему фронту сигнала MWTC), память возвращает сигнал ХАСК на высокий уровень.
INTO—INT7— сигналы запроса прерывания. Сигнал INTO имеет наивысший уровень приоритета. INTA — сигнал подтверждения запроса прерывания.
Арбитраж шины осуществляется последовательным способом. Назначение сигналов BCLK, BPRN, BPRO, BUSY описывалось в разд. 8.2.3. LOCK — сигнал, указывающий на непрерывное использование нескольких циклов шины в одной команде. BREQ — сигнал запроса разрешения на право пользования шиной «ведущим»; используется при работе с арбитром параллельного действия.
CCLK — общие тактовые синхроимпульсы. INIT — сигнал сброса для инициализации всей системы. INH1, INH2 — управляющие сигналы, запрещающие функционирование памяти.
Кроме того, неиспользуемые контакты подразделяются на шинные и нешинные. Первое определение означает соединение всех контактов с одинаковыми номерами с тыльной стороны разъема.
Электрические характеристики. Ниже кратко рассмотрены стандарты на электрические характеристики сигналов, которые необходимо учитывать при проектировании плат. Уровни сигналов должны находиться в следующих пределах:
на выходе формирователя:
5,25 В > высокий уровень >0,24 В
0,5 В>низкий уровень>0 В
на входе приемника:
5,25 В>высокий уровень>2,0 В 0,8>низкий уровень>—0,5 В.
В табл. 8.3 приведены основные требования, предъявляемые к формирователю сигналов (в частности, минимальный ток возбуждения, минимальная емкость нагрузки), к приемнику (максимальный входной ток, максимальная входная емкость), а также к оконечной нагрузке.
9
Секционные процессоры
В настоящее время разрабатываются различные 8-, 16- и 32-раз- рядные микропроцессоры. На кристалле такого микропроцессора собраны все средства, необходимые для универсального процессора. Поэтому обычно микрокомпьютер строится на базе такого универсального процессора с однокристальной конфигурацией. Однокристальные универсальные процессоры обеспечивают уменьшение габаритов компьютеров и снижение их стоимости.
Однако в отдельных случаях требуется такая скорость обработки, которую однокристальный универсальный процессор не в состоянии обеспечить. В этих случаях используется специализированный быстродействующий многокристальный процессор, получивший название секционного процессора (разрядно-секционного процессора).
Идея создания разрядных секций
Практически используемые в настоящее время интегральные схемы (ИС) по структуре, своих элементов подразделяются нь МОП-ИС и биполярные ИС. Для реализации высокой степени интеграции выгодно использовать МОП-ИС, поэтому МОП-тех- нология применяется при создании однокристальных универсальных процессоров. Однако, чтобы обеспечить высокое быстродействие, выгодно использовать биполярные ИС, поэтому большие машины построены именно на таких схемах. -,
Для создания специализированных быстродействующих процессоров также применяется биполярная технология. В настоящее время выпускается большое количество цифровых логических схем, основные функциональные элементы которых выпол-
Тактовые импульсыТактовые импульсыШима управленияШима управленияРис. 9.1. Стандартная структура процессора.Рис. 9.1. Стандартная структура процессора.
Тактовые импульсы
Тактовые импульсы
Шима управления
Шима управления
Рис. 9.1. Стандартная структура процессора.
Рис. 9.1. Стандартная структура процессора.
йены на биполярных транзисторах. К ним относятся кристаллы с малой степенью интеграции, содержащие небольшое число вентилей и триггеров, и кристаллы со средней степенью интеграции— регистры, дешифраторы, мультиплексоры. С их помощью можно построить процессор с любой архитектурой. Но так как для этого потребуется довольно большое количество кристаллов, проектирование процессора усложняется.
В этой ситуации предлагается разбить процессор на несколько функциональных модулей, которые выполняются в виде соответствующих больших интегральных схем (БИС). Такой подход накладывает ограничения на выбор архитектуры, которую можно реализовать нд БИС, но тем не менее позволяет существенно сократить число кристаллов. При этом каждый функциональный модуль проектируется таким образом, чтобы его можно было использовать в качестве универсального элемента.
Процессор, как уже говорилось выше, состоит из блока управления и операционного блока (рис. 9.1). Операционный блок должен обеспечить выполнение операций с данными заданной разрядности. Обозначим единицу разрядности данных как N и возьмем функциональные модули, выполняющие операции с N-разрядными данными. Если параллельно соединить М таких функциональных модулей, то можно будет построить М-N-разрядный операционный блок. Полученный таким путем блок носит название разрядно-секционного блока. Длина секции N в большинстве случаев равна 4 или 8 разрядам. Обычно функциональный модуль операционного блока кроме арифмети- ческо-логического устройства (АЛУ) содержит также файл регистров общего назначения. Поэтому такой модуль принято со-
Операционный блок
Рис. 9.2. Стандартная структура блока микропрограммного управления.
кращенно называть РАЛУ (регистровое и арифметическо-логи- ческое устройство). Однако выпускаемые устройства часто содержат только АЛУ или АЛУ с аккумулятором.
Все сказанное выше верно и для блока управления. Как правило, этот блок реализует функцию микропрограммного управления, поэтому в состав входит память для хранения микропрограмм и формирователь последовательности микрокоманд (рис.9.2). Последний представляет собой функциональный модуль, формирующий адресные сигналы для памяти микропрограмм. Разрядность этих адресов определяет максимальное количество слов в памяти микропрограмм. В этом случае также используются N-разрядные (например, 4- или 8-разрядные) секции, параллельным соединением которых строится формирователь с требуемой разрядностью.
И при таком подходе также желательно уменьшить, на сколько это возможно, число кристаллов. В настоящее время степень интеграции биполярных ИС возросла. Появились модули, содержащие на одном чипе 16-разрядное РАЛУ или 12-, 14-разряд- ный контроллер последовательности микрокоманд. Такие кристаллы с высокой степенью интеграции позволяют построить операционный и управляющий блоки без разделения на разрядные секции. Поэтому название «секционный», возможно, уже не будет определяющим для этих устройств. Однако метод обеспечения высокого быстродействия за счет применения биполярных
Таблица 9.1
Типовые функциональные модули для применения в разрядно-секционных устройствах
Функция
Название модуля
Разрядность
Число ВЫВО
ДОВ
Фир м а- изготови тел ь
Год выпуска
РАЛУ
Ат2901
4
40
AMD
1975
MCI 0800
4
48
Motorola
1976
SN74S481
4
48
Texas Instruments
1977
Ат2903
4
48
AMD
1977
Ат29116
16
52
AMD
1983
AS888/889
8
64
Texas Instruments
1983
Формирователь
Ат2909
4
28
AMD
1975
последователь
MCI 0801
4
48
Motorola
1976
ности мик
SN74S482
4
20
Texas Instruments
1977
рокоманд
Ат2911
4
20
AMD
1977
Ат2910
12
40
AMD
1977
AS890/891
14
64
Texas Instruments
1983
ИС и построения специализированного процессора на кристаллах функциональных модулей может быть использован и в будущем. В табл. 9.1 приведены типовые функциональные модули, выпускаемые в настоящее время для применения в разрядносекционных устройствах. Отметим, что биполярные ИС также подразделяются на несколько типов; так, модели МС 10800 и 10801 выполнены на ЭСЛ-схемах (эмиттерно-связанная логика), а остальные — на ТТЛШ-схемах (транзисторно-транзисторная логика с диодами Шоттки). Время выполнения операции для ЭСЛ-модулей составляет — 20 нс, а для ТТЛШ-модулей — —100 нс.
Структура блока управления
Блок управления реализует функцию микропрограммного управления. Для управления каждым блоком процессора требуется ряд управляющих сигналов. Эти сигналы синхронизируются тактовыми импульсами (рис. 9.3). Если требуется m управляющих сигналов, разрядность памяти микропрограмм также равна т. В этом случае m-разрядные микрокоманды считываются каждым тактовым импульсом и помещаются в регистр микрокоманд.
Рис. 9.3. Управляющие сигналы, синхронизированные тактовыми импульсами.
Вход прямого адрес»
^(п-1)-о
Y(n-i)-0
Адреса микропрограмм
Рис. 9.4. Структура формирователя последовательности микрокоманд.
Выходные сигналы этого регистра используются в качестве управляющих. Управляющие сигналы служат как для управления операционным блоком, так и для управления самим блоком управления. Формирователь последовательности микрокоманд также управляется этими сигналами.
Рис. 9.5. Структура блока управления, предусматривающая выполнение команды условного перехода.
На рис. 9.4 приведена структура формирователя последовательности микрокоманд. Разрядность адресных сигналов памяти микропрограмм равна п.
Главным устройством такого формирователя является микропрограммный счетчик (МПС), в котором хранятся адреса микропрограмм. Содержимое счетчика обычно выводится через мультиплексор и вентиль. Инкрементор увеличивает на единицу значение текущего адреса, поэтому в следующем такте в качестве адресного сигнала выводится значение текущего адреса +1. Мультиплексор выбирает один из четырех n-разрядных сигналов (цРС, F, R или D). Двухразрядные сигналы Si и So управляют выбором этих сигналов. При выборе сигнала р,РС осуществляется считывание последовательности адресов.
При выполнении команды перехода ее начальный адрес передается в виде входных сигналов D прямого адреса и выбирается мультиплексором. Микропрограммирование также предусматривает использование подпрограмм. При выполнении подпрограммы, как и в случае команды перехода, ее начальный адрес передается в виде входных сигналов прямого адреса, при
D3-0
Yg.o СвЫхСвх
Рис. 9.6. Структура 4-разрядной секции формирователя последовательности микрокоманд (модуль Ат2909).
этом адрес возврата (который хранится в микропрограммном счетчике) заносится в стековый файл. Для управления стековым файлом используются сигналы FE (разблокировка файла) и PUSH/POP. При возврате из подпрограммы содержимое стека извлекается и формируется сигнал F. Кроме того, адрес, приходящий на вход прямого адреса, временно хранится во вспомогательном регистре и его можно считать в виде сигнала R. При выполнении команды условного перехода выбор сигналов рРС и D определяется кодом условий, хранящимся в регистре состояния. Общая структура блока управления (рис. 9.5) предусматривает использование поля, содержащего один из кодов условия в микрокоманде, и поля, в котором хранится адрес перехода. Логическая схема распознавания условия определяет,
Вхрд прямого адреса
Адресные сигналы
Рис. 9.7. 12-разрядный формирователь последовательности микрокоманд из 4-разрядныХ секций.
MAP PLMAP PLАдресный выходАдресный выходВход прямого адресаВход прямого адресаФормирование условия ссФормирование условия ссКоманды f3-oКоманды f3-oРис. 9.8. Структура 12-разрядного формирователя последовательности микрокоманд (модуль Ат2910).Рис. 9.8. Структура 12-разрядного формирователя последовательности микрокоманд (модуль Ат2910).
MAP PL
MAP PL
Адресный выход
Адресный выход
Вход прямого адреса
Вход прямого адреса
Формирование условия сс
Формирование условия сс
Команды f3-o
Команды f3-o
Рис. 9.8. Структура 12-разрядного формирователя последовательности микрокоманд (модуль Ат2910).
Рис. 9.8. Структура 12-разрядного формирователя последовательности микрокоманд (модуль Ат2910).
Шина данных
Рис. 9.9. Управление считыванием микрокоманд с помощью микрокоманды.
установлено или нет указанное условие, и в соответствии с полученным результатом передает сигналы Si и So для управления мультиплексором (т. е. если условие выполняется, выбирается сигнал D, в противном случае — сигнал рРС).
Реализация такого контроллера на разрядных секциях не представляется сложной. На рис. 9.6 приведена структура 4-раз- Рядной секции (А1П2909). Для ее организации требуются лишь
сигналы Свх (перенос из младшего разряда) и Свых (перенос в старший разряд), используемые для связи с инкрементором. Из рис. 9.7 видно, что использование трех таких устройств позволяет формировать 12-разрядные адресные сигналы. В настоящее время можно воспользоваться модулем (рис. 9.8), содержащим на кристалле 12-разрядный контроллер последовательности (например, модуль Агп2910). В этом модуле его работой управляют 4-разрядные команды 13-о. Сигнал СС используется для команды условного перехода; при выполнении условия СС = 0, в противном случае СС=1.
Работа процессора определяется командами (микрокомандами), считанными из основной памяти по шине данных. По одной команде обычно выполняется несколько микрокоманд. После выполнения некоторой команды процессор переходит к выполнению следующей. На рис. 9.9 приведена конфигурация, обеспечивающая выполнение систем микрокоманд, соответствующих каждой команде. В данном примере следующая выполняемая команда хранится в регистре команд. Содержимое поля кода операции каждой команды в виде адресных сигналов выдается в распределенную память (если длина поля кода операции равна 8 бит, объем памяти составляет 256 слов). В распределенной памяти хранится начальный адрес системы микрокоманд, соответствующей данному коду операции. Таким образом, если контроллер вырабатывает сигнал МАР = 0, начальный адрес передается на вход прямого адреса и следующая микрокоманда считывается из этого начального адреса. Для того чтобы уровень сигнала МАР был равен логическому 0, в формирователь в качестве команды 13-о следует передать команду JUMP МАР (ее код равен 0010). Обычно эта команда помещается в конце системы микрокоманд.
Кроме этой команды для управления формирователем используется также команда BRANCH CONDITIONALLY (с кодом ООН). Если при выполнении этой команды сигнал СС имеет уровень логического 0, контроллер генерирует сигнал перехода; когда уровень сигнала PL становится равным логическому 0, адрес перехода, хранящийся в регистре микрокоманд, передается на вход прямого адреса.
Кроме этого, в модуле Агп2910 предусмотрены также средства автоматического выполнения циклических операций. Число циклов хранится во вспомогательном регистре, и при выполнении одного цикла его содержимое уменьшается на единицу. Имеется также специальная схема, обнаруживающая обнуление содержимого этого регистра.
Структура операционного блока
На рис. 9.10 приведена стандартная структура операционного блока. Главными устройствами его являются АЛУ и файл регистров общего назначения. Регистровый файл имеет два порта А и В. Его объем обычно составляет 16 слов. Для выбора портов используется 8-разрядный управляющий сигнал (по 4 разряда на каждый порт). Данные, одновременно считанные из обоих портов, поступают в АЛУ, и результат операции через сдвиговый регистр снова поступает в АЛУ из порта В. АЛУ выполняет по крайней мере 8 операций. Многофункциональные АЛУ предусматривают выполнение 32 операций. Для выбора операции
Рис. 9.10. Стандартная структура РАЛУ.
ВходныеВыходные
данныеданные
Рис. 9.11. Структура 4-разрядной секции РАЛУ (упрощенный вариант модуля Ат2901).
используются, как правило, 3- и 5-разрядные управляющие сигналы. Сдвиговые регистры также бывают различных типов, но обычно используются устройства со сдвигом влево или вправо на 1 бит. Кроме этих устройств в операционном блоке еще имеются два мультиплексора, которые обеспечивают ввод данных из шины непосредственно в АЛУ, а также вывод содержимого регистрового файла на шину данных. Операционный блок с такой организацией легко сделать разрядно-секционным. На рис. 9.11 показана 4-разрядная секция РАЛУ, которая представляет собой упрощенный вариант модуля Ат2901 (в действитель-
Входные данныеВходные данныеУправляющие сигналы,.Управляющие сигналы,.Выходные данныеРис. 9.12. Структура 16-разрядного РАЛУ на базе 4-разрядных секций.Выходные данныеРис. 9.12. Структура 16-разрядного РАЛУ на базе 4-разрядных секций.
Входные данные
Входные данные
Управляющие сигналы,.
Управляющие сигналы,.
Выходные данные
Рис. 9.12. Структура 16-разрядного РАЛУ на базе 4-разрядных секций.
Выходные данные
Рис. 9.12. Структура 16-разрядного РАЛУ на базе 4-разрядных секций.
| Аккумулятор || Аккумулятор |ФиксаторданныхФиксаторданных
| Аккумулятор |
| Аккумулятор |
Фиксаторданных
Фиксаторданных
Регистровыйфайл(32 слова)
"’Т—
Регистр I команд J
♦
Дешифраторкоманд
11 I
Сигналы длявнутричиповогоуправления
V 16
1)5-0
Регистр команд
СС
Логика распознавания условия
Циклический I сдвиговый регистр!
I f'^yKoA условия Мультиплексор
Мультиплексор
{Мультиплексор
Вывод команд
Формированиеусловия
Ввод-выводданных
Рис. 9.13. Структура 16-разрядного РАЛУ (упрощенный вариант модуля ДтЭДПв),
Шина управления
Рис. 9.14. Структура 16-разрядного процессора на базе модулей Ат29116 и Ат2910.
ности модуль Ат2901 содержит вспомогательный регистр Q для выполнения операций умножения и деления, а также сдвиговый регистр). Для организации разрядно-секционного операционного блока управляющие сигналы АЛУ дополняются еще двумя сигналами Свх (перенос из младшего разряда) и Свых (перенос в старший разряд), и управляющие сигналы сдвигателя также дополняются двумя сигналами Si (связь с младшей секцией) и Sh (связь со старшей секцией). На рис. 9.12 иллюстрируется способ объединения секций. Следует отметить, что данный способ наиболее простой и увеличивает время распространения переноса в АЛУ. Для ускорения выполнения операций часто используется дополнительный кристалл, формирующий с помощью логической схемы сигнал переноса. Такой подход называется
«предварительным просмотром в схеме ускоренного переноса». В этом случае для формирования переноса требуются вспомогательные сигналы. Разрядно-секционное РАЛУ для формирования кодов условий обычно вырабатывает 4 сигнала: перенос, переполнение разрядной сетки, знак и нуль.
В качестве первых трех сигналов всего операционного блока, обозначаемых соответственно С, OF, S, можно использовать сигналы самой старшей разрядной секции: перенос (этот сигнал Свых), переполнение разрядной сетки и знак. Так как сигнал «нуль» секции указывает на обращение в нуль только 4-разряд- ного содержимого собственного сдвигового регистра, то в качестве сигнала «нуль» Z всего операционного блока необходимо взять логическую сумму сигналов «нуль» всех секций.
В настоящее время можно воспользоваться 16-разрядным однокристальным РАЛУ (например, модулем Ат29116) (рис. 9.13). Это устройство больше похоже на автономный 16-разрядный процессор, чем на РАЛУ. 16-разрядные команды 115-о управляют работой данного устройства, которое помимо регистрового файла объемом 32 слова содержит также аккумулятор, регистр состояния и оснащен логикой диагностики условий. АЛУ снабжено дополнительными средствами выполнения битовых операций. Помимо этого данный модуль содержит циклический сдви- гатель, осуществляющий сдвиг на произвольное число бит. На рис. 9.14 показана архитектура быстродействующего процессора, выполненного на базе этого кристалла.
Временная диаграмма работы системы
Система микропрограммирования предусматривает использование содержимого, считанного из памяти микропрограмм, непосредственно в качестве управляющих сигналов. В этом случае задержка от момента передачи в память адресного сигнала до вывода ее содержимого определяется только временем выборки tacc В операционном блоке в соответствии с переданным управляющим сигналом, т. е. в соответствии с микрокомандой, выполняется определенная операция, которая также требует определенного времени 1\щ (например, время, необходимое для считывания содержимого РОН, получения результата на выходе АЛУ и помещения его снова в РОН). Поэтому если считывание и выполнение микрокоманды осуществляются последовательно, то ее цикл
t^ji = tacc 4" t alu
т. е. быстродействие всей системы снижается. Поэтому считывание и выполнение микрокоманды осуществляются параллельно.
Адрг< переходаАдрг< переходаКод условияКод условия
Адрг< перехода
Адрг< перехода
Код условия
Код условия
Ряс. 9.15. Конвейерная система, используемая при микропрограммном управ Ленин.
Интервал времени 7Интервал времени / * 1
Тактовые импульсы—»Содержимое микропрограммного счетчикаСодержимое регистра микрокомандСодержимое регистра общего назначенияСодержимое регистра состо-Работа памятиРабота операционного блокаВыход инкрементораВход DТактовые импульсы—»Содержимое микропрограммного счетчикаСодержимое регистра микрокомандСодержимое регистра общего назначенияСодержимое регистра состо-Работа памятиРабота операционного блокаВыход инкрементораВход DАдрес А,- 7 -й микрокоманды/-1-я микрокомандаРезультат выполнения 7-2-й микрокомандыРезультат выполнения 7 -2-й микрокомандыСчитывание 7 -й микрокомандыВыполнение 7-1-й микрокомандыА,-1Переход внутри 7 -1 -й микрокомандыАдрес Я,_1Адрес А,- 7 -й микрокоманды/-1-я микрокомандаРезультат выполнения 7-2-й микрокомандыРезультат выполнения 7 -2-й микрокомандыСчитывание 7 -й микрокомандыВыполнение 7-1-й микрокомандыА,-1Переход внутри 7 -1 -й микрокомандыАдрес Я,_1Адрес А/.Ц 7-М-й микрокоманды7 -я микрокомандаРезультат выполнения 7-1-й микрокомандыРезультат выполнения 7-1-й микрокомандыСчитывание 7* 1-й микрокомандыВыполнение 7-й микрокомандыА/*1 +1Переход внутри 7 -й микрокомандыАдрес В,Адрес А/.Ц 7-М-й микрокоманды7 -я микрокомандаРезультат выполнения 7-1-й микрокомандыРезультат выполнения 7-1-й микрокомандыСчитывание 7* 1-й микрокомандыВыполнение 7-й микрокомандыА/*1 +1Переход внутри 7 -й микрокомандыАдрес В,
Тактовые импульсы—»
Содержимое микропрограммного счетчика
Содержимое регистра микрокоманд
Содержимое регистра общего назначения
Содержимое регистра состо-
Работа памяти
Работа операционного блока
Выход инкрементора
Вход D
Тактовые импульсы—»
Содержимое микропрограммного счетчика
Содержимое регистра микрокоманд
Содержимое регистра общего назначения
Содержимое регистра состо-
Работа памяти
Работа операционного блока
Выход инкрементора
Вход D
Адрес А,- 7 -й микрокоманды
/-1-я микрокоманда
Результат выполнения 7-2-й микрокоманды
Результат выполнения 7 -2-й микрокоманды
Считывание 7 -й микрокоманды
Выполнение 7-1-й микрокоманды
А,-1
Переход внутри 7 -1 -й микрокоманды
Адрес Я,_1
Адрес А,- 7 -й микрокоманды
/-1-я микрокоманда
Результат выполнения 7-2-й микрокоманды
Результат выполнения 7 -2-й микрокоманды
Считывание 7 -й микрокоманды
Выполнение 7-1-й микрокоманды
А,-1
Переход внутри 7 -1 -й микрокоманды
Адрес Я,_1
Адрес А/.Ц 7-М-й микрокоманды
7 -я микрокоманда
Результат выполнения 7-1-й микрокоманды
Результат выполнения 7-1-й микрокоманды
Считывание 7* 1-й микрокоманды
Выполнение 7-й микрокоманды
А/*1 +1
Переход внутри 7 -й микрокоманды
Адрес В,
Адрес А/.Ц 7-М-й микрокоманды
7 -я микрокоманда
Результат выполнения 7-1-й микрокоманды
Результат выполнения 7-1-й микрокоманды
Считывание 7* 1-й микрокоманды
Выполнение 7-й микрокоманды
А/*1 +1
Переход внутри 7 -й микрокоманды
Адрес В,
В структуре, показанной на рис. 9.15, микрокоманды, подлежащие выполнению, хранятся в регистре микрокоманд (РМК), :а адрес следующей считываемой команды хранится в микропро- траммном счетчике (МПС). Такая система позволяет осуществлять параллельно выполнение и считывание команд (т. е. метод конвейерной обработки, описанной в разд. 4.5). На рис. 9.16 приведена временная диаграмма работы такого процессора. Пока в МПС хранится адрес At i-й микрокоманды, в РМК хранится i—1-я микрокоманда, в РОН и регистре состояния (PC) хранится результат выполнения i—2-й микрокоманды. Выходной ■сигнал инкрементора равен At+1, и в следующий момент времени содержимое МПС становится равным
Aj+i = А|+1.
В случае условного перехода в зависимости от содержимого регистра состояния значения Аж могут различаться. Например, если условие выполняется, то выбирается адрес перехода Bi—i в той же i—1-й команде, поэтому
Ai*t в 8ц.
В противном случае
Ai+i = Ai+L
10
Заключение
а■■
Прежде когда речь шла о микропроцессорах, то позразумева- лось, что эти миниатюрные и дешевые устройства, которые однако обладают довольно ограниченными возможностями. Теперь же с появлением 16- и 32-разрядных процессоров ситуация резко изменилась. Выбор этих устройств стал чрезвычайно широким: от устройств, выполняющих несколько основных функций, до устройств, выполняющих функции центрального процессора0.
Основными целями создания многофункциональных процессоров являются следующие:
упрощение разработки и сопровождения программного обеспечения, центральным звеном которого является операционная система;
повышение производительности систем путем использования параллельных архитектур.
Безусловно, основная цель — реализация архитектур больших машин, эффективность которых уже убедительно доказана. Тем не менее благодаря поддержке виртуальной памяти, поддержке мультипрограммного режима, встроенному устройству управления памятью, встроенной кэш-памяти, конвейерной обработке данных и т. п. можно утверждать, что микропроцессоры с точки зрения архитектуры достигли почти такого же уровня, как и большие машины, т. е. благодаря полноте аппаратной поддержки упростилось создание и сопровождение программного обеспечения и повысилась производительность компьютеров. Однако запросы пользователей вычислительной техникой постоянно растут, и уже возникает необходимость разработки более крупномасштабного обеспечения. В итоге это потребует дополнитель-
l) Noyce R. N., Hoff, М. Е. Jr.: A history of microprocessor development at Intel, IEEE MICRO, Vol. 1, No 1 (1981), pp. 8—21.
ных усилий, поэтому аппаратная поддержка должна быть более совершенной.
Следует отметить, что степень интеграции продолжает расти. Так, через несколько лет появится возможность реализации процессора, содержащего 10€ элементов на кристалле, а к 1990 г., очевидно, возникнет проблема размещения 107 элементов на кристалле. Поэтому перед исследователями встанет проблема, как эффективно использовать процессоры с такой большой степенью интеграции.
Что касается длины слова, то 32 разрядов уже достаточно для большинства применений. Поэтому на данном этапе стоит цель совершенствования встроенных устройств управления памятью и увеличения объема кэш-памяти. И действительно, до некоторых пределов производительность машин будет повышаться вместе с их увеличением. Безусловно, в этом случае необходимо продолжать внедрение новейших средств. Средства поддержки ОС, которыми обладают современные процессоры, еще не достаточно совершенны, поэтому необходимо такое аппаратное обеспечение, которое бы автоматически осуществляло синхронизацию и связь между задачами. Важное значение имеет дальнейшая реализация основных функций аппаратным путем и обеспечение в достаточной степени свободы при проектировании операционной системы. Естественно, если на кристалле процессора удастся создать память большой емкости, то поддержка ОС упростится, так как станет проще дополнять встроенную память специальными функциями.
Недостаточно совершенны также средства, обеспечивающие составление программ на языке высокого уровня. Такие программы должны быть полностью отлажены на языке этого уровня. Несмотря на разработки различных программных средств типа символического отладчика, желательно обеспечить выполнение программы непосредственно на языке высокого уровня. Хотя подобные машины (т. е. выполняющие программы непосредственно на языке высокого уровня) разрабатываются, они теряют универсальность, так как используемый ими язык уже становится специализированным.
Несмотря на повышение степени интеграции, размещение на одном кристалле системы, обладающей широкими возможностями, остается сложной задачей. Поэтому необходимо развивать функциональное распределение за счет мультипроцессорной архитектуры. В этом направлении уже разработаны математические сопроцессоры, и с увеличением степени интеграции, очевидно, появится возможность внедрения средств векторных вычислений. Автономная обработка текстов в сопроцессоре также позволит реализовать многофункциональную систему. В устройствах, используемых в качестве контроллеров периферийного
оборудования, большое значение имеют средства обеспечения управления файлами и поиска данных, средства обработки линейных графических изображений и изображений с переменной плотностью, а также средства обеспечения связи с помощью локальной сети.
Однако мнения, касающиеся направлений развития архитектур больших вычислительных машин, часто не совпадают. Примером одного из этих направлений служит компьютер с сокращенным набором команд (RISC)*, о котором упоминалось в разд. 1.3. Транспьютер*, разрабатываемый фирмой INMOS, представляет собой устройство такого же направления. Транспьютер оснащен сокращенным набором команд, однако благодаря встроенной памяти объемом 4 кбайт с временем выборки 50 нс обладает быстродействием порядка 10 млн. операций в 1с. Транспьютер разрабатывался в целях распределения нагрузки в системах с мультипроцессорной архитектурой, поэтому имеет 4 канала последовательной связи (со скоростью передачи данных 1,5 Мбайт/с), обеспечивающие соединение с другими процессорами. Программное обеспечение его составлено на языке высокого уровня Оккам, способного непосредственно описывать множество задач. И хотя с этим транспьютером связано еще много неясных моментов, касающихся его эффективности в системе, рассчитанной на практическое применение, он все же заслуживает внимания. Модель ImPP, разрабатываемая фирмой «Ниппон дэнки», также предназначена для построения мультипроцессорных систем с распределенной нагрузкой. Раздельное выполнение портов ввода-вывода в этой модели позволяет построить кольцевую систему путем соединения порта вывода одного процессора с портом ввода другого процессора. Процессор содержит встроенную память общей емкостью 2 кбайт. Потоковая архитектура обладает замечательной особенностью — она предоставляет процессору дополнительную информацию о выполнении операций с данными. В основном это универсальный процессор, но рассчитан на выполнение однотипной обработки данных большого объема (например, для обработки изображений). В будущем еще предстоят большие исследования в области архитектур систем с распределенной нагрузкой.
Основное достоинство микрокомпьютеров — их невысокая цена. Персональные компьютеры получили широкое распространение благодаря их низкой цене. С повышением степени интеграции соотношение цена/производительность продолжает уменьшаться. Так, цена образца 32-разрядного процессора почти такая
же, как цена первых 8-разрядных процессоров. Естественно, что соотношение цена/производительность должно существенно снижаться, но не менее важным фактором является и снижение абсолютной стоимости, которое расширит рынки сбыта изделий вычислительной техники. Для изделий широкого применения на современных 16- и 32-разрядных процессорах снижение цены за счет большого объема производства будет основным фактором. Кроме того, при большом круге пользователей появится возможность снизить цену на программное обеспечение.
Приложение
Отечественные аналоги зарубежных микропроцессоров, упоминаемых в книге
Микропроцессоры
Отечественные аналоги и аналоги СЭВ
Модели микроЭВМ, в которых используются отечественные аналоги и аналоги СЭВ
18080
КР580ИК80
Микроша, Агат, Ириша, ВЭФ-1024
18086
18087
К1810ВМ86
К1810ВМ87
Искра 1031, Искра ИЗО, ЕС 1840, ЕС 1841, Mozovia 1016 (ПНР)
18035
К1816ВЕ35
МС6800
СМ650 (Болгария)
Правей (Болгария)
Z80 Z8000
U880D (ГДР)
U8000D (ГДР)
Роботрон К1520 (ГДР)
Предметный указатель
Адрес виртуальный 99
- - логический 84
Гибкий диск 201
— исполнительный 39
— физический 84
Адресация абсолютная 39
— двойная косвенная 146
— индексная 40
— индексная и относительная по базе 64
— индексная и относительная с использованием ПС 59
— линейная 51
— непосредственная 39
— относительная по базе 38
— относительная с использованием
ПС 40
- предавтодекрементная 58
лоставтоинкрементная 58
регистровая прямая 39
косвенная 39
-- сегментная 51
Алгоритм замещения наименее используемого в прошлом сегмента 100 Аккумулятор 32
Арбитр 165
— шинный 228
шинный параллельного действия 233
шинный последовательного действия 236
Атрибут сегмента 86
Дескриптор вентиля 123
вызова 123
задачи 123
захвата 123
прерывания 123
Дешифратор 21
Дорожка 203
Задача 109
Защита памяти 86
Запись двусторонняя с двойной плотностью 203 — двусторонняя с одинарной плотностью 203
— МЧМ 206
— односторонняя с одинарной плотностью 203
— сквозная 143
— ЧМ 206
ЗУПВ 154
— динамическое 159
— статическое 155
Интерфейс 172
— параллельного ввода-вывода 191
— периферийного устройства 172
— последовательной связи 135
Блок операционный 263
— управления 256
задачей 111
Буфер шины 232
— принтера 197
— программируемый 174
— системной шины 241
Кадр 178
«Ведомый» 233
«Ведущий» 233
Вектор обработки специального прерывания 77
— прерывания 43, 45
— программного прерывания 43
Вентиль задачи 123
Ввод-вывод изолированный 16
— с отображением на память 16
Время выборки (обращения) 19, 156
Квитирование установления связи 191
Код условия 34
Конвейерная обработка 130
Контроллер динамического ЗУПВ 164
— накопителя на гибких дисках 201
Команда возврата 35
— привилегированная 80
— сложная 28
— условного перехода 36
Коэффициент эффективности поиска 141
Кэш-память 139
Маска прерывания 42
Метка адреса 210
Метод непрерывной передачи 149
— перезапуска 103
— продолжения 103
Микрокомпьютер 7
— однокристальный 10
— одноплатный 10
Микропроцессор 7
Модем 179
МОП-схемы 13
Накопитель на гибких дисках 201
Номер сегмента 57
Область критическая 113
Обработка специального прерывания 76 ОЗУ 154
Окна данных 208
Операционная система (ОС) 73
Отверстие индексное 203
Очередь 59
Ошибка памяти 100
— страничная 102
— шины 79
Память 7
— виртуальная 99
— микропрограмм 255
ПЗУ 154
— стираемое программируемое (СППЗУ) 167
— электрически стираемое програм
мируемое (ЭСППЗУ) 170
Передача данных асинхронная 178
— эхоплексная 177
Перезапись 143
Перерасход времени 112
Поле данных 205
— индексное 204
— идентификации 204
— признака адреса 145
Порт ввода 16, 172
— вывода 16, 172
Прерывание маскируемое 42
— немаскируемое 42
— программное 43
Приемопередатчик шины 232
Процесс 109
Процессор секционный 253
— центральный (ЦП) 7
РАЛУ 255
Регенерация 161
Регистр базовый 40
— индексный 40
— микрокоманд 255
— промежуточный 132
— состояния 77
Регистр-дескриптор сегмента 88
— страницы 150
Режим максимальный 93
— минимальный 93
— мультипрограммный 108
— пользовательский 75
— связи дуплексный 175
полудуплексный 175
— системный 75
Связь динамическая 68
— между задачами 114
— обратная 129
— последовательная 175
— стратстопная 179
Сегмент 51
— состояния задачи ССЗ 126
Сегментированное адресное пространство 51
Сектор 203
Семафор 113
Сепаратор данных 207
Сигнал с высоким активным уровнем 18
— с низким активным уровнем 18
— управления 17
Системный вызов 76
Смещение 52
Сопроцессор 219
— арифметический 223
Сопряжение акустическое 180
— электрическое 181
Состояние выполнения 111
— готовности 111
— ожидания 111
— пассивное 111
Среднее время выполнения команды 24
Стек 58
Структура шины 15
Счетчик микропрограммный 257
— программный 33
Такт 22
— холостой 27
ТТЛ-схемы 13
Указатель кадра 67
Цикл командный 25 — шины 17Частота метки 180 — тактовая 26Шина 7, 15— адресная 16, 23— данных 15, 23— команд 231— локальная 10— системная 10, 244— управления Г5 — IEEE796 24 — MULTIBUS 244Цикл командный 25 — шины 17Частота метки 180 — тактовая 26Шина 7, 15— адресная 16, 23— данных 15, 23— команд 231— локальная 10— системная 10, 244— управления Г5 — IEEE796 24 — MULTIBUS 244
Цикл командный 25 — шины 17
Частота метки 180 — тактовая 26
Шина 7, 15
— адресная 16, 23
— данных 15, 23
— команд 231
— локальная 10
— системная 10, 244
— управления Г5 — IEEE796 24 — MULTIBUS 244
Цикл командный 25 — шины 17
Частота метки 180 — тактовая 26
Шина 7, 15
— адресная 16, 23
— данных 15, 23
— команд 231
— локальная 10
— системная 10, 244
— управления Г5 — IEEE796 24 — MULTIBUS 244
— области состояния программы 57, 84
— стека 33, 67
Уровень привилегии 122
сегмента 122
— приоритета прерывания 74
Устройство арифметико-логическое (АЛУ) 32
— периферийное 7, 172
— сопряжения 182
— управления памятью (УУП) 86
Флаг условия 34, 36
Формат дорожки 203
Форматирование гибкого диска 204
Формирователь последовательности микрокоманд 257
4950555764738493989810811512513013313949505557647384939898108115125130133139
49
50
55
57
64
73
84
93
98
98
108
115
125
130
133
139
49
50
55
57
64
73
84
93
98
98
108
115
125
130
133
139
Оглавление
От редактора перевода 5
Предисловие автора 6
Глава 1. Введение 7
Что такое микрокомпьютер? 7
Стандартная структура шины и временная диаграмма ее работы 15
Быстродействие процессора24
Глава 2. 8-разрядные процессоры31
Стандартная архитектура32
Регистровые структуры34
Операции и флаги условий35
Способы адресации 37
Обычные прерывания и прерывания при возникновении непредусмотренной ситуации42
Структура шины и время выполнения команды46
Глава 3. 16-разряд ные процессоры48
Стандартная архитектура
Адресное пространство ...
Регистровые структуры
Способы адресации
Поддержка языка высокого уровня
Поддержка операционной системы
Средства управления памятью
Структура шины и время выполнения команды
Глава 4. 16-разрядные процессоры нового поколения
Поддержка средствами виртуальной памяти
Мультипрограммный режим
Управление виртуальной памятью процессора 80286.. ..
Управление мультипрограммным режимом процессора 80286 ..
Конвейер
Конвейерная обработка в процессоре 80286
Глава 5. 32-разрядные процессоры
Кэш-память139
MC68020 ♦144
Процессор Z80000 148
Глава 6. Память 154
Статические ЗУПВ155
Динамические ЗУПВ159
Контроллер динамического ЗУПВ164
Программируемые ПЗУ167
Глава 7. Интерфейсы периферийных устройств172
Что такое интерфейс?172
Интерфейс последовательной связи175
Интерфейс параллельного ввода-вывода191
Контроллер накопителя на гибких дисках201
Глава 8. Конфигурация системы219
Сопроцессор219
Шинный арбитр228
Системная шина244
Глава 9. Секционныепроцессоры253
Идея создания разрядных секций253
Структура блокауправления ..,256
Структура операционного блока263
Временная диаграмма работы системы 268
Глава 10. Заключение271
Предметный указатель275
УВАЖАЕМЫЙ ЧИТАТЕЛЬ!
Ваши замечания о содержании книги, ее оформлении, качестве перевода и другие просим присылать по адресу: 129820, Москва, И-110, ГСП, Ьй Рижский пер., 2, издательство «Мир».
Ивао МориситаАППАРАТНЫЕ СРЕДСТВА МИКРОЭВМ
Заведующий редакцией профессор, д-р техн, наук Ю. И. ТолчеевЗам. заведующего редакцией Э. Н. ВадиковСтарший научный редактор И. М. АндрееваМладший редактор Т. Б. ВахнюкХудожник В. С. СтуликовХудожественный редактор Н. М. ИвановТехнический редактор О. Г. ЛапкоКорректор Н. Н. Яковлева
ИБ № 6273. Учебное издание
Сдано в набор 11.09.87. Подписано к печати 18.01.88.
Формат 60X90’/j«. Бумага типографская № 1. Печа1ь высокая.
Гарнитура литературная. Объем 8.75 бум. л. Усл. печ. л. 17,50.
Усл. кр.-отт. 17,50. Уч.-изд. л. 15.91.
Изд. Ns 6/5298. Тираж 30 000 экз. Зак. 1279.-Цена 1 р. 60 л.
Издательство «Мир».
129820, ГСП, Москва, И-110, 1-й Рижский пер., 2.
Московская 1ипография Ns И Союзполиграфпрома при Государственном комшегс СССРио делам издательств, полиграфии и книжной торговли.
П3105, Москва, Нагатинская ул., д. L
^g£odNHW esidtfadd ONHiedeuuy
TiyiimiTiyiimi
Tiyiimi
Tiyiimi
HHSMejc® И-еВ»Ш-Ж2 й-й -W-6^«S
^^П27>^л—:W
$Т1
еЙве
И. Морисита
АппаратныесредствамикроЭВМ
Перевод с японскогоС. В. Богдасаровапод редакциейд-ра физ.-мат. наукН. Г. Волкова
Москва «Мир» 1988
ББК 32.973.2 М79
УДК 681.3
Морисита И.
М79 Аппаратные средства микроЭВМ: Пер. с япон. — М.: Мир, 1988. — 280 с., ил.
ISBN 5-03-000395-9
Книга является переводом пятого тома 11-томной серии по микроэлектронике японских авторов. Рассмотрены архитектура 8-, 16- и 32-разрядных микропроцессоров, принципы организации связи с периферийными устройствами и способы построения систем на базе микропроцессорной техники.
Для специалистов в области электроники и вычислительной техники, а также студентов соответствующих вузов.
ББК 32.973.2ББК 32.973.2М 2405000000-175 „, 041(01)-88,94-88' ч- 1
ББК 32.973.2
ББК 32.973.2
Редакция литературы по информатике и робототехнике
ISBN 5-03-000395-9 (русск)ISBN 4-00-010185-4 (япон)ISBN 5-03-000395-9 (русск)ISBN 4-00-010185-4 (япон)© Ивао Морисита. Iwanami Shoten Publishers, Tokyo, 1984
ISBN 5-03-000395-9 (русск)
ISBN 4-00-010185-4 (япон)
ISBN 5-03-000395-9 (русск)
ISBN 4-00-010185-4 (япон)
© перевод на русский язык. Мир, 1988