Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009...

53
Arquitectura de Computadores – Introdução à arquitectura do hardware 1 José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa Descodificação de endereços Núcleo do processador • Microprogramação

Transcript of Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009...

Page 1: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 1José Delgado © 2009

Introdução à arquitectura do hardware

• Programação cooperativa• Descodificação de endereços• Núcleo do processador• Microprogramação

Page 2: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 2José Delgado © 2009

Processos com multiprogramação• Processos – forma de programar várias actividades de forma

independente• Mudança de processsos por meio de interrupção (assíncrona)

Interrupções de fatia de tempo

P1

P2

P3

P4

Despacho

Tempo

Executável Execução

Bloqueado

Despacho

Preempção

BloqueioDesbloqueio

Page 3: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 3José Delgado © 2009

Processos cooperativos

• Mudança de processo consentida pelo próprio processo• Implementação de um processo que precise de manter estado

entre invocações sucessivas:

function ProcessoX () {switch estado {

case 1:. . . /* instruções deste estado */ ;estado = ...; /* indica qual o estado seguinte */

break; /* sai do processo */case 2:

. . . /* instruções deste estado */ ;estado = ...; /* indica qual o estado seguinte */

break; /* sai do processo */. . . /* cláusulas dos outros estados */

}return;

}

Page 4: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 4José Delgado © 2009

Espera não bloqueante

• Não se deve fazer:; rotina que implementa o processo 1proc1: Lê posição de memória

CMP com valor pretendido; vê se valor é o esperadoJNZ proc1 ; se ainda não é, vai tentar de novo. . . ; a fazer caso o valor seja o esperadoRET ; acabou, regressa

• O que se deve fazer:; rotina que implementa o processo 1proc1: Lê posição de memória

CMP com valor pretendido; vê se valor é o esperadoJNZ fim ; se ainda não é, vai tentar de

novo. . . ; a fazer caso o valor seja o esperado

fim: RET ; acabou, regressa. Há-de voltar na próxima; iteração do ciclo

• A espera deve ser externa à rotina, e não interna

Page 5: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 5José Delgado © 2009

Estrutura em assembly; rotina que implementa um processo processo: Lê variável com o estado do processo

estado0: CMP com 0 ; vê se é o estado 0JNZ estado1… ; faz o processamento do estado 0estado = novo valor ; indica qual o próximo estadoJMP fim ; acabou execução do estado 0

estado1: CMP com 1 ; vê se está no estado 1JNZ estado2… ; faz o processamento do estado 1estado = novo valor ; indica qual o próximo estado

JMP fim ; acabou execução do estado 1

estado2: CMP com 2 ; vê se está no estado 2JNZ estado3… ; faz o processamento do estado 2estado = novo valor ; indica qual o próximo estadoJMP fim ; acabou execução do estado 2

estado3: . . . ; etc. Outros estados. . .

fim: RET ; sai, para permitir que os outros ; processos corram

Page 6: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 6José Delgado © 2009

Espaço de endereçamento

FFFFH

0000H

Esp

aço

de e

nder

eçam

ento

(com

16

bits

)

Memória 1

Periférico 1Periférico 2

Periférico 3

Memória 2

ProcessadorProcessador

Unidade de controlo

UnidadededadosUnidadede

dados

Mem

ória

Mem

ória

Bus de endereços

Bus de dados

Bus de controlo

Per

ifér

ico

1P

erif

éric

o 1

Per

ifér

ico

2P

erif

éric

o 2

Per

ifér

ico

3P

erif

éric

o 3

Page 7: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 7José Delgado © 2009

Diagrama de blocos

Processador Memória PeriféricoDescodificadorde endereços

Bus de dados

CS1 CS2

Bus de endereços

RD

WR

Page 8: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 8José Delgado © 2009

Ciclo de bus com chip select

• Os chip selects são normalmente activos a zero

• Os flancos ascendentes dos sinais de RD e WR devem ocorrer “dentro” do período activo do chip select.

Relógio

Bus de

RD

WR

dados

endereços

Bus dedados

endereço

selectChip

Page 9: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 9José Delgado © 2009

Descodificação de endereços

• Cada dispositivo liga aos bits de menor peso do bus de endereços

• O descodificador de endereços liga aos bits de maior peso do bus de endereços.

