Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza...

14
Organiza Organizaç ão e Arquitetura ão e Arquitetura de computadores de computadores Prof. Dr. Luciano José Senger O processador: o caminho de dados e o controle Introdu Introduç ão ão • O desempenho de um programa depende: – Número de instruções (depende do set de instruções) – Velocidade de clock (depende da implementação) – CPI - Número de ciclos gastos por instrução (depende da implementação do ISA) • Implementação do MIPS simplificada: – Intruções de referência à memória (lw e sw) – Instruções lógicas e aritméticas (add, sub, and, or, slt) – Instruções de controle de fluxo (saltos) beq e j • lw $t1, offset($t2) – Load word – $t1 = valor armazenado na posição de memória $t2 + offset • sw $t1, offset($t2) – Store word – posição de memória [$t2 + offset] = $t1 • Beq $t1, $t2, endereço – Branch if equal (salte se igual) Introdu Introduç ão ão • Implementação simplificada – Diretrizes: Torne o caso comum mais rápido A simplicidade favorece a regularidade – As demais instruções podem ser implementadas com princípios semelhantes – A arquitetura do conjunto de instruções influencia os aspectos de implementação: instruções mais simples necessitam de uma implementação também mais simples • Memória – Inicialmente as memórias de programa e controle separadas Uma sinopse da implementa Uma sinopse da implementaç ão ão • Todas as instruções do conjunto de instruções têm os dois primeiros passos idênticos: – Enviar o valor armazenado no PC para a memória de programa e buscar a instrução dessa memória – Ler um ou dois registradores, usando os campos de instrução para selecionar os registradores a serem lidos. Para a instrução load word, precisamos ler apenas um registrador, mas a maioria das outras instruções exige a leitura de dois registradores • Mesmo entre diferentes classes de instruções, há algumas semelhanças: – Todas as classes utilizam a UAL após a leitura dos registradores: • Instruções de referência à memória: efetuar o cálculo do endereço • Instruções aritméticas e lógicas: efetuar a operação • Desvios condicionais: efetuar comparação (subtração) • Após usar a UAL, as ações necessárias diferem – Referência a memória: escreve dado na memória – Instrução aritmética: escreve dado no registrador Uma visão abstrata da implementa Uma visão abstrata da implementação do ão do subconjunto MIPS mostrando as unidades subconjunto MIPS mostrando as unidades funcionais principais e as conexões principais funcionais principais e as conexões principais Visão abstrata: Multiplexador ou seletor de dados Multiplexador ou seletor de dados • Barramento de controle – Operações devem ser selecionadas através de multiplexadores – Circuito com 2 n linhas de entrada, n linhas de controle e 1 saída – Seleciona uma única saída a partir de várias entradas, sendo a entrada escolhida é copiada para a saída MUX 4-para-1 D0 D1 D2 D3 S2 S1 F S2 S1 F 0 0 D0 0 1 D1 1 0 D2 1 1 D3

Transcript of Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza...

Page 1: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

OrganizaOrganizaçção e Arquitetura ão e Arquitetura de computadoresde computadores

Prof. Dr. Luciano José Senger

O processador: o caminho de dados e o controle

IntroduIntroduççãoão

• O desempenho de um programa depende:– Número de instruções (depende do set de instruções)– Velocidade de clock (depende da implementação)– CPI - Número de ciclos gastos por instrução (depende da

implementação do ISA)• Implementação do MIPS simplificada:

– Intruções de referência à memória (lw e sw)– Instruções lógicas e aritméticas (add, sub, and, or, slt)– Instruções de controle de fluxo (saltos) beq e j

• lw $t1, offset($t2)– Load word– $t1 = valor armazenado na posição de memória $t2 + offset

• sw $t1, offset($t2)– Store word– posição de memória [$t2 + offset] = $t1

• Beq $t1, $t2, endereço– Branch if equal (salte se igual)

IntroduIntroduççãoão

• Implementação simplificada– Diretrizes:

• Torne o caso comum mais rápido

• A simplicidade favorece a regularidade

– As demais instruções podem ser implementadas com princípios semelhantes

– A arquitetura do conjunto de instruções influencia os aspectos de implementação: instruções mais simples necessitam de uma implementação também mais simples

• Memória– Inicialmente as memórias de programa e controle

separadas

Uma sinopse da implementaUma sinopse da implementaççãoão

• Todas as instruções do conjunto de instruções têm os dois primeiros passos idênticos:– Enviar o valor armazenado no PC para a memória de programa e

buscar a instrução dessa memória– Ler um ou dois registradores, usando os campos de instrução para

selecionar os registradores a serem lidos. Para a instrução loadword, precisamos ler apenas um registrador, mas a maioria das outras instruções exige a leitura de dois registradores

