Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦЕОМ_1_СЕМЕСТР.doc
Скачиваний:
4
Добавлен:
24.04.2019
Размер:
7.28 Mб
Скачать

Алгоритм обмена данными между процесорами и общей памятью

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

Обмен даными в програмном режиме

Обмен даными происходит во время выполнения програм и инициатором обмена даными является процесор. Принимает участвие еще внешнее устройство и ОП. Даные передаются по шине даных, адрес – по шине адреса(ША), управляющие сигналы передаются по шине управлении.Через регистр адреса передаются адреса.

УС

События

Инициатор

r(R)

Считать информацию

П

w(W)

Запись

П

rdm(RD)

Сигнал готовности ОП

ОП

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

Алгоритм чтения:

  1. Процер записывает адрес данных в РА.Адрес из РА по шине адреса поступает в общую память.

  2. Процесор генерируетсигнал read(R) – считать, он поступает на ОП по ШУ. Выбираются данные, которые выставляются на ШД.

  3. Модуль ОП генерирует сигнал готовности.

  4. Процесор получает сигнал готовности и записывает данные в регистр данных.

Асемблер:

nil - результат никуда не пишем.

read_d{ add nil, r1, z; oey,ewl;}/ адрес→РА

ss1{r; cjp rdm, ss1, add r13, z, bus_d;}/ адрес записывается в R1, даные считали в R13(ОП→ R13).

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

link l2: rdm

Кроме того, необходимо задать границу деления регистра адреса на 2 чатсти: старшую и младшую.

link ewh:16

Процедура записи:

  1. Процесор выставляет адрес в РА.

  2. Процесор выставляет данные на ШД.

  3. Процесор генерирует сигнал записи. Общая память записывает данные с ШД по адресу, который находится на шине адреса, после чего выдает сигнал готовности.

  4. Процесор получает сигнал готовности и считает она записана.

Асемблер:

write_d

{add nil, r1,z; oey; ewl;}

ss2

{ w; cjp rdm, ss2; add nil, r13, z; oey;}

Пример: f = x+y+z.

/область задания связи;

link l1: ct

link l2:rdm

link ewh: 16

/ область загрузки регистра;

accept r1: 20h

accept r2: 22h

accept r3: 24h

accept r4: 26h

/

dw 20h: 07h

\x=7

dw 22h: 04h

\y=4

dw 24h: 03h

\ z=3

dw 26h: 00h

\f

/область програмы

{add nil, r1, z; oey; ewl;}

ss1

{r; cjp rdm, ss1; add r13, z, bus_d;}

\x→R13

{add nil, r2, z; oey, ewl;}

\A(y)→R14

ss2

{ r; cjp rdm, ss2; add r14, z, bus_d;}

\y→R14

{cjs nz, mpp_add;}

\безусловный переход на микропрограму;

\ x+y→R13

\cчитать z→R14

{add nil, r3, z; oey; ewl;}

\z→PA

ss3

{r; cjp}rdm; ss3; add r14; z; bus_d;}

\z→R14

{cjs nz, mpp_add;}

\(x+y)+z→R13

\f→ОП(a=R4)

{add nil, r4,z; ewl; oey;}

\A(f)→PA

ss4

{r; cjp rdm, ss4; add nil, r13, z; oey;}

{cjp nz; end_p;}

\микроподпрограма

\cложение: : R13+R14→R13

mpp_add

{add r13, r14, r13;}

crtn nz;

/ выход из микроподпрограмы

end p{}

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]