Processador Memória PeriféricoDescodificadorde endereços

Bus de dados

CS1CS2

Bus de endereçosRD

WR

Page 10: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 10José Delgado © 2009

• Supondo um processador de 8 bits com este mapa de endereços:

Mapa de endereços

ROM

Periféricos

RAM 1

RAM 0

000000

0FFFFF100000

1FFFFF

FFFFFF

800000

500000500FFF

– Quantos bits deve ter no mínimo o bus de endereços?

– Qual o espaço de endereçamento deste mapa de endereços?

– Qual a capacidade da RAM?– Qual a capacidade da ROM?– Qual o espaço reservado para

periféricos?– Qual o espaço livre?– Quantos bits de endereço devem

ligar a cada módulo de RAM?– E à ROM?

24

16 MB2 MB8 MB

4 KB6 MB – 4 KB

2023

Page 11: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 11José Delgado © 2009

Geração dos chip selects

A23

A22A21A20

ROM

Periféricos

RAM 1

RAM 0

000000

0FFFFF100000

1FFFFF

FFFFFF

800000

500000500FFF

Decoder1 para 8

A12..A19

Page 12: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 12José Delgado © 2009

A23

A22A21A20

ROM

Periféricos

RAM 1

RAM 0000000

0FFFFF100000

1FFFFF

FFFFFF

800000

500000500FFF

Decoder

1 para 8

A12..A19

Geração dos chip selects• A geração do chip select

dos “GRANDES” dispositivos é geralmente simples e feita à medida.

• A geração do chip select dos “pequenos” dispositivos é geralmente feita por discriminação de um bocado médio (com gates ou com outros descodificadores).

• A geração do chip select dos dispositivos “médios” é geralmente feita com descodificadores que dividem o mapa de endereços em bocados iguais.

• Regra geral, não deve haver sobreposições.

Page 13: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 13José Delgado © 2009

Descodificação com PROMNeste caso é possível programar os endereços em módulos de 4K.

ROM

Periféricos

RAM 1

RAM 0

000000

0FFFFF100000

1FFFFF

FFFFFF

800000

500000500FFF

A23. . .

A12

PROM(Programmable

ROM)

Em cada palavra da PROM, só um bit pode estar a 0.

Page 14: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 14José Delgado © 2009

Descodificação com PROM• A PROM permite gerar

tantos chip selects quantos os bits da sua largura.

• Em cada palavra, só pode haver um bit a 0.

• Os bits de endereço da PROM ligam aos bits de maior peso do bus de endereços.

• São precisos tantos bits quantos os requeridos pelo dispositivo de endereçamento mais fino (que ocupará apenas uma palavra da PROM).

• Os dispositivos “maiores” (RAM, por exemplo) ocuparão várias palavras da PROM com o bit da saída respectiva a 0.

• Zonas do espaço de endereçamento sem dispositivo têm a palavra respectiva com os bits todos a 1.

ROM

Periféricos

RAM 1

RAM 0000000

0FFFFF100000

1FFFFF

FFFFFF

800000

500000500FFF

A23

. . .

A12 PROM

(Programmable

ROM)

Page 15: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 15José Delgado © 2009

Descodificação com PROM• Neste exemplo, cada

palavra da PROM corresponde a 4 K endereços do processador (para bater certo com o requerido pelos periféricos).

• Quantas palavras deve ter a PROM?

• Mudar o mapa de endereços implica apenas substituir ou reprogramar a PROM (que então tinha de ser EPROM, EEPROM, FLASH, etc).

4 K• Qual o conteúdo da PROM?

800 a FFF

501 a 7FF

500

200 a 4FF

100 a 1FF

000 a 0FF

1111 0111

1111 1111

1111 1011

1111 1111

1111 1101

1111 1110

ROM

vazio

periféricos

vazio

RAM 1

RAM 0

ROM

Periféricos

RAM 1

RAM 0000000

0FFFFF100000

1FFFFF

FFFFFF

800000

500000500FFF

A23. . .

A12

PROM

(Programmable

ROM)

Page 16: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 16José Delgado © 2009

Descodificação mistaIsto permite que a PROM seja 8 vezes mais pequena, com menos palavras repetidas.

ROM