• Mesmo entre diferentes classes de instruções, há algumas semelhanças:– Todas as classes utilizam a UAL após a leitura dos registradores:

• Instruções de referência à memória: efetuar o cálculo do endereço• Instruções aritméticas e lógicas: efetuar a operação• Desvios condicionais: efetuar comparação (subtração)

• Após usar a UAL, as ações necessárias diferem– Referência a memória: escreve dado na memória– Instrução aritmética: escreve dado no registrador

Uma visão abstrata da implementaUma visão abstrata da implementaçção do ão do subconjunto MIPS mostrando as unidades subconjunto MIPS mostrando as unidades funcionais principais e as conexões principais funcionais principais e as conexões principais

Visão abstrata:

Multiplexador ou seletor de dadosMultiplexador ou seletor de dados

• Barramento de controle

– Operações devem ser selecionadas através de multiplexadores

– Circuito com 2n linhas de entrada, n linhas de controle e 1 saída

– Seleciona uma única saída a partir de várias entradas, sendo a entrada escolhida é copiada para a saída

MUX4-para-1

D0

D1

D2

D3

S2 S1

F

S2 S1 F

0 0 D0

0 1 D1

1 0 D2

1 1 D3

Page 2: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

A implementaA implementaçção bão báásica do subconjunto MIPS sica do subconjunto MIPS incluindo as linhas de controle e os multiplexadores incluindo as linhas de controle e os multiplexadores necessnecessáários rios

Visão abstrata:

MMéétodo de temporizatodo de temporizaçção ão ((clockingclocking))• Clocking

– Define quando os sinais podem ser lidos e quando podem ser escritos

– Evita circunstâncias onde um sinal é lido ao mesmo tempo que o mesmo sinal foi escrito; a leitura pode retornar o valor antigo, o valor recente ou uma combinação entre os dois

• Sincronização acionada por transição– Significa que quaisquer valores armazenados em um

elemento lógico seqüencial são atualizados apenas em uma transição de clock

– Como apenas os elementos de estado podem armazenar valores de dados, qualquer coleção de lógica combinatória precisa ter suas entradas vindo de um conjunto de elementos de estado e suas saídas escritas em um conjunto de elementos de estado

A lA lóógica combinacional, os elementos de estado e o gica combinacional, os elementos de estado e o clockclock relacionadosrelacionados

• Em um sistema digital síncrono, o clock determina quando os elementos de estado escreverão valores no armazenamento interno.Todos os elementos que apresentam um estado, como a memória, são considerados acionados por transição

• O método acionado por transição permite que um elemento de estado seja lido e escrito no mesmo ciclo de clock sem criar uma disputa que poderia levar a valores de dados indeterminados. O período de clocknecessita ser longo o suficiente para que os valores de saída estabilizem

Construindo o caminho de dadosConstruindo o caminho de dados

• Elementos principais do caminho de dados– PC, memória de instruções e somador

Construindo o caminho de dadosConstruindo o caminho de dados

• Banco de registradores– Devido às instruções de formato R terem três operandos de registrador,

precisamos ler duas words de dados do banco de registradores e escrever uma word de dados no banco de registradores.

– 3 entradas de 5 bits (32 registradores):• 2 entradas com endereço dos registradores lidos• 1 entrada com endereço do registrador escrito

– 2 saídas de 32 bits: operandos p/ a UAL– 1 entrada de 32 bits: escrita do resultado

• As escritas são controladas pelo sinal de controle de escrita, que precisa estar ativo para que um escrita ocorra na transição do clock

Construindo o caminho de dadosConstruindo o caminho de dados• Instruções do formato R

– Executa a operação (op and funct) utilizando comooperandos os valores em rs e rt

– Armazenam o resultado no banco de registradores (no endereço rd)

– Todas as intruções do tipo R precisam• Ler dois registradores• Realizar uma operação na UAL com os conteúdos dos

registradores• Escrever o resultado em um registrador• Instruções aritméticas lógicas: ADD, SUB, AND, OR• Ex: add $t1, $t2, $t3

R-type:

31 25 20 15 5 0

op rs rt rd functshamt

10

R-type:

31 25 20 15 5 0

op rs rt rd functshamt

10

Page 3: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Construindo o caminho de dadosConstruindo o caminho de dados

• Instruções de load/store– lw $t1, offset($t2) e sw $t1, offset($t2)

– Calculam um endereço de memória somando o registrador base ($t2 no exemplo) ao número de 16 bits sem sinal estendido

– Para sw, o valor a ser armazenado na memória de dados é lido do registrador; para lw: o valor é lido da memória de dados e escrito no registrador

– É necessária uma unidade para estender o sinal de 16 para 32 bits e uma memória para ler e escrever os dados

Construindo o caminho de dadosConstruindo o caminho de dados

