You are on page 1of 28

More information: www.itspiritclub.

net

S hc trong my tnh

Translater: huahongquan2007

3
1

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11

Li m u S c du v khng du Php tnh cng v php tnh tr Php tnh nhn Php tnh chia Du chm ng Vn thc t: Du chm ng trong IA-32 Cc sai lm v cm by Kt lun Quan im lch s v nhng iu m rng Bi tp

Nm thnh phn cu to c bn ca mt my tnh

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

3.1

Li m u

Ngn ng ca my tnh gm dy cc bit do cc t c biu din di dng m nh phn. Mc d cc s t nhin 0,1, 2 . c th biu din dng thp phn ln nh phn , th nhgn cn cc loi s khc th sao? V d: S m c biu din th no? Con s ln nht c th biu din trong th gii my tnh? iu g s xy ra nu mt php tnh a ra mt s ln hn s c th biu din? Phn s v s thc th sao?

iu thc s l mt b n: Lm th no m my c th tht s nhn hay chia s? Mc ch ca chng ny l lm sng t b n ny, bao gm: biu din s, thut ton tnh ton, cc b my m thc hin theo nhng thut ton ny v mi tng quan gia tt c cc ch th (instructions). S thu hiu iu ny s gip bn gii thch c cc thc mc khi gp vi my tnh (Nu bn quen thuc vi kiu s nh phn c du, bn c th b qua mc tip theo v i ti mc 3.3 ti trang 12).

3.2

Kiu s c du v khng du

S c th c biu din trong bt c h no; con ngi a thch h thp phn, trong khi , h nh phn l tt nht cho my tnh. trnh s nhm ln, chng ti ghi ch s ten vi s h thp phn v two vi s h nh phn. Trong bt c h no, gi tr ca gi tr ca s d th i l: d x basei

Trong , i bt u t s 0 v tng dn t phi qua tri. V d:

1011two = 1x 23 + 0 x 22 + 1x21 + 1x20 = 11ten 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


(32 bits wide)

11 10 9 8 7 6 5 4 0 0 0 0 0 0 0 0

3 2 1 0 1 0 1 1

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Trong MIPS, 1 word c di 32 bits, nn chng ta c th biu din 232 s loi 32-bit khc nhau. Khong d liu ny trong khong t 0 ti 232 1(4,294,967,295ten):
0000 0000 0000 0000 0000 0000 0000 0000two = 0ten 0000 0000 0000 0000 0000 0000 0000 0001two = 1ten 0000 0000 0000 0000 0000 0000 0000 0010two = 2ten ... ...

1111 1111 1111 1111 1111 1111 1111 1101two = 4,294,967,293ten 1111 1111 1111 1111 1111 1111 1111 1110two = 4,294,967,294ten 1111 1111 1111 1111 1111 1111 1111 1111two = 4,294,967,295ten

M nh phn th khng t nhin vi con ngi ; chng ta c 10 ngn tay nn h 10 l t nhin. Ti sao my tnh li khng dng h thp phn? Trong thc t, my tnh u tin h tr cc php tnh thp phn. Vn l my tnh vn dng tn hiu bt / tt, nn s h thp phn n gin l biu din bng nhiu s nh phn. H thp phn th hin s khng hiu qu ca n nn cc my i sau dng tt c l nh phn, v ch chuyn thnh thp phn trong qu trnh nhp xut. Bi tp

Hardware Software Interface

Chng ta c th biu din cc s nh nhng chui k t ASCII thay cho mt bin nguyn. B nh s tng ln bao nhiu nu s mt t c biu din bng ASCII thay v bin int 32 bit?

p n

Mt t l 1 000 000 000, nn n s cn 10 s ASCII, mi s 8 bits. Nn b nh s tn gp (10x8)/32 = 2.5 ln. Thm vo , phn cng cng tr nhn chia nhng s nh vy s kh khn hn. Nhng kh khn gii thch ti sao nhng chuyn gia v my tnh tin tng rng s nh phn l t nhin

Ta phi nh rng kiu bit trn n gin l i din cho cc s. S thc s c mt s lng v hn cc con s, vi gn nh tt c l s 0 ngoi tr vi con s bn phi cng. Ch l chng ta thng khng lm cc s 0 dn u xut hin. Phn cng c th c thit k cng , tr , nhn , chia nhng con s nh phn ny. Nu kt qu ca nhng php tnh ny khng th c th hin bng nhng bit bn phi cng, th trng hp trn (overflow) s xy ra. N th ph thuc vo h iu hnh v chng trnh quyt nh rng s lm g khi xy ra overflow. Chng trnh my tnh tnh ton c s dng v s am, nn chng ta cn mt cch biu din phn bit s 4

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