Periféricos

RAM 1

RAM 0

000000

0FFFFF100000

1FFFFF

FFFFFF

800000

500000500FFF

Decoder

1 para 8A23

.

.

.

A15 PROM

(Programmable

ROM)

A12

A14A13

Page 17: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 17José Delgado © 2009

Endereçamento de byte e de palavra

• A memória é vista como um vector linear :– de bytes (8 bits), ou– de palavras do processador (N bits)

• Endereçamento de byte:– Permite acesso directo a um byte– Complica interface de memória

(acesso aos bytes que não sejam o de menor peso de cada palavra)

– Espaço de endereçamento é menor– PC e SP têm de variar de 2 em 2

(processador de 16 bits) ou de 4 em 4 (processador de 32 bits)

Endereçamentode byte (P de 32 bits)

0CH

08H

04H

00H

10H

Endereçamento de palavra

03H

02H

01H

00H

04H

Page 18: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 18José Delgado © 2009

“Big-endian” vs “little-endian”

• Em ambos os casos, os inteiros representam-se com os bits de maior peso à esquerda.

• A diferença está na ordem pela qual os bytes aparecem.

Big-endian

0CH

08H

04H

00H

10H

8 9 A B

4 5 6 7

0 1 2 3

Little-endian

0CH

08H

04H

00H

10H

BA98

7654

3210

Exemplo 03 0F 0A 07 H 03 0F 0A 07 H

Page 19: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 19José Delgado © 2009

“Big-endian” vs “little-endian”

• No big-endian, o byte de maior peso está no byte com menor endereço (isto é, aparece primeiro quando se vai incrementando os endereços).

• No little-endian, é o byte de menor peso que aparece primeiro.

Big-endian

0CH

08H

04H

00H

10H

8 9 A B

4 5 6 7

0 1 2 3

Little-endian

0CH

08H

04H

00H

10H

BA98

7654

3210

Exemplo 03 0F 0A 07 H 03 0F 0A 07 H

Page 20: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 20José Delgado © 2009

“Big-endian” vs “little-endian”

• Esta distinção só é importante:– Ao aceder aos bytes individuais de uma palavra;– Ao trocar dados entre computadores.

Big-endian

0CH

08H

04H

00H

10H

8 9 A B

4 5 6 7

0 1 2 3

Little-endian

0CH

08H

04H

00H

10H

BA98

7654

3210

Exemplo 03 0F 0A 07 H 03 0F 0A 07 H

Page 21: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 21José Delgado © 2009

Acessos à memória flexíveis

• Alguns processadores suportam:

– Acessos a bytes e a palavras de 16 bits e 32 bits (potências de 8 bits até à largura da palavra do processador). Cada instrução tem de indicar o tipo de acesso;

– Acessos desalinhados a palavras, em qualquer endereço, o que pode implicar dois acessos e corte e costura...).

10

0CH

08H

04H

00H

10H 11 12 13

C D E F

8 9 A B

4 5 6 7

0 1 2 3

Acessos alinhados em 8, 16

e 32 bits

Acesso desalinhado (32 bits, endereço

01H)

Page 22: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 22José Delgado © 2009

Bits de menor peso• As memórias são geralmente feitas

com chips (circuitos integrados) com largura de 8 bits, por isso são precisos:– 2 em paralelo para fazer 16 bits. – 4 em paralelo para fazer 32 bits.

• Os vários chips em paralelo podem ser acedidos simultaneamente em cada acesso, e é o processador que depois individualiza os bytes, se necessário.

• No endereçamento de byte, os bits de menor peso do bus de endereço não ligam à memória:– num processador de 16 bits, A0– num processador de 32 bits, A1 e A0

Endereçamentode byte (P de 32 bits)

0CH

08H

04H

00H

10H

Endereçamentode palavra

03H

02H

01H

00H

04H

Page 23: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 23José Delgado © 2009

Ligação de RAMs em paralelo

RAM

(8 bits)

Descodificador

de endereços

31..24CS-RAM

RD

WR

RAM

(8 bits)

RAM

(8 bits)

RAM

(8 bits)

23..16 15..8 7..0

Bus de endereçosAn..A2 An..A2 An..A2 An..A2

Bus de dados

Processador

(32 bits)