• A instrução beq– Tem três operandos

• Dois registradores utilizados para a comparação • Offset indicando o endereço de memória para o deslocamento

(PC + offset)

– Instruções de desvio• O conjunto de instruções especifica que a base para o cálculo do

endereço de desvio é o endereço da instrução seguinte ao desvio. Como calculamos PC + 4 no caminho de dados para a busca de instruções, é fácil usar esse valor como a base para calcular o endereço de destino do desvio.

• A arquitetura é especificada de forma que o campo offset édeslocado 2 bits para a esquerda de modo que seja uma offsetde uma word; essa forma de cálculo aumenta a amplitude do salto por um fator igual a 4

Construindo o caminho de dadosConstruindo o caminho de dados

• A instrução beq– Além de calcular o endereço do desvio, é necessário verificar se o

desvio deve ser executado ou não, de acordo com a comparação entre os dois registradores

– Assim, o caminho de dados do desvio precisa de duas operações:• Calcular o endereço de destino do desvio• Comparar o conteúdo do registrador (sinal zero da UAL)

Construindo o caminho de dadosConstruindo o caminho de dados

• Operações lógicas e de acesso à memória– Semelhantes, com as diferenças principais:

• As instruções lógicas e aritméticas usam a ALU com as entradas vindas de dois registradores; as instruções de acesso à memória também podem usar a ALU para fazer o cálculo do endereço, embora a segunda entrada seja o campo offset de 16 bits com o sinal estendido da instrução

• O valor armazenado em um registrador de destino vem da ALU (paraum instrução do tipo R) ou da memória (para um load)

Construindo o caminho de dadosConstruindo o caminho de dados

• Integrando os caminhos de dados– Os caminhos de dados são unidos e linhas de controle são

adicionadas, assim como os multiplexadores necessários

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Projeto de ciclo único: a busca, decodificação e execuçãodas instruções ocorre em um único ciclo de clock

– Nenhum recurso do caminho de dados pode ser usados mais de uma vez por instrução, de forma que aqueles que necessitam ser utilizados mais de uma vez devem ser replicados (p.e. memória de instruções e de dados separados, mais de um somador)

– multiplexadores nsão necessários na entrada dos componentescompartilhados para realizar a seleção

– Sinais de escrita para controlar a gravação no banco de registradores e na memória de dados

• O tempo de ciclo é determinado pelo tamanho do caminhomais longo (caminho com maior tempo de execução)

Page 4: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Acrescentando o controle– O controle de ALU

• Dependendo da instrução, uma das operações abaixo deveráser executada

• Aritméticas e lógicas (and, or, sub, add, slt)• Load/store (add para cálculo do endereço)• BEQ (subtração)

Soma0010

Set less than0111

Subtração0110

OR0001

AND0000

FunçãoEntrada de controle da UAL

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Acrescentando o controle– O controle da ALU

• Podemos gerar a entrada do controle da ALU de 4 bits usando uma pequena unidade de controle que tenha como entradas o campo funct da instrução e um campo control de 2 bits, que chamamos de OpALU.

• OpALU indica:– 00 : add para load/stores

– 01: sub para beq– 10: determinada pela operação do campo funct

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Controle da ALU– Criar 2 bits de controle, que juntamente com o campo funct,

definem a função.– Entradas UALOp1 e UALOp2:

• 00: loads e stores (soma endereços)• 01: beq• 10: a função é determinada pelo campo de função

0001or100101OR10Tipo R

Ação da ALU desejada

Campo funct

UALOp

0111

0000

0110

0010

0110

0010

0010

Entrada de controle da

ALU

101010

100100

100010

100000

XXXXXX

XXXXXX

XXXXXX

subtraçãosubtract10Tipo R

set less thanset less than10Tipo R

somaadd10Tipo R

somastore word00SW

andAND10Tipo R

subtraçãobranch equal01BEQ

somaload word00LW

Operação da Instrução

Código de operação da

instrução

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Controle da ALU– A partir dos valores de entrada e saída, pode-se criar

um sistema que mapeie o subconjunto de valores possíveis para uma saída correta de controle para a ALU

– Tabela verdade reduzida

0111

0001

0000

0110

0010

0110

0010

Operação

0

1

0

0

0

X

X

F0

0

1

1

0

0

X

X

F2

1

0

0

0

0

X

X

F3

0XXX1

1XXX1

1XXX1

XXX1X

F1F4F5OpALU2OpALU1

0XXX1

0XXX1

XXX00

Campo functOpALU

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Projetando a unidade de controle principal– Formatos de instrução considerados

op rs rt

31-26

rd shamt funct

25-21 20-16 15-11 10-6 5-0

op rs rt

31-26

endereço

25-21 20-16 15-0

op rs rt

31-26

endereço

