$ od -c -N 50000 [_CD8_]<doradodocs>DoradoB-WEverything.dm!1>DoradoB-Wbx.dm 0000000 377 \0 \0 D o r a d o C o v e r . b 0000020 x \0 373 226 212 241 327 \0 \0 376 001 \0 205 7 \r T 0000040 h e D o r a d o : \r A H i 0000060 g h - P e r f o r m a n c e P 0000100 e r s o n a l C o m p u t e r 0000120 \r T h r e e P a p e r s \r C S 0000140 L - 8 1 - 1 \t J a n u a r y 1 0000160 9 8 1 \r A B S T R A C T \r T h i 0000200 s r e p o r t r e p r o d u 0000220 c e s t h r e e p a p e r s 0000240 o n t h e D o r a d o p 0000260 e r s o n a l c o m p u t e r 0000300 . E a c h h a s b e e n 0000320 , o r w i l l b e , p u 0000340 b l i s h e d i n a j o u 0000360 r n a l o r p r o c e e d i 0000400 n g s . \r A P r o c e s s o r 0000420 f o r a H i g h - P e 376 001 0000440 \0 344 b r f o r m a n c e P e r 0000460 s o n a l C o m p u t e r , 0000500 b y B u t l e r W . L a m 0000520 p s o n a n d K e n n e t h 0000540 A . P i e r . A p p e a 0000560 r e d i n P r o c . 7 t h 0000600 S y m p \0 \v \0 \n \0 005 001 + 200 \0 \0 0000620 006 \t B W L . s t y l e \0 \v 200 201 \b 0000640 001 \0 \t Q 301 377 271 025 \0 002 256 037 \0 \b E 034 0000660 001 035 \0 \0 024 200 202 \0 002 W \f \0 \a 020 001 016 0000700 1 037 \0 \b D 035 \0 \0 024 027 $ \0 \a 222 A 016 0000720 1 037 \0 \b D 035 \0 \0 024 027 2 200 202 \0 002 ^ 0000740 001 \0 001 004 3 030 @ 036 V . _ 302 347 004 001 0000760 001 004 \0 001 004 \0 A \0 \0 001 \b \0 0001000 001 300 \0 \0 001 004 @ 310 U \b V 310 ^ \f _ 004 0001020 347 \r 033 021 T 001 b \0 \0 \n \0 002 K \0 \0 337 0001040 275 357 345 376 001 \0 ) 256 o s i u m o n 0001060 C o m p u t e r A r c h i t 0001100 e c t u r e , S i g A r c h / 0001120 i e e e , L a B a u l e , 0001140 M a y 1 9 8 0 , 1 4 6 - 1 6 0001160 0 . \r A n I n s t r u c t i o 0001200 n F e t c h U n i t f o r 0001220 a H i g h - P e r f o r m a 0001240 n c e P e r s o n a l C o m 0001260 p u t e r , b y B u t l e r 0001300 W . L a m p s o n , G e n 0001320 e A . M c D a n i e l , a 0001340 n d S e v e r o M . O r n 0001360 s t e i n . S u b m i t t e 0001400 d f o r p u b l i c a t i o 0001420 n . \r T h e M e m o r y S y 0001440 s t e m o f 376 001 \0 ' ? a H 0001460 i g h - P e r f o r m a n c e 0001500 P e r s o n a l C o m p u t e 0001520 r , b y D o u g l a s W . 0001540 C l a r k , B u t l e r W 0001560 . L a m p s o n , a n d K 0001600 e n n e t h A . P i e r . 0001620 A r e v i s e d v e r s i 0001640 o n w i l l a p p e a r i 0001660 n i e e e T r a n s a c t i 0001700 o n s o n C o m p u t e r s 0001720 . \r T h e f i r s t p a p 0001740 e 200 202 \0 002 ^ 001 200 203 \0 003 ^ 001 ^ \0 \0 0001760 K \0 353 001 246 \b \0 001 \0 \0 001 ! \0 \0 0002000 001 004 \0 001 ! \b \0 001 \0 \0 004 036 \b ( 004 0002020 , \f K 004 215 \f 353 005 $ 021 205 001 212 005 245 001 0002040 264 376 347 \0 \0 003 7 \0 \0 341 332 356 344 376 001 \0 0002060 5 U r d e s c r i b e s t h 0002100 e D o r a d o ' s m i c r o 0002120 - p r o g r a m m e d p r o c 0002140 e s s o r , a n d a l s o 0002160 g i v e s a n o v e r v i e 0002200 w o f i t s h i s t o r y 0002220 a n d p h y s i c a l c o 0002240 n s t r u c t i o n . T h e 0002260 s e c o n d d i s c u s s e 0002300 s t h e i n s t r u c t i o 0002320 n f e t c h u n i t , w h 0002340 i c h p r e p a r e s p r o 0002360 g r a m i n s t r u c t i o n 0002400 s f o r e x e c u t i o n , 0002420 a n d t h e t h i r d d 0002440 e a l s w i t h t h e c a 0002460 c h 376 001 \0 300 320 e , m a p a n 0002500 d m a i n s t o r a g e o 0002520 f t h e D o r a d o ' s m 0002540 e m o r y s y s t e m . \r c 0002560 C o p y r i g h t 1 9 8 1 b 0002600 y X e r o x C o r p o r a t 0002620 i o n . \r X E R O X \r P A L O 0002640 A L T O R E S E A R C H C E 0002660 N T E R \r 3 3 3 3 200 203 \0 003 ^ 001 ^ 0002700 \0 \0 \a 222 004 006 235 037 \0 002 { 035 \0 \0 P 027 0002720 035 \0 \n 031 & 016 1 035 241 025 \0 \0 225 037 \0 \b 0002740 D 034 001 035 \0 \0 024 \0 \b 030 001 \a N 035 252 037 0002760 \0 \b D 034 001 035 \0 \0 024 001 7 \t ^ 031 d 0003000 \0 \0 001 \0 \0 004 \0 \0 A \0 001 & 0003020 004 \0 001 004 \0 A \0 \0 005 7 301 8 \t 9 \r 0003040 ^ 311 c 021 d 311 } 025 ~ 001 202 377 246 \0 \0 002 0003060 1 \0 \0 341 301 360 344 376 001 \0 | 345 C o y 0003100 o t e H i l l R o a d / 0003120 P a l o A l t o / C a l i 0003140 f o r n i a 9 4 3 0 4 \r \r T h 0003160 i s p a g e s h o u l d n 0003200 o t a p p e a r i n t h e 0003220 p u b l i s h e d r e p o r 0003240 t . \r \r P l e a s e n o t e 0003260 t h a t t h e p a g e s a 0003300 r e n u m b e r e d c o n t 0003320 i n u o u s l y f o r a l l 0003340 t h r e e p a p e r s , i 0003360 n c l u d i n g t h e t i t 0003400 l e p a g e f o r e a c h 0003420 p a p e r , b u t e x c l 0003440 u d i n g t h e t i t l e 0003460 p a g e f o r t h e 376 001 \0 303 0003500 217 e n t i r e r e p o r t . 0003520 P a g e s h a v e b e e 0003540 n l a i d o u t w i t h 0003560 t h e a s s u m p t i o n t 0003600 h a t a n e v e n p a g e 0003620 a n d t h e n e x t o d 0003640 d p a g e w i l l f o r m 0003660 a d o u b l e - p a g e s 0003700 p r e a d . A l l t h e 0003720 t i t l e p a g e s a r e 0003740 o d d n u m b e r e d , a n 0003760 d t h e \0 \b 030 001 \a N 035 252 037 \0 \b 0004000 D 034 001 035 \0 \0 024 200 203 \0 003 ^ 001 ^ \0 200 0004020 204 \0 004 ^ 001 ^ \0 & 001 \0 1 022 2 032 g 022 0004040 h 004 \0 A 004 \0 @ \0 \0 001 \0 \0 004 0004060 0 \b 1 001 264 377 d \0 \0 003 + 001 + 354 332 366 0004100 360 376 001 \0 357 @ n e x t ( e v e 0004120 n ) p a g e i s t h e f 0004140 i r s t t e x t p a g e , 0004160 w h i c h s h o u l d a p p 0004200 e a r o n t h e r e v e r 0004220 s e o f t h e t i t l e 0004240 p a g e . A b l a n k p 0004260 a g e s h o u l d a p p e a 0004300 r o n t h e r e v e r s e 0004320 o f t h e t i t l e p a 0004340 g e f o r t h e e n t i r 0004360 e r e p o r t . P a g e 0004400 2 0 , a t t h e e n d o 0004420 f t h e f i r s t p a p e 0004440 r , i s b l a n k s o t 0004460 h a t t h e t i t l e p a 0004500 g e o f 376 001 \0 207 020 t h e s 0004520 e c o n d p a p e r w i l l 0004540 f a l l o n a n o d d 0004560 p a g e . \r \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0004600 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0005040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 200 0005060 203 \0 003 ^ 001 ^ \0 \0 \0 001 \0 \0 001 + 376 0005100 h \0 \0 001 + 001 + 366 362 370 366 377 \0 \0 D o 0005120 r a d o I f u . b x \0 373 226 212 9 $ 0005140 \0 \0 376 001 \0 9 377 P a g e n u m b 0005160 e r s : Y e s F i r s t 0005200 p a g e : 2 1 \r F i l e : D 0005220 o r a d o I f u 0 . b x \r F i l 0005240 e : D o r a d o I f u 1 . b x 0005260 \r \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0005300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0005540 \0 \0 \0 \0 \0 \0 \0 376 001 \0 \v 304 \0 \0 \0 \0 0005560 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0006060 \0 \0 \0 \0 \0 \0 \0 \v \0 \n \0 001 \0 J 200 \0 0006100 \0 006 \t B W L . s t y l e \0 \v \0 004 0006120 \f 030 001 037 \0 \b D \0 " \0 6 300 \0 \0 J 0006140 \0 \0 \n \0 \0 J \0 J 366 361 370 370 377 \0 \0 D 0006160 o r a d o I f u 0 . b x \0 373 226 213 0006200 206 242 \0 \0 376 001 \0 367 9 \r a n i n s 0006220 t r u c t i o n f e t c h u 0006240 n i t f o r a h i g h - p 0006260 e r f o r m a n c e p e r s o 0006300 n a l c o m p u t e r \r a n 0006320 i n s t r u c t i o n f e t c 0006340 h u n i t f o r a h i g 0006360 h - p e r f o r m a n c e p e 0006400 r s o n a l c o m p u t e r \r 0006420 A n I n s t r u c t i o n F 0006440 e t c h U n i t f o r a 0006460 \r H i g h - P e r f o r m a n c 0006500 e P e r s o n a l C o m p u 0006520 t e r \r b y B u t l e r W . 0006540 L a m p s o n , G e n e A 0006560 . M c D a n i e l a n d S 0006600 e v e r o M . 376 001 \0 032 304 O r 0006620 n s t e i n \r J a n u a r y 1 0006640 9 8 1 \r A B S T R A C T \r T h e 0006660 i n s t r u c 337 t i o n f e 0006700 t c h u n i t ( \0 \0 \0 \0 \0 \0 0006720 \0 \v \0 \n \0 ` 001 j 200 \0 \0 006 \t B W L 0006740 . s t y l e \0 \v 200 201 \b 001 201 002 \f 002 0006760 034 001 201 202 \f 002 034 001 \0 \b 322 300 \a N 025 \0 0007000 002 256 037 \0 \b D 035 \0 \0 024 \0 \a 020 \0 \a N 0007020 037 \0 \b D 035 \0 \0 024 027 $ \0 \a 020 \0 016 1 0007040 037 \0 \b D 035 \0 \0 024 027 $ \0 \a 222 \0 016 1 0007060 037 \0 \b D 035 \0 \0 024 027 2 \0 001 004 D \n 207 0007100 020 313 # \t 3 026 C 037 001 \0 004 001 001 004 0007120 \0 001 004 \0 A \0 017 \0 \0 \0 006 \v 001 \t \0 0007140 004 \0 003 \0 \r \0 300 \0 \0 001 300 C \0 D 300 206 0007160 002 207 006 313 311 \b \a \t 311 025 \v 026 311 036 017 037 0007200 001 < \0 \0 \n \0 005 c 302 \0 326 255 354 335 376 001 0007220 \0 354 Q i f u ) o f t h e D 0007240 o r a d o p e r s o n a l c 0007260 o m p u t e r s p e e d s u 0007300 p t h e e m u l a t i o n 0007320 o f i n s t r u c 337 t i o n s 0007340 b y p r e - f e t c h i n g 0007360 , d e c o d i n g , a n d 0007400 p r e p a r i n g l a t e r 0007420 i n s t r u c 337 t i o n s i n 0007440 p a r a l l e l w i t h t 0007460 h e e x e c u t i o n o f 0007500 e a r l i e r o n e s . I 0007520 t d i s p a t c h e s t h e 0007540 m a c h i n e ' s m i c r o 0007560 c o d e d p r o c e s s o r 0007600 t o t h e p r o p e r s t 0007620 a r t 376 001 \0 202 & i n g a d d r 0007640 e s s f o r e a c h i n s 0007660 t r u c 337 t i o n , a n d p 0007700 a s s e s t h e i n s t r u 0007720 c t i o n ' s f i e l d s t 0007740 o t h e p r o c e s s o r 0007760 o n d e m a n d . A w 0010000 r i t e a b l e d e c o d i n 0010020 g m e m o r y a l l o w s 0010040 t h e i f u t o b e s p 0010060 e c i a l i z e d t o a p 0010100 a r t i c u l a r i n s t r u 0010120 c 337 t i o n s e t , a s l 0010140 o n \0 017 \0 \0 \0 006 \v 001 \t \0 004 \0 \r \0 0010160 003 001 \0 017 \0 \0 \0 006 \v 001 \t \0 004 \0 003 \0 0010200 \r \0 \0 \0 020 003 001 214 021 217 001 312 377 037 \0 \0 0010220 003 c 302 \0 345 345 365 345 376 001 \0 q \t g a 0010240 s t h e i n s t r u c 337 t i 0010260 o n s a r e a n i n t e g 0010300 r a l n u m b e r o f b y 0010320 t e s l o n g . T h e r e 0010340 a r e i m p l e m e n t a t 0010360 i o n s o f s p e c i a l i 0010400 z e d i n s t r u c 337 t i o n 0010420 s e t s f o r t h e M e 0010440 s a , L i s p , a n d S m 0010460 a l l t a l k l a n g u a g e 0010500 s . T h e i f u i s i 0010520 m p l e m e n t e d w i t h 0010540 a s i x - s t a g e p i p e 0010560 l i n e , a n d c a n d e 0010600 c o d e a n i n s t r u c 337 0010620 t i o n e v e r y 6 0 376 001 \0 0010640 200 j n s . U n d e r f a 0010660 v o r a b l e c o n d i t i o 0010700 n s t h e D o r a d o c a 0010720 n e x e c u t e i n s t r u 0010740 c 337 t i o n s a t t h i s 0010760 p e a k r a t e ( 1 6 m i 0011000 p s ) . \r T h i s p a p e r 0011020 h a s b e e n s u b m i t t 0011040 e d f o r p u b l i c a t i 0011060 o n . \r C R C A T E G O R I E 0011100 \0 \a 222 \0 006 235 037 \0 002 { 035 \0 \0 P 027 022 0011120 303 c 303 222 \0 017 \0 \0 \0 006 \v 001 \t \0 004 \0 0011140 003 \0 \r \0 \0 017 \0 \0 \0 006 \v 001 \t \0 004 \0 0011160 \r \0 003 001 \0 021 \0 \0 \0 \a \v 001 \t \0 004 \0 0011200 003 \0 \r \0 \b 001 004 \0 A \0 \0 020 253 \0 256 0011220 ! c 3 222 001 236 375 037 \0 \0 002 002 \0 \0 327 317 0011240 364 331 376 001 \0 y | S \r 6 . 3 4 , 6 0011260 . 2 1 \r K E Y W O R D S A N 0011300 D P H R A S E S \r c a c h e , 0011320 e m u l a t i o n , i n s t 0011340 r u c t i o n f e t c h , m 0011360 i c r o c o d e , p i p e l i 0011400 n e . \r c C o p y r i g h t 0011420 1 9 8 1 b y X e r o x C o 0011440 r p o r a t i o n . \r \r \r \r X 0011460 E R O X \r P A L O A L T O R 0011500 E S E A R C H C E N T E R \r 3 0011520 3 3 3 C o y o t e H i l l 0011540 R o a d / P a l o A l t o 0011560 / C a l i f o r n i a 9 4 0011600 3 0 4 \r S E C . 1 \t I N T R O 0011620 D U C T I O N \r 1 . I n t r o 0011640 d u c t i o n 376 001 \0 306 235 \r T h i 0011660 s p a p e r d e s c \0 \a 222 \0 0011700 006 235 037 \0 002 { 035 \0 \0 P 027 022 \0 006 262 \f 0011720 006 235 037 \0 002 { 035 \0 \0 P \0 006 262 030 016 1 0011740 037 \0 \b D 035 \0 \0 024 \0 \a 222 \0 006 235 037 \0 0011760 002 { 035 \0 \0 P 027 035 \0 \a 020 \0 \a N 037 \0 0012000 \b D 035 \0 \0 024 027 035 \0 \a 020 \0 \a N 037 \0 0012020 \b D 035 \0 \0 024 027 022 \0 \n 030 \0 016 1 035 241 0012040 025 \0 \0 225 037 \0 \b D 034 001 035 \0 \0 024 \0 \b 0012060 030 \0 \a N 035 252 037 \0 \b D 034 001 035 \0 \0 024 0012100 201 201 \f 001 \0 002 020 \r 036 # 302 ] , 204 < 206 0012120 L 207 L 210 \ 216 r 335 204 361 313 001 004 \0 A 0012140 \0 \0 001 \0 \0 004 \0 \0 A \0 001 & 0012160 004 \0 001 \0 \a \0 \0 \0 002 001 001 \0 \0 004 002 0012200 \0 \r 004 # \b ] 300 ^ \f _ 300 204 020 210 310 215 0012220 024 216 310 247 \0 250 310 334 302 335 030 365 303 \0 001 020 0012240 377 222 \0 \0 005 177 302 \0 314 210 350 330 376 001 \0 ] 0012260 L r i b e s t h e i n s t r 0012300 u c 337 t i o n f e t c h u n 0012320 i t ( i f u ) f o r t h e 0012340 D o r a d o , a p o w e r 0012360 f u l p e r s o n a l c o m 0012400 p u t e r d e s i g n e d t 0012420 o m e e t t h e n e e d s 0012440 o f c o m p u t i n g r e 0012460 s e a r c h e r s a t t h e 0012500 X e r o x P a l o A l t o 0012520 R e s e a r c h C e n t e r 0012540 . T h e s e p e o p l e 0012560 w o r k i n m a n y a r e 0012600 a s o f c o m p u t e r s 0012620 c i e n c e : p r o g r a m m 0012640 i n g e n v i r o n m e n t s 0012660 , 376 001 \0 / [ a u t o m a t e d 0012700 o f f i c e s y s t e m s , 0012720 e l e c t r o n i c f i l i 0012740 n g a n d c o m m u n i c a 0012760 t i o n , p a g e c o m p o 0013000 s i t i o n a n d c o m p u 0013020 t e r g r a p h i c s , v l 0013040 s i d e s i g n a i d s , 0013060 d i s t r i b u t e d c o m p 0013100 u t i n g , e t c . T h e 0013120 r e i s h e a v y e m p h 0013140 a s i s o n b u i l d i n g 0013160 w o r k i n g p r o t o t y 0013200 p e s . T h e D o r a d o 0013220 \0 \a \0 \0 \0 002 001 001 302 \0 300 \n \0 026 302 ! 0013240 316 # 302 & 317 h 303 l 001 332 377 001 \0 \0 003 177 0013260 302 \0 355 355 361 355 376 001 \0 311 365 p r e s 0013300 e r v e s t h e i m p o r t 0013320 a n t p r o p e r t i e s o 0013340 f a n e a r l i e r p e r 0013360 s o n a l c o m p u t e r , 0013400 t h e A l t o [ 1 3 ] , w 0013420 h i l e r e m o v i n g t h 0013440 e s p a c e a n d s p e e 0013460 d b o t t l e n e c k s i m 0013500 p o s e d b y t h a t m a 0013520 c h i n e ' s 1 9 7 3 d e s 0013540 i g n . T h e h i s t o r 0013560 y , d e s i g n g o a l s , 0013600 a n d g e n e r a l c h a 0013620 r a c t e r i s t i c s o f 0013640 t h e D o r a d o a r e d 0013660 i s c u s s e d i n 376 001 \0 246 256 0013700 a c o m p a n i o n p a p 0013720 e r [ 8 ] , w h i c h a l 0013740 s o d e s c r i b e s i t s 0013760 m i c r o p r o g r a m m e d 0014000 p r o c e s s o r . A s 0014020 e c o n d p a p e r [ 1 ] 0014040 d e s c r i b e s t h e m e 0014060 m o r y s y s t e m . \r T 0014100 h e D o r a d o i s b u i 0014120 l t o u t o f e c l 1 0 0014140 K c i r c u i t s . I t 0014160 h a s 1 6 - b i t d a t a 0014200 p a t h s , 2 8 b i t v i 0014220 r t u a l a d d r e s s e s , 0014240 4 K - 1 6 K w o 303 177 302 \0 317 232 0014260 303 235 001 352 375 001 \0 \0 003 n 302 \0 365 365 366 366 0014300 376 001 \0 005 332 r d s o f h i g h 0014320 - s p e e d c a c h e m e m 0014340 o r y , w r i t e a b l e m 0014360 i c r o c o d e , a n d a n 0014400 i / o b a n d w i d t h o 0014420 f 5 3 0 M b i t s / s e c . 0014440 F i g u r e 1 s h o w s 0014460 a b l o c k d i a g r a m 0014500 o f t h e m a c h i n e . 0014520 T h e m i c r o c o d e d 0014540 p r o c e s s o r c a n e x 0014560 e c u t e a m i c r o 337 i n 0014600 s t r u c t i o n e v e r y 0014620 6 0 n s . A n i n s t r 0014640 u c 337 t i o n o f s o m e 0014660 h i g h l e v e l l a n g u 0014700 a g e i 376 001 \0 264 0 s p e r f 0014720 o r m e d b y e x e c u t i 0014740 n g a s u i t a b l e s u 0014760 c c e s s i o n o f t h e s 0015000 e m i c r o 337 i n s t r u c t 0015020 i o n s ; t h i s p r o c e 0015040 s s i s c a l l e d e m u 0015060 l a t i o n . \r \r \r \r \r \r \r \t < 0015100 = = < I f u F i g 1 . p r e s s 0015120 < \r T h e p u r p o s e o f 0015140 t h e i f u i s t o s 0015160 p e e d u p e m u l a t i o 0015200 n b y p r e - f e t c h i n 0015220 g , d e c o d i n 303 n 373 o 367 p 0015240 367 q 367 r 367 s 367 t 365 210 302 \0 316 < 302 ? 0015260 306 326 302 342 307 c 303 l 317 232 303 236 001 320 377 177 0015300 \0 \0 004 , 302 \0 350 350 360 360 376 001 \0 347 : g 0015320 , a n d p r e p a r i n g 0015340 l a t e r i n s t r u c 337 t i 0015360 o n s i n p a r a l l e l 0015400 w i t h t h e e x e c u t i 0015420 o n o f e a r l i e r o n 0015440 e s . I t d i s p a t c h 0015460 e s t h e m a c h i n e ' s 0015500 m i c r o c o d e d p r o c 0015520 e s s o r t o t h e p r o 0015540 p e r s t a r t i n g a d d 0015560 r e s s f o r e a c h i n 0015600 s t r u c 337 t i o n , s u p p 0015620 l i e s t h e p r o c e s s 0015640 o r w i t h a n a s s o r 0015660 t m e n t o f o t h e r u 0015700 s e f u l i n f o r m a t i 376 0015720 001 \0 | 265 o n d e r i v e d f 0015740 r o m t h e i n s t r u c 337 0015760 t i o n , a n d p a s s e s 0016000 t h e i n s t r u c t i o n 0016020 ' s v a r i o u s f i e l d 0016040 s t o t h e p r o c e s s 0016060 o r o n d e m a n d . A 0016100 w r i t e a b l e d e c o d 0016120 i n g m e m o r y a l l o w 0016140 s t h e i f u t o b e 0016160 s p e c i a l i z e d t o a 0016200 p a r t i c u l a r i n s t 0016220 r u c 337 t i o n s e t ; t h 0016240 e r e i s r o o m f o r 0016260 302 \0 300 027 302 # 300 257 302 273 301 024 303 317 222 0016300 303 225 301 270 303 304 001 334 377 210 \0 \0 002 , 302 \0 0016320 356 356 356 356 376 001 \0 M 272 f o u r o f 0016340 t h e s e , e a c h w i t 0016360 h 2 5 6 i n s t r u c 337 t i 0016400 o n s . \r T h e r e a r e i 0016420 m p l e m e n t a t i o n s o 0016440 f s p e c i a l i z e d i n 0016460 s t r u c 337 t i o n s e t s 0016500 f o r t h e M e s a [ 9 ] 0016520 , L i s p [ 1 2 ] , a n d 0016540 S m a l l t a l k [ 5 ] l 0016560 a n g u a g e s , a s w e l 0016600 l a s a n A l t o [ 1 3 0016620 ] e m u l a t o r . T h e 0016640 i f u c a n d e c o d e 0016660 a n i n s t r u c 337 t i o n 0016700 e v e r y 6 0 n s , a n d 0016720 u n d e r f a 376 001 \0 q \0 v o 0016740 r a b l e c o n d i t i o n s 0016760 t h e D o r a d o c a n 0017000 e x e c u t e i n s t r u c 337 0017020 t i o n s a t t h i s p e 0017040 a k r a t e ( 1 6 m i p s 0017060 ) . \r F o l l o w i n g t 0017100 h i s i n t r o d u c t i o n 0017120 , w e d i s c u s s t h e 0017140 p r o b l e m o f i n s t 0017160 r u c 337 t i o n e x e c u t i 0017200 o n i n g e n e r a l t e 0017220 r m s a n d o u t l i n e 0017240 t h e s p a c e o f p 302 , 0017260 303 W 302 \0 300 035 302 ) 300 U 302 a 316 310 302 313 0017300 300 332 302 346 301 * 303 6 317 N 303 R 301 216 303 232 0017320 001 320 375 210 \0 \0 004 ^ 302 \0 350 350 352 352 376 001 0017340 \0 j 030 o s s i b l e s o l u t 0017360 i o n s ( 266 2 ) . W e 0017400 t h e n d e s c r i b e t h 0017420 e a r c h i t e c t u r e o 0017440 f t h e D o r a d o ' s i 0017460 f u ( 266 3 ) a n d i t s 0017500 i n t e r a c t i o n s w i 0017520 t h t h e p r o c e s s o r 0017540 w h i c h a c t u a l l y 0017560 e x e c u t e s t h e i n s 0017600 t r u c 337 t i o n s ( 266 4 ) 0017620 ; t h e r e a d e r w h o 0017640 l i k e s t o s e e c o 0017660 n c r e t e d e t a i l s m 0017700 i g h t w i s h t o r e a 0017720 d t h e s e s e c t i o n s 0017740 i n 376 001 \0 240 [ p a r a l l e 0017760 l w i t h 266 2 . T h e 0020000 n e x t s e c t i o n d e 0020020 a l s w i t h t h e i n t 0020040 e r n a l s o f t h e i f 0020060 u , d e s c r i b i n g h o 0020100 w t o p r o g r a m i t 0020120 a n d t h e d e t a i l s 0020140 o f i t s p i p e l i n e d 0020160 i m p l e m e n t a t i o n 0020200 ( 266 5 ) . A f i n a l 0020220 s e c t i o n t e l l s h o 0020240 w l a r g e a n d h o w 0020260 f a s t i t i s , a n d 0020300 g i v e s s o m e i 302 \0 316 L 0020320 302 O 300 232 302 246 317 F 303 I 001 344 377 W \0 \0 0020340 002 ^ 302 \0 362 362 362 362 376 001 \0 e 001 n f o 0020360 r m a t i o n a b o u t t h 0020400 e e f f e c t i v e n e s s 0020420 o f i t s v a r i o u s m 0020440 e c h a n i s m s f o r i m 0020460 p r o v i n g p e r f o r m a 0020500 n c e ( 266 6 ) . \r S E C . 0020520 2 \t T H E P R O B L E M \r 2 . 0020540 T h e p r o b l e m \r I t 0020560 h a s l o n g b e e n r e 0020600 c o g n i z e d t h a t t h 0020620 e a l g o r i t h m f o r 0020640 e x e c u t i n g a n o b j 0020660 e c t p r o g r a m c a n 0020700 b e m o s t e a s i l y d 0020720 e s c r i b e d b y a n o t 0020740 h e r p r o g r a m , 376 001 \0 0020760 236 " c a l l e d a n i n t e 0021000 r p r e t e r , w h i c h t 0021020 r e a t s b o t h t h e i 0021040 n s t r u c 337 t i o n s a n d 0021060 t h e d a t a o f t h e 0021100 o b j e c t p r o g r a m 0021120 a s i t s o w n d a t a . 0021140 T h e s i m p l e s t m 0021160 i c r o p r o g r a m m e d c 0021200 o m p u t e r s a c t u a l l 0021220 y d o e x e c u t i o n i 0021240 n j u s t t h i s w a y ; 0021260 t h e m i c r o 337 i n s t r 0021300 u c t i o n s 201 201 \f 001 302 ^ \0 q 0021320 312 200 302 \0 300 X 302 [ 306 300 302 316 307 \n 303 025 0021340 301 - 303 9 001 326 375 W \0 \0 002 234 302 \0 355 353 0021360 360 360 376 001 \0 225 273 c a n s p e c i 0021400 f y o n l y g e n e r a l - 0021420 p u r p o s e d a t a m a 337 0021440 n i p 337 337 u l a 337 t i o n s , 0021460 a n d a l l t h e k n o w 0021500 337 l e d g e a b o u t t h e 0021520 i n s t r u c 337 t i o n s b 0021540 e i n g e m u l a t e d i s 0021560 e x 337 p r e s s e d i n t 0021600 h e m i c r o 337 p r o g r a m 0021620 . \r W e i l l u s t r a t e 0021640 t h i s p o i n t w i t h 0021660 t h e f o l l o w i n g f 0021700 r a g m e n t o f a n e m 0021720 u l a t o r f o r a s t a 0021740 c k - b a s e d i n s t r u c 0021760 337 t i o n s 376 001 \0 \0 273 e t . 0022000 T h e f r a g m e n t i n 0022020 c l u d e s t h e b a s i c 0022040 i n s t r u c 337 t i o n f e 0022060 t c h o p e r a t i o n a n 0022100 d c o d e f o r t w o i 0022120 n s t r u c 337 t i o n s : P u 0022140 s h C o n s t a n t , w h i c 0022160 h p u s h e s t h e n e x 0022200 t i n s t r u c 337 t i o n b 0022220 y t e o n t o t h e s t a 0022240 c k , a n d P u s h L o c a 0022260 l V a r , w h i c h p u s h 0022300 e s t h e c o n t e n t 302 234 0022320 302 \0 300 Z 302 f 300 362 302 376 301 % 303 1 301 S 0022340 303 _ 313 b 303 n 301 206 303 222 313 254 303 270 001 322 0022360 376 200 \0 \0 003 231 302 \0 351 351 352 352 376 001 \0 > 0022400 264 s o f t h e l o c a l 0022420 v a r i a b l e a d d r e s s 0022440 e d b y t h e n e x t b 0022460 y t e ( r e l a t i v e t o 0022500 a p o i n t e r i n t h 0022520 e r e g i s t e r l o c a l 0022540 D a t a ) . T h e n o t a 0022560 t i o n i s s e l f - e x p 0022600 l a n a t o r y f o r t h e 0022620 m o s t p a r t . M i c 0022640 r o 337 i n s t r u c 337 t i o n s 0022660 a r e s e p a r a t e d b 0022700 y s e m i c o l o n s , a n 0022720 d p a r a l l e l o p e r a 0022740 t i o n s i n t h e s a m 0022760 e m i c r o 337 i n s t r u c t 0023000 i 376 001 \0 7 352 o n b y c o m m 0023020 a s . T h i s c o d e u 0023040 s e s n o s p e c i a l - p 0023060 u r p o s e o p e r a t i o n 0023100 s , e x c e p t t h a t w 0023120 e h a v e c o m p r e s s e 0023140 d t h e d e t a i l s o f 0023160 t h e s t a c k m a n i p 0023200 u l a t i o n i n t o a P 0023220 u s h o p e r a t i o n . \r R 0023240 e g i s t e 207 037 \0 037 W \f " 003 030 036 0023260 027 \0 022 \0 \a M 023 \0 031 350 024 \0 \0 \0 031 \0 0023300 0 \0 % \0 026 001 & \0 ' \0 . \0 7 \0 037 \0 0023320 \b E 9 \0 : \0 035 \0 \0 \0 030 \0 034 \0 025 \0 0023340 \0 \0 033 \0 8 001 303 231 302 \0 312 Z 302 c 300 235 0023360 302 256 313 211 303 215 343 231 001 240 376 234 \0 \0 002 0023400 \0 \0 360 320 361 361 376 001 \0 X X r s : p 0023420 c , l o c a l D a t a , o p 0023440 c o d e , t e m p \r G e t I n 0023460 s t r u c t i o n : \t - - T o 0023500 p o f t h e m i c r o c o 0023520 d e i n s t r u c 337 t i o n 0023540 e m u l a t i o n l o o p . \r 0023560 F e t c h [ p c ] ; \t - - S t 0023600 a r t a m e m o r y f e t 0023620 c h f r o m a d d r e s s 0023640 i n p c ; d a t a a r r i 0023660 v e s l a t e r . \r p c _ p 0023700 c + 1 ; \t - - I n c r e m e n 0023720 t p c r e g i s t e r f o 0023740 r n e x t i n s t r u c 337 t 0023760 i o n . \r i f i n t e r r u p 0024000 t P e n d i n g t h 376 001 \0 376 024 0024020 e n g o t o p r o c e s s I 0024040 n t e r r u p t \r o p c o d e 0024060 _ m e m o r y D a t a ; \t - - 0024100 U 207 037 \0 037 W \f " 003 030 036 027 \0 022 \0 0024120 \a M 023 \0 031 350 024 \0 \0 \0 031 \0 0 \0 % \0 0024140 026 001 & \0 ' \0 . \0 7 \0 037 \0 \b E 9 \0 0024160 : \0 035 \0 \0 \0 030 \0 034 \0 025 \0 \0 \0 033 \0 0024200 8 001 207 036 \0 036 " 003 030 036 027 \0 022 \0 \a M 0024220 023 \0 031 350 031 \0 0 \0 % \0 026 001 & \0 ' \0 0024240 . \0 7 \0 9 \0 : \0 035 \0 \0 \0 030 \0 034 \0 0024260 025 \0 \0 \0 033 \0 024 \0 001 a 037 \0 \b E 8 001 0024300 \0 \0 e @ 260 @ 352 A 031 \0 \a \0 \b \0 002 0024320 \t 001 \0 \t \0 \b \0 003 \t 001 005 001 342 \0 356 004 0024340 342 006 356 k 342 m 356 230 342 232 356 260 342 262 356 264 0024360 342 266 356 307 342 311 \0 352 342 354 \b 376 343 002 001 003 0024400 343 \a 001 2 377 231 \0 \0 002 ) \0 \0 330 231 346 335 0024420 376 001 \0 024 322 s e t h e m e m o 0024440 r y d a t a w e p r e v i 0024460 o u s l y f e t c h e d \r g o 0024500 t o o p c o d e ; \t - - T h 0024520 e o p c o d e v a l u e i 0024540 s t h e s t a r t i n g m 0024560 i c r o c o d e a d d r e s s 0024600 . \r P u s h C o n s t a n t : \t 0024620 - - D i s p a t c h a d d r 0024640 e s s f o r t h e P u s h 0024660 C o n s t a n t i n s t r u c 0024700 337 t i o n . \r F e t c h [ p c ] 0024720 ; \t - - p c p o i n t s t 0024740 o t h e n e x t i n s t r 0024760 u c 337 t i o n b y t e . \r p c 0025000 _ p c + 1 ; \t - - I n c r 0025020 e m e n t 376 001 \0 036 n p c r e 0025040 g i s t e r f o r n e x t 0025060 i n s t r u c 337 t i o n . \r P u 0025100 s h [ m e m o r y D a t a ] , 0025120 g o t o G e t I n s t r u 207 036 0025140 \0 036 " 003 030 036 027 \0 022 \0 \a M 023 \0 031 350 0025160 031 \0 0 \0 % \0 026 001 & \0 ' \0 . \0 7 \0 0025200 9 \0 : \0 035 \0 \0 \0 030 \0 034 \0 025 \0 \0 \0 0025220 033 \0 024 \0 001 a 037 \0 \b E 8 001 207 037 \0 037 0025240 W \f " 003 030 036 027 \0 022 \0 \a M 023 \0 031 350 0025260 024 \0 \0 \0 031 \0 0 \0 % \0 026 001 & \0 ' \0 0025300 . \0 7 \0 037 \0 \b E 9 \0 : \0 035 \0 \0 \0 0025320 030 \0 034 \0 025 \0 \0 \0 033 \0 8 001 \0 ) \0 m 0025340 > 262 \0 351 001 $ \0 \a \0 \b \0 002 \t 001 342 \0 0025360 \0 ) 342 - 356 270 342 272 356 300 342 302 356 351 342 353 0025400 356 356 342 360 357 001 343 003 001 6 343 : 001 D 377 031 0025420 \0 \0 002 \a \0 \0 341 242 352 346 376 001 \0 026 366 c 0025440 t i o n ; \r P u s h L o c a l V 0025460 a r : \t - - D i s p a t c h 0025500 a d d r e s s f o r t h e 0025520 P u s h L o c a l V a r i n s 0025540 t r u c 337 t i o n . \r F e t c h 0025560 [ p c ] ; \t - - F e t c h t 0025600 h e n e x t i n s t r u c 337 0025620 t i o n b y t e , w h i c h 0025640 i s t h e i n d e x i n 0025660 t h e l o c a l d a t a 0025700 f o r t h e v a r i a b l e 0025720 t o b e p u s h e d . \r p 0025740 c _ p c + 1 ; \r t e m p _ 0025760 m e m o r y D a t a ; \r t e m 0026000 p _ t e m p + l o c a l D a 0026020 t a ; \t - - N o w t e m p 376 0026040 001 \0 s f i s t h e a d d r 0026060 e s s o f t h e l o c a l 0026100 v a r i a b l e . \r F e t c h 0026120 [ t e m p ] ; \r P u s h [ m e m 0026140 o r y D a t a ] , g o t o G 0026160 207 036 \0 036 " 003 030 036 027 \0 022 \0 \a M 023 \0 0026200 031 350 031 \0 0 \0 % \0 026 001 & \0 ' \0 . \0 0026220 7 \0 9 \0 : \0 035 \0 \0 \0 030 \0 034 \0 025 \0 0026240 \0 \0 033 \0 024 \0 001 a 037 \0 \b E 8 001 207 037 0026260 \0 037 W \f " 003 030 036 027 \0 022 \0 \a M 023 \0 0026300 031 350 024 \0 \0 \0 031 \0 0 \0 % \0 026 001 & \0 0026320 ' \0 . \0 7 \0 037 \0 \b E 9 \0 : \0 035 \0 0026340 \0 \0 030 \0 034 \0 025 \0 \0 \0 033 \0 8 001 \0 \a 0026360 > L \0 300 \0 313 \0 336 001 ' 001 4 \0 \a \0 \b 0026400 \0 002 \t 001 342 \0 356 R 342 T 356 300 342 302 356 305 0026420 342 307 001 F 343 J 001 L 377 $ \0 \0 002 017 \0 \0 0026440 345 246 360 354 376 001 \0 274 263 e t I n s t r 0026460 u c t i o n ; \r I n o r d e r 0026500 t o m a k e t h i s e m 0026520 u l a t o r r u n f a s t e 0026540 r ( g i v e n a f i x e d 0026560 t i m e f o r e a c h p 0026600 r i m i t i v e o p e r a t i 0026620 o n , p r e s u m a b l y e 0026640 s t a b l i s h e d b y c i 0026660 r c u i t s p e e d s ) , i 0026700 t i s n e c e s s a r y t 0026720 o d o m o r e o f t h e 0026740 o p e r a t i o n s c o n c 0026760 u r r e n t l y . O n e p 0027000 o s s i b i l i t y i s t o 0027020 e n h a n c e t h e p r o 0027040 c e s s o r , s 376 001 \0 257 201 o 0027060 t h a t i t c a n d o s 0027100 e v e r a l o p e r a t i o n 0027120 s i n a s i n g l e m i 0027140 c r o 337 i n s t r u c t i o n . 0027160 F o r i n s t a n c e , 0027200 t h e f i r s t t w o m i 0027220 c r o 337 i n s t r u c t i o n s 0027240 m i g h t b e r e p l a c 0027260 e d b y \r \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0027300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0027320 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 207 036 \0 036 " 003 0027340 030 036 027 \0 022 \0 \a M 023 \0 031 350 031 \0 0 \0 0027360 % \0 026 001 & \0 ' \0 . \0 7 \0 9 \0 : \0 0027400 035 \0 \0 \0 030 \0 034 \0 025 \0 \0 \0 033 \0 024 \0 0027420 001 a 037 \0 \b E 8 001 \0 017 303 210 342 \0 302 017 0027440 001 210 377 4 \0 \0 002 { \0 \0 365 326 367 367 376 001 0027460 \0 324 376 F e t c h [ p c ] , p c 0027500 _ p c + 1 ; \t - - S t a r 0027520 t a m e m o r y f e t c h 0027540 f r o m a d d r e s s i n 0027560 p c ; d a t a a r r i v e 0027600 s l a t e r . I n c r e m 0027620 e n t p c f o r n e x t 0027640 i n s t r u c 337 t i o n . \r T h 0027660 i s a p p r o a c h i s f 0027700 i n e a s f a r a s i t 0027720 g o e s , b u t i t i s 0027740 l i m i t e d t o c o m b 0027760 i n i n g i n d e p e n d e n 0030000 t o p e r a t i o n s . A 0030020 F e t c h a n d t h e f 0030040 o l l o w i n g r e t r i e v 0030060 a l 376 001 \0 & 375 o f d a t a , 0030100 f o r e x a m p l e , c a 0030120 n n o t b e c o m b i n e d 0030140 w i t h o u t m a k i n g 0030160 t h e m i c r o 337 i n s t r u 0030200 c t i o n s l o w e r , s i 0030220 n c e t h e m e m o r y t 0030240 a k e s t i m e t o r e s 0030260 p o n d . \r A s e c o n d 0030300 a p p r o a c h 207 \0 " 003 030 036 0030320 027 \0 022 \0 \a M 023 \0 031 350 031 \0 0 \0 % \0 0030340 026 001 & \0 ' \0 . \0 7 \0 8 \0 9 \0 : \0 0030360 035 \0 \0 \0 030 \0 034 \0 025 \0 \0 \0 033 \0 024 \0 0030400 001 a 037 \0 \b E W \f W 372 \0 { 303 177 342 \0 0030420 356 006 342 \b 356 \v 342 \r 356 020 342 022 356 > 342 @ 0030440 356 a 342 c 302 { 312 336 302 343 001 220 377 210 \0 \0 0030460 \a 332 302 \0 351 310 353 353 376 001 \0 243 ] i s 0030500 t o m a k e s e v e r a l 0030520 c o p i e s o f t h e e 0030540 n t i r e p r o c e s s o r , 0030560 a n d l e t t h e m w o 0030600 r k o n s e v e r a l i n 0030620 s t r u c 337 t i o n s a t o 0030640 n c e . W i t h n c o p 0030660 i e s , t h i s w o u l d 0030700 r u n n t i m e s a s f 0030720 a s t i f t h e r e w e r 0030740 e n o s y n c h r o n i z a 0030760 t i o n p r o b l e m s ; i 0031000 t w o u l d a l s o b e 0031020 v e r y s i m p l e t o i 0031040 m p l e m e n t ( t h o u g h 0031060 p e r h a p s n o t 376 001 \0 0031100 z q c h e a p ) . U n f o r 0031120 t u n a t e l y , a p r o g 0031140 r a m w r i t t e n i n a 0031160 c o n v e n t i o n a l l a 0031200 n g u a g e a n d e n c o d 0031220 e d i n t o a c o n v e n 0031240 t i o n a l i n s t r u c 337 t 0031260 i o n s e t t y p i c a l l 0031300 y h a s a g r e a t d e 0031320 a l o f i n t e r a c t i o 0031340 n b e t w e e n t h e s u 0031360 c c e s s i v e i n s t r u c 0031400 337 t i o n s . F o r i n s 0031420 t a n c e , c o n s i d e 302 \0 0031440 300 Q 302 ] 306 n 302 o 306 207 302 210 301 e 303 q 0031460 301 267 303 303 001 334 377 177 \0 \0 005 332 302 \0 356 356 0031500 356 356 376 001 \0 _ 322 r t h e i n s 0031520 t r u c t i o n s e q u e n c 0031540 e P u s h C o n s t a n t , 0031560 P u s h L o c a l V a r , A d 0031600 d . W e s e e f r o m 0031620 t h e m i c r o c o d e a b 0031640 o v e t h a t a l l t h r 0031660 e e i n s t r u c t i o n s 0031700 n e e d t o r e f e r e n c 0031720 e t h e s t a c k ; t h i 0031740 s i s c o n t e n t i o n 0031760 f o r t h e s a m e r e s 0032000 o u r c e . F u r t h e r m 0032020 o r e , t h e A d d i n s 0032040 t r u c 337 t i o n n e e d s 0032060 t h e c o n t e n t s o f 0032100 t h e s t a 376 001 \0 331 \n c k a 0032120 f t e r b o t h t h e p r 0032140 e v i o u s i n s t r u c 337 t 0032160 i o n s a r e f i n i s h e 0032200 d ; t h i s i s n o t o 0032220 n l y c o n t e n t i o n , 0032240 b u t d e p e n d e n c y o 0032260 f o n e i n s t r u c 337 t i 0032300 o n o n t h e r e s u l t 0032320 s o f a n o t h e r . I 0032340 n s p i t e o f t h e s e 0032360 p r o b l e m s . t h i s 0032400 a p p r o a c h c a n b e 0032420 m a d e 302 \0 312 033 302 ' 312 ) 302 5 312 7 0032440 302 : 306 236 302 250 312 322 302 325 300 326 302 342 307 003 0032460 303 \b 301 033 303 ' 307 X 303 b 301 j 303 v 001 310 0032500 375 177 \0 \0 003 332 302 \0 344 344 344 344 376 001 \0 347 0032520 225 t o w o r k , e s p e c 0032540 i a l l y f o r n u m e r i 0032560 c c o m p u t a t i o n s , 0032600 a n d i n c o n j u n c t i 0032620 o n w i t h a s y m p a t 0032640 h e t i c c o m p i l e r . 0032660 I n d e e d , i t i s u 0032700 s e d i n h i g h - p e r f 0032720 o r m a n c e m a c h i n e s 0032740 s u c h a s t h e c d c 0032760 6 6 0 0 [ 1 4 ] a n d 7 0033000 6 0 0 , t h e i b m 3 6 0 0033020 / 9 1 [ 1 6 ] , t h e m u 0033040 5 [ 4 ] , a n d t h e C 0033060 r a y - 1 [ 1 0 ] ; t y p i 0033100 c a l l y o n l y p a r t 0033120 o 376 001 \0 373 \a f t h e p r o c 0033140 e s s o r i s d u p l i c a 0033160 t e d , o f t e n i n t o 0033200 s p e c i a l i z e d d e v i 0033220 c e s c a l l e d f u n c t 0033240 i o n a l u n i t s . H o 0033260 w e v e r , w i t h 1 9 7 7 0033300 t e c h n o l o g y t h i s 0033320 a p p r o a c h i s t o o 0033340 e x p e n s i v e f o r a 0033360 p e r s o n a l m a c h i n 0033400 e , a n d h e n c e w a s 0033420 n o t c o n s i d e r e d 0033440 f o r t h e D o r a d o . \r 0033460 A t h 303 332 302 \0 316 234 302 237 316 270 302 273 0033500 316 315 302 317 307 E 303 U 001 336 373 177 \0 \0 004 * 0033520 302 \0 357 357 360 360 376 001 \0 X 240 i r d p 0033540 o s s i b i l i t y ( o f t e 0033560 n c o m b i n e d w i t h 0033600 t h e s e c o n d ) i s t 0033620 o p i p e l i n e t h e e 0033640 x e c u t i o n o f a n i 0033660 n s t r u c t i o n b y d i 0033700 v i d i n g i t i n t o p 0033720 a r t s , e a c h o n e t 0033740 o b e p e r f o r m e d b 0033760 y a s e p a r a t e p r o 0034000 c e s s o r o r s t a g e . 0034020 D i f f e r e n t s t a g 0034040 e s c a n o p e r a t e c 0034060 o n c u r r e n t l y o n s 0034100 u c c e s s i v e i n s t r u 0034120 c 337 t i o n s . I 376 001 \0 # 270 0034140 n t h i s e x a m p l e , 0034160 w e m i g h t h a v e o n 0034200 e s t a g e f o r f e t c 0034220 h i n g t h e i n s t r u c 0034240 337 t i o n ( G e t I n s t r u 0034260 c t i o n ) , a n d a n o t 0034300 h e r f o r e x e c u t i n 0034320 g i t ( P u s h C o n s t a 0034340 n t a n d P u s h L o c a l 0034360 V a r ) . S u c c e s s i v 0034400 e i n s t r u c 337 t i o n s 0034420 c a n t h e n e x e c u t e 0034440 a s f o l l o w s ( w h e 0034460 302 \0 306 7 302 ? 306 257 302 264 300 357 302 373 301 9 0034500 303 E 313 G 303 U 313 v 303 202 313 207 303 223 301 242 0034520 303 256 001 320 377 332 \0 \0 002 * 302 \0 350 350 350 350 0034540 376 001 \0 277 356 r e e a c h l i n 0034560 e r e p r e s e n t s a " 0034600 m a j o r c y c l e " ) . \r G 0034620 e t I n s t r u c t i o n [ 1 ] 0034640 \r E x e c u t e [ 1 ] \t G e t I 0034660 n s t r u c t i o n [ 2 ] \r \t E 0034700 x e c u t e [ 2 ] \t G e t I n s 0034720 t r u c t i o n [ 3 ] \r \t \t E x 0034740 e c u t e [ 3 ] \t G e t I n s t 0034760 r u c t i o n [ 4 ] . 0035000 . . \r E a c h i n s t r u c 0035020 337 t i o n s p e n d s t h e 0035040 s a m e a m o u n t o f 0035060 t i m e e x e c u t i n g a 0035100 s b e f o r e , b u t t h 0035120 e t h r o u g h p u t i s 0035140 d o u b l 376 001 \0 O 253 e d . \r 2 . 0035160 1 A b o u t p i p e l i n e 0035200 s \r A n i d e a l p i p e l 0035220 i n e h a 201 # \0 # 022 \0 \a M 023 \0 0035240 004 366 024 \0 004 366 031 002 0 \0 027 006 % \0 026 001 0035260 & \0 ' \0 . \0 7 \0 037 \0 \b E 9 \0 : \0 0035300 035 \0 \0 \0 030 \0 025 \0 \0 \0 033 \0 8 001 " \a 0035320 016 233 030 A ! 346 027 \0 027 \0 027 \0 034 001 201 # 0035340 \0 # 022 \0 \a M 023 \0 004 366 024 \0 004 366 031 002 0035360 0 \0 027 \0 % \0 026 001 & \0 ' \0 . \0 7 \0 0035400 037 \0 \b E 9 \0 : \0 035 \0 \0 \0 030 \0 025 \0 0035420 \0 \0 033 \0 8 001 " \a 016 233 030 A ! 346 027 \0 0035440 027 \0 027 \0 034 001 200 202 \0 002 W 372 302 * \0 < 0035460 H Y H w H 237 221 004 315 030 302 \0 312 * 302 8 0035500 312 < 302 C 312 G 302 U 312 Z 302 a 312 e 302 s 0035520 312 y 302 200 312 204 302 222 300 244 302 260 001 , 375 332 0035540 \0 \0 002 331 302 \0 341 226 350 350 376 001 \0 362 257 s 0035560 n o c o m m u n i c a t i o 0035600 n b e t w e e n t h e s t 0035620 a g e s e x c e p t w h e n 0035640 w o r k i s p a s s e d 0035660 f r o m o n e s t a g e t 0035700 o i t s s u c c e s s o r . 0035720 T h e u n i t o f w o 0035740 r k w h i c h i s p a s s 0035760 e d b e t w e e n s t a g e 0036000 s i s c a l l e d a n i 0036020 t e m . T h e c r u c i a 0036040 l p r o b l e m s i n d e 0036060 s i g n i n g a p i p e l i 0036100 n e a r e : \r h a n d - o f f 0036120 o f i t e m s f r o m o 0036140 n e s t a g e t o t h e 376 0036160 001 \0 036 323 n e x t ; \r b u f f e 0036200 r i n g o f i t e m s w i 0036220 t h i n a s t a g e ; \r c o 0036240 n t e n t i o n a m o n g s 0036260 t a g e s f o r r e s o u r 0036300 c e s ( a f o r m o f c 0036320 o m m 337 u n i c a t i o n ) ; \r 0036340 d e p e n d e n c y o f o n 0036360 e s t a g e o n t h e a 0036400 c t i v i t y o f a n o t h 0036420 e r ( a l s o a f o r m 0036440 o f c o m m u n i c a t i o n 0036460 ) . P a r t i c u l a r l y 0036500 t r o 302 331 305 \a 305 * 305 l 302 \0 306 002 0036520 302 004 306 240 302 244 306 331 302 341 307 \a 303 020 307 * 0036540 303 4 307 l 303 v 001 320 377 030 \0 \0 002 } 304 \0 0036560 350 350 354 354 376 001 \0 ' 355 u b l e s o m 0036600 e i s b a c k w a r d d e 0036620 p e n d e n c y , i n w h i 0036640 c h a n e a r l y s t a g 0036660 e d e p e n d s o n t h e 0036700 r e s u l t s o f a l a 0036720 t e r o n e ( e . g . , a 0036740 c o n d i t i o n a l b r a 0036760 n c h ) ; \r i r r e g u l a r i 0037000 t y i n t h e f l o w o 0037020 f i t e m s t h r o u g h 0037040 t h e p i p e . T h i s 0037060 c a n a r i s e f r o m v 0037100 a r i a t i o n s i n t h e 0037120 r a t e o f : \r p r o c e s 0037140 s i n g i t e m s i n t h 0037160 e d i f f e r e 376 001 \0 \ 346 n t 0037200 s t a g e s ( e . g . , m 0037220 e m o r y f e t c h e s m a 0037240 y b e s l o w , o r v a 0037260 r i a b l e i n r a t e , 0037300 o r b o t h ) ; \r i n p u t 0037320 ( e . g . , f e t c h r e q 0037340 u e s t s t o a m e m o r 0037360 y p i p e ) ; \r o u t p u t 0037400 ( e . g . , d e c o d e d i 0037420 n s t r u c 337 t i o n s f r o 0037440 m a n i f u p i p e ) . \r 0037460 T h e m a i n p e r f o r m 0037500 a n c e p a r a m e t e r s 0037520 o f a 304 } 304 341 307 L 307 { 307 262 302 \0 0037540 306 \f 302 024 306 } 302 211 301 221 303 235 317 247 303 252 0037560 001 326 377 l \0 \0 002 017 302 \0 353 353 360 360 376 001 0037600 \0 033 235 p i p e l i n e a r e 0037620 : \r t h r o u g h p u t o r 0037640 b a n d w i d t h 235 t h e 0037660 r a t e a t w h i c h i t 0037700 e m s a r e p r o c e s s e 0037720 d t o c o m p l e t i o n 0037740 w h e n t h e r e a r e n 0037760 o d e p e n d e n c i e s ( 0040000 l e t t b e t h e t i m 0040020 e t o c o m p l e t e o n 0040040 e i t e m ) ; \r l a t e n c y 0040060 235 t h e t i m e f o r 0040100 o n e i t e m t o t r a v 0040120 e r s e t h e e n t i r e 0040140 p i p e l i n e w h e n i t 0040160 i s o t h e r w i s e e m 0040200 p t y 376 001 \0 207 306 ( l e t l 0040220 b e t h e l a t e n c y ) ; 0040240 \r e l a s t i c i t y 235 t h 0040260 e a b i l i t y o f t h e 0040300 p i p e t o d e l i v e r 0040320 r e s u l t s a t f u l l 0040340 b a n d w i d t h i n s p 0040360 i t e o f i r r e g u l a r 0040400 i t y . M o r e b u f f e 0040420 r i n g m e a n s m o r e 0040440 e l a s t i c i t y , m o r e 0040460 b i t s o f s t o r a g e 0040500 i n t h e p i p e , a n 0040520 d p e r h 302 017 304 246 305 031 302 \0 306 017 0040540 302 031 306 035 302 & 306 201 302 202 300 237 302 243 306 246 0040560 302 255 307 006 303 \a 307 031 303 # 001 316 377 262 \0 \0 0040600 002 022 304 \0 347 347 352 352 376 001 \0 207 030 a p s 0040620 m o r e l a t e n c y . \r A 0040640 s y n c h r o n o u s , u n 0040660 i f o r m p i p e l i n e i 0040700 s o n e i n w h i c h e 0040720 a c h s t a g e t a k e s 0040740 t h e s a m e a m o u n t 0040760 o f t i m e . W i t h n 0041000 s t a g e s w e h a v e 0041020 l = n t , w h e r e t i s 0041040 t h e t i m e o f e a c 0041060 h s t a g e . W i t h m 0041100 a n y s m a l l s t a g e s 0041120 , t c a n b e m a d e 0041140 s m a l l a n d t h e t h 0041160 r o u g h p u t h i g h , a 0041200 t t h e e x p e n s e 376 001 \0 0041220 002 275 o f t h e l a t e n c 0041240 y . T h e o n l y a b s 0041260 o l u t e l i m i t t o t 0041300 h i s p r o c e s s i s t 0041320 h e c o s t o f s y n c h 0041340 r o n i z a t i o n b e t w e 0041360 e n s t a g e s ( w h i c h 0041400 i s a l o w e r b o u n 0041420 d o n t ; i n a s y n 0041440 c h r o n o u s p i p e l i n 0041460 e t h i s i s t h e t i 0041500 m e t o p a s s t h r o u 0041520 g h a r e g i s 200 202 \0 002 W 372 0041540 304 022 302 \0 306 024 302 037 306 ! 302 ( 306 r 302 s 0041560 306 203 302 204 306 205 302 207 306 217 302 220 306 305 302 306 0041600 307 203 303 204 001 310 377 031 \0 \0 002 \b \0 \0 347 344 0041620 350 350 376 001 \0 / P t e r ) . \r T 0041640 h e m i n i m u m t i m e 0041660 t o d o t h e s m a l l e 0041700 s t i n d i v i s i b l e p 0041720 i e c e o f w o r k ( e . 0041740 g . , t o r e a d f r o m 0041760 a n i n t e r n a l r a m 0042000 ) t e n d s t o b e a 0042020 p r a c t i c a l l i m i t 0042040 a l s o . T h i s l i m i 0042060 t c a n b e e v a d e d , 0042100 h o w e v e r ( a t s o m 0042120 e c o s t ) , b y m a k i 0042140 n g n c o p i e s o f t 0042160 h e h a r d w a r e , a s s 0042200 i g n i n g t h e w o r k 0042220 t o t h e m 376 001 \0 J 222 i n 0042240 r o u n d - r o b i n f a s h 0042260 i o n , a n d s e l e c t i 0042300 n g t h e r e s u l t s b 0042320 y t h e s a m e r o u n d 0042340 - r o b i n r u l e . I f 0042360 a s i n g l e s t a g e 0042400 h a s t = s , s u c h a 0042420 d u p l i c a t e d s t a g e 0042440 h a s t = s / n p l u s 0042460 t h e t i m e f o r m u l 0042500 t i p l e x i n g t h e r e 0042520 s u l t s . W h e n t h i 0042540 s m e 200 202 \0 002 W 372 \0 \b 302 \0 316 f 0042560 302 i 312 314 302 315 313 h 303 i 313 j 303 k 307 t 0042600 303 ~ 313 211 303 212 313 213 303 214 313 215 303 216 001 310 0042620 376 022 \0 \0 002 > 302 \0 347 344 350 350 376 001 \0 U 0042640 334 t h o d i s u s e d , t 0042660 h e c o p i e s a r e u s 0042700 u a l l y c a l l e d f u n 0042720 c t i o n a l u n i t s . \r U 0042740 s u a l l y t h e m a i n 0042760 g o a l i s t o m a x i m 0043000 i z e t h e t h r o u g h p 0043020 u t ; i n t h e a b s e n 0043040 c e o f d e p e n d e n c i 0043060 e s l a t e n c y i s u n 0043100 i m p o r t a n t . A s d 0043120 e p e n d e n c i e s i n 337 c 0043140 r e a s e , h o w e v e r , 0043160 l a t e n c y b e c o m e s 0043200 m o r e i m p o r t a n t . 0043220 T o s e e w h y t h i 0043240 s 376 001 \0 $ 226 i s t r u e , 0043260 c o n 337 s i 337 d e r t h e b 0043300 a c k w a r d d e p e n d e n 0043320 c y c a u s e d b y a c 0043340 o n d i t i o n a l b r a n c 0043360 h . S t r i c t l y s p e 0043400 a k i n g , w h e n a b r 0043420 a n c h i n s t r u c 337 t i o 0043440 n i s e n c o u n t e r e d 0043460 , f e t c h i n g c a n n o 0043500 t p r o c e e d u n t i l 0043520 t h e r e s u l t o f t h 0043540 e b r a n c h i s k n o w 0043560 n . W h e n i t i s , 0043600 t h e t a r g e t \0 302 > 302 \0 0043620 306 , 302 < 301 o 303 { 001 345 376 \b \0 \0 005 x 0043640 302 \0 363 363 364 364 376 001 \0 240 272 i n s t r 0043660 u c 337 t i o n o f t h e b 0043700 r a n c h m u s t t r a v e 0043720 r s e t h e p i p e b e f 0043740 o r e a n y m o r e i n s 0043760 t r u c 337 t i o n s c a n b 0044000 e c o m p l e t e d . I f 0044020 w i s t h e f r a c t i 0044040 o n o f b r a n c h i n s 0044060 t r u c 337 t i o n s , t h e 0044100 a v e r a g e c o m p l e t i 0044120 o n t i m e w i l l b e 0044140 t + w l . T h u s i f l 0044160 = 5 t ( a f i v e s t a g 0044200 e u n i f o r m p i p e ) , 0044220 a w o f 2 0 % w i l l 0044240 h a l v e t h e 376 001 \0 $ 355 0044260 t h r o u g h p u t . I n 0044300 t h i s e x a m p l e , o f 0044320 c o u r s e , i t i s s 0044340 e n s i b l e t o m a k e 0044360 a g u e s s a n d f o l l 0044400 o w o n e p a t h , s o 0044420 t h a t w i s t h e f r 0044440 a c t i o n o f i n s t r u 0044460 c 337 t i o n s f o r w h i c 0044500 h a w r o n g g u e s s 0044520 i s m a d e ; n o t e t h 0044540 a t w = 2 0 % i s f a i r 0044560 l y 300 \0 302 \f 300 B 302 N 306 f 302 g 300 202 0044600 302 216 306 265 302 266 306 267 302 271 306 304 302 305 306 307 0044620 302 310 306 350 302 351 307 e 303 f 301 z 303 206 307 263 0044640 303 264 001 302 376 > \0 \0 003 x 302 \0 341 341 341 341 0044660 376 001 \0 / 335 a c c u r a t e p 0044700 r e d i c t i o n . F o l l o 0044720 w i n g a g u e s s e d p 0044740 a t h i s e a s y b e c a 0044760 u s e t h e r e a r e n o 0045000 f o r w a r d d e p e n d e 0045020 n c i e s ( p r o g r a m s 0045040 t a t e i s n e v e r c h 0045060 a n g e d b y i n s t r u c 0045100 t i o n f e t c h i n g ) , 0045120 s o t h a t a w r o n g 0045140 p a t h c a n b e a b a n 0045160 d o n e d w i t h n o i l 0045200 l e f f e c t s . H o w e 0045220 v e r , n o s u c h s h o 0045240 r t c u t i s p o s s i b l 0045260 e i n 376 001 \0 333 242 t h e c a 0045300 s e o f t h e A d d i n 0045320 s t r u c 337 t i o n m e n t i 0045340 o n e d e a r l i e r , b e 0045360 c a u s e i t i s n ' t p 0045400 r a c t i c a l t o g u e s 0045420 s t h e r e s u l t o f 0045440 t h e P u s h L o c a l V a r 0045460 . \r 2 . 2 P i p e l i n i n g 0045500 i n s t r u c 337 t i o n e x 0045520 e c u t i o n \r L e t u s n 0045540 o w s e e h o w t o a p 0045560 p l y t h e s e i d e a s 0045600 t o i n s t r u c 337 t i o n 0045620 e x e c u t 303 x 315 236 302 \0 313 020 303 023 0045640 301 024 303 313 j 303 v 301 311 303 325 001 334 374 > 0045660 \0 \0 002 ` 302 \0 356 356 360 360 376 001 \0 201 8 i 0045700 o n . F o l l o w i n g m 0045720 a n y e a r l i e r d e s i 0045740 g n s ( e . g . , [ 4 , 1 0045760 6 ] ) , w e c a n d i v i 0046000 d e t h i s t a s k i n t 0046020 o f o u r s t a g e s : \r i 0046040 n s t r u c 337 t i o n f e t c 0046060 h i n g a n d p r e p a r a 0046100 t i o n ; \r o p e r a n d p r 0046120 e p a r a t i o n : a d d r e 0046140 s s c a l c u l a t i o n , 0046160 f e t c h i n g a n d r e f 0046200 o r m a t t i n g ; \r c o m p u 0046220 t a t i o n ; \r r e s u l t s 0046240 t o r a g e . \r E a c h o f 0046260 t h e s e i n t u r n m 376 0046300 001 \0 225 237 a y b e d i v i d e 0046320 d i n t o s u b - s t a g e 0046340 s . W e o b s e r v e t 0046360 h a t i n a n y c o n v e 0046400 n t i o n a l a r c h i t e c 0046420 t u r e t h e r e a r e m 0046440 a n y d e p e n d e n c i e s 0046460 a m o n g t h e l a s t 0046500 t h r e e s t a g e s , b e 0046520 c a u s e r e s u l t s a r 0046540 e c o n s t a n t l y b e i 0046560 n g s t o r e d i n t o m 0046600 e m o r y o r r e g i s t e 0046620 r l o c a t i o n s f r o m 0046640 w h i c h 302 ` 304 207 304 314 304 331 304 351 0046660 302 \0 300 ` 302 l 001 342 377 236 \0 \0 005 o 302 \0 0046700 361 361 366 366 376 001 \0 276 j o p e r a n 0046720 d s a r e f e t c h e d . 0046740 F u r t h e r m o r e , i f 0046760 e v e r y s t o r e o p e 0047000 r a t i o n i s r e g a r d 0047020 e d a s a d e p e n d e n 0047040 c y , t h e r e c o u l d 0047060 n e v e r b e m u c h c o 0047100 n c u r r e n c y . H e n c 0047120 e i t i s n e c e s s a r 0047140 y t o c o m p a r e t h e 0047160 a d d r e s s o f e a c h 0047200 l o c a t i o n m o d i f i 0047220 e d b y a s t o r e w i 0047240 t h a l l t h e a d d r e 0047260 s s e s r e f e r e n c e d 0047300 b y e a r l i e 376 001 \0 031 B r 0047320 s t a g e s . E v e n t h 0047340 e s e d e p e n d e n c i e s 0047360 a r e c o m m o n e n o u 0047400 g h t o b e p a i n f u l 0047420 ; h e n c e p r o v i s i o 0047440 n i s u s u a l l y m a d 0047460 e i n s u c h a p i p e 0047500 l i n e f o r m o d i f y i 0047520 n g t h e a c t i o n s o 0047540 f e a r l i e r s t a g e s 0047560 w h e n o p e r a n d s a 0047600 r e c h a n g e d b y s t 0047620 o r e s . A s a r e s u 0047640 l t o f a l l t h i s , 0047660 p i p e l i n i n g 302 \0 306 ( 302 - 0047700 001 354 376 351 \0 \0 003 o 302 \0 366 366 366 366 376 001 0047720 \0 e > t h e l a s t t h r 0047740 e e s t a g e s o f i n s 0047760 t r u c 337 t i o n i s a c 0050000 o m p l e x a n d e x p e n 0050020 s i v e b u s i n e s s . 0050040 A f a s t m u l t i - p o r 0050060 t c a c h e i n s i d e t 0050100 h e p r o c e s s o r m a k 0050120 e s t h e p r o b l e m m 0050140 u c h e a s i e r , b u t 0050160 i s n o t f e a s i b l e 0050200 w i t h t h i s t e c h n o 0050220 l o g y . A n i n t e r e 0050240 s t i n g b u t u n t r i e 0050260 d i d e a i s t o i m p 0050300 o s e p r o g r a m m i n g 0050320 r e s 376 001 \0 S 201 t r i c t i o n 0050340 s w h i c h f o r b i d h 0050360 a r m f u l d e p e n d e n c 0050400 i e s ; i f a l l t h e 0050420 c o d e i s g e n e r a t e 0050440 d b y c o m p i l e r s t 0050460 h i s i s q u i t e f e a 0050500 s i b l e . \r H a r d l y a n 0050520 y o f t h e s e p r o b l 0050540 e m s a r i s e , h o w e v 0050560 e r , i n s e p a r a t i n 0050600 g i n s t r u c 337 t i o n f 0050620 e t c h i n g f r o m t h e 0050640 r e s t . I f w e a s 0050660 s u m e t h a t e x e c 303 o 0050700 302 \0 300 032 302 & 301 252 303 266 001 346 374 351 \0 \0 0050720 003 336 302 \0 363 363 364 364 376 001 \0 k 213 u t i 0050740 o n c a n n o t m o d i f y 0050760 t h e c o d e b e i n g 0051000 e x e c u t e d , t h e r e 0051020 a r e n o d e p e n d e n c 0051040 i e s e x c e p t t h o s e 0051060 a r i s i n g f r o m b r 0051100 a n c h e s . I f t h i s 0051120 a s s u m p t i o n i s u 0051140 n a c c e p t a b l e , t h e 0051160 n c h e c k s m u s t b e 0051200 m a d e f o r s u c h m 0051220 o d i f i c a t i o n s , b u 0051240 t s i n c e t h e y a r e 0051260 r a r e i n p r a c t i c 0051300 e , t h e c h e c k s c a 0051320 n b e a t a v e r 376 001 \0 0051340 ! _ y c o a r s e g r a i n 0051360 , a n d f a i r l y d r a 0051400 s t i c r e s e t t i n g a 0051420 c t i o n s c a n b e t a 0051440 k e n . T h e a b s e n c 0051460 e o f f o r w a r d d e p 0051500 e n d e n c i e s m e a n s 0051520 t h a t i n s t r u c 337 t i o 0051540 n f e t c h i n g a c t i v 0051560 i t i e s c a n b e a b a 0051600 n d o n e d w i t h o u t a 0051620 n y c o m m u n i c a t i o n 0051640 t o o t h e r p a r t s 0051660 o f t h e m a c h i n e . \r 0051700 T h e f u n c 303 336 302 \0 306 7 302 9 0051720 301 s 303 177 001 346 377 o \0 \0 004 o 302 \0 363 363 0051740 364 364 376 001 \0 364 316 t i o n o f a 0051760 n i n s t r u c 337 t i o n f 0052000 e t c h i n g a n d p r e p 0052020 a r a t i o n s t a g e o r 0052040 i f u , t h e n , i s t 0052060 o h a n d o f f t o t h 0052100 e r e s t o f t h e m a 0052120 c h i n e t h e r e l e v a 0052140 n t i n f o r 337 m a 337 t i o n 0052160 f o r e a c h i n s t r u 0052200 c 337 t i o n , c o n v e n i e 0052220 n t l y f o r m a t t e d f 0052240 o r l a t e r u s e . W 0052260 h e t h e r t h e r e s t 0052300 o f t h e m a c h i n e i 0052320 s a s i n g l e m i c r o 0052340 c o d e d p 376 001 \0 302 342 r o c e 0052360 s s o r , a n o p e r a n d 0052400 p r e p a r a t i o n s t a 0052420 g e i n a p i p e l i n e 0052440 , o r a c o l l e c t i o 0052460 n o f f u n c t i o n a l 0052500 u n i t s w h i c h c a n 0052520 o p e r a t e c o n c u r r e 0052540 n t l y i s u n i m p o r t 0052560 a n t t o t h e i f u , 0052600 e x c e p t a s i t a f f 0052620 e c t s t h e m e a n i n g 0052640 o f " c o n v e n i e n t l 0052660 y f o r m a t t e d . " W 0052700 e w i l l c a l l 302 \0 300 \v 0052720 302 027 316 : 302 = 300 223 302 237 317 217 303 222 001 340 0052740 377 336 \0 \0 002 o 302 \0 360 360 360 360 376 001 \0 242 0052760 245 t h i s p a r t o f t h 0053000 e m a c h i n e t h e e x 0053020 e c u t i o n u n i t o r 0053040 e u , a n d w i l l n o t 0053060 b e m u c h c o n c e r n 0053100 e d w i t h i t s i n t e 0053120 r n a l s t r u c t u r e . \r 0053140 T h e e u d e m a n d s i 0053160 n s t r u c 337 t i o n s f r o 0053200 m t h e i f u a t a n 0053220 i r r e g u l a r r a t e , 0053240 d e p e n d i n g o n h o w 0053260 f a s t i t i s a b l e 0053300 t o a b s o r b t h e p 0053320 r e v i o u s o n e s . A 0053340 s i m p l e m a c h i n e 0053360 m 376 001 \0 E + u s t c o m p l e 0053400 t e l y p r o c e s s a n 0053420 i n s t r u c 337 t i o n b e f 0053440 o r e d e m a n d i n g t h 0053460 e n e x t o n e . I n 0053500 a m a c h i n e w i t h m 0053520 u l t i p l e f u n c t i o n 0053540 a l u n i t s , o n t h e 0053560 o t h e r h a n d , t h e 0053600 f i r s t s t a g e i n 0053620 t h e e u w a i t s u n t 0053640 i l t h e b a s i c r e s 0053660 o u r c e s r e q u i r e d 0053700 b y t 302 o 302 \0 306 035 302 + 316 / 302 1 0053720 316 s 302 u 300 ~ 302 212 316 225 302 230 300 347 302 353 0053740 301 032 303 & 317 236 303 240 001 316 375 336 \0 \0 003 243 0053760 302 \0 347 347 350 350 376 001 \0 252 K h e i n 0054000 s t r u c 337 t i o n ( a d d 0054020 e r s , r e s u l t r e g i 0054040 s t e r s , e t c . ) a r e 0054060 a v a i l a b l e , a n d 0054100 t h e n h a n d s i t o f 0054120 f t o a f u n c t i o n a 0054140 l u n i t f o r e x e c u 0054160 t i o n . B e y o n d t h 0054200 i s p o i n t t h e o p e 0054220 r a t i o n c a n n o t b e 0054240 d e s c r i b e d b y a 0054260 s i n g l e p i p e l i n e , 0054300 a n d c o m p l e t e e x 0054320 e c u t i o n o f t h e i 0054340 n s t r u c 337 t i o n m a y 0054360 b e l o n g d e l 376 001 \0 { 351 0054400 a y e d , b u t e v e n i 0054420 n t h i s c o m p l i c a t 0054440 e d s i t u a t i o n t h e 0054460 i f u s t i l l s e e s 0054500 t h e e u a s a s i n g 0054520 l e c o n s u m e r o f i 0054540 n s t r u c 337 t i o n s , a n 0054560 d i s u n a w a r e o f 0054600 t h e c o n c u r r e n c y 0054620 w h i c h l i e s b e y o n 0054640 d . \r U n d e r t h i s u m 0054660 b r e l l a d e f i n i t i o 0054700 n f o r a n i f u , a 0054720 l o t 303 243 302 \0 300 003 302 017 300 344 302 360 0054740 317 1 303 4 317 D 301 F 303 I 301 _ 303 k 317 311 0054760 303 314 001 324 376 o \0 \0 006 H 302 \0 352 352 353 353 0055000 376 001 \0 S 200 c a n b e s h e l 0055020 t e r e d . T o i l l u s 0055040 t r a t e t h e w a y a n 0055060 i f u c a n a c c o m m o 0055100 d a t e s p e c i f i c l a 0055120 n g u a g e f e a t u r e s , 0055140 w e d r a w a n e x a m 0055160 p l e f r o m S m a l l t a 0055200 l k [ 5 ] . I n t h i s 0055220 l a n g u a g e , t h e b 0055240 a s i c e x e c u t a b l e 0055260 o p e r a t i o n i s a p p 0055300 l y i n g a f u n c t i o n 0055320 f ( c a l l e d a m e t 0055340 h o d ) t o a n o b j e c 0055360 t o : f ( o , . . . ) 0055400 . T h 376 001 \0 C j e a d d r 0055420 e s s o f t h e c o d e 0055440 f o r t h e f u n c t i o n 0055460 i s n o t d e t e r m i n 0055500 e d s o l e l y b y t h e 0055520 s t a t i c p r o g r a m , 0055540 b u t d e p e n d s o n 0055560 a p r o p e r t y o f t h 0055600 e o b j e c t c a l l e d 0055620 i t s c l a s s . T h e r 0055640 e a r e m a n y i m p l e 0055660 m e n t a t i o n t e c h n i 0055700 q u e s f o r f i n d i n g 0055720 t h e c l a s s a n d 302 \0 0055740 316 , 302 / 306 314 302 315 306 330 302 336 306 355 302 356 0055760 306 360 302 361 306 362 302 363 307 212 303 217 001 324 377 243 0056000 \0 \0 004 H 302 \0 352 352 352 352 376 001 \0 \n 352 0056020 t h e n t h e f u n c t i o 0056040 n f r o m t h e o b j e c 0056060 t . O n e p o s s i b i l 0056100 i t y i s t o r e p r e s 0056120 e n t a c l a s s a s a 0056140 h a s h t a b l e w h i c 0056160 h m a p s f u n c t i o n 0056200 n a m e s ( p r e v i o u s l 0056220 y c o n v e r t e d b y a 0056240 c o m p i l e r i n t o n 0056260 u m b e r s ) i n t o c o d 0056300 e a d d r e s s e s , a n d 0056320 t o s t o r e t h e a d 0056340 d r e s s o f t h i s t a 0056360 b l e i n t h e f i r s t 0056400 w o r d o f t h e o b 376 0056420 001 \0 | 240 j e c t . T h e r 0056440 a t h e r c o m p l e x o p 0056460 e r a t i o n o f o b t a i 0056500 n i n g t h e h a s h t a 0056520 b l e a d d r e s s a n d 0056540 s e a r c h i n g t h e t a 0056560 b l e f o r t h e c o d e 0056600 a d d r e s s a s s o c i a 0056620 t e d w i t h f , i s i 0056640 n t h e p r o p e r d o m 0056660 a i n o f a n i f u , a 0056700 n d r e m o v e s a s i g 0056720 n i f i c a n t a m o u n t 0056740 o f c o m p u t a t i o n f 0056760 r o m t h e p r o c 302 \0 307 205 0057000 303 206 317 246 303 251 001 350 375 243 \0 \0 002 H 302 \0 0057020 364 364 364 364 376 001 \0 4 344 e s s o r . 0057040 N o s u c h s p e c i a l 0057060 i z a t i o n i s p r e s e 0057100 n t i n t h e D o r a d o 0057120 ' s i f u , h o w e v e r . 0057140 \r 2 . 3 P i p e l i n i n g 0057160 i n s t r u c 337 t i o n f e t 0057200 c h e s \r F o r t h e s a k 0057220 e o f d e f i n i t e n e s 0057240 s , w e w i l l a s s u m 0057260 e h e n c e f o r t h t h a 0057300 t \r t h e s m a l l e s t 0057320 a d d r e s s a b l e u n i t 0057340 i n t h e c o d e i s 0057360 a b y t e ; \r t h e m e m o 0057400 r y d e l i v e r s d a t a 0057420 i n u n i t s 376 001 \0 204 t c 0057440 a l l e d w o r d s , w h i 0057460 c h a r e l a r g e r t h 0057500 a n b y t e s ; \r a n i n s 0057520 t r u c 337 t i o n ( a n d i 0057540 t s a d d r e s s e s , i m 0057560 m e d i a t e o p e r a n d s 0057600 , a n d o t h e r f i e l 0057620 d s ) m a y o c c u p y o 0057640 n e o r m o r e b y t e s 0057660 , a n d t h e f i r s t 0057700 b y t e d e t e r m i n e s 0057720 i t s e s s e n t i a l p r 0057740 o p e r t i e s ( l e n g t h 0057760 , 200 202 \0 002 W 372 302 H 314 l \0 252 304 337 0060000 305 , 302 \0 316 : 302 = 307 \b 303 \r 301 / 303 ; 0060020 001 324 373 243 \0 \0 002 031 304 \0 355 352 362 362 376 001 0060040 \0 374 K n u m b e r o f f i e 0060060 l d s , e t c . ) . \r M a t t 0060100 e r s a r e s o m e w h a t 0060120 s i m p l i f i e d i f t 0060140 h e a d d r e s s s a b l e 0060160 u n i t i s t h e u n i t 0060200 d e l i v e r e d b y t h 0060220 e m e m o r y o r i f i 0060240 n s t r u c 337 t i o n s a r e 0060260 a l l t h e s a m e l e 0060300 n g t h , a n d s o m e w h 0060320 a t c o m p l i c a t e d i 0060340 f i n s t r u c 337 t i o n s 0060360 m a y b e a n y n u m b e 0060400 r o f b i t s l o n g . 0060420 H o w e v e r , t h e s e 0060440 v a r 376 001 \0 9 z i a t i o n s 0060460 a r e i n e s s e n t i a l 0060500 a n d d i s t r a c t i n g . 0060520 \r T h e o p e r a t i o n o 0060540 f i n s t r u c 337 t i o n f 0060560 e t c h i n g d i v i d e s 0060600 n a t u r a l l y i n t o f 0060620 o u r s t a g e s : \r G e n e 0060640 r a t i n g a d d r e s s e s 0060660 o f i n s t r u c t i o n 0060700 w o r d s i n t h e c o d 0060720 e , t y p i c a l l y b y 0060740 s e q u e n t i a l l y a d v 0060760 a n c i n g a p r o 200 202 \0 002 0061000 W 372 304 031 001 ) 303 t 302 \0 300 | 302 210 300 277 0061020 302 313 301 : 303 F 307 t 303 210 001 324 377 , \0 \0 0061040 002 ) 304 \0 355 352 360 360 376 001 \0 > 365 g r a 0061060 m c o u n t e r , o n e m 0061100 e m o r y w o r d a t a 0061120 t i m e . \r F e t c h i n g d 0061140 a t a f r o m t h e c o d 0061160 e a t t h e s e a d d r e 0061200 s s e s . T h i s r e q u 0061220 i r e s i n t e r a c t i o n 0061240 s w i t h t h e m a c h i 0061260 n e ' s m e m o r y i n g 0061300 e n e r a l , a l t h o u g h 0061320 r e c e n t l y u s e d c 0061340 o d e m a y b e c a c h e 0061360 d w i t h i n t h e i f u 0061400 . S u c h a c a c h e 0061420 l o o k s m u c h l i k e 0061440 m a i n m e m o r y t 376 001 \0 0061460 032 \ o t h e r e s t o f 0061500 t h e i f u . \r D e c o d i n 0061520 g i n s t r u c 337 t i o n s 0061540 t o d e t e r m i n e t h e 0061560 i r l e n g t h a n d i n 0061600 t e r n a l s t r u c t u r e 0061620 , a n d p e r h a p s w h 0061640 e t h e r t h e y a r e b 0061660 r a n c h e s w h i c h t h 0061700 e i f u s h o u l d e x e 0061720 c u t e . D e c o d i n g 0061740 c h a n g e s t h e r e p r 0061760 e s e n t a t i o n o f t h 0062000 e i n s t r u 304 ) 305 027 302 \0 306 ) 0062020 302 6 316 320 300 323 302 324 317 022 303 025 307 027 303 - 0062040 317 220 303 223 001 326 377 t \0 \0 002 q 304 \0 353 353 0062060 355 355 376 001 \0 225 223 c t i o n , f r 0062100 o m o n e w h i c h i s 0062120 c o m p a c t a n d c o n v 0062140 e n i e n t f o r t h e c 0062160 o m p i l e r , t o o n e 0062200 w h i c h i s c o n v e n i 0062220 e n t f o r t h e e u a 0062240 n d i f u . \r F o r m a t t i 0062260 n g t h e f i e l d s o f 0062300 e a c h i n s t r u c 337 t i 0062320 o n ( a d d r e s s e s , i 0062340 m m e d i a t e o p e r a n d 0062360 s , r e g i s t e r n u m b 0062400 e r s , m o d e c o n t r o 0062420 l f i e l d s , o r w h a 0062440 t e v e r ) f o r t h e c 0062460 o n v e n i e 376 001 \0 276 323 n c e 0062500 o f t h e e u ; e . g . , 0062520 e x t r a c t i n g f i e l 0062540 d s o n t o t h e e u ' s 0062560 d a t a b u s s e s . \r B u 0062600 f f e r i n g m a y b e i 0062620 n t r o d u c e d b e t w e e 0062640 n a n y p a i r o f t h 0062660 e s e s t a g e s , e i t h 0062700 e r t h e m i n i m u m o 0062720 f o n e i t e m r e q u i 0062740 r e d t o s e p a r a t e 0062760 t h e s t a g e s , o r a 0063000 l a r g e 200 202 \0 002 W 372 304 q 305 B 0063020 302 \0 316 e 302 g 316 l 302 o 306 q 302 { 306 200 0063040 302 206 300 217 302 357 317 \v 303 \r 317 0 303 2 001 312 0063060 377 027 \0 \0 002 353 \0 \0 350 345 352 352 376 001 \0 y 0063100 002 r a m o u n t t o i n c 0063120 r e a s e t h e e l a s t i 0063140 c i t y . N o t e t h a t 0063160 a n i t e m m u s t b e 0063200 a w o r d e a r l y i n 0063220 t h e p i p e ( a t t h 0063240 e i n t e r f a c e t o t 0063260 h e m e m o r y ) , m u s t 0063300 b e a n i n s t r u c 337 t 0063320 i o n l a t e i n t h e 0063340 p i p e ( a t t h e i n t 0063360 e r f a c e t o t h e e u 0063400 ) , a n d m a y n e e d 0063420 t o b e a b y t e i n 0063440 t h e m i d d l e . \r T h e r 0063460 e a r e t h r e e s o u r 0063500 c 376 001 \0 * 245 e s o f i r r e 0063520 g u l a r i t y ( s e e 266 0063540 2 . 1 ) i n t h e p i p e 0063560 l i n e , e v e n w h e n 0063600 n o w r o n g b r a n c h e 0063620 s a r e t a k e n : \r T 0063640 h e i n s t r u c 337 t i o n 0063660 l e n g t h i s i r r e g u 0063700 l a r , a s n o t e d i n 0063720 t h e p r e v i o u s p a 0063740 r a g r a p h ; h e n c e a 0063760 u n i f o r m f l o w o f 0064000 i n s t r u c 337 t i o n s t 0064020 o t h 200 202 \0 002 W 372 \0 353 001 Y 302 \0 0064040 306 B 302 F 306 206 302 222 316 275 302 277 306 327 302 333 0064060 301 ] 303 i 301 273 303 307 001 316 377 B \0 \0 002 J 0064100 304 \0 352 347 354 354 376 001 \0 356 335 e e u 0064120 i m p l i e s a n i r r e g 0064140 u l a r f l o w o f b y t 0064160 e s i n t o t h e d e c o 0064200 d e r , a n d v i c e v e 0064220 r s a . \r T h e m e m o r y 0064240 t a k e s a n i r r e g u l 0064260 a r a m o u n t o f t i m 0064300 e t o f e t c h d a t a ; 0064320 i f i t c o n t a i n s 0064340 a c a c h e , t h e a m o 0064360 u n t o f t i m e m a y 0064400 v a r y b y m o r e t h a 0064420 n a n o r d e r o f m a 0064440 g n i t u d e . \r T h e e 0064460 u d e m a n d s i n s t r u 0064500 c 337 t i o n s a t 376 001 \0 035 020 0064520 a n i r r e g u l a r r a t 0064540 e . \r T h e s e c o n s i d 0064560 e r a t i o n s i m p l y t 0064600 h a t c o n s i d e r a b l e 0064620 e l a s t i c i t y i s n 0064640 e e d e d i n o r d e r t 0064660 o m e e t t h e e u ' s 0064700 d e m a n d s w i t h o u t 0064720 i n t r o d u c i n g d e l a 0064740 y s . \r 2 . 4 H a n d - o f 0064760 f t o t h e e u \r F r o m 0065000 t h e i f u ' s v i e w p 0065020 o i n t , h a 200 202 \0 002 W 372 304 J 0065040 304 340 305 024 001 225 315 254 302 \0 316 002 302 004 316 344 0065060 302 346 300 357 302 373 317 k 303 m 317 251 303 253 317 265 0065100 303 270 001 310 377 Y \0 \0 004 7 302 \0 347 344 354 354 0065120 376 001 \0 304 257 n d i n g - o f f a 0065140 n i n s t r u c 337 t i o n t 0065160 o t h e e u i s a s i 0065200 m p l e p r o d u c e r - c o 0065220 n s u m e r r e l a t i o n s 0065240 h i p . T h e e u d e m 0065260 a n d s a n e w i n s t r 0065300 u c 337 t i o n . I f o n e 0065320 i s r e a d y , t h e i 0065340 f u d e l i v e r s i t a 0065360 s a p i l e o f s u i t 0065400 a b l y f o r m a t t e d b 0065420 i t s , a n d f o r g e t s 0065440 a b o u t t h e i n s t r 0065460 u c t i o n . O t h e r w i 0065500 s e t h e i f u n o t i 337 0065520 f i e s 376 001 \0 020 314 t h e e u 0065540 t h a t i t i s n o t 0065560 r e a d y ; i n t h i s c 0065600 a s e t h e e u w i l l 0065620 p r e s u m 337 a b l y r e p e 0065640 a t t h e r e q u e s t u 0065660 n t i l i t i s s a t i s 0065700 f i e d . T h u s a t t 0065720 h i s l e v e l o f a b s 0065740 t r a c t i o n , h a n d - o 0065760 f f i s a s y n c h r o n 0066000 337 i z e d t r a n s f e r o 0066020 f o n e d a t a i t e m 0066040 ( a d e c o d e d i n s t r 0066060 u c 302 \0 316 ! 302 # 316 U 302 W 316 212 302 215 0066100 316 362 302 365 317 004 303 006 317 . 303 0 001 330 377 254 0066120 \0 \0 002 7 302 \0 354 354 354 354 376 001 \0 320 345 337 0066140 t i o n ) f r o m o n e p 0066160 r o c e s s ( t h e i f u ) 0066200 t o a n o t h e r ( t h e 0066220 e u ) . \r U s u a l l y t h 0066240 e d a t a i n t h e d e 0066260 c o d e d i n s t r u c 337 t i 0066300 o n c a n b e d i v i d e 0066320 d i n t o t w o p a r t s 0066340 : i n f o r m a t i o n a b 0066360 o u t w h a t t o d o , 0066400 a n d p a r a m e t e r s . 0066420 I f t h e e u i s a 0066440 m i c r o 337 p r o g r a m 337 m e 0066460 d p r o c e s s o r , f o r 0066500 e x a m p l e , w h a t t 0066520 o d o c a n c o n v e n 376 0066540 001 \0 301 ; 337 i e n t l y b e e 0066560 n c o d e d a s t h e a d 0066600 d r e s s o f a m i c r o 0066620 337 i n s t r u c t i o n t o 0066640 w h i c h c o n t r o l s h 0066660 o u l d g o ( a d i s p a 0066700 t c h a d d r e s s ) , a n 0066720 d i n d e e d t h i s i s 0066740 d o n e i n t h e D o r 0066760 a d o . S i n c e m i c r 0067000 o 337 i n s t r u c t i o n s c 0067020 a n c o n t a i n i m m e d 0067040 i a t e c o n s t a n t s , 0067060 a n d i n g e n e r a l c 0067100 a n 302 7 302 \0 316 035 302 316 2 302 4 316 271 0067120 302 273 307 W 303 _ 001 336 375 254 \0 \0 004 257 302 \0 0067140 357 357 360 360 376 001 \0 ( 335 d o a r b 0067160 i t r a r y c o m p u t a t i 0067200 o n s , i t i s p o s s i 0067220 b l e i n p r i n c i p l e 0067240 t o e n c o d e a l l t 0067260 h e i n f o r m a t i o n i 0067300 n t h e i n s t r u c 337 t i 0067320 o n i n t o a m i c r o 337 0067340 i n s t r u c t i o n a d d r 0067360 e s s ; t h u s t h e i n 0067400 s t r u c 337 t i o n s P u s h 0067420 C o n s t a n t ( 3 ) a n d 0067440 P u s h C o n s t a n t ( 4 3 5 0067460 6 ) c o u l d s e n d c o 0067500 n t r o l t o d i f f e r e 0067520 n t m i c r o 337 i n s t r u c 0067540 t i o n s . I 376 001 \0 317 236 n 0067560 f a c t , h o w e v e r , m 0067600 i c r o 337 i n s t r u c t i o n 0067620 s a r e e x p e n s i v e , 0067640 a n d i t i s i m p r a 0067660 c t i c a l t o h a v e m 0067700 o r e t h a n a f e w h 0067720 u n d r e d , o r a t m o 0067740 s t a f e w t h o u s a n 0067760 d o f t h e m . H e n c 0070000 e w e w a n t t o u s e 0070020 t h e s a m e m i c r o 337 0070040 c o d e f o r a s m a n y 0070060 i n s t r u c t i o n s a s 0070100 p o s s i b l e , r e p r e 0070120 337 s e n t 337 302 \0 312 243 302 257 312 267 302 303 0070140 001 350 376 7 \0 \0 002 257 302 \0 364 364 364 364 376 001 0070160 \0 S 246 i n g t h e d i f f e 0070200 r e n c e s i n p a r a m e 0070220 t e r s w h i c h a r e t 0070240 r e a t e d a s d a t a b 0070260 y t h e m i c r o 337 c o d e 0070300 . T h e s e p a r a m e t 0070320 e r s a r e p r e s e n t e 0070340 d t o t h e e u o n s 0070360 o m e s e t o f d a t a 0070400 b u s s e s ; 266 4 h a s 0070420 s e v e r a l e x a m p l e s 0070440 . \r H a l f o f t h e i f 0070460 u - e u s y n c h r o n i z a 0070500 t i o n c a n a l s o b e 0070520 e n c o d e d i n t h e 0070540 d i s p a t c h a d d r e s s 0070560 : w 376 001 \0 s 0 h e n t h e 0070600 i f u i s n o t r e a d y 0070620 , i t c a n d i s p a t c 0070640 h t h e e u t o a s p 0070660 e c i a l N o t R e a d y l 0070700 o c a t i o n . H e r e t 0070720 h e m i c r o c o d e c a n 0070740 d o a n y b a c k g r o u 0070760 n d p r o c e s s i n g i t 0071000 m i g h t h a v e , a n d 0071020 t h e n r e p e a t t h e 0071040 d e m a n d f o r a n o t 0071060 h e r i n s t r u c 337 t i o n 0071100 . T h e s a m e m e 302 257 0071120 302 \0 306 027 302 ! 316 v 302 x 316 273 302 301 317 \b 0071140 303 \v 317 . 303 0 313 > 303 F 001 326 374 7 \0 \0 0071160 002 342 302 \0 353 353 354 354 376 001 \0 207 352 t h o 0071200 d c a n b e u s e d t o 0071220 c o m m u n i c a t e o t h 0071240 e r e x c e p t i o n a l c 0071260 o n d i t i o n s t o t h e 0071300 e u , s u c h a s a p 0071320 a g e f a u l t e n c o u n 0071340 t e r e d i n f e t c h i n 0071360 g a n i n s t r u c 337 t i o 0071400 n , o r a n i n t e r r u 0071420 p t s i g n a l f r o m a 0071440 n i / o d e v i c e . T 0071460 h e D o r a d o ' s i f u 0071500 u s e s t h i s m e t h o d 0071520 ( s e e 266 3 . 4 ) . \r M 0071540 e a s u r e m e n t s o f t 0071560 y p i c a l p r o g r a 376 001 \0 0071600 310 357 m s [ 7 , 1 1 ] r e v 0071620 e a l t h a t m o s t o f 0071640 t h e i n s t r u c t i o n 0071660 s e x e c u t e d a r e s 0071700 i m p l e , a n d h e n c e 0071720 c a n b e h a n d l e d 0071740 q u i c k l y b y t h e e 0071760 u . A s a r e s u l t , 0072000 i t i s i m p o r t a n t 0072020 t o k e e p t h e c o s 0072040 t o f h a n d - o f f l o 0072060 w , s i n c e o t h e r w i 0072100 s e i t c a n e a s i l y 0072120 d o m i n a t e t h e e x 0072140 302 342 302 \0 316 D 302 F 316 245 302 250 316 277 302 302 0072160 317 m 303 o 001 336 376 257 \0 \0 003 026 302 \0 357 357 0072200 360 360 376 001 \0 360 343 e c u t i o n t 0072220 i m e f o r s u c h i n s 0072240 t r u c t i o n s . A s t 0072260 h e e u g e t s f a s t e 0072300 r , t h i s p o i n t g e 0072320 t s m o r e i m p o r t a n 0072340 t ; t h e r e a r e m a n 0072360 y i n s t r u c t i o n s w 0072400 h i c h t h e D o r a d o , 0072420 f o r i n s t a n c e , c 0072440 a n e x e c u t e i n o n 0072460 e c y c l e , s o t h a t 0072500 o n e c y c l e o f h a 0072520 n d - o f f o v e r h e a d 0072540 w o u l d b e 5 0 % . T 0072560 h i s p o i n t i s d i s 0072600 c u s s e d 376 001 \0 o ) f u r t 0072620 h e r i n 266 3 a n d 4 0072640 . \r 2 . 5 A u t o n o m y \r P 0072660 e r h a p s t h e m o s t 0072700 i m p o r t a n t p a r a m e 0072720 t e r i n t h e d e s i g 0072740 n o f a n i f u i s t 0072760 h e e x t e n t t o w h i 0073000 c h i t f u n c t i o n s 0073020 i n d e p e n d e n t l y o f 0073040 t h e e x e c u t i o n u 0073060 n i t , w h i c h i s t h 0073100 e m a s t e r i n t h e i 0073120 r r e l a t i o n s h i p . 0073140 A t o n e e x t r e m e 0073160 303 026 315 # 302 \0 316 , 302 . 317 \ 303 _ 001 344 0073200 376 342 \0 \0 \a s 302 \0 362 362 364 364 376 001 \0 331 0073220 p w e c a n h a v e a n 0073240 i f u w h i c h i s e n t 0073260 i r e l y i n d e p e n d e n 0073300 t o f t h e e u a f t e 0073320 r i t i s i n i t i a l i 0073340 z e d w i t h a c o d e 0073360 a d d r e s s ( i t m i g h 0073400 t a l s o r e c e i v e i 0073420 n f o r 337 m a t i o n a b o u 0073440 t t h e o u t c o m e o f 0073460 b r a n c h e s ) ; t h i s 0073500 i n i t i a l i z a t i o n 0073520 w o u l d o n l y o c c u r 0073540 o n a p r o c e s s s w 0073560 i t c h , c o m p l e x p r 0073600 o c e d u r e c a l l , o r 0073620 376 001 \0 334 030 i n d e x e d o r 0073640 i n d i r e c t j u m p . 0073660 A t t h e o t h e r e x 0073700 t r e m e i s a n i f u 0073720 w h i c h s i m p l y b u f 0073740 f e r s o n e w o r d o f 0073760 c o d e a n d d e l i v e 0074000 r s s u c c e s s i v e b y 0074020 t e s t o t h e e u ; w 0074040 h e n t h e b u f f e r i 0074060 s e m p t y , t h e i f u 0074100 d i s p a t c h e s t h e 0074120 e u t o a p i e c e o f 0074140 m i c r o c o d e w h i 302 \0 0074160 316 017 302 022 316 8 302 : 317 6 303 9 317 205 303 207 0074200 317 247 303 252 317 272 303 274 001 330 377 # \0 \0 005 s 0074220 302 \0 354 354 354 354 376 001 \0 243 $ c h f e 0074240 t c h e s a n o t h e r m e 0074260 m o r y w o r d ' s w o r t 0074300 h o f c o d e i n t o t 0074320 h e b u f f e r . T h e 0074340 f i r s t i f u m u s t d 0074360 e c o d e i n s t r u c t i o 0074400 n l e n g t h s , f o l l o 0074420 w j u m p s , a n d p r o 0074440 v i d e t h e p r o g r a m 0074460 c o u n t e r f o r e a c 0074500 h i n s t r u c t i o n t o 0074520 t h e e u ( e . g . , s 0074540 o t h a t i t c a n b e 0074560 s a v e d a s a r e t u 0074600 r n l i n k ) . T h e s 0074620 e c o n d l e a v e 376 001 \0 5 257 0074640 s a l l t h e s e f u n c 0074660 t i o n s t o t h e e u , 0074700 e x c e p t p e r h a p s 0074720 f o r k e e p i n g t r a c 0074740 k o f w h i c h b y t e 0074760 o f t h e w o r d i t i 0075000 s d e l i v e r i n g . O 0075020 n e m i g h t t h i n k t 0075040 h a t t h e s e c o n d i 0075060 f u c a n n o t h e l p p 0075100 e r f o r m a n c e m u c h , 0075120 b u t i n f a c t w h e 0075140 n w o r k i n g w i t h a 0075160 m i c r o c o d e d 302 \0 300 * 0075200 302 > 316 K 302 N 316 272 302 274 317 035 303 037 317 217 0075220 303 222 001 334 375 # \0 \0 003 s 302 \0 356 356 356 356 0075240 376 001 \0 f 376 e u i t c a n p 0075260 r o b a b l y p r o v i d e 0075300 h a l f t h e p e r f o r m 0075320 a n c e i m p r o v e m e n t 0075340 o f t h e f i r s t o n 0075360 e , a t o n e - t e n t h 0075400 t h e c o s t i n h a r d 0075420 w a r e . T h e r e a s o 0075440 n c a n b e s e e n b y 0075460 e x a m i n i n g t h e i 0075500 n t e r p r e t e r f r a g m 0075520 e n t a t t h e b e g i n 0075540 n i n g o f 266 2 ; h a l 0075560 f a d o z e n m i c r o 337 0075600 i n s t r u c t i o n s a r e 0075620 t y p i c a l l y c o n s u 0075640 m e d i 376 001 \0 325 ( n t h e 0075660 c l u m s y G e t I n 337 s t r 0075700 u c 337 t i o n o p e r a t i o 0075720 n , a n d t h i n g s g e 0075740 t w o r s e w h e n i n s 0075760 t r u c t i o n s d o n o t 0076000 c o i n c i d e w i t h m 0076020 e m o r y w o r d s . \r W h e 0076040 n d e c i d i n g w h a t 0076060 t r a d e - o f f s t o m a 0076100 k e , o n e i m p o r t a n 0076120 t p a r a m e t e r i s t 0076140 h e s p e e d o f t h e 0076160 e u . I t i s p o i n t 0076200 l e s s t o b e a b l 303 s 0076220 316 \0 302 002 313 \r 303 035 317 306 303 310 001 344 373 # 0076240 \0 \0 004 e 302 \0 362 362 363 363 376 001 \0 I 220 e 0076260 t o e x e c u t e m o s t 0076300 i n s t r u c t i o n s i n 0076320 o n e o r t w o c y c l 0076340 e s , i f s e v e r a l c 0076360 y c l e s a r e c o n s u m 0076400 e d i n G e t I n 337 s t r u 0076420 c 337 t i o n . H e n c e a 0076440 f a s t e u m u s t h a 0076460 v e a n a u t o n o m o u s 0076500 i f u . A n i m p o r t 0076520 a n t s p e c i a l c a s e 0076540 i s t h e s p e e d o f 0076560 t h e m e m o r y r e l a 0076600 t i v e t o t h e m i c r 0076620 o 337 i n s t r u c t i o n t i 0076640 m e . I f s e v e r a l 376 0076660 001 \0 { 272 m i c r o 337 i n s t r 0076700 u c t i o n s c a n b e e 0076720 x e c u t e d i n t h e t 0076740 i m e r e q u i r e d t o 0076760 f e t c h t h e n e x t i 0077000 n s t r u c 337 t i o n f r o m 0077020 m e m o r y , t h e p r o 0077040 c e s s o r c a n u s e t 0077060 h i s t i m e t o h o l d 0077100 t h e i f u ' s h a n d , 0077120 o r t o p e r f o r m t 0077140 h e G e t I n 337 s t r u c 337 t 0077160 i o n i t s e l f . O n 0077200 t h e D o r a d o , t h e 0077220 302 \0 312 W 302 g 316 w 302 y 316 222 302 225 317 221 0077240 303 224 313 257 303 277 001 334 377 s \0 \0 002 e 302 \0 0077260 356 356 356 356 376 001 \0 245 201 c a c h e e 0077300 n s u r e s t h a t m e m o 0077320 r y d a t a a r r i v e s 0077340 a l m o s t i m m e d i a t e 0077360 l y , s o t h e r e i s 0077400 n o f r e e t i m e f o r 0077420 h a n d h o l d i n g . \r A n 0077440 a u t o n o m o u s i f u 0077460 m u s t d o m o r e t h a 0077500 n s i m p l y t r a n s f o 0077520 r m i n g i n s t r u c 337 t i 0077540 o n s i n t o a c o n v e 0077560 n i e n t f o r m f o r t 0077600 h e e u . T h e r e a r 0077620 e t w o n a t u r a l w a 0077640 y s i n w h i c h i t s 0077660 i n t e r n a l 376 001 \0 305 265 o p 0077700 e r a t i o n m a y b e a 0077720 f f e c t e d b y t h e i 0077740 n s t r u c 337 t i o n s t r e 0077760 a m : d e c o d i n g i n s 0100000 t r u c 337 t i o n l e n g t h 0100020 s , a n d f o l l o w i n g 0100040 b r a n c h e s . A n y 0100060 i f u w h i c h h a n d l e 0100100 s m o r e t h a n o n e 0100120 i n s t r u c 337 t i o n w i t 0100140 h o u t p r o c e s s o r i 0100160 n t e r v e n t i o n m u s t 0100200 c a l c u l a t e i n s t r 0100220 u c 302 e 302 \0 316 s 302 v 316 312 302 314 301 ! 0100240 303 - 301 ? 303 K 317 r 303 u 301 222 303 236 301 315 0100260 001 324 375 s \0 \0 004 255 302 \0 352 352 353 353 376 001 0100300 \0 \v 255 337 t i o n l e n g t h s 0100320 . F o l l o w i n g b r a 0100340 n c h e s i s d e s i r a b 0100360 l e b e c a u s e i t a v 0100400 o i d s t h e c o s t o f 0100420 a s t a r t - u p l a t e 0100440 n c y a t e v e r y b r a 0100460 n c h i n s t r u c 337 t i o n 0100500 ( t y p i c a l l y e v e r 0100520 y f i f t h i n s t r u c t 0100540 i o n i s a b r a n c h ) 0100560 . H o w e v e r , i t d 0100600 o e s i n t r o d u c e p o 0100620 t e n t i a l c o m p l i c a 0100640 t i o n s b e c a u s e a 0100660 c o n d i t i o n a l b r a n 0100700 c h 376 001 \0 o 215 m u s t b e 0100720 p r o c e s s e d w i t h o u 0100740 t a c c u r a t e i n f o r 0100760 m a t i o n ( p e r h a p s 0101000 w i t h o u t a n y i n f o 0101020 r m a t i o n ) a b o u t t 0101040 h e a c t u a l v a l u e 0101060 o f t h e c o n d i t i o n 0101100 ; i n d e e d , o f t e n 0101120 t h i s v a l u e i s n o 0101140 t d e t e r m i n e d u n t 0101160 i l t h e p r o c e s s o r 0101200 h a s e x e c u t e d t h 0101220 e p r e c e d i n g i n s t 0101240 r u c 337 t i o n . A s 300 \0 0101260 302 005 300 q 302 } 301 324 303 340 001 346 376 e \0 \0 0101300 002 255 302 \0 363 363 363 363 376 001 \0 350 031 t r a 0101320 i g h t f o r w a r d d e s i 0101340 g n d e c i d e s w h e t h 0101360 e r t o b r a n c h b a s 0101400 e d o n t h e o p c o d e 0101420 a l o n e , a n d t h e 0101440 p r o c e s s o r r e s t a r 0101460 t s t h e i f u a t t h 0101500 e c o r r e c t a d d r e s 0101520 s i f t h e d e c i s i o 0101540 n t u r n s o u t t o b 0101560 e w r o n g . \r T h e b r 0101600 a n c h d e c i s i o n m a 0101620 y b e b a s e d o n o t 0101640 h e r h i s t o r i c a l i 0101660 n f o r m a t i o n . T h e 0101700 S - 1 [ 1 7 ] , f o 376 001 \0 0101720 016 326 r i n s t a n c e , k e 0101740 e p s i n i t s i n s t r 0101760 u c 337 t i o n c a c h e o n 0102000 e b i t f o r e a c h i 0102020 n s t r u c 337 t i o n , w h i 0102040 c h r e c o r d s w h e t h 0102060 e r t h e i n s t r u c 337 t 0102100 i o n b r a n c h e d l a s 0102120 t t i m e i t w a s e x 0102140 e c u t e d . T h i s s m 0102160 a l l a m o u n t o f p a 0102200 r t i a l h i s t o r y r e 0102220 d u c e s t h e f r a c t i 0102240 o n o f i n c o r r e c t 0102260 302 255 302 \0 316 j 302 m 301 031 303 % 301 = 303 J 0102300 301 e 303 q 001 336 374 e \0 \0 005 206 302 \0 357 357 0102320 360 360 376 001 \0 4 217 b r a n c h d e 0102340 c i s i o n s t o 5 % [ F 0102360 o r e s t B a s k e t t , p 0102400 e r s o n a l c o m m u n i c 0102420 a t i o n ] . T h e m u 5 0102440 [ 4 ] r e m e m b e r s t 0102460 h e a d d r e s s e s o f 0102500 t h e l a s t e i g h t i 0102520 n s t r u c t i o n s w h i c 0102540 h b r a n c h e d ; s u c h 0102560 a s m a l l h i s t o r y 0102600 l e a v e s 3 5 % o f t 0102620 h e b r a n c h e s p r e d 0102640 i c t e d w r o n g l y , b 0102660 u t t h e s c h e m e a l 0102700 l o w s t h e p r e d i c t 0102720 i o n t o 376 001 \0 o 277 b e m 0102740 a d e b e f o r e t h e i 0102760 n s t r u c t i o n i s f e 0103000 t c h e d . M o r e e l a 0103020 b o r a t e d e s i g n s [ 0103040 1 6 ] f o l l o w b o t h 0103060 b r a n c h p a t h s , d i 0103100 s c a r d i n g t h e w r o 0103120 n g o n e w h e n t h e 0103140 p r o c e s s o r m a k e s 0103160 t h e b r a n c h d e c i s 0103200 i o n . E a c h p a t h 0103220 m a y o f c o u r s e e n 0103240 c o u n t e r f u r t h e r 0103260 b r a n c h e s , w h i c h 0103300 302 \0 316 F 302 H 306 \ 302 e 307 \b 303 016 001 344 0103320 376 255 \0 \0 003 206 302 \0 362 362 362 362 376 001 \0 q 0103340 " i n t u r n m a y b e 0103360 f o l l o w e d b o t h w a 0103400 y s u n t i l t h e c a p 0103420 a c i t y o f t h e i f u 0103440 i s e x h a u s t e d . 0103460 I f e a c h p a t h i s 0103500 t r u l y f o l l o w e d i 0103520 n p a r a l l e l , t h e n 0103540 f o l l o w i n g n p a t 0103560 h s w i l l i n g e n e r 0103600 a l r e q u i r e n t i m 0103620 e s a s m u c h h a r d w 0103640 a r e a n d n t i m e s 0103660 a s m u c h m e m o r y b 0103700 a n d w i d t h a s f o l l 0103720 o w i n g o n e p a t h . 0103740 376 001 \0 316 0 A l t e r n a t i v 0103760 e l y , p a r t o r a l l 0104000 o f t h e i f u ' s r e 0104020 s o u r c e s m a y b e m 0104040 u l t i p l e x e d b e t w e 0104060 e n p a t h s t o r e d u 0104100 c e t h i s c o s t a t 0104120 t h e e x p e n s e o f b 0104140 a n d w i d t h . \r 2 . 6 0104160 B u f f e r i n g \r A s w e 0104200 s a w i n 266 2 . 2 , a 0104220 p i p e l i n e w i t h a n 0104240 y i r r e g u l a r i t i e s 0104260 m u s t h a v e b u f 303 206 0104300 315 224 302 \0 316 < 302 @ 306 212 302 213 306 252 302 253 0104320 306 307 302 310 317 " 303 % 001 330 374 255 \0 \0 005 \n 0104340 302 \0 354 354 356 356 376 001 \0 u c f e r i n 0104360 g t o p r o v i d e e l a 0104400 s t i c i t y , o r i t s 0104420 p e r f o r m a n c e a t e 0104440 a c h i n s t a n t w i l l 0104460 a p p r o x i m a t e t h e 0104500 p e r f o r m a n c e o f 0104520 t h e s l o w e s t s t a g 0104540 e a t t h a t i n s t a n 0104560 t ; t h i s m a x i m i z i 0104600 n g o f t h e w o r s t 0104620 p e r f o r m a n c e i s h 0104640 i g h l y u n d e s i r a b l 0104660 e . F r o m t h e e n u 0104700 m e r a t i o n i n 266 2 . 0104720 3 o f i r r e g u l a r i t 0104740 i e s i n t h e 376 001 \0 5 8 0104760 i f u , w e c a n s e e 0105000 t h a t t o s e r v e t h 0105020 e e u s m o o t h l y , t 0105040 h e r e s h o u l d b e a 0105060 b u f f e r b e t w e e n 0105100 t h e e u a n d a n y s 0105120 o u r c e s o f i r r e g u 0105140 l a r i t y , a s s h o w n 0105160 i n F i g u r e 2 . S 0105200 i m i l a r l y , t o r e c 0105220 e i v e w o r d s f r o m 0105240 t h e i r r e g u l a r m e 0105260 m o r y , t h e r e s h o u 0105300 l d b e a b u f f e r b 0105320 e t w e 302 \0 317 \0 303 003 317 " 303 $ 317 T 0105340 303 V 001 344 377 224 \0 \0 003 \n 302 \0 362 362 362 362 0105360 376 001 \0 o J e n t h e m e m o 0105400 r y a n d a n y s o u r c 0105420 e s o f i r r e g u l a r i 0105440 t y . B e c a u s e o f 0105460 t h e i r r e g u l a r i t y 0105500 c a u s e d b y v a r i a 0105520 b l e l e n g t h i n s t r 0105540 u c t i o n s , a s i n g l 0105560 e b u f f e r c a n n o t 0105600 s e r v e b o t h f u n c t 0105620 i o n s . N o t e t h a t 0105640 a d d i t i o n a l r e g u 0105660 l a r s t a g e s ( s o m e 0105700 a r e s h o w n i n t h 0105720 e f i g u r e ) h a v e n 0105740 o e f f e c t o n e w a y 0105760 o r t 376 001 \0 " 260 h e o t h 0106000 e r . \r \r \r \r \r \r \r \r \r \r \r \r \r 0106020 \r \r \r \t < = = < I f u F i g 2 . 0106040 p r e s s < \r T h e c o s t 0106060 o f i n t r o d u c i n g a 0106100 b u f f e r ( i n t h e 0106120 e c l 1 0 K m s i t e c h 0106140 n o l o g y ) i s t h e r 0106160 a m s t o r a g e t o i m 0106200 p l e m e n t i t , a m u 0106220 l t i p l e x o r t o b y p 0106240 a s s i t w h e n i t i 0106260 s e m p t y , a n d 303 \n 373 \v 0106300 367 \f 367 \r 367 016 367 017 367 020 367 021 367 022 367 023 0106320 367 024 367 025 367 026 367 027 367 030 367 031 365 - 302 \0 0106340 317 V 303 Y 317 ^ 303 a 317 u 303 x 001 302 375 224 0106360 \0 \0 003 217 302 \0 341 341 362 362 376 001 \0 021 001 0106400 i t s c o n t r o l ; s e e 0106420 F i g u r e 6 f o r d e 0106440 t a i l s . T h e b y p a 0106460 s s e n s u r e s t h a t 0106500 t h e b u f f e r d o e s 0106520 n o t i n c r e a s e t h e 0106540 l a t e n c y . I n a d d 0106560 i t i o n , t h e r e i s 0106600 t y p i c a l l y a v e r y 0106620 m i n o r p e r f o r m a n 0106640 c e p e n a l t y : w h e n 0106660 t h e p i p e i s r e s 0106700 e t , a n y e x t e r n a l 0106720 r e s o u r c e s ( t h e 0106740 m e m o r y i n t h e c a 0106760 s e o f t h e i f u ) 376 0107000 001 \0 , 221 w h i c h h a v e b 0107020 e e n u s e d t o f i l l 0107040 t h e b u f f e r s a r e 0107060 w a s t e d . I f s o m 0107100 e o t h e r p r o c e s s o 0107120 r c o u l d m a k e b e t 0107140 t e r u s e o f t h e r 0107160 e s o u r c e s , s o m e t h 0107200 i n g h a s b e e n l o s 0107220 t . \r S E C . 3 \t A R C H I T 0107240 E C T U R E O F T H E D O 0107260 R A D O I F U \r 3 . A r c h 0107300 i t e c t u r e o f t h e 0107320 D o r a d o i f u \r W e 201 201 0107340 \f 001 303 217 001 265 313 327 302 \0 316 373 302 376 317 261 0107360 303 264 317 323 303 326 001 332 377 - \0 \0 006 M 302 \0 0107400 357 355 362 362 376 001 \0 \ 6 n o w t u r 0107420 n f r o m o u r d i s c u 0107440 s s i o n o f g e n e r a l 0107460 p r i n c i p l e s t o t 0107500 h e a c t u a l i f u o f 0107520 t h e D o r a d o . I t 0107540 s s t r u c t u r e f o l l 0107560 o w s f r o m t h e p r i 0107600 n c i p l e s o f t h e p 0107620 r e v i o u s s e c t i o n , 0107640 t h o u g h w e m u s t 0107660 a d m i t t h a t t h e d 0107700 e s i g n i n f a c t p r 0107720 o c e e d e d l e s s f r o 0107740 m g e n e r a l p r i n c i 0107760 p l e s t h a n f r o m t 0110000 h e g o a l o 376 001 \0 ; \r f 0110020 d e l i v e r i n g o n e d 0110040 e c o d e d i n s t r u c t i 0110060 o n p e r m i c r o c y c l 0110100 e . T h i s p e r f o r m 0110120 a n c e r e q u i r e m e n t 0110140 d i c t a t e s a n a u t 0110160 o n o m o u s i f u , a n d 0110200 i t a l s o r e q u i r e 0110220 s c a r e f u l a t t e n t 0110240 i o n t o t h e d e t a i 0110260 l s o f i f u - e u h a n 0110300 d - o f f . I n t h e D 0110320 o r a d o t h e e u i s 0110340 a m i c r o c o d 302 \0 316 A 302 D 0110360 317 j 303 m 317 250 303 253 317 254 303 256 317 314 303 316 0110400 001 334 377 327 \0 \0 004 M 302 \0 356 356 356 356 376 001 0110420 \0 { 004 e d p r o c e s s o r 0110440 w i t h a n u m b e r o f 0110460 d a t a p a t h s , a n d 0110500 a p i p e l i n e d i m p 0110520 l e m e n t a t i o n w h i c 0110540 h a l l o w s i t t o e 0110560 x e c u t e a m i c r o 337 i 0110600 n s t r u c t i o n e v e r y 0110620 6 0 n s ; i n o r d e r 0110640 t o r e m i n d t h e r 0110660 e a d e r o f t h i s i m 0110700 p l e m e n t a t i o n , w e 0110720 u s e t h e w o r d " p 0110740 r o c e s s o r " t o d e n 0110760 o t e t h e D o r a d o ' s 0111000 e u . T h e p r o c e s 0111020 s o r 376 001 \0 301 345 d o e s n o 0111040 t h a v e a n y s i g n i 0111060 f i c a n t c o n c u r r e n 0111100 c y v i s i b l e t o t h 0111120 e m i c r o p r o g r a m , 0111140 h o w e v e r . I n p a r 0111160 t i c u l a r , a l l t h e 0111200 w o r k d o n e i n a 0111220 g i v e n c y c l e i s s 0111240 p e c i f i e d d i r e c t l 0111260 y b y t h e m i c r o 337 i 0111300 n s t r u c t i o n e x e c u 0111320 t e d i n t h a t c y c l 0111340 e , a l t h o u g h m e m o 0111360 r y r e f e r e n c e s a r 0111400 e d o 302 \0 316 356 302 360 001 354 375 327 \0 \0 0111420 002 M 302 \0 366 366 366 366 376 001 \0 j 336 n e 0111440 b y a n a u t o n o m o u s 0111460 u n i t w h i c h i n f 0111500 a c t i s s h a r e d w i 0111520 t h t h e i f u ; s e e 0111540 F i g u r e 1 . \r T h e p r 0111560 o c e s s o r g i v e s t h 0111600 e i f u a n i n i t i a l 0111620 p r o g r a m c o u n t e r 0111640 ( p c ) , a n d s u b s e 0111660 q u e n t l y r e c e i v e s 0111700 a s e q u e n c e o f d 0111720 e c o d e d i n s t r u c t i 0111740 o n s , w h i c h a r e f 0111760 r o m s e q u e n t i a l b 0112000 y t e s e x c e p t w h e r 0112020 e t h e i f u h a s 376 001 \0 0112040 227 K f o l l o w e d a b r 0112060 a n c h . T h i s s e q u 0112100 e n c e c o n t i n u e s u 0112120 n t i l t h e p r o c e s s 0112140 o r r e s e t s t h e i f 0112160 u w i t h a n o t h e r p 0112200 c , u n l e s s a f a u l 0112220 t o r i n t e r r u p t i 0112240 s d e t e c t e d . F o r 0112260 e a c h i n s t r u c t i o 0112300 n t h e i f u s u p p l i 0112320 e s a m i c r o c o d e d 0112340 i s p a t c h a d d r e s s 0112360 ( i n t 302 M 302 \0 316 : 302 = 316 e 302 h 0112400 316 205 302 207 316 371 302 374 317 L 303 O 317 ] 303 _ 0112420 317 244 303 247 001 322 373 327 \0 \0 002 370 302 \0 351 351 0112440 352 352 376 001 \0 006 371 o w h i c h N 0112460 o t R e a d y a n d a l l 0112500 o t h e r e x c e p t i o n s 0112520 a r e e n c o d e d ) , s 0112540 o m e b i t s o f i n i t 0112560 i a l s t a t e f o r t h 0112600 e p r o c e s s o r , a s 0112620 e q u e n c e o f f i e l d 0112640 d a t a v a l u e s , a n 0112660 d t h e p c v a l u e f 0112700 o r t h e f i r s t b y t 0112720 e o f t h e i n s t r u c 0112740 t i o n . T h e u s e s 0112760 m a d e o f t h i s i n f 0113000 o r m a t i o n a r e d e s 0113020 c r i b e d i n 266 4 . \r 3 0113040 . 1 B y t e 376 001 \0 234 311 c o d 0113060 e s \r T h e i f u ' s i n t 0113100 e r p r e t a t i o n o f t 0113120 h e c o d e i s b a s e d 0113140 o n a d e f i n i t e m 0113160 o d e l o f h o w i n s t 0113200 r u c t i o n s a r e e n c 0113220 o d e d . A l t h o u g h 0113240 t h i s m o d e l i s n o 0113260 t s p e c i a l i z e d t o 0113300 t h e d e t a i l s o f 0113320 a p a r t i c u l a r i n s 0113340 t r u c t i o n s e t , g o 0113360 o d p e r f o r m a n 302 370 315 \a 0113400 \0 \a \0 \0 \0 002 001 001 302 \0 312 \b 302 020 306 t 0113420 302 y 316 217 302 221 001 001 303 006 317 \v 303 016 001 320 0113440 376 M \0 \0 006 ) 302 \0 350 350 356 352 376 001 \0 3 0113460 220 c e d e p e n d s o n a 0113500 d h e r 337 e n c e t o c e r 0113520 t a i n r u l e s . T h e 0113540 i f u d e a l s o n l y 0113560 w i t h i n s t r u c 337 t i o 0113600 n s e n c o d e d a s v a 0113620 r i a b l e l e n g t h b y 0113640 t e s e q u e n c e s 235 b 0113660 y t e c o d e s [ 3 , 1 1 0113700 ] . V a r 337 i 337 a b l e l 0113720 e n g t h i n s t r u c 337 t i 0113740 o n s p r o v i d e c o d e 0113760 c o m p a c t i o n , s i n 0114000 c e f r e q u e n t i n s t 0114020 r u c 337 337 t i o n s c a n b 0114040 e s m a l l . T h e r e 0114060 i 376 001 \0 212 231 s a l s o a p 0114100 e r f o r m 337 a n c e p a y o 0114120 f f i n c a c h e a n d 0114140 v i r t u a l m e m o r y s 0114160 y s t e m s , s i n c e t h 0114200 e c o m p a c t i o n e n h 0114220 a n c e s l o c a l i t y a 0114240 n d t h u s r e d u c e s 0114260 c a c h e m i s s e s a n d 0114300 p a g e f a u l t i n g . 0114320 O u r e x p e r i e n c e 0114340 h a s s h o w n t h a t b 0114360 y t e c o d e s p r o v i d 0114400 e a f l e x i b l e f o r 0114420 m a t f o r d i f f e r 302 \0 0114440 316 0 302 3 306 ~ 302 210 001 350 377 \a \0 \0 004 ) 0114460 302 \0 364 364 364 364 376 001 \0 376 374 e n t l 0114500 a n g u a g e s w i t h o u t 0114520 f a v o r i n g a p a r t 0114540 i c u l a r o n e . T h e 0114560 c h o i c e o f e i g h t 0114600 b i t s a s t h e g r a 0114620 i n i s a c o m p r o 337 m 0114640 i s e a m o n g o p t i m u 0114660 m e n c o d i n g , t h e 0114700 d e s i r e t o k e e p c 0114720 o d e a d d r e s s e s s h 0114740 o r t , a n d s i m p l i c 0114760 i t y o f t h e h a r d w 0115000 a r e . A l a r g e r g 0115020 r a i n i s h i g h l y u 0115040 n d e s i r 337 a b l e , b o t 0115060 h b e c a u s e m 376 001 \0 p N 0115100 o r e t h a n h a l f t h 0115120 e i n s t r u c 337 t i o n s 0115140 c a n f i t i n t o o n e 0115160 b y t e , a n d b e c a u 0115200 s e t a b l e l o o k u p 0115220 a s a d e c o d i n g t e 0115240 c h n i q u e i s n o t f 0115260 e a s i b l e f o r u n i t 0115300 s m u c h l a r g e r t h 0115320 a n e i g h t b i t s . 0115340 A f i n e r g r a i n i m 0115360 p r o v e s c o d e c o m p 0115400 a c t n e s s s o m e w h a t 0115420 a t t h e e x p e n s e 0115440 o f m o r e c o m p l e x 0115460 302 \0 001 360 375 \a \0 \0 002 ) 302 \0 370 370 370 370 0115500 376 001 \0 O F l e n g t h c a l c 0115520 u l a t i o n a n d w o r d 0115540 d i s a s s e m b l y . \r T h 0115560 e f i r s t b y t e o f 0115600 e a c h i n s t r u c 337 337 t i 0115620 o n , c a l l e d t h e o 0115640 p c o d e , i s d e c o d e 0115660 d b y f u l l t a b l e 0115700 l o o k u p . I t m a y 0115720 b e f o l l o w e d b y a 0115740 s m a n y a s t w o o p 0115760 t i o n a l d a t a b y t e 0116000 s ( k n o w n a s a l p h 0116020 a a n d b e t a r e s p e 0116040 c t i v e l y ) t h a t a r 0116060 e p a s s e d t o t h e 0116100 p r o c e 376 001 \0 j 9 s s o r w 0116120 i t h o n l y s l i g h t 0116140 r e f o r m a t t i n g . O 0116160 f c o u r s e t h e p r o 0116200 c e s s o r i s f r e e t 0116220 o i n t e r p r e t t h e s 0116240 e b y t e s a s i t w i 0116260 s h e s , b u t t h e i f 0116300 u c a n o n l y d o c o 0116320 m p l e x d e c o d 337 i n g 0116340 o p e r a t i o n s o n t h 0116360 e o p c o d e b y t e . 0116400 T h e l i m i t a t i o n t 0116420 o t h r e e b y t e i n s 0116440 t r u c 302 ) 302 \0 306 Z 302 ` 306 262 302 266 0116460 306 307 302 314 306 321 302 325 317 t 303 w 001 332 373 \a 0116500 \0 \0 002 325 302 \0 355 355 356 356 376 001 \0 331 321 337 0116520 337 t i o n s r e d u c e s h 0116540 a r d w a r e c o m p l e x i 0116560 t y a t a c o n s i d e r 0116600 a b l e c o s t i n s p e 0116620 e d f o r l o n g e r i n 0116640 s t r u c t i o n s ; b y t e 0116660 s a f t e r t h e t h i r 0116700 d m u s t b e f e t c h e 0116720 d e x p l i c i t l y b y 0116740 t h e p r o c e s s o r , w 0116760 h i c h a l s o m u s t r 0117000 e s t a r t t h e i f u a 0117020 t t h e p r o p e r p o i 0117040 n t . \r 3 . 2 T h e d e c o 0117060 d i n g t a b l e \r T h e i 0117100 f u d e c o d e s a n i 376 0117120 001 \0 } 331 n s t r u c 337 337 t i o n 0117140 b y l o o k i n g u p i 0117160 t s f i r s t b y t e i n 0117200 a 1 0 2 4 w o r d r a m 0117220 c a l l e d t h e d e c o 0117240 d i n g t a b l e . T h e 0117260 a d d i t i o n a l t w o 0117300 b i t s o f a d d r e s s 0117320 c o m e f r o m a n i n s 0117340 t r u c 337 337 t i o n - s e t r 0117360 e g i s t e r . T h e 2 7 0117400 - b i t c o n t e n t s o f 0117420 t h e t a b l e d e s c r 0117440 i b e t h e 302 325 314 354 302 \0 316 274 0117460 302 277 316 360 302 363 317 9 303 < 307 H 303 V 307 211 0117500 303 221 307 222 303 243 001 324 376 ) \0 \0 003 3 302 \0 0117520 352 352 354 354 376 001 \0 ~ 331 i n s t r u c 0117540 337 337 t i o n i n s u f f i c 0117560 i e n t d e t a i l f o r 0117600 t h e i f u a n d t h e 0117620 p r o c e s s o r t o d o 0117640 t h e i r j o b s , a n d 0117660 t h e o p c o d e b y t e 0117700 i t s e l f i s n o t p a 0117720 s s e d t o t h e p r o c 0117740 e s s o r . T h u s t h e 0117760 t a b l e l o o k u p d o 0120000 e s m o s t o f t h e t 0120020 r a n s 337 f o r m 337 a t i o n 0120040 o f t h e i n s t r u c t i 0120060 o n ; i t a l s o g o v e 0120100 r n s s o m e m i n o r t 0120120 r a n s 337 f o r m 376 001 \0 317 274 337 a 0120140 t i o n s o f t h e d a t 0120160 a b y t e s s u c h a s 0120200 s i g n e x t e n 337 s i o n . 0120220 \r T h i s m e t h o d o f 0120240 i n s t r u c 337 t i o n d e c 0120260 o d i n g h a s a n u m b 0120300 e r o f a d v a n 337 t a g e 0120320 s . I t m a k e s t h e 0120340 d e c o d e r c o m p l e t 0120360 e l y p r o g r a m m a b l e 0120400 i n a v e r y s i m p l 0120420 e a n d e c o 337 n o m 337 i c 0120440 a l w a y . I t a l s o 0120460 a l l o w s a n y s u b s 0120500 t r u c 337 t u r 303 3 302 \0 316 + 302 . 0120520 001 352 376 354 \0 \0 004 032 302 \0 365 365 366 366 376 001 0120540 \0 P 376 e o f t h e o p c o 0120560 d e ( e . g . , r e g i s t 0120600 e r o r m o d e f i e l d 0120620 s ) t o b e e x t r a c t 0120640 e d w i t h c o m p l e t e 0120660 f l e x i b i l i t y . I 0120700 n d e e d , i t i s n o t 0120720 n e c e s s a r y f o r s 0120740 u c h f i e l d s t o e x 0120760 i s t e x p l i c i t l y . 0121000 I f s i n g l e - b y t e 0121020 P u s h C o n s t a n t i n s 0121040 t r u c 337 t i o n s f o r v 0121060 a l u e s 0 - 4 a r e d e 0121100 s i r e d , a n y f i v e 0121120 o p c o d e v a l u e s c a 0121140 n b 376 001 \0 \b 255 e a s s i g n 0121160 e d f o r t h i s p u r p 0121200 o s e , a n d t h e t a b 0121220 l e c a n p r o d u c e t 0121240 h e v a l u e s 0 - 4 . 0121260 F u r t h e r m o r e , n o 0121300 s h a r p d i s t i n c t i o 0121320 n i s n e e d e d b e t w 0121340 e e n " c o n t r o l " a n 0121360 d " d a t a " i n t h e 0121400 i n s t r u c 337 t i o n e n c 0121420 o d i n g , s i n c e b o t 0121440 h c o n t r o l i n f o r 337 0121460 m a t i o n a n d d a t a 0121500 v a l u e s a r e p r o d u 0121520 c e d 302 \0 312 255 302 271 001 354 377 3 \0 \0 0121540 002 032 302 \0 366 366 366 366 376 001 \0 346 243 b y 0121560 t h e s a m e t a b l e l 0121600 o o k u p . \r O f c o u r s e 0121620 n o t h i n g i s p e r f 0121640 e c t . T h i s s c h e m 0121660 e m a y f a i l w h e n 0121700 a n i n s t r u c 337 t i o n 0121720 h a s m a n y s m a l l f 0121740 i e l d s , e s p e c i a l l 0121760 y i f t h e y c r o s s 0122000 b y t e b o u n d 337 a r i e s 0122020 . T h e p d p - 1 1 a n 0122040 d N o v a i n s t r u c 337 t 0122060 i o n s e t s a r e i n t 0122100 e r 337 e s t i n g b o r d e r 0122120 337 l i n e c a s e s : i t 0122140 w o r k s q u i t e w 376 001 \0 0122160 200 332 e l l t o l o o k u p 0122200 t h e f i r s t b y t e 0122220 a n d u s e t h e r e s u 0122240 l t t o s e l e c t e i t 0122260 h e r a s e c o n d l o o 0122300 k u p i n a n a l t e r n 0122320 a t e t a b l e l o o k u p 0122340 , o r t r e a t m e n t o 0122360 f t h e n e x t b y t e 0122400 a s d a t a . A c o n v 0122420 e n 337 i e n t w a y t o d 0122440 e s c r i b e t h i s i s 0122460 t o h a v e t h e f i r s 0122500 t b y t e s p e c i f y e 0122520 i t h e r a 302 032 302 \0 316 252 302 255 0122540 307 X 303 a 001 346 375 3 \0 \0 002 200 302 \0 363 363 0122560 364 364 376 001 \0 347 347 t w o b y t e 0122600 i n s t r u c 337 t i o n , o r 0122620 a o n e b y t e i n s t 0122640 r u c 337 t i o n w h i c h s 0122660 w i t c h e s t h e " i n s 0122700 t r u c 337 t i o n s e t " t 0122720 e m p o r a r i l y f o r d 0122740 e c o d i n g t h e n e x t 0122760 b y t e . \r T h i s f a c i 0123000 l i t y o f m o d i 337 f y i 0123020 n g t h e i n s t r u c 337 t 0123040 i o n s e t r e g i s t e r 0123060 o n t h e f l y i s n 0123100 o t i m p l e 337 m e n t e d 0123120 i n t h e D o r a d o , s 0123140 i n c e i t i s n o t v 0123160 e r y u s e 376 001 \0 206 U f u l 0123200 f o r t h e i n s t r u c 337 0123220 t i o n s e t s w e a c t 0123240 u a l l y u s e . I t i 0123260 s s i m p l e , h o w e v e 0123300 r , a n d c o u l d e a s 0123320 i l y b e a d d e d ; t h 0123340 e o n l y d e l i c a t e 0123360 p o i n t i s t h a t t h 0123400 e i n s t r u c t i o n s e 0123420 t r e g i s t e r m u s t 0123440 b e s a v e d o n a n e 0123460 x c e p t i o n , o r e l s 0123500 e e x c e p t i o n s m u s 0123520 t b e p r o h i b i t e d 0123540 b e f o r e i n s 302 200 302 \0 001 356 0123560 376 032 \0 \0 003 202 302 \0 367 367 370 370 376 001 \0 L 0123600 326 t r u c t i o n s w h i c h 0123620 a r e d e c o d e d w i t 0123640 h a n a l t e r n a t e t 0123660 a b l e . C u r r e n t l y 0123700 o n l y t h e p r o c e s 0123720 s o r c a n c h a n g e t 0123740 h e i n s t r u c t i o n s 0123760 e t , a n d i t n o r m a 0124000 l l y d o e s s o o n l y 0124020 w h e n s w i t c h i n g 0124040 f r o m o n e l a n g u a g 0124060 e t o a n o t h e r . T 0124100 h i s f a c i l i t y i s 0124120 u s e d i n t h e I n t e 0124140 r l i s p i m p l e m e n 337 t 0124160 a t i o n , f o r e x a m p 0124200 l 376 001 \0 363 S e , s i n c e t 0124220 h e n u c l e u s o f t h 0124240 i s s y s t e m i s w r i 0124260 t t e n i n b c p l a n d 0124300 c o m p i l e d i n t o a 0124320 d i f f e r e n t i n s t r 0124340 u c 337 t i o n s e t t h a n 0124360 t h e o n e u s e d f o 0124400 r L i s p . \r M u l t i p l e 0124420 d e c o d i n g t a b l e s 0124440 h a v e o t h e r u s e s 0124460 . I n f a c t , t h e 0124500 i f u c a n b e v i e w e 0124520 d a s a r a t h e r g e 0124540 n e r a l b y t e - s 303 202 302 \0 0124560 317 2 303 6 317 272 303 275 001 346 376 200 \0 \0 \a 032 0124600 302 \0 363 363 364 364 376 001 \0 f q t r e a m 0124620 p r o c e s s o r . F o r 0124640 e x a m p l e , c o n s i 0124660 d e r t h e p r o b l e m 0124700 o f g e n e r 337 a t i n g h 0124720 a l f t o n e v a l u e s f 0124740 o r a g r e y s c a l e 0124760 i m a g e : T h e t a s k 0125000 i s t o t r a n s f o r m 0125020 a s e q u e n c e o f g 0125040 r e y p i x e l s ( p g b 0125060 i t s e a c h , a t a r 0125100 e s o l u t i o n o f r g 0125120 p i x e l s / i n c h ) , i n 0125140 t o a s e q u e n c e o f 0125160 b i n a r y p i x e l s 0125200 ( o n e b i t e a 376 001 \0 x 343 0125220 c h , a t a r e s o l u t 0125240 i o n o f r b p i x e l s 0125260 / i n c h ) . B o t h s e 0125300 t s o f p i x e l s a r e 0125320 p a c k e d i n t o w o r 0125340 d s , 1 6 / p g p e r w o 0125360 r d a n d 1 6 p e r w o 0125400 r d r e s p e c t i v e l y . 0125420 T h u s a s e a c h b 0125440 i n a r y p i x e l i s g 0125460 e n e r a t e d , i t i s 0125500 n e c e s s a r y t o k e e 0125520 p \0 \t \0 \0 \0 003 D 376 D 002 302 \0 \0 020 0125540 302 = \0 > 312 241 336 242 302 243 312 302 336 303 302 304 0125560 \0 321 302 366 313 027 337 030 303 031 001 & 313 W 337 X 0125600 001 Y 001 302 377 202 \0 \0 005 032 302 \0 341 341 346 341 0125620 376 001 \0 206 \v t r a c k o f w h 0125640 e t h e r a n e w b i n a 0125660 r y w o r d m u s t b e 0125700 s t a r t e d ( o n c e e v 0125720 e r y 1 6 b i n a r y p i 0125740 x e l s ) , a n d w h e t h 0125760 e r a n e w g r e y p i 0126000 x e l i s n e e d e d ( o 0126020 n c e e v e r y r b / r g 0126040 b i n a r y p i x e l s ) ; 0126060 i n t h e l a t t e r c a 0126100 s e , a n e w g r e y w 0126120 o r d m a y b e n e e d e 0126140 d . T y p i c a l a l g o 0126160 337 r i t h m s u s e a s i 0126200 n g l e s c a n - l i n e b 0126220 u f f e r 376 001 \0 211 361 c o n t a 0126240 i n i n g a n e r r o r v 0126260 a l u e w h i c h m u s t 0126300 b e c o m p e n 337 s a t e d 0126320 a t e a c h b i n a r y p 0126340 i x e l . T h e i f u c 0126360 a n b e u s e d t o f e 0126400 t c h v a l u e s f r o m 0126420 t h i s b u f f e r i n p 0126440 a r a l l e l w i t h t h e 0126460 p r o c e s s o r . S p 0126500 e c i a l p s e u d o - o p c 0126520 o d e v a l u e s c a n b 0126540 e u s e d t \0 \t \0 \0 \0 003 D 376 0126560 D 002 \0 \0 312 205 336 206 \0 207 312 210 336 211 \0 212 0126600 302 333 \0 334 303 / 001 0 317 Q 303 T 001 316 375 202 0126620 \0 \0 003 032 302 \0 347 347 354 347 376 001 \0 H 313 o 0126640 m a r k t h e p o i n t s 0126660 w h i c h r e q u i r e o 0126700 n e o r m o r e o f t h 0126720 e s p e c i a l a c t i o n 0126740 s a b o v e . T h e d e 0126760 c o d i n g t a b l e w i l 0127000 l d i s p a t c h t h e p 0127020 r o c e s s o r t o t h e 0127040 s p e c i a l c o d e f o r 0127060 t h e s e f u n c t i o n s 0127100 w i t h o u t a n y p r o 0127120 c e s s o r o v e r h e a d . 0127140 A t r i a l i m p l e m 0127160 e n t a t i o n u s i n g t 0127200 h i s i d e a w a s a b o 0127220 u t t w i c e a s f a s 376 0127240 001 \0 P % t a s o n e w i t 0127260 h o u t t h e i f u . \r 3 . 0127300 3 P i p e l i n e s t a g e 0127320 s a n d b u f f e r i n g \r 0127340 F i g u r e 3 s h o w s t 0127360 h e p i p e l i n e s t a g 0127400 e s i n t h e i f u . 0127420 A n i t e m v a r i e s 0127440 i n s i z e , b u t a l l 0127460 s t a g e s e x c e p t o 0127500 n e o p e r a t e i n a 0127520 s i n g l e 6 0 n s c y c 0127540 l e . F o r t h e m o s 0127560 t p a r t a l l s t a t e 0127600 i s 303 032 315 < 302 \0 317 025 303 030 307 031 0127620 303 032 317 f 303 i 001 340 373 202 \0 \0 002 a 302 \0 0127640 360 360 362 362 376 001 \0 9 E h e l d i n 0127660 t h e b u f f e r s b e t 0127700 w e e n t h e s t a g e s , 0127720 w h i c h t h e m s e l v e 0127740 s a r e p u r e l y f u n 0127760 c t i o n a l o r c o m b i 0130000 n a t o r i a l . \r A t t h e 0130020 b e g i n n i n g o f t h 0130040 e p i p e , p c v a l u e 0130060 s a r e g e n e r a t e d 0130100 a n d p u t o n t h e m 0130120 e m o r y a d d r e s s b u 0130140 s ( a d d r e s s ) , a n d 0130160 t h e c o r r e s 337 p o n d 0130200 i n g 1 6 - b i t w o r d s 0130220 a r e r e t u r n e d f r 0130240 o m t h e m e 376 001 \0 N o m o 0130260 r y ( m e m o r y ) , a t 0130300 a p e a k r a t e o f o 0130320 n e p e r c y c l e . I 0130340 f t h e r e a r e n o c 0130360 a c h e m i s s e s a n d 0130400 n o c o l l i s i o n s w i 0130420 t h t h e p r o c e s s o r 0130440 , t h e m e m o r y c a n 0130460 a c c e p t a n a d d r e 0130500 s s i n e v e r y c y c l 0130520 e a n d r e t u r n d a t 0130540 a w o r d s a t t h e s 0130560 a m e r a t e t w o c y c 0130600 l e s l a t e r . T h u s 0130620 302 a 302 \0 316 177 302 201 316 272 302 301 317 006 303 \f 0130640 001 342 377 < \0 \0 004 z 302 \0 361 361 362 362 376 001 0130660 \0 220 - u n d e r t h e s e 0130700 i d e a l c o n d i t i o n s 0130720 t h e m e m o r y i s n 0130740 o t i r r e g u l a r . A 0130760 d o u b l e - r a t e ( 3 0 0131000 n s ) s t a g e ( b y t e 0131020 s ) d e l i v e r s b y t e 0131040 s t o t h e d e c o d e r 0131060 ( d e c o d e ) , w h i c h 0131100 c a n a c c e p t o n e 0131120 o p c o d e b y t e a n d 0131140 o n e o p e r a n d b y t e 0131160 i n a s i n g l e c y c 0131200 l e , t h o u g h i t r e 0131220 q u i r e s a f u l l c y 0131240 c l e t o p r o c e s s a 0131260 n i 376 001 \0 024 363 n s t r u c t i 0131300 o n . T h i s a r r a n g 0131320 e m e n t a l l o w s t w o 0131340 - b y t e i n s t r u c 337 t i 0131360 o n s t o p a s s t h r o 0131400 u g h t h e p i p e a t 0131420 t h e r a t e o f o n e 0131440 p e r c y c l e ; l o n g e 0131460 r i n s t r u c t i o n s r 0131500 e q u i r e t w o c y c l e 0131520 s , b u t a r e r a r e . 0131540 B e c a u s e d e c o d e 0131560 r e q u i r e s a f u l l 0131600 c y c l e , t h e p e a k 0131620 r a t e f o r o n 302 \0 316 Y 0131640 302 ^ 316 177 302 205 317 262 303 270 001 344 376 a \0 \0 0131660 002 z 302 \0 362 362 362 362 376 001 \0 ; b e b 0131700 y t e i n s t r u c t i o n s 0131720 i s s t i l l o n e p e 0131740 r c y c l e . N o t e t 0131760 h a t t h e p r o c e s s o 0132000 r c a n n o t d e m a n d 0132020 i n s t r u c t i o n s f a s 0132040 t e r t h a n t h i s a n 0132060 y w a y . \r \r \r \r \r \r \r \r \r \r 0132100 \r \r \r \r \r \r \t < = = < I f u F i 0132120 g 3 . p r e s s < \r F r o m d 0132140 e c o d e o n , a n i t e 0132160 m i s a n i n s t r u c t 0132200 i o n ; o n e o f t h e s 0132220 e i t e m s i s h e l d 0132240 i n a b u f f e r f r o m 0132260 w h i c h i t i s 376 001 \0 0132300 275 332 h a n d e d o f f t o 0132320 t h e p r o c e s s o r ( d 0132340 i s p a t c h ) . I t t u 0132360 r n s o u t t h a t t h e 0132400 p r o c e s s o r p r o p e 0132420 r r e q u i r e s s o m e 0132440 o f t h e d e c o d e d i 0132460 n s t r u c t i o n b e f o r 0132500 e i t e x e c u t e s t h 0132520 e f i r s t m i c r o i n s 0132540 t r u c t i o n ( t h e d i 0132560 s p a t c h a d d r e s s a 0132600 n d o t h e r 302 z 372 { 366 | 366 } 0132620 366 ~ 366 177 366 200 366 201 366 202 366 203 366 204 366 205 0132640 366 206 366 207 366 210 366 211 364 235 302 \0 316 242 302 250 0132660 317 035 303 % 001 306 374 a \0 \0 002 345 302 \0 343 343 0132700 364 364 376 001 \0 032 \b i n i t i a l 0132720 s t a t e ; s e e 266 4 . 2 0132740 ) , b u t c o n s u m e s 0132760 t h e f i e l d d a t a l 0133000 a t e r , o n e b y t e a 0133020 t a t i m e . T h e p 0133040 h y s i c a l i f u a l s o 0133060 c o n t a i n s a l o g i 0133100 c a l e x t e n s i o n o f 0133120 t h e p r o c e s s o r ( 0133140 e x e c u t e ) , w h i c h 0133160 h o l d s t h i s d e f e r 0133200 r e d i n f o r m a t i o n 0133220 a n d d o l e s i t o u t 0133240 o n d e m a n d . \r T h e r 0133260 e a r e t w o w o r d s 0133300 o f b u f f 376 001 \0 306 302 e r i n 0133320 g a f t e r m e m o r y , 0133340 b u t t h e r e i s n o 0133360 o t h e r b u f f e r i n g 0133400 e x c e p t f o r t h e m 0133420 i n i m u m s i n g l e i t 0133440 e m b e t w e e n s t a g e 0133460 s , c o n t r a r y t o t 0133500 h e a r g u m e n t s o f 0133520 266 2 . 6 . T h i s d e s 0133540 i g n w a s a d o p t e d 0133560 p a r t l y t o s a v e s 0133600 p a c e , a n d p a r t l y 0133620 b e c a u s e w e d i d 0133640 n o t f u l l y u n d e 302 345 0133660 302 \0 316 a 302 d 316 231 302 240 317 \f 303 022 001 342 0133700 376 235 \0 \0 003 302 \0 361 361 362 362 376 001 \0 2 0133720 \n r s t a n d t h e i s s u 0133740 e s i n m a i n t a i n i n 0133760 g p e a k b a n d w i d t h 0134000 . F o r t u n a t e l y t 0134020 h e p e a k b a n d w i d t 0134040 h o f t h e i f u i s 0134060 s u b s t a n t i a l l y g r 0134100 e a t e r t h a n w h a t 0134120 t h e p r o c e s s o r i s 0134140 l i k e l y t o d e m a n 0134160 d f o r m o r e t h a n 0134200 a v e r y s h o r t i n t 0134220 e r v a l ( s e e 266 6 ) , 0134240 s o t h a t n o t m u c 0134260 h u s e f u l t h r o u g h 0134300 p u t i s l o s t b e c a 0134320 u 376 001 \0 y X s e o f t h e 0134340 i n a d e q u a t e b u f f e 0134360 r i n g . \r 3 . 4 E x c e p t 0134400 i o n s \r E x c e p t i o n c 0134420 o n d i t i o n s a r e h a 0134440 n d l e d b y e x t e n d i 0134460 n g t h e s p a c e o f 0134500 v a l u e s s t o r e d i n 0134520 a n i t e m a n d h a n 0134540 d e d o f f f r o m o n e 0134560 s t a g e t o t h e n e 0134600 x t , r a t h e r t h a n 0134620 b y e s t a b l i s h i n g 0134640 s e p a r a t e c o m m u n i 0134660 c a t i o n p a t 303 315 / 302 \0 0134700 316 X 302 [ 300 312 302 315 001 344 376 345 \0 \0 006 023 0134720 302 \0 362 362 364 364 376 001 \0 333 \ h s . 0134740 T h u s , f o r e x a m p l 0134760 e , a p a g e f a u l t 0135000 f r o m t h e m e m o r y 0135020 i s i n d i c a t e d b y 0135040 a s t a t u s b i t r e t 0135060 u r n e d a l o n g w i t h 0135100 t h e d a t a w o r d ; 0135120 t h e r e s u l t i n g " p 0135140 a g e f a u l t v a l u e " 0135160 i s p r o p a g a t e d t 0135200 h r o u g h t h e p i p e 0135220 a n d d e c o d e d i n t o 0135240 a p a g e f a u l t d i 0135260 s p a t c h a d d r e s s w 0135300 h i c h i s h a n d e d t 0135320 o t h e p r o c e 376 001 \0 327 027 0135340 s s o r l i k e a n y o r 0135360 d i n a r y i n s t r u c t i 0135400 o n . E a c h e x c e p t 0135420 i o n h a s i t s o w n 0135440 d i s p a t c h a d d r e s s 0135460 . I n t e r r u p t s c a 0135500 u s e a s l i g h t c o m 0135520 p l i c a t i o n . T h e 0135540 i f u a c c e p t s a s i 0135560 g n a l c a l l e d R e s c 0135600 h e d u l e w h i c h m e a 0135620 n s " c a u s e a n i n t 0135640 e r r u p t ; " t h i s s i 0135660 g n a l i s a c t u a l l y 0135700 g e n e r a t 302 \0 317 200 303 203 313 234 0135720 303 246 001 350 377 / \0 \0 004 023 302 \0 364 364 364 364 0135740 376 001 \0 332 027 e d b y i / o m 0135760 i c r o 337 c o d e i n t h e 0136000 p r o c e s s o r , b u t 0136020 i t c o u l d c o m e f r 0136040 o m s e p a r a t e h a r d 0136060 w a r e . T h e n e x t 0136100 i t e m l e a v i n g d e c 0136120 o d e i s m o d i f i e d 0136140 t o h a v e a r e s c h e 0136160 d u l e d i s p a t c h a d 0136200 d r e s s . T h e m i c r 0136220 o c o d e a t t h i s a d 0136240 d r e s s e x a m i n e s r 0136260 e g i s t e r s t o f i n d 0136300 o u t w h a t i n t e r r 0136320 u p t c o n d i t i o n h a 0136340 s o c c 376 001 \0 Q 377 u r r e d . 0136360 S i n c e t h e r e s c 0136400 h e d u l e i t e m r e p l 0136420 a c e s o n e o f t h e 0136440 i n s t r u c t i o n s i n 0136460 t h e c o d e , i t h a s 0136500 a p c v a l u e , w h i 0136520 c h i s t h e a d d r e s 0136540 s o f t h e n e x t i n 0136560 s t r u c t i o n t o b e 0136600 e x e c u t e d . A f t e r 0136620 t h e i n t e r r u p t h 0136640 a s b e e n d e a l t w i 0136660 t h , t h e i f u w i l l 0136700 b e r e s t a r 302 \0 316 006 302 \t 0136720 316 h 302 n 317 Y 303 [ 317 316 303 321 001 340 375 / 0136740 \0 \0 002 023 302 \0 360 360 360 360 376 001 \0 036 351 t 0136760 e d a t t h a t p o i n t 0137000 . \r T h e e x c e p t i o n s 0137020 m a y b e d i v i d e d 0137040 i n t o t h r e e c l a s s 0137060 e s : \r \t 1 ) \t t h e i f u 0137100 h a s n o t ( y e t ) f i 0137120 n i s h e d d e c o d i n g 0137140 t h e n e x t i n s t r u c 0137160 337 t i o n , a n d h e n c e 0137200 i s n o t r e a d y t o 0137220 r e s p o n d t o a p r 0137240 o c e s s o r d e m a n d ; \r 0137260 \t 2 ) \t i t i s n e c e s s 0137300 a r y t o d o s o m e t h 0137320 i n g d i f f e r e n t ( t 0137340 o h a n d l e a n i n t 376 0137360 001 \0 i 367 e r r u p t o r a 0137400 p a g e f a u l t ) ; \r \t 3 ) 0137420 \t t h e r e h a s b e e n 0137440 a h a r d w a r e p r o b l 0137460 e m 235 i t i s n o t w i s 0137500 e t o p r o c e e d . \r S i 0137520 n c e m o r e t h a n o n 0137540 e e x c e p t i o n c o n d 0137560 i t i o n m a y o b t a i n 0137600 a t a t i m e , t h e y 0137620 a r e a r r a n g e d i n 0137640 a f i x e d p r i o r i t 0137660 y o r d e r . E x c e p t 0137700 i o n s a r e c o m m u n i 0137720 200 202 \0 002 W 372 302 023 302 E 326 301 327 031 327 Z 0137740 302 \0 316 M 302 P 001 334 373 / \0 \0 003 003 \0 \0 0137760 361 356 366 366 376 001 \0 302 025 c a t e d o 0140000 n l y b y a d i s p a t c 0140020 h ; h e n c e , a l l e x 0140040 c e p t i o n s h a v i n g 0140060 t o d o w i t h a p a r 0140100 t i c u l a r o p c o d e m 0140120 u s t b e d e t e c t e d 0140140 b e f o r e i t i s h a n 0140160 d e d o f f . T h u s a 0140200 l l t h e b y t e s o f 0140220 a n i n s t r u c 337 t i o n 0140240 m u s t h a v e b e e n f 0140260 e t c h e d f r o m m e m o 0140300 r y a n d b e a v a i l a 0140320 b l e w i t h i n t h e i 0140340 f u b e f o r e i t i s 0140360 h a n d e d o f 376 001 \0 233 306 f . 0140400 \r 3 . 5 C o n t e n t i o n 0140420 a n d d e p e n d e n c i e s 0140440 \r T h e r e i s n o c o n 0140460 t e n t i o n f o r r e s o 0140500 u r c e s w i t h i n t h e 0140520 i f u , a n d t h e o n 0140540 l y c o n t e n t i o n w i 0140560 t h t h e r e s t o f t 0140600 h e D o r a d o i s f o r 0140620 a c c e s s t o t h e m 0140640 e m o r y . T h e i f u 0140660 s h a r e s w i t h t h e 0140700 p r o c e s s o r a s i n g 0140720 l e a d d r e 200 202 \0 002 W 372 001 003 0140740 315 # 302 \0 316 346 302 351 317 S 303 V 317 256 303 261 0140760 001 332 377 Z \0 \0 003 236 302 \0 360 355 362 362 376 001 0141000 \0 274 275 s s b u s t o t h e 0141020 D o r a d o ' s c a c h e , 0141040 b u t h a s i t s o w n 0141060 b u s f o r r e t r i e v 0141100 i n g d a t a . T h e p 0141120 r o c e s s o r h a s h i g 0141140 h e s t p r i o r i t y f o 0141160 r t h e a d d r e s s b u 0141200 s , w h i c h c a n h a n 0141220 d l e o n e r e q u e s t 0141240 p e r c y c l e . T h u s 0141260 u n d e r w o r s t - c a s 0141300 e c o n d i t i o n s t h e 0141320 i f u c a n b e l o c k 0141340 e d o u t c o m p l e t e l 0141360 y ; e v e n t u a l l y , o 0141400 f c 376 001 \0 F ; o u r s e , t 0141420 h e p r o c e s s o r w i l 0141440 l d e m a n d a n i n s t 0141460 r u c 337 t i o n w h i c h i 0141500 s n o t r e a d y a n d 0141520