ОРТ2/К3 2018
- Овај рок није решен. Помозите 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 регистра попуњавали од виших ка нижим бајтовима.
- Нацртати структуру операционе јединице блока fetchaddr. Приказати компоненте релевантне само за овај блок.
- Дати секвенцу управљачких сигнала (по корацима - step) операционе и управљачке јединице у случају да се користи микропрограмска реализација управљачке јединице. Навести изразе свих сигнала услова који су коришћени у секвенци.
- Дати формат микроинструкције у коме су кодирани сигнали операционе и управљачке јединице, услови скокова и адресе скока. Попуњавати искључиво приложене таблице датог формулара.
- Нацртати структуру управљачке јединице микропрограмске реализације и приказати како се генеришу сигнали операционе и управљачке јединице на основу формата микроинструкције.
- Приказати садржај микропрограмске меморије за прва четири корака.