You are on page 1of 19

Ti liu Cu trc my tnh& Hp ng

T chc CPU

Chng 2 T CHC CPU (8086/8088/80286) 1. nh thi chu k bus


Mi chu k bus bt u bng vic xut a ch b nh hoc I/O port (chu k xung nhp T1). Vi 8086 th a ch ny c th l a ch b nh 20 bit, a ch I/O gin tip 16 bit (thanh ghi DX) hay a ch I/O trc tip 8 bit. Bus iu khin c 4 tn hiu tc ng mc thp l MEMR , MEMW , IOR v IOW . Cc chui s kin xy ra trong mt chu k bus c b nh: T1: CPU xut a ch b nh. Cc ng d liu khng hot ng v cc ng iu khin b cm T2: ng iu khin MEMR xung mc thp. n v b nh ghi nhn chu k bus ny l qu trnh c b nh v t byte hay word c a ch ln bus d liu. T3: CPU t cu hnh cc ng bus d liu l nhp. Trng thi ny ch yu b nh c thi gian tm kim byte hay word d liu T4: CPU i d liu trn bus d liu. Do , n thc hin cht bus d liu v gii phng cc ng iu khin c b nh. Qu trnh ny s kt thc chu k bus.
T1 Clk Address bus a ch ra c b nh hay I/O D liu ra a ch vo Ghi b nh hay I/O D liu vo T2 T3 T4

IOR hay MEMR


Data bus Address bus

IOW hay MEMW


Data bus

Hnh 2.1 nh th chu k bus


GV: Phm Hng Kim Khnh Trang 29

Ti liu Cu trc my tnh& Hp ng

T chc CPU

Trong mt chu k bus, CPU c th thc hin c I/O, ghi I/O, c b nh hay ghi b nh. Cc ng bus a ch v bus iu khin dng xc nh a ch b nh hay I/O v hng truyn d liu trn bus d liu. Ch rng CPU iu khin tt c cc qu trnh trn nn b nh bt buc phi cung cp c d liu vo lc MEMR ln mc cao trong trng thi T4. Nu khng, CPU s c d liu ngu nhin khng mong mun trn bus d liu. gii quyt vn ny, ta c th dng thm cc trng thi ch (wait state).

2. Kin trc ni
2.1. Kin trc ni
CPU c kh nng thc hin cc tc v d liu theo tp lnh bn trong. Mt lnh c ghi nhn bng m c nh ngha trc, gi l m lnh (opcode). Trc khi thc thi mt lnh, CPU phi nhn c m lnh t b nh chng trnh ca n. Qu trnh x l ny gi l chu k nhn lnh (fetch cycle). Mt khi cc m c nhn v c gii m th mch bn trong CPU c th tin hnh thc thi (execute) m lnh.

EU

Hng lnh

BIU

Bus h thng

Hnh 2.2 Kin trc tng qut ca CPU 8086 BIU (Bus Interface Unit n v giao tip bus) nhn cc m lnh t b nh v t chng vo hng ch lnh. EU (Execute Unit n v thc thi) s gii m v thc hin cc lnh trong hng. Ch rng cc n v EU v BIU lm vic c lp vi nhau nn BIU c kh nng ang nhn mt lnh mi trong khi EU dang thc thi lnh trc . Khi EU thc hin xong lnh, n s ly m lnh k tip trong hng lnh (instruction queue). Kin trc ni ca CPU 8086 hnh 2.3. N c 2 b x l ring: BIU v EU. BIU cung cp cc chc nng phn cng, bao gm to cc a ch b nh v I/O chuyn d liu gia EU v bn ngoi CPU. EU nhn cc m lnh chng trnh v d liu t BIU, thc thi cc lnh ny v cha cc kt qu trong cc thanh ghi. Ngoi ra, d liu cng c th cha trong mt v tr b nh hay c ghi vo thit b xut. Ch rng EU khng c bus h thng nn phi thc hin nhn v xut tt c cc d liu ca n thng qua BIU. S khc bit gia CPU 8086 v 8088 l BIU. Trong 8088, ng bus d liu l 8 bit trong khi ca 8086 l 16 bit. Ngoi ra hng lnh ca 8088 di 4 byte trong khi ca 8086 l 6 byte. Tuy nhin do EU gia hai loi P ny ging nhau nn cc chng trnh vit cho 8086 c th chy c trn 8088 m khng cn thay i g c.
GV: Phm Hng Kim Khnh Trang 30

Ti liu Cu trc my tnh& Hp ng

T chc CPU

EU iu khin bus v sinh a ch

BIU

AH BH CH DH BP DI SI SP AL BL CL DL CS ES SS DS IP 5 4 3 2 1

Internal bus

Thanh ghi c

ALU

Hnh 2.3 Kin trc ni ca 8086

2.2. C ch ng ng (pipeline)
Qu trnh nhn lnh v thc thi lnh: 1/ BIU xut ni dung ca thanh ghi con tr lnh IP (Instruction Pointer) ra bus a ch chn byte hay word c vo BIU. 2/ Thanh ghi IP c tng ln chun b nhn lnh k (s byte tng ln ca IP ty thuc vo kch thc lnh trc ).
GV: Phm Hng Kim Khnh Trang 31

Ti liu Cu trc my tnh& Hp ng

T chc CPU

3/ Khi lnh trong BIU, n c a sang hng lnh (queue). y l mt thanh ghi lu tr dng FIFO (First In First Out Vo trc ra trc), dng c ch x l xen k lin tc cc dng m lnh (k thut ng ng pipelining). 4/ Gi s ban u hng lnh trng, EU s khng lm g c cho n khi bt u xut hin mt lnh trong hng, EU s ly lnh ra khi hng v bt u thc thi lnh . 5/ Trong khi EU ang thc thi lnh, BIU tin hnh nhn lnh mi. Tu theo thi gian thc thi lnh m BIU c th a vo hng lnh nhiu lnh mi trc khi EU thc hin lnh xong v tip tc ly lnh mi. BIU c lp trnh c th nhn mt lnh mi bt k lc no hng lnh c ch cho 1 byte (8088) hay 2 byte (8086). Li ch ca phng php x l theo c ch pipeline l EU c th thc thi cc lnh gn nh lin tc thay v phi i BIU nhn thm lnh mi.

