Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Microcontroladores e Interfaces3º Ano – Eng. Electrónica Industrial
Carlos A. Silva
2º Semestre de 2005/2006http://www.dei.uminho.pt/lic/mint
Aula Aula –– A3A3
15 Mar 05 15 Mar 05 -- MM
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva3
Arquitectura do Conjunto de Instruções do MIPS-32
Recursos:
Nome Exemplo$s0 - $s7$t0 - $t9
32 Registos $zero$a0 - $a4$v0 - $v1$gp, $fp, $sp, $ra, $at
pow(2, 30) palavras de memória
memory[0], memory[4], ..., memory[4294967292]
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva4
Arquitectura do Conjunto de Instruções do MIPS-32
Recursos: Organização da Memóriamemória
k + 0
k + 4
k + 8
n
N + 4
• A memória é endereçada ao byte, ou seja, os endereços distinguem unidades de informação que tem o tamanho de um byte.
• Como o tamanho de uma palavra é de 32 bits, para aceder a elementos sucessivos, teremos que adicionar deslocamentos 4 bytes ao endereço.
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva5
Arquitectura do Conjunto de Instruções do MIPS-32
Recursos: Organização da Memóriamemória
n
N + 4
• Por exemplo, tivéssemos um array de 8 inteiros,
• int ar[8];
Este array ocuparia 32 bytes de posição de memória.
• Qual seria o estado da memória após a execução das seguintes operações:
• ar[0] = 1;
• ar[1] = 125689;
1000
F9EA
10
k + 0
k + 4
k + 8
assumindo que o endereço base de ‘ar’ é ‘k’
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva6
Arquitectura do Conjunto de Instruções do MIPS-32
Categoria Instrução Exemplo Significadoadd add $s1, $s2, $s3 $s1= $s2 + $s3
Arithmetic subtract sub $s1, $s2, $s3 $s1= $2 - $s3add immediate addi $s1, $s2, 100 $1= $2 + 100load word lw $s1, 100($s2) $s1= memory[$s2 + 100]store word sw $s1, 100($s2) memory[$s2 + 100]= $s1
Data transfer load half lh $s1, 100($s2) $s1= memory[$s2 + 100]store half sh $s1, 100($s2) memory[$s2 + 100]= $s1load byte lb $s1, 100($s2) $s1= memory[$s2 + 100]load upper immed. lui $s1, 100 $s1= 100*pow(2, 16)and and $s1, $s2, $s3 $s1= $s2 & $s3or or $s1, $s2, $s3 $s1= $s2 | $s3nor nor $s1, $s2, $s3 $s1= ~($s2 | $s3)
Logical and immediate andi $s1, $s2, 100 $s1= $s2 & 100or immediate ori $s1, $s2, 100 $s1= $s2 | 100shift left logical sll $s1, $s2, 10 $s1= $s2 << 10shift right logical srl $s1, $s2, 10 $s1= $s2 >> 10
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva7
Arquitectura do Conjunto de Instruções do MIPS-32
Adaptado de Microprocessadores@DEI - 02/03
branch on equal beq $s1, $s2, 25 if ($s1 == $s2) go to PC + 4 + 100
Conditional branch
branch on not equal bne $s1, $s2, 25 if ($s1 != $s2) go to PC + 4 + 100
set on less than slt $s1, $s2, $s3 if ($s2 < $s3) $s1= 1; else $s1= 0;
set on less than immediate
slti $s1, $s2, 100 if ($s2 < 100) $s1= 1; else $s1= 0;
jump j 2500 go to 10000Uncoditional
jumpjump register jr $ra go to $ra
jump and link jal 2500 $ra= PC + 4; go to 10000
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva8
Arquitectura do Conjunto de Instruções do MIPS-32
Field size 6 bits 5 bits 5 bits 5 bits 5 bits 6 bitsR-Format op rs rt rd shamt funcI-Format op rs rtJ-Format op
Fields
address / immediatetarget address
Exemplo:
add $t0, $s1, $s2, Qual é a codificação desta instrução ?
000000 10001 10010 01000 00000 100000op[0]
rs[17]
rt[18]
rd[8]
Shamt[0]
func[32]
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva9
Como podemos implementar a arquitectura do conjunto de instruções do MIPS-32 ?
Primeira solução: Ciclo único
CPU (Datapath + Unidade de Controlo)
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva10
DatapathO datapath efectua as operações aritméticas, lógicas e a mudança de estado do processador.
Unidade de ControloA unidade de controlo diz ao datapath, à memória e aos dispositivos de entrada/saída o que devem fazer de modo a efectuar a operação indicada pela instrução do programa.
CPU (Datapath + Unidade de Controlo)
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva11
Qual é a sequência de processamento durante a execução de uma instrução?
Instruction Fetch Instruction fetch phase1. O conteúdo do program
counter, PC, é usado para endereçar a memória de código.
2. O conteúdo da memória élido (palavra de 32 bits).
Adaptado de Microprocessadores@DEI - 02/03
Fluxo de execução das instruções
CPU (Datapath + Unidade de Controlo)
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva12
Qual é a sequência de processamento durante a execução de uma instrução?
Instruction Fetch
Instruction Decode
Instruction decode phase1. Interpreta o código da
instrução de modo a determinar o seu tipo e os seus operandos.
2. Lê os operandos a partir do file register.
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva13
Qual é a sequência de processamento durante a execução de uma instrução?
Instruction Fetch
Instruction Decode
Execute
Execute phaseCalcula o resultado ou estado
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva14
Qual é a sequência de processamento durante a execução de uma instrução?
Instruction Fetch
Instruction Decode
Execute
Results Store
Results store phaseGuarda o resultado no registo ou memória se necessário (Normalmente designado por Write Back)
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva15
Existem semelhanças entre as várias fases para os diferentes tipos de instruções ?
Instruction Fetch
Instruction Decode
Execute
Results Store
Estas duas últimas fases de processamento dependem do tipo de instrução.
Estas duas primeiras fases de processamento são comuns a todos os tipos de instruções
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva16
Após a execução dos passos comuns, as acções necessárias para a conclusão de uma instrução dependem da categoria ou da classe a que pertencem.
Contudo, mesmo em instruções de classes diferentes encontramos semelhanças nas suas micro-operações.
Que tipo de semelhanças encontramos?
Qual é a importância dessas semelhanças?
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva17
Por exemplo, após a leitura dos registos, todas as classes de instrução usam a ALU para
Cálculo do endereço (instruções de acesso àmemória)
Execução da operação (instruções de operação lógica/aritmética)
Realização de comparações (instruções de salto condicional)
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva18
Após a utilização da ALU, as acções diferemAs instruções de transferência de dados têm que aceder à memória para escrita ou para leitura.
As instruções aritméticas precisam actualizar registos com o resultado produzido pela ALU.
As instruções de salto condicional têm que alterar o endereço da próxima instrução (PC) em função do resultado da comparação.
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva19
Como projectar a organização interna do CPU ?
1. Analisar as operações do conjunto de instruções e estabelecer os requisitos do datapath.
Normalmente, usa-se uma notação de transferência de registo (RTN) para descrever as micro-operações
2. Seleccionar os componentes do datapath e estabelecer uma estratégia de temporização
Adaptado de Microprocessadores@DEI - 02/03
CPU (Datapath + Unidade de Controlo)
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva20
3. “Concatenar” os componentes do datapath de modo a construir um datapath que satisfaça as micro-operações anteriormente identificadas
4. Analisar a implementação de cada instrução de modo a determinar a função de todos os sinais de controlo necessários para o datapath
5. Construir a unidade de controlo baseando-se na temporização das micro-operações e nos sinais de controlo anteriormente identificados
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva21
Quais os passos a seguir ao projectar o datapath?
1. Usando uma RTN, escrever as sequências de micro-operações necessárias para um número representativo de instruções
2. Com base nas micro-operações anteriormente definidas, criar um datapath inicial onde se especifica possíveis destinos para cada dado de entrada (ex: registos, ALU):
Estabelece-se os requisitos de ligação para os componentes do datapath.Sempre que várias fontes são ligadas à uma única entrada deve-se acrescentar um multiplexer (selector) com dimensão apropriada.
Adaptado de Microprocessadores@DEI - 02/03
CPU (Datapath + Unidade de Controlo)
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva22
3. Determinar o pior atraso de propagação no datapath e com base neste atraso especificar o ciclo de relógio do datapath
4. Concluir as sequências de micro-operações para todas as restantes instruções adicionando ligações e selectores quando necessários.
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva23
Datapath abstracto de um único ciclo de relógio
i. Todas as micro-operações de uma instrução são efectuadas num único ciclo de relógio
ii. Muitos dos recursos de datapath podem ser partilhadas por fluxos de instruções que sejam diferentes
Adaptado de Microprocessadores@DEI - 02/03
CPU (Datapath + Unidade de Controlo)
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva24
III. Todos os recursos de datapath que podem ser usados mais do que uma vez por uma determinada instrução devem ser duplicados
Será necessário uma memória de código e outra de dados
Porquê ?
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva25
Como podemos implementar o datapath daprimeira fase do processamento de uma instrução ?
Primeiro passo: “Analisar as operações”Precisamos de um local para armazenar as instruções de um programa – logo precisaremos de UNIDADE DE MEMÓRIA.
Precisamos manter o conteúdo do PROGRAM COUNTER que deve SER SOMADO após o FETCH – logo precisaremos de um SOMADOR e um REGISTO.
Adaptado de Microprocessadores@DEI - 02/03
CPU (Datapath + Unidade de Controlo)
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva26
Componentes necessários ao datapath
Parcela de datapath usado para efectuar o instruction fetching e actualização do PC
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva27
Formatos de Instrução do MIPS
op rs rt rd shamt funct061116212631
6 bits 6 bits5 bits5 bits5 bits5 bitsR-Type
op rs rt Address/immediate016212631
6 bits 16 bits5 bits5 bits
I-Type: ALULoad/Store, Branch
• Op : Opcode, especifica a operação da instrução• rs, rt, rd : especificadores dos registos fonte e destino.• Shamt : quantidade de deslocamento• Funct : selecciona a variante da operação especificada no campo “op”. • address / immediate : Offset de um endereço ou valor imediato.• target address : endereço destino de uma instrução de salto incondicional
J-Type: Jumps op target address02631
6 bits 26 bits
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva28
Implementação de um datapath para as instruções R-Type
Todas as instruções R-Type lêem dois registos, efectuam uma operação aritmética ou lógica usando os conteúdo destes registos e armazenam o resultado.
Exemplo da sequência de micro-operações para ADDU rd, rs, rt
Instruction ← Mem[PC]PC ← PC + 4R[rd] ← R[rs] + R[rt]
op rs rt rd shamt funct061116212631
6 bits 6 bits5 bits5 bits5 bits5 bitsR-Type
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva29
Será necessário aceder aos registos presentes no register file do processador.
Será necessário uma ALU para a realização das operações aritméticas e lógicas.
op rs rt rd shamt funct061116212631
6 bits 6 bits5 bits5 bits5 bits5 bitsR-Type
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva30
Quais são os componentes necessários para implementar instruções no formato R-Type ?
Register File:• Contém todos os registos do processador.• Apresenta dois portos de leitura e um de escrita.• A escrita nos registos é controlado pelo sinal de controlo de escrita• A ocorrência da escrita é na transição do relógio• O mesmo registo pode ser lido e escrito no mesmo ciclo de relógio.
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva31
O datapath para as instruções com o formato R-Type será
SLT111Subtracção 110Adição010Ou-lógico001E-lógico000
FunçõesLinhas de controlo da
ALUAs operações da ALU são controladas pelos 3-bits conforme a tabela:
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva32 Adaptado de Patterson@UCB - 97
Clk
PC
Rs, Rt, Rd,Op, Func
Clk-to-Q
ALUctr
Instruction Memory Access Time
Old Value New Value
RegWr Old Value New Value
Delay through Control Logic
busA, BRegister File Access Time
Old Value New Value
busWALU Delay
Old Value New Value
Old Value New Value
New ValueOld Value
A escrita no registo ocorre aqui
32Result
ALUctr
Clk
busW
RegWr
3232
busA
32busB
5 5 5
Rw Ra Rb32 32-bitRegisters
Rs RtRd
AL
U
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva33
Implementação de um datapath para as instruções I-Type [SW e LW]
I. As instruções de load(lw) e store(sw) calculam o endereço de memória, adicionando ao registo base ($t2) um offset de 16-bit com sinal
II. Exemplo da sequência de micro-operações para lw $t1, offset_value($t2)
Instruction ← Mem[PC]PC ← PC + 4R[rt] ← Mem[ R[rs] + SignExt[imm16] ]
op rs rt Address/immediate016212631
6 bits 16 bits5 bits5 bits
I-Type: ALULoad/Store, Branch
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva34
III. Exemplo da sequência de micro-operações para sw $t1, offset_value($t2)
Instruction ← Mem[PC]PC ← PC + 4Mem[ R[rs] + SignExt[imm16] ] ← R[rt]
IV. Será necessário aceder ao register fileNa instrução sw o valor a armazenar deve ser lido a partir do register file através do registo especificado em $t1Na instrução lw o valor lido da memória deve ser escrito no register file e no registo especificado em $t1
op rs rt Address/immediate016212631
6 bits 16 bits5 bits5 bits
I-Type: ALULoad/Store, Branch
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva35
V. Será necessário uma unidade para estender o sinal do offset de 16-bits de modo a obter um valor de 32-bits
VI. Será ainda necessário uma unidade de memória de/para leitura/escrita do dado que deve apresentar
sinais de controlo para escrita e leitura
Um endereço de entrada
Uma entrada para o dado a ser escrito na memória
op rs rt Address/immediate016212631
6 bits 16 bits5 bits5 bits
I-Type: ALULoad/Store, Branch
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva36
datapath para as instruções load/store
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva37
Implementação de um datapath para as instruções I-Type [beq $t1, $t2, offset]
No caso do MIPS, o ISA requer que:
o endereço base a usar no cálculo do endereço de salto seja o da instrução seguinte.o offset seja multiplicado por 4
op rs rt Address/immediate016212631
6 bits 16 bits5 bits5 bits
I-Type: ALULoad/Store, Branch
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva38
Exemplo da sequência de micro-operações para beq$t1, $t2, offset
Instruction ← Mem[PC]
COND ← (R[rs] == R[rt])if ( COND eq 0 )
PC ← PC + 4 + ( SignExt(imm16) x 4 )else
PC ← PC + 4
op rs rt Address/immediate016212631
6 bits 16 bits5 bits5 bits
I-Type: ALULoad/Store, Branch
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva39
I. Será necessário uma ALU para determinar a condição de salto
Requer o acesso ao register file para obter os dois operandos especificados em $t1 e $t2O controlo do ALU deve estar seleccionado para a operação de subtracção
II. Será necessário um somador e uma unidade para estender o sinal
para determinar o endereço de saltoIII. Será necessário alterar a parcela do datapath do
instruction fetch. Porquê?
op rs rt Address/immediate016212631
6 bits 16 bits5 bits5 bits
I-Type: ALULoad/Store, Branch
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva40 Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva41
Implementação de um datapath para as instruções J-Type [j jmp_target]
Exemplo da sequência de micro-operações para j jump_target
Instruction ← Mem[PC]PC ← PC + 4PC ← PC(31-28), jump_target, 00
Será necessário alterar a parcela do datapath do instruction fetch.Em termos de componentes do datapath será apenas necessário um shifter para efectuar a multiplicação por 4 ou então concatenar 00 ao offset do salto.
J-Type: Jumps op target address02631
6 bits 26 bitsAdaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva42
Apresente uma combinação para o datapath para as instruções R-Type e Load/Store
Usando um único register file e ALU, a segunda entrada do ALU pode ser a saída de um registo (instrução R-Type) ou a saída da unidade de extensão do sinal (instruções load/store)
Torna-se necessário a utilização de um multiplexer nesta entrada da ALU para seleccionar adequadamente a entrada
O valor guardado no registo destino pode ser a saída da ALU (instrução R-Type) ou a memória (instruções load)
Torna-se necessário a utilização de outro multiplexer na entrada de dados do register file
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva43
Datapath para instruções R-Type e Load/Store com a parcela do datapath para o fetch da instrução
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva44
Apresente uma combinação para o datapath para as instruções R-Type, Load/Store e de salto condicional
A instrução de salto condicional usa a ALU principal para comparar os operandos nos registos
Assim sendo, mantém-se o somador usado para o cálculo do endereço de salto
A próxima instrução a ser executada será sempre a próxima instrução sequencial para as instruções R-Type e load/store, mas para a instrução de salto condicional pode ser a instrução no endereço destino do salto
Torna-se necessário a utilização de um multiplexer para actualizar PC com a instrução sequencial (PC+4) ou com a instrução no endereço do salto
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva45
Datapath para instruções R-Type, Load/Store e salto condicional com a parcela do datapath para o fetchda instrução
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva46
Como projectar a Unidade de Controlo ?Baseando-se na instrução deve ser gerado:
Sinais de escrita para cada elemento sequencialControlo de selecção para cada multiplexerControlo de operação da ALU
Que tecnologia usaria na Implementação da Unidade de Controlo ?
Microsequenced ControlUsa memória de pesquisa para obter os sinais de controlo
Hardwaried ControlUsa lógica sequencial e combinacional para gerar os sinais de controlo
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva47
Utilização do datapath por uma instrução R-Type
Linhas pretas carregadas mostram as parcelas do datapath activas durante a execução das instruções R-Type
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva48
Utilização do datapath por uma instrução Load
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva49
Utilização do datapath por uma instrução BEQ
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva50
Quais as principais desvantagens de um processador de ciclo único ?
A duração de um ciclo máquina é definido pelo caminho crítico, neste caso da instrução LOAD (mais longa).A execução de todas as instruções tem a duração da instrução mais lenta.Uma unidade de memória real não tem um comportamento tão bem definido como o da memória ideal.
Nem sempre pode concluir o acesso ao dado, num único ciclo (de curta duração).
Não permite a execução simultânea (pipelining) de várias instruções (subutilização das unidades funcionais).
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva51
Influência da arquitectura do conjunto de instrução na organização do hardware
A arquitectura do MIPS torna o projecto mais simples
As instruções têm todas o mesmo tamanhoComo seria no 8051 ?
Os registos fonte estão sempre no mesmo localOs imediatos têm o mesmo tamanho e posiçãoAs operações são sempre executadas sobre registos ou imediatos
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva52
CPU de Múltiplos Ciclos
Como proceder para reduzir a duração do ciclo?
Decomposição de cada instrução num conjunto de passos em função da utilização das unidades funcionais
Cada passo será executado num único ciclo
Uma instrução poderá usar várias vezes à mesma unidade funcional desde que em ciclos diferentes
Reduzindo deste modo, a quantidade de hardwarenecessário
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva53
Cada instrução passará a ser executada em dois ou mais ciclos rápidos em vez de um único ciclo lento.
Elementos de armazenamento (ex: registos) serão introduzidos entre as unidades funcionais para conservar a saída até a respectiva utilização em ciclos posteriores.
Dados usados pela mesma instrução num ciclo posterior são armazenados em registos temporários.
Dados usados por instruções adjacentes são armazenados nos elementos visíveis ao programador (ex: PC, Memória ou Register File).
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva54
Datapath abstracto de múltiplos ciclos de relógio
Partilha de uma unidade de memória entre código e dados
Eliminação dos somadores através da partilha da ALU entre instruções
A partilha de unidades funcionais requer a utilização de selectores com muito mais entradas e controlos, assim como de registos temporários para conservar dados entre ciclos de relógio
O registo IR deve conservar a instrução até a conclusão da mesma, por isso, requer um sinal de controlo para escrita
Adaptado de Microprocessadores@DEI - 02/03
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva56
Datapath multi-ciclo com as linhas de controlo
Microcontroladores e Interfaces 2005/2006 – Carlos A. Silva57
Datapath de Único ciclo e múltiplos ciclos
ClkCiclo 1 Ciclo 2
Clk
Ciclo 1
Implementação em múltiplos ciclos:
Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 Ciclo 10
Load StoreIF ID EX MEM WB IF ID EX MEM IF
R-type
2ns
Implementação num único ciclo:Load Store
8 nsDesperdício
CPU de único ciclo Vs. CPU múltiplos ciclos