microcontroladores e interfacesalibaba.dei.uminho.pt/~csilva/mint/download/a3.pdf · 4...

57
Microcontroladores e Interfaces 3º Ano – Eng. Electrónica Industrial Carlos A. Silva 2º Semestre de 2005/2006 http://www.dei.uminho.pt/lic/mint Aula Aula A3 A3 15 Mar 05 15 Mar 05 - - M M

Upload: others

Post on 22-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

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

Datapath e a sua Unidade de Controlo

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. Silva55

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