dng v s m. Gii php r rng nht l thm mt du m ( - ), iu m c th biu din mt cch thun tin bng mt bit n l; tn ca cch biu din ny l sign and magnitude (du v ln). Cch biu din du v ln c rt nhiu thiu st. u tin, n khng r rng rng s t bit du ch no. Bn tri hay bn phi? Nhng my tnh thi k u th c hai. Th hai, vic thm cho du v ln c th cn mt bc ph t du, bi v chng ta khng th bit trc rng du ph hp s l g? Cui cng, bit du ring ngha l cch du v ln s c c s 0 dng v m, iu ny s dn ti rc ri cho ngi lp trnh l nh. V do , cch du v ln ny sm b loi b. Trong qu trnh tm kim mt cch thay th tt hn, mt cu hi xut hin rng: liu iu g s xy ra nu ta ly mt s khng du tr cho mt s khng du ln hn. Cu tr li l my tnh s c mn nhng bit 0 u , v kt qu l mt chui ca nhng bit 1 u. Thy rng khng h c mt cch thay th no tt hn, cch gii quyt cui cng l la ra mt cch biu din m s lm my tnh n gin hn: dn u bi dy s 0 s l dng, dn u bi dy s 1 l m. Quy tc biu din nhng s nh phn c du ny c gi l b 2 (twos complement):

0000 0000 0000 0000 0000 0000 0000 0000two = 0ten 0000 0000 0000 0000 0000 0000 0000 0001two = 1ten 0000 0000 0000 0000 0000 0000 0000 0010two = 2ten ... ...

0111 1111 1111 1111 1111 1111 1111 1101two = 2,147,483,645ten 0111 1111 1111 1111 1111 1111 1111 1110two = 2,147,483,646ten 0111 1111 1111 1111 1111 1111 1111 1111two = 2,147,483,647ten 1000 0000 0000 0000 0000 0000 0000 0000two = 2,147,483,648ten 1000 0000 0000 0000 0000 0000 0000 0001two = 2,147,483,647ten 1000 0000 0000 0000 0000 0000 0000 0010two = 2,147,483,646ten ... ...

1111 1111 1111 1111 1111 1111 1111 1101two = 3ten 1111 1111 1111 1111 1111 1111 1111 1110two = 2ten 1111 1111 1111 1111 1111 1111 1111 1111two = 1ten 5

More information: www.itspiritclub.net

S hc trong my tnh
31

Translater: huahongquan2007

Mt na ca nhng con s trn, t 0 ti 2,147,483,647ten(2 1), dng cch biu din nh trc y. Nhng kiu bit pha sau (t 1000 . . . 0000two) biu din hu ht cc s m t 2,147,483,647ten(1000 . . . 0001two) ti 1ten (1111 . . . 1111two). Cch biu din b 2 vn c mt con s m, 2,147,483,648ten, s m khng c s dng tng ng vi n. S thiu cn bng trn l mt mi lo ngi i vi nhng lp trnh vin l nh, nhng m cch c du v ln th c vn cho c lp trnh vin v ngi thit k phn cng. Do , cc my tnh thi nay u dng biu din b 2 cho s c du. Cch biu din b 2 c mt thun li rng tt c cc s m c mt bit 1 trong nhng bit bn tri cng. Kt qu l, phn cng cn ch cn phi kim tra bit ny xem s tng ng l dng hay m ( 0 c gi nh l dng). Bit ny c gi l bit du (sign bit). Bng cch nhn thy c vai tr ca bit du, chng ta c th biu din s dng v s m 32 bit nh sau: (x31 x 2 ) + (x30 x 2 ) + (x 29 x 2 ) + . . . + (x1 x 2 ) + (x0 x 2 ) Bit du c nhn vi 231, v phn bit cn li th c nhn vi phin bn dng ca gi tr tng ng. Bi tp Chuyn i t nh phn sang thp phn Gi tr thp phn ca s b 2 (32-bit) sau l g? 1111 1111 1111 1111 1111 1111 1111 1100two p n Tnh ton theo mu sau: (1 x 231) + (1 x 230) + (1 x 229) + . . . + (1 x 22) + (0 x 21) + (0 x 20) = 231 + 230 + 229
+...+ 22 + 0 + 0
31 30 29 1 0

= 2,147,483,648ten + 2,147,483,644ten = 4ten Chng ta s thy cch rt gn hn sau. Ging nh mt php tnh trn s khng du c th gy trn b nh khi biu din kt qu, php tnh trn s b 2 cng c th xy ra tng t. Trn b nh c th xy ra khi bit bn tri cng ca m nh phn th khng ging nh nhng dy s v hn bn tri (ngha l bit du khng ng) : mt s 0 bn tri khi s l mt s m hay mt s 1 khi s l s dng.

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Hardware Software Interface

S c du v khng du p dng khc nhau trong php ton. Mt hm load s c du th sao chp bin du mt cch lp i lp li in kn ch ca register gi l sign extension nhng mc ch ca n l t ng cch biu din trong register . Cn hm load s khng du th ch n gin l t tt c cc s 0 vo phn bn tri ca d liu, do s c biu din bi s khng du. Khi load mt s 32-bit vo register 32 bit, vn th phi bn ci; cch load s c du v khng du th ging nhau?. MIPS h tr 2 cch load byte vo: load byte (lb) x l tng byte nh mt s c du v do sign-extend ( m rng du) lp y 24 bit cn li; trong khi load byte unsigned (lbu) hot ng nh mt bin nguyn khng du. V chng trnh C gn nh lun lun dng bytes biu din k t hn l xem bytes nh nhng bin nguyn khng du rt ngn, thc t lbu th c dng khi khng mun gi tr ca cc bit cn li ging bit du

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Hardware Software Interface

