Vous êtes sur la page 1sur 2

Quelle:Timo Hamalainen, Computer Arithmetic: Carry-Skip Adder

Carry-Skip-Adder
consider addition of the following numbers
. . .  
  010101   
 . . .
     
. . .  
 101010   
. . .

if   = 1  carry will propagate to position 

to speed-up operation, propagation is skipped to position i without waiting for ripp-


ling

operation time varies according to operands as in carry-complete addition

to implement carry-skip adder, stages are divided into blocks


operands
....

generated block previous bock

skipped carryskip
detect

carry-skip logic is added to each block to detect when carry-in the block can be
passed directly to the next block

define carry transfer   =  

carry skipping can be detected for a block size of m as follows (carry propagates
through all stages):
 
 !
. . . "#%$&
('*) +,'-+,. 0/1+23"
4 !
"/6505 5/

note: this takes into account both propagated and generated carries!

carry out from the block (m-bits in a block) is

; 7 !
85 50<>5"= !#9$&
(.:?  ; : !>< = # ?
@ "BACAED,F G D,H D2>I JCKLDMF

1
A 2m1 B2m1 A m+1 Bm+1 Am Bm A m1 Bm1 A1 B1 A0 B0

C2m
VA ... Cm+2
VA
Cm+1
VA
Cm
VA ... C2
VA
C1
VA
C0

S 2m1 T2m1 S m+1 Tm+1 Sm Tm Sm1 Tm1 S1 T1 S0 T0


... ...

block size in carry-skip adder is very important

worst case operation time takes place when

carry is generated in the first block


carry skips intermediate stages
carry is killed in the last block

Block N 1 Block 1 Block 0


M
...

CarrySkipLogic ;
H
worst case addition time is #   
( =adder width,  =block size)

for optimal block size, minimize delay:


F
      
H
#  '
H
  
FC#
'
H

#

in practise, non-uniform block sizes gives the best performance

in general, outer blocks should be smaller than middle blocks

Vous aimerez peut-être aussi