Вы находитесь на странице: 1из 62

.. , ..

( )

, 2006

:
1.

1.1.
1.2.
1.3.
1.4.
1.5.
2.
2.1.
2.2.
2.3.
2.4.
2.5.
2.6
2.7. -
3.
3.1.
3.2.
3.3.
3.3.1.
3.3.2.
3.3.3. -
3.4 . RISC CISC
3.5. .
3.5.1.
3.5.2. RISC
3.5.3.
3.5.4
(VLIW)
4. -
5.

1.

1.1.
() -
.
,
. () .
.
- , . (
: , ,
..)


. , .
, ,
. (
,
, , GOTO ..
.) -.

, ,
.
,
(). .
, .
3

. 1.1 , .
1.2 . ,
, .

a
f:=ab

/
+

f:=f/c

c
f:=f+d

. 1. 1. () () f = ab/c + d

1. MUL
2. DIV
3.ADD

a,b,c,d,f
)

. 1. 2. () () f = ab/c + d

, , ,
4

. , ,
, ( .)
. , , . , .
, , , ,
. , (, , MPEG - ). ,
, , (
.. Winmodem). , .
1.2.
()
( ):
1. ( ), .
2. (, , , ).
3. ,
( , , ,
..)
4. (, , , , - ..)
5. .
6. , .
( 1 .)
, , 2 : .
. ,
5


.
.
, .
( ).
:
;
;
;
;
.
, , -. :
1. .
2. .
3. .
4. .
5. .
6. .

, . 1.4.



(),
, ,

(
)
(),
. 1.4

6

- ().
(), / , - () , .
70-
.
- . , , ,
( ),
- .
1.3.
. ,
.
1. . . , , .
(productivity, performance, throughput) (), ()
.
(speed, velocity) , () ( ).
. . 1.5
. . 1.5 , . P V.
. 1.5 N ,
( ). ,
(. 1.5),
(V = V).
, N
, P = NP. . 1.3
, N , 7

.
T = Nt, t . V = 1/(Nt) = V/N, V
.
I
D

D'

I2

IN

D'
1

)
D1

I1

...

. 1.5

D1'

,
,

D2
D2' . 2
P = 1/t, P = P, P
.

.
DN
DN'
. N
. , ,
I )
- ( -
).
, , , (,
, , ) ..
(, ),
, , (,
SPEC, iComp), .
, OPS , IPS -

...

, FLOPS . IPS OPS


,
, ,
. FLOPS ,
, ,
(, ) ,
, , .
2. ( ). .
. () ,
- .
,
. , , .
3. . . ,
, , - , . (), .
,
.
4. . (
) .
( )
,
, ,
.
5. . , , - () . , , .
6. . - ,
.
9

.
. , . To, , .
, .

. .

. .
, ,
. .
()
. :
= T / ( + + t),
t - ,
.
,
:
= T / ( + ).

.
7. .
,
( ) :
= P/C.

/, ,
, , .

10

1.4.
, : , , ..
, , :
1. :
- ( );
- ( ) ;
- ( ).
2. ( ):
- ;
- - .
3. , , : ;
; ; ; ; ; ; .
4. :
- ;
- ;
- ;
- .
-
, ,
.
- ,
() (
) / ( ).
- ,
(, ).
5.
, (-), , , -,
- - , . ,
, ,
, , , .
,

11

- ( ), ( ) - ( ).
6. ,
, , , , , .
7. , , . .
8. . , (),
, ( ).

.
, , .
1.5.

.
, .
:
1 (
) - .
2. .
3. .
4. .
5. .
, .
.
- (), .
. 12

- ,
.
- ,


.
N : PN
= P0N, P0 - .
.

.
( N ),
(, ).
(~N/(ln N))
(~log2N) .
, :
1. ( ).
2. (
, )
3. .

.
.
(, ), - . ,

:
= N / [(N 1) f + 1],
N , f ( N > .
(, , ,
.) - .
-
.
- , N
( ),
t ( ). , ,
13

N , , t N, , .
.
:
= N t.
:
= N/(T0 + N' t);
N - , .
0 - , 0 = (N-1)t.
, N>> N

0 << N' t, 1 / t (
). , 0 N' t
( N ) .
, , , . :
( ) ;
;
.
.
( ),
( ),
, - .

:
= (m-1) Q / (mt + T),
- , m- , t - , Q - ( ), - ( ).

, - , . , .

14

2.
2.1. .

(, ) , . ,
, .
:
1) :
- - , . , :
t = t + t + t,
t - , t ,
t ( ), t
;
t = t + t + t,
t - , t , t . , /
.
- ,
, / / .
t, / . , ,
t / .
2)
, (), . , ,
( )
( ).

