- •30 Глава 2. Особенности аппаратных средств
- •Глава 2. Особенности аппаратных средств, влияющих на
- •2.1.3. От микропроцессора к микро-эвм
- •2.2. Архитектурные особенности микропроцессоров
- •2.3. Работа с внешними устройствами
- •2.4. Представление данных
- •2.5. Система команд
- •2.7. Об использовании вычислительных сетей
2.2. Архитектурные особенности микропроцессоров
Возвращаясь к перечню разделов точно определенного интерфейса (рис. 1.6), удобно начать их рассмотрение с адресного пространства и регистров. При магистральной организации микроЭВМ микропроцессор обращается ко всем другим составляющим микроЭВМ через магистраль одинаково и «безлико». Чтобы эти другие составляющие могли определить, к кому же из них идет обращение, организуют общее адресное пространство, где каждому устройству присваивают определенный адрес или целый диапазон адресов. После этого указание адресата при каждом обращении не вызывает принципиальных затруднений, и остается лишь уточнить технические детали реализации соответствующих действий в микропроцессоре с учетом особенностей кодирования, хранения кодов в регистрах и проч. С другой стороны, регистры в микропроцессоре используются для хранения данных, указателей и т.п., поэтому применение части регистров для адресных операций воспринимается весьма естественно.
Для начала рассмотрим, как это выглядит в архитектуре ряда ЭВМ PDP-11 фирмы DEC (Digital Equipment Corporation). Продуманность, простота и изящество этой архитектуры позволили ей завоевать признание военных США, доведенное до уровня стандарта вооруженных сил; для нас важны наглядность и легкость понимания того, как архитектурные решения влияют на построение программ.
В этой архитектуре (рис. 2.4) программисту доступны 8 РОН’ов - регистров общего назначения (R0 - R7) и регистр состояния процессора (PS). Все регистры - 16 битовые; среди РОН’ов первые шесть (R0 - R5) являются регистрами общего назначения в прямом смысле, так что программист может хранить в них свои данные, ссылки и т.п. Регистры R6 и R7 несут дополнительную нагрузку и связаны с работой аппаратуры микропроцессора
Р
ис.
2.4. Архитектура микропроцессора фирмыDEC
(см. ниже), хотя их содержимое может использоваться программой для вычислений и других операций.
Наличие в архитектуре процессора 16-разрядных регистров предопределяет величину важного параметра - размер адресного пространства, доступного при использовании единственного регистра. Действительно, 16-разрядный регистр способен различать 216 = 26 210 = 26 К = 64 К состояний (вот, откуда идет это часто встречающееся «64 К»!). Остается решить, что именно адресуется? А адресуется каждый байт в этом пространстве; если надо адресовать слово их двух байт, то используется адрес старшего байта, так что все слова имеют четные адреса (счет идет с нуля).
А как быть, если надо адресовать более 64 К? Если в архитектуре используют те же 16-разрядные регистры, то все адресное пространство «нарезают» сегментами, так что общий объем сегмента составляет 64 К, а положение самого сегмента (а иногда и всю его структуру) предварительно настраивают программным путем с помощью других дополнительных регистров.
В архитектуре Intel (рис. 2.5) просто смещают начало всего сегмента в 64 К;

