mc542 11.1 2007 prof. paulo cesar centoducatte [email protected] ducatte mc542 organização de...

70
MC542 11.1 2007 Prof. Paulo Cesar Centoducatte [email protected] www.ic.unicamp.br/~ducatte MC542 Organização de Computadores Teoria e Prática

Upload: internet

Post on 17-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.1

2007

Prof. Paulo Cesar Centoducatte

[email protected]

www.ic.unicamp.br/~ducatte

MC542

Organização de ComputadoresTeoria e Prática

Page 2: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.2

MC542

Circuitos Lógicos

ULA, Operações de Ponto Flutuante, Memórias

“DDCA” - (Capítulo 5)

“FDL” - (Capítulo)

“COD” - (Capítulo)

Page 3: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.3

Sumário

• Comparador– Igualdade– Menor Que– ……

• Arithmetic Logic Unit (ALU)• Set on Less Than (SLT)• Shifters

– Shifters como Multiplicador e Divisor• Multiplicação• Divisão• Sistemas Numéricos

– Números Fracionários– Ponto Flutuante – Arredondamento– Ponto Flutuante: Adição

• Memórias

Page 4: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.4

Comparador: Igual

Símbolo Implementação

A3

B3

A2

B2

A1

B1

A0

B0

Equal=

A B

Equal

44

Page 5: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.5

Comparador: Menor Que

A < B A – B < 0

A < B

-

BA

[N-1]

N

N N

Page 6: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.6

Arithmetic Logic Unit (ALU)

• SLT – Set on Less Than

ALU

N N

N

3

A B

Y

F

F2:0Function

000 A & B

001 A | B

010 A + B

011 not used

100 A & ~B

101 A | ~B

110 A - B

111 SLT

Page 7: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.7

Projeto de uma ALU

+

2 01

A B

Cout

Y

3

01

F2

F1:0

[N-1] S

NN

N

N

N NNN

N

2

Ze

roE

xte

nd

Page 8: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.8

ALU - Funções

F2:0Function

000 A & B

001 A | B

010 A + B

011 not used

100 A & B

101 A | ~B

110 A - B

111 SLT

+

2 01

A B

Cout

Y

3

01

F2

F1:0

[N-1] S

NN

N

N

N NNN

N

2

Ze

roE

xtend

Page 9: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.9

Set Less Than (SLT)

+

2 01

A B

Cout

Y

3

01

F2

F1:0

[N-1] S

NN

N

N

N NNN

N

2

Ze

roE

xtend

• Configuração da ALU 32-bit para a operação SLT. Suponha que A = 25 e B = 32.

– Como A é menor que B, Y deve ser a representação de 1 em 32-bit (0x00000001).

– Para SLT, F2:0 = 111.

– F2 = 1 configura a unidade adder como um subtrator (25 - 32 = -7).

– A representação complemento de dois de -7 tem um 1 no bit mais significativo, assim, S31 = 1.

– Com F1:0 = 11, o último mux seleciona Y = 1.

Page 10: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.10

Shifters

• Shifter lógico:

– Ex: 11001 >> 2 = 00110– Ex: 11001 << 2 = 00100

• Shifter Aritmético:

– Ex: 11001 >>> 2 = 11110– Ex: 11001 <<< 2 = 00100

• Rotação:

– Ex: 11001 ROR 2 = 01110– Ex: 11001 ROL 2 = 00111

Page 11: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.11

Shifter Rápido

A3:0 Y3:0

shamt1:0

>>

2

4 4

A3 A2 A1 A0

Y3

Y2

Y1

Y0

shamt1:0

00

01

10

11

S1:0

S1:0

S1:0

S1:0

00

01

10

11

00

01

10

11

00

01

10

11

2

Page 12: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.12

Shifter Rápido

Page 13: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.13

Shifters como Multiplicador e Divisor

• Um shift left de N bits múltiplica o número por 2N

– Ex: 00001 << 2 = 00100 (1 × 22 = 4)– Ex: 11101 << 2 = 10100 (-3 × 22 = -12)

• Um shift right aritmético de N divide o número por 2N

– Ex: 01000 >>> 2 = 00010 (8 ÷ 22 = 2)– Ex: 10000 >>> 2 = 11100 (-16 ÷ 22 = -4)

Page 14: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.14

Multiplicação

810

910

1000 1001

multiplicandomultiplicador

1000 0000 00001000

produtos parciais

7210 1001000 max= (24–1) *(24–1) = 225