15

:
E = E/S.
.
3) ,
, ,
, .
(
/, - ..)
, : , , , , , .
, , ,
, , , :
1. :
( , );
() ;
;
() ;
(, ).
2. :
(ROM read-only
memory)
;
(PROM)
, , , , -
;
- (RAM random
access memory) - .
,
-

16

, .
3. :
(t
, )
- (,
);
(t = const ) - (, ).
4. (), :
;
;
;
;
.
5. :
( );
( ).
6. :
;
;
.
7. :
;
;
-;
- .
8. :
;
.
, , ,

,
.
, . , - , ,
.

17

, , ,
. ,
(.2.1).

Rg .
Rg

L1
. .1
,
- ,
L2

. .2
.
-
, .

,
.
HDD
. .
(
)
CD-ROM, MO,
.
.
FDD,

. 2.1
-.
, -. (HDD)
, , .
,
, ( , , CD-ROM ..), , ,
.
, ,
.
, , (
,
), - - ( ) , , .
18

2.2.

, , ,
()
. -, , .
- (
) (, , ..),
, ,
, .
- , ,
. 1D, 2D, 2,5D, 3D, 4D
. 1D 1 , .

, , , , .
2D- (. 2.2) , ,
.

, , . 2,5D (. 2.3), (16, 32, 64 ..) , 2 ,
, .
3D (. 2.4) ,
() , ,
. , . 4D ..

19

Rg A
log2N

DC A
log2N

DI

n
Rg D
n
DO

. 2.2

K2
n0

log 2N/m

DC1
A

n0

Rg A

N/m

log 2N

N'

log 2m

DC2
A

n0=n x m

n0

m
K1
DI

n
Rg D
n

DO

. 2.3
20


log2N/2

DC
A

Rg A

x
N1/2
x

log2N

N1/2

y
log2N/2

DC
Ay

N1/2
y

y
DI

n
Rg D
n
DO

. 2.4.
-
() ,
, , , .
/ .
( , / ),
, .
- , , . , , .
2.3.
( , - LIFO Last In - First Out)
21


(SP-stack pointer). ,
.
- .
, , . , ,
.
, , .. , .
, , ,
- , ,
- , ..
RISC-, , .
2.4.
()
, ,
, . / , ( )
.
,
. () . , .. ,
. , , ,
. , , , , . .
, -,
,
( ), -- . ,
22

(. 2.5). (. 2.5)
, , ,
.

1 2 ...

t = f (N)
N

...

...

...

1 2

N
0

1 2 ...
n
N
N x n

t = f (n1)

...
1 2

...

...
n

n2 < n1

t = f (n2)
N
0

" "

)
. 2.5
(. 2.5) . ,
, () . , , ,
..
, :
1. . .
2. .
23

3. .
4 :
1. ( ) .
2. (). () .
3. ( ) - .
, ,
.
4. - . ,
( ),
, , , ,
,
.
2.5.
,
,
. (, ).
, . () .
.
1. /
.
. ,
, ( , , DDR, DDRII, DDRIII.
,
, ).
2. .
.
24

(t) , , , , , .. t, t.(. . 2.7)

RD1

Rg A .
.

n1

...

...

t
t

RDN

N-1

...

RDN-1

RDN-1
...

0
m
m

RD1

n1

n1

...

RD2

n2

DMUX
n1

t. -

t
t.

RDN

. 2.7

, IBM PC/XT, - Cray
1,2, . (SDRAM).
2.6.
( virtual ) () , () ,
.

.
, -
. , - -

25


, .
, -
. (2-16 ). , .
,
,
.
.
:
1. ( )
2. .
3. ( FIFO)
4. .
5. .
2.7. -
.. - ( .
cache ). , .
( , - , (),
.)
- - , - , 2.1.
- -
(10- ) (10- ),
(). ,
-
.

26

-. 2.1

-
1. 1.

( )
2. 2-16
2. ( )
3. 1000
3. 10
4.
4.