BS3BS0

• BS3..0 (Byte Select) – Indica que bytes são acedidos.

Page 24: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 24José Delgado © 2009

Voltemos ao PEPE-8• Objectivo: somar um número com todos os inteiros

positivos menores que ele.

soma = N + (N-1) + (N-2) + . . . + 2 + 1

1. soma 0 (inicializa soma com zero) 2. temp N (inicializa temp com N)3. Se (temp < 0) salta para 8 (se temp for negativo, salta para

o fim)4. Se (temp = 0) salta para 8 (se temp for zero, salta para o

fim)5. soma soma + temp (adiciona temp a soma)6. temp temp – 1 (decrementa temp)7. Salta para 4 (salta para o passo 4)8. Salta para 8 (fim do programa)

Page 25: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 25José Delgado © 2009

Só uma constante por instrução• Decompôr instruções com várias constantes em instruções mais

simples, cada uma só com uma constante.

• Já não há endereços e valores numéricos na mesma instrução).

• Usa-se um registo auxiliar (A) para guardar valores entre instruções.

0 M[soma] 0 0 A 01 M[soma] A

1 M[temp] N 2 A N3 M[temp] A

2 Se (M[temp] < 0) PC 7 4 (A < 0) : PC 12

3 Se (M[temp] = 0) PC 7 5 (A = 0) : PC 12

4 M[soma] M[soma] + M[temp] 6 A A + M[soma]7 M[soma] A

5 M[temp] M[temp] – 18 A M[temp]9 A A – 110 M[temp] A

6 PC 3 11 PC 57 PC 7 12 PC 12

Page 26: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 26José Delgado © 2009

Que operações são necessárias?• Para correr o programa anterior, o hardware tem de suportar

as seguintes operações:

Operação Exemplo

Escrever uma constante no registo A A 0

Armazenar o registo A na memória M[soma] A

Ler uma célula de memória e escrever no registo A A M[temp]

Operação com o registo A e uma célula de memória como operandos A A + M[soma]

Operação com o registo A e uma constante como operandos A A – 1

Salto incondicional PC 7

Salto condicional (A = 0) : PC 12

• Esta notação designa-se RTL (Register Transfer Language)

Page 27: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 27

Arquitectura de base

José Delgado © 2009

Registo A

MUX

ALU

Memória de dados

WR

endereço de dados

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

Memória de instruções

SEL_ALU

PC

endereço de instruções

Page 28: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 28José Delgado © 2009

A M[endereço]

Registo A

MUX

ALU

Memória de dados

WR

endereço de dados

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

Memória de instruções

SEL_ALU

PC

endereço de instruções

Page 29: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 29José Delgado © 2009

M[endereço] A

Registo A

MUX

ALU

Memória de dados

WR

endereço de dados

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

Memória de instruções

SEL_ALU

PC

endereço de instruções

Page 30: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 30José Delgado © 2009

A A + M[endereço]

Registo A

MUX

ALU

Memória de dados

WR

endereço de dados

resultado da operação

2.º operando

SEL_A

ESCR_A

Memória de instruções

SEL_ALU

PC

endereço de instruções

Page 31: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 31José Delgado © 2009

A 0 ???

Registo A

MUX

ALU

Memória de dados

WR

endereço de dados

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

Memória de instruções

SEL_ALU

PC

endereço de instruções

Page 32: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 32José Delgado © 2009

A constante

constante

Registo A

MUX_A

ALU

Memória de dados

WR

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

MUX_B

Memória de instruções

SEL_B

Page 33: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 33José Delgado © 2009

A A + constante

Registo A

MUX_A

ALU

Memória de dados

WR

constante

resultado da operação

2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

MUX_B

Memória de instruções

SEL_B

constante

1.º operando

Page 34: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 34José Delgado © 2009

Salto (PC 7) ???

Registo A

MUX_A

ALU

Memória de dados

WR

constante

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

MUX_B

Memória de instruções

SEL_B

Page 35: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 35José Delgado © 2009

PC constante

Registo A

MUX_A

ALU

Memória de dados

WR

constante

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

MUX_B

Memória de instruções

SEL_B

ESCR_PC

Page 36: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 36José Delgado © 2009

