ELECTRÓNICA DE COMPUTADORES 6ª a 8ª Aulas … · A 2 A 1 A 0 Electrónica de Computadores EC...
-
Upload
truongmien -
Category
Documents
-
view
217 -
download
2
Transcript of ELECTRÓNICA DE COMPUTADORES 6ª a 8ª Aulas … · A 2 A 1 A 0 Electrónica de Computadores EC...
1
Electrónica de Computadores EC5,6.1
10-10-2006
ELECTRÓNICA DE COMPUTADORES
6ª a 8ª Aulas
Datapath: Multiplicadores e divisores de números inteiros
B u ff erS h 3S h 2S h 1S h 0
A 3
A 2
A 1
A 0
Electrónica de Computadores EC5,6.2
10-10-2006
Sumário
• Multiplicação com e sem sinal
• Multiplicadores série e paralelo
• Algoritmo de Booth
• Divisores
2
Electrónica de Computadores EC5,6.3
10-10-2006
Multiplicação binária sem sinal
x
+
Partial products
Multiplicand
Multiplier
Result
1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
1 1 1 0 0 1 1 1 0
0 0 0 0 0 0
1 0 1 0 1 0
1 0 1 1
Electrónica de Computadores EC5,6.4
10-10-2006
Multiplicação binária com sinal
• Alterações: – extensão do bit de sinal– Último produto parcial tem que ser subtraído
x
+
Partial products
Multiplicand
Multiplier
Result
1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
1 1 1 0 0 1 1 1 0
0 0 0 0 0 0
1 0 1 0 1 0
1 0 1 1
-22
x -5
-50
3
Electrónica de Computadores EC5,6.5
10-10-2006
Arquitecturas matriciais para multiplicação
Y0
Y1
X3 X2 X1 X0
X3
HA
X2
FA
X1
FA
X0
HA
Y2X3
FA
X2
FA
X1
FA
X0
HA
Z1
Z3Z6Z7 Z5 Z4
Y3X3
FA
X2
FA
X1
FA
X0
HA
Z2
Z0
Electrónica de Computadores EC5,6.6
10-10-2006
Arquitecturas matriciais para multiplicação
HA FA FA HA
HAFAFAFA
FAFA FA HA
Critical Path 1
Critical Path 2
Critical Path 1 & 2
4
Electrónica de Computadores EC5,6.7
10-10-2006
Arquitecturas em árvore (Wallace tree)
Logarítmico versus linear
6 5 4 3 2 1 0 6 5 4 3 2 1 0
Partial products First stage
Bit position
6 5 4 3 2 1 0 6 5 4 3 2 1 0
Second stage Final adder
FA HA
(a) (b)
(c) (d)
Electrónica de Computadores EC5,6.8
10-10-2006
Arquitecturas em árvore (Wallace tree)
Logarítmico versus linear
Partial products
First stage
Second stage
Final adder
FA FA FA
HA HA
FA
x3y3
z7 z6 z5 z4 z3 z2 z1 z0
x3y2x2y3
x1y1x3y0 x2y0 x0y1x0y2
x2y2x1y3
x1y2x3y1x0y3 x1y0 x0y0x2y1
5
Electrónica de Computadores EC5,6.9
10-10-2006
Arquitecturas matriciais Carry-Save (CS)
Repesentam resultados parciais por
2 vectores de bits- Carry e Save
HA HA HA HA
FAFAFAHA
FAHA FA FA
FAHA FA HA
Vector Merging Adder
Electrónica de Computadores EC5,6.10
10-10-2006
Arquitecturas Wallace tree (CS)
Linear versus Logarítmico
FA
FA
FA
FA
y0 y1 y2
y3
y4
y5
S
Ci-1
Ci-1
Ci-1
Ci
Ci
Ci
FA
y0 y1 y2
FA
y3 y4 y5
FA
FA
CC S
Ci-1
Ci-1
Ci-1
Ci
Ci
Ci
6
Electrónica de Computadores EC5,6.11
10-10-2006
Arquitecturas série
• Trata-se de um processador dedicado para o algoritmode multiplicação
SEM SINAL:
Produto Multiplicador Multiplicando
0000 0000 0011 0000 0010
0000 0010 0001 0000 0100
0000 0110 0000 0000 1000
0000 0110
3. Desloca registo multiplicador para a direita
FinalSim
2. Desloca registo multiplicando para a esquerda
Não
1. TestaMultiplic_0
Multiplicador_0 = 1
1a. Adiciona multiplicando ao produtoe coloca resultado no registo produto
N-ésimarepetição?
Início
Multiplicador_0 = 0
Electrónica de Computadores EC5,6.12
10-10-2006
Arquitecturas série
Produto
Multiplicando
64-bit ALU
Desl. Esquerda
EsctritaControlo
32 bits
64 bits
64 bits
Multiplicador = datapath + controlo
Multiplicador Desl. Direita
MUITO INEFICIENTE:Sub-utilização dos registosSub-utilização da capacidade da ALU
7
Electrónica de Computadores EC5,6.13
10-10-2006
Arquitecturas série
• Optimização ao nível do algoritmo
Produto Multiplicando
0000 0011 0010
0001 0001 0010
0001 1000 0010
0000 0110
3. Desloca registo multiplicador para a direita
FinalSim
Não
1. TestaMultiplic_0
Multiplicador_0 = 1
1a. Adiciona multiplicando na metadeMS do produto e guarda resultado
N-ésimarepetição?
Início
Multiplicador_0 = 0
Electrónica de Computadores EC5,6.14
10-10-2006
Arquitecturas série
Multiplicador = datapath + controlo
Produto
Multiplicando
32-bit ALU
EscritaControlo
32 bits
64 bits
(Multiplicador)
Desl. Direita
Para a multiplicação em complemento para dois:- extensão do bit de sinal- alteração do controlo para subtrair o último produto parcial
8
Electrónica de Computadores EC5,6.15
10-10-2006
Algoritmo de Booth
• O algoritmo de Booth permite multiplicar númeroscom sinal de uma forma elegante e reduzindo o número de ciclos para o cálculo
Algoritmo de Booth
° Exemplo 2 x 6 = 0010 x 0110:0010
x 0110+ 0000 desl. (0 no multiplicador)+ 0010 soma (1 no multiplicador)+ 0010 soma (1 no multiplicador)+ 0000 desl. (0 no multiplicador)
00001100
° ALU com soma ou subtracção pode ober o resultado de várias maneiras:6 = – 2 + 8 0110 = – 00010 + 01000
° Por exemplo
° 0010x 0110
0000 desl.(0 no multiplicador) – 0010 sub. (início seq. de 1’s)
0000 desl. (meio seq. de 1’s) + 0010 soma (final seq. de 1’s)
00001100
9
Electrónica de Computadores EC5,6.17
10-10-2006
Algoritmo de Booth
0 1 1 1 1 0Início da sequênciaFinal da sequência Meio da sequência
–1
+ 10000
01111
Bit actual Bit à direita Situação Example Op
1 0 Início de 1’s 0001111000 sub
1 1 Meio de 1’s 0001111000 nenh.
0 1 Final de 1s 0001111000 adic
0 0 Meio de 0’s 0001111000 nenh.
Originalmente para acelerar: deslocamentos mais rápidos do que adições
Aplicação do algoritmo de Booth (2 x -3)
1a. P = P - m 1110 + 11101110 1101 0 desl. P (sign ext)
1b. 0010 1111 0110 1 01 -> ad+ 0010
2a. 0001 0110 1 desloca P
2b.0010 0000 1011 0 10 -> sub+ 1110
3a.0010 1110 1011 0 desl
3b.0010 1111 0101 1 11 -> nop
4a 1111 0101 1 desloca
4b.0010 1111 1010 1 final
Operação Reg. multiplicando Reg. produto próximo?
0. valor inicial 0010 0000 1101 0 10 -> sub
10
Electrónica de Computadores EC5,6.19
10-10-2006
Prova que Booth fuciona em comp. para 2
)22()2)2(2(
2)(
2)(
...
2)(
2)(
2)(
30
0
3131
30
0
3131
313130
303029
221
110
001
3232
i
i
i
i
i
i
i
bitbit
aabaaab
baa
baa
baa
baa
baa
ab
×+×−×=×−×+×−×
××−
××−
+××−
+××−
+××−
×
∑∑==
++
++
++
+
−
−−
Equação da multiplicação (axb) em complemento para dois !
Electrónica de Computadores EC5,6.20
10-10-2006
Algoritmo Booth Radix-4
Sequência de 1’s01117
Início de uma sequência de 1’s-B0116
Final de sequência de 1’s e início doutra-B1015
Início de sequência de 1’s-2B0014
Final de sequência de 1’s+2B1103
1 Isolado+B0102
Final de sequência de 1’s+B1001
Não sequência de 1’s00000ComentáriosOperaçãoai-1aiai+1id
• Os algoritmos com radix superior a 2 são também designados por
algoritmos de Booth modificados:
– analisam um número de bits b=log(radix)+1 e deslocam o
multiplicador log(radix) bits para a direita em cada iteração
– as tabelas a usar são compostas; e.g tabela para radix-4:
11
Aplicação do algoritmo de Booth radix-4 (5 x -6)
1a. P = P – 2xm 10110 + 1011010110 1010 0 desl. P (sign ext)
1b. 0101 11101 10 10 1 101 -> subP = P – m 1011 + 10112a. 1000 10 10 1 desloca P
2b.0010 1110 0010 final
Operação Reg. multiplicando Reg. produto próximo?
0. valor inicial 0101 00000 1010 0 100 -> sub 2x
• Comparando com o algoritmo de Booth radix-2:
― número de iterações reduzido para metade; no caso geral de
números com n bits e o algoritmo radix-m, são necessárias
iterações
―no entanto: a dimensão das tabelas é 2xm, ou seja duplica por
cada bit adicional a analisar!
―no entanto: maior número de operações diferentes!
m
n
2log
Electrónica de Computadores EC5,6.22
10-10-2006
Circuitos de deslocamento
• Circuito de deslocamento lógico de apenas 1 bit
• Circuito de deslocamento aritmético de apenas 1 bit
• Deslocar um número variável de bits num tempo constante faz-se com deslocadores combinatórios
MSB LSB"0" "0"
MSB LSB "0"
12
Electrónica de Computadores EC5,6.23
10-10-2006
Circuitos combinatórios de deslocamento
• Bloco básico: MUX
• Circuito de deslocamento para a direita de 8 bits:
1 0sel
D
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
S2 S1 S0A0A1A2A3A4A5A6A7
R0R1R2R3R4R5R6R7
MUX 2:1
Electrónica de Computadores EC5,6.24
10-10-2006
Barrel Shifter
Área definida fundamentalmente pelas ligações
Sh3Sh2Sh1Sh0
Sh3
Sh2
Sh1
A3
A2
A1
A0
B3
B2
B1
B0
: Control Wire
: Data Wire
13
Electrónica de Computadores EC5,6.25
10-10-2006
4x4 Barrel Shifter
B u ff erS h 3S h 2S h 1S h 0
A 3
A 2
A 1
A 0
Electrónica de Computadores EC5,6.26
10-10-2006
Divisão: arquitectura série
1001010 0111
0111 1010
00100
1001
0111
00100
Resto
Quociente
DivisorDividendo
14
Electrónica de Computadores EC5,6.27
10-10-2006
Divisão: arquitectura série
2b. Repôr o valor original: R[Resto] = R[Resto] + R[Divisor] Deslocar R[quociente] paraa esquerda e colocar o novo LSB a 0
TestaR[Resto]
R[Resto] < 0R[Resto] ≥≥≥≥ 0
1. R[Resto] = R[Resto] - R[Divisor]
2a. DeslocarR[quociente] paraa esquerda e colocar o novo LSB a 1
3. Deslocar R[Divisor] para a direita 1 bit.
FinalSim: n+1 repetições
Início: Colocar dividendo no R[Resto]
n+1repetição? Não: < n+1 repetições
Electrónica de Computadores EC5,6.28
10-10-2006
Divisão: arquitectura série
Remainder
Quotient
Divisor
64-bit ALU
Shift Right
Shift Left
WriteControl
32 bits
64 bits
64 bits
15
Electrónica de Computadores EC5,6.29
10-10-2006
Divisão: arquitectura série
3b. Repôr o valor original: R[Resto] MSB = R[Resto] MSB + R[Divisor] Deslocar R[Resto] para a esquerda e colocaro novo LSB a 0
TestaR[Resto]
R[Resto] < 0R[Resto] ≥≥≥≥ 0
3a. DeslocarR[Resto] paraa esquerda e colocar o novo LSB a 1
Final
Sim: n repetições
Início: Colocar dividendo no R[Resto]
nrepetição? Não: < n repetições
2. R[Resto] MSB = R[Resto] MSB –R[Divisor]
3. Deslocar RMSB[Resto] para a direita 1 bit.
1. Deslocar R[Resto] para a esquerda
Electrónica de Computadores EC5,6.30
10-10-2006
Arquitectura série
Remainder (Quotient)
Divisor
32-bit ALU
WriteControl
32 bits
64 bits
Shift Left“HI” “LO”
16
Electrónica de Computadores EC5,6.31
10-10-2006
Algoritmo SRT para a divisão
• SRT- o algoritmo para divisão mais conhecido: Sweeney, Robertson, and Tocher
• Usa a divisão do tipo nonrestoring (n adições/subtracções): bit de quociente pode ser 0, 1 e -1:
Electrónica de Computadores EC5,6.32
10-10-2006
Algoritmo SRT para a divisão
DivisãoNonrestoring
Modificada
• Problema: comparação de 2ri-1 com D ou -D
• Solução: limitando D à fracção normalizada 1/2≤|D|<1
• Região de 2ri-1 para o qual qi=0 reduzido a
17
Electrónica de Computadores EC5,6.33
10-10-2006
Algoritmo SRT para a divisão
• Vantagem: Comparar resultado parcial 2ri-1 com 1/2 ou -1/2, e não D ou -D
• Fracção binária representada em complemento para 2
– ≥ 1/2 iff os MSBs valem 0.1
– ≤ -1/2 iff os MSBs valem 1.0
• Apenas 2 bits de 2ri-1 são examinados – não há
comparação completa entre 2ri-1 e D
• Seleccionando o dígito de quociente:
Electrónica de Computadores EC5,6.34
10-10-2006
Algoritmo SRT para a divisão
• Dígitos do quocienteseleccionados para que|ri| ≤ |D| ⇒ resto final < |D|• O processo inicia-se com o divisor normalizado –o resto parcial é normalizado:desloca-se para a esquerda sobre 0's/1’s se positivo/negativo
• Exemplo:– 2ri-1=0.001xxxx (x - 0/1); 2ri-1<1/2 - qi=0,
2ri=0.01xxxx – 2ri-1=1.110xxxx; 2ri-1>-1/2 - qi=0, 2ri=1.10xxxx
• SRT é divisão nonrestoring com o divisor e o restonormalizados
18
Electrónica de Computadores EC5,6.35
10-10-2006
Algoritmo SRT para a divisão
1. Amostrar bits + significativos do divisor e dividendo
2. Usar bits para indexar tabela que fornece bits de estimativa do quociente
3. Dividendo - Divisor * estimativa
4. Guardar dígitos
5. Deslocar registos de m bits
6. Go to 1
Electrónica de Computadores EC5,6.36
10-10-2006
Algoritmo SRT para a divisão
• Algoritmo radix 2 (Para a explicação considerar um ponto decimal à esquerda do bit mais significativo)
1. Se R[Divisor] tem k MSB a 0 deslocar registos para a esquerda k posições (R[divisor] >= ½)
2. For (i=0; i<n; i++)1. 3 bits RMSB[Resto] iguais (-¼<=R[Resto]<¼): desloca 1 bit
para a equerda R[Resto] e qi=0
2. 3 bits diferentes e R[Resto] negativo (R[Resto]<-¼): desloca 1 bit para a esquerda, soma divisor ao resto e qi=-1
3. 3 bits diferentes e R[Resto] positivo (R[Resto]>=¼): desloca 1 bit para a esquerda, subtrai divisor ao resto e qi=1
3. Se R[Resto] for negativo, corrigir o Resto adicionando o Divisor e o quociente subtraindo 1. O R[Resto] é deslocado para a direita k posições para compensar o passo 1.
19
Electrónica de Computadores EC5,6.37
10-10-2006
Algoritmo SRT para a divisão
00000 0111 0011 Deslocar para esquerda 2 pos.
00001 1100 1100 3 bits = e (desl q=0)
00011 1000 1100 3 bits = e (desl. q=0)
00111 0000 01100 3 bits ≠ e - (desl. e subtrai q=1)
01110 0000
- 01100
00010 0000 01100 3 bits = (desl. e q=0)
00100 0000 01100 positivo, certo; deslocar para direita 2 pos
00001 0000
R[quociente] = 0010 (2)
R[Resto] = 0001 (1)
Electrónica de Computadores EC5,6.38
10-10-2006
Algoritmo SRT para a divisão
dqrPP
dqPP
jjj ×−=
×−=
++ 11
101Para convergir:
dPr
dr
xPPP
j
jjj
3
2||4
1||||||
1
11
≤⇒=
×
−
≤⇒≤
+
++
dqPr
dqPr
jj
jj
×
+−=×
×
+=×
+
+
1
1
3
2
3
2Valor máximo
Valor mínimo
2,1,0,1,21 ++−−=+jq
20
Electrónica de Computadores EC5,6.39
10-10-2006
Algoritmo SRT para a divisão
Pj
Pj+1
qj=0qj=-1qj=-2qj=+1 qj=+2
-2/3d +2/3d
-2/3d +2/3dPj0
qj=0
qj=1
qj=2
e.g. 4*5/12d-1xd = 2/3d → Pj <5/12d escolhe q=1
4*1/12d-1xd = -2/3d → 1/12d< Pj escolhe q=1
d/12
d/6
5d/12
d/3
Electrónica de Computadores EC5,6.40
10-10-2006
Conclusões
– A multiplicação sem sinal e em complemento paradois têm algoritmos diferentes (ao contrário daadição!)
– As arquitecturas paralelas para multiplicação rápidatêm estruturas em árvore de operadores do tipo CSA
– Para a multiplicação do tipo série com sinal deveutilizar-se o algoritmo de Booth
– Os circuitos lógicos para deslocamento de um número variável de bits são circuitos combinatórios
– Algoritmo de divisão do tipo série: SRT