Tng t nh th, load half (lh) x l nhng halfword (16-bit) nh mt s c du v sign-extend ( m rng du) lp y 16 bit cn li, trong khi load half work unsigned (lhu) hot ng vi bin nguyn khng du. Khng ging nh nhng s c ni trn, a ch nh (memory addresses) thng bt u bi s 0 v tip tc ti a ch ln nht. Ni cch khc, ta khng h c a ch m. Do , chng trnh thnh thong s mun x l s c th m hoc dng v i khi ch mun x l s dng. Mt vi ngn ng lp trnh phn nh s khc bit ny. C l mt v d - chia ra integers ( khai bo nh int trong chng trnh) v unsigned integers ( unsigned int). Mt vi phong cch lp trnh C cn khai bo signed int cho r rng. Nhng ch th (instructions) so snh phi x l s phn bit ny. Mt kiu bit m c s 1 nh l s c ngha nht i din mt s m v tt nhin, s nh hn bt k mt s dng no c s 0 nh s c ngha nht. Vi nhng s nguyn khng du th khc, s c s 1 nh l s c ngha nht s ln hn bt k s no bt u bng mt s 0.( chng ta s tn dng vic 2 ngha ny ca bit c ngha nht gim chi ph ca vic kim tra gii hn chui trong vi trang na ?). MIPS cn a ra 2 phin bn ca php so snh set on less than gii quyt s thay th ny . Set on less than (slt) and set on less than immediate (slti) hot ng vi s nguyn c du. S nguyn khng du th c so snh bng set on less than unsigned (sltu) and set on less than immediate unsigned (sltiu).

Bi tp

So snh c du >< So snh khng du Gi s register $s0 cha dy nh phn


1111 1111 1111 1111 1111 1111 1111 1111two

V register $s1 cha dy nh phn


0000 0000 0000 0000 0000 0000 0000 0001two

Gi tr ca register $t0 v $t1 sau 2 instruction ny s l g


slt sltu $t0, $s0, $s1 # signed comparison $t1, $s0, $s1 # unsigned comparison

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

p n

Gi tr trong register $s0 biu din 1 nu n l mt bin nguyn v 4,294,967,295ten nu n l mt bin nguyn khng du.
Gi tr trong register $s1 biu din 1 trong c 2 trng hp. Do , register $t0 s c gi tr l 1 (v 1ten< 1ten) v register $t1 s c gi tr 0 (v 4,294,967,295ten > 1ten)

Trc khi i ti php tnh cng v tr, hy th vi cc lm tt khi lm vic vi s b 2. Cch lm tt(short cut) u tin l mt cch nhanh lm m mt s nh phn dng b 2. Cch n gin l o ngc cc bit 0 thnh 1 v cc bit 1 thnh 0, sau cng 1 vo kt qu. Cch lm tt ny th da trn s quan st thy rng tng ca mt s v nghch o ca n s l 111 . . . 111two i din cho -1. V x + x= 1, do : x + x + 1 = 0 or x + 1 = x.

Bi tp

Cch ngn gn biu din s m : Hy lm m s 2ten v sau kim tra kt qu bng cch lm m s 2ten.

p n

2ten = 0000 0000 0000 0000 0000 0000 0000 0010two o cc bit v cng kt qu cho 1:
1111 1111 1111 1111 1111 1111 1111 1101two + = = 1two 1111 1111 1111 1111 1111 1111 1111 1110two 2ten

Kim tra bng cch lm m s 2ten :


1111 1111 1111 1111 1111 1111 1111 1110two

o cc bit v cng kt qu cho 1:


0000 0000 0000 0000 0000 0000 0000 0001two + 1two

= =

0000 0000 0000 0000 0000 0000 0000 0010two 2ten

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Cch lm tt (shortcut) th hai gii thiu cho chng ta cch chuyn mt s nh phn i din bng n bits thnh mt s i din vi nhiu hn n bits. V d: Trng tc thi (immediate eld) trong cc ch th (instructions) load, 15 15 store, branch, add, v set on less than cha mt s b 2 (16-bit), i din s t 32,768ten (2 ) to 32,767ten (2 1). cng tc thi vi mt register 32-bit, my tnh phi chuyn s 16-bit thnh s 32-bit tng ng. Cch lm ly nhng bit c ngha nht t mt s nh bit du v sao chp n lp y nhng bit mi trong s ln hn. Nhng bit c th n gin ch l sao chp vo phn bn phi ca s mi. Cch lm tt ny thng c gi l m rng du (sign extension) .

Bi tp

Cch m rng du: Chuyn i s 16-bit ca 2ten v 2ten thnh s 32-bit

p n

Phin bn 16-bit ca s 2 l:
0000 0000 0000 0010two = 2ten S ny c chuyn thnh s 32-bit bng cch sao chp 16 gi tr ca bit c ngha nht (bit du) (0) v t n vo na bn tri ca s. Na bn phi l gi tr c. 0000 0000 0000 0000 0000 0000 0000 0010two = 2ten

By gi hy lm m phin bn 16-bit ca s 2 bng cch lm trc. Do


0000 0000 0000 0010two

tr thnh:
1111 1111 1111 1101two + 1two

= 1111 1111 1111 1110two To phin bn 32- bit ca s m bng cch sao chp bit du 16 ln v t n vo bn tri: 1111 1111 1111 1111 1111 1111 1111 1110two = 2ten