5.
5. -


6. - 6.


7. ..
7. - .
- :
1. :
- (
);
- ( );
- - - ( , ,
, ; = 1
-, = - ).
2. - (..
):
(Write Through - ,
-,
);

27

(Write Back - -, ,
; , ).

16- () 4 ().
.
1. - (-
). - (. 2.8). . 2.8 : RG , RG D ,
.
-

. 0
. 1
. 2
. 3
. 4


.2 0010
.6 0110
.7 0111
.13 1101

RgD

=
=
=
=

0110

RG A

.15
MUX

. 2.8
-,
- :
P = f (Phit),
(Phit , Pmiss ).
, ( ),
, .
:
K1 = 2N! / (2N 2n)!,
28

2N , 2n (
N = 4, n =2, 2N = 16, 2n = 4).
2. - . -
(. 2.9).
, ,
, , , :
K2 = 2N.

.
.
.
.
.

0
1
2
3
4

.0
.13
.6
.7

00
11
01
01

"00"
"01"
"10"
"11"

MUX

RG
.15

.6

01

01

10

RG A

MUX

. 2.9
3. - (-, ) -. - (. 2.10)
( 2s). , ,
. , - - .
:
K3 = 2n (2N-S!) / (2N-S 2n-S)!,
s=0 - (
), s=n - ( ).
29


. 0
. 1
. 2
. 3
. 4


.0 000
.6 011

"0"
"0"

.7
.13

"1"
"1"

011
110

MUX

011
.15

.7
.13

011
110

1
=
=

MUX

. 2.10
-, , :
, -;
;
;
.
(.. cache hit, -
cache miss, ),
-.
-:
t = t + P t + (1-P) (t + t + 2 t)
t ;
P ;
t ;
t .

30

3.
3.1.
, .
, , :
1) :
;
(,
).
2) :
;
;
(-).
3) :
;
-;
.
4) :
();
;
;
( /);
() .
5) ():
(I-,
M-) ;
;

( ) ( ).
6) :
;
() .
7) :
;
;
, .
8) :
31

;
.
9) () :
RISC (Reduced Instruction Set computer );
CISC (Complete Instruction Set Computer
);
CISC RISC- .
10) / :
;
;
;
(VLIW Very Long
Instruction Word) . .
,
,
.
-

3.2.

,
, . 3.1. ,
,
( 2). ( , ) ( , ), ( ),
.
, ( decoupled - ), .
.
, 32

, , -. (),
( , ).

.
RG

RG .

. 3.1

,
, , .. ( ) , :
, .
, ,
..

33

, .. ,
, , , .
, , ( ). , ,
, .
,
,
,
( -).
(-), . -
, , , ..
, , - ,
..
3.3 ()
3.3.1

.
I-, .

() - .
. ,
.
( M-,
) , (, ),
(. 3.2).
34

, . - A B ,
C .


{ x i}

...

...

()

...
{ y j}

. 3.2
,
, .
( ).
, .
, -
,
-
.
3.3.2.
.
35

, ( , , ,
, , ..).
, . (Very Long Instruction Word - VLIW) .

, . ( VLIW
. 3.5.5)
, . ,
,

, .
, , ,
.
3.3.3. -

,
, ,
.

, , . , -, ,
(), -, .
:
a3 a2 a1 a0
b3 b2 b1 b0
+
a3b0 a2b0 a1b0 a0b0
+
a3b1 a2b1 a1b1 a0b1
+
a3b2 a2b2 a1b2 a0b2
+ a3b3 a2b3 a1b3 a0b3
c7 c6 c5 c4
c3 c2 c1 c0
36



4 , A
bi , A bi 1 . ,
:
T = 4(t& + 4*tsm + tsh) ,
t& - 1 ( A bi),
4tsm- , tsm
, 2t&,
tsh - 1 , 2t&.
= 44 t&. ,
A bi ,
,
4 ( ),
, , , , . 3.3. .
a 3b 0
a 2b 0
a 1b 0 a 0b 0
a 2b 1
a 1b 1
a 0b 1
+

a 3b 1

a 3b 2

a 3b 3

c7

a 2b 3

c6

c5

c4

a 2b 2

a 1b 3

a 1b 2

a 0b 2

a 0b 3

c3

. 3.3
37

c2

c1

c0

