Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процессоры ARC.doc
Скачиваний:
24
Добавлен:
11.04.2014
Размер:
2.1 Mб
Скачать

1: Decode.

A=0

B=0

C=0

AMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

BMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

CMUX=0 (код регистра-приёмника берётся из регистра микрокоманд (MIR))

RD=0

WR=0

ALU=AND

COND=DECODE

JUMP ADDR=*

//В процессоре при исполнении команды DECODE блокируется запись в блок регистров, поэтому команда АЛУ не играет роли.

Или может происходить следующее: Rg0=and(Rg0, Rg0), т.е. фактически значение в регистре Rg0 не изменяется.

1792: JIMM 1794; temp0=ADD(rs1, rs2).

A=*

B=*

//коды регистров источников берутся из регистра команд, из полей rs1 и rs2 соответственно.

C=temp0

AMUX=1 (код регистра-источника берётся из регистра команд (IR))

BMUX=1 (код регистра-источника берётся из регистра команд (IR))

CMUX=0 (код регистра-приёмника берётся из регистра микрокоманд (MIR))

RD=0

WR=0

ALU=ADD

COND=JIMM

// если выставлен бит непосредственного значения (IR[13]=1), то микропрограмма перейдет по адресу, указанному в поле JUMP ADDR.

JUMP ADDR=1794

1793: rd=AND(temp0, temp0); MemRD; JUMP 2047.

A=temp0

B= temp0

C=*

AMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

BMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

CMUX=1 (код регистра-приёмника берётся из регистра команд (IR))

RD=1

WR=0

ALU=AND

//Здесь как и по адресу микрокоманд 0, результат операции АЛУ не влияет на то, что запишется в регистр rd, т.к. выставлено поле RD (т.е. RD=1) в регистре микрокоманд (MIR). Это значение (RD) пойдет на управляющий вход мультиплексора C Bus, который при 1 определит: что в блок регистров следует данные записывать из памяти, а не из АЛУ.

COND=JUMP

//безусловный переход по адресу, указанному в поле JUMP ADDR.

JUMP ADDR=2047

1794: temp0=SGNEXT(IR).

//Т.к. бит непосредственного значения выставлен, то в процессоре ARC предусмотрена команда извлечения из регистра команд 13-ти битного значения.

A=IR

B=*

C=temp0

AMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

BMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

CMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

RD=0

WR=0

ALU=SGNEXT

COND=NEXT

//адрес следующей команды равен (текущий+1)

JUMP ADDR=*

1795: temp0=ADD(rs1, temp0); JUMP 1793.

A=*

//номер регистра берётся из поля rs1 регистра команд (IR)

B= temp0

C=temp0

AMUX=1 (код регистра-источника берётся из регистра команд (IR))

BMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

CMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

RD=0

WR=0

ALU=ADD

COND=JUMP

JUMP ADDR=1793

2047: PC=INC(PC); JUMP 0.

A=PC

B= *

C= PC

AMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

BMUX=0 (код регистра-источника берётся из регистра микрокоманд (MIR))

CMUX=0 (код регистра-приёмника берётся из регистра микрокоманд (MIR))

RD=0

WR=0

ALU=INC

COND=JUMP

JUMP ADDR=0