Nhn

Thc thi

Nhn

Thc thi

Nhn

Thc thi

(a)
Nhn (1) Nhn (2) Nhn (3) c Nhn (4) Nhn (4) Nhn

Ch

Thc thi

Ch

Thc thi

Thc thi

Thc thi

Ch

Nhn

(b) (1): lnh thc thi khng cn d liu trong hng (2): lnh thc thi cn d liu trong hng (3): lnh nhy (4): cc lnh b b qua do lnh nhy Hnh 2.4 (a) CPU thng thng dng chu k nhn v thc thi lnh tun t (b) Kin trc dng pipeline ca 8086/8088 cho php thc thi cc lnh m khng b tr do qu trnh nhn lnh C 3 iu kin lm cho EU ch ch: iu kin th nht xy ra khi lnh cn truy xut n mt v tr b nh khng trong hng. BIU phi treo qu trnh nhn lnh v xut ra a ch ca nh ny. Sau khi truy xut b nh, EU c th tip tc qu trnh thc thi lnh t hng lnh v BIU c th tip tc a cc lnh vo hng. iu kin th hai xy ra khi lnh c thc thi l lnh nhy (jump). Trong trng hp ny, thay v dng a ch lnh k tip, ta phi chuyn n a ch mi (khng tun t). Tuy nhin, BIU vn lun t cc lnh theo tun t v do s lu cc lnh khng s dng. Trong khi nhn lnh k tip ti a ch do lnh jump ch n, EU phi i v tt c cc byte trong hng phi b.
Trang 32

GV: Phm Hng Kim Khnh

Ti liu Cu trc my tnh& Hp ng

T chc CPU

iu kin th ba c th lm BIU treo qu trnh nhn lnh l khi thc thi cc lnh c thi gian thc thi ln. Gi s nh lnh AAM (ASCII Adjust for Multiplication) cn 83 chu k xung nhp hon tt trong khi vi 4 chu k xung nhp cho qu trnh nhn lnh th hng s b y. Nh vy BIU phi i cho n khi lnh c thc hin xong v EU nhn m lnh t hng th mi c th tip tc qu trnh nhn lnh.

2.3. C ch siu phn lung (hyper-threading)


Internet, thng mi in t v phn mm ng dng doanh nghip ang ngy cng i hi nhiu nng lc tnh ton ca cc my ch hn. nng cao tc , phn mm cn phi c phn lung - cc ch th s c chia thnh nhiu dng lnh c th x l ng thi trn nhiu b x l. Intel a ra k thut phn lung cho php nng cao tc v kh nng tnh ton song song cho nhng ng dng a lung. Cng ngh mi ca Intel m phng mi b vi x l vt l nh l hai b vi x l lun l (logic), ti nguyn vt l c chia s v c cu trc chung ging ht nhau cho c hai b x l logic. H iu hnh v phn mm ng dng s xem nh nh ang chy trn hai hay nhiu b x l, kt qu l tc x l trung bnh c th tng ln xp x 40% i vi mt b x l vt l, Intel gi k thut ny l siu phn lung. K thut siu phn lung cho php cc phn mm ng dng c vit cho nhng my ch a lung c th thc hin cc ch th song song ng thi trn mi b x l ring, bng cch ny s ci thin tc th tc giao dch cng nh thi gian p ng v cc yu cu c th khc ca phn mm nghip v v thng mi in t. K thut ny tng thch vi cc phn mm ng dng v h iu hnh sn c trn cc my ch (server), n cho php h tr nhiu ngi dng hn v tng khi lng cng vic c x l trn mt my ch. Vi cc my trm (workstation) cao cp, k thut siu phn lung cng s tng ng k tc cc phn mm ng dng i hi nng lc tnh ton cao, v d nh phn mm thit k 3 chiu, x l nh hay video Trong thi gian ti s xut hin ngy cng nhiu phn mm c thit k c bit v ti u ho cho K thut ny. T thng 01/2002, k thut siu phn lung c Intel a vo cc b vi x l Xeon i mi, khi u vi cc b x l c tc 1.8GHz v 2.0GHz vi 512KB cache th cp, sn xut bng cng ngh 0.13 micron (Xeon 1.7GHz, 1.8GHz, 2.0GHz vi 256KB cache th cp c sn xut bng cng ngh 0.18 khng h tr siu phn lung). Ti thi im u tin khi Intel gii thiu b x l Xeon cng vi chipset 860, ch c mt s rt t cc nh sn xut hng u nh IBM, Compaq, Dell, SuperMicro, Tyan h tr b vi x l ny, s lng sn phm cng rt t. Tuy nhin, khi c thm cc chipset h tr b x l Xeon nh E7500 v Serverworks GC, nhiu nh sn xut khc c sn phm h tr b x l Xeon. Tuy nhin i vi a s ngi dng, nht l ngi dng my tnh bn (desktop) th k thut siu phn lung cn kh xa l. Intel ch chun b a ra b x l Pentium IV dnh cho desktop p dng k thut siu lung (tc khi im l 3.06GHz). K thut siu phn lung (hyper-threading) cho php cc ng dng a lung thc hin cc lung song song. Trong cc k thut trc, s phn lung thc hin bng cch ct cc lnh thnh nhiu dng (stream) khc nhau, mi dng s do mt vi x l thc hin (trong h thng a x l). Vi k thut siu phn lung, s phn lung s dng cc ti nguyn ca vi x l hiu qu hn do qu trnh song song l tt hn.
GV: Phm Hng Kim Khnh Trang 33