K thut ny hot ng bi v s b 2 dng c mt dy v hn cc s 0 bn tri v s b 2 m c mt dy v hn cc s 1. Kiu bit nh phn i din mt s th du i nhng bit dn u va vi rng ca phn cng; vic m rng bit du ch n gin l phc hi chng tr li.

10

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Cch lm tt (shortcut) th ba gim chi ph ca vic kim tra 0 x < y, trong vic kim tra gii hn ca mt dy s. Cha kho l s nguyn m trong kiu b 2 th ging nh l mt s ln trong kiu khng du; do bit c ngha nht l bit du trong kiu u nhng li l mt phn ln ca s trong kiu sau. Do , vic kim tra s khng du x < y cng chnh l kim tra xem x c m hay khng. Bi tp Kim tra gii hn: Dng cch trn gim chi ph cho vic kim tra gii hn : nhy (jump) n IndexOutOfBounds nu $a1 $t2 hay nu $a1 m.

p n

Code kim tra ch dng sltu lm c hai vic kim tra:


sltu $t0,$a1,$t2 # reg tm $t0 = 0 nu k >= di chui or k<0 beq $t0,$zero,IndexOutOfBounds # Nu $t0 = 0 th nhy ti IndexOutOfBounds

Tm tt:
chnh ca mc 3.2 ny l chng ta cn th hin c bin dng v m trong mt t ca my tnh v d tn thnh hay phn i th s la chn t nm 1965 l s dng php b 2. Hnh 3.1 ni thm v ngn ng hp ng MIPS c ni ti trong mc ny.

Check Yourself

Loi bin no c th cha s m chim b nh nht? 1. int in C 2. string in C 3. string in Java (which uses Unicode)

11

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

MIPS operands Name


32 registers 2 memory words
30

Example
$s0$s7, $t0$t9, $gp, $fp, $zero, $sp, $ra, $at Memory[0], Memory[4], . . . , Memory[4294967292]

Comments
Fast locations for data. In MIPS, data must be in registers to perform arithmetic. MIPS register $zero always equals 0. Register $at is reserved for the assembler to handle large constants. Accessed only by data transfer instructions. MIPS uses byte addresses, so sequential word addresses differ by 4. Memory holds data structures, such as arrays, and spilled registers, such as those saved on procedure calls

MIPS assembly language


Category
Arithmetic subtract add immediate

Instruction
add

Example add $s1,$s2,$s3 sub $s1,$s2,$s3 addi $s1,$s2,100 lw $s1,100($s2) sw $s1,100($s2) lhu $s1,100($s2) sh $s1,100($s2) lbu $s1,100($s2) sb $s1,100($s2) lui $s1,100 and $s1,$s2,$s3 or $s1,$s2,$s3 nor $s1,$s2,$s3 andi $s1,$s2,100 ori $s1,$s2,100 sll $s1,$s2,10 srl $s1,$s2,10 beq $s1,$s2,25 bne $s1,$s2,25 slt $s1,$s2,$s3 slti $s1,$s2,100 sltu $s1,$s2,$s3 sltiu $s1,$s2,100

Meaning

Comments

Data transfer

Logical

Conditional branch

Unconditional jump

Load word Store word Load half unsigned Store half Load byte unsigned Store byte Load upper immediate And Or Not Add immediate Or immediate Shift left logical Shift right logical Branch on equal Branch on not equal Set on less than Set on less than immediate Set on less than unsigned Set on less than immediate unisnged Jump Jump register Jump and link

12

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Chi tit hn: B hai c ly tn t lut rng tng khng du ca mt s n-bit v s m ca n l 2n; do , phn b hay s m ca mt s b

2 x s l 2n x.
Mt cch biu din thay th th ba l B mt. S m ca mt s b mt c tnh bng cch o ngc cc bit, t 0 sang 1 v t 1 sang 0, iu ny gii thch tn ca n v phn b ca x l 2n x 1. cng l mt s c gng tm gii php tt hn cho php du v ln v nhiu my tnh dng cc b mt ny. Cch biu din ny cng tng t vi b hai ngoi tr rng n vn cn hai s 0: 00 . . . 00two l s dng 0 v 11 . . . 11two l s m 0. S m ln nht l 10 . . . 000two i din cho 2,147,483,647ten v do s dng v s m th cn bng nhau. B mt cn thm mt bc ph na tr mt s. Do , b hai chim u th hn. Cch biu din cui cng chng ta s tm hiu k hn trong phn du chm ng l biu din s m nht bi 00 . . . 000two v s dng nht bi 11. . . 11two, v 0 th c gi tr l 10 . . . 00two. y gi l biased notation . since it biases the number such that the number plus the bias has a nonneg-ative representation ( dch khng c ). Chi tit hn: i vi s thp phn c du, chng ta dng du biu din s m bi v khng c gii hn kch thc ca mt s thp phn. Khi c mt kch thc c nh, nhng dy bit nh phn v thp lc phn c th m ho du, do , chng ta thng khng dng du + hay vi biu din nh phn v thp lc phn.

3.3

Php tnh cng v tr

