Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
20.06.2014
Размер:
1.08 Mб
Скачать

Работа с битами

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

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

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

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

;invert.asm

;инвертирование передаваемых данных, если в следующем слове

;больше половины бит изменилось

data segment

src dw 0111000111111111b

dw 0010100100000001b

res dw ?

data ends

code segment

assume cs:code, ds:data

begin: mov dx, data

mov ds, dx

mov cx, 0Fh ;счетчик цикла, число информационных битов

mov bx, 0 ;счетчик числа неравных битов

mov ax, src ;запись в AX первого числа

xor ax, src+2 ;исключительное ИЛИ первого и второго чисел

;цикл подсчета неравных битов

count: shr ax, 1 ;сдвиг AX на один бит вправо, младший бит в C

jnc next ;если C=0, к следующему витку цикла

inc bx ;если C0, инкремент счетчика неравных битов

next: loop count ;команда цикла, декремент CX и переход

;к следующему витку, пока CX0

mov ax, src+2 ;запись в аккумулятор второго числа

cmp bx, 8 ;число неравных битов больше 8-ми или меньше?

jl skip ;если меньше, инвертировать не надо

not ax ;если больше, число инвертируется

skip: mov res, ax

mov ax, 4C00h

int 21h

code ends

end begin

Порядок выполнения работы

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

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

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

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

Общие признаки всех вариантов:

  1. Два сегмента: сегмент данных и сегмент кода.

  2. Исходные данные и результаты находятся в переменных (массивах), распределенных по обоим сегментам.

Частный признак — решаемая задача.

Сравнения:

  1. Местонахождение операндов:

    1. В памяти команд (в командах).

    2. В памяти данных.

  2. Местонахождение переменных:

    1. В сегменте данных.

    2. В сегменте кода.

Содержание отчета

  1. Задание, конкретизированное вариантом.

  2. Блок-схема алгоритма программы.

  3. Листинг программы.

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

  5. Сравнения и выводы по результатам анализа таблицы и выполненным сравнениям.

Контрольные вопросы

  1. Назовите возможные признаки компьютера не фон-неймановской архитектуры.

  2. Возможные варианты реализации компьютера фон-неймановской архитектуры.

  3. Альтернатива принципа хранимой программы.

  4. Возможные варианты реализации принципа хранимой программы.

  5. Преимущества и недостатки Принстонской и Гарвардской архитектур.

  6. Варианты расположения данных программы. Какие из вариантов соответствуют переменным?

  7. Варианты расположения переменных.

  8. Совпадают ли понятия "память данных" и "сегмент данных"?

  9. Минимальное множество регистров процессора компьютера фон-неймановской архитектуры.

  10. Возможное множество регистров процессора компьютера не фон-неймановской архитектуры.

  11. Общие признаки команд компьютера фон-неймановской архитектуры.

  12. Частные признаки команд компьютера фон-неймановской архитектуры.

  13. Возможные признаки команд компьютера не фон-неймановской архитектуры.

  14. Скорость (степень, частота) изменения регистров процессора и областей памяти в зависимости и вне зависимости от специфики программы.

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

  16. В каком порядке хранятся байты слова в памяти ЭВМ?

  17. Минимальная и максимальная структура команды.

  18. Является ли в общем случае зависимость между длиной команды и временем ее выполнения прямо пропорциональной?

  19. Есть ли команды, у которых зависимость между длиной и временем выполнения прямо пропорциональна?

Контрольные задания

  1. Определить длину данной команды.

  2. Определить, какая информация содержится в данной команде.

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

  4. Найти команды, операнды которых находятся в регистрах процессора, в самих командах, в памяти данных.

Лабораторная работа №2. Взаимодействие процессора с памятью и устройствами ввода-вывода. Функционирование ЭВМ

Цель работы и рассматриваемые вопросы

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

Рассматриваемые вопросы:

  1. Общая структура ЭВМ.

  2. Порты ввода-вывода.

  3. Контроллеры устройств ввода-вывода.

  4. Дешифраторы.

  5. Ресурсы устройств ввода-вывода.

  6. Направления передачи информации в ЭВМ.

  7. Информация, принимаемая процессором по шине данных.

  8. Временные единицы функционирования процессора.

  9. Характеристики и классификация запоминающих устройств.

  10. Характеристики и классификация устройств ввода-вывода.

  11. Классификация интерфейса процессора с устройствами ввода-вывода.

  12. Ввод-вывод по прерыванию.

  13. Ввод информации с клавиатуры.

  14. Вывод информации на дисплей.

  15. Таймер и встроенный динамик.