Ti liu Cu trc my tnh& Hp ng

T chc CPU

K thut siu phn lung cung cp trng thi song song cp lung (TLP thread level parallelism) cho mi vi x l, kt qu l gia tng kh nng tn dng ti nguyn ca vi x l. Siu phn lung l mt dng ca k thut a lung song song (SMT Simultaneous Multi Threading) trong nhiu lung c th c thc thi ti cng mt thi im trn mt vi x l. Vn ny thc hin bng cch kt hp 2 AS (Architectural State) trong mi vi x l, cc AS s dng chung ti nguyn ca vi x l. K thut ny lm p ng thi gian ca vi x l s nhanh hn trong mi trng a nhim v cho php thc hin nhanh cc hot ng a lung v a nhim bng cch s dng cc ti nguyn nhn ri. K thut siu phn lung v a lung song song (SMT Simultaneous Multi-Threading) Intel pht trin SMT t mt cng ngh gc c tn m l Jackson vi ci tn khc l Hyper-Threading k thut siu phn lung. Trc khi c th hiu v cch thc hot ng ca k thut ny, chng ta cn phi tm hiu c bn v n, c bit l v chui lnh v cch chng hot ng. Ci g lm cho mt ng dng c th chy? Lm th no CPU bit cc ch dn thc hin v thc hin vi d liu no? Tt c nhng thng tin ny c cha trong m bin dch ca ng dng ang chy mi khi np ng dng vo. ng dng ln lt gi cc chui lnh bo cho CPU bit phi lm g p ng, v i vi CPU chui lnh s l mt tp cc ch th cn phi thc thi. CPU bit chnh xc cc ch th ny nm u nh thanh ghi b m chng trnh (PC Program Counter). PC lun ch n v tr trong b nh ni m cc ch th cn thc hin tip theo c lu gi, nh vy mt khi chui lnh c gi n CPU th a ch trong b nh ca chui lnh ny c np sn vo PC, v vy CPU bit bt u thc hin t u. Sau mi ch th, PC s tng ln v qu trnh tip tc n ht chui lnh. Khi chui lnh c thc hin xong, PC s b ghi bi ch th tip theo. Chui lnh c th b ngt bi mt yu cu khc, khi CPU s lu gi tr hin ti ca PC trong ngn xp (stack) v np gi tr mi vo PC, tuy nhin hn ch l ti mi thi im ch c th c duy nht mt chui lnh c thc thi. Mt hng gii quyt chung cho vn ny l s dng hai hay nhiu CPU, nu ti mi thi im mt CPU ch c th thc thi mt chui lnh th hai hay nhiu CPU s thc thi c hai hay nhiu chui lnh. Tuy vy, li c nhiu vn ny sinh vi cch gii quyt ny, trc ht l nhiu CPU s tn nhiu tin, quan trng hn na l vic qun l hai hay nhiu CPU chng chia s tt ti nguyn chung. V d, cho ti trc khi chipset AMD 760MP c a ra, tt c cc nn tng x86 a x l ch h tr vic chia bng thng sn c gia cc CPU, iu quan trng nht l cc ng dng v h iu hnh cn phi c kh nng h tr tnh nng ny. Hin nay, gii quyt nhanh cc chui lnh phc tp, phn cng ni chung phi nh vo phng n x l a lung, h iu hnh phi h tr x l a lung, v phi tng tc mt cch tht s, ging nh c nhiu b x l (trong hu ht cc trng hp). K thut siu phn lung ca Intel gii quyt vn bng cch thc hin nhiu hn mt chui lnh ti cng mt thi im. Hiu qu ca cc b vi x l Ly P4 lm v d, CPU ny c tng cng 7 n v thc thi, hai trong s c th thc hin hai lnh mi xung clock (gi l double pumped ALUs). Nhng ngay c nh vy th cng khng th tm c phn mm no tn dng ht cc n v thc thi . Hu ht cc phn mm cho my tnh c nhn ang s dng ch lm vic vi mt t
GV: Phm Hng Kim Khnh Trang 34

Ti liu Cu trc my tnh& Hp ng

T chc CPU

php tnh s nguyn nh np v lu tr m khng h ng n n v thc thi du chm ng. Cn mt s phn mm ch tp trung vo mi n v x l du chm ng m khng s dng n n v x l s nguyn. Ngay c ng dng ch yu s dng php tnh s nguyn cng khng tn dng tt c cc n v x l s nguyn, c bit l mt thnh phn trong CPU chuyn dng cho php dch hay quay. Gi s mt CPU vi 3 n v thc thi: mt n v s nguyn (ALU Arithmetic Logic Unit), mt n v du chm ng (FPU Floating Point Unit) v mt n v np/lu tr (n v dng c/ghi b nh). Gi s CPU c th thc hin mi lnh trong vng mt chu k xung clock v ng thi gii quyt nhiu lnh ti c ba n v thc thi. Ta cn CPU thc thi chui lnh sau: 1+1 10+1 Lu tr kt qu Biu di y s gip minh ha mc ca cc n v thc thi, mu xm biu th n v thc thi khng s dng, gch cho cho bit n v thc thi hot ng.

n v thc thi ALU FPU Load/Store

2 Chu k xung

C th thy rng trong mi xung clock s ch c 33% trong s cc n v c s dng, v trong cc php ton ny hon ton khng s dng FPU. Gi s gi mt chui lnh khc n cc n v thc thi ca CPU, ln ny l cc lnh ti, cng v lu tr:
n v thc thi ALU FPU Load/Store

2 Chu k xung

GV: Phm Hng Kim Khnh

Trang 35

Ti liu Cu trc my tnh& Hp ng

T chc CPU