Php cng l rt cn thit trong mt my tnh. Nhng con s c th c cng tng bit mt t phi sang tri, vi phn nh c chuyn qua cho s tip theo bn tri, nh chng ta lm bng tay. Php tr th dng php cng: n gin l cng vi s m

Bi tp

Php cng v tr nh phn Hy th cng 6ten cho 7ten trong nh phn v sau ly 7ten tr cho 6ten trong nh phn

13

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

p n

Php cng: 0000 0000 0000 0000 0000 0000 0000 0111two = 7ten + = 0000 0000 0000 0000 0000 0000 0000 0110 = 6
two ten

0000 0000 0000 0000 0000 0000 0000 1101two = 13ten

Php tr c th lm trc tip nh sau: 0000 0000 0000 0000 0000 0000 0000 0111two = 7ten = 0000 0000 0000 0000 0000 0000 0000 0110 = 6
two ten

0000 0000 0000 0000 0000 0000 0000 0001two = 1ten

Hoc l cng vi s b 2 ca 6 0000 0000 0000 0000 0000 0000 0000 0111two = 7ten + = 1111 1111 1111 1111 1111 1111 1111 1010two = 6ten 0000 0000 0000 0000 0000 0000 0000 0001two = 1ten

Chng ta ni trc y rng vic trn b nh c th xy ra khi kt qu ca php tnh th khng th hin c bi phn cng, trong trng hp ny l 32-bit. Vy khi no th trn b nh s xy ra trong lc cng? Khi cng vi s khc du, trn b nh (overflow) khng th xy ra. Kt qu ca php cng khng th no ln hn mt trong hai ton hng. V d 10 + 4 = 6 . Do , kt qu th cha trong 32 bits. Rng buc vi trn b nh trong php tr cng tng t, nhng n ch l nguyn l ngc li: khi du ca ton hng ging nhau, trn b nh khng th xy ra. hiu iu ny x y = x + (y): bi v tr bng cch lm m ton hng th hai sau cng li. Do , khi chng ta tr ton hng c cng du, chng ta i ti vic cng ton t khc du. T on trc, chng ta bit rng trn b nh khng th xy ra trong c hai trng hp. Chng ta kim tra th khi no trn b nh khng th xy ra trong php tr v php cng, chng ta vn cha c cu tr li rng : lm sao nhn thy c trn b nh xy ra. Trn b nh xy ra khi chng ta cng hai s dng v kt qu l s m hoc ngc li. R rng l, khi cng hoc tr hai s 32-bit to ra mt kt qu m cn ti 33 bit biu din. Vic thiu i bit th 33 ngha l trn b nh xy ra. Do chng ta cn thm mt bit, ch c bit du b sai. iu ny c ngha l trn b nh tin hnh trn bit du. Trn b nh xy ra trong php tr khi chng ta tr ly s dng tr cho s m v kt qu l mt s m hay khi chng ta ly s m tr mt s dng v kt qu l mt s dng. Hnh 3.3 s a ra cc trng hp c th xy ra trn b nh. 14

More information: www.itspiritclub.net


Operation A+B A+B AB AB

S hc trong my tnh
Operand A 0 <0 0 <0 Operand B 0 <0 <0 0

Translater: huahongquan2007
Result indicating overow <0 0 <0 0

Hnh 3.3: cc trng hp c th xy ra trn b nh

Chng ta thy cch nhn bit trn b nh cho nhng s b hai trong my tnh. Th cn nhng s nguyn khng du th th no ? S nguyn khng du th thng dng cho a ch ca b nh, ni m trn b nh c th c l i. Nh thit k my tnh do cung cp mt cch l i trn b nh trong mt s trn hp v nhn bit chng trong nhng trng hp khc. Gii php ca MIPS l c hai ch th (instructions) ton hc a ra 2 la chn: Add (add), add immediate (addi), v subtract (sub) gy ra nhng ngoi l (exceptions) trong trn b nh (overflow) Add unsigned (addu), add immediate unsigned (addiu), and subtract unsigned (subu) khng gy ra nhng ngoi l (exceptions) trong trn b nh (overflow)

Bi v C b qua trng hp trn b nh, trnh bin dch MIPS C s lun to ra mt phin bn khng du c cc ch th (instructions) cng addu, addiu v subu bt k loi d liu no. Trnh bin dch MIPS Fortran th chn nhng ch th (instructions) ph thuc v loi d liu ca ton hng.

Hardware Software Interface

Nh thit k my tnh phi quyt nh lm th no x l trn b nh khi tnh ton. Mc d vi ngn ng nh C th l i trn b nh bin nguyn, ngn ng nh Ada v Fortran th yu cu chng trnh phi ch . Ngi lp trnh hoc mi trng lp trnh phi quyt nh phi lm g khi trn b nh xy ra. MIPS nhn trn b nh (overflow) nh mt s ngoi l (exception), cn c gi l s gin on (interrrupt) i vi nhiu my. Mt s ngoi l hay mt s gin on v c bn l mt s gi hm khng mong i. a ch ca ch th (instruction) b trn b nh s c lu tr trong mt register, v my tnh s nhy ti mt a ch c nh ngha trc yu cu mt th tc ph hp cho s ngoi l . a ch ca ch th b gin on s c lu li trong mt s trng hp, chng trnh c th hot ng tip tc sau khi on chng trnh ng c chy. (Cc chng sau s ni r hn).