Вопросы с опережением:

  1. Местонахождение операндов и способы адресации (ЛР3).

  2. Влияние команд на флаги (ЛР3).

  3. Типы данных (ЛР3).

  4. Базовые и индексные регистры (ЛР3).

  5. Сегментация, сегментные регистры (ЛР3, ЛР4).

Теоретическая информация

Общая структура и функционирование ЭВМ

Схема общей структуры ЭВМ. Шина данных, шина адреса, шина управления

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

Рис.2. Схема общей структуры ЭВМ

Здесь:

  • ЦП — центральный процессор (СРU, Central Processing Unit);

  • ШФ — шинный формирователь (в самом широком смысле этого слова);

  • ЗУ — запоминающее устройство (M, Memory);

  • ОЗУ — оперативное запоминающее устройство (RAM, Random Access Memory);

  • ПЗУ — постоянное запоминающее устройство (ROM, Read Only Memory);

  • В/В — ввод/вывод (I/O, Input/Output);

  • ВУ — внешнее устройство (устройство ввода-вывода), например, клавиатура, дисплей, датчики, исполнительные механизмы и т.п.;

  • ША — шина адреса (AB, Address Bus);

  • ШД — шина данных (DB, Data Bus);

  • ШУ — шина управления (CB, Control Bus);

  • ЧТЗУ (ВУ) — чтение ЗУ (ВУ) (R, RD — Read, RC — Receive);

  • ЗПЗУ (ВУ) — запись ЗУ (ВУ) (W, WR — Write, TR — Transmit);

  • ВМ — выбор микросхемы (CS, Crystal Select).

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

  • шина данных;

  • шина адреса;

  • шина управления.

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

Ширина шины адреса определяет размер адресного пространства:

AS = 2ABW,

где AS (Address Space) — размер адресного пространства;

ABW (Address Bus Wide) — ширина адресной шины.

Порты ввода-вывода. Дешифраторы

На данной схеме помимо основных устройств показаны интерфейсные (шинный формирователь, порт ввода-вывода) и дополнительные устройства (дешифраторы) ЭВМ.

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

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

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

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

Дешифратор (DC, Decoder) служит для определения (выбора) того устройства, к которому обращается процессор для приема или передачи информации. Номера портов и диапазоны адресов памяти устанавливаются именно с помощью дешифраторов. Физический адрес, выдаваемый процессором по шине адреса через шинный формирователь, разделяется на две части. Старшие адресные линии соединены с дешифратором. Они адресуют одно из устройств в целом, включают или выключают его с помощью сигнала ВМ (CS). Младшие адресные линии соединены непосредственно с устройством и адресуют одну конкретную ячейку памяти или порт ввода-вывода.

Номера портов, диапазоны адресного пространства, номера прерываний и каналов прямого доступа в совокупности называются ресурсами, выделяемыми в ЭВМ различным устройствам.

Направления передачи информации в ЭВМ

Точкой отсчета для определения направления передачи информации в ЭВМ является процессор. Если информация движется к процессору, то это прием (чтение, ввод). Если информация движется от процессора, то это передача (запись, вывод) (табл.6).

Таблица 6.

Направления передачи информации в ЭВМ

Направление

Память

УВВ

От процессора — передача (transmission)

Запись (writing)

Вывод (output)

К процессору — прием (receiving)

Чтение (reading)

Ввод (input)

Интерпретация информации, принимаемой процессором

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

При выполнении команды процессор может обращаться к ячейкам памяти или портам ввода-вывода для приема-передачи данных.

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

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

  2. Адрес ячейки памяти, адрес порта ввода-вывода.

  3. Собственно данные, предназначенные для обработки (операнд).

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

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

Процессор выполняет программу по командам, команды по машинным циклам, а машинные циклы по тактам.

Машинный такт — это наименьший временной интервал системы, один период тактовой частоты.

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

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

RISC-процессор выполняет команду за один такт, т. е. для этого типа процессоров понятия цикла команды, машинного цикла и такта совпадают. Многие процессоры семейства x86 относятся к классу CISC, но имеют элементы RISC. Процессоры x86, начиная с Pentium, могут выполнять до трех команд за один такт, начиная с Core 2 — до четырех команд на одно ядро.