Ta thy rng cng ch s dng c 33% s cc n v thc thi. Thut ton x l song song c gi l ILP (instruction level parallelism), cc ch dn phc tp c thc hin ng thi bi v CPU c kh nng tn dng cc n v x l song song, tc l c nhiu hn 33% s n v x l c s dng. Tuy nhin trn thc t hu ht cc m lnh x86 khng phi l ILP, v vy ta phi tm nhng cch khc tng hiu qu. V d, h thng c 2 CPU v chng c th thc hin cc chui lnh ng thi, cch ny c bit n nh l x l song song theo lung tng cng hiu nng, tuy nhin li rt tn km. K thut siu phn lung Cc n v thc thi khng c s dng thng xuyn l do CPU khng th ly d liu nhanh nh n mong mun do tc nghn ng truyn (memory bus v frontside-bus), dn n s gim st hot ng ca cc n v thc thi. Ngoi ra, mt nguyn nhn khc c cp l c qu t ILP trong hu ht cc chui lnh thc thi. K thut siu phn lung
B x l a nhn AS Ti nguyn thc thi AS Ti nguyn thc thi Siu phn lung AS AS

Ti nguyn thc thi

Hnh 2.5 So snh b x l a nhn v siu phn lung Hin thi a s cc phng php dng ci thin hiu nng trong cc th h CPU l tng tc xung clock v tng ln ca b nh m (cache). Nhng cho d c hai cch ny cng c s dng th vn khng thc s s dng ht c ti nguyn sn c ca CPU. Nu c cch no cho php thc thi c nhiu chui lnh ng thi mi c th tng hiu qu s dng ti nguyn ca CPU. chnh l cch m k thut siu phn lung ca Intel lm c, bn cht ca n l chia s ti nguyn s dng hiu qu hn cc n v thc thi lnh c sn trn CPU. Siu phn lung l mt k thut nm ngoi x86, l mt phn nh ca SMT. tng ca SMT rt n gin: mt CPU vt l s xut hin trn h iu hnh nh l hai CPU logic v h iu hnh khng th phn bit c. Nhim v ca h iu hnh l gi 2 chui lnh ti 2 CPU v phn cng s m nhim nhng cng vic cn li. Trong cc CPU s dng k thut siu phn lung, mi CPU logic s hu mt tp cc thanh ghi, k c thanh ghi b m chng trnh ring (separate program counter), CPU vt l s lun phin cc giai on tm/gii m lnh gia hai CPU logic v thc thi nhng thao tc t hai chui lnh ng thi theo cch hng ti nhng n v thc thi t c s dng.
GV: Phm Hng Kim Khnh Trang 36

Ti liu Cu trc my tnh& Hp ng

T chc CPU

Hn ch ca siu phn lung


n v thc thi ALU FPU Load/Store

2 Chu k xung

Gi s rng CPU n gin trc y cng c cc c tnh ca siu phn lung: Cc gch cho hin th mt ch dn t chui lnh th nht ang c thc hin, trong khi nhng chm chm hin th mt ch dn t chui lnh th hai ang c thc hin. Cc mu xm hin th nhng n v thc hin khng c s dng, trong khi cc mu en hin th xung t khi m c hai ch dn u s dng cng mt n v thc thi. R rng l vic thc thi song song hai chui lnh vi k thut siu phn lung li thc hin chm hn so vi mt CPU thng thng. Nguyn nhn tht ra rt n gin: CPU ng thi thc hin hai chui lnh qu n gin, tt c u l trng lp vi lnh add, load, store. Nu thc thi cc ng dng i hi nhiu php ton ng cng vi cc ng dng s nguyn th kt qu s khc i. Hin ti cc ng dng vn phng trn my tnh bn hu nh ch s dng s nguyn (v trong tng lai chc cng vn ch s dng s nguyn). V vy li ch m cng ngh siu phn lung em li thp (v i khi cn km hn khng dng cng ngh siu phn lung). Trn thc t, nu kch hot tnh nng siu phn lung trn desktop, c th gim tc ti 10%. Tuy nhin ngi dng cc ng dng tnh ton phc tp th s c hng li rt nhiu t k thut ny. Ngoi ra k thut ny cng tng tc ng k cho cc my ch, nht l cc my ch web server. Li ch ca siu phn lung Intel to ra siu phn lung khng ch cho cc CPU my ch. Thc ra kin trc NetBurst ca P4 v Xeon hin nay hon chnh vi li SMT. Xt v d trn, ta cho thm mt ALU th 2 v thc hin hai chui lnh trn. Vi mt ALU th 2, xung t duy nht gp phi l ln lu tr cui cng. Ta bit rng CPU P4 c thit k vi ba n v s nguyn (hai ALU v mt n v x l s nguyn khc chm hn cho php dch/quay). Quan trng hn na l mi ALU ca P4 c th thc hin hai vi lnh trong cng mt xung clock, ngha l trong hai ch dn add (php cng) mi ch dn c th t hai chui lnh khc nhau, c thc hin ng thi trong mt xung clock duy nht trn P4/Xeon.

GV: Phm Hng Kim Khnh

Trang 37

Ti liu Cu trc my tnh& Hp ng

T chc CPU

n v thc thi ALU ALU FPU Load/Store

2 Chu k xung

Nhng iu vn cha gii quyt c vn , do vic tng thm cc n v x l tng hiu qu vi k thut siu phn lung li tn km ng t quan im vt l (lm cho CPU c nhiu transistor hn, tiu tn nhiu in nng hn; hoc phi gim kch thc CPU vi cc cng ngh ch to mi). Thay vo , Intel ang khuyn khch cc nh pht trin ti u ho k thut siu phn lung. Chng hn s dng lnh dng (HALT) mt trong cc b x l logic s ti a c tc cho cc ng dng khng s dng c k thut siu phn lung, CPU cn li ch hot ng nh l h thng mt CPU. Khi mt ng dng c th s dng li ch t siu phn lung, b x l logic th hai li tip tc c hot ng.