(A = 0) : PC constante• SEL_PC (2 bits): não salta, salto incondicional, salto

condicional (se A = 0 e se A < 0)

Registo A

MUX_A

ALU

Memória de dados

WR

constante

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

MUX_B

Memória de instruções

SEL_B

ESCR_PC

SEL_PC

bit de maior peso0 1

MUX_PC

. . .

8

8

1

1

Page 37: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 37José Delgado © 2009

PEPE-8: instruções com todos os sinais de controlo

Processador (PEPE-8), versão preliminar

Unidade de Controlo Unidade de Dados

Registo A

MUX_A

ALU

Memória de dados

WR

constante

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

MUX_B

Memória de instruções

SEL_B

ESCR_PC

SEL_PC

bit de maior peso0 1

MUX_PC

8

. . .8

1

1

Page 38: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 38José Delgado © 2009

PEPE-8: instruções com opcodes

Processador (PEPE-8)

Unidade de Controlo Unidade de Dados

Registo A

MUX_A

ALU

Memória de dados

WR

constante

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

constante

MUX_B

Memória de instruções

SEL_B

ESCR_PC

SEL_PC

bit de maior peso

0 1

MUX_PC

ROM de descodificação

opcode

. . .8

1

1

8

Page 39: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 39José Delgado © 2009

Linguagem assemblyCategoria Instrução

assembly Significado Opcode Descrição em RTL

Transferência de dados

LD valor Load (imediato) 00H A valor

LD[endereço] Load (memória) 01H A M[endereço]

ST[endereço] Store (memória) 02H M[endereço] A

Operações aritméticas

ADD valor Add (imediato) 03H A A + valor

ADD[endereço] Add (memória) 04H A A + M[endereço]

SUB valor Subtract (imediato) 05H A A – valor

SUB[endereço] Subtract (memória) 06H A A – M[endereço]

Operações lógicas

AND valor AND (imediato) 07H A A valor

AND[endereço] AND (memória) 08H A A M[endereço]

OR valor OR (imediato) 09H A A valor

OR[endereço] OR (memória) 0AH A A M[endereço]

Saltos

JMPendereço Jump 0BH PC endereço

JZendereço Jump if zero 0CH (A=0) : PC endereço

JNendereço Jump if negative 0DH (A<0) : PC endereço

Diversos NOP No operation 0EH

Page 40: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 40José Delgado © 2009

Instrução LD [endereço]

Processador (PEPE-8)

Unidade de Controlo Unidade de Dados

Registo A

MUX_A

ALU

Memória de dados

WR

resultado da operação

1.º operando 2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

constante

MUX_B

Memória de instruções

SEL_B

ESCR_PC

SEL_PC

bit de maior peso

0 1

MUX_PC

ROM de descodificação

opcode

. . .8

1

1

8

constante

Page 41: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 41José Delgado © 2009

Instrução ADD valor

Processador (PEPE-8)

Unidade de Controlo Unidade de Dados

Registo A

MUX_A

ALU

Memória de dados

WR

constante

resultado da operação

2.º operando

SEL_A

ESCR_A

SEL_ALU

PC

endereço de instruções

constante

MUX_B

Memória de instruções

SEL_B

ESCR_PC

SEL_PC

bit de maior peso

0 1

MUX_PC

ROM de descodificação

opcode

. . .8

1

1

8

constante

1.º operando

Page 42: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 42José Delgado © 2009

Programação em assembly

Programa em RTL Programa em assembly0 A 01 M[soma] A2 A N3 M[temp] A4 (A < 0) : PC 125 (A = 0) : PC 126 A A + M[soma]7 M[soma] A 8 A M[temp] 9 A A – 110 M[temp] A 11 PC 512 PC 12

00H01H02H03H04H05H06H07H08H09H0AH0BH0CH

início: LD 0 ST [soma] LD N ST [temp] JN fim

teste: JZ fim ADD [soma]ST [soma]LD [temp] SUB 1 ST [temp]JMP teste

fim: JMP fim

Page 43: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 43José Delgado © 2009

Agora um processador de 16 bits

Processador

Núcleo do processador

Cache de instruções

Cache de dados

Interface de

memória

Memória principal(dados e

instruções)

instruções

dados

dados

endereços

dados/instruções

endereços de instruções