15

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

MIPS c mt register gi l exception program counter (EPC) cha a ch ca ch th m to ra s ngoi l. Ch th move from system control (mfc0) l c dng sao chp EPC vo mt general-purpose register phn mm MIPS c s la chn tr v thng qua mt ch th jump.

Tm tt: chnh ca mc l s t do trong s biu din kch thc c hn ca mt s trong my tnh ngha l mt php ton c th to ra kt qu qu ln lu va vo mt kch thc s c nh. Ta d xc nh s trn b nh trong cc s khng du, mc du chng gn nh lun c l i bi v chng trnh khng mun xc nh s trn b nh cho php tnh a ch, vic dng thng dng nht vi s t nhin. S b hai a ra mt thch thc ln, mc d vi h thng phn mm cn vic xc nh trn b nh, nn vo thi im ny, tt c my tnh u c mt cch xc nh n . Hnh 3.4 a ra b sung cho cu trc MIPS.

Check Yourself

Vi ngn ng lp trnh cho php cc php ton s nguyn b hai trong cc bin c khai bo bytes v half. Ch th MIPS no c th c dng? 1. Load vi lbu, lhu; tnh ton vi add, sub, mult, div; sau store dng sb, sh. 2. Load vi lb, lh; tnh ton vi add, sub, mult, div; v store dng sb, sh. 3. Load vi lb, lh; tnh ton vi add, sub, mult, div, dng and nh du kt qu ti 8 hoc 16 bits sau mi ln chy v sau lu vi sb, sh

Son chi tit: Trong on trc, chng ta ni rng bn sao chp EPC vo mt register thng qua mfc0 v sau tr v on code b gin on thng qua mt ch th jump register. iu ny dn ti mt cu hi th v: u tin bn phi chuyn gi tr EPC vo trong mt register dng vi jump register, lm th no jump register c th tr v on c b gin on v phc hi gi tr gc ca tt c cc register? Bn c th phc hi gi tr register c trc v sau xo gi tr tr v ca EPC m bn dng lu trong mt register jump, hoc l bn c th phc hi tt c register tr register c cha a ch tr v bn jump! Khng la chn no trong th tho mn c. cu phn cng khi tnh trng tin thoi lng nan ny, lp trnh vin MIPS ng o ngc register $k0 v $k1 cho h iu hnh; nhng register ny th khng c phc hi trong s gin on ( hay s ngoi l). Cng nh trnh bin dch MIPS trnh dng register $at assembler c th dng n nh mt register tm, trnh bin dch cng trnh dng register $k0 v $k1 lm chng kh dng cho h iu hnh.

16

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

3.4

Php Nhn

Chng ta hon thnh vic gii thch cho php tnh cng v php tr. By gi chng ta sn sng xy dng mt php tnh gy nhiu tranh ci hn Php nhn. u tin chng ta hy n li php tnh nhn cho s thp phn nhc nh chng ta v cc bc v tn ca cc ton hng. cho iu ny tr nn n gin v r rng hn, chng ti gii hn s thp phn trong v d ny ch c s 0 v 1. Nhn 1000ten vi 1001ten: Multiplicand Multiplier x 1000ten 1001ten 1000 0000 0000 1000 Product 1001000ten

Ton hng u tin gi l s b nhn (multiplicand )v s th hai gi l s nhn (multiplier). Kt qu cui cng gi l product. Nh bn c th nh li, thut ton hc c l ly tng ch s ca s nhn t phi sang tri, nhn vi s b nhn bng mt s ca s nhn v dch kt qu sang bn phi mt ch s. iu chng ta thy u tin l s lng ch s ca kt qu th ln hn s lng ch s trong c s nhn v s b nhn. Trong thc t, nu chng ta l i bit du, chiu di ca php nhn n-bit v m-bit th c kt qu l n + m bits. Trong , n + m bit l s lng cn thit biu din tt c cc kt qu c th c. Do , ging nh cng, php nhn cn i ph vi vic trn b nh, bi v chng ta thng mun mt kt qu 32-bit nh l kt qu ca php nhn 2 s 32 bit. Mc d v d thp phn trn ch dng 0 v 1, php nhn nh phn th lun lun phi dng 0 v 1 v do , lun ch c 2 s la chn.

17

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

By gi chng ta n li php nhn c bn, bc tip theo l cung cp mt phn cng c th nhn mt cch ti u. Chng ti tin tng rng bn s hiu su tt hn thng qua vic xem qu trnh pht trin ca my tnh nhn v thut ton qua mi th h ca s pht trin. By gi, hy gi s rng chng ta ch nhn hai s dng.

Chui cc phin bn ca thut ton nhn


Thit k ny bt chc thut ton m chng ta hc trng trung hc c th hin trong hnh 3.5. Chng ti v cc phn cng vi d liu chy t trn xung ging vi cch bt-v-giy. Hy gi s rng s nhn trong mt register nhn(Multiplier) 32-bit v register kt qu 64-bit(Product) c khi gn l 0. T v d trn, r rng l chng ta s cn phi dch chuyn s b nhn sang bn tri mt s trong mi bc n s c cng vo kt qu trung gian. Qua 32 bc, mt s b nhn 32-bit s c dch chuyn sang tri 32 bit. Do chng ta cn mt register b nhn (multiplicand) 64-bit, khi gin vi 32-bit s b nhn na bn phi v 0 na bn tri. Register ny khi c dch chuyn sang tri 1 bit mi bc dng hng s b nhn vi php cng tch lu thnh register kt qu 64-bit.

