Índice Sumário Instrução com atraso maior no datapath de um ciclo. Datapath multiciclo: introdução. 4. O Processador: Unidades de Caminho de Dados e de o 4.1 Diagrama de Blocos de um Processador 4.2 Unidade de Caminho de Dados 4.3 Unidade de o 4.4 Ciclo do Processador 4.5 Pipelining 4.6 Aspectos Relacionados com Pipelining na Execução de um Programa 4.7 Caso de Estudo: O MIPS R2000 e o Pentium Pro 1 Aula baseada no curso: CS152 Computer Architecture and Engineering, Dave Patterson, UCB, USA Tudo! (datapath de um ciclo) op 6 Instr<31:26> 2 busw 1 Mux 0 Rs Rt RegWr 5 5 5 Clk Main Rd imm16 Instr<15:0> Rt Rw Ra Rb -bit Registers 16 op : busb Extender busa Clk 3 0 Mux 1 Unit func Instr<5:0> 6 Data In Clk Zero <31:0> Rt <21:25> WrEn Rs <16:20> Adr Data ory Rd <11:15> 3 <0:15> Imm16 0 Mux 1 toreg 1
Clk Rs, Rt, Rd, Op, Func Atraso maior (load) Clk-to-Q oey Access Time Delay through Logic RegWr busa busb toreg Delay through Extender & Mux Register Write Occurs Register File Access Time Delay Address Data ory Access Time busw New 3 4 Desvantagens do processador de um ciclo Tempo do Ciclo longo: Tempo do ciclotem de ser suficiente para a instrução load: s Clock -to-q + ory Access Time + Register File Access Time + Delay (address calculation) + Data ory Access Time + Register File Setup Time + Clock Skew O tempo de ciclo para o load é muito maior do que o necessário para as outras instruções 2
Visionamento abstracto do nosso processador uniciclo op Main fun control Zero Rd RegWr Next Register Ext Access Reg. Wrt Data Result Store 5 Processador Multiciclo Descodifica OPcode Lógica de o / Store (PLA, ROM) Instrução Condições Pontos de o microinstrução Datapath exactamente um comando de controlo ou micro-instrução Em geral, o controlador é uma máquina de estados finitos Micro-instruções também podem controlar a sequência (ver mais 6 tarde) 3
Onde estamos agora? Processor ory Input Datapath Output Tópico das próximas 2 aulas: Projecto do datapath para um datapath multiciclo 7 O que há de errado com o nosso processador de 1 ciclo? Arithmetic & Logical Inst ory Reg File mux mux setup Load Instory Reg File mux Data mux setup Critical Path Store Instory Reg File mux Data Branch Inst ory Reg File cmp mux Tempo de ciclo longo Todas as instruções demoram o mesmo tempo do que as instruções mais lentas órias reais não são tão convenientes como a memória ideal: Nem sempre conseguem ter o trabalho feito num único ciclo de 8 curta duração 4
Tempo de Acesso a órias Física => memórias rápidas são pequenas (memórias grandes são lentas) address address decoder Storage Array selected word line storage cell bit line sense amps Utilização de hierarquias de memórias 9 Processador Cache 1 ciclo proc. bus L2 Cache mem. bus ória 2-3 ciclos 20-50 ciclos Redução do tempo de ciclo Dividir o datapath e inserir registos entre cortes Ex.: fazer o mesmo trabalho em 2 ciclos rápidos em vez de 1 ciclo lento Lógica combinatória Acíclica => Lógica combinatória Acíclica (A) Lógica combinatória Acíclica (B) 10 5
Lógica do próximo endereço <= branch? + offset : + 4 Busca da instrução Reg <= [] Acesso aos registos A <= R[rs] Operação da R <= A + B Limites básicos no tempo de ciclo zero Rd RegWr Next Operand Exec Access Reg. File 11 Transformação do datapath de um ciclo em datapath multiciclo Adicionar registos entre os passos mais pequenos Next zero Rd RegWr Operand Exec Access Reg. File 12 6
Ex.: datapath multiciclo zero Rd ToReg RegWr Next IR Reg File Operand A B Ext R Access M Data Reg. File Result Store Caminho crítico? 13 Nome do passo Busca da Instrução Descodificação da Inst./busca de registos Execução, calculo do endereço, resolução do salto Acesso à memória, finalização de instruções R-type Escreve Resultado 14 Passos de Execução no datapath multiciclo Acções para instruções R- type out = A op B; Reg[IR[15:11]] = out; Acções para instruções com acesso a memória IR = MEM[]; = + 4; A = Reg[IR[25:21]]; B = Reg[IR[20:16]]; Target = + (SignEx(IR[15:0]) << 2); out = A + SignEx(IR[15:0]); Load: mem -data = MEM[out]; ou Store: MEM[out] = B; Load: Reg[IR[20:16]] = mem-data; Acções para saltos condicionais If(A == B) then = Target Tempo 7
Nome do passo Passos de Execução no datapath multiciclo Acções para saltos incondicionais (jump) Busca da Instrução Descodificação da Inst./busca de registos Execução, calculo do endereço, resolução do salto Acesso à memória, finalização de instruções R-type IR = MEM[]; = + 4; A = Reg[IR[25:21]]; B = Reg[IR[20:16]]; Target = + (SignEx(IR[15:0]) << 2); = [31:28] IR[25:0] 00; Tempo Escreve Resultado 15 representa a concatenação 8