Architektura typu Multi
Transkrypt
Architektura typu Multi
Instruction register PC Address Data A Register # Instruction Memory or data Data Memory data register ALU Registers Register # B Register # Elementy architektury typu multi–cycle ALUOut Architektura Multi-cycle • każda instrukcja wykonuje się w kilku cyklach zegara • instrukcje wymagają różnej liczby cykli zegara • dane wykorzystywane przez jedną instrukcję, umieszczane są w rejestrach pośrednich i wykorzystywane w następnych cyklach zegara tej samej instrukcji • dane będące końcowym wynikiem instrukcji, umieszczane są w pliku rejestrów, pamięci zewnętrznej lub w PC • redukcja dużych bloków architektury i dodanie rejestrów pośrednich Bloki architektury: • • • • jednolita pamięć (instrukcje programu + dane) blok pliku rejestrów jeden element wykonawczy — ALU dodatkowe rejestry pośrednie, na wyjściu każdego bloku Rejestry pośrednie (niewidoczne dla programisty): IR MDR A,B ALUOut — — — — instruction register — przechowuje kod instrukcji w czasie jej wykonywania memory data register — przechowuje dane odczytane z pamięci rejestry przechowujące odczytane wartości z pliku rejestrów mikroprocesora rejestr przechowujący wynik działania ALU PC 0 M u x 1 Address Memory MemData Write data Instruction [25-21] Read register 1 Instruction [20-16] Read Read register 2 data 1 Registers Write Read register data 2 Instruction [15-0] Instruction register Instruction [15-0] Memory data register 0 M Instruction u x [15-11] 1 A B 0 M u x 1 Sign extend 32 Zero ALU ALU result ALUOut 0 4 Write data 16 0 M u x 1 1 M u 2 x 3 Shift left 2 Dodatkowe multiplexery przed ALU są konieczne do realizacji wszystkich typów instrukcji oraz inkrementacji PC za pomocą tylko jednej jednostki wykonawczej Ścieżki danych architektury multi–cycle IorD PC 0 M u x 1 MemRead MemWrite RegDst Memory MemData Instruction register Instruction [15-0] Memory data register 0 M u x 1 Read register 1 Read Read data 1 register 2 Registers Write Read register data 2 Instruction [20-16] Instruction [15-0] ALUSrcA RegWrite Instruction [25-21] Address Write data IRWrite 0 M Instruction u x [15-11] 1 A B 0 M u x 1 16 Sign extend 0 4 Write data 32 Shift left 2 Zero ALU ALU result 1 M u 2 x 3 ALU control Instruction [5-0] MemtoReg ALUSrcB ALUOp Sygnały sterujące architektury multi–cycle ALUOut PCWriteCond PCSource PCWrite ALUOp Outputs IorD ALUSrcB MemRead ALUSrcA Control MemWrite RegWrite MemtoReg IRWrite Op [5-0] RegDst 0 M 26 Instruction [25-0] PC 0 M u x 1 Shift left 2 Instruction [31-26] Address Memory MemData Write data Instruction [25-21] Read register 1 Instruction [20-16] Read Read register 2 data 1 Registers Write Read register data 2 Instruction [15-0] Instruction register Instruction [15-0] Memory data register 0 M Instruction u x [15-11] 1 B 4 Write data 0 M u x 1 16 Sign extend 32 Shift left 2 Jump address [31-0] Zero ALU ALU result 0 1 M u 2 x 3 ALU control Instruction [5-0] Kompletna architektura multi–cycle x 2 PC [31-28] 0 M u x 1 A 28 1 u ALUOut Sygnał RegDst RegWrite ALUSrcA MemRead MemWrite MemToReg IorD IRWrite PCWrite PCWriteCond 0 numer rejestru do zapisu — PC do ALU — — dane do zapisu w pliku rejestrów z ALUOut pamięć adresowana PC — — — 1 numer rejestru do odczytu zezwolenie na zapis od pliku rejestrów A do ALU zezwolenia na odczyt z pamięci zezwolenia na zapis do pamięci dane do zapisu w pliku rejestrów z MDR pamięć adresowana ALUOut zezwolenia na zapis do IR zezwolenia na zapis do PC warunkowy zapis do PC 1-bitowe sygnały sterujące architektury multi–cycle Sygnał wartość ALUOp 00 01 10 ALUSrcB 00 01 10 11 PCSource 00 01 10 Działanie dodawanie (load-store) odejmowanie (branch) zależnie od pola Function (R-type) B (R-type) do ALU 4 do ALU instrukcja[15-0] (load-store) do ALU instrukcja[15-0]«2 (branch) do ALU ALU (PC+4) do PC ALUOut (branch) do PC PC[31-26]+IR[25-0]«2 (jump) do PC 2-bitowe sygnały sterujące architektury multi–cycle (Op = 6 EQ ') 'B = (Op Branch completion 8 Jump completion 9 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 PCWrite PCSource = 10 p = ') W 'S Memory access 3 Memory access 5 MemRead IorD = 1 4 ALUSrcA =1 ALUSrcB = 00 ALUOp = 10 ) (O (Op = 'LW') ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 ype -t =R (Op = 'J') ') 'LW W') = 'S p O Execution or ( ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 (O Memory address computation 2 1 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Start Instruction decode/ register fetch Instruction fetch p 0 R-type completion 7 MemWrite IorD = 1 RegDst = 1 RegWrite MemtoReg = 0 Write-back step RegDst= 0 RegWrite MemtoReg=1 Kompletny diagram stanów bloku sterowania Sygna³y steruj¹ce Blok logiki kombinacyjnej Control[n-0] Outputs (nastêpny stan) Inputs Rej. Stanu Opcode instrukcji Control = F( Q(t), Opcode) Q(t+1) = F( Q(t), Opcode) Instr[31-26] Q[3-0] Realizacja sterowania w postaci maszyny stanowej Pamiêæ ROM dane Sygna³y steruj¹ce adres Opcode Realizacja sterowania w postaci pamięci ROM