Процессор i8086 имеет следующие типы циклов шины:

  • подтверждение прерывания;

  • ввод;

  • вывод;

  • останов;

  • извлечение кода операции команды;

  • чтение;

  • запись.

Память

Классификация внутренней памяти. ОЗУ и ПЗУ

По разным признакам можно выделять различные типы памяти ЭВМ. Главный признак классификации — возможность изменения информации в памяти в составе самой ЭВМ. По этому признаку выделяются:

  1. Оперативное запоминающее устройство (ОЗУ, RAM — Random Access Memory).

  2. Постоянное запоминающее устройство (ПЗУ, ROM — Read Only Memory).

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

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

ПЗУ ЭВМ, специализированных для выполнения определенных задач, могут содержать управляющую программу, являющуюся по сути простой операционной системой. Например, в ПЗУ учебной ЭВМ УМК-80 записана программа "Монитор", которая выполняет все основные функции операционной системы: размещает программы пользователя в оперативной памяти, запускает их, обеспечивает взаимодействие с устройствами ввода-вывода и т. п.

ПЗУ персональных компьютеров содержит BIOS (Basic Input-Output System, базовую систему ввода-вывода). Поэтому оно называется ROM BIOS.

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

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

Существуют и смешанные типы. Так, современные модули оперативной памяти DIMM SDRAM содержат в своем составе постоянную память SPD EEPROM (Serial Presence Detect), которая идентифицирует тип модуля, различные параметры организации, временные параметры.

Классификация ПЗУ

Классификация ПЗУ такова:

  1. Однократно программируемые:

    1. Масочные ПЗУ — программируемые в процессе изготовления путем наложения маски.

    2. Электрически программируемые ПЗУ (ЭППЗУ) — программируемые после изготовления пережиганием плавких перемычек электрическим путем в программаторе.

  2. Многократно программируемые (перепрограммируемые):

    1. Электрически стираемое программируемое ПЗУ (ЭСППЗУ, EEPROM, electrically erasable programmable read-only memory):

    2. Со стиранием ультрафиолетовым светом и электрической записью — УФППЗУ.

Классификация ОЗУ

Основные качественные признаки классификации и выделяемые по ним классы ОЗУ персональных компьютеров таковы:

  1. Архитектура: FPM (Fast Page Mode), EDO (Extended Data OUT) и др.

  2. Запоминающий элемент: конденсатор — динамическая память (DRAM, Dynamic RAM), триггер — статическая память (SRAM, Static RAM).

  3. Конструктивное исполнение: SIMM (Single Inline Memory Module, модуль памяти с однорядным расположением контактов), DIMM (Dual Inline Memory Module, модуль памяти с двухрядным расположением контактов).

  4. Наличие синхронизации тактовыми импульсами: асинхронная память, синхронная память (SDRAM, Synchronous DRAM).

  5. Умножение скорости передачи по сравнению с частотой тактовых импульсов: RDRAM (Rambus DRAM, выпускается в конструктивах под названием RIMM (Rambus Inline Memory Module)) и DDR (Double Data Rate, память с удвоенной скоростью передачи данных, конструктив DIMM);

  6. Многоканальность: двухканальная и трехканальная DDR (DDR II и DDR III).

Основные количественные признаки классификации ОЗУ таковы:

  1. Емкость.

  2. Размер ячейки: бит, тетрада, байт.

  3. Время доступа.

  4. Для синхронной памяти — тактовая частота и количество тактов, требующихся для доступа.

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

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

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

  1. Увеличение ширины (разрядности шины).

  2. Увеличение скорости (тактовой частоты).

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

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

  1. Основная оперативная память — динамическая, менее дорогая и быстрая, более емкая.

  2. Кэш-память (сверхоперативная память) — статическая, более дорогая и быстрая, менее емкая.

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

  1. Кэш-память в виде отдельных микросхем.

  2. Кэш-память в одном корпусе с процессором, но на отдельном кристалле.

  3. Кэш-память на одном кристалле с процессором.

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

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

В большинстве современных процессоров кэш-память находится на кристалле процессора и делится на два или три уровня, которые обозначаются L1, L2 и L3, соответственно.

Соседние файлы в папке Задания к лабораторным