endereços de dados

WR

RD

• Já não faz uma instrução por ciclo de relógio• Tem um ciclo por cada instrução

Page 44: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 44José Delgado © 2009

Controlo

Unidade decontrolo

CLK

Unidade aritmética e

lógica (ALU)

A B

Unidade de processamento

de dadosBanco de registos

MPX

MPX

PC

Registo de instrução

flags

endereços

dados

dados/instr.

Bus dados

Interface de mem

ória

Bus end.

Bus contr.F

Ciclo do processadorDescodifica

Registo de instrução

Controlo

flags

ExecutaBanco de registos

MPX

Unidade aritmética e

lógica (ALU)

Escreve resultadoBanco de registos

Unidade aritmética e

lógica (ALU)

MPX

Busca instrução

Registo de instrução

PC

MPX

Interface de mem

ória

MPX

Busca operandos(registos)Banco de

registos

Busca operandos(memória)Banco de

registos

MPX

Interface de mem

ória

MPX

Page 45: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 45José Delgado © 2009

Controlo

Unidade decontrolo

CLK

Unidade aritmética e

lógica (ALU)

A B

Unidade de processamento

de dadosBanco de registos

MPX

MPX

PC

Registo de instrução

flags

endereços

dados

dados/instr.

Bus dados

Interface de mem

ória

Bus end.

Bus contr.F

Exemplo MOV R2, [R3]

ADD R1, R2

MOV [R3], R1

MOV R2, [R3]

RI M[PC]PC PC + 2R2 M[R3]

ADD R1, R2

RI M[PC]PC PC + 2R1 R1 + R2

MOV [R3], R1

RI M[PC]PC PC + 2M[R3] R1

PCPCPCPCPCPCRI M[PC]PC PC + 2R2 M[R3]

RI M[PC]PC PC + 2R2 M[R3]

RI M[PC]PC PC + 2R2 M[R3]

RI M[PC]PC PC + 2R1 R1 + R2

RI M[PC]PC PC + 2R1 R1 + R2

RI M[PC]PC PC + 2R1 R1 + R2

RI M[PC]PC PC + 2M[R3] R1

RI M[PC]PC PC + 2M[R3] R1

RI M[PC]PC PC + 2M[R3] R1

Page 46: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 46José Delgado © 2009

Estrutura do processador

Gerador de constantes

Banco de registos

Unidade de Controlo

I-Cache

Interface de memória

D-Cache

Unidade de excepções

ALU

MUX

REM

MUX

MUX

Portas tristate

Barramentode dadosD15..D0

Barramentode endereços

A15..A0

WR

RD

BR

QB

GT

WA

IT

INT

3IN

T2

INT

1IN

T0

RE

SE

T

BA

CL

EO

AC

ES

SO

À M

EM

ÓR

IA

PC

Registo de instruções

Page 47: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 47José Delgado © 2009

Núcleo do processador

I_OK_M

PC +2

Cache de dados

D_BARR_END

D_ENTR

D_ESCR

D_LE

Banco de Registos

Gerador de constantes

MUX

MUX

MUX

MUX

ALU

REG_A4

4

4

REG_C

SEL_C

4

16

SEL_RE

3

1

IND_A

IND_B

SEL_RE

SAIDA_RE

ENTR_RE

BARR_B

BARR_ABARR_A

BARR_B

5 OP_ALU

SAIDA_ALU

4

4

4

3..0

7..4

11..8

15..1

2

SEL_CONST

3

ESCR_C

SAZ,SAN, SAC,SAV

Registo de instruções

MUX

RE

M

D_SAIDA

D_LE

D_ESCR

SEL_A

PA_C

PA_A

PA_A

LE_USP

ESCR_USP

LE_USP

ESCR_USP

16

OP_ALU

C_RE

ESCR_C

IND_C

BARR_C

Sinais de controlo

PA_C

D_BAD_BA

EXC

DIV0

EXCESSO

Para a Unidadede Excepções

Para a Unidadede Excepções

MUX

0 1

Condições de salto(Z, NZ, N, NN, C, GT, LE, etc)

SEL_SALTO4

SALTA_PC

Relógio

D_OK

Cache de instruções

I_BARR_END

I_SAIDA

I_OK

Excepções de busca