225 > 128 8 bits

32 * 32 bits 64 bits

Page 15: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.15

Multiplicação Geração Rápida dos Produtos Parciais

Y0 Y1 Y2

X0 X1 X2

X2 Y0 X2 Y1 X2 Y2

X1 Y0 X1 Y1 X1 Y2

X0 Y0 X0 Y1 X0Y2

Y0 Y1 Y2X2

X1

X0

X2 Y0 X2 Y1 X2 Y2

X1 Y2X1 Y1X1 Y0

X0 Y0 X0 Y1 X0 Y2

Page 16: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.16

Multiplicador 4x4

x B3

B2

B1

B0

A3B

0 A

2B

0 A

1B

0 A

0B

0

A3

A2

A1

A0

A3B

1 A

2B

1 A

1B

1 A

0B

1

A3B

2 A

2B

2 A

1B

2 A

0B

2

A3B

3 A

2B

3 A

1B

3 A

0B

3+

P7

P6

P5

P4

P3

P2

P1

P0

x

A B

P

44

8

0

P2

0

0

0

P1

P0

P5

P4

P3

P7

P6

A3

A2

A1

A0

B0

B1

B2

B3

Page 17: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.17

Multiplicador – Primeira Versão

64-bit ALU

Control test

MultiplierShift right

ProductWrite

MultiplicandShift left

64 bits

64 bits

32 bits

Page 18: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.18

Multiplicador – Segunda Versão

MultiplierShift right

Write

32 bits

64 bits

32 bits

Shift right

Multiplicand

32-bit ALU

Product Control test

Page 19: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.19

Multiplicador – Versão Final

ControltestWrite

32 bits

64 bits

Shift rightProduct

Multiplicand

32-bit ALU

Page 20: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.20

Divisão

29 3 29 = 3 * Q + R = 3 * 9 + 2 dividendo

divisor

quociente

resto

2910 = 011101 310 = 11

0 1 1 1 0 1 1 1

1 1 0 1 0 0 1

0 0 1 0 11 1

1 0

Q = 9 R = 2

Como implementar em hardware?

Page 21: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.21

Alternativa 1: Divisão com Restauração

29 – 3 * 24 = -19 q4 = 1

-19 + 3 * 24 = 29 q4 = 0 Restauração

29 – 3 * 23 = 5 q3 = 1

5 – 3 * 22 = -7 q2 = 1

-7 + 3 * 22 = 5 q2 = 0 Restauração

5 – 3 * 21 = -1 q1 = 1

-1 + 3 * 21 = 5 q1 = 0 Restauração

5 – 3 * 20 = 2 q0 = 1

q4q3q2q1q0 = 01001 = 9R = 10 = 2

• hardware não sabe se “vai caber ou não”• registrador para guardar resto parcial• verificação do sinal do resto parcial• caso negativo restauração

Page 22: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.22

Alternativa 2: Divisão sem Restauração

29 – 3 * 24 = -19 < 0 próx = SOMA q4 = 1

-19 + 3 * 23 = 5 > 0 próx = SUB q3 = 1

5 – 3 * 22 = -7 < 0 próx = SOMA q2 = 1

-7 + 3 * 21 = -1 < 0 próx = SOMA q1 = 1

-1 + 3 * 20 = 2 q0 = 1

Resto = 2 Quociente = 11111 ??

Regras

se resto parcial > 0 próxima operação subtração

se resto parcial < 0 próxima operação somaobjetivoR 0

se operação corrente + qi = 1

se operação corrente - qi = 1

Page 23: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.23