Рис.2.5. Архитектура микропроцессора фирмы Intel
в архитектуре DEC виртуальное пространство в 64 Кбайт можно набрать фрагментами по 8 Кбайт. Чтобы охватить адресное пространство большого размера, шаг смещения начала сегмента (или «параграф») делают более 1 байта (4 байта).
В более простой архитектуре DEC (вновь вернемся к рис. 2.4) доступ к любым кодам в адресном пространстве 64 Кбайт осуществляется с помощью регистра R7 (счетчика команд). Заметим, что в системе команд DEC имеются однословные, двухсловные и даже трехсловные команды, и в процессе их разбора и исполнения содержимое регистра R7 автоматически меняется, обеспечивая доступ к команде и операндам без какого-либо вмешательства программы. Обобщенная информация о результате выполнения каждой команды сохраняется в регистре состояния процессора (PS), где отдельные биты фиксируют: перенос в результате сдвига кодов за 16-разрядную сетку (бит Cary), переполнение в результате х операций (бит oVerflow), нулевой результат (бит Zero) и отрицательный результат (бит Negative). Если в регистре PS оказывается установленным бит T (Trap), произойдет отладочное прерывание. арифметически
Таким образом, при выполнении каждого шага программы наиболее критично содержимое регистров PС и PS, и именно об их сохранности заботится аппаратура микропроцессора в случае прерываний, автоматически переписывая в стек соответствующие коды. Напомним, что стек - это специальная область памяти, организованная в очередь обслуживания по правилу: «Первым пришел - последним вышел!». Для работы со стеком в архитектуре DEC выделен регистр R6, указывающий на верхушку очереди, и содержимое этого регистра может автоматически изменяться при аппаратных или программных прерываниях. Используя содержимое регистра R6, программист может извлекать данные из стека, начиная с самых «верхних», «свежих» (и при выполнении команды извлечения данных из стека содержимое R6 изменится); после несложных вычислений, где содержимое регистра R6 используется как некоторый базовый адрес, а сам адрес формируется в другом РОН'е, можно «заглянуть» внутрь стека, не сдвигая указателя R6.
В архитектуре Intel (рис. 1.12) 16-разрядные регистры общего назначения выглядят более громоздко: с одной стороны, их всего четыре (от AX до DX), но каждый из них доступен как целиком, так и по половине (старшие 8 разрядов, например AH, BX, … и младшие 8 разрядов, например AL , BL, … - используется аббревиатура от High и Low); это сделано для совместимости с прежней 8-разрядной архитектурой. Кроме того, лишь регистр AX (и соответственно, AH, AL) программист всегда может использовать по своему усмотрению; три других регистра иногда используются аппаратно. Далее, так как в архитектуре Intel сразу используется адресное пространство в 1 Мб, то для адресации в нем применяют по паре регистров, и таким образом среди РОН’ов этой архитектуры определяются группа указателей и группа сегментных регистров. Для работы со стеком используют регистр указателя стека Stack Pointer (SP) и сегментный регистр стека Stack Segment (SS); для выбора кодов команды - счетчик команд IP и сегментный регистр Code Segment (CS).
Кроме того, в отличие от архитектуры DEC, в архитектуре Intel появились две пары регистров для работы с данными, дифференцированных на выдачу и прием данных: Source Index (SI) и Destination Index (DI) со своими сегментными регистрами SS и DS. Далее, для стека помимо SP в группе регистров-указателей появился регистр базы стека BP; в группе сегментных регистров появился регистр ES для работы с расширенной памятью.
В регистре состояния процессора, называемом в архитектуре Intel «словом состояния процессора» (PSW - Processor Status Word), биты, реагирующие на результат только что выполненной операции, называются «флагами» (Flag). Помимо знакомых нам по архитектуре DEC флагов CF (перенос), ZF (нуль), SF (знак, Sign Flag - в отличие от DECовского Negative), OF (переполнение, Overflow Flag - в отличие от DECовского oVerflow), TF (трассировка), в архитектуре Intel есть регистры PF (четность - Parity Flag), AF (перенос 2 10, этот флаг обязан экзотическому использованию 16-разрядного регистра для хранения 4-х цифр в двоично-десятичной системе счисления и операций над ними), IF (прерывание - Interrupt Flag) и DF (нарушение цепочки команд Disturbance Flag). Последний флаг обязан своим появлением особенности архитектуры Intel, связанной с применением Кэш-памяти (cache) для увеличения быстродействия работы процессора. В эту память, размещенную прямо в кристалле процессора, при выполнении очередной команды подкачиваются («в свободное время») коды, следующие в ОЗУ за выполняемой командой. Если выполняемая команда не является командой ветвления, то эти коды - это прямо коды следующих команд, которые теперь микропроцессору не надо извлекать из ОЗУ через магистраль, за счет чего и ускоряется весь вычислительный процесс. Если же выполняемая команда - это команда ветвления, то накопленная цепочка команд нарушается; именно в это время и взводится флаг DF.