25-21 20-16 15-0

R

LW/SW

BEQ

• Campo de opcode (bits 31-26) • Os dois registradores a serem lidos (rs e rt): posições 25-21 e 20-16 (tipo R, BEQ e store

word)• Registrador-base para instruções de load e store: está na posição 25-21 (rs)• 16 bits de deslocamento do BE, lw e sw: 15-0• Registrador destino:

– Para lw: 20-16 (rt)– Tipo R: 15-12 (rd)– É necessário um multiplexador antes do banco de registradores

Um esquema de implementaUm esquema de implementaçção simplesão simples

• O caminho de dados com todos os multiplexadores necessários e todas as linhas de controle identificadas

Page 5: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Descrição dos sinais da unidade de controle

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Unidade de controle principal– Os sinais podem ser definidos com base no campo

opcode, com exceção da linha de controle OrigPC

– Essa linha de controle dever ser ativada se a instrução for beq e a ALU produzir o sinal Zero, usado para comparação de igualdade

1

0

0

0

ALUOp2BranchEscMem

LerMemEscRegMemParaRegRegDst

0

0

0

1

ALUOp1

1

0

0

0

0

0

1

0

0

0

1

1

0X0Xbeq

0110lw

1X1Xsw

0001formato R

UALFonteInstrução

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Unidade de controle principal– Passos para a execução de instruções R

1. Busca da instrução na memória de instruções e incremento do PC

2. Dois registradores, $t0 e $t1, são lidos do banco de registradores. A unidade de controle coloca valores nas linhas de controle

3. A UAL opera sobre os dados lidos do banco de registradores, usando o código da função (bits 5-0) para gerar a função da UAL

4. O resultado da UAL é escrito no banco de registradores usando-se os bits 15-11 da instrução para selecionar o registrador-destino ($t1)

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Exemplo 1: Add $t1, $t2, $t3

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Unidade de controle principal– Passos para a execução de instruções LW/SW

1. Busca da instrução na memória de instruções e incremento do PC

2. Leitura do conteúdo de um registrador ($t2) do banco de registradores

3. Cálculo da soma do valor lido do banco de registradores com o resultado da extensão do sinal de 16 bits menos significativos da instrução (deslocamento)

4. O resultado da soma é usado para endereçar a memória de dados

5. O dado vindo da unidade de memória é escrito no banco de registradores; o número do registrador-destino é dado pelos bits 20-16 da instrução ($t1)

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Exemplo 2: lw $t1, offset ($t2)

Page 6: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Unidade de controle principal– Passos para execução de instruções BEQ

1. Busca da instrução na memória de instruções e incremento do PC

2. Leitura do conteúdo dos registradores $t1 e $t23. Realização de uma subtração pela ALU sobre os

dois valores lidos do bando de registradores. O valor de PC+4 é somado ao resultado da extensão do sinal dos 16 bits menos significativos da instrução (deslocamento) deslocado de dois bits àesquerda. O resultado dessa soma é o endereço de destino do desvio

4. A saída, Zero da ALU é usada para decidir se o PC deve ser atualizado com o valor de PC+4 ou com o valor do endereço de destino do desvio condicional

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Exemplo 3: beq $t1, $t2, offset

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Implementando jumps

– A instrução jump se parece um pouco com uma instrução branch, mas calcula o PC de destino de maneira diferente e não é condicional

– Como um branch, os 2 bits menos significativos são sempre 00; os próximos 26 bits mais significativos vem do campo de 26 bits imediato da instrução

– Assim, pode-se implementar um jump armazenando no PC a concatenação dos

• 4 bits superiores do PC atual + 4 (esses são bits 31:28 do endereço da instrução imediatamente seguinte)

• O campo de 26 bits imediato da instrução jump

• Os bits 00

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Implementando jumps

Um esquema de implementaUm esquema de implementaçção simplesão simples

• Implementação de ciclo único– O projeto de ciclo único é ineficiente– O clock precisa ter a mesma duração para cada instrução

nesse projeto e o CPI será sempre 1– O tempo de ciclo é determinado pelo caminho mais

longo; esse caminho, certamente, é uma instrução lw, que usa cinco unidades funcionais em série:

– Memória de instruções– Banco de registradores– ALU– Memória de dados– Banco de registradores

– Embora o CPI seja 1, o desempenho geral de uma implementação de ciclo único provavelmente não serábom, já que outras instruções poderiam ficar em um ciclo de clock mais simples

Desempenho das mDesempenho das mááquinas de ciclo quinas de ciclo úúniconico

• Suponha os seguintes tempos de operação– Unidade de memória: 200 ps– ALU e somadores: 100 ps– Banco de registradores: 50 ps– Considerando que os multiplexadores, a unidade de