,
, ,
, .
:
T = t& + (n + m - 2)*tsm,
n , m .
,
, , ,
1 .
13 t&.
,
3 .
, .
:
-
;
- ;
-
-.
. 3.3 6 ( ).
1 4t&, 10 , .
, , 4-5 (
- ). , ,
.

:
(
Abi );
(

);

, ,

.
38

.
3.4. aibj
, N (
8-2,
3-2), ()
.
3-2, , ,
3-2.
, .
,
.
A

. 3.4
8-2
C


AxB

3.4
3.4 . RISC CISC
(ISA Instruction Set Architecture)
,
()
. .
, 70- XX
, , .

, 39

. , , -, , .., - ,
.
,
. CISC Complete Instruction Set Computer
Complex IS . CISC-
x86 Intel ( Motorola 68K
).
CISC
, ( ), , ( ) .
,
( ). .
, ,
, .

.
70- 80-
() MIPS
RISC.
RISC ( Reduced Instruction Set Computer
) , , , , .
RISC:
1. ( 30-40).
2. - (, MOVSB x86).

( RISC - Load-Store Architecture - -).
3. - 32-64 .
40

4. .
5. (,
).
6. 3- , :
add r1, r2, r3 r2 r3 r1.
7. ( . 2).
8.
.
RISC:
1. , , , , ..
2. (
, ).
3. , .
RISC-
DEC Alpha , SGI MIPS, Sun SPARC .
VLIW- ( ..
Intel) RISC, RISC
, CISC-,
RISC-
.
3.5.
3.5.1.
() .
.
:
- ();
- ;
- ( , );
- ;
- ,
( ).
41

,
, .
,
,
, . ( )
( 2).
(

, ( ,
.) , ).
(). , ,
.
,
, () . ,
, .
, , , ..
3.5.2 RISC -
RIS- ARC (A RISC Computer) , SPARC. / 16 /
32- ( 32-
), 32 . - 232 230 .
, :
opp rd, rs1, rs2
; opp , rs1,2 ,
; rd ,
opp rd, rs1, imm13
; imm13 13 .
:
42

1. : ld (load - ) st (store ).
2. : and, or, nor, srl (),
sethi rd, imm22 ( 22 ).
3. : add ().
4. : be, bneg, bcs, bvs, ba (
), be imm22 ( ),
call imm30 , jmpl (ret) .
: 32 , IR (instruction register - ), PC (program counter ), PSR (Program Status
Register - 4 ). 32- .
: , , ,
().
,
. , .
16
, 3.1
3.1.
3.2.
.
3.8.
: Data
Section (); Control Section
();
Main Memory (); Scratchpad- (32
%r0..%r31, 4 %temp0..%temp3, ir, pc); C BUS
MUX
C - ; 43

ir: rd -, rs1, rs2 , i - , ops ; MIR


(); A, B, C ir, MUXA, MUXB, MUXC; Control Store (CS)
(); CSAI ; CS
Address MUX (3 Next
CSAI, Jump - , ,
Decode - ); CBL
; %psr , 4 : n-netgative ( ), z-zero
(), v-overflow (), -carry (); ACK
; : RD/WR / , ALU , JUMP
ADDR .
3.2

44

ARC -.
/14/. .
( ) :
1. (IF - Instruction Fetch).
2. (Instruction Decoding ID).
3. (MEM).
4. (Execute - EX).
5. (Write Back WB).
(MEM) (WB) 2 ld st. . ARC ,
, EX (MEM WB) , .

, .
(Decode)
( , , ).
.
, .. (, 1 2
2 1).

, ( PC.)
(clocks per instruction CPI) 3-4 , , , 1 .
1 .

. ( ) :
45

. 3.8

46

T = 3t + 1,5tmem,
t , = tmem
. 100 t=10. 20. = 3*10 + 1,5*20 =
60. = 1/ = 1/60 = 20 IPS.
( RISC CISC)
. (, Celeron 400 1000 MIPS 100 250MIPS, 10 , ). ? -,
CPI, ,
, .
, - . ,
10 .
, , 2 : ( ). .
3.5.3

, . ( ),
, , .

( )
1/T, T , .
5 !
.
.
,
.
:

47

1. . -
() , (, \ ,
- ). , ( - Pentium), ,
.
2. . :
) , , .
) , ( ).
15%-20% -
. , , , - .
:
, (
, ).

