Учебное пособие по ОЭВМ (775573), страница 5
Текст из файла (страница 5)
Задания к лабораторной работе__________________________________________________________ 57
Цель работы
изучение работы арифметико-логического устройства при выполнении операции деления над числами с фиксированной запятой, представленными в прямом коде.
Функционирование АЛУ при выполнении операции деления
Выполнение операции деления в АЛУ сводится к последовательности операций сложения и сдвига. Существующие способы деления можно разделить на две группы:
1. Выполнение операции деления методом с восстановлением остатка.
2. Выполнение операции деления методом без восстановлением остатка.
Алгоритмы деления аналогичны алгоритму деления при ручном счете. Рассмотрим особенности деления на примере деления целых чисел. Пусть Z =, где X – делимое, представляемое обычно двойным словом (2n-1 значащих и 1 знаковый разряд), Y – делитель и Z – частное, представляемые словами, содержащими n-1 значащих и 1 знаковый разряд. Пусть для простоты X и Y – целые числа, представленные в прямом коде.
Так как Z – слово, то должно выполняться равенство │Z│<2n-1, т.е. <2n-1 или (│X│-│Y│*2n-1)<0. Если неравенство не выполняется, то возникает переполнение разрядной сетки частного и результат получается неверным. Это условие корректного выполнения деления.
Таким образом, для проверки корректности деления надо сдвинуть делитель на n-1 разряд влево и вычесть его из делимого. Если результат окажется отрицательным, то деление возможно. Иначе возникнет переполнение разрядной сетки частного.
Делимое X
Делитель Y
Д
елитель, сдвинутый
н
а n-1 разряд влево
Результат вычитания
Таким образом выполнение операции деления начинается с пробного вычитания делителя, сдвинутого на n-1 разряд влево, из делимого. Если результат меньше нуля, то деление возможно. Если результат больше нуля, то деление невозможно. Знак частного формируется в результате анализа знаков операндов. Если операнды имеют одинаковые знаки, то частное получается положительным, если знаки различны - частное будет отрицательным. После определения знака результата знаковые разряды операндов обнуляются и деление производится над положительными числами.
Моделирование функционирования АЛУ при выполнении операции деления методом с восстановлением остатка над числами, представленными в прямом коде
Метод деления с восстановлением остатка состоит в следующем:
-
Из сдвинутого частичного остатка вычитается делитель. Если результат больше либо равен нулю, очередной разряд частного получает значение 1. Если результат меньше нуля, то разряд частного равен нулю и происходит восстановление промежуточного остатка путем прибавления к текущему остатку делителя.
-
Промежуточный остаток сдвигается влево на один разряд и в него заносится очередной разряд делимого. Цикл деления повторяется.
Рассмотрим пример деления целых чисел, представленных в прямом коде, методом с восстановлением остатка.
Пример 1.
Z = ; X=15, Y=-3
| Зн. | Информ. разряды | ||||||||||
| X= | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | |
| Y= | 1 | 0 | 0 | 1 | 1 | ||||||
Формируем знак результата путем сложения по модулю 2 знаков делимого и делителя: ZN=01=1. Обнуляем знаковый разряд делителя, получаем Y=00011.
Дополнительный код делителя: [Y]доп.код=11101
| Описание операции | Зн. | Информац. разряды | ||
| Делимое | +00 | 0000 | 1111 | |
| Сдвиг делителя влево на 4 разряда, вычитание делителя | 1 | 1101 | ||
| Остаток от деления деление возможно | +1 | 1101 | 1111 | |
| Восстановление остатка: прибавление делителя | 0 | 0011 | ||
| Восстановленный остаток | 0 | 0000 | 1111 | |
| Сдвиг влево остатка на 1 разряд | +0 | 0001 | 1110 | |
| Вычитание делителя | 1 | 1101 | ||
| 1-ый остаток от деления < 0 | +1 | 1110 | 1110 | |
| Восстановление остатка: прибавление делителя | 0 | 0011 | ||
| Восстановленный остаток | 0 | 0001 | 1110 | |
| Сдвиг влево остатка на 1 разряд | +0 | 0011 | 1100 | |
| Вычитание делителя | 1 | 1101 | ||
| 2-ой остаток от деления > 0 | 0 | 0000 | 1100 | |
| Сдвиг влево остатка на 1 разряд | +0 | 0001 | 1000 | |
| Вычитание делителя | 1 | 1101 | ||
| 3-ий остаток от деления < 0 | +1 | 1110 | 1000 | |
| Восстановление остатка: прибавление делителя | 0 | 0011 | ||
| Восстановленный остаток | 0 | 0001 | 1000 | |
| Сдвиг влево остатка на 1 разряд | +0 | 0011 | 0000 | |
| Вычитание делителя | 1 | 1101 | ||
| 4-ый остаток от деления = 0 | 0 | 0000 | 0000 | |
| Z= | 1 | 0 | 1 | 0 | 1 |
| Зн | 1 ост | 2 ост | 3 ост | 4 ост |
Выполнение операции деления с восстановлением остатка можно организовать по-другому, сдвигая делитель вправо на один разряд. Промежуточный остаток при этом остается на месте.
Структурная схема АЛУ представлена на рис. 14.
Делимое записывается в регистры RB и R2: в RB - старшая часть, в R2 - младшая. Делитель записывается в регистр R1. Частное формируется в регистре R3.
Появляется связь между регистрами R2 и RС для сдвига промежуточного остатка и организован доступ к нулевому разряду регистра R3 для записи очередного разряда частного. Старшая и младшая части промежуточного остатка хранятся в регистрах RB и R2 соответственно. Если промежуточный остаток отрицательный, то делитель переписывается в регистр RA в прямом коде и в очередной разряд частного в регистр R3 записывается 0, если промежуточный остаток неотрицательный, то делитель переписывается в регистр RA в обратном коде и в очередной разряд частного в регистр R3 записывается 1. Регистры SM и R2 используются для организации сдвигов. При сдвиге промежуточного остатка в освободившийся разряд регистра RC заносится очередной разряд делимого. В каждом цикле результат с регистра RC переписывается на регистр RB. Триггер ТS хранит знак результата, который формируется сложением по модулю 2 знаковых разрядов делимого и делителя. Так как деление производится над положительными числами в прямом коде, в случае отрицательных операндов, сначала формируется знак результата и заносится в триггер TS, операнды переводятся в прямой код и только тогда выполняется деление по уже известному алгоритму. Число циклов равно n-1, т.е. семи (без учета пробного вычитания).
Сдвиг делимого на 1 разряд влево
Пробное вычитание делителя
Деление
невозможно
“0”
Деление
возможно
“<0”
Запись в RA делителя в прямом коде
Восстановление остатка
Суммирование RA и RB (промежуточного остатка)
Сдвиг остатка на 1 разряд влево, занесение очередного разряда делимого
Запись в RA делителя в обратном коде
Суммирование RA и RB (промежуточного остатка) с прибавлением 1
Восстановление остатка
“0”
“<0”
Запись 1 в очередной разряд частного
Запись 0 в очередной разряд частного
“>0”
Уменьшение содержимого счетчика на 1
“=0”
Запись в RA делителя в прямом коде
Суммирование RA и RB (промежуточного остатка)
Рис. 13. Блок-схема выполнения операции деления с восстановлением остатка
Моделирование функционирования АЛУ при выполнении операции деления методом без восстановления остатка над числами, представленными в прямом коде
Используя этот метод деления удается избежать дополнительного сложения при восстановлении остатка. Суть метода в том, что после сдвига промежуточного остатка на один разряд влево, в зависимости от его знака вычитают или прибавляют делитель.
Рис. 14. Структурная схема АЛУ для операции деления
Предположим, что текущий остаток А больше или равен нулю, сдвигаем его влево 2А и вычитаем из него делитель d. Получаем 2А-d. Выполненные действия аналогичны методу с восстановлением остатка. Если текущий остаток меньше нуля, в предыдущем методе восстанавливали остаток А+d, сдвигали его 2(А+d) и на следующем шаге вычитали делитель 2(А+d)-d=2А+d. Но можно поступить и по-другому: при А<0 сдвинуть промежуточный остаток 2А и прибавить к нему делитель 2А+d. Получим тот же результат, что и при восстановлении остатка.
Таким образом для выполнении операции деления методом без восстановления остатка необходимо выполнить следующие действия:
-
Анализ знака промежуточного остатка.
-
Если А>0, то в очередной разряд частного заносят значение 1 и вычитают делитель, если А<0, то в очередной разряд частного заносят значение 0 и прибавляют делитель.
-
Остаток сдвигают влево на один разряд.
Рассмотрим пример деления целых чисел, представленных в прямом коде, методом без восстановления остатка.
Пример 2.
Z =; X=15, Y=-3
| Зн | Информ. разряды | ||||||||||
| X= | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | |
| Y= | 1 | 0 | 0 | 1 | 1 | ||||||
Формируем знак результата путем сложения по модулю 2 знаков делимого и делителя: ZN=01=1. Обнуляем знаковый разряд делителя, получаем Y=00011.
Дополнительный код делителя: [Y]доп.код=11101.
| Описание операции | Зн. | Информац. разряды | ||
| Делимое | +00 | 0000 | 1111 | |
| Сдвиг делителя влево на 4 разряда, вычитание делителя | 1 | 1101 | ||
| Остаток от деления деление возможно | 1 | 1101 | 1111 | |
| Сдвиг влево остатка на 1 разряд | +1 | 1011 | 1110 | |
| Сложение с делителем | 0 | 0011 | ||
| 1-ый остаток от деления < 0 | 1 | 1110 | 1110 | |
| Сдвиг влево остатка на 1 разряд | +1 | 1101 | 1100 | |
| Сложение с делителем | 0 | 0011 | ||
| 2-ой остаток от деления > 0 | 0 | 0000 | 1100 | |
| Сдвиг влево остатка на 1 разряд | +0 | 0001 | 1000 | |
| Вычитание делителя | 1 | 1101 | ||
| 3-ий остаток от деления < 0 | 1 | 1110 | 1000 | |
| Сдвиг влево остатка на 1 разряд | +1 | 1101 | 0000 | |
| Сложение с делителем | 0 | 0011 | ||
| 4-ый остаток от деления = 0 | 0 | 0000 | 0000 | |
| Z= | 1 | 0 | 1 | 0 | 1 |
| Зн. | 1ост | 2ост | 3ост | 4ост |
Структурная схема АЛУ для операции деления без восстановления остатка аналогична структурной схеме АЛУ при выполнении операции деления с восстановлением остатка.
Блок-схема выполнения операции деления методом без восстановления остатка представлена на рис. 15.
Алгоритм выполнения операции деления двоичных чисел
Формирование знака результата, обнуление знаков делимого и делителя
Сдвиг делимого на 1 разряд влево
Пробное вычитание делителя
Деление невозможно “0”
“<0” Деление возможно
Запись в RA делителя в прямом коде
Суммирование RA и RB (промежуточного остатка)
Сдвиг промежуточного остатка на 1 разряд влево
Запись в RA делителя в обратном коде
Суммирование RA и RB (промежуточного остатка) с прибавлением 1
“≥0”
“<0”
Запись 1 в очередной разряд частного
Запись 0 в очередной разряд частного
Запись в RA делителя в прямом коде
Суммирование RA и RB (промежуточного остатка)
Сдвиг промежуточного остатка на 1 разряд влево
Сдвиг промежуточного остатка на 1 разряд влево
Запись в RA делителя в обратном коде
Суммирование RA и RB (промежуточного остатка) с прибавлением 1
Уменьшение содержимого счетчика на 1
“=0”
Рис. 15. Блок-схема выполнения операции деления без восстановления остатка
“>0”
Контрольные вопросы
-
Особенности выполнение операции деления чисел с фиксированной запятой, представленных в прямом коде.
-
Способы деления чисел с фиксированной запятой.
-
Состав и назначение основных регистров АЛУ для выполнения операции деления чисел с фиксированной запятой, представленных в прямом коде.
Содержание отчета
-
Формулировка задания.
-
Структурная схема АЛУ для выполнения операции деления чисел с фиксированной запятой, представленных в прямом коде.
-
Блок-схема выполнения операции деления чисел с фиксированной запятой, представленных в прямом коде.
-
Программа на языке MCL, моделирующая выполнение операции деления чисел с фиксированной запятой, представленных в прямом код.
-
Результаты выполнения программы в виде распечатки содержимого поля для вывода текстовой информации и скриншота в момент завершения выполнения программы.
Задания к лабораторной работе
Промоделировать работу АЛУ в системе MCL при выполнении операции деления в соответствие с номером варианта. Номера вариантов даны в таблице 3.
При написании программы рекомендуется использовать следующие обозначения:
TS – знак операции деления;
SCH - счетчик циклов;
R1 – регистр делителя;
R2, RB – регистр делимого;
R3, SM – регистры АЛУ для организации сдвига;
RC – регистр суммы АЛУ;
RA – регистр для формирования дополнительного и прямого кода делителя;
INP1,INP2 – входные регистры.
Разрядность регистров АЛУ принимается 8 бит. Число циклов деления равно разрядности операндов, т.е. восьми. При выполнении лабораторной работы для наглядности, необходимо печатать содержимое всех регистров АЛУ на каждом такте деления. Содержимое регистров должно быть представлено в двоичной форме, исходные значения операндов и результаты – в десятичной системе счисления.
Таблица 3. Варианты заданий для моделирования операции деления
| Номер варианта | Делимое | Делитель |
| 1 | 20 -2322 1980 -1152 | 4 9 -36 -96 |
| 2 | 18 -1701 345 -1342 | 3 6 -15 -23 |
| 3 | 12 -1890 1872 -833 | 4 7 -36 -17 |
| 4 | 14 -999 720 -455 | 2 3 -45 -13 |
| 5 | 24 -1176 935 -2625 | 4 4 -11 -75 |
| 6 | 24 -2210 1368 -1012 | 8 8 -19 -23 |
| 7 | 32 -1768 2120 -1212 | 4 6 -40 -101 |
| 8 | 20 -2814 1701 -1363 | 5 10 -21 -29 |
| 9 | 18 -1089 3000 -720 | 6 4 -40 -24 |
| 10 | 20 -1008 3920 -1632 | 2 3 -49 -17 |
| 11 | 10 -1582 1290 -2997 | 5 6 -15 -81 |
| 12 | 12 -728 1288 -1593 | 2 2 -23 -27 |
| 13 | 15 -1432 980 -152 | 5 5 -36 -96 |
| 14 | 14 -1801 345 -1342 | 7 6 -15 -23 |
| 15 | 18 -1890 1872 -833 | 9 7 -36 -17 |
| 16 | 18 -1999 720 -455 | 2 7 -45 -13 |
| 17 | 36 -1200 935 -2625 | 9 4 -11 -75 |
| 18 | 21 -2565 1368 -1012 | 7 10 -19 -23 |
| 19 | 18 -1878 2120 -1212 | 9 7 -40 -101 |
| 20 | 9 -2345 1701 -1363 | 3 9 -21 -29 |
| 21 | 21 -1190 3000 -720 | 3 45 -40 -24 |
| 22 | 22 -1248 3920 -1632 | 11 4 -49 -17 |
| 23 | 22 -1792 1290 -2997 | 2 7 -15 -81 |
| 24 | 24 -538 1288 -1593 | 3 2 -23 -27 |
Лабораторная работа № 4. Моделирование функционирования операционной части центрального процессора
Содержание
Цель работы___________________________________________________________________________ 61
Функционирование операционной части центрального процессора__________________________ 61
Центральный процессор_________________________________________________________ 61
Команды ЭВМ_________________________________________________________________ 62
4-х адресные команды___________________________________________________________62
3-х адресные команды__________________________________________________________ 64
2-х адресные команды___________________________________________________________65
Одноадресные команды_________________________________________________________ 66
Безадресные команды___________________________________________________________ 66
Способы адресации_____________________________________________________________ 66
1)Прямая адресация ____________________________________________________________ 66
2)Непосредственная адресация ___________________________________________________ 67
3)Косвенная адресация__________________________________________________________ 67
4)Регистровая адресация ________________________________________________________ 67
5)Базовая адресация ____________________________________________________________ 69
6)Индексная адресация__________________________________________________________ 70
7)Базово – индексная адресация __________________________________________________ 70
8)Косвенно – регистровая адресация ______________________________________________ 72
Пример моделирования операционной части ЦП__________________________________________ 74
Содержание отчета_____________________________________________________________________ 76
Задание к лабораторной работе__________________________________________________________76
Цель работы
Изучение функционирования операционной части центрального процессора при выполнении команд с различными способами адресации.
Функционирование операционной части центрального процессора
Центральный процессор
Центральный процессор (ЦП) – это устройство, которое предназначается для непосредственной обработки данных и работает под управлением программ.
Основные узлы центрального процессора.
-
Арифметико-логическое устройство (АЛУ). Предназначается для выполнения арифметических и логических операций над данными.
В АЛУ выполняются операции с фиксированной точкой, с плавающей точкой, операции двоично – десятичной арифметики, логические операции, обработка алфавитно-цифровой информации.
-
Устройство управления (УУ) – предназначается для выработки управляющих сигналов, под воздействием которых выполняются машинные команды.
Основные этапы выполнения машинной команды.
1 этап: выбор машинной команды из памяти.
2 этап: дешифрация кода операции.
3 этап: формирование исполнительного адреса и выбор операндов.
4 этап: непосредственное выполнение операции в АЛУ.
5 этап: запись результата.
3) Регистры общего назначения (РОНы).
РОНы-это программно-адресуемые регистры, предназначаются для хранения операндов, результатов, а также для хранения индекса, базы, используются при вычислении адреса.
4) Управляющие регистры.
Счетчик команд (СК) – хранит адрес следующей выполняемой команды.
Регистр команд (РК) – хранит текущую выполняемую команду.
5) Вспомогательные блоки – к ним относится блок прерывания, блок связи центрального процессора (ЦП) и оперативной памяти (ОП), блок контроля и диагностики и т.д.
Центральный процессор (ЦП) состоит из: операционной части и устройства управления (УУ), где операционная часть центрального процессора включает в себя регистры, счетчики, сумматоры, дешифраторы и связи между ними и предназначена для выполнения микропрограмм.
Устройство управления служит для выработки управляющих сигналов, с помощью которых выполняется пересылка информации в операционной части. Другими словами УУ координирует работу всех устройств.
Организация операционной части центрального процессора
Команды ЭВМ
Машинная команда – это двоичный код, который включает в себя операционную часть и адресную часть.
В адресной части содержится информация об адресах операндов и результатов.
Различаются следующие команды:
4-х адресная,
3-х адресная,
2-х адресная,
одноадресная
и безадресная команды.
4-х адресные команды
операционная адресная
часть часть
Поле А1 – информация об адресе первого операнда.
Поле А2 – информация об адресе второго операнда.
Поле А3 – информация об адресе результата.
Поле А4 – информация об адресе следующей выполняемой команды.
Микропрограмма и структурная схема операционной части ЦП при выполнении 4-х адресной команды.
Пусть А1-адрес ячейки оперативной памяти, где хранится первый операнд;
А2- адрес ячейки оперативной памяти, где хранится второй операнд;
А3- адрес ячейки оперативной памяти, по которому необходимо записать результат;
А4- адрес ячейки оперативной памяти, где хранится следующая выполняемая команда.
О
П
РК
АЛУ
Рис. 16. Структурная схема операционной части ЦП при выполнении 4-х адресной команды
ЗМ – запоминающий массив.
РАП – регистр адреса памяти.
РЧП – регистр числа памяти.
РК – регистр команд.
АЛУ – арифметико-логическое устройство.
RA, RB-входные регистры АЛУ, предназначаются для хранения операндов.
RС - выходной регистр, предназначается для хранения результата выполненной операции в АЛУ.
1 этап. Выбор команды из памяти
РАП:=РК(А4)
Адрес следующей выполняемой команды подается в память на регистр адреса памяти (РАП)
РЧП:=Чт(РАП) ( в результате выполнения микрооперации на РЧП содержится сама команда)
Это непосредственный выбор самой команды из ЗМ
РК:=РЧП
Пересылается команда из памяти в ЦП на РК.
2 этап. Дешифрация кода операции.
3 этап. Формирование исполнительного адреса и выбор операндов.
Р
Выбор 1-го операнда
АП:=РК(А1)Адрес первого операнда подается в ОП на РАП
РЧП:=Чт(РАП)
Чтение из ЗМ на РЧП первого операнда
RA:=РЧП
Первый операнд подается на входной регистр АЛУ
Р
Выбор 2-го операнда
АП:=РК(А2)Адрес второго операнда подается в ОП на РАП
РЧП:=Чт(РАП)
Чтение из ЗМ на РЧП второго операнда
RB:=РЧП
Второй операнд подается на входной регистр АЛУ
4 этап. Выполнение операции в АЛУ.
RC:=RAоперация RB
5 этап. Запись результата.
РАП:=РК(А3)
Адрес, по которому необходимо записать результат, подается в ОП на РАП
РЧП:=RC
Результат подается в ОП на РЧП
Зп(РАП):=РЧП
Результат записывается в ЗМ
3-х адресные команды
операционная адресная
часть часть
В 3-х адресной команде отсутствует А4. При использовании 3-х адресной команды добавляется дополнительное устройство – счетчик команд и дополнительно появляются команды перехода.
Микропрограмма и структурная схема операционной части ЦП при выполнении 3-х адресной команды.
О
Чт
П
ЗМ
Р
А
П
Р
Ч
П
Зп
РК
А1
РК
А2
А3
А4
КОП
RA
RB
АЛУ
Дш
БУУ
RC
Рис. 17. Структурная схема операционной части ЦП при выполнении 3-х адресной команды
СК – счетчик команд, хранит адрес следующей команды.
1 этап. РАП:=СК
РЧП:=Чт(РАП)
РК:=РЧП
СК:=СК + n {n-длина команды}
Этапы 2,3,4,5 см. 4-х адресные команды
2-х адресные команды
операционная адресная
часть часть
Поле А3 – отсутствует. Результат записывается на место 1-го или 2-го операнда.
При этом операнд затирается и если его необходимо использовать в дальнейшем, он предварительно должен быть сохранен.
Одноадресные команды
операционная адресная
часть часть
Есть только поле А1.
В структуру ЦП вводится дополнительный регистр аккумулятор (РА), на который предварительно дополнительной командой засылается второй операнд.
Результат записывается на место либо первого операнда, либо в аккумулятор.
Безадресные команды
Рис. 18. Структура безадресной команды
Имеется только поле кода операции.
Стек используется для хранения операндов и записи результата.
Способы адресации
Различают понятия: адресный код в команде и исполнительный адрес операнда.
Адресный код в команде - это информация об адресе.
Исполнительный адрес операнда – это физический адрес ячейки памяти, в которой хранится операнд или в которую необходимо записать результат.
1)Прямая адресация.
Рис. 19. Структура прямой адресации
В
Выбор операнда
адресном поле команды Ai задаётся исполнительный адрес операнда.
РАП:=РК(Аi)
РЧП:=Чт(РАП)
RA:=РЧП
RA-входной регистр АЛУ.
2)Непосредственная адресация.
В адресном поле команды задается непосредственно сам операнд.
Рис. 20. Структура непосредственной адресации
RA:=РК(Ai)
3)Косвенная адресация.
В адресном поле команды задается адрес ячейки оперативной памяти (ОП), в которой хранится адрес операнда. Иначе, эта адресация называется адрес адреса.
Рис. 21. Структура косвенной адресации
РАП:=РК(Ai)
РЧП:=Чт(РАП) – выбор адреса операнда из ЗМ
РАП:=РЧП
РЧП:=Чт(РАП) – выбор операнда из ЗМ
RA:=РЧП
4)Регистровая адресация.
В структуру ЦП дополнительно вводятся регистры общего назначения (РОНы).
Они вводятся для того, чтобы:
1.Сократить время выбора операндов по сравнению с ОП.
2.Сократить размер поля Ai для кодирования номера РОНа.
Микропрограмма и структурная схема операционной части ЦП при выполнении двухадресной команды формата регистр-регистр
Ai
КОП
Pi
При использовании регистровой адресации в адресном поле команд Аi задается номер регистра, где хранится операция.
Ai
КОП
Р1
Р2
При написании микропрограммы принимается, что запись результата производится на место первого операнда:
Рис. 22. Структурная схема операционной части ЦП при выполнении двухадресной команды формата регистр-регистр
РК - регистр команд - предназначается для хранения текущей выполняемой команды.
1 этап. Выбор команды из памяти
РАП:=СК (адрес следующей команды подается на РАП)
РЧП:=Чт(РАП) (выбор команды из ЗМ)
РК:=РЧП (машинная команда из памяти передается на РК в ЦП)
СК:=СК+n (n-длина выполняемой машинной команды в байтах)
2 этап. Дешифрация кода операции.
3 этап. Формирование исполнительного адреса и выбор операндов.
О
Выбор 1-го операнда
перанды находятся в РОНах.
РАРП:=РК(Р1) (на РАРП из РК подается номер регистра, где хранится 1-ый операнд)
РЧРП:=Чт(РАРП) (выбор первого операнда из РОНов)
RA:=РЧРП (пересылка первого операнда на входной регистр АЛУ)
Выбор 2-го операнда
РАРП:=РК(Р2) (на РАРП из РК подается номер регистра, где хранится 2-ой операнд)РЧРП:=Чт(РАРП) (выбор второго операнда из РОНов)
RB:=РЧРП (пересылка второго операнда на входной регистр АЛУ)
4 этап. Выполнение операции в АЛУ.
RC:=RA операция RB
5 этап. Запись результата.
РАРП:=РК(Р1)
РЧРП:=RС
Зп(РАРП):=РЧРП
5)Базовая адресация.
Di – смещение.
Исполнительный адрес [ИА] - в адресном поле явно не задан.
Bi – номер базового регистра.
ИА=(Bi) + Di.
(Вi)- база (содержимое базового регистра).
Рис. 23. Структура базовой адресации
Базовая адресация – обеспечивает перемещаемость программ в памяти.
При базовой адресации операнды хранятся в ОП. Для вычисления исполнительного адреса операнда необходимо к содержимому базового регистра прибавить смещение, которое выбирается из адресного поля команды.
6)Индексная адресация.
Xi – номер индексного регистра.
ИА=(Xi) + Di.
(
Xi)-индекс (содержимое индексного регистра).
Рис. 24. Структура индексной адресации
Индексная адресация - используется при работе с массивами, таблицами.
Исполнительный адрес операнда вычисляется аналогично базовой адресации.
7)Базово – индексная адресация.
ИА = (Xi) + (Bi) + Di.
(Xi) – индекс (содержимое индексного регистра).
(Bi) – база (содержимое базового регистра).
Di – смещение (выбирается из команды и подается на АЛУ).
Рис. 25. Структура базово-индексной адресации
Микропрограмма и структурная схема операционной части ЦП при выполнении двухадресной команды с записью результата на место первого операнда.
1-ый операнд: регистровая адресация;
2-ой операнд: базово - индексная адресация.
Рис. 26. Структурная схема операционной части ЦП при выполнении двухадресной команды с записью результата на место первого операнда
1 этап. Выбор команды из памяти.
РАП:=СК
РЧП:=Чт(РАП)
РК:=РЧП
СК:=СК + n
2 этап. Дешифрация кода операции.
3 этап. Формирование ИА и выбор операндов.
а) Формирование ИА и выбор 2-го операнда:
выбор индекса:
Выбор индекса X2
РАРП:=РК(Х2) – номер индексного регистра подается в РОНы РЧРП:=Чт(РАРП) – выбор индекса
RA:=РЧРП
выбор базы:
Выбор базы B2
РАРП:=РК(В2) – номер базового регистра подается в РОНы РЧРП:=Чт(РАРП) – выбор базы
RB:=РЧРП
RC=RA + RB - ((Х2) + (В2))
RA:=RС - на RA пересылается часть ИА
RB:=РК(D2) - выбор смещения
RС= RA + RB - вычисление ИА
выбор 2-го операнда:
РАП:=RС - ИА подается на РАП
РЧП:=Чт(РАП) - выбор 2-го операнда
RA:=РЧП
б) Выбор 1-го операнда:
РАРП:=РК(P1)
РЧРП:=Чт(РАРП)
RB:=РЧРП
4 этап. Выполнение операции в АЛУ.
5 этап. Запись результатов.
РЧРП:=RС
Зп(РАРП):=РЧРП
8)Косвенно – регистровая адресация.
В
адресном поле команды указывается номер РОНа, который содержит адрес операнда, хранящийся в ОП (оперативной памяти).
Рис. 27. Структура косвенно-регистровой адресации
РАРП:=РК(R1)
РЧРП:=Чт(РАРП) - выбор адреса операнда из РОНов
РАП:=РЧРП
РЧП:=Чт(РАП) - выбор операнда из ОП
RA:=РЧП
Если нужно записать результат на место операнда с косвенно – регистровой адресацией, то результат записывается в ОП, а не в РОНы.
Рассмотрим моделирование операционной части ЦП на примере выполнения двухадресной команды формата регистр-регистр.
Структурная схема операционной части ЦП при выполнении двухадресной команды формата регистр-регистр (R-R) изображена на рис. 22.
При моделировании примем, что формат двухадресной команды формата R-R имеет следующий вид:
| КОП | P1 | P2 |
| 15...14 | 13...7 | 6...0 |
P1 - поле, содержащее номер РОНа, где хранится 1-й операнд,
P2 - поле, содержащее номер РОНа, где хранится 2-й операнд.
Определим регистры:
RCH[16] – регистр числа памяти 16 бит, в него происходит выборка из памяти и из него происходит запись в память.
RAP[4] – регистр адреса, по которому производится выборка из памяти или запись в память.
Команды:
• RCH:=ZS[RAP]; - чтение по адресу RAP;
• ZS[RAP]:=RCH; - запись по адресу RAP.
RCHR[16] – регистр числа регистровой памяти 16 бит, в него происходит выборка из РОНов и из него происходит запись в них.
RARP[4] – регистр адреса регистровой памяти, по которому производится выборка из РОНов или запись в них.
Команды:
• RCHR:=RON[RARP]; - чтение по адресу RARP;
• RON[RARP]:=RCHR; - запись по адресу RARP.
SK[4] – счётчик команд, по его адресу из памяти извлекается первая команда. При запуске программы лабораторной работы происходит запрос его начального значения.
MEM RON[16][16] – массив для хранения РОНов. 16 РОНов по 16 бит.
MEM ZS[16][16] – запоминающая среда памяти, массив 16 ячеек по 16 бит.
Структура регистра команд.
Возможные варианты в зависимости от выбранной адресации:
STRUCT RK[16] OP2[7], OP1[7], KOP[2];
STRUCT RK[16] OP2[7], D1[3], R1[4], KOP[2];
STRUCT RK[16] D2[3], R2[4], OP1[7], KOP[2];
STRUCT RK[16] D2[3], R2[4], D1[3], R1[4], KOP[2];
OP1[7] или OP2[7] – поля, предназначенные для задания первого или второго операнда или информации об их адресах, если для них выбраны соответственно адресации: непосредственная, прямая, регистровая, косвенно-регистровая, косвенная.
R1[4] или R2[4] – поля, предназначенные для задания номеров базового и индексного регистров для первого или второго операнда.
D1[3] или D2[3] – смещение первого или второго операнда для базовой или индексной адресации.
Пример моделирования операционной части ЦП
Ниже приводится программа моделирования операционной части ЦП на примере выполнения двухадресной команды формата R-R.
VAR I;
REG RA[16],RB[16],RC[16],RCH[16],RAP[4],SK[4],RARP[4],RCHR[16],
RAMK[5],RMK[32];
MEM RON[16][16];
MEM ZS[16][16];
MEM PMK[32][32];
MEM PAMK[32][5];
STRUCT RK[16] OP2[7],OP1[7],KOP[2];
RON[0]:=0;
RON[1]:=0;
RON[2]:=0;
RON[3]:=32;
RON[4]:=0;
RON[5]:=0;
RON[6]:=0;
RON[7]:=15;
RON[8]:=0;
RON[9]:=0;
RON[10]:=0;
RON[11]:=0;
RON[12]:=0;
RON[13]:=0;
RON[14]:=0;
RON[15]:=0;
ZS[0]:=0;
ZS[1]:=16775;
ZS[2]:=0;
ZS[3]:=0;
ZS[4]:=0;
ZS[5]:=0;
ZS[6]:=0;
ZS[7]:=0;
ZS[8]:=0;
ZS[9]:=0;
ZS[10]:=0;
ZS[11]:=0;
ZS[12]:=0;
ZS[13]:=0;
ZS[14]:=0;
ZS[15]:=0;
START:
READ "Введите ячейку, в которую записана команда" SK;
RAP:=SK;
PAUSE;
RCH:=ZS[RAP];
PAUSE;
RK:=RCH;
PAUSE;
SK:=SK+1;
PAUSE;
RARP:=RK.OP1;
PAUSE;
RCHR:=RON[RARP];
PAUSE;
RA:=RCHR;
PAUSE;
RARP:=RK.OP2;
PAUSE;
RCHR:=RON[RARP];
PAUSE;
RB:=RCHR;
PAUSE;
RC:=RA+RB;
PAUSE;
RARP:=RK.OP1;
PAUSE;
RCHR:=RC;
PAUSE;
RON[RARP]:=RCHR;
PAUSE; PAUSE;
END;
На рис. 28 приведено содержимое экрана для рассматриваемого примера. В примере команда вводится по адресу 1, КОП – 1, 1-ый операнд хранится в 3 РОНе, 2-ой операнд – в 7 РОНе. Данные вводятся и отображаются в 10-ой системе счисления.
Рис. 28. Моделирование операционной части ЦП на примере выполнения двухадресной команды формата R-R
Примечания
-
на рисунке 28 слева на графике расставлены вентили, которые в данной лабораторной работе не используются (они нужны для моделирования блока устройства управления);
-
при написании программы моделирования необходимо вставлять паузу (PAUSE) после каждой команды для контроля правильного выполнения программы (правильной передачи информации с регистра на регистр);
-
в командах записи и чтения необходимо использовать квадратные скобки;
-
в данной лабораторной работе пошаговый режим не использовать;
-
в программе задается содержимое всех РОНов равное 0 (выделяется ячейка в таблице и печатается значение);
-
чтобы задать команду, необходимо выбрать номер ячейки, в которую записывается команда, выделить поле КОП и задать код операции, выделить следующее поле и ввести следующее значение;
-
чтобы задать данные, необходимо выбрать номер ячейки, в которую записываются данные, выделить поле данных и ввести число, которое необходимо задать;
-
в ячейке 1 имеется число 16775 (по адресу 1-команда), которое является десятичной интерпретацией команды.
Содержание отчета
-
Формулировка задания.
-
Структурная схема ЦП при выполнении команд в соответствии с заданными способами адресации.
-
Блок-схема функционирования операционной части центрального процессора.
-
Программа на языке MCL, моделирующая выполнение команд в соответствии с заданными способами адресации.
-
Результаты выполнения программы в виде распечатки содержимого поля для вывода текстовой информации и скриншота в момент завершения выполнения программы.
Задание к лабораторной работе
Промоделировать функционирование операционной части на микропроцессорном уровне при выполнении 2-х адресной арифметико-логической команды, хранящейся в памяти по адресу, значение которого указано в счётчике команд (СК).
КОП для всех вариантов представлен двоичным набором 1, что соответствует операции сложения.
Задать содержимое РОН и ОП. Принять, что
а) длина команды 16-ть бит и под код операции отводится 2 разряда. Разрядность полей, отводимых под операнды, 7 бит;
б) объём памяти 16 ячеек по 16 бит;
в) существует 16-ть регистров общего назначения разрядностью 16 бит;
г) РАП - 4 разрядов,
РЧП - 16 разрядов,
РАРП - 4 разряда,
РЧРП - 16 разрядов.
Таблица 4. Варианты заданий для моделирования операционной части
| Номер варианта | 1-ый операнд | 2-ой операнд | Результат |
| 1 | Регистровая | Прямая | 1ый операнд |
| 2 | Регистровая | Косвенная | 1ый операнд |
| 3 | Регистровая | Косвенно-регистровая | 1ый операнд |
| 4 | Регистровая | Базовая | 1ый операнд |
| 5 | Прямая | Регистровая | 1ый операнд |
| 6 | Прямая | Косвенная | 1ый операнд |
| 7 | Прямая | Косвенно-регистровая | 1ый операнд |
| 8 | Прямая | Базовая | 1ый операнд |
| 9 | Косвенная | Регистровая | 1ый операнд |
| 10 | Косвенная | Косвенно-регистровая | 1ый операнд |
| 11 | Косвенная | Базовая | 1ый операнд |
| 12 | Косвенная | Непосредственная | 1ый операнд |
| 13 | Косвенная | Прямая | 1ый операнд |
| 14 | Косвенно-регистровая | Регистровая | 1ый операнд |
| 15 | Косвенно-регистровая | Прямая | 1ый операнд |
| 16 | Косвенно-регистровая | Косвенная | 1ый операнд |
| 17 | Косвенно-регистровая | Индексная | 1ый операнд |
| 18 | Базовая | Регистровая | 1ый операнд |
| 19 | Базовая | Непосредственная | 1ый операнд |
| 20 | Прямая | Регистровая | 2ой операнд |
| 21 | Косвенная | Регистровая | 2ой операнд |
| 22 | Косвенно-регистровая | Регистровая | 2ой операнд |
| 23 | Индексная | Регистровая | 2ой операнд |
| 24 | Регистровая | Прямая | 2ой операнд |
| 25 | Косвенная | Прямая | 2ой операнд |
| 26 | Косвенно-регистровая | Прямая | 2ой операнд |
| 27 | Базовая | Прямая | 2ой операнд |
| 28 | Регистровая | Косвенная | 2ой операнд |
| 29 | Косвенно-регистровая | Косвенная | 2ой операнд |
| 30 | Базовая | Косвенная | 2ой операнд |
| 31 | Прямая | Косвенная | 2ой операнд |
| 32 | Непосредственная | Косвенно-регистровая | 2ой операнд |
| 33 | Регистровая | Косвенно-регистровая | 2ой операнд |
| 34 | Прямая | Косвенно-регистровая | 2ой операнд |
| 35 | Косвенная | Косвенно-регистровая | 2ой операнд |
| 36 | Индексная | Косвенно-регистровая | 2ой операнд |
| 37 | Регистровая | Базовая | 2ой операнд |
| 38 | Непосредственная | Базовая | 2ой операнд |
| 39 | Прямая | Регистровая | 1ый операнд |
| 40 | Непосредственная | Косвенно-регистровая | 2ой операнд |
Лабораторная работа № 5. Моделирование блока устройства управления
Содержание
Цель работы___________________________________________________________________________ 80
Функционирование блока устройства управления_________________________________________ 80
Описание функционирования блока устройства управления__________________________________ 80
Структурная схема горизонтального микропрограммного устройства__________________________ 80
Пример работы БУУ при выполнении двухадресной команды формата R-R_____________________81
Структурная схема_____________________________________________________________________ 83
Пример выполнения программы_________________________________________________________86
Содержание отчета______________________________________________________________________92
Задание к лабораторной работе___________________________________________________________92
Цель работы
изучение функционирования блока УУ при выполнении команд центрального процессора с различными способами адресации.
Функционирование блока устройства управления
Описание функционирования блока устройства управления
Устройство управления центрального процессора вырабатывает последовательность функциональных сигналов, необходимую для выполнения команды. Команда в процессоре реализуется, обычно, за несколько тактов, в каждом из которых выполняется одна или несколько микроопераций.
Цикл выполнения команды начинается с выборки ее из памяти. Затем происходит дешифрация кода операции, формирование исполнительного адреса и выбор операндов, выполнение операции в АЛУ и, последнее, запись результата в память. Процесс выполнения команды состоит из выполнения микрокоманд, каждая микрокоманда включает в себя одну или несколько микроопераций. Каждой микрооперации соответствует определенный управляющий (функциональный) сигнал.
Известны два основных метода построения логики формирования функциональных сигналов. Один из них состоит в том, что для каждой команды процессора имеется набор логических схем, которые в нужных тактах возбуждают соответствующие функциональные сигналы, такой принцип управления получил название "жесткой" или "запаянной" логики.
В современных процессорах при построении устройств управления часто используется другой подход, основанный на использовании принципа микропрограммного управления. В таком устройстве управления схемы включения функциональных сигналов управляются регистром, в который считывается управляющая информация из постоянного запоминающего устройства (ПЗУ). Считывая последовательно слова из ПЗУ в этот регистр, можно организовать требуемую последовательность функциональных сигналов.
Микропрограммный принцип организации управления заключается в том, что каждой микрооперации ставится в соответствие слово (или часть слова), называемая микрокомандой и хранимое в памяти подобно тому, как хранятся в памяти команды обычной пользовательской программы. При таком подходе команде соответствует микропрограмма, то есть набор микрокоманд, указывающих, какие функциональные импульсы и в какой последовательности необходимо возбуждать для выполнения данной операции. Этот подход получил название МИКРОПРОГРАМИРОВАНИЯ или "хранимой логики".
Микропрограммное устройство управления может быть реализовано следующими способами:
- горизонтальный способ;
- вертикальный способ;
- горизонтально - вертикальный;
- вертикально - горизонтальный.
При горизонтальном микропрограммировании каждому разряду микрокоманды соответствует определенная микрооперация, выполняемая независимо от содержания других разрядов.
Структурная схема горизонтального микропрограммного устройства
Структурная схема горизонтального микропрограммного устройства представлена на рисунке 29. В состав устройства управления входят:
1. Регистр адреса микрокоманд (РАМК);
2. Дешифратор (ДШ);
3. Постоянное запоминающее устройство (ПЗУ);
4. Регистр микрокоманд (РМК).
РМК
Рис. 29. Структурная схема горизонтального микропрограммного устройства
Достоинствами горизонтального микропрограммирования являются возможность одновременного выполнения нескольких микроопераций и простота формирования функциональных импульсов, так как последние могут возбуждаться непосредственно от сигналов, получаемых из регистра хранения микрокоманды без каких либо промежуточных схем дешифрации. Однако, оно имеет и существенный недостаток, заключающийся в том, что требуется большая длина микрокоманды, поскольку число функциональных импульсов в современном процессоре может достигать нескольких сотен. Соответственно, для хранения микрокоманд требуются запоминающие устройства большой емкости.
Чтобы обеспечить выполнение требуемых микроприказов не постоянно, а в строго определенное время, необходимо расчленить связи, соединяющие соответствующие регистры, управляющими вентилями (схемами И). В этом случае управляющий вентиль имеет два входа (от передающего триггера и управляющий) и один выход, подсоединенный к приемному триггеру.
Каждому микроприказу взаимно-однозначно соответствует номер управляющего вентиля. Поэтому устройство управления, выдавая управляющие единичные сигналы на определенные управляющие вентили, в требуемое время обеспечивает выполнение операционным устройством требуемого действия.
Пример работы БУУ при выполнении двухадресной команды формата R-R
Для примера рассмотрим работу блока устройства управления при выполнении двухадресной команды формата R-R.
Разобьем выполнение данной команды на такты на основе уже существующей микропрограммы (смотри предыдущую лабораторную работу):
1
такт: РАП:=СК выборка
2 такт: РЧП:=Чт(РАП) команды
3 такт: РК:=РЧП и
4
такт: СК:=СК+1 ее дешифрация
5 такт: РАРП:=РК(P1) выборка 1-го операнда
6 такт: РЧРП:=Чт(РАРП) и его размещение на
7 такт: RА:=РЧРП входном регистре АЛУ
8
такт: РАРП:=РК(P2) выборка 2-го операнда
9 такт: РЧРП:=Чт(РАРП) и его размещение на
10 такт: RВ:=РЧРП входном регистре АЛУ
1
1 такт: RС:=RА+RВ выполнение операции в АЛУ
1
2 такт: РЧРП:=RС запись
13 такт: РАРП:=РК(P1 или Р2) результата
14 такт: Зп(РАРП):=РЧРП в память
Каждый такт работы УУ полностью определяется управляющими вентилями, номера которых не обязательно совпадают с номерами тактов и на которые подаются единичные управляющие сигналы.
V1 РАП:=СК
V5 РЧП:=Чт(РАП)
V2,V3 РК:=РЧП; СК:=СК+1
V6 РАРП:=РК(Р1)
V8 РЧРП:=Чт(РАРП)
V9,V10 RА:=РЧРП; РАРП:=РК(P2)
V8 РЧРП:=Чт(РАРП)
V11,V6 RВ:=РЧРП; РАРП:=РК(P1 или Р2)
V12 RС:=RА+RВ
V13 РЧРП:=RС
V7 Зп(РАРП):=РЧРП
Учитывая, что горизонтальное микропрограммирование позволяет совмещать микрооперации в одном такте времени, получим следующую последовательность включения управляющих вентилей:
V1-V5-V2,V3-V6-V8-V10,V9-V8-V11,V6-V12-V13-V7.
Введем в блоке УУ регистр микрокоманд (РМК) длиной N бит. Установим взаимно-однозначное соответствие между номерами управляющих вентилей по правилу: i-разряд РМК соответствует i-вентилю Vi. Тогда работа УУ сводится к систематическому формированию двоичных последовательностей. Определим ряд компонент структурной схемы операционной части ЦП при выполнении 2-х адресной команды формата R-R(рис.30), где:
РК - регистр команд;
СК - счетчик команд;
АЛУ - арифметико-логическое устройство;
ДШ -дешифратор;
РОН - регистры общего назначения;
РАРП - регистр адреса регистровой памяти;
РЧРП - регистр числа регистровой памяти;
в оперативном запоминающем устройстве:
ЗМ - запоминающий массив;
РАП - регистр адреса памяти;
РЧП - регистр числа памяти;
Vi- i-тый управляющий вентиль.
Структурная схема
Рис. 30. Структурная схема операционной части ЦП при выполнении 2-х адресной команды формата R-R
В блок УУ входят следующие компоненты:
1.Регистр микрокоманд (РМК);
2.Регистр адреса микрокоманд (РАМК);
3.Дешифратор (ДШ);
4.Микропрограммная память (МПП), состоящая из двух матриц: управляющей матрицы, обеспечивающей формирование требуемых микрокоманд, и матрицы, определяющей номер очередной микрокоманды.
Структурная схема горизонтального микропрограммного УУ изображена на рисунке 31, где число вертикальных шин управляющей матрицы равно числу управляющих вентилей (13), число горизонтальных шин равно числу микрокоманд (11), а число вертикальных шин равно 4-м в адресной части матрицы.
Определим следующие переменные для моделирования в системе МСL:
RA[16], RB[16], RC[16].
Регистры RA – первый операнд АЛУ, RB – второй операнд АЛУ, RC – регистр результата. Операция сложения производится командой:
RC:=RA+RB.
RCH[16] – регистр числа памяти 16 бит, в него происходит выборка из памяти и из него происходит запись в память.
RAP[4] – регистр адреса, по которому производится выборка из памяти или запись в память.
Команды:
• RCH:=ZS[RAP]; - чтение по адресу RAP;
• ZS[RAP]:=RCH; - запись по адресу RAP.
RCHR[16] – регистр числа регистровой памяти 16 бит, в него происходит выборка из РОНов и из него происходит запись в них.
RARP[4] – регистр адреса регистровой памяти, по которому производится выборка из РОНов или запись в них.
Команды:
• RCHR:=RON[RARP]; - чтение по адресу RARP;
• RON[RARP]:=RCHR; - запись по адресу RARP.
SK[4] – счётчик команд, по его адресу из памяти извлекается первая команда. При запуске программы лабораторной работы происходит запрос его начального значения.
RAMK[5], RMK[32] – регистры для работы с прошивкой БУУ.
MEM PMK[32][32] – массив для хранения прошивки БУУ.
MEM PAMK[32][5] – массив для хранения адресной части БУУ.
MEM RON[16][16] – массив для хранения РОНов. 16 РОНов по 16 бит.
MEM ZS[16][16] – запоминающая среда памяти, массив 16 ячеек по 16 бит.
Структура регистра команд.
Возможные варианты в зависимости от выбранной адресации:
STRUCT RK[16] OP2[7], OP1[7], KOP[2];
STRUCT RK[16] OP2[7], D1[3], R1[4], KOP[2];
STRUCT RK[16] D2[3], R2[4], OP1[7], KOP[2];
STRUCT RK[16] D2[3], R2[4], D1[3], R1[4], KOP[2];
OP1[7] или OP2[7] – поля, предназначенные для задания первого или второго операнда или информации об их адресах, если для них выбраны соответственно адресации: непосредственная, прямая, регистровая, косвенно-регистровая, косвенная.
R1[4] или R2[4] – поля, предназначенные для задания номеров базового и индексного регистров для первого или второго операнда.
D1[3] или D2[3] – смещение первого или второго операнда для базовой или индексной адресации.
Исходными данными является содержимое микропрограммной памяти, которое необходимо задать в двоичной системе счисления.
Рис.31 Структурная схема горизонтального микропрограммного УУ
Пример выполнения программы
(см. файл БУУ.mcl):
V1 RAP:=SK;
Рис. 32. Первый этап выполнения программы
V5 RCH:=ZS[RAP];
Рис. 33. Второй этап выполнения программы
V2,V3 RK:=RCH; SK:=SK+1;
Рис. 34. Третий этап выполнения программы
V6 RARP:=RK.OP1;
Рис. 35. Четвертый этап выполнения программы
V8 RCHR:=RON[RARP];
Рис. 36. Пятый этап выполнения программы
V9,V10 RA:=RCHR; RARP:=RK.OP2;
Рис. 37. Шестой этап выполнения программы
V8 RCHR:=RON[RARP];
Рис. 38. Седьмой этап выполнения программы
V11,V6 RB:=RCHR; RARP:=RK.OP1;
Рис. 39. Восьмой этап выполнения программы
V12 RC:=RA+RB;
Рис. 40. Девятый этап выполнения программы
V13 RCHR:=RC;
Рис. 41. Десятый этап выполнения программы
V7 RON[RARP]:=RCHR;
Рис. 42. Одиннадцатый этап выполнения программы
Примечание
вентиль V4 при выполнении команды формата R-R не используется и поэтому в память ничего нельзя записывать; вентиль V4 используется при других способах адресации.
Содержание отчета
1. Структурная схема операционной части ЦП при выполнении команд в соответствии с заданными способами адресации.
2. Структурная схема горизонтального микропрограммного УУ в соответствии с вариантами задания.
3. Текст программы моделирования.
4. Распечатка результатов моделирования.
Задание к лабораторной работе
Промоделировать функционирование горизонтального микропрограммного УУ при выполнении 2-х адресной арифметико-логической команды, хранящейся на регистре команд. Принять, что:
а) длина команды 16-ть бит и под код операции отводится 2 разряда. Разрядность полей, отводимых под операнды, 7 бит;
б) объём памяти 16 ячеек по 16 бит;
в) существует 16-ть регистров общего назначения разрядностью 16 бит;
г) РАП - 4 разрядов,
РЧП - 16 разрядов,
РАРП - 4 разряда,
РЧРП - 16 разрядов.
КОП для всех вариантов представлять 1, что соответствует операции сложения.
Задать содержимое РОН и ОП.
Вывести на печать:
1) скриншот с заданным содержимым РОНов и ОП до выполнения программы;
2) скриншоты на каждом этапе выполнения микропрограммы.
Варианты заданий см. таблицу 4 в предыдущей лабораторной работе.
Лабораторная работа № 6. Моделирование функционирования селекторного канала
Содержание
Цель работы___________________________________________________________________________ 95
Функционирование селектоного канала___________________________________________________95
Структурная схема селекторного канала____________________________________________95
Канальная команда_____________________________________________________________ 96
Структурная схема селекторного канала_________________________________________________ 98
Описание подпрограмм________________________________________________________________ 100
Пример результатов моделирования работы селекторного канала__________________________104
Содержание отчета____________________________________________________________________ 105
Задание к лабораторной работе__________________________________________________________106
Цель работы
изучение функционирования селекторного канала при обслуживании одного или нескольких высокоскоростных внешних устройств.
Функционирование селектоного канала
Структурная схема селекторного канала
Селекторный канал предназначен для обслуживания одного или нескольких подсоединенных к нему высокоскоростных ВУ с целью выполнения канальной программы. Структурная схема селекторного канала приведена на рис. 43. Графическое изображение окна программы при выборе лабораторной работы «Селекторный канал (процессор ввода-вывода)» приведено на рис. 44.
ОП (OP)
ЗС
РЧП (RCHP)
РАП (RAP)
РАKK (RAKK)
РKK (RKK)
БР (BR)
ДШ
РДК (RDK)
УУК
КОММУТАТОР
СБ (SB)
КАНАЛ
РДУ (RDU)
ВУ
Рис. 43. Структурная схема селекторного канала
Рис. 44. Окно программы при выборе лабораторной работы «Селекторный канал (процессор ввода-вывода)»
Канальная команда
Адрес следующей выполняемой канальной команды (управляющего слова канала) хранится на регистре адреса канальной команды (РАКК). По этому адресу из ОП выбирается канальная команда, которая помещается на регистр канальной команды (РКК). Одна канальная команда занимает 8 байт, поэтому при ширине выборки из памяти равной 4 байтам потребуется 2 обращения к ОП.
Формат канальной команды:
. 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 .
┌─────┬─────────────────┬─────────────────┬──────────────────┐
│ КОП │ ПОЛЕ АДРЕСА │ ПОЛЕ ПРИЗНАКОВ │ПОЛЕ ДЛИНЫ МАССИВА │
└─────┴─────────────────┴─────────────────┴──────────────────┘
Будем обозначать соответствующие поля на РКК как РКК.КОП, РКК.АДР, РКК.ПРЗ и РКК.ДЛМ. Поле кода операций ( КОП ) - занимает 1 байт, для л/р :
01 - операция "чтение"
02 - операция "запись".
Поле адреса (счетчик адреса) - занимает 3 байта - указывает адрес ячейки ОП, в которой находится (или куда нужно записать) очередной элемент передаваемого массива данных. Поле длины массива - занимает 2 байта - указывает, сколько байт информации осталось передать. Равенство значения этого поля "0" указывает на то, что массив информации в соответствии с данной командой полностью передан, т.е. канальная команда выполнена. Далее анализируются признаки, находящиеся в поле признаков выполняемой команды.
Поле признаков - занимает 2 байта, из которых используется только старший (младший всегда равен 0). Из возможного набора признаков будем рассматривать "цепочку данных", "цепочку команд" и "конец канальной команды". Эти признаки определяются значением 2-х старших разрядов поля признаков (значение остальных разрядов рассматривать не будем).
| Признак | Значение старших разрядов поля | Значение поля признаков |
| цепочка данных | 10 | A000 |
| цепочка команд | 01 | 6000 |
| конец канальной ком. | 00 | 2000 |
[1:42:52] Roman: "Цепочка данных" означает, что следующая канальная команда имеет тот же код операции, что и выполняемая, и при ее выборке из ОП поле РКК.КОП остается неизменным.
"Цепочка команд" означает, что следующая канальная команда имеет иной код операции, нежели выполняемая. "Конец канальной команды" этот признак означает, что эта команда является последней. В реальных системах канал при обработке этого признака формирует запрос на прерывание ЦП.
Счетчик байт (СБ) представляет собой кольцевой (двухразрядный) счетчик . Младшие 2 бита поля адреса управляющего слова загружаются в счетчик байт.
Если выбранная команда оказалась командой записи, то из ОП через БП на регистр данных канала (РДК) считывается блок информации, равный по величине ширине выборки из памяти (в дальнейшем будем рассматривать память с шириной выборки 4 байта). Буферный регистр (БР) используется для увеличения скорости обработки: одновременно с записью информации из РДК на ВУ происходит считывание данных из ОП на БР. После выборки информации из ОП на РДК происходит разгрузка РДК на регистр данных внешнего устройства (РДУ) блоками, равными по величине ширине информационного тракта ВУ (в дальнейшем - 1 байт). При считывании 1 байта с РДК на ВУ значения счетчика байт (СБ) и РКК.АДР увеличиваются на 1, а значение РКК.ДЛМ уменьшается на 1. По достижении значения, равного числу байтов в РДК (ширине выборки из ОП), СБ обнуляется, т.к. счетчик является кольцевым.
Если СБ или РКК.ДЛМ не равны 0, то происходит считывание с РДК следующего байта информации.
Если СБ=0, то значит массив данных из РДК полностью записан на ВУ, и, если РКК.ДЛМ не равно 0, нужно считать из ОП на РДК следующую порцию информации.
Если РКК.ДЛМ=0, то это означает, что массив полностью считан из ОП и записан на ВУ, и далее анализируются признаки в поле признаков. В соответствии с признаками выбирается следующая канальная команда из ОП, а в случае, если выполняемая команда оказалась последней - формируется запрос на прерывание ЦП по вводу-выводу (в л/р означает конец моделирования).
Если выбранная команда оказалась командой чтения, то с ВУ считывается блок информации, величина которого равна ширине информационного тракта ВУ (1 байт), и помещается на РДК.
Номер байта в РДК, в который помещается блок информации, определяется по счетчику байт (СБ). Если СБ и РКК.ДЛМ не равны 0, с ВУ на РДК передается следующий байт информации.
После пересылки очередного байта информации значение СБ и РКК.АДР увеличивается на 1, а РКК.ДЛМ уменьшается на 1. Если СБ=0, то это означает, что РДК полностью заполнен, и происходит обращение к ОП для записи содержимого РДК. При этом для увеличения скорости обработки в канале используется буферный регистр (БР), в который пересылается содержимое РДК. После пересылки с РДК на БР канал начинает считывать новые порции информации с ВУ и помещать их на РДК. Если РКК.ДЛМ=0, то, независимо от значения СБ, также происходит запись содержимого РДК в ОП, т.к. массив в соответствии с текущей канальной командой полностью считан с ВУ. При этом СБ указывает, какое количество байт нужно переписать в ОП. После записи в ОП содержимого РДК при РКК.ДЛМ=0 анализируется поле признаков, как и при команде записи. Структурная схема алгоритма моделирования селекторного канала приведена на рис. 45.
Структурная схема селекторного канала
Рис. 45. Структурная схема алгоритма моделирования селекторного канала
Файл SK.MCL.
В файле SK.MCL содержатся подпрограммы работы с памятью, передачи информации из РДК на ВУ (и наоборот), распечатки регистров канала и рабочих ячеек ОП и подпрограмма ввода исходных в соответствии с номером варианта. Эти подпрограммы рекомендуется использовать для моделирования работы селекторного канала. В них приняты следующие обозначения переменных и регистров (в квадратных скобках - размерность регистров):
WN - номер варианта
ADDR[24] - после выполнения подпрограммы ZAGR содержит адрес первой кан. команды
RAKK[24] - регистр адреса канальной команды (РАКК)
RAP[24] - регистр адреса памяти (РАП)
RCHP[32] - регистр числа памяти (РЧП)
BR[32] - буферный регистр данных (БР)
RDK[32] - регистр данных канала (РДК)
RDU[8] - регистр данных внешнего устройства (РДУ)
SB[2] - счетчик байт (СБ)
Регистр канальной команды (РКК) 64-х разрядный. Т.к. в языке MCL максимальная размерность регистра - 32 разряда, то этот регистр представлен в виде двух структур:
RKK1[32] с полями KOP[8] и ADR[24] - старшая часть РКК
RKK2[32] с полями PRZ[16] и DLM[16] - младшая часть РКК
| RKK1.KOP | RKK1.ADR | RKK2.PRZ | RKK2.DLM |
Оперативная память (ОП) описана как MEM OP[1024][8] - линейная память из 1024 ячеек по 1 байту каждая. Подпрограммы работы с памятью позволяют работать с ней как с памятью с шириной выборки - 4 байта. MEM PU[16][8] - память для хранения массива чисел, считываемых с ВУ (заполняется, когда есть операция "чтение"). Все числа выводятся в 16-ричной системе счисления. Остальные переменные, начинающиеся с буквы W, используются как рабочие переменные внутри подпрограмм и физического смысла не имеют, поэтому использовать их в основной программе не рекомендуется.
См. файл SK.MCL
Описание подпрограмм
ПОДПРОГРАММА K_U_K:
K_U_K:
WU:=24-SB*8;
IF RKK1.KOP=1 THEN RDK[WU..(WU+7)]:=RDU;
IF RKK1.KOP=2 THEN RDU:=RDK[WU..(WU+7)];
RETURN;
Записывает в РДК из РДУ (или наоборот) 1 байт информации. Направление передачи определяется по коду операции выполняемой команды. Номер байта в РДК, в который (из которого) будет записана (считана) информация, определяется значением счетчика байт. Байты в РДК нумеруются слева направо.
┌─────┬─────┬─────┬─────┐
│ 0 │ 1 │ 2 │ 3 │ РДК
└─────┴─────┴─────┴─────┘
┌─────┐
│ РДУ │
└─────┘
ПОДПРОГРАММА W_REG:
W_REG:
WRITELN " RKK СЧ.БАЙТ РДК РДУ PAKK ";
WRITE $H2 RKK1.KOP," ",$H6 RKK1.ADR," ";
WRITE $H4 RKK2.PRZ," ",$H4 RKK2.DLM," ";
WRITE $H1 SB," ",$H2 RDK[24..31]," ";
WRITE $H2 RDK[16..23]," ",$H2 RDK[8..15]," ";
WRITELN $H2 RDK[0..7]," ",$H2 RDU," ",$H6 RAKK;
RETURN;
Распечатывает регистры канала РДК, СБ, РДК и РДУ. Вывод производится в виде:
РКК СЧ.БАЙТ РДК РДУ
01 000045 6000 0003 01 03 19 C4 2A 03
Вывод всех чисел производится в 16-ичной системе счисления.
ПОДПРОГРАММА OUT_OP:
OUT_OP:
RAP[0..1]:=0;
FOR WI:=0 TO 3;
WU:=24-WI*8;
RCHP[WU..(WU+7)]:=OP[RAP+WI];
NEXT;
RETURN;
Производит выборку из ОП содержимого 4-х ячеек (в соответствии с шириной выборки) на регистр РЧП в соответствии со значением старшей части адреса, находящегося на регистре РАП (два младших разряда регистра РАП обнуляются). Эта подпрограмма реализует микрокоманду обращения к ОП:
РЧП := ЧТ. (РАП)
ПОДПРОГРАММА IN_OP:
IN_OP:
FOR WI:=0 TO 3;
WU:=24-WI*8;
OP[RAP+WI]:=RCHP[WU..(WU+7)];
NEXT;
RETURN;
Производит запись в ОП содержимого регистра РЧП (в четыре последовательные ячейки), начиная с адреса, находящегося в регистре РАП (этот адрес должен быть кратным четырем). Эта подпрограмма используется в подпрограмме К_ОР.
ПОДПРОГРАММА К_ОР:
K_OP:
{RAP-Д/Б РАНЕЕ ОПРЕДЕЛЕНО}
GOSUB OUT_OP;
W1:=(NOT (SB-1))*8;
RCHP[W1..31]:=BR[W1..31];
GOSUB IN_OP;
RETURN;
Производит запись в ОП блока информации из канала (БР), начиная с адреса, находящегося в регистре РАП (этот адрес должен быть кратным ширине выборки). Число байт информации из БР (1,2,3 или 4 байта), которое нужно занести в память, определяется значением счетчика байт SB. Число записываемых в ОП байт меньше 4 при передаче последних байт массива информации, длина которого не кратна 4 (ширине выборки).
Работа подпрограммы:
по адресу в РАП на РЧП считывается содержимое соответствующих ячеек ОП (с помощью подпрограммы OUT_OP). Затем на РЧП заменяется требуемое количество байт (равное значению SB; если SB=0, то заменяются все 4 байта) информацией из регистра БР и измененное содержимое РЧП записывается обратно в ОП (с помощью подпрограммы IN_OP).
ПОДПРОГРАММА W_OP:
W_OP:
WRITELN " СОДЕРЖИМОЕ ЯЧЕЕК ОП:";
FOR WK:=0 TO 1;
FOR WI:=0 TO 1;
FOR WJ:=0 TO 3;
WU:=OP[ADDR+3+WK*8]+WI*4+WJ;
WRITE $H6 WU," ",$H2 OP[WU]," * ";
NEXT;
WRITELN;
NEXT;NEXT;
RETURN;
Распечатывает содержимое ячеек ОП. Распечатываются 16 ячеек - по 8 ячеек, начиная с адресов, указанных в поле адреса каждой канальной команды. В одной строке распечатываются 4 ячейки (в соответствии с шириной выборки).
Например для варианта канальной программы
01 000014 6000 0006
02 000038 2000 0003
будет получена распечатка вида:
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000014 03 * 000015 46 * 000016 89 * 000017 CC
000018 00 * 000019 00 * 000019 00 * 00001A 00
000038 05 * 000039 FC * 00003A F3 * 00003B C6
00003C 31 * 00003D D8 * 00003E CF * 00003F C6
/ \
адрес ячейки содержимое ячейки
ПОДПРОГРАММА Z_RDU:
Z_RDU:
RDU:=PU[WR]; WR:=WR+1;
RETURN;
Загружает регистр РДУ очередным значением из РU. Используется при операции "чтение".
ПОДПРОГРАММА ZAGR:
ZAGR:
READ " ВВЕДИТЕ НОМЕР ВАРИАНТА ",WN;
ADDR:=200+WN*16;
WR:=0; W7:=WN*7; WF:=0;
OP[ADDR]:=2; OP[ADDR+8]:=2;
IF WN[0..0]=1 THEN OP[ADDR]:=1;
IF WN[0..0]=0 THEN OP[ADDR+8]:=WN[1..1];
OP[ADDR+7]:=7-W7[0..1]; OP[ADDR+15]:=2+W7[0..1];
IF OP[ADDR+8]=0 THEN OP[ADDR+4]:=160;
IF OP[ADDR+8]<>0 THEN OP[ADDR+4]:=96;
OP[ADDR+12]:=32;
OP[(ADDR+3),2..4]:=W7[0..2]; OP[(ADDR+3),5..6]:=WN[2..3];
OP[ADDR+11]:=OP[ADDR+3]+24+4*WN[0..1];
FOR WI:=0 TO 1;
WJ:=ADDR+8*WI;
IF OP[WJ]=1 THEN WF:=WF+OP[WJ+7];
IF OP[WJ]<>1 THEN GOSUB Z_OP;
NEXT;
WRITELN "ВАРИАНТ НОМЕР ",$D3 WN;
WRITELN "АДРЕС ПЕРВОЙ КАН. КОМАНДЫ ",$H6 ADDR;
WRITELN "КАНАЛЬНАЯ ПРОГРАММА: ";
FOR WI:=0 TO 1;
WRITE " ",$H2 OP[ADDR+WI*8]," ",$H2 OP[ADDR+1+WI*8];
WRITE $H2 OP[ADDR+2+WI*8],$H2 OP[ADDR+3+WI*8]," ";
WRITE $H2 OP[ADDR+4+WI*8],$H2 OP[ADDR+5+WI*8]," ";
WRITELN $H2 OP[ADDR+6+WI*8],$H2 OP[ADDR+7+WI*8];
NEXT;
GOSUB W_OP;
IF WF=0 THEN GOTO WM1;
WRITELN "ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:";
FOR WI:=0 TO (WF-1);
PU[WI]:=3+WI*WN*17;
WRITE " ",$H2 PU[WI];
NEXT;
WM1:
WRITELN;
WRITELN "************************************************";
RETURN;
Z_OP:
FOR WK:=0 TO 7;
OP[OP[WJ+3]+WK]:=5+WK*WN*13+WJ;
NEXT;
RETURN;
Формирует исходные данные для моделирования по задаваемому с клавиатуры номеру варианта WN. Изучение работы данной подпрограммы для студентов не требуется! Подпрограмма формирует канальную программу; адрес первой канальной команды ADDR, начиная с которого загружает канальную программу в ОП; числа, считываемые с ВУ (если есть операция чтения); начальную загрузку данных в ОП (для записи на ВУ) и производит распечатку всех исходных данных в виде:
ВАРИАНТ НОМЕР 19
АДРЕС ПЕРВОЙ КАН. КОМАНДЫ 0001F8
КАНАЛЬНАЯ ПРОГРАММА:
01 000014 6000 0006
02 000038 2000 0003
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000014 00 * 000015 00 * 000016 00 * 000017 00
000018 00 * 000019 00 * 00001A 00 * 00001B 00
000038 05 * 000039 FC * 00003A F3 * 00003B EA
00003C E1 * 00003D D8 * 00003C CF * 00003F C6
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 46 89 CC 0F 52
Пример результатов моделирования работы селекторного канала
Рассмотрим результат моделирования селекторного канала в соответствии с заданием для варианта N19. Распечатка результатов моделирования имеет вид:
ВАРИАНТ НОМЕР 19
АДРЕС ПЕРВОЙ КАН. КОМАНДЫ 0001F8
КАНАЛЬНАЯ ПРОГРАММА:
01 000014 6000 0006
02 000038 2000 0003
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000014 00 * 000015 00 * 000016 00 * 000017 00 *
000018 00 * 000019 00 * 00001A 00 * 00001B 00 *
000038 05 * 000039 FC * 00003A F3 * 00003B EA *
00003C E1 * 00003D D8 * 00003E CF * 00003F C6 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 46 89 CC 0F 52
**************************************************
RAKK=0001F8
РКК СЧ.БАЙТ РДК РДУ РАКК
01 000014 6000 0006 0 00 00 00 00 00 000200
РKK СЧ.БАЙТ РДК РДУ РАКК
01 000015 6000 0005 1 03 00 00 00 03 000200
РKK СЧ.БАЙТ РДК РДУ РАКК
01 000016 6000 0004 2 03 46 00 00 46 000200
РKK СЧ.БАЙТ РДК РДУ РАКК
01 000017 6000 0003 3 03 46 89 00 89 000200
РKK СЧ.БАЙТ РДК РДУ РАКК
01 000018 6000 0002 0 03 46 89 CC CC 000200
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000014 03 * 000015 46 * 000016 89 * 000017 CC *
000018 00 * 000019 00 * 00001A 00 * 00001B 00 *
000038 05 * 000039 FC * 00003A F3 * 00003B EA *
00003C E1 * 00003D D8 * 00003E CF * 00003F C6 *
РKK СЧ.БАЙТ РДК РДУ РАКК
01 000019 6000 0001 1 0F 46 89 CC 0F 000200
РKK СЧ.БАЙТ РДК РДУ РАКК
01 00001A 6000 0000 2 0F 52 89 CC 52 000200
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000014 03 * 000015 46 * 000016 89 * 000017 CC *
000018 0F * 000019 52 * 00001A 00 * 00001B 00 *
000038 05 * 000039 FC * 00003A F3 * 00003B EA *
00003C E1 * 00003D D8 * 00003E CF * 00003F C6 *
РKK СЧ.БАЙТ РДК РДУ РАКК
02 000038 2000 0003 0 05 FC F3 EA 52 000208
РКК СЧ.БАЙТ РДК РДУ РАКК
02 000039 2000 0002 1 05 FC F3 EA 05 000208
РKK СЧ.БАЙТ РДК РДУ РАКК
02 00003A 2000 0001 2 05 FC F3 EA FC 000208
РKK СЧ.БАЙТ РДК РДУ РАКК
02 00003B 2000 0000 3 05 FC F3 EA F3 000208
Данная канальная программа состоит из 2-х канальных команд. Первая из них хранится в ОП, начиная с адреса 0001F8, а второе - с 000200 (определяется как 0001F8+8, т.к. длина одной команды равна 8 байт).
В начале в РАКК помещается адрес первой канальной команды, по которому из ОП выбирается первая канальная команда и помещается на РКК. Т.к. ширина выборки ОП равна 4, то канальная команда выбирается из ОП за 2 обращения. После каждого обращения в ОП при выборке канальной команды РАКК увеличивается на 4.
После выборки команды из ОП анализируется ее поле кода операции (РКК.КОП). Первая команда оказалась командой чтения, поэтому с ВУ (РДУ) начинается побайтно считываться информация на РДК. При передаче каждого байта на РДК значение СБ и РКК.ДЛМ увеличивается на 1, а РКК.ДЛМ - уменьшается на 1. После передачи 4-х байт информации СБ стал равен 0, что означает, что РДК полностью заполнен. При этом на регистр РАП помещается содержимое поля РКК.АДР и в соответствии со значением его старшей части происходит перепись полученной информации из РДК через БР в ОП. Затем в РДК начинает поступать следующая порция информации. После передачи очередных 2-х байт из ВУ РКК.ДЛМ стало равным 0, что означает, что массив информации из ВУ полностью передан. Поэтому на РАП помещается содержимое поля РКК.АДР и в соответствии со значением его старшей части происходит перепись содержимого РДК в ОП (через БР ), при этом значение СБ указывает, сколько байт передается в ОП (сколько байт на РЧП нужно изменить). После записи информации в ОП СБ обнуляется.
Затем анализируется поле признаков РКК.ПРЗ - в данном случае признак "цепочка команд", поэтому выбирается из ОП и помещается на РКК следующая канальная команда и при этом поле РКК.КОП изменяется. Вторая канальная команда оказалась командой записи, поэтому в РАП загружается значение РКК.АДР и из ОП на РДК через БР поступает порция информации, равная ширине выборки ОП. Затем начинается побайтное считывание информации с РДК на ВУ (РДУ). При передаче каждого байта, как и при операции "чтение", увеличивается на 1 значение СБ и РКК.АДР и уменьшается. на 1 значение РКК.ДЛМ. После передачи 3-х байт с РДК на РДУ, РКК.ДЛМ стало равно 0. Это означает, что весь массив информации записан на ВУ. При анализе поля признаков РКК.ПРЗ выясняется, что данная канальная команда была последней. На этом моделирование завершается.
Содержание отчета
-
Формулировка задания.
-
Структурная схема селекторного канала.
-
Структурная схема алгоритма моделирования селекторного канала.
-
Программа на языке MCL, моделирующая функционирование селекторного канала.
-
Результаты выполнения программы в виде распечатки содержимого поля для вывода
текстовой информации и скриншота в момент завершения выполнения программы.
Задание к лабораторной работе
Промоделировать работу селекторного канала при выполнении канальной программы в соответствии с вариантом задания. В процессе моделирования распечатать содержимое регистров канала и ячеек памяти в моменты их изменения.
ВАРИАНТ НОМЕР 1
АДРЕС ПЕРВОЙ КК 0000D8
КАНАЛЬНАЯ ПРОГРАММА:
01 00001C 6000 0004
02 000038 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
00001C 00 * 00001D 00 * 00001E 00 * 00001F 00 *
000020 00 * 000021 00 * 000022 00 * 000023 00 *
000038 E5 * 000039 F2 * 00003A FF * 00003B 0C *
00003C 19 * 00003D 26 * 00003E 33 * 00003F 40 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 14 25 36
-------------------------------------------------
ВАРИАНТ НОМЕР 2
АДРЕС ПЕРВОЙ КК 0000E8
КАНАЛЬНАЯ ПРОГРАММА:
02 000018 6000 0005
01 000038 2000 0004
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000018 ED * 000019 07 * 00001A 21 * 00001B 3B *
00001C 55 * 00001D 6F * 00001E 89 * 00001F A3 *
000038 00 * 000039 00 * 00003A 00 * 00003B 00 *
00003C 00 * 00003D 00 * 00003E 00 * 00003F 00 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 25 47 69
-------------------------------------------------
ВАРИАНТ НОМЕР 3
АДРЕС ПЕРВОЙ КК 0000F8
КАНАЛЬНАЯ ПРОГРАММА:
01 000014 6000 0006
02 000038 2000 0003
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000014 00 * 000015 00 * 000016 00 * 000017 00 *
000018 00 * 000019 00 * 00001A 00 * 00001B 00 *
000038 05 * 000039 2C * 00003A 53 * 00003B 7A *
00003C A1 * 00003D C8 * 00003E EF * 00003F 16 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 36 69 9C CF 02
-------------------------------------------------
ВАРИАНТ НОМЕР 4
АДРЕС ПЕРВОЙ КК 000108
КАНАЛЬНАЯ ПРОГРАММА:
02 000030 A000 0007
00 000048 2000 0002
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000030 0D * 000031 41 * 000032 75 * 000033 A9 *
000034 DD * 000035 11 * 000036 45 * 000037 79 *
000048 15 * 000049 49 * 00004A 7D * 00004B B1 *
00004C E5 * 00004D 19 * 00004E 4D * 00004F 81 *
-------------------------------------------------
ВАРИАНТ НОМЕР 5
АДРЕС ПЕРВОЙ КК 000118
КАНАЛЬНАЯ ПРОГРАММА:
01 00002C 6000 0004
02 000048 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
00002C 00 * 00002D 00 * 00002E 00 * 00002F 00 *
000030 00 * 000031 00 * 000032 00 * 000033 00 *
000048 25 * 000049 66 * 00004A A7 * 00004B E8 *
00004C 29 * 00004D 6A * 00004E AB * 00004F EC *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 58 AD 02
-------------------------------------------------
ВАРИАНТ НОМЕР 6
АДРЕС ПЕРВОЙ КК 000128
КАНАЛЬНАЯ ПРОГРАММА:
02 000028 6000 0005
01 000048 2000 0004
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000028 2D * 000029 7B * 00002A C9 * 00002B 17 *
00002C 65 * 00002D B3 * 00002E 01 * 00002F 4F *
000048 00 * 000049 00 * 00004A 00 * 00004B 00 *
00004C 00 * 00004D 00 * 00004E 00 * 00004F 00 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 69 CF 35
-------------------------------------------------
ВАРИАНТ НОМЕР 7
АДРЕС ПЕРВОЙ КК 000138
КАНАЛЬНАЯ ПРОГРАММА:
01 000024 6000 0006
02 000048 2000 0003
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
000048 45 * 000049 A0 * 00004A FB * 00004B 56 *
00004C B1 * 00004D 0C * 00004E 67 * 00004F C2 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 7A F1 68 DF 56
-------------------------------------------------
ВАРИАНТ НОМЕР 8
АДРЕС ПЕРВОЙ КК 000148
КАНАЛЬНАЯ ПРОГРАММА:
02 000040 A000 0007
00 000058 2000 0002
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000040 4D * 000041 B5 * 000042 1D * 000043 85 *
000044 ED * 000045 55 * 000046 BD * 000047 25 *
000058 55 * 000059 BD * 00005A 25 * 00005B 8D *
00005C F5 * 00005D 5D * 00005E C5 * 00005F 2D *
-------------------------------------------------
ВАРИАНТ НОМЕР 9
АДРЕС ПЕРВОЙ КК 000158
КАНАЛЬНАЯ ПРОГРАММА:
01 00005C 6000 0004
02 000078 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
00005C 00 * 00005D 00 * 00005E 00 * 00005F 00 *
000060 00 * 000061 00 * 000062 00 * 000063 00 *
000078 65 * 000079 DA * 00007A 4F * 00007B C4 *
00007C 39 * 00007D AE * 00007E 23 * 00007F 98 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 9C 35 CE
-------------------------------------------------
ВАРИАНТ НОМЕР 10
АДРЕС ПЕРВОЙ КК 000168
КАНАЛЬНАЯ ПРОГРАММА:
02 000058 6000 0005
01 000078 2000 0004
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000058 6D * 000059 EF * 00005A 71 * 00005B F3 *
00005C 75 * 00005D F7 * 00005E 79 * 00005F FB *
000078 00 * 000079 00 * 00007A 00 * 00007B 00 *
00007C 00 * 00007D 00 * 00007E 00 * 00007F 00 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 AD 57 01
-------------------------------------------------
ВАРИАНТ НОМЕР 11
АДРЕС ПЕРВОЙ КК 000178
КАНАЛЬНАЯ ПРОГРАММА:
01 000054 6000 0006
02 000078 2000 0003
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000054 00 * 000055 00 * 000056 00 * 000057 00 *
000058 00 * 000059 00 * 00005A 00 * 00005B 00 *
000078 85 * 000079 14 * 00007A A3 * 00007B 32 *
00007C C1 * 00007D 50 * 00007E DF * 00007F 6E *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 BE 79 34 EF AA
-------------------------------------------------
ВАРИАНТ НОМЕР 12
АДРЕС ПЕРВОЙ КК 000188
КАНАЛЬНАЯ ПРОГРАММА:
02 000070 A000 0007
00 000088 2000 0002
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000070 8D * 000071 29 * 000072 C5 * 000073 61 *
000074 FD * 000075 99 * 000076 35 * 000077 D1 *
000088 95 * 000089 31 * 00008A CD * 00008B 69 *
00008C 05 * 00008D A1 * 00008E 3D * 00008F D9 *
-------------------------------------------------
ВАРИАНТ НОМЕР 13
АДРЕС ПЕРВОЙ КК 000198
КАНАЛЬНАЯ ПРОГРАММА:
01 00006C 6000 0004
02 000088 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
00006C 00 * 00006D 00 * 00006E 00 * 00006F 00 *
000070 00 * 000071 00 * 000072 00 * 000073 00 *
000088 A5 * 000089 4E * 00008A F7 * 00008B A0 *
00008C 49 * 00008D F2 * 00008E 9B * 00008F 44 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 E0 BD 9A
-------------------------------------------------
ВАРИАНТ НОМЕР 14
АДРЕС ПЕРВОЙ КК 0001A8
КАНАЛЬНАЯ ПРОГРАММА:
02 000068 6000 0005
01 000088 2000 0004
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000068 AD * 000069 63 * 00006A 19 * 00006B CF *
00006C 85 * 00006D 3B * 00006E F1 * 00006F A7 *
000088 00 * 000089 00 * 00008A 00 * 00008B 00 *
00008C 00 * 00008D 00 * 00008E 00 * 00008F 00 *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
03 F1 DF CD
-------------------------------------------------
ВАРИАНТ НОМЕР 15
АДРЕС ПЕРВОЙ КК 0001B8
КАНАЛЬНАЯ ПРОГРАММА:
01 000064 6000 0006
02 000088 2000 0003
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000064 00 * 000065 00 * 000066 00 * 000067 00 *
000068 00 * 000069 00 * 00006A 00 * 00006B 00 *
000088 C5 * 000089 88 * 00008A 4B * 00008B 0E *
00008C D1 * 00008D 94 * 00008E 57 * 00008F 1A *
ЧИСЛА, СЧИТЫВАЕМЫЕ С ВУ:
Лабораторная работа № 7. Моделирование функционирования мультиплексного канала
Содержание
Цель работы__________________________________________________________________________ 110
Функционирование мультиплексного канала_____________________________________________110
Структурная схема мультиплексного канала_____________________________________________112
Описание подпрограмм_________________________________________________________________115
Пример результатов моделирования работы мультиплексного канала______________________ 120
Содержание отчета_____________________________________________________________________123
Задание к лабораторной работе__________________________________________________________123
Цель работы
изучение функционирования мультиплексного канала при одновременном обслуживании нескольких ВУ.
Функционирование мультиплексного канала
Мультиплексный канал предназначен для одновременного обслуживания нескольких ВУ, каждое из которых работает в соответствии с отдельной канальной программой. Структурная схема мультиплексного канала приведена на рис. 46. Графическое изображение окна программы при выборе лабораторной работы «Мультиплексный канал (процессор ввода-вывода)» приведено на рис. 47.
ЗС
РАП (RAP)
РЧП (RCHP)
ЗС
РАП (RAP)
РЧП (RCHP)
ОП (OP)
Np
РАKK (RAKK)
РKK (RKK)
РKK (RK)
КОММУТАТОР
ДШ
СБ (SB)
КАНАЛ
ША
УУК
Pa
РДУ (RDU)
ВУ
РДУ (RDU)
ВУ
РДУ (RDU)
ВУ
Рис. 46. Структурная схема мультиплексного канала
Рис. 47. Окно программы при выборе лабораторной работы «Мультиплексный канал (процессор ввода-вывода)»
Аппаратные средства мультиплексного канала можно разделить на две части: средства, предназначенные для обслуживания отдельных ВУ, и средства, используемые всеми ВУ. Средства, используемые для обслуживания одного ВУ, называются подканалом, который представляет собой запоминающее устройство. Будем считать, что память подканалов реализована как часть ОП. Средства, используемые всеми ВУ - регистры канала РКК, РДК, СБ и РАКК. Они аналогичны соответствующим регистрам селекторного канала (примемте же обозначения регистров и их полей). Как и при моделировании селекторного канала, примем, что ширина выборки ОП - 4 байта, а ширина информационного тракта ВУ - 1 байт. Выполнение операции ввода/вывода в мультиплексном канале включает в себя процедуру начальной выборки и процедуру обслуживания запросов ВУ.
Процедура начальной выборки производится за один сеанс связи, по инициативе ЦП и связана с заданием работы ВУ. ЦП на регистр РАКК передает адрес первой канальной команды, в соответствии с которым на РКК из памяти выбирается канальная команда. Содержимое РАКК увеличивается на 8 (в ЕС ЭВМ длина канальной команды - 8 байт). В СБ устанавливается номер байта, в который (из которого) в РДК будет передан первый байт информации. После этого в память подканала, соответствующего данному ВУ, записывается содержимое РКК, РДК, СБ и РАКК. На этом процедура начальной выборки заканчивается.
Процедура обслуживания запросов ВУ производится по инициативе ВУ и, как правило, занимает несколько сеансов связи. Запрос от ВУ фиксируется на регистре внешнего устройства PВУ, и из соответствующего подканала выбираются параметры операции и помещаются на регистры канала PКК, PДК, CБ и PАКК. В соответствии с кодом операции PКК.КОП из ВУ (или на ВУ) пересылается блок информации, равный по размеру ширине информационного тракта ВУ (1 байт). Номер байта на PДК, из которого выбирается или принимается информация, определяется по СБ. После пересылки информации содержимое СБ и PКК.АДP увеличивается на 1,а значение PKK.ДЛМ уменьшается на 1.В том случае, если СБ и PKK.ДЛМ не равны 0,то происходит запись измененных параметров из регистров в память соответствующего подканала и сеанс связи с ВУ заканчивается. Если PKK.ДЛМ равно 0, то анализируется поле признаков PKK.ПPЗ и в соответствии со значением PАКК из ОП выбирается следующая канальная команда или завершается моделирование, если обнаружен признак "конец канальной команды".
Перед выборкой новой канальной команды в случае операции "чтение" нужно переписать содержимое PДК в ОП. Если вновь выбранная команда окажется командой записи, то в этом же сеансе связи в соответствии с PКК.АДP выбирается блок информации из ОП и помещается на РДК. Если СБ=0 при неравенстве 0 PKK.ДЛМ, то в случае операции "чтение" осуществляется запись информации из РДК в ОП, а в случае операции "запись" - выборка нового блока информации из ОП в соответствии с PKK.АДP, который помещается на PKK. В любом случае сеанс связи с ВУ заканчивается занесением содержимого регистров PKK, PДК, СБ и PAKK в соответствующий подканал. При выполнении л/p моделируется только процесс обслуживания запросов ВУ. Структурная схема алгоритма моделирования мультиплексного канала приведена на рис. 48.
Структурная схема мультиплексного канала
Рис. 48. Структурная схема алгоритма моделирования работы мультиплексного канала
Файл MK.MCL.
В файле MK.MCL содержатся подпрограммы работы с памятью, передачи информации из РДК на ВУ (и наоборот), распечатки содержимого подканалов и рабочих ячеек ОП и подпрограмма ввода исходных в соответствии с номером варианта. Эти подпрограммы рекомендуется использовать для моделирования работы мультиплексного канала. В них приняты следующие обозначения переменных и регистров (в квадратных скобках размерность регистров):
WN - номер варианта
RAKK[24] - регистр адреса канальной команды (РАКК)
RAP[24] - регистр адреса памяти (РАП)
RCHP[32] - регистр числа памяти (РЧП)
BR[32] - буферный регистр данных (БР)
RDK[32] - регистр данных канала (РДК)
RDU[8] - регистр данных внешнего устройства (РДУ)
SB[2] - счетчик байт (СБ)
RVU[8] - регистр внешнего устройства (PВУ)
Регистр канальной команды (РКК) представлен, как и в случае моделирования селекторного канала, в виде двух структур:
RKK1[32] с полями KOP[8] и ADR[24] - старшая часть РКК
RKK2[32] с полями PRZ[16] и DLM[16] - младшая часть РКК
Оперативная память (ОП) описана как MEM OP[1024][8] - линейная память из 1024 ячеек по 1 байту каждая. Подпрограммы работы с памятью позволяют работать с ней как с памятью с шириной выборки - 4 байта.
MEM PU1[6][8] и MEM PU3[6][8] - память для хранения массива чисел, считываемых с 1-го и 3-го ВУ соответственно (заполняется, когда есть операция "чтение").
MEM ZAPR[9][8] -память для хранения последовательности запросов от ВУ к мультиплексному каналу.
Все числа выводятся в 16-ричной системе счисления. Остальные переменные и регистры, начинающиеся с буквы W, используются как рабочие переменные внутри подпрограмм и физического смысла не имеют, поэтому использовать их в основной программе не рекомендуется.
Описание подпрограмм
ПОДПРОГРАММЫ K_U_K, ОUT_OP, IN_OP и K_OP:
Те же, что и для моделирования селекторного канала (см. описание файла SK.MCL).
ПОДПРОГРАММА W_OP:
W_OP:
WRITELN " СОДЕРЖИМОЕ ЯЧЕЕК ОП:";
WX:=0;
FOR WI:=0 TO 4;
WX:=WX+WI*20;
FOR WY:=0 TO 1;
FOR WJ:=0 TO 3;
WU:=16+WX+WY*4+WJ;
WRITE $H6 WU," ",$H2 OP[WU]," * ";
NEXT;
WRITELN;
NEXT;NEXT;
RETURN;
Распечатывает содержимое ячеек ОП. Распечатываются 40 ячеек - по 8 ячеек, начиная с адресов, указанных в поле адреса каждой канальной команды (т.е. с шестнадцатеричных адресов 10, 24, 4C, 88, D8). В одной строке распечатываются 4 ячейки (в соответствии с шириной выборки). Например:
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0C * 000011 98 * 000012 24 * 000013 B0
000014 03 * 000015 46 * 000016 89 * 000017 CC
000024 03 * 000025 7A * 000026 F1 * 000027 68
000028 00 * 000029 00 * 00002A 00 * 00002B 00
00004C 31 * 00004D D8 * 00004E CF * 00004F C6
000050 4D * 000051 D9 * 000052 65 * 000052 F2
000088 2E * 000089 BA * 00008A 46 * 00008B D2
00008C 54 * 00008D F6 * 00008E 30 * 00008F 14
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00
/ \
адрес ячейки содержимое ячейки
ПОДПРОГРАММА ACT:
ACT:
RAP:=960+(RVU-1)*16;
GOSUB OUT_OP;
RKK1:=RCHP;
RAP:=RAP+4;
GOSUB OUT_OP;
RKK2:=RCHP;
RAP:=RAP+4;
GOSUB OUT_OP;
RDK:=RCHP;
RAP:=RAP+4;
GOSUB OUT_OP;
RAKK:=RCHP[0..23];
SB:=RCHP[24..25];
RETURN;
Загружает регистры РКК,РДК,СБ и РАКК содержимым из подканала, соответствующего ВУ, запрос от которого обрабатывается.
ПОДПРОГРАММА PAS:
PAS:
RAP:=960+(RVU-1)*16;
RCHP:=RKK1;
GOSUB IN_OP;
RAP:=RAP+4;
RCHP:=RKK2;
GOSUB IN_OP;
RAP:=RAP+4;
RCHP:=RDK;
GOSUB IN_OP;
RAP:=RAP+4;
RCHP[24..31]:=SB; RCHP[0..23]:=RAKK;
GOSUB IN_OP;
RETURN;
Записывает содержимое регистров РКК, РДК, СБ и РАКК в подканал, соответствующий ВУ, запрос от которого обрабатывался в данный сеанс связи.
ПОДПРОГРАММА W_PK:
W_PK:
WRITELN " РДУ=",$H2 RDU;
WRITELN " СОДЕРЖИМОЕ ПОДКАНАЛОВ: ";
WRITELN " РКК РДК СБ РАКК ";
FOR WI:=0 TO 2;
FOR WJ:=0 TO 15;
WRITE $H2 OP[960+16*WI+WJ];
IF (WJ=0)OR(WJ=3)OR(WJ=5)OR(WJ=8)OR(WJ=9)OR(WJ=10) THEN WRITE " ";
IF (WJ=7)OR(WJ=11)OR(WJ=12)OR(WJ=15) THEN WRITE " * ";
NEXT; WRITELN; NEXT;
WRITELN "*************************************************";
RETURN;
Распечатывает содержимое регистра РДУ и подканалов. Например:
РДУ = AE
РКК РДК СБ РАКК
02 000012 A000 0005 * 0A DC AE 80 * 02 * 000328
02 00004D 6000 0002 * 1B ED BF 91 * 00 * 000338
01 0000D9 2000 0004 * 07 00 00 00 * 01 * 000348
ПОДПРОГРАММА Z_RDU:
Z_RDU:
IF ZAPR[I]=3 THEN GOTO LBL3;
RDU:=PU1[WK]; WK:=WK+1;
RETURN;
LBL3:
RDU:=PU3[WL]; WL:=WL+1;
RETURN;
Загружает регистр РДУ очередным значением из RU1 или RU3 в зависимости от того, какое ВУ (1-e или 3-e) обслуживается в данном сеансе связи. Используется при операции "чтение".
ПОДПРОГРАММА ZAGR2:
ZAGR2:
READ " ВВЕДИТЕ НОМЕР ВАРИАНТА ",WN;
WRITELN "**************************************************";
WRITELN "ИСХОДНЫЕ ДАННЫЕ:";
WRITELN "ВАРИАНТ НОМЕР ",$D3 WN;
RAP:=800; RCHP:=0H0200010; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H60000007; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H01000024; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H20000006; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H0200004C; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0HA0000002; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H00000088; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H20000004; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H010000D8; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H20000005; GOSUB IN_OP;
WRITELN "КАНАЛЬНЫЕ ПРОГРАММЫ: ";
WRITELN " ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:";
WRITELN " 02 000010 6000 0007 ";
WRITELN " 01 000024 2000 0006 ";
WRITELN " ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:";
WRITELN " 02 00004C A000 0002 ";
WRITELN " 00 000088 2000 0004 ";
WRITELN " ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340: ";
WRITELN " 01 0000D8 2000 0005 ";
{ ЗАГРУЗКА ПОДКАНАЛОВ }
RAP:=960; RCHP:=0H02000012; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H60000005; GOSUB IN_OP;
RAP:=RAP+8; RCHP:=0H02000328; GOSUB IN_OP;
RAP:=976; RCHP:=0H0200004C; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0HA0000002; GOSUB IN_OP;
RAP:=RAP+8; RCHP:=0H00000338; GOSUB IN_OP;
RAP:=992; RCHP:=0H010000D9; GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H20000004; GOSUB IN_OP;
RAP:=RAP+8; RCHP:=0H01000348; GOSUB IN_OP;
IF WN<6 THEN GOTO LBL4;
OP[963]:=19; OP[967]:=4; OP[972]:=3; OP[979]:=137;
OP[980]:=32; OP[983]:=3; OP[988]:=1; OP[991]:=64;
OP[995]:=218; OP[999]:=3; OP[1004]:=2;
IF WN>10 THEN GOTO LBL4;
OP[960]:=1; OP[963]:=39; OP[964]:=32; OP[967]:=3;
OP[975]:=48; OP[979]:=77; OP[980]:=160; OP[983]:=1;
OP[991]:=56; OP[995]:=216; OP[999]:=5; OP[1004]:=0;
LBL4:
{ ЗАГРУЗКА ПАМЯТИ ДАННЫМИ }
FOR WI:=0 TO 2;
FOR WJ:=0 TO 7;
OP[16+WI*60+WJ]:=5+WJ*WN*93+WI*17+WJ+WN;
OP[36+WI*90+WJ]:=0;
NEXT; NEXT;
GOSUB W_OP;
{ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ РДК }
RAP:=OP[963]; GOSUB OUT_OP; RAP:=968; GOSUB IN_OP;
RAP:=OP[979]; GOSUB OUT_OP; RAP:=984; GOSUB IN_OP;
{ ФОРМИРОВАНИЕ СПИСКА ЗАПРОСОВ }
RAP:=1008; RCHP:=0H6D9B6D9B;
GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H799E799E;
GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H6DE76DE7;
GOSUB IN_OP;
RAP:=RAP+4; RCHP:=0H79B779B7;
GOSUB IN_OP;
RAP:=1008+WN[0..1]*4;
GOSUB OUT_OP;
WJ:=31-WN[2..3]*4;
WRITE "ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ : ";
FOR WI:=1 TO 8;
ZAPR[WI]:=RCHP[(WJ-1)..WJ];
WJ:=WJ-2;
WRITE $D2 ZAPR[WI];
NEXT;
WRITELN;
{ ЧИСЛА ДЛЯ ВВОДА С ВУ }
WK:=0; WL:=0;
FOR WI:=0 TO 5;
PU1[WI]:=3+WI*WN*17;
PU3[WI]:=7+WI*WN*19;
IF (OP[963]-WI)<=36 THEN GOTO LBL1;
OP[968+WK]:=PU1[WI]; WK:=WK+1;
LBL1:
IF (OP[995]-WI)<=216 THEN GOTO LBL2;
OP[1000+WL]:=PU3[WI]; WL:=WL+1;
LBL2:
NEXT;
WRITE " ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: ";
FOR WI:=WK TO 5;
WRITE $H2 PU1[WI]," ";
NEXT; WRITELN;
WRITE " ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: ";
FOR WI:=WL TO 4;
WRITE $H2 PU3[WI]," ";
NEXT; WRITELN;
GOSUB W_PK;
RETURN;
Формирует исходные данные для моделирования по задаваемому с клавиатуры номеру варианта WN. Изучение работы данной подпрограммы для студентов не требуется! Подпрограмма формирует канальную программу; содержимое подканалов на момент начала моделирования; последовательность запросов ВУ; числа, считываемые с ВУ (для операции "чтение"); начальную загрузку данных в ОП (для записи на ВУ) и производит распечатку всех исходных данных в виде:
**************************************************
ИСЧОДНЫЕ ДАННЫЕ:
ВАРИАНТ НОМЕР 5
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 A000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C 6000 0002
00 00008820000004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0A * 000011 DC * 000012 AE * 000013 80
000014 52 * 000015 24 * 000016 F6 * 000017 C8
000024 00 * 000025 00 * 000026 00 * 000027 00
000028 00 * 000029 00 * 00002A 00 * 00002B 00
00004C 1B * 00004D ED * 00004E BF * 00004F 91
000050 63 * 000051 35 * 000052 07 * 000053 D9
000088 2C * 000089 FE * 00008A D0 * 00008B A2
00008C 74 * 00008D 46 * 00008C 18 * 00008F EA
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 2 1 2 1 3 2 1 3
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 58 AD 02 57 AC
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 66 C5 24 83
PДУ=00
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
PКК PДК СБ PAKK
02 000012 A000 0005 * 0A DC AE 80 * 02 * 000328 *
02 00004C 6000 0002 * 1B ED BF 91 * 00 * 000338 *
01 0000D9 2000 0004 * 07 00 00 00 * 01 * 000348 *
**************************************************
Пример результатов моделирования работы мультиплексного канала
Рассмотрим результат моделирования мультиплексного канала в соответствии с заданием для варианта N19. Распечатка результатов моделирования имеет вид:
**************************************************
ИСХОДНЫЕ ДАННЫЕ:
ВАРИАНТ НОМЕР 19
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 18 * 000011 00 * 000012 E8 * 000013 D0 *
000014 B8 * 000015 A0 * 000016 88 * 000017 70 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 29 * 00004D 11 * 00004E F9 * 00004F E1 *
000050 C9 * 000051 B1 * 000052 99 * 000053 81 *
000088 3A * 000089 22 * 00008A 0A * 00008B F2 *
00008C DA * 00008D C2 * 00008E AA * 00008F 92 *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 1 3 2 1 2 3 1 3
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 46 89 CC 0F 52
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: D9 42 AB
РДУ=00
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000013 6000 0004 * 18 00 E8 D0 * 03 * 000328 *
02 000089 2000 0003 * 3A 22 0A F2 * 01 * 000340 *
01 0000DA 2000 0003 * 07 70 00 00 * 02 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 1
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 1
РДУ=D0
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000014 6000 0003 * B8 A0 88 70 * 00 * 000328 *
02 000089 2000 0003 * 3A 22 0A F2 * 01 * 000340 *
01 0000DA 2000 0003 * 07 70 00 00 * 02 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 2
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 3
РДУ=D9
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000014 6000 0003 * B8 A0 88 70 * 00 * 000328 *
02 000089 2000 0003 * 3A 22 0A F2 * 01 * 000340 *
01 0000DB 2000 0002 * 07 70 D9 00 * 03 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 3
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 2
РДУ=22
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000014 6000 0003 * B8 A0 88 70 * 00 * 000328 *
02 00008A 2000 0002 * 3A 22 0A F2 * 02 * 000340 *
01 0000DB 2000 0002 * 07 70 D9 00 * 03 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 4
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 1
РДУ=B8
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000015 6000 0002 * B8 A0 88 70 * 01 * 000328 *
02 00008A 2000 0002 * 3A 22 0A F2 * 02 * 000340 *
01 0000DB 2000 0002 * 07 70 D9 00 * 03 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 5
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 2
РДУ=0A
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000015 6000 0002 * B8 A0 88 70 * 01 * 000328 *
02 00008B 2000 0001 * 3A 22 0A F2 * 03 * 000340 *
01 0000DB 2000 0002 * 07 70 D9 00 * 03 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 6
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 3
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 18 * 000011 00 * 000012 E8 * 000013 D0 *
000014 B8 * 000015 A0 * 000016 88 * 000017 70 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 29 * 00004D 11 * 00004E F9 * 00004F E1 *
000050 C9 * 000051 B1 * 000052 99 * 000053 81 *
000088 3A * 000089 22 * 00008A 0A * 00008B F2 *
00008C DA * 00008D C2 * 00008E AA * 00008F 92 *
0000D8 07 * 0000D9 70 * 0000DA D9 * 0000DB 42 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
РДУ=42
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000015 6000 0002 * B8 A0 88 70 * 01 * 000328 *
02 00008B 2000 0001 * 3A 22 0A F2 * 03 * 000340 *
01 0000DC 2000 0001 * 07 70 D9 42 * 00 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 7
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 1
РДУ=A0
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000016 6000 0001 * B8 A0 88 70 * 02 * 000328 *
02 00008B 2000 0001 * 3A 22 0A F2 * 03 * 000340 *
01 0000DC 2000 0001 * 07 70 D9 42 * 00 * 000348 *
*************************************************
НОМЕР ОБСЛУЖИВАЕМОГО ЗАПРОСА 8
НОМЕР ОБСЛУЖИВАЕМОГО УСТРОЙСТВА 3
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 18 * 000011 00 * 000012 E8 * 000013 D0 *
000014 B8 * 000015 A0 * 000016 88 * 000017 70 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 29 * 00004D 11 * 00004E F9 * 00004F E1 *
000050 C9 * 000051 B1 * 000052 99 * 000053 81 *
000088 3A * 000089 22 * 00008A 0A * 00008B F2 *
00008C DA * 00008D C2 * 00008E AA * 00008F 92 *
0000D8 07 * 0000D9 70 * 0000DA D9 * 0000DB 42 *
0000DC AB * 0000DD 00 * 0000DE 00 * 0000DF 00 *
РДУ=AB
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000016 6000 0001 * B8 A0 88 70 * 02 * 000328 *
02 00008B 2000 0001 * 3A 22 0A F2 * 03 * 000340 *
00 000000 0000 0000 * AB 70 D9 42 * 00 * 000000 *
*************************************************
Имеются три канальные программы для 3-хВУ, обслуживаемых одним мультиплексным каналом. На момент начала моделирования уже осуществлена процедура начальной выборки - образованы для всех ВУ соответствующие подканалы и уже обработано каналом несколько запросов от ВУ. В лабораторной работе моделируется обслуживание каналом 8-ми запросов от ВУ (8 сеансов связи) в соответствии с заданной последовательностью запросов.
В 1-ом сеансе связи 1-е ВУ выставило запрос на связь с каналом, поэтому регистры канала PKK, PДК, СБ и PАКК загружаются содержимым подканала, соответствующего 1-му ВУ. Выполняемая операция - операция "запись", СБ=3, поэтому на PДУ передается содержимое 3-го байта PДК. Поле PKK.АДP и СБ увеличиваются на 1, а поле PKK.ДЛМ - уменьшается на 1. при этом становится СБ=0(массив PДУ полностью передан на ВУ), поэтому прежде чем записать содержимое регистров канала в память подканала, в PДУ из ОП, начиная с адреса 000014, пересылается следующий блок передаваемой на ВУ информации.
Во 2-ом сеансе связи запрос выставило 3-е ВУ. содержимое подканала, соответствующего 3-му ВУ, помещается на регистры канала. Выполняется операция "чтение" и СБ=2, поэтому информация с PДУ передается на 2-ой байт PДК. Поле PKK.АДP и СБ увеличиваются на 1,а поле PKK.ДЛМ - уменьшается на 1.Т.к. после этого ни СБ, ни поле PKK.ДЛМ не равны 0, то измененные параметры заносятся в память подканала, соответствующему данному ВУ, и сеанс связи завершается.
В 3-ем сеансе связи запрос выставляет 2-е ВУ. содержимое подканала, соответствующего 2-му ВУ, помещается на регистры канала. Выполняется операция “запись" и СБ=1,поэтому информация из 1-го байта PДК передается на PДУ 2-гоВУ. Дальнейшие действия аналогичны действиям в предыдущем сеансе связи.
В 4-ом сеансе связи запрос выставляет 1-е ВУ. Действия аналогичны действиям в 3-ем сеансе связи (содержимое 0-го байта PДК передается на PДУ 1-го ВУ).
В 5-ом сеансе связи запрос выставляет 2-е ВУ. Действия аналогичны действиям в3-ем сеансе связи (содержимое 2-го байта PДК передается на PДУ 2-го ВУ).
В 6-омсеансе связи запрос выставляет 3-е ВУ. Выполняется опеpация "чтение”, СБ=3.После пеpедачи информации с PДУ на 3-ий байт PДК СБ становится равным 0 (PДК полностью заполнен), поэтому перед записью измененных параметров в подканал содержимое PДК записывается в ячейки ОП, начиная с адреса 0000D8.
В 7-ом сеансе связи запрос выставляет 1-е ВУ. Действия аналогичны действиям в 3-ем сеансе связи (содержимое 1-го байта PДК передается на PДУ 1-го ВУ). В 8-ом сеансе связи запрос выставляет 3-еВУ. Выполняется операция "чтение", СБ=0 - передается информация с PДУ на 0-ой байт PДК. При этом PKK.ДЛМ становится равным 0, т.е. весь массив информации с 3-го ВУ в соответствии с канальной командой передан. При анализе поля признаков PKK.ПPЗ оказывается, что эта канальная команда была последней, поэтому сеанс связи заканчивается обнулением памяти подканала, соответствующего 3-му ВУ. На этом моделирование работы мультиплексного канала завершается.
Содержание отчета
-
Формулировка задания.
-
Структурная схема мультиплексного канала (составить самостоятельно).
-
Структурная схема алгоритма моделирования мультиплексного канала.
-
Программа на языке MCL, моделирующая функционирование мультиплексного канала.
-
Результаты выполнения программы в виде распечатки содержимого поля для вывода
текстовой информации и скриншота в момент завершения выполнения программы.
Задание к лабораторной работе
Промоделировать работу мультиплексного канала при обслуживании запросов от трех ВУ в соответствии с вариантом задания. В процессе моделирования распечатать содержимое подканалов и регистра PДУ после каждого сеанса связи и содержимое рабочих ячеек ОП в моменты их изменения.
ВАРИАНТ НОМЕР 1
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 06 * 000011 64 * 000012 C2 * 000013 20 *
000014 7E * 000015 DC * 000016 3A * 000017 98 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 17 * 00004D 75 * 00004E D3 * 00004F 31 *
000050 8F * 000051 ED * 000052 4B * 000053 A9 *
000088 28 * 000089 86 * 00008A E4 * 00008B 42 *
00008C A0 * 00008D FE * 00008E 5C * 00008F BA *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 1 3 2 1 2 1 3 2
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 14 25 36 47 58
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 1A 2D 40 53
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000012 6000 0005 * 06 64 C2 20 * 02 * 000328 *
02 00004C A000 0002 * 17 75 D3 31 * 00 * 000338 *
01 0000D9 2000 0004 * 07 00 00 00 * 01 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 2
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 07 * 000011 C2 * 000012 7D * 000013 38 *
000014 F3 * 000015 AE * 000016 69 * 000017 24 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 18 * 00004D D3 * 00004E 8E * 00004F 49 *
000050 04 * 000051 BF * 000052 7A * 000053 35 *
000088 29 * 000089 E4 * 00008A 9F * 00008B 5A *
00008C 15 * 00008D D0 * 00008E 8B * 00008F 46 *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 1 2 3 1 3 2 1 3
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 25 47 69 8B AD
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 2D 53 79 9F
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000012 6000 0005 * 07 C2 7D 38 * 02 * 000328 *
02 00004C A000 0002 * 18 D3 8E 49 * 00 * 000338 *
01 0000D9 2000 0004 * 07 00 00 00 * 01 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 3
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 08 * 000011 20 * 000012 38 * 000013 50 *
000014 68 * 000015 80 * 000016 98 * 000017 B0 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 19 * 00004D 31 * 00004E 49 * 00004F 61 *
000050 79 * 000051 91 * 000052 A9 * 000053 C1 *
000088 2A * 000089 42 * 00008A 5A * 00008B 72 *
00008C 8A * 00008D A2 * 00008E BA * 00008F D2 *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 1 3 2 1 2 3 1 3
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 36 69 9C CF 02
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 40 79 B2 EB
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000012 6000 0005 * 08 20 38 50 * 02 * 000328 *
02 00004C A000 0002 * 19 31 49 61 * 00 * 000338 *
01 0000D9 2000 0004 * 07 00 00 00 * 01 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 4
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 09 * 000011 7E * 000012 F3 * 000013 68 *
000014 DD * 000015 52 * 000016 C7 * 000017 3C *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 1A * 00004D 8F * 00004E 04 * 00004F 79 *
000050 EE * 000051 63 * 000052 D8 * 000053 4D *
000088 2B * 000089 A0 * 00008A 15 * 00008B 8A *
00008C FF * 00008D 74 * 00008E E9 * 00008F 5E *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 3 1 2 1 2 3 1 2
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 47 8B CF 13 57
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 53 9F EB 37
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000012 6000 0005 * 09 7E F3 68 * 02 * 000328 *
02 00004C A000 0002 * 1A 8F 04 79 * 00 * 000338 *
01 0000D9 2000 0004 * 07 00 00 00 * 01 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 5
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0A * 000011 DC * 000012 AE * 000013 80 *
000014 52 * 000015 24 * 000016 F6 * 000017 C8 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 1B * 00004D ED * 00004E BF * 00004F 91 *
000050 63 * 000051 35 * 000052 07 * 000053 D9 *
000088 2C * 000089 FE * 00008A D0 * 00008B A2 *
00008C 74 * 00008D 46 * 00008E 18 * 00008F EA *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 2 1 2 1 3 2 1 3
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 58 AD 02 57 AC
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 66 C5 24 83
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000012 6000 0005 * 0A DC AE 80 * 02 * 000328 *
02 00004C A000 0002 * 1B ED BF 91 * 00 * 000338 *
01 0000D9 2000 0004 * 07 00 00 00 * 01 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 6
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0B * 000011 3A * 000012 69 * 000013 98 *
000014 C7 * 000015 F6 * 000016 25 * 000017 54 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 1C * 00004D 4B * 00004E 7A * 00004F A9 *
000050 D8 * 000051 07 * 000052 36 * 000053 65 *
000088 2D * 000089 5C * 00008A 8B * 00008B BA *
00008C E9 * 00008D 18 * 00008E 47 * 00008F 76 *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 3 1 3 2 1 3 1 2
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 35 9B 01
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 07 79 EB 5D CF
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
01 000027 2000 0003 * 03 69 CF 00 * 03 * 000330 *
02 00004D A000 0001 * 1C 4B 7A A9 * 01 * 000338 *
01 0000D8 2000 0005 * 07 00 00 00 * 00 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 7
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0C * 000011 98 * 000012 24 * 000013 B0 *
000014 3C * 000015 C8 * 000016 54 * 000017 E0 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 1D * 00004D A9 * 00004E 35 * 00004F C1 *
000050 4D * 000051 D9 * 000052 65 * 000053 F1 *
000088 2E * 000089 BA * 00008A 46 * 00008B D2 *
00008C 5E * 00008D EA * 00008E 76 * 00008F 02 *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 2 1 2 3 1 3 1 3
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 68 DF 56
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 07 8C 11 96 1B
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
01 000027 2000 0003 * 03 7A F1 00 * 03 * 000330 *
02 00004D A000 0001 * 1D A9 35 C1 * 01 * 000338 *
01 0000D8 2000 0005 * 07 00 00 00 * 00 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 8
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0D * 000011 F6 * 000012 DF * 000013 C8 *
000014 B1 * 000015 9A * 000016 83 * 000017 6C *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 1E * 00004D 07 * 00004E F0 * 00004F D9 *
000050 C2 * 000051 AB * 000052 94 * 000053 7D *
000088 2F * 000089 18 * 00008A 01 * 00008B EA *
00008C D3 * 00008D BC * 00008E A5 * 00008F 8E *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 2 1 2 3 1 2 3 1
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 9B 23 AB
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 07 9F 37 CF 67
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
01 000027 2000 0003 * 03 8B 13 00 * 03 * 000330 *
02 00004D A000 0001 * 1E 07 F0 D9 * 01 * 000338 *
01 0000D8 2000 0005 * 07 00 00 00 * 00 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 9
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0E * 000011 54 * 000012 9A * 000013 E0 *
000014 26 * 000015 6C * 000016 B2 * 000017 F8 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 1F * 00004D 65 * 00004E AB * 00004F F1 *
000050 37 * 000051 7D * 000052 C3 * 000053 09 *
000088 30 * 000089 76 * 00008A BC * 00008B 02 *
00008C 48 * 00008D 8E * 00008E D4 * 00008F 1A *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 2 1 3 2 1 3 2 1
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: CE 67 00
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 07 B2 5D 08 B3
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
01 000027 2000 0003 * 03 9C 35 00 * 03 * 000330 *
02 00004D A000 0001 * 1F 65 AB F1 * 01 * 000338 *
01 0000D8 2000 0005 * 07 00 00 00 * 00 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 10
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 0F * 000011 B2 * 000012 55 * 000013 F8 *
000014 9B * 000015 3E * 000016 E1 * 000017 84 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 20 * 00004D C3 * 00004E 66 * 00004F 09 *
000050 AC * 000051 4F * 000052 F2 * 000053 95 *
000088 31 * 000089 D4 * 00008A 77 * 00008B 1A *
00008C BD * 00008D 60 * 00008E 03 * 00008F A6 *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 3 2 1 3 1 2 3 1
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 01 AB 55
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: 07 C5 83 41 FF
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
01 000027 2000 0003 * 03 AD 57 00 * 03 * 000330 *
02 00004D A000 0001 * 20 C3 66 09 * 01 * 000338 *
01 0000D8 2000 0005 * 07 00 00 00 * 00 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 11
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 10 * 000011 10 * 000012 10 * 000013 10 *
000014 10 * 000015 10 * 000016 10 * 000017 10 *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 21 * 00004D 21 * 00004E 21 * 00004F 21 *
000050 21 * 000051 21 * 000052 21 * 000053 21 *
000088 32 * 000089 32 * 00008A 32 * 00008B 32 *
00008C 32 * 00008D 32 * 00008E 32 * 00008F 32 *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 2 3 1 3 1 3 2 1
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 BE 79 34 EF AA
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: A9 7A 4B
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000013 6000 0004 * 10 10 10 10 * 03 * 000328 *
02 000089 2000 0003 * 32 32 32 32 * 01 * 000340 *
01 0000DA 2000 0003 * 07 D8 00 00 * 02 * 000348 *
*************************************************
ВАРИАНТ НОМЕР 12
КАНАЛЬНЫЕ ПРОГРАММЫ:
ДЛЯ 1-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000320:
02 000010 6000 0007
01 000024 2000 0006
ДЛЯ 2-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000330:
02 00004C A000 0002
00 000088 2000 0004
ДЛЯ 3-го ВУ, В ПАМЯТИ ХРАНИТСЯ С АДРЕСА 000340:
01 0000D8 2000 0005
СОДЕРЖИМОЕ ЯЧЕЕК ОП:
000010 11 * 000011 6E * 000012 CB * 000013 28 *
000014 85 * 000015 E2 * 000016 3F * 000017 9C *
000024 00 * 000025 00 * 000026 00 * 000027 00 *
000028 00 * 000029 00 * 00002A 00 * 00002B 00 *
00004C 22 * 00004D 7F * 00004E DC * 00004F 39 *
000050 96 * 000051 F3 * 000052 50 * 000053 AD *
000088 33 * 000089 90 * 00008A ED * 00008B 4A *
00008C A7 * 00008D 04 * 00008E 61 * 00008F BE *
0000D8 00 * 0000D9 00 * 0000DA 00 * 0000DB 00 *
0000DC 00 * 0000DD 00 * 0000DE 00 * 0000DF 00 *
ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАПРОСОВ: 2 3 1 2 3 1 2 1
ЧИСЛА, СЧИТЫВАЕМЫЕ С 1-го ВУ: 03 CF 9B 67 33 FF
ЧИСЛА, СЧИТЫВАЕМЫЕ С 3-го ВУ: CF B3 97
СОДЕРЖИМОЕ ПОДКАНАЛОВ:
РКК РДКСБРАКК
02 000013 6000 0004 * 11 6E CB 28 * 03 * 000328 *
02 000089 2000 0003 * 33 90 ED 4A * 01 * 000340 *
01 0000DA 2000 0003 * 07 EB 00 00 * 02 * 000348
Лабораторная работа № 8. Моделирование секторного буфера с признаковым обменом и сквозной записью
Содержание
Цель работы__________________________________________________________________________ 130
Функционирование секторного буфера___________________________________________________130
Выполнение работы____________________________________________________________________132
Описание подпрограмм_________________________________________________________________133
Пример выполнения___________________________________________________________________ 134
Содержание отчета_____________________________________________________________________138
Задание к лабораторной работе__________________________________________________________138
Цель работы
изучение функционирования блока секторного буфера с признаковым обменом или сквозной записью.
Функционирование секторного буфера
Для повышения производительности ЭВМ между "большой" памятью (оперативной, постоянной) и ЦП дополнительно используется сверхоперативная буферная память (БП), называемая кэш-памятью. Повышение производительности ЭВМ при использовании кэш-памяти достигается за счет того, что время доступа к БП значительно меньше времени доступа к "большой" памяти.
Уменьшение времени доступа к БП обеспечивается за счет уменьшения ее емкости по сравнению с большой памятью. В БП хранятся как программы, так и данные. Однако непосредственно из программы адресоваться к информации, хранимой в БП, нельзя. Функционирование двухуровневой системы памяти, включающей в себя БП и большую память, осуществляется следующим образом. По заданному адресу в команде определяется, хранится ли требуемая информация в БП. В том случае, если информация хранится в БП, то происходит работа с БП. В противном случае необходимо информацию перезаписать из "большой" памяти в БП, а затем происходит работа с БП.
Наибольшая производительность достигается в том случае, когда не требуется взаимодействия с "большой" памятью, а работа осуществляется на уровне БП.
В зависимости от способа отображения большой памяти на БП выделяют четыре способа построения БП: буферная память прямого соответствия, секторный буфер, ассоциативный буфер, группо-ассоциативный буфер. Ниже рассматривается функционирование секторного и группо-ассоциативного буфера, являющихся развитием буфера прямого соответствия и ассоциативного буфера соответственно.
Целью моделирования функционирования секторного и группо-ассоциативного буферов является изучение работы кэш-памяти. При этом для уменьшения сложности моделирования рассматривается упрощенный вариант организации большой и буферной памяти, включающий ограниченное число блоков и сегментов, начиная с адреса, равного нулю. В дальнейшем для определенности будем считать, что кэш-память используется между ОП и ЦП.
Моделирование функционирования секторного буфера
Для организации функционирования ОП и секторного буфера все поле памяти и буфера разбивается на блоки равной величины, содержащие по L байтов. В свою очередь, блоки объединяются в зоны по N блоков. Зоны в ОП будем называть сегментами, а зоны в БП - секторами. Поскольку в реальных вычислительных системах емкость ОП составляет десятки и сотни мегабайт, а емкость БП определяется десятками и сотнями килобайт, то число сегментов С значительно превышает число секторов S. Любой из С сегментов ОП может быть помещен в любой из S секторов. Однако j- блок, j=(0, N-1), i-го сегмента ОП, i=(0,С-1), может быть помещен на место j-го блока к-го сектора БП, к=(0, S-1). Для указания номеров сегментов, которые присутствуют в БП, в каждом секторе используется специальный регистр номера присутствующего сегмента.
Число регистров номеров присутствующих сегментов равно S. Каждый блок в БП содержит дополнительный бит присутствия блока и бит изменения блока. Бит присутствия блока устанавливается равным 1, если данный блок содержится в БП, в противном случае бит присутствия равен 0. Бит изменения блока равен 1 в том случае, если содержимое в БП изменялось и, таким образом, стало отличным от содержимого, аналогичного блока в ОП.
Номер сегмента, номер блока и номер байта определяют отдельные группы разрядов исполнительного адреса. Номер сегмента определяют старшие ]log2(C)[ разрядов исполнительного адреса, где ]х[ означает наибольшее целое, большее х. Следующие ]lоg2(N)[ разрядов исполнительного адреса определяют номер блока внутри сегмента, а младшие ]log2(L)[ разрядов - номер байта внутри блока.
Рассмотрим основные принципы функционирования секторного буфера.
На основании старших ]log2(C)[ разрядов исполнительного адреса определяется номер сегмента. Этот номер сравнивается с содержимым регистра номера присутствующего сегмента в каждом секторе. Если в некотором секторе произошло совпадение номера сегмента и содержимого регистра номера присутствующего сегмента, то это означает, что сегмент находится в этом секторе. Далее на основании следующих ]log2(N)[ разрядов исполнительного адреса определяется номер блока. В секторе, который содержит адресуемый сегмент, по биту присутствия блока определяется, находится ли блок в БП. Если бит присутствия блока равен 1, то это означает, что адресуемый блок находится в БП и по адресу байта, который определяется младшими ]log2(L)[ разрядами исполнительного адреса, в зависимости от кода операции происходит чтение информации из ЦП в БП, или запись информации из ЦП в БП. Если же бит присутствия блока равен 0, то это означает, что адресуемый блок отсутствует в БП. В связи с этим блок переписывается из ОП в БП (старшие ]log2(C)[ разрядов исполнительного адреса определяют номер сегмента ОП, который содержит требуемый блок, а следующие ]log2(N)[ разрядов определяют номер адресуемого блока как в ОП, так и в БП). Найденный блок в ОП переписывается на соответствующее место в БП в тот сектор, который содержит адресуемый сегмент, а бит присутствия этого блока устанавливается в 1. Параллельно с перезаписью блока в БП, в случае операции чтения, происходит считывание информации в ЦП. В случае операции записи после занесения блока в БП записываются данные из ЦП в БП. Выше рассматривался случай нахождения адресуемого сегмента в БП. В том случае, если ни в одном секторе номер сегмента не совпал с номером регистра присутствующего сегмента, то это означает, что адресуемый сегмент отсутствует в БП. Для перезаписи сегмента в БП нужно один из сегментов, хранящихся в БП, вытеснить. Существуют различные алгоритмы определения номера сегмента, подлежащего вытеснению. LRU - вытесняется сегмент наиболее давно использовавшийся; FIFO - вытесняется сегмент, раньше других помещенный в буфер; LIFO - вытесняется сегмент, позже других поступивший в буфер.
На основании одного из принятых алгоритмов определяется номер сегмента, подлежащий вытеснению. При вытеснении сегмента могут использоваться различные дисциплины. Сначала рассмотрим дисциплину признакового обмена. Для каждого блока вытесняемого сегмента анализируется бит изменения блока. Для тех блоков, у которых бит изменения равен 1 , происходит перезапись блоков в ОП. Биты изменения сбрасываются в 0. После перезаписи блоков в ОП в регистре номера присутствующего сегмента устанавливается номер сегмента, который должен быть помещен в БП из ОП, а биты присутствия всех блоков сбрасываются в 0.
При вытеснении сегмента, кроме признакового регистрового обмена, в ряде ЭВМ используется сквозная запись, а также ряд других обменных дисциплин. При использовании сквозной записи запись данных в БП осуществляется одновременно с записью данных в ОП. Поэтому отпадает необходимость использовать биты изменения блоков. При сквозной записи, как и в случае признакового обмена, при вытеснении сегмента необходимо сбросить в 0 все биты присутствия блоков, а в регистр номера присутствующего сегмента поместить номер сегмента, записываемого в БП из ОП.
Буфер прямого соответствия является частным случаем секторного буфера, состоящего из одного сектора. Графическое изображение окна программы при выборе лабораторной работы «Секторный буфер (кэш-память)» приведено на рис. 49.
Рис. 49. Окно программы при выборе лабораторной работы «Секторный буфер (кэш-память)»
Выполнение работы
Работы содержит две части: буферная память с признаковым обменом и со сквозной записью. Первая часть представлена в виде примера и содержит код готовой программы. Ознакомившись с ее работой, можно приступать ко второй части, где необходимо исправить исходный код и показать работу буферной памяти со сквозной записью.
Для выбора типа буферной памяти нужно зайти в меню Секторный кэш и там выбрать либо "Признаковый обмен" либо "С прямой записью".
Работа буфера моделируется на уровне блоков, т.е. адрес ячейки в блоке не используется. Требуется написать программу моделирования буферной памяти со сквозной записью, моделирующую три обращения к памяти. В качестве примера в данном описании приводится текст программы моделирования буферной памяти с признаковым обменом. Соответствующая MCL-программа находится в рабочей директории и имеет имя CACHESF.MCL.
В программе моделирования буферной памяти с признаковым обменом описаны следующие типы (см. программу).
Типы, используемые подпрограммами
Внимание! Имена переменных должны быть строго соблюдены, иначе программа может выполняться некорректно.
mem op[32][8] - оперативная память 32 слова по 8 бит
mem bp[16][10] - буферная память 16 слов по 10 бит, при этом 8 бит - данные, 1 бит изменения и 1 бит присутствия. Для работы со словом БП необходимо считать его в структуру BUF_REG[10] (см. ниже)
mem ispadr[3][5] - память исполнительных адресов, содержит три исполнительных адреса
mem inputs[3][8] - числа для записи, содержит 3 числа записываемых в память
mem coper[3][1] - память кодов операции, содержит 3 кода операции (1-чтение, 0-запись)
mem seg_present[2][2] - регистры номеров присутствующих сегментов (два регистра по количеству секторов)
mem rep_seg[3][2] - вытесняемый сегмент, содержит номера сегментов, вытесняемых из БП при замещении
struct iadr[5] - адрес ячейки ОП 32 слова
blok[3], номер блока, всего 8 блоков.
seg [2]; номер сегмента, всего 4 сегмента.
В данную структуру считывается исполнительный адрес из памяти, что позволяет различать в нем номера блока и сегмента.
struct bpadr[4] адрес ячейки БП 16 слов
blok[3], номер блока, всего 8 блоков.
sect[1]; номер сектора, всего 2 сектора.
Данной структуре присваивается адрес буферной памяти, что позволяет различать в нем номера блока и сегмента.
struct buf_reg[10] структура слова буферной памяти
data[8], данные
ch_bit[1], бит изменения
pres_bit[1]; бит наличия
В эту структуру считывается слово БП при любой обработке, что позволяет различать в нем биты присутствия, изменения и собственно данные.
var i, j, вспомогательная переменная
choice, номер варианта
Переменные используемые в программе моделирования работы БП:
k, l, вспомогательная переменная
s_no; номер сектора, содержащего необходимый сегмент
Следующие переменные используются для упрощения. В них считываются соответственно значения coper, inputs, и rep_seg для данного обращения к памяти:
op_code, код операции
data, данные
replace, номер замещаемого сегмента
Используемые подпрограммы
1. VARIANT - подпрограмма задания исходных данных по варианту и их
распечатка. При исполнении подпрограммы на экран выводится сообщение:
Введите номер варианта:
после чего необходимо ввести номер варианта от 1 до 15 включительно. При этом подпрограммой задаются начальные значения следующих описанных выше типов:
op, bp, ispadr, inputs, coper, seg_present, rep_seg.
Исходные данные заданы таким образом, что элементы массивов ispadr, inputs, coper и rep_seg с одинаковым индексом относятся к одному обращению к памяти. То есть если первое обращение к памяти - чтение, а второе запись, то inputs[1] не используется вообще, а во втором обращении используются сразу inputs[2]. Значения исходных данных см. ниже.
2. FIRST, SECOND, THIRD - данные подпрограммы используются исключительно подпрограммой VARIANT.
3. PRINT_BP - подпрограмма печати содержимого буферной памяти.
4. PRINT_BR - подпрограмма печати содержимого буферного регистра, используется исключительно подпрограммой PRINT_BP.
5. PRINT_OP - подпрограмма печати содержимого оперативной памяти.
6. PRINT - подпрограмма печати чисел заданных для записи и номеров вытесняемых сегментов, используется подпрограммами FIRST, SECOND и THIRD.
Типы, описанные в данном файле, полностью идентичны типам описанным в программе моделирования БП с признаковым обменом. Отличием является отсутствие поля CH_BIT[1] - бит изменения, структуры BUF_REG. Соответственно иначе описана и память BP. Так же отсутствуют описания переменных используемых собственно в программе моделирования, которые вводятся по усмотрению студентов. Подпрограммы имеющиеся в файле, имеют те же имена и назначение, что и в описанной выше программе.
Пример выполнения программы с признаковым обменом (файл CACHESF.MCL) для 1-го варианта:
Рис. 50. Результат моделирования секторного буфера с признаковым обменом
*******************************************************************
* model' sektornoi KES pamati s priznakovim obmenom *
*******************************************************************
Vvedite nomer varianta :
1
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Izm. Pris. Dannie Izm. Pris. Dannie
0 0 1 4 0 1 12
1 0 1 5 0 1 13
2 0 0 1 0 1 14
3 0 0 2 0 1 15
4 0 0 3 0 1 16
5 0 0 4 0 1 17
6 0 1 10 0 1 18
7 0 1 11 0 1 19
Soderjimoe RNPS:
--------------------------------
! sektor ! segment !
--------------------------------
! 0 ! 0 !
! 1 ! 1 !
--------------------------------
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
------------------------------------
! N obras. ! Cisla dla ! N vitesn. !
! ! zapisi ! segmenta !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 0 !
------------------------------------
Ispolnitel'nii adres - 4
Blok 4 segmenta 0 otsutstvuet v bufernoi pamati
Ctenie bloka iz operativnoi pamati...
Zapisani dannie 8
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Izm. Pris. Dannie Izm. Pris. Dannie
0 0 1 4 0 1 12
1 0 1 5 0 1 13
2 0 0 1 0 1 14
3 0 0 2 0 1 15
4 1 1 8 0 1 16
5 0 0 4 0 1 17
6 0 1 10 0 1 18
7 0 1 11 0 1 19
Soderjimoe RNPS:
--------------------------------
! sektor ! segment !
--------------------------------
! 0 ! 0 !
! 1 ! 1 !
--------------------------------
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
Ispolnitel'nii adres - 29
Segment 3 otsutstvuet v bufernoi pamati
Vitesnenie segmenta 0
Perezapis' bloka 4 segmenta 0 v OP
Blok 5 segmenta 3 otsutstvuet v bufernoi pamati
Ctenie bloka iz operativnoi pamati...
Procitani dannie 33
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Izm. Pris. Dannie Izm. Pris. Dannie
0 0 0 4 0 1 12
1 0 0 5 0 1 13
2 0 0 1 0 1 14
3 0 0 2 0 1 15
4 0 0 8 0 1 16
5 0 1 33 0 1 17
6 0 0 10 0 1 18
7 0 0 11 0 1 19
Soderjimoe RNPS:
--------------------------------
! sektor ! segment !
--------------------------------
! 0 ! 3 !
! 1 ! 1 !
--------------------------------
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
Ispolnitel'nii adres - 15
Zapisani dannie 10
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Izm. Pris. Dannie Izm. Pris. Dannie
0 0 0 4 0 1 12
1 0 0 5 0 1 13
2 0 0 1 0 1 14
3 0 0 2 0 1 15
4 0 0 8 0 1 16
5 0 1 33 0 1 17
6 0 0 10 0 1 18
7 0 0 11 1 1 10
Soderjimoe RNPS:
--------------------------------
! sektor ! segment !
--------------------------------
! 0 ! 3 !
! 1 ! 1 !
--------------------------------
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
Содержимое таблицы переменных
00 Переменная: ZF типа регистр; разрядность 1 бит; значение = 1
01 Переменная: NF типа регистр; разрядность 1 бит; значение = 0
02 Переменная: CF типа регистр; разрядность 1 бит; значение = 0
03 Переменная: I типа простая переменная; Значение = 4
04 Переменная: J типа простая переменная; Значение = 8
05 Переменная: CHOICE типа простая переменная; Значение = 1
06 Переменная: K типа простая переменная; Значение = 29
07 Переменная: L типа простая переменная; Значение = 3
08 Переменная: OP_CODE типа простая переменная; Значение = 0
09 Переменная: DATA типа простая переменная; Значение = 10
10 Переменная: REPLACE типа простая переменная; Значение = 0
11 Переменная: S_NO типа простая переменная; Значение = 1
12 Переменная: OP типа память; из 32 ячеек по 8 бит
13 Переменная: BP типа память; из 16 ячеек по 10 бит
14 Переменная: ISPADR типа память; из 3 ячеек по 5 бит
15 Переменная: INPUTS типа память; из 3 ячеек по 8 бит
16 Переменная: COPER типа память; из 3 ячеек по 1 бит
17 Переменная: SEG_PRESENT типа память; из 2 ячеек по 2 бит
18 Переменная: REP_SEG типа память; из 3 ячеек по 2 бит
19 Переменная: IADR типа структура; разрядность 5 бит; значение = 15
Поле: BLOK; разярдность 3 бит;
Поле: SEG; разярдность 2 бит;
20 Переменная: BPADR типа структура; разрядность 4 бит; значение = 15
Поле: BLOK; разярдность 3 бит;
Поле: SECT; разярдность 1 бит;
21 Переменная: BUF_REG типа структура; разрядность 10 бит; значение = 778
Поле: DATA; разярдность 8 бит;
Поле: CH_BIT; разярдность 1 бит;
Поле: PRES_BIT; разярдность 1 бит;
22 Переменная: SUBIADR типа структура; разрядность 5 бит; значение = 31
Поле: BLOK; разярдность 3 бит;
Поле: SEG; разярдность 2 бит;
23 Переменная: SUBBPADR типа структура; разрядность 4 бит; значение = 15
Поле: BLOK; разярдность 3 бит;
Поле: SECT; разярдность 1 бит;
24 Переменная: SUBBUF_REG типа структура; разрядность 10 бит; значение = 778
Поле: DATA; разярдность 8 бит;
Поле: CH_BIT; разярдность 1 бит;
Поле: PRES_BIT; разярдность 1 бит;
Содержание отчета
-
Формулировка задания.
-
Исходные данные.
-
Программа на языке MCL, моделирующая буферную память со сквозной записью.
-
Результаты выполнения программы в виде распечатки содержимого поля для вывода
текстовой информации и скриншота (пример на рис. 50) в момент завершения выполнения программы.
Задание к лабораторной работе
Все возможные варианты разбиты на три группы в соответствии с чем задаются исходные данные.
Для вариантов 1-5 задаются следующие данные:
| Номер обращения к памяти | Исполнительный адрес | Код операции | |||
| адрес | N сегмента | N блока | |||
| 1 2 3 | 4 29 15 | 0 3 1 | 4 5 7 | запись чтение запись | 0 1 0 |
Для вариантов 6-10 задаются следующие данные:
| Номер обращения к памяти | Исполнительный адрес | Код операции | |||
| адрес | N сегмента | N блока | |||
| 1 2 3 | 10 30 19 | 1 3 2 | 2 6 3 | чтение запись чтение | 1 0 1 |
Для вариантов 11-15 задаются следующие данные:
| Номер обращения к памяти | Исполнительный адрес | Код операции | |||
| адрес | N сегмента | N блока | |||
| 1 2 3 | 21 8 24 | 2 1 3 | 5 0 0 | чтение чтение запись | 1 1 0 |
Содержимое ОП и БП различно для каждого варианта.
Вариант 1
Содержимое буферной памяти:
Сектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 4 0 1 12
1 0 1 5 0 1 13
2 0 0 1 0 1 14
3 0 0 2 0 1 15
4 0 0 3 0 1 16
5 0 0 4 0 1 17
6 0 1 10 0 1 18
7 0 1 11 0 1 19
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 0 !
! 1 ! 1 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Сегмент #0 4 5 6 7 8 9 10 11
Сегмент #1 12 13 14 15 16 17 18 19
Сегмент #2 20 21 22 23 24 25 26 27
Сегмент #3 28 29 30 31 32 33 34 35
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 0 !
------------------------------------
Вариант 2
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 6 0 1 14
1 0 1 7 0 1 15
2 0 0 2 0 1 16
3 0 0 3 0 1 17
4 0 0 4 0 1 18
5 0 0 5 0 1 19
6 0 1 12 0 1 20
7 0 1 13 0 1 21
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 0 !
! 1 ! 1 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 6 7 8 9 10 11 12 13
Cегмент #1 14 15 16 17 18 19 20 21
Cегмент #2 22 23 24 25 26 27 28 29
Cегмент #3 30 31 32 33 34 35 36 37
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 0 !
------------------------------------
Вариант 3
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 8 0 1 16
1 0 1 9 0 1 17
2 0 0 3 0 1 18
3 0 0 4 0 1 19
4 0 0 5 0 1 20
5 0 0 6 0 1 21
6 0 1 14 0 1 22
7 0 1 15 0 1 23
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 0 !
! 1 ! 1 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 8 9 10 11 12 13 14 15
Cегмент #1 16 17 18 19 20 21 22 23
Cегмент #2 24 25 26 27 28 29 30 31
Cегмент #3 32 33 34 35 36 37 38 39
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 0 !
------------------------------------
Вариант 4
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 10 0 1 18
1 0 1 11 0 1 19
2 0 0 4 0 1 20
3 0 0 5 0 1 21
4 0 0 6 0 1 22
5 0 0 7 0 1 23
6 0 1 16 0 1 24
7 0 1 17 0 1 25
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 0 !
! 1 ! 1 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 10 11 12 13 14 15 16 17
Cегмент #1 18 19 20 21 22 23 24 25
Cегмент #2 26 27 28 29 30 31 32 33
Cегмент #3 34 35 36 37 38 39 40 41
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 0 !
------------------------------------
Вариант 5
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 12 0 1 20
1 0 1 13 0 1 21
2 0 0 5 0 1 22
3 0 0 6 0 1 23
4 0 0 7 0 1 24
5 0 0 8 0 1 25
6 0 1 18 0 1 26
7 0 1 19 0 1 27
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 0 !
! 1 ! 1 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 0 !
------------------------------------
Вариант 6
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 0 2 0 1 24
1 0 0 2 0 1 25
2 0 0 2 0 1 26
3 0 0 2 0 1 27
4 0 1 20 0 1 28
5 0 1 21 0 1 29
6 0 1 22 0 1 30
7 0 1 23 0 1 31
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 1 !
! 1 ! 2 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 8 9 10 11 12 13 14 15
Cегмент #1 16 17 18 19 20 21 22 23
Cегмент #2 24 25 26 27 28 29 30 31
Cегмент #3 32 33 34 35 36 37 38 39
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 0 !
! 2 ! 13 ! 1 !
! 3 ! 14 ! 0 !
------------------------------------
Вариант 7
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 0 3 0 1 26
1 0 0 3 0 1 27
2 0 0 3 0 1 28
3 0 0 3 0 1 29
4 0 1 22 0 1 30
5 0 1 23 0 1 31
6 0 1 24 0 1 32
7 0 1 25 0 1 33
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 1 !
! 1 ! 2 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 10 11 12 13 14 15 16 17
Cегмент #1 18 19 20 21 22 23 24 25
Cегмент #2 26 27 28 29 30 31 32 33
Cегмент #3 34 35 36 37 38 39 40 41
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 0 !
! 2 ! 13 ! 1 !
! 3 ! 14 ! 0 !
------------------------------------
Вариант 8
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 0 4 0 1 28
1 0 0 4 0 1 29
2 0 0 4 0 1 30
3 0 0 4 0 1 31
4 0 1 24 0 1 32
5 0 1 25 0 1 33
6 0 1 26 0 1 34
7 0 1 27 0 1 35
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 1 !
! 1 ! 2 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 0 !
! 2 ! 13 ! 1 !
! 3 ! 14 ! 0 !
------------------------------------
Вариант 9
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 0 5 0 1 30
1 0 0 5 0 1 31
2 0 0 5 0 1 32
3 0 0 5 0 1 33
4 0 1 26 0 1 34
5 0 1 27 0 1 35
6 0 1 28 0 1 36
7 0 1 29 0 1 37
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 1 !
! 1 ! 2 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 14 15 16 17 18 19 20 21
Cегмент #1 22 23 24 25 26 27 28 29
Cегмент #2 30 31 32 33 34 35 36 37
Cегмент #3 38 39 40 41 42 43 44 45
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 0 !
! 2 ! 13 ! 1 !
! 3 ! 14 ! 0 !
------------------------------------
Вариант 10
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 0 6 0 1 32
1 0 0 6 0 1 33
2 0 0 6 0 1 34
3 0 0 6 0 1 35
4 0 1 28 0 1 36
5 0 1 29 0 1 37
6 0 1 30 0 1 38
7 0 1 31 0 1 39
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 1 !
! 1 ! 2 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 16 17 18 19 20 21 22 23
Cегмент #1 24 25 26 27 28 29 30 31
Cегмент #2 32 33 34 35 36 37 38 39
Cегмент #3 40 41 42 43 44 45 46 47
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 0 !
! 2 ! 13 ! 1 !
! 3 ! 14 ! 0 !
------------------------------------
Вариант 11
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 27 0 1 35
1 0 1 28 0 1 36
2 0 1 29 0 1 37
3 0 1 30 0 1 38
4 0 0 4 0 1 39
5 0 0 4 0 1 40
6 0 0 4 0 1 41
7 0 0 4 0 1 42
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 2 !
! 1 ! 3 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 11 12 13 14 15 16 17 18
Cегмент #1 19 20 21 22 23 24 25 26
Cегмент #2 27 28 29 30 31 32 33 34
Cегмент #3 35 36 37 38 39 40 41 42
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 0 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 0 !
------------------------------------
Вариант 12
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 28 0 1 36
1 0 1 29 0 1 37
2 0 1 30 0 1 38
3 0 1 31 0 1 39
4 0 0 5 0 1 40
5 0 0 5 0 1 41
6 0 0 5 0 1 42
7 0 0 5 0 1 43
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 2 !
! 1 ! 3 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 0 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 0 !
------------------------------------
Вариант 13
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 28 0 1 36
1 0 1 29 0 1 37
2 0 1 30 0 1 38
3 0 1 31 0 1 39
4 0 0 6 0 1 40
5 0 0 6 0 1 41
6 0 0 6 0 1 42
7 0 0 6 0 1 43
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 2 !
! 1 ! 3 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 0 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 0 !
------------------------------------
Вариант 14
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 29 0 1 37
1 0 1 30 0 1 38
2 0 1 31 0 1 39
3 0 1 32 0 1 40
4 0 0 7 0 1 41
5 0 0 7 0 1 42
6 0 0 7 0 1 43
7 0 0 7 0 1 44
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 2 !
! 1 ! 3 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 13 14 15 16 17 18 19 20
Cегмент #1 21 22 23 24 25 26 27 28
Cегмент #2 29 30 31 32 33 34 35 36
Cегмент #3 37 38 39 40 41 42 43 44
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 0 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 0 !
------------------------------------
Вариант 15
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Изм. Прис. Данные Изм. Прис. Данные
0 0 1 29 0 1 37
1 0 1 30 0 1 38
2 0 1 31 0 1 39
3 0 1 32 0 1 40
4 0 0 8 0 1 41
5 0 0 8 0 1 42
6 0 0 8 0 1 43
7 0 0 8 0 1 44
Содержимое РНПС:
--------------------------------
! сектор ! сегмент !
--------------------------------
! 0 ! 2 !
! 1 ! 3 !
--------------------------------
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 13 14 15 16 17 18 19 20
Cегмент #1 21 22 23 24 25 26 27 28
Cегмент #2 29 30 31 32 33 34 35 36
Cегмент #3 37 38 39 40 41 42 43 44
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 0 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 0 !
-----------------------------------
Лабораторная работа № 9. Моделирование группо-ассоциативного буфера с признаковым обменом и сквозной записью
Содержание
Цель работы 149
Функционирование группо-ассоциативного буфера 149
Выполнение работы 150
Описание подпрограмм 151
Пример выполнения программы 152
Содержание отчета 155
Задание к лабораторной работе 155
Цель работы
изучение функционирования группо-ассоциативного буфера с признаковым обменом или сквозной записью.
Функционирование группо-ассоциативного буфера
Для организации функционирования группо-ассоциативного буфера также, как и в случае секторного буфера, все поле памяти разбивается на блоки равной величины, содержащие по L байтов. Блоки объединяются в зоны по N блоков, которые называются сегментами и секторами, соответственно, для ОП и БП. В группо-ассоциативном буфере j-й блок, j=(0; N-1), i-го сегмента ОП, i=(0;С-1) (С-число сегментов), может быть помещен на место j-го блока к-го сектора БП, к=(0, S-1) (S-число секторов), однако в одном секторе буфера могут находиться блоки различных сегментов ОП. Поэтому в группо-ассоциативном буфере каждому блоку придается адресная часть, в которой указывается, какому сегменту ОП принадлежит данный блок. Кроме того, при использовании признакового обмена каждый блок в БП содержит дополнительно бит изменения. Бит изменения блока равен 1, если содержимое блока изменялось, в противном случае бит изменения равен 0.
Номер сегмента, номер блока и номер байта внутри блока определяются по исполнительному адресу так же, как для секторного буфера.
Рассмотрим функционирование группо-ассоциативного буфера. При обращении к памяти по исполнительному адресу определяется номер блока. Затем в БП просматриваются адресные части блоков с выделенным номером и анализируются номера сегментов. В том случае, когда номер сегмента, заданный исполнительным адресом, совпадает с номером сегмента, заданным адресной частью блока в БП, то это означает, что адресуемый блок хранится в БП. При наличии адресуемого блока в БП в зависимости от кода операции происходит чтение информации из БП в ЦП или запись информации в БП из ЦП по адресу, который определяется младшими ]log2(L)[ разрядами исполнительного адреса.
В том случае, когда адресуемый блок отсутствует в БП, необходимо вытеснить один из блоков с таким же номером, что и адресуемый блок, но принадлежащий другому сегменту. Вытесняемый блок определяется на основании принятого алгоритма вытеснения, аналогичного алгоритму вытеснения сегмента для секторного буфера. При вытеснении блока для группо-ассоциативного буфера так же, как и при вытеснении сегмента для секторного буфера, могут использоваться различные дисциплины.
Рассмотрим дисциплину признакового обмена. Для блока, подлежащего вытеснению, проверяется бит изменения. В том случае, если бит изменения равен 1, т.е. это означает, что содержимое блока было изменено, блок переписывается в ОП, а бит изменения сбрасывается в 0.
После этого на место вытесняемого блока из ОП записывается адресуемый блок, а в адресную часть блока заносится номер адресуемого сегмента. В том случае, если для вытесняемого блока бит изменения был равен 0, то на место этого блока сразу из ОП перезаписывается адресуемый блок, а в адресную часть заносится номер адресуемого сегмента. Дальнейшая работа с буфером осуществляется по схеме, рассмотренной выше.
Так же, как и в секторном буфере, в группо-ассоциативном буфере, кроме признакового обмена, могут использоваться другие обменные дисциплины. При использовании сквозной записи данные в БП и ОП записываются параллельно. В связи с этим в группо-ассоциативном буфере не используются биты изменения. При сквозной записи в случае отсутствия адресуемого блока на место вытесняемого блока сразу же записывается адресуемый блок, а в адресную часть блока заносится номер адресуемого сегмента.
Ассоциативный буфер является частным случаем группо-ассоциативного буфера, в котором j-й блок, j=(0;N-1), i-го сегмента ОП, i=(0;C-1), может быть помещен на место n-го блока, n=(0;N-1), к-го сектора БП, к=(0;S-1). Таким образом, если разбить весь объем буфера V
на N групп S=V/N, то в группо-ассоциативном буфере j-й блок ОП может занять одно из S мест в j-й группе БП. При N=1 получаем ассоциативный буфер. Графическое изображение окна программы при выборе лабораторной работы «Группо-ассоциативный буфер (кэш-память)» приведено на рис. 51.
Рис. 51. Окно программы при выборе лабораторной работы «Группо-ассоциативный буфер (кэш-память)»
Выполнение работы
Работы содержит две части: буферная память с признаковым обменом и со сквозной записью. Первая часть представлена в виде примера и содержит код готовой программы. Ознакомившись с ее работой, можно приступать ко второй части, где необходимо исправить исходный код и показать работу буферной памяти со сквозной записью.
Для выбора типа буферной памяти нужно зайти в меню Группо-ассотивный кэш и там выбрать либо "Признаковый обмен" либо "С прямой записью".
Работа буфера моделируется на уровне блоков, т.е. адрес ячейки в блоке не используется. Требуется написать программу моделирования буферной памяти со сквозной записью, моделирующую три обращения к памяти. В качестве примера в данном описании приводится текст программы моделирования буферной памяти с признаковым обменом. Соответствующая MCL-программа находится в рабочей директории и имеет имя CACHEAF.MCL.
В программе моделирования буферной памяти с признаковым обменом описаны следующие типы (см. программу).
Типы, используемые подпрограммами
Внимание! Имена переменных должны быть строго соблюдены, иначе программа может выполняться некорректно.
mem op[32][8] - оперативная память 32 слова по 8 бит
mem bp[16][11] - буферная память 16 слов по 11 бит, при этом 8 бит - данные, 1 бит изменения и 2 бита - адресная часть указывающая какому сегменту принадлежит данный блок. Для работы со словом БП необходимо считать его в структуру BUF_REG[11] (см. ниже)
mem ispadr[3][5] - память иcполнительных адpеcов, содержит три исполнительных адреса
mem inputs[3][8] - чиcла для запиcи, содержит 3 числа записываемых в память
mem coper[3][1] - память кодов опеpации, содержит 3 кода операции (1-чтение, 0-запись)
mem rep_seg[3][2] - вытеcняемый сегмент, содержит номера сегментов, вытесняемых из БП при замещении
struct iadr[5] адрес ячейки ОП 32 cлова
blok[3], номер блока, всего 8 блоков
seg [2]; номер сегмента, всего 4 сегмента
В данную структуру считывается исполнительный адрес из памяти, что позволяет различать в нем номера блока и сегмента.
struct bpadr[4] адрес ячейки БП 16 cлов
blok[3], номер блока, всего 8 блоков
sect[1]; номер сектора, всего 2 сектора
Данной структуре присваивается адрес буферной памяти, что позволяет различать в нем номера блока и сегмента.
struct buf_reg[11] структура слова буферной памяти
data[8], данные
ch_bit[1], бит изменения
address[2]; адресная часть
В эту структуру считывается слово БП при любой обработке, что позволяет различать в нем биты присутствия, изменения и собственно данные.
var i,j, вспомогательная переменная
choice, номер варианта
Переменные используемые в программе моделирования работы БП:
k,l, вспомогательная переменная
s_no; номер сектора, содержащего необходимый сегмент
Следующие переменные используются для упрощения. В них считываются соответственно значения coper, inputs, и rep_seg для данного обращения к памяти:
op_code, код операции
data, данные
replace, номер замещаемого сегмента
Описание подпрограмм
1. VARIANT - подпрограмма задания исходных данных по варианту и их распечатка. При исполнении подпрограммы на экран выводится сообщение: ”Введите номер варианта: " после чего необходимо ввести номер варианта от 1 до 15 включительно. При этом подпрограммой задаются начальные значения следующих описанных выше типов: op, bp, ispadr, inputs, coper, rep_seg.
Исходные данные заданы таким образом, что элементы массивов ispadr, inputs, coper и rep_seg с одинаковым индексом относятся к одному обращению к памяти. То есть если первое обращение к памяти - чтение, а второе запись, то inputs[1] не используется вообще, а во втором обращении используются сразу inputs[2]. Значения исходных данных см. ниже.
2. FIRST, SECOND, THIRD - данные подпрограммы используются исключительно подпрограммой VARIANT.
3. PRINT_BP - подпрограмма печати содержимого буферной памяти.
4. PRINT_BR - подпрограмма печати содержимого буферного регистра, используется исключительно подпрограммой PRINT_BP.
5. PRINT_OP - подпрограмма печати содержимого оперативной памяти.
6. PRINT_DOP - подпрограмма печати чисел заданных для записи и номеров вытесняемых сегментов, используется подпрограммами FIRST, SECOND и THIRD.
Типы, описанные в данном файле, полностью идентичны типам описанным в программе моделирования БП с признаковым обменом. Отличием является отсутствие поля CH_BIT[1] - бит изменения, структуры BUF_REG. Соответственно иначе описана и память BP. Так же отсутствуют описания переменных используемых собственно в программе моделирования, которые вводятся по усмотрению студентов. Подпрограммы имеющиеся в файле, имеют те же имена и назначение, что и в описанной выше программе.
Пример выполнения программы
Даннай пример есть выполнение программы с признаковым обменом (файл CACHEAF.MCL) для 1-го варианта
Рис. 52. Результат моделирования группо-ассоциативного буфера с признаковым обменом
*******************************************************************
* model' gruppo-assoziativnoi KES pamati s priznakovim obmenom *
*******************************************************************
Vvedite nomer varianta :
1
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Seg. Izm. Dannie Seg. Izm. Dannie
0 0 0 4 1 0 12
1 0 0 5 1 0 13
2 0 0 6 1 0 14
3 0 0 7 1 0 15
4 0 0 8 1 0 16
5 0 0 9 1 0 17
6 0 0 10 1 0 18
7 0 0 11 1 0 19
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
------------------------------------
! N obras. ! Cisla dla ! N vitesn. !
! ! zapisi ! segmenta !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 1 !
------------------------------------
Ispolnitel'nii adres - 4
Zapisani dannie 8
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Seg. Izm. Dannie Seg. Izm. Dannie
0 0 0 4 1 0 12
1 0 0 5 1 0 13
2 0 0 6 1 0 14
3 0 0 7 1 0 15
4 0 1 8 1 0 16
5 0 0 9 1 0 17
6 0 0 10 1 0 18
7 0 0 11 1 0 19
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
Ispolnitel'nii adres - 28
Blok 4 ,segmenta 3 otsutstvuet v bufernoi pamati
Vitesnenie bloka prinadlejasego segmentu 0
Perezapis' bloka 4 segmenta 0 v OP
Procitani dannie 32
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Seg. Izm. Dannie Seg. Izm. Dannie
0 0 0 4 1 0 12
1 0 0 5 1 0 13
2 0 0 6 1 0 14
3 0 0 7 1 0 15
4 3 0 32 1 0 16
5 0 0 9 1 0 17
6 0 0 10 1 0 18
7 0 0 11 1 0 19
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
Ispolnitel'nii adres - 22
Blok 6 ,segmenta 2 otsutstvuet v bufernoi pamati
Vitesnenie bloka prinadlejasego segmentu 1
Zapisani dannie 10
Soderjimoe bufernoi pamati :
Cektor 0 Sektor 1
Blok Seg. Izm. Dannie Seg. Izm. Dannie
0 0 0 4 1 0 12
1 0 0 5 1 0 13
2 0 0 6 1 0 14
3 0 0 7 1 0 15
4 3 0 32 1 0 16
5 0 0 9 1 0 17
6 0 0 10 2 1 10
7 0 0 11 1 0 19
Soderjimoe operativnoi pamati:
Blok # 0 1 2 3 4 5 6 7
Cegment #0 4 5 6 7 8 9 10 11
Cegment #1 12 13 14 15 16 17 18 19
Cegment #2 20 21 22 23 24 25 26 27
Cegment #3 28 29 30 31 32 33 34 35
Содержимое таблицы переменных
00 Переменная: ZF типа регистр; разрядность 1 бит; значение = 1
01 Переменная: NF типа регистр; разрядность 1 бит; значение = 0
02 Переменная: CF типа регистр; разрядность 1 бит; значение = 0
03 Переменная: OP типа память; из 32 ячеек по 8 бит
04 Переменная: BP типа память; из 16 ячеек по 11 бит
05 Переменная: ISPADR типа память; из 3 ячеек по 5 бит
06 Переменная: INPUTS типа память; из 3 ячеек по 8 бит
07 Переменная: COPER типа память; из 3 ячеек по 1 бит
08 Переменная: REP_SEG типа память; из 3 ячеек по 2 бит
09 Переменная: IADR типа структура; разрядность 5 бит; значение = 22
Поле: BLOK; разярдность 3 бит;
Поле: SEG; разярдность 2 бит;
10 Переменная: BPADR типа структура; разрядность 4 бит; значение = 14
Поле: BLOK; разярдность 3 бит;
Поле: SECT; разярдность 1 бит;
11 Переменная: BUF_REG типа структура; разрядность 11 бит; значение = 1290
Поле: DATA; разярдность 8 бит;
Поле: CH_BIT; разярдность 1 бит;
Поле: ADDRESS; разярдность 2 бит;
12 Переменная: SUBIADR типа структура; разрядность 5 бит; значение = 31
Поле: BLOK; разярдность 3 бит;
Поле: SEG; разярдность 2 бит;
13 Переменная: SUBBPADR типа структура; разрядность 4 бит; значение = 15
Поле: BLOK; разярдность 3 бит;
Поле: SECT; разярдность 1 бит;
14 Переменная: SUBBUF_REG типа структура; разрядность 11 бит; значение = 531
Поле: DATA; разярдность 8 бит;
Поле: CH_BIT; разярдность 1 бит;
Поле: ADDRESS; разярдность 2 бит;
15 Переменная: I типа простая переменная; Значение = 4
16 Переменная: J типа простая переменная; Значение = 8
17 Переменная: CHOICE типа простая переменная; Значение = 1
18 Переменная: K типа простая переменная; Значение = 28
19 Переменная: L типа простая переменная; Значение = 3
20 Переменная: OP_CODE типа простая переменная; Значение = 0
21 Переменная: DATA типа простая переменная; Значение = 10
22 Переменная: REPLACE типа простая переменная; Значение = 1
23 Переменная: S_NO типа простая переменная; Значение = 1
Содержание отчета
-
Формулировка задания.
-
Исходные данные.
-
Программа на языке MCL, моделирующая буферную память со сквозной записью.
-
Результаты выполнения программы в виде распечатки содержимого поля для вывода
текстовой информации и скриншота (пример на рис. 52) в момент завершения выполнения программы.
Задание к лабораторной работе
Исходные данные:
Все возможные варианты разбиты на три группы в соответствии с чем задаются исходные данные.
Для вариантов 1-5 задаются следующие данные:
| Номер обращения к памяти | Исполнительный адрес | Код операции | |||
| адрес | N сегмента | N блока | |||
| 1 2 3 | 4 28 22 | 0 3 2 | 4 4 6 | запись чтение запись | 0 1 0 |
Для вариантов 6-10 задаются следующие данные:
| Номер обращения к памяти | Исполнительный адрес | Код операции | |||
| адрес | N сегмента | N блока | |||
| 1 2 3 | 10 30 6 | 1 3 0 | 2 6 6 | чтение запись чтение | 1 0 1 |
Для вариантов 11-15 задаются следующие данные:
| Номер обращения к памяти | Исполнительный адрес | Код операции | |||
| адрес | N сегмента | N блока | |||
| 1 2 3 | 8 26 10 | 1 3 1 | 0 2 2 | запись запись чтение | 0 0 1 |
Содержимое ОП и БП различно для каждого варианта.
Вариант1
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 0 0 4 1 0 12
1 0 0 5 1 0 13
2 0 0 6 1 0 14
3 0 0 7 1 0 15
4 0 0 8 1 0 16
5 0 0 9 1 0 17
6 0 0 10 1 0 18
7 0 0 11 1 0 19
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 4 5 6 7 8 9 10 11
Cегмент #1 12 13 14 15 16 17 18 19
Cегмент #2 20 21 22 23 24 25 26 27
Cегмент #3 28 29 30 31 32 33 34 35
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 1 !
------------------------------------
Вариант2
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 0 0 6 1 0 14
1 0 0 7 1 0 15
2 0 0 8 1 0 16
3 0 0 9 1 0 17
4 0 0 10 1 0 18
5 0 0 11 1 0 19
6 0 0 12 1 0 20
7 0 0 13 1 0 21
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 6 7 8 9 10 11 12 13
Cегмент #1 14 15 16 17 18 19 20 21
Cегмент #2 22 23 24 25 26 27 28 29
Cегмент #3 30 31 32 33 34 35 36 37
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 1 !
------------------------------------
Вариант3
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 0 0 8 1 0 16
1 0 0 9 1 0 17
2 0 0 10 1 0 18
3 0 0 11 1 0 19
4 0 0 12 1 0 20
5 0 0 13 1 0 21
6 0 0 14 1 0 22
7 0 0 15 1 0 23
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 8 9 10 11 12 13 14 15
Cегмент #1 16 17 18 19 20 21 22 23
Cегмент #2 24 25 26 27 28 29 30 31
Cегмент #3 32 33 34 35 36 37 38 39
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 1 !
------------------------------------
Вариант4
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 0 0 10 1 0 18
1 0 0 11 1 0 19
2 0 0 12 1 0 20
3 0 0 13 1 0 21
4 0 0 14 1 0 22
5 0 0 15 1 0 23
6 0 0 16 1 0 24
7 0 0 17 1 0 25
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 10 11 12 13 14 15 16 17
Cегмент #1 18 19 20 21 22 23 24 25
Cегмент #2 26 27 28 29 30 31 32 33
Cегмент #3 34 35 36 37 38 39 40 41
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 1 !
------------------------------------
Вариант5
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 0 0 12 1 0 20
1 0 0 13 1 0 21
2 0 0 14 1 0 22
3 0 0 15 1 0 23
4 0 0 16 1 0 24
5 0 0 17 1 0 25
6 0 0 18 1 0 26
7 0 0 19 1 0 27
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 8 ! 0 !
! 2 ! 9 ! 0 !
! 3 ! 10 ! 1 !
------------------------------------
Вариант6
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 1 0 16 2 0 24
1 1 0 17 2 0 25
2 1 0 18 2 0 26
3 1 0 19 2 0 27
4 1 0 20 2 0 28
5 1 0 21 2 0 29
6 1 0 22 2 0 30
7 1 0 23 2 0 31
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 8 9 10 11 12 13 14 15
Cегмент #1 16 17 18 19 20 21 22 23
Cегмент #2 24 25 26 27 28 29 30 31
Cегмент #3 32 33 34 35 36 37 38 39
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 1 !
! 2 ! 13 ! 2 !
! 3 ! 14 ! 3 !
------------------------------------
Вариант7
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 1 0 18 2 0 26
1 1 0 19 2 0 27
2 1 0 20 2 0 28
3 1 0 21 2 0 29
4 1 0 22 2 0 30
5 1 0 23 2 0 31
6 1 0 24 2 0 32
7 1 0 25 2 0 33
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 10 11 12 13 14 15 16 17
Cегмент #1 18 19 20 21 22 23 24 25
Cегмент #2 26 27 28 29 30 31 32 33
Cегмент #3 34 35 36 37 38 39 40 41
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 1 !
! 2 ! 13 ! 2 !
! 3 ! 14 ! 3 !
------------------------------------
Вариант8
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 1 0 20 2 0 28
1 1 0 21 2 0 29
2 1 0 22 2 0 30
3 1 0 23 2 0 31
4 1 0 24 2 0 32
5 1 0 25 2 0 33
6 1 0 26 2 0 34
7 1 0 27 2 0 35
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 1 !
! 2 ! 13 ! 2 !
! 3 ! 14 ! 3 !
------------------------------------
Вариант9
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 1 0 22 2 0 30
1 1 0 23 2 0 31
2 1 0 24 2 0 32
3 1 0 25 2 0 33
4 1 0 26 2 0 34
5 1 0 27 2 0 35
6 1 0 28 2 0 36
7 1 0 29 2 0 37
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 14 15 16 17 18 19 20 21
Cегмент #1 22 23 24 25 26 27 28 29
Cегмент #2 30 31 32 33 34 35 36 37
Cегмент #3 38 39 40 41 42 43 44 45
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 1 !
! 2 ! 13 ! 2 !
! 3 ! 14 ! 3 !
------------------------------------
Вариант10
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 1 0 24 2 0 32
1 1 0 25 2 0 33
2 1 0 26 2 0 34
3 1 0 27 2 0 35
4 1 0 28 2 0 36
5 1 0 29 2 0 37
6 1 0 30 2 0 38
7 1 0 31 2 0 39
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 16 17 18 19 20 21 22 23
Cегмент #1 24 25 26 27 28 29 30 31
Cегмент #2 32 33 34 35 36 37 38 39
Cегмент #3 40 41 42 43 44 45 46 47
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 12 ! 1 !
! 2 ! 13 ! 2 !
! 3 ! 14 ! 3 !
------------------------------------
Вариант11
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 2 0 28 3 0 36
1 2 0 29 3 0 37
2 2 0 30 3 0 38
3 2 0 31 3 0 39
4 2 0 32 3 0 40
5 2 0 33 3 0 41
6 2 0 34 3 0 42
7 2 0 35 3 0 43
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 2 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 3 !
------------------------------------
Вариант12
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 2 0 28 3 0 36
1 2 0 29 3 0 37
2 2 0 30 3 0 38
3 2 0 31 3 0 39
4 2 0 32 3 0 40
5 2 0 33 3 0 41
6 2 0 34 3 0 42
7 2 0 35 3 0 43
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 2 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 3 !
------------------------------------
Вариант13
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 2 0 28 3 0 36
1 2 0 29 3 0 37
2 2 0 30 3 0 38
3 2 0 31 3 0 39
4 2 0 32 3 0 40
5 2 0 33 3 0 41
6 2 0 34 3 0 42
7 2 0 35 3 0 43
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 12 13 14 15 16 17 18 19
Cегмент #1 20 21 22 23 24 25 26 27
Cегмент #2 28 29 30 31 32 33 34 35
Cегмент #3 36 37 38 39 40 41 42 43
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 2 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 3 !
------------------------------------
Вариант14
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 2 0 29 3 0 37
1 2 0 30 3 0 38
2 2 0 31 3 0 39
3 2 0 32 3 0 40
4 2 0 33 3 0 41
5 2 0 34 3 0 42
6 2 0 35 3 0 43
7 2 0 36 3 0 44
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 13 14 15 16 17 18 19 20
Cегмент #1 21 22 23 24 25 26 27 28
Cегмент #2 29 30 31 32 33 34 35 36
Cегмент #3 37 38 39 40 41 42 43 44
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 2 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 3 !
------------------------------------
Вариант15
Содержимое буферной памяти :
Cектор 0 Сектор 1
Блок Сег. Изм. Данные Сег. Изм. Данные
0 2 0 29 3 0 37
1 2 0 30 3 0 38
2 2 0 31 3 0 39
3 2 0 32 3 0 40
4 2 0 33 3 0 41
5 2 0 34 3 0 42
6 2 0 35 3 0 43
7 2 0 36 3 0 44
Приостановлено... Нажмите "ENTER" для продолжения
Cодержимое оперативной памяти:
Блок # 0 1 2 3 4 5 6 7
Cегмент #0 13 14 15 16 17 18 19 20
Cегмент #1 21 22 23 24 25 26 27 28
Cегмент #2 29 30 31 32 33 34 35 36
Cегмент #3 37 38 39 40 41 42 43 44
------------------------------------
! N обращ. ! Числа для ! N вытесн. !
! ! записи ! сегмента !
------------------------------------
! 1 ! 23 ! 2 !
! 2 ! 24 ! 2 !
! 3 ! 25 ! 3 !
------------------------------------
51
2>2>0>0>0>0>0>0>0>6>















