ОРТ2/К3 2018

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Адресе и подаци су дужине 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на вишој локацији, а млађи бајт на нижој адреси.

У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар податка B дужине 2 бајта, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.

Битови 7 и 6 првог бајта инструкције су 00 за све инструкције скока. Код инструкција условног скока битови 5 и 4 првог бајта инструкције су 00, док код инструкција безусловног скока битови 5 и 4 првог бајта инструкције су 01. Инструкција условног скока је инструкција условног скока уколико резултат није нула (JNZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 3 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JNZ, JMP и JSR усвојени кодови операције 00000000, 00010000 и 00010001, респективно. Инструкције JNZ и JMP се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.

Битови 7 и 6 првог бајта инструкције су 01 за све адресне и безадресне инструкције.

Битови 5 и 4 првог бајта инструкције су 00 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP) и повратка из потпорграма (RTS). Битовима 3 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP и RTS усвојени кодови операција 01000000, 01000001 и 01000010, респективно. Дужина инструкција је један бајт.

Битови 5 и 4 првог бајта инструкције су 01 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), аритметичка инструкција инкрементирања операнда која резултат смешта у акумулатор (INC), логичка инструкција ексклузивно или (XOR) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 3 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, INC, XOR и JADR усвојени кодови операција 01010000, 01010001, 01010010, 01010011 и 01010100 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.

Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-регистарско индиректно адресирање (regind), 010-регистарско индиректно са померајем (regindpom), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови од 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Регистарско индиректно адресирање користи неке од регистара опште намене R0 до R15 специфициране битовима од 3 до 0 другог бајта инструкције. Бит 4 другог бајта се не користи. Дужина инструкције је 2 бајта. Код регистарског индиректног адресирања са померајем, трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина без знака. Један од регистара опште намене R0 до R15 специфициран је битовима од 3 до 0 другог бајта инструкције. Бит 4 другог бајта се не користи. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина без знака. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код непосредног адресирања 16 битни операнд је дат трећим и четвртим бајтом инструкције. Битови од 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта.

Стек расте према вишим адресама у меморији, а регистар SP показује на прву слободну меморијску локацију. Процесор нема могућност обраде прекида.

Потребно је пројектовати блок FETCHADDR процесора. Блок fetchaddr креће са читањем инструкције операнда и/или формирањем адресе и читањем операнда. Овај блок се покреће уколико се у флип - флопу FETCHADDR налази вредност 1 и стартује блок fetchaddr, док се уписивањем вредности 0 у флип - флоп FETCHADDR зауставља блок fetchaddr.

Операциона јединица треба да буде реализована директним повезивањем прекидачких мрежа, а управљачка јединица микропрограмирањем. Сматрати да су се при читању инструкције бајтови IR регистра попуњавали од виших ка нижим бајтовима.

  1. Нацртати структуру операционе јединице блока fetchaddr. Приказати компоненте релевантне само за овај блок.
  2. Дати секвенцу управљачких сигнала (по корацима - step) операционе и управљачке јединице у случају да се користи микропрограмска реализација управљачке јединице. Навести изразе свих сигнала услова који су коришћени у секвенци.
  3. Дати формат микроинструкције у коме су кодирани сигнали операционе и управљачке јединице, услови скокова и адресе скока. Попуњавати искључиво приложене таблице датог формулара.
  4. Нацртати структуру управљачке јединице микропрограмске реализације и приказати како се генеришу сигнали операционе и управљачке јединице на основу формата микроинструкције.
  5. Приказати садржај микропрограмске меморије за прва четири корака.

Решење

Операциона јединица

Микропрограм

Микроинструкција

Микромеморија