.
,
.
,
. < 2n-1 , n
, ,
.
3.5.4
(VLIW)
,
CPI 1,
.
ARC 4 ,
10 ( 100 ) 100
MIPS. -, Celeron , ,
- 250, - , 1 CPI
- .
1,5-2 CPI.
48

Celeron P6?
,
,
1 (CPI < 1, IPC > 1).

,
.
, , RISC - ,

( FIFO),
.
,

( + +
),
.
,
( )
.. ,
,
.
6-8 ( ).
(Very Long Instruction
Word)
.

( )
, .
,
.
, ,
,
.

(, Itanium
IA-64, VLIW, 10 ),
:
,

;
49

;
.

VLIW, Intel, ,
,

. VLIW-
,

.
,
VLIW
(conditional) . ,
(), ,
- (
c := iif (a>b, a, c)),

.
-

4 -
(To be continued ...)
5
() , , , :
;
/ ;
..
. :
1. () .
(Flinn)
70- .
4 :
- - / ( SISD
- Single Instruction / Single Data ).
(- ). (

50

.). - .
- - /
( SIMD - Single Instruction / Multiple Data ).
, .
( ) ( ). SIMD- (MMX, SSE, SSE2, SSE3 Intel, 3DNow! AMD .)
- - /
( MISD - Multiple Instruction / Single Data ).
, ().
, - .
- - /
( MIMD - Multiple Instruction / Multiple Data ).
, , (),
(,
.)
, , , , MSIMD
MMISD Multi-SIMD, Multi-MISD
SIMD MISD - .
2.
- (IF- instruction flow) ;
(DF- dataflow) .

3. :
( - shared memory);
.
. ,

, UMA Unified Memory Access ( ). ,
(
51

), NonUMA ( ) .
4. :
();
- ( );
.
5. :
( );
( Coarse
Grain) Symmetric MultiProcessor (SMP), MIMD;
(Fine Grain) MIMD, .;
(Instruction Level Parallelism ILP)
- VLIW .
6. :
- ( );
- ;
- ;
- (
) ;
- ( , );
- ;
- .
7. ( - ) :
- () - ;
(
,
).
8. :
- ( );
- (master-slave) .

52

1
() , (
).
( ).
, .. .
( ), (
). ,
. . , , - ,
1 .
.
1) ()
&

0
0
1
1

&

m2

(NOT)

(AND)

(OR)

(NOR)

(XOR)

(NXOR)

X*Y

XvY

XY

XvY

XY

X=Y/(X+Y)

1
1
0
0

0
0
0
1

0
1
1
1

1
1
1
0

1
0
0
0

0
1
1
0

1
0
0
1

0
1
0
1

II)
1) (HS/HA)
HA Half Adder
X HA S

3)

X SM S

Ci

XYZCS
00000
00101
01001
01110
10001
10110
11010
11111

X FA S

XYCS
0000
0101
1001
1110

Y SM C

2)
F Full Adder

Y
Z SM C

:
Xo

Yo

So

Y1

X1

X SM
C

Co
Ci

53

S1
X SM

S
C

Ci

III) (DC CD)


Ao
A1
A2
.
.
.
An

n x 2n (2 x 4; 3 x 8 )

DC D0
D1
D2
.
.
.
D2n-1

A1 A0 D3D2D1D0
0 0 0 0 0 1
0 1 0 0 1 0
1 0 0 1 0 0
1 1 1 0 0 0


.
, .
IV) () (MUX DMUX)
N

Do MUX
D1
D2
.
D0
Dn-1
A0
.

M = [Log2N]

-

.

Di {Aj}


()

k
N

Do
D1
D2
.
Dn-1
A0
.

MUX

k
D0

V) 1
Di
OE

D0

D0 = Di (OE = 1)
D0 = - (OE = 0)

OE

OE

54


VI) (flip-flop) 1 .

:
1) :
RS ; JK ;
D ; T .
2) :



VI.1)

1) RS
R T

2) JK

RS Q(t+1)
00 Q(t)
01
1
10
0
11
-

J T

JK Q(t+1)
00 Q(t)
01
0
10
1
11 !Q(t)

Q(t+1)
S Set
J S
R Reset
K R
3) T ( )
T T

TQ(t+1)
0 Q(t)
1!Q(t)

VI.2)