controle, os acessos do PC, a unidade de extensão do sinal e os fios não possuem atraso, qual das seguintes implementações seria mais rápida e por quanto?

• Uma implementação em que toda instrução opera em 1 ciclo de clock de uma duração fixa

• Uma implementação em que toda instrução é executada em 1 ciclo de clock usando um ciclo de clock com duração variável, que para cada instrução, tem apenas a duração necessária (método não prático)

Page 7: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Desempenho de mDesempenho de mááquinas de ciclo quinas de ciclo úúniconico

• Solução– Considerando o mix: 25% loads, 10% stores, 45% ALU,

15% desvios, 5% jumps– Tempo de execução = Contagem instruções x CPI x Tempo de

ciclo– Tempo de execução = Contagem instruções x 1 x Tempo de ciclo– Tempo de execução = Contagem instruções x Tempo de ciclo

– Caminhos críticos

Desempenho de mDesempenho de mááquinas de ciclo quinas de ciclo úúniconico

• Tempo exigido para cada classe de instruções

Desempenho de mDesempenho de mááquinas de ciclo quinas de ciclo úúniconico

• Ciclo de clock

– determinado pela instrução mais longa, que leva 600ps para ser executada:

Desempenho de mDesempenho de mááquinas de ciclo quinas de ciclo úúniconico

• Ciclo único– Como precisamos considerar que o ciclo de clock é

igual ao atraso de pior caso para todas instruções, não podemos usar técnicas de implementação que reduzem o atraso do caso comum: violação dos princípios de projeto

– Na implementação de ciclo único, cada unidade funcional precisa ser duplicada, o que eleva o custo de implementação: o projeto de ciclo único é ineficiente no desempenho e no custo

– Solução: utilizar uma implementação multiciclo, de forma que as instruções possam utilizar mais de um ciclo de clock para serem executadas, dependendo de sua complexidade.

Uma implementaUma implementaçção ão multiciclomulticiclo

• Problema da máquina de ciclo único

• Na implementação multiciclo:– Cada fase de execução da instrução em um ciclo– Unidades funcionais podem ser compartilhadas, isto é, usadas

mais de uma vez por instrução– Redução da quantidade de hardware necessário

• Principais vantagens do multiciclo:– Instruções são executadas em quantidades diferentes de períodos

de clock (caso comum pode ser melhorado)– Capacidade de compartilhar unidades funcionais (redução de

custo)

Clk

lw sw Waste

Cycle 1 Cycle 2

Clk

lw sw Waste

Cycle 1 Cycle 2

Uma implementaUma implementaçção ão multiciclomulticiclo

• A visão de alto nível do caminho de dados multiciclo– Memória e ALU únicas– Registradores RI e MDR (os dois valores são necessários no mesmo

ciclo de clock)– Registradores A e B para armazenar os valores lidos no banco de

registradores (assim mais de uma leitura é possível por execução de instrução)

– O registrador SaidaALU armazena a saída da ALU

Page 8: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Uma implementaUma implementaçção ão multiciclomulticiclo

• A visão de alto nível do caminho de dados multiciclo– Como várias unidades funcionais são compartilhadas para

diferentes finalidades, multiplexadores adicionais devem ser incluídos e os multiplexadores existentes devem ser expandidos

– A substituição das três ALUs do caminho de dados de ciclo único por uma única ALU significa que esta precisa acomodar todas as entradas que, antes, iam para as três ALUs diferentes:

• Um multiplexador adicional é incluído para a primeira entrada da ALU, para escolher entre os registrador A e o PC

• O multiplexador na segunda entrada da ALU muda de duas para quatro entradas: as duas entradas adicionais para o multiplexador são a constante 4 (usada para incrementar o PC) e o campo offset com sinal estendido e deslocado (usado no cálculo do endereço do desvio)

Uma implementaUma implementaçção ão multiciclomulticiclo

• O caminho de dados multiciclo para o MIPS manipular instruções básicas

Uma implementaUma implementaçção ão multiciclomulticiclo

• Unidade de controle principal– Implementação multiciclo exige um conjunto diferente de sinais de

controle:• PC, a memória, os registradores e o IR: sinal de escrita• Memória: sinal de leitura• UAL: mesmo controle da implementação monociclo• Multiplexador de 4 entradas: 2 linhas de controle• Todos os demais multiplexadores: uma linha de controle

– Para instruções jump e branch equal existem três fontes possíveis para o PC:

• PC+4• SaidaALU (desvio condicional)• 26 últimos bits do IR acrescido de 2 zeros à direita, e concatenados

com os 4 MSB’s do PC– Controle de escrita do PC:

• No incremento normal, e em um deslocamento incondicional, o PC éescrito incondicionalmente

• Se for um desvio condicional, passa o valor de UALSaída, somente se os registradores forem iguais