3. Cc thanh ghi
CPU 8086/8088 c tt c 14 thanh ghi ni. Cc thanh ghi ny c th phn loi nh sau: Thanh ghi d liu (data register) Thanh ghi ch s v con tr (index & pointer register) Thanh ghi on (segment register) Thanh ghi trng thi v iu khin (status & control register)

3.1. Cc thanh ghi d liu


Cc thanh ghi d liu gm c cc thanh ghi 16 bit AX, BX, CX v DX trong na cao v na thp ca mi thanh ghi c th nh a ch mt cch c lp. Cc na thanh ghi ny (8 bit) c tn l AH v AL, BH v BL, CH v CL, DH v DL. Cc thanh ghi ny c s dng trong cc php ton s hc v logic hay trong qu trnh chuyn d liu. Thanh ghi S dng trong AX MUL, IMUL (ton hng ngun kch thc word) DIV, IDIV (ton hng ngun kch thc word) IN (nhp word) OUT (xut word)
GV: Phm Hng Kim Khnh Trang 38

Ti liu Cu trc my tnh& Hp ng

T chc CPU

AL

AH BX CX CL DX

CWD Cc php ton x l chui (string) MUL, IMUL (ton hng ngun kch thc byte) DIV, IDIV (ton hng ngun kch thc byte) IN (nhp byte) OUT (xut byte) XLAT AAA, AAD, AAM, AAS (cc php ton ASCII) CBW (i sang word) DAA, DAS (s thp phn) Cc php ton x l chui (string) MUL, IMUL (ton hng ngun kch thc byte) DIV, IDIV (ton hng ngun kch thc byte) CBW (i sang word) XLAT LOOP, LOOPE, LOOPNE Cc php ton string vi tip du ng REP RCR, RCL, ROR, ROL (quay vi s m byte) SHR, SAR, SAL (dch vi s m byte) MUL, IMUL (ton hng ngun kch thc word) DIV, IDIV (ton hng ngun kch thc word)

AX (ACC Accumulator): thanh ghi tch lu BX (Base): thanh ghi c s CX (Count): m DX (Data): thanh ghi d liu

3.2. Cc thanh ghi ch s v con tr


Bao gm cc thanh ghi 16 bit SP, BP, SI v DI, thng cha cc gi tr offset ( lch) cho cc phn t nh a ch trong mt phn on (segment). Chng c th c s dng trong cc php ton s hc v logic. Hai thanh ghi con tr (SP Stack Pointer v BP Base Pointer) cho php truy xut d dng n cc phn t ang trong ngn xp (stack) hin hnh. Cc thanh ghi ch s (SI Source Index v DI Destination Index) c dng truy xut cc phn t trong cc on d liu v don thm (extra segment). Thng thng, cc thanh ghi con tr lin h n on stack hin hnh v cc thanh ghi ch s lin h n don d liu hin hnh. SI v DI dng trong cc php ton chui.

3.3. Cc thanh ghi on


Bao gm cc thanh ghi 16 bit CS (Code segment), DS (Data segment), SS (stack segment) v ES (extra segment), dng nh a ch vng nh 1 MB bng cch chia thnh 16 on 64 KB. Tt c cc lnh phi trong on m hin hnh, c nh a ch thng qua thanh ghi CS. Offset ( lch) ca m c xc nh bng thanh ghi IP. D liu chng trnh thng c t on d liu, nh v thng qua thanh ghi DS. Stack
GV: Phm Hng Kim Khnh Trang 39

Ti liu Cu trc my tnh& Hp ng

T chc CPU

nh v thng qua thanh ghi SS. Thanh ghi on thm c th s dng nh a ch cc ton hng, d liu, b nh v cc phn t khc ngoi on d liu v stack hin hnh.

3.4. Cc thanh ghi iu khin v trng thi


Thanh ghi con tr lnh IP (Instruction Pointer) ging nh b m chng trnh (Program Counter). Thanh ghi iu khin ny do BIU qun l nhm lu tr offset t bt u on m n lnh thc thi k tip v khng th x l trc tip thanh ghi IP. Thanh ghi c (Flag register) di 16 bit cha 3 bit iu khin (TF, IF v DF) v 6 bit trng thi (OF, SF, ZF, AF, PF v CF) cn cc bit cn li khng s dng. 15 X 14 X 13 X 12 X 11 10 9 OF DF IF 8 TF 7 SF 6 ZF 5 X 4 3 AF X 2 PF 1 X 0 CF

OF (Overflow - trn): OF = 1 xc nh trn s hc, xy ra khi kt qu vt ra ngoi phm vi biu din DF (Direction- hng): xc nh hng chuyn chui, DF = 1 khi CPU lm vic vi chui theo th t t phi sang tri v ngc li. IF (Interrupt - ngt): cho php hay cm cc ngt c mt n. TF (Trap - by): t CPU vo ch tng bc, dng cho cc chng trnh g ri (debugger). SF (Sign - du): dng ch cc kt qu s hc l s dng (SF = 0) hay m (SF = 1). ZF (Zero): = 1 nu kt qu ca php ton trc l 0. AF (Auxiliary nh ph): dng trong cc s thp phn ch nh t na byte thp hay mn t na byte cao. PF (Parity): PF = 1 nu kt qu ca php ton l c tng s bit 1 l chn (dng kim tra li truyn d liu) CF (Carry): CF = 1 nu c nh hay mn t bit cao nht ca kt qu. C ny cng dng cho cc lnh quay.