18

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Hnh 3.6 s cho thy 3 bc c bn cn thit cho mi bit. Bit t c ngha nht ca s nhn (Multiplier0) quyt nh rng liu s b nhn c c cng vo trong register Product hay khng?. Php dch bit bc 2 c nhim v di chuyn ton hn trung gian sang bn tri, nh khi nhn bng tay. Php dch bit sang phi trong bc 3 cho chng ta ly bit tip theo ca s nhn kim tra trong vng lp k tip. 3 bc ny c lp i lp li 32 ln thu c kt qu. Nu mi bc tn mt clock cycle, thut ton ny s cn khong 100 clock cycles nhn hai s 32-bit. Mc xut hin ca php nhn th khc nhau gia cc chng trnh, nhng php cng v hp tr th c th thy bt c u vi tn s xut hin cao hn t 5 ti 100 ln so vi php nhn. Cho nn, trong nhiu chng trnh, php nhn tn nhiu clock cycle m khng c nh hng c li cho hiu sut chng trnh.

19

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Thut ton ny c th d dng c tin ch tn 1 clock cycle mi bc. Vic tng tc do vic thc hin cc lnh song song: s b nhn v s nhn c dch bit trong khi s b nhn c cng vo kt qu nu bit ca s nhn l 1. Phn cng ch phi m bo rng n kim tra ng bit ca s nhn v ly phin bn trc khi b dch bit ca s b nhn. Phn cng th thng c ti u hn chia u rng ca php cng v register bng cch ni no cc register c b trng. Hnh 3.7 ch ra thut ton ti u .

Hardware Software Interface

Thay th thut ton bng cch dch bit cng c th xy ra khi nhn vi mt hng s. Bi v mt bit bn tri i din mt s ln hn gp 2 ln trong nh phn, dch bit sang tri cng c ngha l nhn s cho 2.

Bi tp

Thut ton nhn. Dng nhng s 4 bit tit kim dung lng, hy nhn 2ten x 3ten, or 0010twox0011two

20

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

p n (Translater: ch ny mnh sa li p n theo cch lm ca thy Tun Nam) Bc lp S nhn (Multiplier) 0011 0001 0000 0000 0000 S b nhn (Multiplicand) 0000 0010 0000 0100 0000 1000 0001 0000 0010 0000 Kt qu (Product) 0000 0000 0000 0010 0000 0110 0000 0110 0000 0110

1 2 3 4