• Dois sinais de escrita: PCEsc e PCEscCond

Uma implementaUma implementaçção ão multiciclomulticiclo

• O caminho de dados multiciclo com as linhas de controle indicadas

Uma implementaUma implementaçção ão multiciclomulticiclo

• Unidade de controle principal– Ações dos sinais de controle de 1 bit:– RegDst

• Inativo → O número do registrador-destino no banco de registradores vem do campo rt

• Ativo → O número do registrador-destino no banco de registradores vem do campo rd

– EscreveReg• Inativo → Nenhum• Ativo → O registrador de propósito geral selecionado pelo número do

registrador de escrita é atualizado com o valor da entrada Dado de Escrita– OrigAALU

• Inativo → O primeiro operando da UAL é o PC• Ativo → O primeiro operando da UAL vem do registrador A

– LerMem• Inativo → Nenhum

• Ativo → O conteúdo da memória no endereço especificado na entrada Endereço é colocado na saída Dado de saída

– EscreveMem• Inativo → Nenhum

• Ativo → O conteúdo da memória no endereço especificado na entrada Endereço é substituído pelo valor na entrada Dado a ser Escrito

Uma implementaUma implementaçção ão multiciclomulticiclo

• Unidade de controle principal– Ações dos sinais de controle de 1 bit:– MemParaReg

• Inativo → O valor colocado na entrada Dado a ser Escrito do banco de registradores vem de SaidaALU

• Ativo → O valor na entrada Dado a ser Escrito do banco de registradores do MDR

– louD• Inativo → O PC é usado para fornecer o endereço da unidade de memória

• Ativo → SaidaALU é usada para fornecer o endereço para a unidade de memória

– IRWrite• Inativo → Nenhum• Ativo → A saída da unidade de memória é escrita no IR

– EscrevePC• Inativo → Nenhum• Ativo → O PC é atualizado. A fonte é controlada pelo sinal OrigPC

– EscrevePCCond• Inativo → Nenhum• Ativo → O PC é atualizado se a saída Zero da ALU também estiver ativa

Page 9: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Uma implementaUma implementaçção ão multiciclomulticiclo

• Unidade de controle principal– Ações dos sinais de controle de 2 bits:– OpALU

• 00 – A UAL efetua uma operação de soma• 01 – A UAL efetua uma operação de subtração• 10 – O campo função da instrução determina a operação da UAL

– OrigBALU• 00 – A segunda entrada da UAL vem do registrador B• 01 – A segunda entrada da UAL é a constante 4• 10 – A segunda entrada da UAL é a extensão de sinal dos 16 bits menos

significativos do IR • 11 – A segunda entrada da UAL é a extensão de sinal dos 16 bits menos

significativos do IR deslocados 2 bits à esquerda

– OrigPC• 00 – A saída da UAL (PC+4) é enviada ao PC para atualizar seu valor• 01 – O conteúdo do UALSaída (o endereço-alvo do desvio condicional) é

enviado ao PC para atualizar seu valor• 10 – O endereço-alvo do desvio condicional (IR[25-0]), deslocado 2 bits à

esquerda e concatenado com PC+4[31-28] é enviado ao PC para atualizar seu valor

Uma implementaUma implementaçção ão multiciclomulticiclo

• Caminho de dados completo para a implementação multiciclo juntamente com as linhas de controle necessárias

Uma implementaUma implementaçção ão multiciclomulticiclo

• Dividindo a execução da instrução em ciclos de clock– Ao organizar a execução em mais de um ciclo de clock

pode-se balancear a quantidade de trabalho realizada em cada ciclo

– A organização da execução de cada instrução segue um número de etapas, que depende do tipo da instrução

• As etapas deve ser realizadas de forma que cada passo contenha apenas uma operação de ALU, um acesso à memória ou um acesso ao banco de registradores

• Com essa restrição, o ciclo de clock pode ser tão curto quanto a mais longa dessas operações

– Os registradores (p.e. A, B, MDR, SaidaALU) armazenam dados para os próximos ciclos da mesma instrução

Uma implementaUma implementaçção ão multiciclomulticiclo

• Dividindo a execução da instrução em ciclos de

clock

1. Busca da instrução

2. Decodificação da instrução e busca dos registradores

3. Execução, cálculo do endereço de memória ou

conclusão do desvio

4. Acesso à memória ou conclusão de instrução tipo R

5. Conclusão de leitura de memória

Uma implementaUma implementaçção ão multiciclomulticiclo

• Dividindo a execução da instrução em ciclos de clock1. Busca da instrução

• IR=Memória[PC]• PC=PC+4• Envio do PC para a memória como endereço, realização da leitura e

escrita da instrução no registrador de instruções.

2. Decodificação e busca dos registradores• Operações que podem depois ser descartadas após a decodificação