4. Phn on b nh
Ta bit rng d 8086 l CPU 16 bit (c bus d liu 16 bit) nhng vn dng b nh theo cc byte. iu ny cho php CPU lm vic vi byte cng nh word, n rt quan trng trong giao tip vi cc thit b I/O nh my in, thit b u cui v modem (chng c thit k chuyn d liu m ho ASCII 7 hay 8 bit). Ngoi ra, nhiu m lnh ca 8086/8088 c chiu di 1 byte nn cn phi truy xut c cc byte ring bit c th x l cc lnh ny. 8086/8088 c bus a ch 20 bit nn c th cho php truy xut 220 = 1048576 a ch b nh khc nhau. thc hin c 16 bit t b nh, 8086 s thc hin c ng thi byte c a ch l v byte c a ch chn. Do , 8086 t chc b nh thnh cc bank chn v l.
GV: Phm Hng Kim Khnh Trang 40

Ti liu Cu trc my tnh& Hp ng

T chc CPU

Theo hnh 2.6, ta c th thy rng cc word lun bt u ti a ch chn nhng ta vn c th c word c a ch l bng cch thc hin 2 chu k c b nh: mt chu k c byte thp v mt chu k c byte cao nhng iu ny lm chm tc x l. i vi 8088 th do bus d liu 8 bit nn d word c a ch chn hay l, n cng cn phi thc hin 2 chu k c hay ghi b nh v giao tip vi b nh nh mt bank.
Byte 1048575 Word 524287 Byte 1048574

Byte 1 Word 0 Byte 0

Hnh 2.6 Vng nh ca 8086/8088 c 1048576 byte hay 524288 word


Byte 1048574 Byte 1048572 Byte 1048575 Byte 1048573 Byte 1048575 Byte 1048574

Byte 2 Byte 0

Byte 3 Byte 1 c ln 2 c ln 1

Byte 3 Byte 2 Byte 1 Byte 0

Word d liu 16 bit

Hnh 2.7 c word a ch chn v a ch l Ngoi ra b nh cng chia thnh 16 khi, mi khi c kch thc 64 KB, bt u a ch 00000h v kt thc FFFFFh. a ch bt u mi khi s tng ln 1 s hex c ngha nhiu nht khi thay i t khi ny sang khi kia. V d nh khi 00000h 10000h 20000h
GV: Phm Hng Kim Khnh Trang 41

Ti liu Cu trc my tnh& Hp ng

T chc CPU

FFFFFh F0000h

FFFFFh FFFFBh

D tr Dnh ring

FFFF0h 20000h 10000h 00000h 0007Fh 00013h Dnh ring 00000h D tr

Hnh 2.8 Bng b nh cho 8086/8088 8086/8088 nh ngha 4 khi b nh 64KB: on m (code segment) gi cc m lnh chng trnh, on ngn xp (stack segment) lu cc a ch s tr v t cc chng trnh con (subroutine) hay trnh phc v ngt (interrupt subroutine), on d liu (data segment) lu tr d liu cho chng trnh v on thm (extra segment) thng dng cho cc d liu dng chung. Cc thanh ghi on (CS, DS, SS v ES) dng ch v tr nn ca mi on. Cc thanh ghi ny c 16 bit trong khi a ch b nh l 20 bit nn xc dnh v tr b nh, ta s thm 4 bit 0 vo cc bit thp ca thanh ghi on. Gi s nh thanh ghi CS cha gi tr 1111h th n s ch ti a ch nn l 11110h. Ch rng a ch bt u mt on khng th tu m phi bt u ti mt a ch chia ht cho 16. Ngha l 4 bit thp phi l 0. Ta cng ch rng 4 on c th khng tch ri nhau m chng lp ln nhau v ta cng c th cho 4 gi tr ca cc thanh ghi on bng nhau ngha l 4 on ny trng nhau. VD: Thanh ghi DS c gi tr l 1000h th a ch nn l 10000h. a ch kt thc tm c bng cch cng a ch nn vi gi tr FFFFh (64K) a ch kt thc l 10000h + FFFFh = 1FFFFh. Nh vy on d liu c a ch t 10000h 1FFFFh. Cc v tr b nh khng c nh ngha trong cc on hin hnh khng th truy xut c. Mun truy xut n cc v tr , ta phi nh ngha li mt trong cc thanh ghi on sau cho on phi cha v tr . Nh vy, ti mt thi im bt k ta ch c th truy xut ti a 4 64 KB = 256 KB b nh. Ni dung ca cc thanh ghi on ch c th xc nh thng qua phn mm.

GV: Phm Hng Kim Khnh

Trang 42

Ti liu Cu trc my tnh& Hp ng

T chc CPU

VD: Gi s cc thanh ghi on c cc gi tr CS = 2800h, DS = E000h, SS = 2900h v ES = 1000h. Ta c v tr cc on trong bng b nh nh sau:
EFFFFh on d liu E0000h

on stack 29000h 38FFFh on m 28000h 37FFFh

38FFFh 37FFFh 29000h 28000h

1FFFFh on thm 10000h

Hnh 2.9 V tr cc phn on theo gi tr cc thanh ghi on a ch logic v a ch vt l: Cc a ch trong mt on thay i t 0000h FFFFh, tng ng vi chiu di on l 64 KB. Mt a ch trong mt on c gi l a ch logic hay offset. V d nh a ch logic 0010h ca on m trong hnh 2.9 s c a ch tht s l 28000h + 0010h = 28010h. a ch ny gi l a ch vt l. a ch vt l chnh l a ch tht s xut hin bus a ch, n c chiu di 20 bit cn a ch logic l lch (offset) t v tr 0 ca mt on cho trc. VD: Gi s xt cc on nh hnh 2.9. a ch vt l tng ng vi a ch logic 1000h trong on stack l: 29000h + 1000h = 2A000h a ch vt l tng ng vi a ch logic 2000h trong on m l: 28000h + 2000h = 2A000h Ta thy rng c th a ch vt l trng nhau khi a ch logic khc nhau ngha l mt a ch vt l c th c nhiu a ch logic khc nhau. ch a ch logic 1000h trong on m, ta dng k hiu CS:1000h. Tng t nh vy cho cc on khc, ngha l a ch logic 1111h trong on d liu s l DS:1111h. Mi lnh tham chiu b nh s c mt thanh ghi on mc nhin. Thanh ghi IP cung cp a ch offset khi truy xut n on m v BP cho on stack. V d nh IP = 1000h v CS = 2000h th BIU s truy xut n a ch 20000h + 1000h = 21000h v nhn byte ti v tr ny.