1)
D T

D
*
0
1

C Q(t+1)
0 Q(t)
1 0
1 1

* - 0 1

.
2)
D TT Q
C

D
*
*
0
1

C Q(t+1)
0 Q(t)
1 Q(t)
/
0
/
1

55

() .
RS, JK .
VII] .
.
:
-
-
-
.
D
RD
WR
SL

RD read
WR write
SL shift left
SR shift right
DL digit left
DR digit right

RG
D0

SR
DL
DR

VIII) . , .
n

D
CTz
WR
+1
-1
RD

D0



( ).
0 2n - 1

56

() () ().
,
(
).

( ) . , , , .
:
1) , , .
2) , .
3)
, .
4) yi, ( - ), , yi : bi = i (Q0, Q1, , Qk), ,
, yi.

.2.1
5) xj = j(Q0, Q1, , Qk) , , .
.
, . ,
.
, , I - .
, .

57


().

:= 0
CNT := n

Y0
x0

B(n)

:
A = 5/16

C := C +A

Y1

B := B / 2
B(1) := C(n) Y
2
C:=C/2
CNT := CNT -1
0


(). A , B , C .
n-1= 3 (n = 4). , . 5.
.

x1
CNT = 0?
1

B = 6/16

A = ,0101

B = ,0110

011
001

Bn

001
000

1
1

000
100

1
0

110

0000
0000
+0101
0101
0010
+0101
0111
0011
0001

0
1

C:=0; CNT=4 (n=4) -


B(4)=0 B ; C CNT=41=3;

CNT<>0 B(4)=1 => C:=C+A


CNT=3-1=2;
CNT<>0 B(4)=1 => C:=C+A
CNT=2-1=1;
CNT<>0 B(4)=0 =>
CNT=1-1=0;

. 2.2
: 30 / 256 ( C, - B,
).
:
,
B, C
CNT ()
,
. , . 2.2 Y0 Y2.
. :
1) .
2) ( ).
( ). . 2.2 x0 x1.

58


(.
2.3) :

. 2.3

b0

Done


,
( ).

X0 - Start
1

Y0 - Load
0

b1

X1 - Bn
1

Y1 - Add

Y2 - ShiftR

b2

. 2.4. (
1

Start).

Db3 .
() :

X2 -Zero
1

Done
. 2.4

b0

59

2.1 ( , )
\

b0

b1

b2

b3

Start

b1

!Start

b0

!X1!X2

b3

b3

b3

!X1X2

b3

b3

b2

X1!X2
X1X2

b2
b2

b3
b3

b0
b0

. :
2.2

b0

00

b1

01

b2

10

b3

11

(D-)
:
2.3

00

01

10

11

( ,
).
60

2.4

.
.
Q1 Q0
Q1 Q0
00
00

D1
D0

!Start

00

01

Start

01

10

Bn

01

11

!Bn

10

11

11

10

!Zero Bn

11

11

!Zero !Bn

11

00

Zero

D1 D0 (
D1 D0 ,
, ;
!) :
D1 = !(!Q1!Q0 + Q1Q0Zero)
D0 = !(!Q1!Q0!Start + Q1Q0Zero + !Q1Q0Bn + Q1Q0!ZeroBn) =
!(!Q1!Q0!Start + Q1Q0Zero + Q1Q0Bn + !Q1Q0Bn) =
!(!Q1!Q0!Start + Q1Q0Zero + Q0Bn)
MaxPlus II
(. 2.6) (. 2.5).

61

. 2.5
Q1

Q1Q0Zero

AND3

inst6

Zero
Q0
Start

INPUT
VCC

!Q1!Q0
Q0

NOT

NOR2

AND2

inst1
Bn

Zero

INPUT
VCC

Q1

NOT

INPUT
VCC

PRN
Q

Q1

inst7

inst9

lpm_decode0

CLRN
inst5

inst2

Q[1..0]

!Q1!Q0!Start
AND2

Start

NOR3

DFF

D
inst10

Q0

AND2

Bn

inst11

data[1..0]
inst19

NOT

inst

Clk

DFF

PRN
Q

inst8
CLRN
inst4

INPUT
VCC

. 2.6

62

Q0

eq0
eq1
eq2
eq3

OUTPUT
OUTPUT
OUTPUT
OUTPUT

Done
Load
Add
ShiftR