Alternativa 2: Conversão do Resultado

)22222(11111 01234

16 - 8 + 4 - 2 - 1

)1()1()1( 2)12(222...11... nnnn

11111

1101010

• Nº de somas: 3

• Nº de subtrações:2

• Total: 5

• OBS: se resto < 0 deve haver correção de um divisor para que resto > 0

11110

Page 24: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.24

Divisor - Primeira Versão

64-bit ALU

Controltest

QuotientShift left

RemainderWrite

DivisorShift right

64 bits

64 bits

32 bits

Page 25: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.25

Divisor - Segunda Versão

Controltest

QuotientShift left

Write

32 bits

64 bits

32 bits

Shift left

Divisor

32-bit ALU

Remainder

Page 26: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.26

Divisor – Versão Final

Write

32 bits

64 bits

Shift leftShift right

Remainder

32-bit ALU

Divisor

Controltest

Page 27: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.27

Sistemas Numéricos

• Que tipo de números queremos representar usando uma representação binária?

– Números Positivos» Unsigned binary

– Números Negativos » Complemento de dois» Sinal/magnitude

• E frações?

Page 28: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.28

Números Fracionários

• Duas notações são comuns:

– Ponto Fixo (Fixed-point):

» o ponto binário é fixo

– Ponto Flutuante (Floating-point):

» O ponto binário flutua a direita do bit mais significativo

• Já visto

Page 29: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.29

Ponto Flutuante - Arredondamento

• Overflow: quando o valor é muito grande para ser representado

• Underflow: quando o valor é muito pequeno para ser representado

• Modos de Aredondamento: – Down– Up– Toward zero– To nearest

• Examplos: arredondar 1.100101 (1.578125) de forma ser representado com 3 bits de fração.

– Down: 1.100– Up: 1.101– Toward zero: 1.100– To nearest: 1.101 (1.625 é mais próximo de 1.578125 do

que 1.5)

Internamente, o processador armazena os números de ponto flutuante com ao menos 2 bits a mais: guard e round. Um terceiro bit, o sticky indica se algum conteúdo significativo foi perdido em arredondamento

Page 30: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.30

Ponto Flutuante: Adição

1. Extrair os bits do expoente e da fração

2. Adicionar o bit 1 à mantissa (prefixo)

3. Compar os expoentes

4. Deslocar a menor mantissa, se necessário

5. Somar as mantissas

6. Normalizar a mantissa e ajustar o expoente, se necessário

7. Arredondar o resultado

8. Montar o expoente e a fração no formato de ponto flutuante

Page 31: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.31

Ponto Flutuante: Exemplo de Adição

Somar os seguintes números em ponto flutuante :

0x3FC00000

0x40500000

1. Extrair o expoente e a fração

Para o primeiro número (N1): S = 0, E = 127, F = .1

Para o segundo número (N2): S = 0, E = 128, F = .101

0 01111111 100 0000 0000 0000 0000 0000Sign Exponent Fraction

1 bit 8 bits 23 bits

0 10000000 101 0000 0000 0000 0000 0000

1 bit 8 bits 23 bits

Sign Exponent Fraction

Page 32: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.32

Ponto Flutuante: Exemplo de Adição

2. Adicionar o bit 1 à mantissa (prefixo)

N1: 1.1

N2: 1.101

3. Compar os expoentes

127 – 128 = -1, shift N1 para a direita de 1 bit

4. Deslocar a menor mantissa, se necessário

shift mantissa de N1: 1.1 >> 1 = 0.11 (× 21)

Page 33: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.33

Ponto Flutuante: Exemplo de Adição

5. Somar as mantissas

0.11 × 21

+ 1.101 × 21

10.011 × 21

6. Normalizar a mantissa e ajustar o expoente, se necessário

10.011 × 21 = 1.0011 × 22

7. Arredondar o resultado

Não é necessário (cabe em 23 bits)

8. Montar o expoente e a fração no formato de ponto flutuante

S = 0, E = 2 + 127 = 129 = 100000012, F = 001100..

Page 34: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.34

Ponto Flutuante: Exemplo de Adição

Em hexadecimal: 0x40980000

0 10000001 001 1000 0000 0000 0000 0000Sign Exponent Fraction

1 bit 8 bits 23 bits

Page 35: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.35

Hardware de Adição de Ponto Flutuante

0 10 1 0 1

Control

Small ALU

Big ALU

Sign Exponent Significand Sign Exponent Significand

Exponentdifference

Shift right

Shift left or right

Rounding hardware

Sign Exponent Significand

Increment ordecrement

0 10 1

Shift smallernumber right

Compareexponents

Add

Normalize

Round

Page 36: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.36

Page 37: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.37

Memórias

• Memory arrays – armazena eficientemente grande quantidadde de dados.

• Três tipos mais comuns de memory arrays:– Dynamic random access memory (DRAM)– Static random access memory (SRAM)– Read only memory (ROM)

• Um dado de valor de M-bit pode ser lido ou escrito por vez em um endereço de N-bit.

Address

Data

ArrayN

M

Page 38: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.38

Memórias

• As memórias são organizadas como um array de duas dimensões de células de bits. Cada celula armazenaum bit.

• Um array com N bits de endereço e dados de M bits tem 2N linhas e M colunas. Each row of data is called a word.

– Depth: número de linhas do array– Width: número de colunas no array (word size)– Array size: dado por depth × width

Address

Data

ArrayN

M

Address Data

11

10

01

00

depth

0 1 0

1 0 0

1 1 0

0 1 1

width

Address

Data

Array2

3

Page 39: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.39

Memoria : Exemplo

• O array abaixo é um array d22 × 3-bit.• Word size de 3-bits.

Exemplo: Address Data

11

10

01

00

depth

0 1 0

1 0 0

1 1 0

0 1 1

width

Address

Data

Array2

3

Page 40: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.40

Memória : Exemplo

Address

Data

1024-word x32-bitArray

10

32

Page 41: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.41

Memória: Célula de bit

stored bit

wordline

bitline

Example:

stored bit = 0

wordline = 1

stored bit = 1

stored bit = 0

stored bit = 1

bitline =

(a) (b)

wordline = 1

wordline = 0

wordline = 0

bitline =

bitline =

bitline =

Page 42: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.42

Memória: 4x3

wordline311

10

2:4Decoder

Address

01

00

storedbit = 0

wordline2

wordline1

wordline0

storedbit = 1

storedbit = 0

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 1

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 1

storedbit = 1

bitline2 bitline1 bitline0

Data2 Data1 Data0

2

Page 43: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.43

Tipos de Memórias

• Random access memory (RAM): volátil

• Read only memory (ROM): não volátil

Page 44: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.44

RAM

• Random access memory

– Volátil: perde o dado quando a alimentação é desligada

– Pode ser lida ou escrita rapidamente

– A memória principal do seu computador é RAM (specificamente, DRAM)

– Historicamente denominada de random access memory porque qualquer palavra de dado pode ser acessada como qualque outra (em contraste com sequential access memories como fita magnética).

Page 45: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.45

ROM

• Read only memory (ROM)

– Não volátil: não perdem seus dados quando a alimentação é desligada

– Pode ser lida rapidamente, porém a escrita é lenta

– Memórias em câmeras digitais, pen drives são ROMs

– Historicamente denominadas de read only memory porque ROMs eram escritas queimando-se fusíveis. Uma vez que os fusíveis eram escritos não podiam ser escritos novamente.

Page 46: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.46

Tipos de RAM

• Os dois tipos de RAM são:

– Dynamic random access memory (DRAM)

– Static random access memory (SRAM)

• A diferença é como armazenam os dados:

– DRAM usa um capacitor

– SRAM usa cross-coupled inverters (“latch”)

Page 47: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.47

DRAM

• Data bits são armazenados em um capacitor.

• DRAM denominado de dynamic porque os valores necessitam ser reescritos (refreshed) periodicamente e após serem lidos por que:

– A corrente de fuga do capacitor degrada o valor – A leitura destroi o valor armazenado

stored bit

wordline

bitline

wordline

bitline

storedbit

Page 48: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.48

DRAM

wordline

bitline

wordline

bitline

+ +storedbit = 1

storedbit = 0

Page 49: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.49

SRAM

stored bit

wordline

bitline

wordline

bitline bitline

Page 50: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.50

Memória

wordline311

10

2:4Decoder

Address

01

00

storedbit = 0

wordline2

wordline1

wordline0

storedbit = 1

storedbit = 0

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 1

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 1

storedbit = 1

bitline2 bitline1 bitline0

Data2 Data1 Data0

2

wordline

bitline bitline

wordline

bitline

Page 51: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.51

ROM

11

10

2:4 Decoder

Address

Data0Data1Data2

01

00

2

wordline

bitline

wordline

bitline

bit cellcontaining 0

bit cellcontaining 1

Page 52: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.52

ROM

11

10

2:4 Decoder

Address

Data0Data1Data2

01

00

2

Address Data

11

10

01

00

depth

0 1 0

1 0 0

1 1 0

0 1 1

width

Page 53: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.53

Lógica com ROM

11

10

2:4 Decoder

Address

Data0Data1Data2

01

00

2 Data2 = A1 A0

Data1 = A1 + A0

Data0 = A1A0

Page 54: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.54

Lógica com ROMExemplo

• Implemente as seguintes funções lógica usando uma ROM 22 × 3-bit:

X = ABY = A + BZ = AB

11

10

2:4 Decoder

Address

Data0Data1Data2

01

00

2

Page 55: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.55

Lógica com ROMExemplo

• Implemente as seguintes funções lógica usando uma ROM 22 × 3-bit:

X = ABY = A + BZ = AB

11

10

2:4Decoder

A, B

ZYX

01

00

2

Page 56: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.56

Lógica com Memória

Data2 = A1 A0

Data1 = A1 + A0

Data0 = A1A0

wordline311

10

2:4Decoder

Address

01

00

storedbit = 0

wordline2

wordline1

wordline0

storedbit = 1

storedbit = 0

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 1

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 1

storedbit = 1

bitline2

bitline1

bitline0

Data2

Data1

Data0

2

Page 57: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.57

Lógica com Memória

• Implemente as seguintes funções lógicas com uma memória 22 × 3-bit:

X = ABY = A + BZ = AB

wordline311

10

2:4Decoder

A, B

01

00

storedbit = 1

wordline2

wordline1

wordline0

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 1

storedbit = 1

storedbit = 0

storedbit = 1

storedbit = 0

storedbit = 0

storedbit = 0

storedbit = 0

bitline2

bitline1

bitline0

X Y Z

2

Page 58: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.58

Lógica com Memória

• A memória usada para executar funções lógicas é denominadad lookup tables (LUT).

• O usuário tem o valor de saída para cada combinação das entradas (address).

storedbit = 1

storedbit = 0

00

01

2:4Decoder

A

storedbit = 0

bitline

storedbit = 0

Y

B

10

11

4-word x 1-bit Array

A B Y

0 00 11 01 1

0001

TruthTable

A1

A0

Page 59: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.59

Memórias Multi-Portas

• Porta: par endereço/dado (address/data)• Memória 3-portas

– 2 portas de leitura (A1/RD1, A2/RD2)– 1 porta de escrita (A3/WD3, WE3 enables writing)

A1

A3

WD3

WE3

A2

CLK

Array

RD2

RD1M

M

N

N

N

M

Page 60: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.60

Memória - VHDL

Library IEEE;Use IEEE.STD_LOGIC_ARITH.ALL;Use IEEE.STD_LOGIC_UNSIGNED.ALL;

Entity ram Is Generic (N:Integer := 6; M: Integer := 32); Port (clk, we : In STD_LOGIC; addr : In STD_LOGIC_VECTOR(N-1 Downto o); din : In STD_LOGIC_VECTOR(M-1 Downto o); dout : In STD_LOGIC_VECTOR(M-1 Downto o));End;

Page 61: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.61

Memória - VHDLArchitecture synth Of ram Is Type mem_ram Is Array ((2**N-1) Downto 0) Of STD_LOGIC_VECTOR(M-1 Downto 0); Signal mem: mem_ram;

Begin Process (clk) Begin If clk’event and clk = ‘1’ Then If we = ‘1’ Then mem(CONV_INTEGER(addr)) <= din; End If; End If; End Process;

dout <= mem (CONV_INTEGER(addr));End;

Page 62: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.62

Logic Arrays

• Programmable Logic Arrays (PLAs)– Array de ANDs seguido por um array de ORs– Executa somente lógica combinacional– Conexões internas “fixas”

• Field Programmable Gate Arrays (FPGAs)– Array de blocos lógicos configuráveis (CLBs)– Executa lógica combinacional e seqüencial– Conexões internas programáveis

Page 63: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.63

PLAs

ANDARRAY

ORARRAY

Inputs

Outputs

ImplicantsN

M

P

X Y

ABC

AB

ABC

A B C

AND ARRAY

OR ARRAY

Page 64: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.64

PLAs

ANDARRAY

ORARRAY

Inputs

Outputs

ImplicantsN

M

P

Page 65: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.65

FPGAs

• Composto por:

– CLBs (Configurable logic blocks): executa a lógica

– IOBs (Input/output buffers): interface com o mundo exterior

– Programmable interconnection: usado para conectar CLBs e IOBs

– Algumas FPGAs incluem outros blocos funcionais como somadores, multiplicadores e RAMs

Page 66: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.66

FPGA Xilinx Spartan 3

Page 67: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.67

• Composto por:– LUTs (lookup tables): executa lógica combinacional – Flip-flops: executa funções seqüenciais– Multiplexers: conecta LUTs e flip-flops

CLBs

Xilinx Spartan CLB

Page 68: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.68

FPGA Stratix III

Page 69: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.69

FPGA Stratix III

Page 70: MC542 11.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte MC542 Organização de Computadores Teoria e Prática

MC542 11.70

FPGA Stratix III