Unidade de Excepções

EXC_FIM

Fontes de excepções

NUM_EXC

Para a Unidadede Excepções

MUX

MAP

Unidade de Controlo

ESCR_RI

ESCR_RI

SEL_OP_B

SEL_BARR_C

ESCR_REM

SEL_OP_A

Page 48: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 48José Delgado © 2009

Controlo microprogramadoEntradas da unidade

de controlo

Registo de endereçode controlo

Gerador do próximoendereço

Próximo endereço

Saídas para unidade de controlo

Saídas para unidade de processamento de dados

relógio

Bits de estado (flags)

microinstrução

ROM com micro-

programa

Endereço damicroinstrução

Page 49: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 49José Delgado © 2009

Controlo e circuito controlado

MPCROM de micro-código

+1

MICRO_SALTO

MUX1

MUX2 2 SEL_MICRO_SALTO

0 1 Z nZ

RA RB

X

ESCR_RASHR_RA

ESCR_RBDEC_RB

N

Z

ESCR_RASHR_RAESCR_RBDEC_RB

nZ

Deslocar o registo X de N bits

Page 50: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 50José Delgado © 2009

Micro-programa

MPCROM de micro-código

+1

MICRO_SALTO

MUX1

MUX2 2 SEL_MICRO_SALTO

0 1 Z nZ

RA RB

X

ESCR_RASHR_RA

ESCR_RBDEC_RB

N

Z

ESCR_RASHR_RAESCR_RBDEC_RB

nZ

Page 51: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 51José Delgado © 2009

Descodificação da instrução

Entradas da unidade de

controlo

Registo de endereçode controlo

Gerador do próximoendereço

Próximo endereço

Saídas para unidade de controlo

Saídas para unidade de processamento de dados

relógio

Bits de estado (flags)

microinstrução

ROM com micro-

programa

Endereço damicroinstrução

ROM de mapeamento

opcodeRegisto de instrução

Page 52: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 52José Delgado © 2009

Unidade de controlo

I_OK_M

I_OK_M

PC

ESCR_RI

+2

MPC

+1

ROM deMapeamento

MICRO_SALTO

SEL_MICRO_SALTO

3

Cache de dados

D_BARR_END

D_ENTR

D_ESCR

D_LE

Banco de Registos

Gerador de constantes

MUX

MUX

MUX

MUX

ALU

REG_A

4

4

4

REG_C

SEL_C

4

16

SEL_RE

3

1

IND_A

IND_B

SEL_RE

SAIDA_RE

ENTR_RE

BARR_B

BARR_ABARR_A

BARR_B

5 OP_ALU

SAIDA_ALU

4

4

4

3..0

7..4

11..

815

..12

SEL_CONST

3

ESCR_C

SAZ,SAN, SAC,SAV

Registo de instruções

MUX

RE

M

ESCR_REM

D_SAIDA

D_LE

D_ESCR

SEL_A

PA_C

PA_A

PA_A

LE_USP

ESCR_USP

LE_USP

ESCR_USP

16

OP_ALU

C_RE

ESCR_C

IND_C

BARR_C

Sinais de controlo

PA_C

Unidade de Controlo

D_BAD_BA

MUXm_EXC1

Controlo MPC

SALTA_MPC

EXC

DIV0

EXCESSO

Para a Unidadede Excepções

Para a Unidadede Excepções

MUX

0 1

Condições de salto(Z, NZ, N, NN, C, GT, LE, etc)

SEL_SALTO4

ROM de micro-código

SALTA_PC

Relógio

D_OK

Cache de instruções

I_BARR_END

I_SAIDA

I_OK

Excepções de busca

Unidade de Excepções

EXC_FIM

Fontes de excepções0 1nSAZ

SANnSA0

SAZ

MUX

SA0

NUM_EXC

MAP

Para a Unidadede Excepções

MUX

m_BSC1MUX

ESCR_RI

SEL_BARR_C

SEL_OP_A

SEL_OP_B

Page 53: Arquitectura de Computadores – Introdução à arquitectura do hardware1José Delgado © 2009 Introdução à arquitectura do hardware Programação cooperativa.

Arquitectura de Computadores – Introdução à arquitectura do hardware 53José Delgado © 2009

Microprogramação