GV: Phm Hng Kim Khnh

Trang 43

Ti liu Cu trc my tnh& Hp ng

T chc CPU

Tham chiu b nh Nhn lnh Tc v stack D liu tng qut Ngun ca string ch ca string BX dng lm con tr BP dng lm con tr

on mc nhin CS SS DS DS ES DS SS

on khc Khng Khng CS,ES,SS CS,ES,SS Khng CS,ES,SS CS,ES,SS

Offset IP SP a ch hiu dng SI DI a ch hiu dng a ch hiu dng

VD: Ta s dng lnh MOV [BP],AL vi BP = 2C00h. y BP dng lm con tr nn dng on stack. Gi s cc phn on nh hnh 2.9 th a ch vt l s l 29000h + 2C00h = 2BC00h

5. Cch m ho lnh
Lnh ca CPU s biu din bng cc k t di dng gi nh (mnemonic) c th d dng s dng. i vi CPU th cc lnh c biu din bng cc m lnh (opcode) nn sau khi nhn lnh CPU phi thc hin gii m lnh ri mi thc thi n. Mt lnh CPU c th di 1 byte hay nhiu byte. Nu ta dng 1 byte m ho th s m ho c 256 lnh khc nhau. Tuy nhin do mt lnh khng phi ch c mt cch thc hin nn ta khng th thc hin n gin nh trn. tm hiu cch m ho lnh, ta xt lnh MOV des,src dng chuyn d liu gia hai thanh ghi hay mt nh v mt thanh ghi. Lnh MOV m ho nh sau:
Byte 1 Byte 2 Byte 3 Byte 4

1 0

1 0 D W Mod reg M/R

Opcode

m ha lnh MOV, ta cn dng t nht l 2 byte trong 6 bit dng cho m lnh. Bit D xc nh hng truyn ca d liu, D = 0 xc nh d liu s i t thanh ghi cho bi 3 bit Reg, D = 1 xc nh d liu s i n thanh ghi cho bi 3 bit Reg. Bit W xc nh s truyn 1 byte (W = 0) hay 1 word (W = 1). 3 bit Reg dng chn thanh ghi s dng: M 000 001 010 011 100 101 110 111
GV: Phm Hng Kim Khnh

Thanh ghi W=1 W=0 AX AL CX CL DX DL BX BL SP AH BP CH SI DH DI BH


Trang 44

Ti liu Cu trc my tnh& Hp ng

T chc CPU

2 bit mod v 3 bit R/M (Register / Memory) dng xc nh ch a ch cho cc ton hng ca lnh. MOD R/M 000 001 010 011 100 101 110 111 00 [BX]+[SI] [BX]+[DI] [BP]+[SI] [BP]+[DI] [SI] [DI] addr16 [BX] 01 [BX]+[SI]+addr8 [BX]+[DI]+addr8 [BP]+[SI] +addr8 [BP]+[DI] +addr8 [SI] +addr8 [DI] +addr8 [BP] +addr8 [BX] +addr8 10 [BX]+[SI]+addr16 [BX]+[DI]+addr16 [BP]+[SI] +addr16 [BP]+[DI] +addr16 [SI] +addr16 [DI] +addr16 [BP] +addr16 [BX] +addr16 W=1 AX CX DX BX SP BP SI DI 11 W=0 AL CL DL BL AH CH DH BH

Tng qut, 8086/8088 c khong 300 tc v c th c trong tp lnh ca n. Mi lnh ko di t 1 n 6 byte. T v d trn, ta thy m lnh c cc vng: Vng m lnh (opcode): cha m lnh ca lnh s thc thi Vng thanh ghi (reg): cha cc thanh ghi s thc hin Vng ch (mod) Vng thanh ghi / b nh R/M (Reg/Mem)

6. Cc cch nh a ch
Cch nh a ch Tc thi M i tng B80010 V d on Hot ng truy xut M AH 10h AL 00h Trong P DX CX D AH [1000h] lieu D liu AL [SI]; AH [SI+1] D liu IP[DI+1:DI] Stack [BP][BP]+1 D liu [BX+1:BX] [BX+1:BX]-1 D liu AL [SI+6]; AH [SI+7] D liu IP[DI+7:DI+6] Stack AL[BP+2]; AH [BP+3] D liu IP[BX+3:BX+6] AL[BX+SI];AH[BX+SI+1] D liu IP[BX+DI+1:BX+DI] D liu Stack [BP+SI][BP+SI]+1 Stack [BP+DI+1:BP+DI] [BP+DI+1:BP+DI]-1

T gi nh MOV AX,1000h

M t (1) (2) (3) (4)

Thanh ghi 8BD1 MOV DX,CX Trc tip 8A260010 MOV AH,[1000h] Gin tip 8B04 thanh ghi FF25 FE4600 FF0F C ch s 8B4406 FF6506 C nn 8B4602 FF6702 C nn v 8B00 c ch s FF21 FE02 FF0B MOV AX,[SI] JMP [DI] INC BYTE PTR [BP] DEC WORD PTR [BX] MOV AX,[SI+6] JMP [DI+6] MOV AX,[BP+2] JMP [BP+2] MOV AX,[BX+SI] JMP [BX+DI] INC BYTE PTR [BP+SI]
DEC WORD PTR [BP+DI]

(5) (6) (7)