da instrução (ainda não se sabe qual instrução está no IR)• São executadas para evitar a perda de tempo durante a execução (por

exemplo ler rs e rt)• Carga dos registradores de entrada da ALU e do endereço de desvio

condicional (salvo em SaidaALU)• A = Reg[IR[25-21]];• B = Reg[IR[20-16]];• SaidaALU = PC + extensão de sinal (IR[15-0] << 2);

Uma implementaUma implementaçção ão multiciclomulticiclo

• Dividindo a execução da instrução em ciclos de clock3. Execução, cálculo do endereço de memória ou

conclusão do desvioa) Referência à memória

– SaidaALU = A + extensão de sinal IR[15-0]

b) Instrução aritmética ou lógica (tipo R)– SaidaALU = A op B

c) Desvio condicional– Se (A == B) PC = SaidaALU

d) Desvio incondicional– PC = PC [31-28] || (IR[25-0]<<2

Page 10: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Uma implementaUma implementaçção ão multiciclomulticiclo

• Dividindo a execução da instrução em ciclos de clock4. Etapa de acesso à memória ou conclusão de

instrução tipo Ra) Referência à memória

MDR = Memória [SaidaALU];ouMemória [SaidaALU] = B;

b) Instruções aritméticas ou lógicas (tipo R)Reg[IR[15-11]] = UALSaída;

5. Etapa de conclusão de acesso à memória (lw)• Reg[IR[20-16]] = MDR

Uma implementaUma implementaçção ão multiciclomulticiclo

Definindo o controleDefinindo o controle

• Controle da implementação multiciclo pode ser realizado– Máquina de estados finitos (MEF)– Microprogramação

• Máquina de estados finitos– Visão de alto nível

Definindo o controleDefinindo o controle

• O controle da máquina de estados finitos completo para o caminho de dados

Definindo o controleDefinindo o controle

• Os controles da máquina de estados finitos normalmente são implementados usando um bloco de lógica combinacional e um registrador para conter o estado atual

Desempenho da implementaDesempenho da implementaçção ão multiciclomulticiclo

Clk

Single Cycle Implementation:

lw sw Waste

Cycle 1 Cycle 2

Clk

Single Cycle Implementation:

lw sw Waste

Cycle 1 Cycle 2

multicycle clock slower than 1/5th of single cycle clock due to state register overhead

multicycle clock slower than 1/5th of single cycle clock due to state register overhead

Clk Cycle 1

Multiple Cycle Implementation:

IFetch Dec Exec Mem WB

Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9Cycle 10

IFetch Dec Exec Mem

lw sw

IFetch

R-type

Clk Cycle 1

Multiple Cycle Implementation:

IFetch Dec Exec Mem WBIFetchIFetch DecDec ExecExec MemMem WBWB

Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9Cycle 10

IFetchIFetch DecDec ExecExec MemMem

lw sw

IFetchIFetch

R-type

Page 11: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

Controle de ExceControle de Exceççõesões

• Controle– Partes difíceis do controle é implementar exceções e interrupções, eventos

diferentes de desvios que mudam o fluxo de execução das instruções– Exceção: evento inesperado de dentro do processador

• Exemplo: overflow aritmético– Interrupção: evento que causa uma mudança inesperada no fluxo de

execução mas vem de fora do processador• Frequentemente, exceções também são chamadas de interrupções (IA-32)

Exceção ou interrupçãoAmbasMal funcionamento do hardware

ExceçãoInternaUso de uma instrução não definida

ExceçãoInternaOverflow aritmético

ExceçãoInternaChamada ao sistema operacional pelo programa do usuário

InterrupçãoExternaRequisição de dispositivo de E/S

Terminologia MIPSOrigemTipo de evento

Controle de ExceControle de Exceççõesões

• Como as exceções são tratadas– A ação básica que a máquina precisa realizar quando ocorre uma

exceção é salvar o endereço da instrução problemática no contador de programa para exceções (EPC) e transferir o controle para o sistema operacional em alguns endereços especificados

– O sistema operacional pode então tomar uma ação apropriada, que pode envolver fornecer algum serviço ao programa do usuário, tomar alguma ação predefinida em resposta a um overflow ou interromper a execução do programa e retornar um erro

– Depois de realizar qualquer ação necessária devido à exceção, o sistema operacional pode terminar o programa ou continuar sua execução usando o EPC para determinar onde reiniciar a execução do programa

– O motivo da exceção e a instrução que a causou devem ser informados ao sistema operacional

• Registrador de status• Interrupções vetorizadas (o sistema operacional sabe a causa da

exceção pelo endereço que ela foi tratada)

Mapeando o controle em hardwareMapeando o controle em hardware

• Função de controle– Os sinais de controle são dependentes de:

• Que instrução está sendo executada• Que passo está sendo realizada

– Usar as informações acumuladas para especificar uma máquina de estado finito

• Especificar uma máquina de estado finito graficamente, ou• usar microprogramação

MicroprogramaMicroprogramaççãoão

• Projeto de controle com máquinas de estados– Adequado em processadores com um número de

estados moderado– No caso de conjunto de instruções mais complexo,

torna-se difícil implementar o controle através de máquinas de estado

• Muitos estados e muitas transições são necessárias, dependo do conjunto de instruções e do número de ciclos de clock por instrução

• Projeto do controle por microprogramação– Cada microinstrução define o conjunto de sinais de

controle que são aplicados no caminho de dados– Sequenciamento:

• Execução sequencial é a padrão (sequenciador)• Subrotinas podem ser implementadas

MicroprogramaMicroprogramaççãoão

• Projeto do controle por microprogramação– Idéia básica: representar simbolicamente os valores

ativos das linhas de controle, de modo que o microprograma seja uma representação das microinstruções

• Formato de uma Microinstrução– Define quantos campos e quais sinais de controle são

afetados por cada campo – Deve-se simplificar a representação (se possível) e

dificultar a escrita de microinstruções inconsistentes– Para se obter as microinstruções, devem ser observadas

os sinais de controle no caminho de dados

MicroprogramaMicroprogramaççãoão

• Formato de uma microinstrução para o MIPS– Os sinais que não estão ativos ao mesmo tempo

compartilham o mesmo campo

Page 12: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma– as microinstruções são armazenadas em uma ROM ou uma PLA– Assim, cada microinstrução tem um endereço (endereços são

sequenciais)• Métodos para escolha da próxima microinstrução a ser

executada:1. Incrementar o endereço da microinstrução corrente (indicado por

“seq”)2. Desviar para a microinstrução que começa a execução da próxima

instrução (indicada por “Busca”, corresponde ao estado 0 da versão FSM)

3. Escolher a próxima microinstrução com base na entrada do bloco de controle (indicada por “despacho”)

• Em geral, as operação de “despacho” são implementadas a partir de uma tabela que – Contém os endereços das microinstruções-alvo– indexada pela entrada do bloco do controle– pode ser implementada em uma ROM ou uma PLA– Podem existir diversas tabelas de “despacho”

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma– São necessárias duas tabelas de despacho:

• Uma para despachar a partir do estado 1• Uma para despachar a partir do estado 2

• Formato de microinstrução (I)

MicroprogramaMicroprogramaççãoão

• Formato de microinstrução (II)

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma– Busca da Instrução, incremento do PC (PC+4),

decodificação e cálculo do endereço-alvo (beq)

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma– Busca da Instrução, incremento do PC (PC+4), decodificação e

cálculo do endereço-alvo (beq)

– Despacho• Analogia com uma instrução case ou switch com o campo opcode e a

tabela de despacho 1 usada para selecionar uma de quatro sequênciasde microinstruções diferentes

MicroprogramaMicroprogramaççãoão

• Despacho 1– Mem1 para instruções de acesso a memória– Rformat1 para instruções do tipo R– BEQ1 para a instrução branch on equal

– JUMP1 para a instrução jump

Page 13: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma– Execução de LW/SW

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma– Tipo R

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma– Tipo R

MicroprogramaMicroprogramaççãoão

• Microprograma completo

MicroprogramaMicroprogramaççãoão

• Implementação do microprograma

MicroprogramaMicroprogramaççãoão

• Implementação

Page 14: Organiza ção e Arquitetura de computadores › ~ljsenger › 2006 › orgearq › org6.pdfOrganiza ção e Arquitetura de computadores Prof. Dr. Luciano JoséSenger O processador:

MicroprogramaMicroprogramaççãoão

• Vantagens:– Facilidade no projeto– flexiblidade:

• Adaptável as mudanças na organização, temporização e tecnologia• Pode ser modificada no final do ciclo de projeto ou mesmo em campo

– Pode implementar conjuntos de instruções bastante complexos: apenas mais memória de microcontrole é necessária

– Generalidade: • Pode implementar vários conjuntos de instruções na mesma máquina• Pode ajustar o conjunto de instruções a aplicação

– Compatibilidade: muitas organizações, mesmo conjunto de instruções

• Desvantagens– Geralmente mais lento que o controle por máquinas de estados– Atualmente, microprograma é armazenado internamente no CI

• Processadores modernos: hardwired para instruções simples e microprograma para instruções complexas (Pentium 4)

Leituras recomendadasLeituras recomendadas

Patterson, David A. e Hennessy, John L. Organização e Projeto de Computadores: A Interface Hardware/Software. Ed. LTC, 802. Ed., 2004, Rio de Janeiro.