Php nhn s c du (//phn ny dch khng k lm) Chng ta x l vi s nh phn. Cch d nht hiu lm sao x l s c du l u tin chuyn s nhn v s b nhn thnh s dng v lu li du. Thut ton ny khi s ch chy 31 ln. Nh chng ta hc trung hc, chng ta cn lm m kt qu nu m cc du ban u khng ging nhau. iu a ti thut ton cui cng s hot ng vi s c du. Chng ta nn nh rng cc s m chng ta ang x l th c mt s lng hu hn cc con s v chng ta ch biu din chng vi 32 bits. Do , cc bc dch bit s cn phi m rng du ca kt qu cho cc s c du. Khi thut ton hon thnh, cc s s c kt qu 32 bit

Php nhn nhanh (Faster Multiplication) Moores Law cung cp nhiu ti nguyn cc nh thit k phn cng c th xy dng mt phn cng nhn nhanh hn. S b nhn c c cng vo hay khng th c bit vo u ca php nhn bng cch nhn vo mi 32 bit ca s nhn. Php nhn nhanh hot ng bng cch cung cp mt n v cng 32-bit cho mi bit ca s nhn: mt u vo l s b nhn AND vi mt bit s b nhn; u vo cn li l kt qu ca php cng trc. Hnh 3.9 s cho thy chng hot ng nh th no. Ti sao thut ton ny nhanh hn? # on ny cha dch hon chnh , mong c s ng gp ca cc bn The sequential multiplier pays the overhead of a clock for each bit of the product. This multiplier array of adders does not. A second reason is this large collection of adders lends itself to many optimizations to gain further improvements. One example is using carry save adders to add such a large column of numbers; see Exercises 3.24 and 3.49. A third reason is that it is easy to pipeline such a design to be able to support many multiplies simulta-neously (see Chapter 6). #

21

More information: www.itspiritclub.net Php nhn trong MIPS

S hc trong my tnh

Translater: huahongquan2007

MIPS cung cp mt cp register 32-bit ring bit cha kt qu 64-bit gi l Hi v Lo. to ra mt kt qu c du hoc khng du ph hp, MIPS c hai ch th(instruction) : multiply (mult) v multiply unsigned (multu). ly kt qu 32-bit nguyn, ngi lp trnh dng move from lo (mflo). Trnh assember MIPS s to mt ch th gi (pseudoinstruction) nhn. V to ch th mflo v mfhi t kt qu vo trong register. Tm tt: Php nhn c th c thc hin n gin bng vic dch bit v cng bt ngun t php nhn c bn hc trung hc. Trnh bin dch cn c th dng ch th dch bi nhn cho bi s ca hai.

Hardware Software Interface

Cc ch th(instruction) nhn ca MIPS th l i s trn b nh, do , n ph thuc vo phn mm kim tra xem liu kt qu c qu ln cha trong 32 bits. S khng c trn b nh nu Hi l 0 cho mulu hoc cc bit du c sao chp ca Lo cho mult. Ch th move from hi (mfhi)c th c dng chuyn Hi vo mt register chung kim tra overflow.

22

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

23

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

3.5

Php Chia

Php ton o ca php nhn l php chia, mt php ton thm ch cn t dng hn v i khi cn k quc. N thm ch cn a ra c hi to ra mt php tnh khng ng: chia cho 0. Hy bt u bng mt v d ca php chia trong h thp phn gi nh li tn ca cc ton hng v thut ton chia hc trung hc. Nhm n gin, chng ti gii hn s thp phn ch dng 0 v 1. V d ny s chia 1,001,010ten by 1000ten: 1001ten Divisor 1000ten 1001010ten 1000 10 101 1010 1000
10ten

Quotient Dividend

Divisor: S chia Quotient : Kt qu Dividend: S b chia Remainder: s d

Remainder

Hai ton hng (Dividend: S b chia; v Divisor: S chia) v kt qu (quotient) ca php chia, theo sau bi kt qu th hai gi l s d( remainder). Mt cch khc biu din mi quan h ca cc thnh phn l: Dividend = Quotient x Divisor + Remainder Thut ton chia c bn trng trung hc c xem mt s c th b tr ti mc ln nh th no, to mt s kt qu trong mi ln tr. S thp phn c chn trong v d ch dng 0 v 1, nn d dng nhn ra s b chia c th c chia bi s chia bao nhiu ln. S nh phn cha ch c 0 hot 1 nn php chia nh phn th gii hn ti hai s la chn. Hy gi s rng c hai s chia v s b chia u dng v do , kt qu v s d cng dng. Cc ton hng ca php chia v kt qu u l 32-bit v chng ta ang l i bit du.

Thut ton v phn cng cho mt php chia Hnh 3.10 th hin phn cng gi lp thut ton chia trung hc. Chng ta bt u vi register kt qu 32-bit c t l 0. Mi ln lp ca thut ton th cn di chuyn s chia sang phi mt ch s, nn chng ta bt u vi s chia c t trong na phi ca register s chia 64 bit v dch n sang phi mt bit mi bc dng hng vi s b chia. Register cha s d th c khi gn vi s b chia. Hnh 3.11 th hin 3 bc ca thut ton chia th nht. Khng ging nh con ngi, my tnh khng thng minh bit trc l liu s chia c nh hn s b chia hay khng. N u tin phi tr s chia trong bc 1; nh rng y l cch chng ta thc hin php so snh trong ch th (instruction) set on less than. Nu kt qu l dng th s chia nh hn hoc bng s b chia nn chng ta to mt bit 1 trong kt qu (bc 2a). Nu kt qu l m, bc k tip l phc hi li gi tr c bng cch cng s chia tr li s d v to mt s 0 kt 24

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

qu (bc 2b). S chia th c dch bit sang phi v khi chng ta lp li . S d v kt qu s c tm thy register trng tn sau khi qu trnh lp kt thc.

25

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

26

More information: www.itspiritclub.net

S hc trong my tnh

Translater: huahongquan2007

Bi tp

Thut ton chia Dng phin bn 4bit ca thut ton tit kim giy, hy c chia 7ten cho 2ten, hoc 0000 0111two by 0010two.

p n (Translater: ch ny mnh sa li p n theo cch lm ca thy Tun Nam) Step 1 2 3 4 5 Remainder 0000 0111 0000 0111 0000 0111 0000 0111 0000 0011 0000 0001 Divisor 0010 0000 0001 0000 0000 1000 0000 0100 0000 0010 0000 0001 Quotent 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0000 0011

27

More information: www.itspiritclub.net Php chia c du

S hc trong my tnh

Translater: huahongquan2007

T u ti gi chng ta l i php chia vi s c du. Gii php n gin nht l nh du ca s b chia v s chia sau lm m gi tr ca kt qu nn du khng ging nhau. Son chi tit: Kh khn thc nht ca php chia c du l chng ta cng phi t du cho s d. Nh rng cng thc sau vn phi ng: Dividend = Quotient x Divisor + Remainder hiu c lm sao t du cho s d, hy th xem v d ca chia tt c trng hp c th ca 7ten cho 2ten. Trng hp u th n gin: +7 / +2: Quotient = +3, Remainder = +1 Kim tra kt qu: 7 = 3 x 2 + (+1) = 6 + 1 Nu chng ta thay i du ca s b chia, kt qu cng phi thay i : 7 / +2: Quotient = 3 Vit li cng thc c bn ca chng ta tnh ton s d: Remainder = Dividend Quotient x Divisor= 7 3 x+2= 76) = -1 Vy: 7 +2 : Quotient = 3, Remainder = 1 Kim tra kt qu: 7 = 3 x2 + (1) = 6 1

28

You might also like