GV: Phm Hng Kim Khnh

Trang 45

Ti liu Cu trc my tnh& Hp ng

T chc CPU

C nn v 8B4005 c ch s FF6105 vi di FE4205 FF4B05

MOV AX,[BX+SI+5] JMP [BX+DI+5]

D liu

D liu INC BYTE PTR [BP+SI+5] Stack DEC WORD PTR [BP+DI+5] Stack MOVSB Thm, d liu

String

A4

AL[BX+SI+5] AH[BX+SI+1] IP[BX+DI+6:BX+DI+5] [BP+SI+5][BP+SI+5]+1 [BP+DI+6:BP+DI+5] [BP+DI+6:BP+DI+5]-1 [ES:DI] [DS:DI] Nu DF = 0 th SI SI + 1; DI DI + 1 Nu DF = 1 th SI SI - 1; DI DI - 1

(8)

(9)

BYTE PTR v WORD PTR trnh lm gia truy xut byte v word. di c cng vo thanh ghi con tr hay nn l s nh phn dng b 2. (1): ngun d liu trong lnh (2): ch v ngun l cc thanh ghi ca P (3): a ch b nh cung cp trong lnh (4): a ch b nh cung cp trong thanh ghi con tr hay ch s (5): a ch b nh l tng ca thanh ghi ch s cng vi di trong lnh (6): a ch b nh l tng ca thanh ghi BX hay BP cng vi di trong lnh (7): a ch b nh l tng ca thanh ghi ch s v thanh ghi nn (8): a ch b nh l tng ca thanh ghi ch s, thanh ghi nn v di trong lnh (9): a ch ngun b nh l thanh ghi SI trong on d liu v a ch ch b nh l thanh ghi DI trong on thm

6.1. nh a ch tc thi
Cc lnh dng cch nh a ch tc thi ly d liu trong lnh lm mt phn ca lnh. Trong cch ny, d liu s c cha trong on m thay v trong on d liu. D liu cho lnh MOV AX,1000h c cung cp tc thi sau m lnh B8. Ch rng trong m i tng byte d liu cao i sau byte d liu thp. Cch nh a ch tc thi thng dng np mt thanh ghi hay v tr b nh vi cc d liu ban u. Sau , cc lnh k tip s lm vic vi cc d liu ny. Tuy nhin, cch nh a ch ny khng s dng c cho cc thanh ghi on.

6.2. nh a ch thanh ghi


Mt s lnh ch lm cng vic chuyn d liu gia cc thanh ghi ca CPU. V d nh MOV DX,CX s chuyn d liu t thanh ghi CX vo thanh ghi DX. y ta khng cn thc hin tham chiu b nh. Ta c th kt hp cch nh a ch tc thi v nh a ch thanh ghi np d liu cho cc thanh ghi on.

6.3. nh a ch trc tip


Ngoi 2 cch nh a ch trn, tt c cc cch nh a ch cn li u cn phi truy xut n b nh vi t nht mt ton hng. Trong cch nh a ch trc tip, a ch b nh c cung cp trc tip nh l mt phn ca lnh. V d nh lnh MOV
GV: Phm Hng Kim Khnh Trang 46

Ti liu Cu trc my tnh& Hp ng

T chc CPU

AH,[1000h] s a ni dung cha trong nh DS:1000h vo thanh ghi AH hay lnh MOV [2000h],AX s a ni dung cha trong AX vo 2 nh lin tip DS:2000h v DS:2001h

6.4. nh a ch truy xut b nh gin tip


Cc cch nh a ch trc tip s thun li cho cc truy xut b nh khng thng xuyn. Tuy nhin, nu mt nh cn phi truy xut nhiu ln trong mt chng trnh th qu trnh nhn a ch (2 byte) s phi thc hin nhiu ln. iu ny s khng hiu qu. gii quyt vn ny, ta thc hin lu tr a ch ca nh cn truy xut trong mt thanh ghi con tr, ch s hay thanh ghi c s (BX, BP, SI hay DI). Ngoi ra, ta c th s dng di b 2 bng cch cng vo cc thanh ghi di i so vi v tr c cc thanh ghi ch n. Cch nh a ch Gin tip thanh ghi C ch s C nn C nn v ch s C nn v ch s vi di a ch hiu dng (EA Effective Address) di Thanh ghi nn Thanh ghi ch s Khng BX hay BP Khng Khng Khng SI hay DI Khng SI hay DI -128 127 BX hay BP Khng -128 127 BX hay BP SI hay DI Khng BX hay BP SI hay DI -128 127

Nh vy, mt di c th c cng vo thanh ghi nn v kt qu ny c cng tip vo thanh ghi ch s. a ch thu c gi l a ch hiu dng EA. Ngoi ra ta cng c th vit cch nh a ch gin tip nh sau: MOV AX,table[SI] Trong table l nhn gn cho mt v tr nh no . Lnh ny s truy xut phn t th SI trong dy table (gi s SI = 2 th s truy xut phn t th 2). Ch rng cc on mc nh cho cc cch nh a ch gin tip l on stack khi dng BP, l on d liu khi dng BX, SI hay DI. VD: Lnh: MOV AH,10h MOV AX,[BP + 10] MOV AH,[BP + SI] thc hin nh a ch tc thi thc hin nh a ch c nn thc hin nh a ch c nn v c ch s

6.5. nh a ch chui
Chui l mt dy lin tc cc byte hay word lu tr trong b nh di dng cc k t ASCII. 8086/8088 c cc lnh dng x l chui, cc lnh ny s dng cp thanh ghi DS:SI ch ngun chui k t v ES:DI ch ch chui. Lnh MOVSB s chuyn byte d liu ngun n v tr ch trong SI v DI s tng hay gim tu theo gi tr ca DF.

GV: Phm Hng Kim Khnh

Trang 47

You might also like