Giáo trình Kiến trúc máy tính I - Chương VI: Kiến trúc bộ lệnh - Vũ Đức Lung

pdf 41 trang phuongnguyen 2080
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kiến trúc máy tính I - Chương VI: Kiến trúc bộ lệnh - Vũ Đức Lung", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_kien_truc_may_tinh_i_chuong_vi_kien_truc_bo_lenh.pdf

Nội dung text: Giáo trình Kiến trúc máy tính I - Chương VI: Kiến trúc bộ lệnh - Vũ Đức Lung

  1. ChươngVI:Kintrúcblnh ChươngVI:Kintrúcblnh Trongchươngnàychúngtastptrungvàokintrúc b lnh ca máy tính, gii thiu các trưng hp khác nhau ca các kiukintrúcblnh.ðcbittrongchươngnàystptrungvào bnchđchính.ðutiênlàphânloicáckiukintrúcblnh vàđánhgiánhngưukhuytđimcachúng 6.1.Phânloikintrúcblnh Cĩ ba loi kin trúc b lnh cơ bn: kin trúc ngăn xp (stack), kin trúc thanh ghi tích lũy (Accumulator) và kin trúc thanh ghi đa dng GPRA(generalpurpose register architecture). TrongđĩkintrúcGPRAlichialàmhailoithơngdnglàthanh ghi–bnh(registermemory)vànplưu(loadstore).Vídphép tínhC=A+Bđưcdùngtrongcáckiukintrúctronghình6.1. Hình6.1.ThchinlnhC=A+Bcho4kiukintrúcblnh Trongmtcâulnhthìchúngtacĩcáctốnhng,màcác tốn hng li đưc chia thành hai loi: n (implicitly) và hin (explicitly):Tốnhngtrongkintrúcngănxplàloin trên đucangănxp,kintrúcthanhghitíchlũycĩmttốnhngn trongaccumulator,cịnkintrúcGPRAthìchdùngtốnhng hin,hoclàthanhghihoclàtrênbnh.Tốnhngdnghincĩ thtruycptrctiptbnhhocđutiênđưcnpvàothanh ghitmthinàođĩphthucvàokiukintrúcblnhđctrưng canĩ. 150
  2. ChươngVI:Kintrúcblnh KintrúcGPRAcĩmtloicĩthtruycptrctipvàob nh(registermemory);mtloicĩthtruycpvàobnhnhưng phi np thơng qua mt register gi là kin trúc nplưu (load store)haykintrúctrêncácthanhghi(registerregister);ngồira cịn mt kiu kin trúc GPRA na là kin trúc b nhb nh (memorymemory), nhưng kiu này khơng cịn thy ngồi th trưngngàynayna. Nhngmáytínhrađitrưckiathưngdùngkiukintrúc ngănxphockintrúcthanhghitíchlũy,nhưngtsaunăm1980 thìđudùngkintrúcGPR.Hinticácnhàsnxutmáytínhcĩ khuynhhưngdùngkintrúcphnmmthanhghiđadngvìvic thâm nhp các thanh ghi đa dng nhanh hơn thâm nhp b nh trong,vàvìcácchươngtrìnhdchdùngcácthanhghiđadngcĩ hiuquhơn.Bng6.1chotathycácưuvànhưcđimcaba loikintrúccơbnnày. NhưvykiukintrúcGPRđưcdùngngàynaybicác yutsau: – Dùngthanhghi,mtdnglưutrtrongcaCPUcĩtcđ nhanhhơnbnhngồi – Dùng thanh ghi thìd dàng cho trình biêndch vàcĩ th dùnghiuquhơnlàbnhngồi.Vídbiuthc(A*B) +(C*D)–(E*F)cĩthtínhbngcáchnhâncácphntrong ngocmitht,vàkhingdngkthutpipeline,mt k thut làm cho các giai đon khác nhau ca nhiu lnh đưcthihànhcùngmtlúc=>shiuquhơn.Trongkhi đĩnulàkintrúcstackthìbiuthcđĩchcĩthđưc tínhtuntttráisangphi – Cĩthdùngthanhghiđlưucácbinvànhưvysgim thâmnhpđnbnh=>chươngtrìnhsnhanhhơn Tuynhiên docác lnh đu dùng thanh ghi vy bao nhiêu thanhghilàđ?câutrliphthucvàoviccácthanhghiđưc sdngbitrìnhbiêndchnhưthnào.Phnlntrinhbiêndch 151
  3. ChươngVI:Kintrúcblnh dànhriêngmtvàithanhghichotínhtốnmtbiuthc,dùngvài thanhghiđchuyncácthơngscnthitvàchophépcácthanh ghicịnlilưutrcácbincnthit. Loikin Ưuđim Nhưcđim trúc Ngănxp Lnhngn Thâmnhpngăn (Stack) Ítmãmáy xpkhơng Làmtithiutrngthái ngunhiên. bêntrongcamtmáytính Mãkhơnghiuqu Ddàngtoramtb Khĩdùngtrongx biêndchđơngincho lýsong kintrúcngănxp songvàngdn Khĩtoramtb biêndch tiưu Thanhghi Lnhngn Lưugithanh tíchlu Làmtithiutrngthái ghitíchlu (Accumulator bêntrongcamáytính(yêu làtmthi. Register) cuítmchchcnăng) Nghnthanhghi Thitkddàng tíchlu Khĩdùngtrongx lýsong songvàngdn Traođinhiuvi bnh. Thanhghi Tcđxlýnhanh, Lnhdài đadng đnhvđơngin. Slưngthanhghi (General Ítthâmnhpbnh. bgii Register) Kiurttngquátđ hn tocácmãhuhiu Bng6.1.Sosánhcáckiukintrúcblnh 152
  4. ChươngVI:Kintrúcblnh  Kiukintrúcthanhghiđadng Dohinnaykiukintrúcthanhghiđadngchimvtrí hàngđunêntrongcácphnsau,tachđcpđnkiukintrúc này. ði vi mt lnh tính tốn hoc logic đin hình (lnh ALU),cĩ2đimcnnêu: – Trưctiên,mtlnhALUphicĩ2hoc3tốnhng.Nu tronglnhcĩ3tốnhngthìmttrongcáctốnhngcha ktquphéptínhtrênhaitốnhngkia(Víd:ADDA,B, C). Nu trong lnh cĩ 2 tốn hng thì mt trong hai tốn hng phi va là tốn hng ngun, va là tốn hng đích (Víd:ADDA,B). – Thhai,slưngtốnhngbnhcĩtronglnh.Stốn hngbnhcĩththayđit0ti3. Nhưđãnêutrên,trongnhiucáchthpcĩthcĩcác loitốnhngcamtlnhALU,cácmáytínhhinnaychnmt trong3kiusau: o thanhghithanhghi(kiunàycịnđưcginplưu tr), o thanhghibnh o bnhbnh. Kiuthanhghithanhghiđưcnhiunhàchtomáytính lưuývicáclýdo:victocácmãmáyđơngin,chiudàimã máycđnhvàschukỳxungnhpcnthitchovicthchin lnhlàcđnh,ítthâmnhpbnh.Tuynhiên,kiukintrúcnày cũng cĩ mtvài hn chca nĩ như: slưng thanhghibgii hn, vic các thanh ghi cĩ cùng đ dài dn đn khơnghiuqu trongcáclnhxlýchuicũngnhưcáclnhcĩcutrúc.Viclưu vàphchicáctrngtháikhicĩcácligithtchaychuynđi ngcnh. 153
  5. ChươngVI:Kintrúcblnh 6.2.ðachbnh Trongkintrúcblnhbaogichúngtacũngphiđcp đn các tốn hng, mà mt s tốn hng này đưc lưu trong b nh.Vycáchtchcđachbnhrasaolàđiucnbittrưc khiđivàonghiêncucácblnh. Bnh(memory)làthànhphnlưutrchươngtrìnhvàd liutrongmáytínhmàtrongchương5chúngtađãbitBitlàðơn vcơbncabnh.Ngồirachúngtacũngđãbit1bitcĩth đưctorabng1flipflop.Nhưngcáchbtrícácơnhtrongmt bnhchungnhưthnào?thtspxpcachúngrasao?làđiu chúngtacnbittrongphnnày. ðachbnhBnhgmmtsơ(hocvtrí),miơ(cell)cĩ thchamtmuthơngtin.Miơgnmtconsgilàđach (address),quađĩchươngtrìnhcĩththamchiunĩ.Gisbnh cĩnơ,chúngscĩđachit0đnn1.Ttcơtrongbnhđu chacùngsbit.Trongtrưnghpơcĩkbitnĩcĩkhnăngcha mttrongs2kthpbitkhácnhau.Trongmtbnhthìcácơ kcnnhauscĩđachliêntipnhau. Ơ làđơn v cĩth lp đa chnh nht vàcáchãngkhác nhaudùngquiđnhsbittrongmtơchotngloimáytínhca mìnhlàkhácnhaunhưIBMPC8bit/ơ,DECPDP812bit/ơ,IBM 113016bit/ơ, Tuynhiêntrongnhngnămgnđây,đascácnhà sn xut máy tính đu dùng chun hĩa ơ 8 bit, gi là byte. Byte nhĩmlithànht(word)vàmáytínhvit16bitscĩ2byte/t, cịnmáytínhvi32bitscĩ4byte/t.Huhtcáclnhđưcthc hintrêntồnbt.Vìvymáytính16bitscĩthanhghi16bit vàlnhthaotáctrên1t16bit,cịnmáy32bitscĩthanhghi32 bitvàcáclnhthaotáctrên1t32bit. 154
  6. ChươngVI:Kintrúcblnh Spxpthtbyte Cĩhaicáchspxpthtbytetrongmtt,đánhsbyte trongmttttráisangphivàđánhsbytetrongmtttphi sangtrái. Hình6.2(a)chothythtbytetrongbnhtrênmáytính 32btcĩsbyteđưcđánhsttráisangphi,nhưhMotorola chnghn.Hình6.2(b)làmtminhhatươngtvmáytính32 bit,đánhstphisangtrái,vídnhưhIntel.Hthngtrưckia bt đu đánh s t đu ln đưc gi là máy tính đu ln (Big endian),tráingưcviđunh(littleendian). Hình6.2.(a)Bnhđuln(hMotorola),(b)Bnhđunh (hIntel) Cn bit rng trong h thng đu ln ln đu nh, s nguyên32bitvitrslà6sđưcbiudinbngbit1103bit bêngĩcphicatvà029bitbêngĩctrái.Tronglưcđđu ln,nhngbitnàynmtrongbyteđutiênbênphi,byte3(hoc 7,11, ),trongkhiđĩlưcđđunh,chúngtrongbyte0 (hoc4,8, ).Trongchaitrưnghp,tchasnguyêncĩđa ch0.ðimkhácbitnàybêntrongmtmáytínhlàkhơngcĩvn đgì, nhưng khi ktni chúng vàotrongcùng mtmngvàkhi traođithơngtinvinhauthìsgpnhiuvnđtrctrc. 155
  7. ChươngVI:Kintrúcblnh 6.3.Mãhĩatplnh Mtchươngtrìnhbaogmmtdãycáclnh(haycịngilà chth),milnhchrõmtviclàmcthnàođĩcamáytính nhưthchinphépcng,thchinnhpdliu,thchinđcd liutbnh, Như chúng ta đã thy trên, trong mt câu lnh gm cĩ nhiuphn.Trongđĩtácvthchinmilnhđưcchrõtrong mttrưnggilàmãphéptốn(operationcode)haymãtácvvà đưcgittlàopcode,chobithànhđngnàosđưcthihành(t đâytrđitadùngcmtmãtácv).Trongmtlnhcịnchra đưcthchintrêncácthanhghihayđach(address)ơnh,nơi chađngdliucnxlý. Tronghình6.3chota3trưnghpmãhĩalnhđơngin làmtskhuơndngđinhìnhcacácblnh.Trưnghpth nhtchcĩmãtáctmàkhơngcĩphnđach.Trưnghpth haimãmtlnhcĩ2phn,phntácvlnhvàđachvàtrưng hpthú3(c)thìphnđachchim2vùngcamãlnh. Opcode (a) Opcode ðach (b) Opcode ðach1 ðach2 Hình6.3.Mtvàidngmãlnh Tùythucvàokintrúccamáytính,trongmtloi máytínhmãlnhcĩthcĩcùngchiudàihockhácnhau.Trên mt s máy tính tt c các lnh đu cĩ cùng đ dài (Power PC, SPARC,MIPS),mtsmáykháclicĩthcĩhaihocbađdài khácnhau(IBM360/70,Intel80x86),thmchíđdàimãlnhcĩ ththayđitùyý(VAX).Ngồiramtlnhcĩthngnhơn,dài hơnhocbngviđdàimtt. 156
  8. ChươngVI:Kintrúcblnh 6.3.1.Cáctiêuchunthitkdngthclnh Vìcĩthcĩnhiudngkhácnhaucacáclnh,chonên khithitkmáytínhcncĩcáctiêuchírõràngđlachndng thclnhchomáycnthitk.Mtscáctiêuchíchínhđưccác nhàthitkđưaranhưsau:  Tiêuchunthitk1:Mãlnhngnưuvithơnmãlnhdài ðâylàtiêuchunđutiênvàcũnglàquantrngnht.Mt chươngtrìnhgmnlnh16bitchchimchngmtnakhơng gianbnhsovinlnh32bit.Suychocùng,bnhkhơngmin phí,bivynhàthitkkhơngthíchlãngphínĩ. Ngồirathìmibnhcĩmttcđtruyncth,đưc quytđnhquacơngnghvàthitkkthut.Nutcđtruyn cabnhlàTbit/giây(bpsbitpersecond)vàchiudàilnh trungbìnhlàLthìnĩcĩthtruynđinhiunhtlàT/Llnhtrên mtgiây.Vìvy,tcthihànhlnh(tctcđbxlý)tùythuc vàođdàilnh.Lnhngnhơnđngnghĩavibxlýnhanh hơn. Nuthigianthihànhlnhquálâusovithigiantìmnp nĩtbnh,thigiantìmnplnhskhơngquantrng.Nhưng viCPUnhanh,bnhthưnglànútcchai.Bivy,tăngs lnhtìmnptrênmigiâylàtiêuchunthitkquantrng.  Tiêuchunthitkth2:Ddàimãlnhđđbiudintt cphéptốnmongmun Nuchúngtacnthitkmtmáytínhvi2ncácthaotác haycácvitácv,thìtakhơngthdùngmãhĩalnhviđdàinh hơnn.ðơnginkhơngđchtrongopcodeđchobitlàlnhnào haymãhĩattccáclnhđĩ.  Tiêuchunthitkêth3:đdàiwordcamáybngbis nguyêncađdàikýt. Trongtrưnghpmàkýtcĩkbit,đdàitphilàk,2k, 3k,4k, cịnkhơngslãngphíkhơnggiankhilưutrcáct. 157
  9. ChươngVI:Kintrúcblnh Ttnhiêncĩthlưutr3.5kýttrongmtword,songvic đĩslàmvicsgâyratìnhtrngkémhiuqunghiêmtrng trongkhitruycpcáckýt.Hnchdomãkýtápđtlênchiu dàitcũngnhhưngđnchiudàimãlnh,bivìmtlnhtt nhtlàchimmtsnguyêncácbytehocslnhnguyênphi nmgntrongmtt.  Tiêuchunthitkth4:sBITtrongtrưngđachcàng ngncàngtt Tiêuchunnàyliênquantivicchnkíchthưcơnh.Cxem thitkmáyvikýt8bit(cĩth7btcngtínhchnl)vàb nhchínhcha216kýtsthy.Nhàthitkcĩthchngánđa chliêntipchođơnv8,16,24,hoc32bit,cùngnhngkhnăng khác. Hãyhìnhdungchuyngìsxyranuđingũthitk phânhĩathànhhaiphegâychin,mtphedcsctobyte8bit, đơnvcơbncabnh,cịnphekiarasctot32bitnhưlà đơnvcơbncabnh.Pheđuđnghbnh216byte,đưc đánhs0,1,2,3, ,65535.Phesauđxutbnh214t,đưc đánhs0,1,2,3 ,16383. Nhĩmthnhtchrarngđsosánhhaikýttrongt chct32bit,chươngtrìnhchngnhngtìmnptchakýtmà cịnphitríchtngkýttrongtmisosánhđưc.Làmvys tnthêmlnhvàlãngphíkhơnggian.Tráili,tchc8bitcung cpđachichotnglnh,giúpsosánhddànghơnnhiu. Pheđxut32bitsphnbácbnglplunrngđxut cahchcn214đachriêngbit,chođdàiđach14bitmà thơi,cịnđnghbyte8bitđịihi16bitđlpđachcùngmt bnh.ðachingnhơnđngnghĩavilnhngnhơn,khơng nhngchimítkhơnggianmàcịnđịihiítthigiantìmnphơn. Hoccĩthginguyênđach16bitđthamchiubnhln gp4lnmcchophépcatchc8bit. Vídnàychothyrngđđtsphângiibnhtthơn, ngưitaphtrcáigiábngđachdàihơn,nĩichung,cĩnghĩa 158
  10. ChươngVI:Kintrúcblnh làlnhdàihơn.Mctiêutithưngtrongsphângiilàtchc bnhcĩthlpđachtrctiptngbit. Thctcĩnhngmáytínhmàchiudàiwordchcĩ1bit (vídmáyBurroughsB1700),licĩnhngmáymàwordrtdài, ti60bit(nhưmáyCDCCyber) 6.3.2.Opcodemrng Trongphnnàychúngtaxemxétnhngcânnhcvàtha hipliênquanđnmãtácvopcodevàđach. Gistacĩlnh(n+k)bitviopcodechimkbitvàđach chimnbit.Lnhnàycungcp2kphéptốnkhácnhauvà2nơnh lpđachđưc.Hoc,cùngn+kbitđĩcĩthchiathànhopcode (k–1)bitvàđach(n+1)bit,tcchmtnaslnhnhưnggp đơi b nh lp đa ch đưc, hoc cũng dung lưng b nh đĩ nhưngOpcode(k+1)bitvàđach (n1)bitchonhiuphéptốn hơn,songphitrgiábngsơlpđachđưcíthơn.Giabit opcodevàbitđachcĩnhngquânbìnhrttinhtcũngnhưđơn ginhơnnhưvatrìnhbày. ðhiurõvnđchúngtaxemvídmtmáytínhcĩlnh dài16bit,trongđĩmãvitácvopcodedài4bitvà3trưngđa ch,mitrưngdài4bitnhưhình6.4. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Opcode ðach1 ðach2 ðach3 Hình6.4.Lnhcĩopcode4bitvà3đach4bit Nhưvy,ngvimãvitácv4bitscungcpcho ta 24=16lnhkhácnhauvi3đach.Nhưngnunhàthitkcn15 159
  11. ChươngVI:Kintrúcblnh lnhbađach,hoc14lnhhaiđach,hoc31lnhmtđach thìhsphilmthnào? ðivitrưnghpthnht15lnhbađachthìnhàthit kcĩthlynguyêncutrúctrênhình6.4,nhưngbđimttrưng hpcaopcodenhưtronghình6.5(a). 16bit 15lnh 0000 xxxx yyyy zzzz opcode 3đach 4bit 0001 xxxx yyyy zzzz 0010 xxxx yyyy zzzz . . . 1100 xxxx yyyy zzzz 1101 xxxx yyyy zzzz 1110 xxxx yyyy zzzz a) 16bit 14lnh 1111 0000 yyyy zzzz opcode 2đach 8bit 1111 0001 yyyy zzzz 1111 0010 yyyy zzzz . . . 1111 1011 yyyy zzzz 1111 1100 yyyy zzzz 1111 1101 yyyy zzzz b) Hình6.5.Mtsdngthclnhcho16bit 160
  12. ChươngVI:Kintrúcblnh 16bit 31lnh 1111 1110 0000 zzzz opcode 1đach 12bit 1111 1110 0001 zzzz . . 1111 1110 1110 zzzz 1111 1110 1111 zzzz 1111 1111 0000 zzzz 1111 1111 0001 zzzz . . 1111 1111 1101 zzzz 1111 1111 1110 zzzz c) Hình6.5(tiptheo).Mtsdngthclnhcho16bit Tươngtđcĩ4lnhhaiđachtalàmnhưhình6.5(b)và 31lnhmtđachnhưhình6.7(c). Cácbitcaonht(bit12đn15)trongtrưnghpb)đưc gánmcđnhtrnhphân“1”,bnbitkđĩ(bit8đn11)smã hĩacáctácvcnthit.Vì4bitthìmãhĩađưc16tácv,nhưng trongtrưnghpnàytachcn14tácv,dođĩcịn2vtríkhơng dùng đn. Trong các trưng hp cĩ t hp code cịn li khơng dùng,nhưtronghình6.5(b)thìthpopcode11111110và1111 1111sđưcxlýđcbit. Nhưvyđdàicáclnhlànhưnhau,đu16bit,nhưng trongtrưnghpa)thìđdàiopcodelà4,trưnghpb)là8trong khitrưnghpc)là12bit. 161
  13. ChươngVI:Kintrúcblnh 6.3.3.Vídvdngthclnh ðhiurõhơncacvnđtrongmãhĩalnh,trongphn nàychúngtaskhosátdngthclnhtrongcácmáyPDP11và Intel.đâychúngtađưaramáyPDP11vìtplnhcanĩđưc xemlàmtđinhìnhvtínhđơnginvàhplý.  PDP11 ðaslnhhaitốnhngcaPDP11đưcmãhĩanhư tronghình6.6.Milnhchaopcode4bitvàhaitrưngđach6 bit.Mtbitopcodectráichobitlnhvnhànhtrênbytehay word.Trưngđachđưcchianhthànhhaiphn,phnchđ (mode)3bitvàthanhghi(Register)3bit(MáyPDP11cĩ8thanh ghichonênchcn3bitlàcĩthmãhĩađưctồnbcácthanh ghi).Trưngchđchobittốnhngnmtrongthanhghi,trong bnhhaylàmthngs,v.v.Cĩtámmodegingnhauchotốn hngnguncũngnhưchotốnhngđích.Miopcodeđucĩth dùngbtkỳtốnhngngunvàtốnhngđíchnào. TplnhtrongPDP11sdnglàtrcgiao(orthogonal),là tplnhtrongđĩphươngthcquiđnhđachcáctốnhngđc lpviopcodeđưccácnhàvittrìnhbiêndchrtthíchvìtp lnhtrcgiaolàmchocơngviccahđơnginđirtnhiu. 151412119865320 LNH MODE REGISTER MODE REGISTER opcode Tốnhngngun Tốnhngđích Sourceoperand Destinationoperand byte/word Hình6.6.MãhĩalnhtrênmáyPDP11 ðivimtslnhkhác,kclnhmttốnhng,PDP 11ápdnglưcđopcodemrng,theocáchnàythìcácopcode cĩdngx111đưcdùngđtránhkhiphidùngcácmãlnhdài 162
  14. ChươngVI:Kintrúcblnh hơn.Vihuhtcáclnhmttốnhnglyopcode10bitvà trưngmode/register6bit,nhưvyđdàilnhvnlà16bitging nhưcáclnh2tốnhng.Khiđĩtrưngmãtácvscĩ10bitbao gm4bitcatrưngopcodevà6bitcatrưngtốnhngngun (xemhìnhv6.6). CáclnhcĩlpđachbnhtrongPDP11scĩthêm mthayhaiword16bitđitheosaulnhđachđchracácđa chnày.  Hlntel8088/80286/80386/Pentium ViCPUIntel,tìnhhìnhphctphơnnhiuvàkémđu đnhơnnhiu.ðcbitđiviPentium,mơhìnhchungnhưhình 6.CutophctpcaPentiumlàdonĩđưckthatnhiuth htrongmtkhongthigiandàivàdongaytđuviclachn cáctínhchtđãkhơngđưcthànhcơnglm.ðiunàychínhlàdo địihiphikthacácđctínhratrưcmànĩkhơngththayđi cutrúccamình.Nĩichung,đivilnhhaitốnhng,nutốn hng này nm trong b nh thì tốn hng kia cĩ th khơng nm trongbnh.Dođĩtnticáclnhcnghaithanhghi,lnhcng thêmgiátrthanhghivàobnhvàcngthêmbnhvàothanh ghi, nhưng khơng tn ti lnh cng thêm mtt vàomt tnh khác,mtđiumàPDPI1chophépnhưlàktqutrcgiao. Trên8088,miopcodelà1byte,nhưngđnkhi80386ra đithìopcode1bytedùngkhơngđđmãhĩahttplnh,dođĩ bit 15 ca opcode đưc dùng đ tránh phi dùng opcode 2 byte. Cutrúcduynhttrongtrưngopcodelàsdngbitthtthp trongmtslnhđchobitbyte/word,vàbitbêncnhđchđa chbnh(nucĩ)làngunhaylàđích Tipsaubyteopcodetrongnhiulnhlàbytethhaicho bitvtrítốnhng,tươngtnhưhaitrưngmode/registertrong hình6.6.Dochcĩsn8bit,nêntáchrathànhtrưngchđ2bit vàhaitrưngthanhghi3bit.Vychcĩbncáchlpđachtốn hng (so vi tám cách trên PDP11), và mt trong s tốn hng luơnphilàthanhghi.Vlogic,AX,BX,CX,DX,SI,DI,BP,và 163
  15. ChươngVI:Kintrúcblnh SPphicthnhưthanhghi,songnguyêntcmãhĩangăncm mtskthpvàdùngchúngvàotrưnghpđcbit. Bêncnhđĩ,mtslnhcĩ1,2,hoc4bytetrlênqui đnhđachbnhvàcĩth1,2,hoc4bytenadùnglàmtốn hnghng(chnghnnhưdichuyncons100vàothanhghi). Bng6.2cungcptpdngthclnh8088,80286,80386 vàPentium.Milnhtimchatiđasáutrưng,mitrưngt0 đn4byte. Trên8088và80286,lnhngnnhtlà1bytevàdài nhtlà9byte.Trên80386cũngnhưPentium,lnhngnnhtvn là1byte,nhưngthêmtintkíchthưctốnhngvàtintkích thưcđach,lnhcĩthtiđa16byte. CPU PREFIX OPCODE MODE SIB DISPLACEMENT IMMEDIATE 8088 03 1 01 0 02 02 80286 03 1 01 0 02 02 80386 04 12 01 01 04 04 Pentium 04 12 01 01 04 04 Bng6.2.DngthclnhcacácmáytínhIntel Hình6.7chotathydngthclnhcamáyPentiumvicác trưngđưcđnhnghĩanhưsau: • PREFIXbyte:đĩlàphnmãthêmcamãlnhđưcđt trưcopcode.NunĩtntithìnĩbaogmLOCKtipđu t(prefix)vàtipđutlpli(repeatprefix).LOCKprefix đưcdùngđđmbovicdànhriêngvùngnhchias trongmơitrưngđabxlý.Trongkhirepeatprefixđc trưngchomtchuiphéptốnđưclpđilpli,điunày chophépCPUPentiumthchinnhanhhơnlàmtvịnglp đưclptrình. • Opcode:chim1hoc2byte.Opcodecĩthbaogm nhngbitchradliulàkhơngđyđhaylàđyđ(16 hoc32bitphthucvàotngtrưnghpcth),bitchra hưngcadliuđnbnhhoctbnhđi • ModR/M:bytenàychracácthơngtinvtốnhng.Byte ModR/Mchratốnhnglàmtthanhghihaylàtrongb nh.Nunĩlàtrongbnhthìbêntrongtrơngnàysch 164
  16. ChươngVI:Kintrúcblnh ramodeđachnàođưcdùng.TrưngModR/Mbaogm3 phn:phnmode2bitvàhaiphnReg/OpcodevàR/Mmi phn3bitna.ðơikhi3bitcatrưngReg/Opcodeđưcs dngvitínhcáchlàphnmrngcaOpcodetonên trưngOpcodevi11bit.TrưngModchcĩ2bit,điuđĩ cĩnghĩalàchcĩ4cáchtipcnvitốnhngvàmttrong cáctốnhngluơnluơnphilàthanhghi. • SIB:Chophépchramtschititkthutthêmnhm mcđíchthêmvàomtstínhnăngminhưngvnthích hp(support)vicáckiucũ • Displacement:ðachdchchuyn(stìmhiukhơnphn tiptheosau) • Immediate:đachtcthi 04byte 12 01 01 04 04 Prefix Opcode ModR/M SIB Displacement Immediate 6 1 1 Scale Index Base INSTRUCTION 76 543 210 byte/word hưngđidata Mod Reg/Opcode R/M 76 543 210 Hình6.7.FormatlnhPentium 165
  17. ChươngVI:Kintrúcblnh 6.3.4.Cácchđlpđach Cĩthphânlnhtheoslưngđachsdng.Lnhquiđnh mt,haihaybađachđuphbin.Trênnhiumáytínhphéptínhs hcđưcthchinvimtđachduynht.Cĩmtthanhghiđcbit gilàthanhbtíchlu(accumulator)scungcpmttrongcáctốn hng,tốnhngcịnlisnmbnh.Trênmáynày,đachthưnglà đachcatnhm,trongđĩđttốnhng. TrongkintrúcGPRchđlpđachcnphichrõđĩlà mthngs,mtthanhghihaymtvtrítrongbnh.Khilàmt vtrítrongbnhđưcdùngthìđachơnhthcđưcchrabi cách dùng ch đ lp đa ch và đưc gi là đa ch hiu dng (effectiveaddress). ðhiucáchthchinmtlnhtaphibitphươngcáchthơng dchbittrongtrưngđachđtìmtốnhng.Khnănglàchúngcha đachbnhcatốnhng.Thnhưngcũngcĩnhngkhnăngkhác vàtrongphnnàychúngtaskhámphánhngkthutđánhđachcơ bnnhtsau: • ðachtcthi–Immediate • ðachtrctip–Direct • ðachgiántip–Indirect • ðachthanhghi–Register • ðachgiántipthanhghi–Registerinderect • ðachdchchuyn–Displacement • ðachngănxpStack Cáccáchlpđachthơngdngtronghình6.8. Trongbngbng6.3.chracáchtínhđachthcchomichđ lpđachvàcácưukhuytđimcamiloi. Cáckýhiutronghình6.8vàbng6.3: A–Nidungtrongtrưngđachtrongmtlnh R–Nidungtrongtrưngđachmàchramtthanhghinàođĩ EA–ðachthccanơicha(memoryhocregister)tốnhng (X)–NidungcavtríbnhXhoclàthanhghiX 166
  18. ChươngVI:Kintrúcblnh Hình6.8.Cácchđlpđach 167
  19. ChươngVI:Kintrúcblnh Chđ Cáchtính Ưuđim Khuynđim Immediate Operand=A Khơngcĩtham ðlntốn chiubnh hnggiihn Direct EA=A ðơngin khơnggianđa chgiihn Indirect EA=(A) khơnggianđa Thamchiub chln nhphctp Register EA=R Khơngcĩtham khơnggianđa chiubnh chgiihn Register EA=(R) khơnggianđa Thamchiub indirect chln nhph Displacement EA=A+(R) Linhđng Phctp Stack EA=đuca Khơngcĩtham ngdnggii ngănxp chiubnh hn Bng6.3.Cáchtínhđachthc Trưckhiđivàocthtngchđlpđachcĩhaiđimcn lưuý,thnhtđĩlàtrênthctttccáckintrúcmáytínhngàynay cungcpchotanhiuhơnmttrongnhngchđlpđachtrên.Vn đđtralàlàmthnàođbđiukhinxácđnhđưcchđđach nàođưcdùngtronglnh.Cĩnhiuphươngphápkhácnhau.Thưnglà nhngopcodekhácnhausdùngcácchđđachkhácnhau,cũngcĩ thlàmttrongcácbitcalnhđưcdùnglàmtrưngchđ,màgiátr chatrưngnàychrachđđađưcdùng. ðimthhaiđâyliênquanđnđachthcEA.Trongmth thngkhơngdùngbnhothìđachhiudngshoclàmtđach cabnhchính,hoclàmtthanhghi.Trongmththngnhothì đachhiudnglàmtđachohoclàmtthanhghi.Vicspxp 168
  20. ChươngVI:Kintrúcblnh thccađachvtlýlàmtchcnăngcacơchphântrangvàngưi lptrìnhkhơngthyđưc. a)Lpđachtcthi(ImmediateAddressing) Cáchđơnginnhtcholnhquiđnhtốnhnglàđphnđa chtronglnhchachínhtốnhngthayvìđachhocthơngtinkhác mơtvtrítốnhng: OPERAND=A Tốnhngnhưvyđưcgilàtốnhngtcthi(immediate operand)vìtđngđưctìmnptbnhcùnglúcvitìmnpbn thânlnh,nhđĩkhdngtcthi. Lpđachtcthicĩưuđimlàkhicnthêmthamchiub nhbnhđtìmnptốnhng.Nhưcđimlàhnchtốnhngcon svavàotrưngđach.lnhcĩđach3bit(vídnhưtrưng thanhghi),tốnhngsgiihn3bit,vàlàmhnhptínhhuíchca chúng. Chđnàyđưcdùngđđnhnghĩacáchngshoclàkhito mtgiátrnàođĩchomtbin Mtvídtrongcáctrưnghplpđachtcthilàđưagiátr “4”vàothanhghiR1nhưsau: MOV R1,#4 b)Lpđachtrctip(DirectAddressing) Mtphươngthcđơnginkhácđquiđnhtốnhnglà cungcpđachcatnhcĩchatốnhngvàđtnĩvàotrưng đachcalnh.Hìnhthcnàygilàlpđachtrctip(direct addressing): EA=A Ttnhiênphicĩcáchđmáytínhbitđưcđachnàolà tcthivàđachnàolàtrctip.Nĩichung,cĩhaiphươngpháp: sdngopcodekhácnhauhocsdngmtmodeđánhđach đcbitchomiloitốnhng. Cũngnhưcáchlpđachtcthì,đachtrctipcĩmt sgiihn:Lnhluơntruycpđnchmtđachơnh.Tclà giátrtiđachđĩcĩththayđinhưngđachthìkhơng.Như 169
  21. ChươngVI:Kintrúcblnh vyđachtrctipcĩthđưcsdngvicácbintồncc,mà đachcanĩlàbittrưctrongthigianbiêndch. c)Lpđachgiántip(IndirectAddressing) ðánhđachtrctiplàcáchtrongđĩtrưngđachchra mttnhnàohaythanhghinàochatốnhng.Tuynhiên trongtrưnghplpđachtrctipthìchiudàicatrưngđa chthưnglàngnhơnchiudàimtword,dođĩsđachcĩth mãhĩađưcbhnch.Cáchđánhđachgiántiplàtrưngđa chchratnhnàohocthanhghinàochađachcatốn hng(Xemhình6.8): EA=(A) Nĩicáchkháclàtnhhaythanhghitrongtrưngđach gingnhưlàmtcontr(trongC++),trtimttốnhng Vicđánhđachgiántipcnhailntruycpbnh,ln thnhtđlycontrvvàlnthhaiđlytốnhngv. d)Lpđachthanhghi(RegisterAddressing) Vkháinim,lpđachthanhghitươngtnhưlpđach trctip.ðimkhácbitduynhtđâylàthayvìtrưngđach trtimtđachtrongbnhthìđâylàtrtimtthanhghi (thanhghismy)trongđĩlưutrtốnhng: Máyvi16thanhghivàbnh65.536tthtsscĩhai khơnggianđach.Tacĩthxemmtđachtrênmáynhưthlà cĩhaiphn: • Mtbitchobitlàtamundùngthanhghihaytnh • Mttrưngđachchobitlàscnthanhghihaytnh nào. Vìsthanhghiíthơnstnh,dođĩngưitathưng dùngcácdngthclnhkhácnhauchotốnhngthanhghivàtốn hngnh. Cácmáyngàynayđưcthitkcĩcácthanhghivì2lýdo chínhsau: – Cácthanhghihotđngnhanhhơnbnhchính 170
  22. ChươngVI:Kintrúcblnh – Slưngthanhghilàrtítdođĩđmãhĩachúngcũngch cnmtsítbit. e)ðachgiántipthanhghi(RegisterIndirect) ðachthanhghithìgingđachtrctip,cịnđachgián tip thanh ghi thì li ging vi đa ch gián tip. Trong ca hai trưnghpskhácnhauchlàmtcáchlàđachbnhchính, cịnmtcáchlàthanhghi: EA=(R) Trưngđachchasthanhghi,màtrongthanhghiđĩ chađachcatốnhngcnthit. f)ðachðachdchchuyn–Displacement Mtchđđưctnghpthaichđ:đachtrctipvàđa chgiántipthanhghi.Cáchtínhđachthcnhưsau: EA=A+(R) Chđnàyđịihitrongmãlnhphicĩhaitrưngđach,mttrưng chođachthanhghi(R)vàmttrưngchođachtrctipbnh(A). ðachthclàtngcađachAvigiátrđachchatrongthanhghi R. Mtcáchđànhđachdchchuynhaydùnglàdngđánhđach “chs”(Indexing).Cĩnhiuthuttốnđịihimtsthaotáctrêndãy cáccutrúcdliuđưcchatrongcácvtrínhliêntip.Vídchúng taxemmtkhigmNtchimcácvtrính: A,A+1,A+2, ,A+N1 Gischúngcnđưcchuyntivtrính: B,B+1,B+2, ,B+N1 Vàgistadùnglnhmáy MOVEB,A đchuynnidungvtrínhAđnvtrínhB.Máythihànhlnhnày vàsauđĩsalithành MOVEB+1,A+1 rithihànhlnhnày,rilisali,lithihành .clpđilplichu kỳnàychođnkhittcNwordđưccopyxong. 171
  23. ChươngVI:Kintrúcblnh Bàitốnnhưthđưcgiiquytttnhtbngcáchsdngmt thanhghigilàthanhghichs(Indexregister)vàchúnglàmvicnhư sau: Trưngđachscĩhaiphn:mtconscathanhghichsvà mthngs.Trongvídtrênnuchaiđachđuđưcđánhchss dngmtindexregister(IR)cĩchasnguyênk,thilnhMOVB,As chuynnidungcavtrínhA+ktiB+k.BngcáchkhitochoIR giátrbanđu0vàtăngnĩlênbngkíchthưcmtwordmikhicopy xongmtword,thìchúngtachcnsdngmtthanhghichovịnglp copy. VicđánhđachIndexđưcsdngrngrãiđđánhđach mttrưngtimtkhongcáchđãbittínhtđimđucacutrúcd liuđãcho. g)ðachngănxp–Stack trêntađãđưaracáctiêuchíthitkdngthclnh,màmt trongcáctiêuchílàlnhcàngngncàngttđtitkimthigianca CPUvàtitkimbnh.Giihncuicùngcavicgimchiudàiđa chlàlàmcholnhkhơngcịntrưngđachna,chcĩopcodethơi. Thtđángngcnhiênlàđiunàycĩththchinđưcbngcáchs dngmtcutrúcdliucĩtênlàStack. Stackchacácphntdliu(words,characters, )theotrtt liêntiptrongbnh.PhntđutiênđưcđylênStackđưcgilà nmđáycaStack,phntsaucùngvamiđylênStackđưcgilà nmđnhcaStack.Dliuđưcđưavàovàlyratheophươngthc vàođutiênthìrasaucùngFILO(firstinlastout).MiStackđưcgn vimtthanhghihaywordbnhchađachđnhStackvàđưcgi làcontrStack. Hình6.9chotathycácchđlpđachcadliutrong cácmáytínhminhtvàcácvídtươngngvinĩ.Tronghình nàyvàtrongcunsáchnàychúngtadùngphnmrngcangơn ng lp trình C đ biu din các câu lnh. đây chúngtadùng mngMemnhưlàtêncabnhchínhvàRegsđchRegisters. VídchúngtaghiMem[Regs[R1]]đchmtơnhcĩđach đưcghitrongthanhghitênlàR1.Trongbngnàymichđlp 172
  24. ChươngVI:Kintrúcblnh đachscĩmtvídminhhađưcđưara,đngthigiithíchý nghĩacanĩvàchobitnĩđưcdùngkhinào. Hình6.9.Cácchđlpđachthơngdng Vídchđlpđach“thanhghi”(Register)đlàm phéptốncnghaistadùngcâulnh: Add R4,R3. Câulnhnàychothychđthanhghicáctốnhngđu làcácthanhghi.đâyR3vàR4làhaitốnhngcaphéptốn cng.Ýnghĩacacâulnhnàycĩnghĩalà: Regs[R4]Regs[R4]+Regs[R3] TclàtốnhngthnhtnmtrênthanhghicĩtênR4và tốnhngthhainmtrênthanhghicĩtênlàR3sđưccngli vàktqucuicùngslưuvàothanhghiR4.Mũitênchrakt 173
  25. ChươngVI:Kintrúcblnh qusđưclưuvàođâu.ðcbittrongcâulnhvithamchiub nh(Memoryindirect)haytrongCtagilàvicontrtathy tốnhngthhaicĩthêmdu“@”đchtốnhngđĩlàmtđa chvàđachđĩchamtđachkhác,màđachcuinày michagiátrthtcatốnhngnày.Gistrongcâulnh Add R1,@(R3) R1 cha giá tr 5, R3 cha giá tr 16 thì lnh này cĩ th đưcdingiirõhơnnhưhình6.9.TrongR3chagiátr16làmt đach,màtrongđachnàychagiátr4làmtđachkhác,mà trongđach4nàymichagiátrtht7catốnhngthhai. Giátrtốnhngthnhtlà5cngvigiátrtốnhngthhailà 7,đưc12vàgiátrnàylighitrlivàoR1. R1=5 R3=16 0 4 7 8 12 16 4 20 5 7 + 12 Hình6.9.LnhAddvithamchiubnh 174
  26. ChươngVI:Kintrúcblnh 6.4.Blnh Trongphnnàychúng tasxemxétcácloilnhcơbn cacáckintrúcphnmmđưcdùngnhiunht,đchothycác kthutmcngơnngmáydùngđthihànhcáccutrúctrong các ngơnng cpcao. ða s ngày nay, đvit cácchương trình chomáytính,ngưitadùngcácngơnngcpcaodhiuvatiên lihơnnhưC,Pascal,C#, Quátrìnhbiêndchtmtngơngcp caosangngơnngmáytinhànhnhưtronghình6.10. Chươngtrìnhbngngơnng cpcao Trìnhbiêndch (Compiler) Chươngtrìnhbnghpng Bdchhpng (Assempler) Chươngtrìnhbngngơnng máy Hình6.10.Quátrìnhbiêndchrangơnngmáy Domilnhtrongmáytínhlàthpcácconsnhphân0, 1nênrtkhĩnh.ðkhcphcđimyunàyngưitadùnghp ngAssemblyđmơtcácmãlnhnhphânbngcáctngngn màtagilàtginhmãlnh.Ngồiratrongquátrìnhdingii chúngtacịndùngcáckháinimthanhghiđích,thanhghingun1, thanhghingun2. 175
  27. ChươngVI:Kintrúcblnh Tginhmãlnhmơtngngntácvphithihành trêncácthanhghingun,ktquđưclưugitrongthanhghi đích. Mi lnhcangơnng cpcaođưcxâydngbngmt lnh mã máy hoc mt chui nhiu lnh mã máy. Lnh nhy (GOTO)đưc thchinbngcác lnhhpngvnhy(JUMP) hoclnhhpngvvịng.Chúngtaphânbitlnhnhylàmcho bđmchươngtrìnhđưcnpvàođachtuytđinơiphinhy đn(PC←đachtuytđinơiphinhyti),vilnhvịngtheo đĩtachcncngthêmmtđdivàobđmchươngtrình(PC ←PC+đdi). Ngồiradomikiukintrúcmáytínhcĩcáchmãhĩa lnhvàtêncáccâulnhkhácnhau,dođĩtrongphnnàychúngta chđýđnkiucutrúcRISC. 6.4.1.Nhĩmlnhtruyndliu Nhĩmlnhnàynhmtruyndliu(awordorablock)t mtnguncĩthlàthanhghihocbnhđnmtđích.Phnln trong nhĩm này là nhng lnh truyn d liu gia các thanh ghi khác nhau trong CPU. Vic truyn d liu t mt thanhghiđn mtthanhghikháccĩththơngqualnhsau: MOVERi,Rj //truyndliutthanhghiRjđn thanhghiRi đâydliutthanhghingunRjđưcghiđèlênthanh ghiđíchRi,cịndliucaRjthìkhơngthayđi. MtsvídcalnhMOVEnhưtrongbng6.4. 176
  28. ChươngVI:Kintrúcblnh ðích Ngun Víd Giithích Bnh Thanh MOVE100H,AX Chuynnidungtrong ghi AXvaovtrính100H Thanh Bnh MOVEAX,MEM1 Chuynnidungtrongv ghi trínhMEM1chravào thanhghiAX Thanh Thanh MOVEAX,BX Chuynnidungtrong ghi ghi thanhghiBXvàothanh ghiAX Thanh Hngs MOVEAX, Chuyngiátrhngs ghi 0FFFFH h16:FFFFvàothanh ghiAX,s0đuđch rõFFFFHlàmtgiátr hngchkhơngphilà mtnhãn Bng6.4.MtsvídlnhMOVE ðnpmtgiátrtbnhvàothanhghihoclưumtgiá trtthanhghivàobnhtadùngcáclnhsau: LOADđích,ngun víd:LOADRi,M(đach) //RiM[đach] STOREđích,ngun víd:STOREM(đach),Ri //M[đach]←Ri Trongbng6.5chotathymtscáclnhvàýnghĩacanĩ Bng6.5.Mtslnhtruyndliu 177
  29. ChươngVI:Kintrúcblnh 6.4.2.Nhĩmlnhtínhtốnshc: Cáclnhshcbaogmbnphéptínhshccơbnlà cng,tr,nhân,chiavàđodutốnhng. ADD/SB Dngtngquátcacáclnhcng(add)vàtr(subtract) nhưsau: ADDđích,ngun //đíchđích+ngun SUBđích,ngun //đíchđích–ngun trongđĩcáctốnhngđíchvànguncĩthtímđưctheo cácđachkhácnhau,nhưngphichadliucĩcùngđdàivà khơngđưcphépđngthilàhaiơnhvàcũngkhơngđưclà thanhghiđon Víd1: ADD AX,BX //AXAX+BX ADD AL,74H //ALAL+74H SUB CL,AL //CLCL–AL SUB AX,0405H //AXAX–0405H Víd2:VitđonchươngtrìnhbngngơnngAssembly đcng5Hvi3H,dùngcácthanhghiALvàBL.Ktquca phépcnglưuvàobnhtiđach100H. MOV AL,05H //AL05H MOV BL,03H //BL03H ADD AL,BL //ALAL+BL MOV 100H,AL //MEM[100H]AL:di //chuynktqutALvào //vtrínhDS:100H Bng6.6chotatĩmttcáclnhtínhtốnshcvàýnghĩatương ngcanĩ 178
  30. ChươngVI:Kintrúcblnh Tênlnh Ýnghĩa ADD Cng ADDD Cngscĩduchmđng,chínhxáckép SUB Tr SUBD Trscĩduchmđng,chínhxáckép MUL Nhân DIV Chia INC Tănglên1 DEC Gimđi1 NEG ðodutốnhng Bng6.6.Cáclnhtínhtốnshccơbn 6.4.3.Nhĩmlnhlogic: TthchinphéptínhlogicNOT,ANDvàORchotngbit mt.LnhNOTđottccácbittrongtốnhng,cáclnh AND/ORthchincácphéptínhAND/ORđivimtđơibit trongtốnhngngunvàtốnhngđích. AND/OR DngtngquátcalnhAND/ORnhưsau: ANDđích,ngun ORđích,ngun AND/OR thc hin phép tốn Boolean đi vi các tốn hngngunvàđích.PhépANDthưngdùngđcheđihocgili mtvàibitnàođĩca mt tốnhngbngcáchnhân logic tốn hngđĩvitốnhngtcthicĩcácbit0/1ticácvtrícnche/ gilitươngng.PhépORthưngdùngđlpmtvàibitnàođĩ catốnhngbngcáchcnglogictốnhngđĩvitốnhngtc thicĩcácbit1ticácvtrítươngngcnthitlp(tốnhngtc thitrongnhngtrưnghpnàycịnđưcgilàmtn) Víd: ANDAL,BL //NidungthanhghiBLđưcgiao //vinidungtrongthanhghiAL 179
  31. ChươngVI:Kintrúcblnh //vàktquđưclưulivàotrong //thanhghAL.Nuconstrong //ALlà00001101BvàtrongBLlà //00110011Bthìktqutrongthanh //ghiALsauphépANDlà00000001B 6.4.4 Nhĩm các lnh dch chuyn s hc hoc logic (SHIFT ), quay vịng (ROTATE) cĩ hoc khơng cĩ s gi ngã vào, sang phihocsangtrái.Cáclnhnàyđưcthchintrênmtthanhghi vàktqulưugitrongthanhghikhác.Slndchchuyn(mi ln dch sang phi hoc sang trái mt bit) thưng đưc xác đnh trong thanh ghithba.Hình6.11minh ho chocáclnhcơbn nhtcanhĩmnày. SRL(ShiftRightLogicaldchphilogic):Cácbitca wordđưcdchchuynsangphi,bitthpnht(bit0)mt đicịntrnhphân“0”sdchchuynvàobitcaonht SLL(ShiftLeftLogicaldchtráilogic):Cácbitcaword đưcdchchuynsangtrái,trnhphân“0”sdchchuyn vàobitthpnht(bit0),cịnbitcaonhtsmtđi SRA(ShiftRightArithmeticdchphishc):Bitcao nhtlàbitdusđưcgili,cácbitcịnlisdchchuyn sangphicịnbitthpnhtsmtđi. SLA(ShiftLeftArithmetic–dchtráishc):Bítcaonht làbitdusđưcginguyên,cácbitdchsangtrái,bítk bitdumtđi,trnhphân“0”dchchuynvàobitthp nht. Tươngtchocáclnhquayvịngnhưtronghình6.11. 180
  32. ChươngVI:Kintrúcblnh Hình6.11.Cáclnhdchchuynvàquayvịng 181
  33. ChươngVI:Kintrúcblnh 6.4.5. Nhĩmcáclnhcĩđiukinvàlnhnhy(khơngđiu kin) Lnhcĩđiukincĩdng: Nu thì nukhơng (IF THEN ELSE ) Lnhnàybucphighinhđiukinvànhyvịngnu điukinđưctho. Ghinhđiukin. BtínhtốnlogicshcALUcungcpktqungãra tuỳ theo cácngãvào vàphép tính cn làm. Nĩ cũngchomts thơngtinkhácvktqudưidngcácbittrngthái(Haycácbit cflag).CácbitnàylànhngđilưnglogicðÚNGhocSAI (hình6.12). Trongcácbittrngtháitacĩ: +bitduS(Signðúngnuktquâm), +bittrcnghimzeroZ(Zeroðúngnuktqu bngkhơng), +bittrànOVF(Overflow)ðÚNGnuphéptínhs hclàmthanhghikhơngđkhnănglưutrkt qu, +bitsgiC(carry)ðÚNGnusgingãralà 1 Cácbittrênthưngđưcgilàbitmãđiukin. 182
  34. ChươngVI:Kintrúcblnh Tốnhng2 Tốnhng1 Smangvào (Carryin) BitS ALU BitZ BitOVF BitC Ktqu Hình6.12.CácbittrngtháimàALUtora Cĩhaikthutcơbnđghinhcácbittrngthái Cáchthnht,ghicáctrngtháitrongmtthanhghiđadng. VídlnhCMPRk,Ri,Rj LnhtrênslàmphéptínhtrRiRjmàkhơngghiktqu phéptr,màlighicácbittrngtháivàothanhghiRk.Thanhghi nàyđưcdùngchomtlnhnhycĩđiukin.ðimlicak thut này làgiúp lưu trnhiu trng thái sau nhiu phép tính đ dùngvsau.ðimbtlilàphidùngmtthanhghiđadngđ ghilitrngtháisaumiphéptínhmàsthanhghinàylibgii hn32trongcácbxlýhinđi. Cáchthhai,làđcácbittrngtháivàomtthanhghiđc bitgilàthanhghitrngthái.Vnđlưuginidungthanhghi nàyđưcgiiquytbngnhiucách.TrongkintrúcSPARC,ch cĩmtsgiihnlnhđưcphépthayđithanhghitrngtháiví d như lnh ADDCC, SUBCC (các lnh này thc hin các phép tínhcngADDvàphéptínhtrSUBvàcịnlàmthayđithanhghi trng thái). Trong kin trúc PowerPC, thanh ghi trng thái đưc 183
  35. ChươngVI:Kintrúcblnh phân thành8 trưng, mi trưng 4 bit, vy là thanhghiđãphân thành8thanhghitrngtháicon. ðctínhchungcacáclnhnàylàthtthcthichương trình thay đi nh tác đng vào già tr lưu trong thanhghiđm chươngtrình(ProgramCounterPC).Sthayđitrongthanhghi PCcĩthlàkhơngcĩđiukin,vídnhưkhichươngtrìnhthc hinđnmtchnàođĩricnphinhyđnmtvtríkhác,khi đĩtasdnglnhnhy(Jumpinstruction).Trưnghpnàytrong ngơnngcpcaotahaygpđĩlàlnhGOTO,khiđĩgátrđưc np vào trưc trong thanh ghi PC s b xĩa đi và mt lnh mi trongbnhsđưcnpvào. ThanhghiPCcĩththayđicĩđiukin,mànhngđiu kinnàychyudavàocáccnhưbítdu(S),bit Zero (Z), Overflow(O)vàbitCarry(C).Nhngbitcnàyđưclưutrtrên mtthanhghiđcbitgilàthanhghimãđiukin(Condition CoderegisterCC).Giátrcacácbitcnàythayđidavàokt quthcthicacáclnhkhácnhau. Chúngtaxemmtvídcthsau: LOAD #100,R1 Loop:ADD (R2)+,R0 DECREMENT R1 BEQZ R1,Loop Câulnhth4làmtlnhcĩđiukin.Khiktqutăng giátrtrongthanhghiR1làbng0,thìflagZschuynthành1và lnhtiptheođưcthcthislàlnhvtrínhãnLoop. 6.5.CutrúclnhCISCvàRISC Trongmáytínhmithđuđưcđưavcácconsnh phân“0”và“1”bivìmáytínhchhiucácmcđinthtương ngvi0/1 trênmitransistorcth,ngưisdngmun thc hinmtchươngtrìnhnàođy,phinpcácmãlnhchgmcác cons01vàobnhchomáytính.Cĩ3cáchcơbnđlàmvic y: 184
  36. ChươngVI:Kintrúcblnh • Vitngaydngmãmáyvicáccons0,1vànpvàobnh. Cáchnàyrtkhĩthcthibivìthnhtrtdbnhmlngia cáccons0và1;thhairtkhĩnhcáclnhđưcmãhĩanhư thnàovàthbalàrtmtthigianđlàmvicđĩ. • Vit dng tên gi nh bng hp ng (Assembler), sau đĩ biên dchramãmáy,cpnàycũngrtgnvingơnngmáyvàcũng khĩthchinvicácchươngtrìnhphctp.Tuynhiên,cutrúc gnnh,cáclnhcĩtêntươngngdnh. • VitbngmtngơnngcpcaonhưC++,Pascal,Java, ,sau đĩdùngmttrìnhbiêndch(compiler)đdchramãmáy.Cách này tuy d vi ngưi vit chương trình nhưng cũng s làm chương trình cĩ dung lưng ln hơn nu vit bng ASM. Và tháchthclàlàmsaocácnhàsnxutphnmm,phncngbt taynhauđchươngtrìnhbiêndchnàythtchuntc,nhgn, khơngtonhiucodetrunggian. Trongsutthpniên1980,cácnhàthitkcgngthuhp khong cách gia ngơn ng cp cao ca con ngưi và ngơn ng máy,hđãđưaracutrúcvicácchlnhphctpgilàCISC (Complex Instruction Set Computer), cĩ các ch đ đnh đa ch khácnhau,milnhthcthicnnhiulnđnhđachđlyd liu,vàdođĩ,tnnhiuchukìxungnhpchomichlnh. Nu vic gim thiu ranh gii gia tp lnh ca vi điu khinvàngơnngcpcaokhơngphilàmtcáchhayđmáytính hotđnghiuqu,cácnhàthitkphilàmsaođtiưutcđ xlý? Numunbitcáchlàmđvixlýhotđngnhanhhơn, taphibitvixlýdùnghuhtthigiancachúngvàovicgì? Chúngtadnghĩrng:Vixlýttnhiêndùnghuhtthigian canĩđtínhtốn;nghĩalàthigianhuhtbALU.Thtra, theothngkê(xembng6.7)thìsuyđốnnàyhồntồnsailm: 185
  37. ChươngVI:Kintrúcblnh Loilnh %sdngthigian Chuyndliu 43% ðiukhindịngchy 23% Tínhtốnshc 15% Sosánh 13% PhéptốnLogic 5% Cáclnhkhác 1% Bng6.7.Thngkêthigianthchincácloilnh  SosánhCISCvàRISC S khác bit cơ bn gia các chip dịng máy tính vi tp lnhrútgnRISC(reducedinstructionsetcomputer)vàmáytính vi tp lnh phc tp CISC (complex instruction set computer, chnghnnhưdịngchipx86caIntel)cĩthđưcxemnhưcuc ganhđuagianhàlptrìnhvànhàthitkchip.ChipCISCđưc thitk nhm to thun li cho cácnhàlp trìnhng dngbng cách rútgnnhiucâulnhđơngin,thơngdngthành mtcâu lnhthcthidài.ðiunàylàmchoCISCxlýchmhơnnhưngli đt yu t thân thin. mt khác, RISC nhanh nhưng kém thân thinhơn,micâulnhđơngintrongRISCphcvchomtmc đíchhprtcth,thchinrtnhanhvàcáclnhnàyđưctin hànhsongsong.RISCđịihinhàlptrìnhphikiênnhn,giivà mttrìnhbiêndchđưctiưuklưng.  ðimmnhcabxlýdùngtplnhRISC: – Kíchthưcmingbándnnhhơn:bxlýđơnginđịi hiíttransistorhơn,dođĩ,kíchthưccndùngnhli, dànhvùngdintíchtrngđtăngcácchcnăngnhưb nhcache,chcnăngqunlýbnh, vv – Thigianpháttrinmtsnphmngnhơndokĩthutđơn ginhơn – Tcđxlýtănglênđángk.Khitađtracácchlnh phctp,tuynĩgngũivingơnngcpcao,nhưngnhư th,vơtìnhcũnglàmcácchlnhkhácphctplên,vàđ 186
  38. ChươngVI:Kintrúcblnh thcthimtchlnhnhưvycntnnhiuchukìxung nhp.Trongkhiđĩ,nudùngRISCchmtmtchukìxung nhpchomilnh,khitaphânnhvnđphctpthành cácvnđđơnginthìcáchgiiquytstthơn.  CácđimbtlicaRISC: KhơngphiRISCchcĩđiuthunli,nĩcũngcĩmtvài btcp,màcthlà: – TplnhcaRISCkhơngphongphúbngCISC,nhưvy khicnthitkmtchươngtrìnhnàođĩmàkhơngcĩlnh cnthitthìphithơngquamtlotcáclnhkháclàmtăng lênschukỳxungnhpcnthit,tclàđãlàmchmh thngđi. – Cmthâmnhpbnhđivittccáclnhngoitrcác lnhđcvàghivàobnh.Dođĩtabucphidùngnhiu lnhđlàmmtcơngvicnhtđnh. – Cnthitphitínhcácđachhiudngvìkhơngcĩnhiu cáchđnhv. – Khơngththcthicácmãlnhcax86,mtkiukintrúc máytínhđãquáthơngdngvàquenthucvimingưi. Nhưvyđtíchhpđưcphidùngcácphnmmhtr nncơschoRISC,tuynhiên,vimáytínhcaIBM,cĩ thbtchi. Tĩmlicácđimkhácbitcơbngiahaikiukintrúc RISCvàCISCcĩthlitkênhưtrongbng6.8. 187
  39. ChươngVI:Kintrúcblnh RISC CISC – Kích thưc các lnh (đ dài – Kích thưc tp lnh thay đi lnh)làcđnh(32bit)vich vi rt nhiu đnh dng khác mtvàiđnhdng. nhau – S dng kin trúc loadstore – Cho phép giá tr trong b nh cáclnhxlýdliuhotđng đưc dùng như như tốn hng ch trong thanh ghi và cách ly trongcácchlnhxlýdliu vicáclnhtruycpbnh – Mt s ln các thanh ghi đa – Cĩ rt nhiu thanh ghi, nhưng dng32bit,chophépcutrúc hu ht ch đ s dng cho mt loadstorehotđnghiuqu. mcđíchriêngbitnàođy – Cĩ mt s ít lnh (thưng –Cĩrtnhiulnh(khong500) dưi100lnh) –Cĩmtsítcáckiuđnhv( – Cĩ nhiu kiu đnh v (xem thưnglàđnhvtcthìvàđnh phn6.3.4) vgiántipquamtthanhghi). – Cĩ mtsítdnglnh(mt –Cĩnhiudnglnh hochai) –Chcĩcáclnhghihocđcơ –Cĩnhiulnhkháccũngthâm nhmithâmnhpvàobnh. nhpvàobnhđưc – Gii mã các lnh logic bng – S dng rt nhiu code trong ktniphncng ROMgiimãcácchlnh –Cácmáycũítkhichophépcác –Thcthichlnhtheocutrúc dịng lnh thc thi kiu này, dịng chy (xem hình 7.9 trong chúngphitunthtdịnglnh chươngsau) nàymiđndịnglnhkhác –Cnnhiuchukìxungnhpđ hồnthànhmtlnh –Mtlnhthcthitrong1chu kìxungnhp Bng6.8.CácđimkhácnhaucơbngiaRISCvàCISC 188
  40. ChươngVI:Kintrúcblnh CÂUHIVÀBÀITPCHƯƠNGVI 1. Cĩmáyloikintrúcblnhcơbn?Nêucácưuvànhưc đimcatngloi 2. Chobitcácđctínhcơbncakiukintrúcthanhghiđa dng. 3. ðachbnhđưcspxpnhưthnào?Giacáchca IntelvàMotorolakhácbitnhaugì?Vưngmcgìcĩth xyrakhimáytínhcahaihãngnàyktnivinhau? 4. Chobitcáchmãhĩatplnhvàđưaramtvàidngmã hĩa 5. Hãychobitvàgiithíchcáctiêuchunthitkdngthc lnh. 6. Chobitcáchmãhĩatplnhvàđưaramtvàidngmã hĩa 7. Thitkopcodemrngnhmchophépmãhĩanidung sautronglnh36bit a) 7lnhcĩhaiđach15bitvàmtshiuthanhghi 3bit b) 500lnhcĩmtđach15bitvàmtshiuthanh ghi3bit c) 50lnhkhơngcĩđachhocthanhghi 8. Cĩththitkopcodemrngđchophépmãhĩani dungsautronglnh12bitđưckhơng?Thanhghirng3 bit a) 4lnhcĩbathanhghi b) 255lnhcĩmtthanhghi c) 16lnhkhơngcĩthanhghi 189
  41. ChươngVI:Kintrúcblnh 9. Chobitcácchđlpđachvàcácưu,nhưcđimca tngloi.Mơtbnghìnhcáccáchlpđachđĩ. 10. Mơtcáckiuthihànhlnhcamtmáytính.Tisaokiu thihànhlnhthanhghi–thanhghiđưcdùngnhiuhin ti? 11. Hãydingiiquátrìnhbiêndchrangơnngmáytcác ngơnngcpcao 12. Cáclnhmáytínhđưcphânranhngnhĩmlnhnào?đưa ramtvídchotngnhĩmlnh. 13. Mơtbnghìnhvcáclnhdchchuynvàquayvịngvà giithíchtácdngcacáclnh. 14. HãychobitmtsbittrngtháimàALUtoravàcách dùngcácbitnàytrongcáclnhnhy 15. Hãyphânbitskhácnhaugiahaikiukintrúcmáytính RISCvàCISC. 190