Архитектура рачунара/К 2021

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Задатак 1

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

[7п] Посматра се процесор из задатка 3 код кога постоји селективно маскирање прекида користећи регистар маске IMR код кога вредност 1 бита на позицији i дозвољава прекид по линији IRQMi, а вредност 0 забрањује.

  1. Написати програм којим се забрањује прекид од периферије повезане на линију IRQM1 а прекид од периферија IRQM0 и IRQM2 не мења.
  2. Написати програм којим се дозвољава прекид од периферије повезане на линију IRQM1 а прекид од периферија IRQM0 и IRQM2 не мења.
  3. Уколико дати процесор у регистру PSW не би поседовао бите L шта (написати део кода) треба и где (главни програм или нека прекидна рутина) урадити како би се обезбедило да се у оквиру прекидне рутине периферије PERi (i: 0, 1, 2) прихвата само прекид вишег нивоа приоритета.

Задатак 2

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

[8п] Нацртати систем у коме постоје две магистрале од којих је једна синхрона а друга асинхрона. Нацртати и објаснити како се код оваквог система на ове две магистрале обично повезује процесор, меморија и улазно/излазни уређаји и које су добре стране таквог повезивања.

Задатак 3

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

[25п] Адресни простор процесора је величине 128KB, адресибилна јединица је 16 битна реч. Процесор је једноадресни са раздвојеним меморијским и У/И адресним простором, механизам прекида је векторисан, табела прекидних рутина почиње од адресе на коју указује регистар IVTP, а регистар IVTP има вредност 0002h.

Процесор има три улазне линије IRQM0, IRQM1 и IRQM2 за спољашње маскирајуће прекиде и једну улазну линију IRQN за спољашње немаскирајуће прекиде на које су везане периферије PER0, PER1, PER2 и PER3, респективно. Адресе 16 битних регистара контролера периферија PER0, PER1 и PER2 у којима се чувају бројеви улаза у IV табелу су Ah, Bh и Ch, респективно. Придружени бројеви улаза у табели прекидних рутина са периферије PER0, PER1 и PER2 су 2,3 и 4. Захтевима за прекид који долазе по лини[sic] IRQN одговара фиксан улаз 0 у табели прекидних рутина. Захтеви за прекидом се памте у флип-флоповима PRM0, PRM1, PRM2 и PRN за периферије PER0, PER1, PER2 и PER3, респективно. Од спољашњих маскирајућих највиши приоритет има захтев који долази по линији IRQM0, па затим по лини[sic] IRQM1, и најнижи приоритет има захтев који долази по линији IRQM2. Не прихватају се прекиди истог нивоа приоритета. Процесор реагује и на прекиде због задатог режима рада прекид после сваке инструкције - ако је бит T регистра PSW постављен на вредност 1 за који је фиксно одређен улаз 1 IV табеле. Процесор не поседује инструкцију за извршавање софтверског захтева за прекидом. У регистру PSW редом од нижих ка вишим битовима се налази одговарајући број L бита (кодови нивоа режима рада су подељени редом, тако да најмања вредност L битова одговара нивоу главног програма, док највећа вредност L битова одговара режиму рада прекидне рутине најприоритетнијег маскирајућег захтева за прекидом), па затим битови I и Т. Регистри PSW и ACC су ширине 16 бита. Инструкције INTE, INTD, TRPE, TRPD и RTI не реагују на прекиде. У кораку за обраду прекида на стек се хардверски стављају ACC, PC и PSW, тим редом. Стек расте према вишим локацијама, а SP указује на последњу заузету локацију и има вредност F000h. У процесору не постоји регистар маске IMR, као ни регистри опште намене.

На слици 1, дат је део кода који је учитан у оперативну меморију рачунара. Инструкција на адреси 1000h означена је као 1. (прва) по редоследу извршавања, а свака следећа инструкција која се извршава означена је следећим редним бројем. На слици 2, дати су тренуци пристизања спољашњих захтева за прекид.

  1. [16п] Написати секвенцу адреса наредби које се редом извршавају почев од адресе 1000h. На почетку бит I регистра PSW је постављен на 1, бит T регистра PSW је постављен на 0, док су сви остали битови регистра PSW постављени на 0. Резултат дати након фазе извршења инструкције и уколико је у фази опслуживања прекида прихваћен прекид и након фазе опслуживања прекида. Табелу приказати до завршене инструкције која се налази на адреси 1009h. При цртању стања стека, потребно је назначити адресу сваке меморијске локације, као и на коју адресу указује регистар SP.
  2. [2п] Која вредност се налази на локацији 0000h и 0001h након извршеног програма под а).
  3. [3п] Написати део програма којим треба да се измени садржај IV табеле тако што ће се међусобно заменити прекидне рутине периферија PER0 и PER2. Обезбедити да се током ове измене забране маскирајући прекиди, а након тога да се дозволе маскирајући прекиди. Не треба узимати конкретне вредности адреса са слике 1. На располагању је слободна меморијска локација на адреси 0100h.
  4. [4п] Проширити одговарајућу прекидну рутину којом би се обезбедило да се максимално једном прихвати захтев за прекидом који долази од периферије PER2, док за захтеве осталих периферија не треба увести ово ограничење. Све адресне инструкције сматрати да су дужине 3 речи, а све безадресне 1 реч. Сматрати да се у главном програму неће наћи ни једна инструкција која манипулише стеком. Решење треба приказати у датој табели навођењем адресе и инструкције која ће се налазити на тој адреси. Није дозвољено коришћење глобалних променљивих.
Слика 1 - део оперативне меморије
Адреса
Наредба Адреса Наредба
Адреса Наредба Адреса Вредност
1000 LD #6h 3000 LD 1h 4000 LD 1h 0 3004h
1003 TRPE 3003 INTE 4003 OR #2h 1 0h
1004 INTD 3004 INC 4006 ST 0h 2 3000h
1005 SUB #3h 3005 ST 1h 4009 RTI 3 400Dh
1008 INC 3009 LD #1h 400A LD 0h 4 400Ah
1009 TRPD 300C ST 200h 400D XOR 1h 5 4000h
300F RTI 4010 ST 1h 6 3009h
4013 RTI
Слика 2 - пристигли захтеви
Прекид Инструкција
IRQM1 2
IRQN
4
IRQM0, IRQM2 9

Решење

Тачка а)

Р.Б. Адреса Инструкција ACC[H] Стек I T L PRN PRM2 PRM1 PRM0
0 - - - 1 1 0

Тачка в)

INTD ; Забрана маскирајућих прекида
PUSH
LD 4h
ST 100h
LD 6h
ST 4h
LD 100h
ST 6h
POP
INTE ; Дозвола маскирајућих прекида

Tачка г)

3009 LD #1h
300C ST 200h
300F POP
3010 ADD #1h
3013 PUSH
3014 RTI

Пошто су последње на стеку сачувани L бити, и пошто се ова прекидна рутина може извршити само из контекста главног програма, у коме су L бити 00, довољно је променити упамћену вредност PSW и заменити је са 01 (приоритетом прекидне рутине за PER2). Ово се може постићи додавањем са 1 или OR-овањем са 1. Вредност враћамо на стек и излазимо из прекида. Сваки следећи захтев је маскиран приоритетом из L бити.