intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo Trình Kiến Trúc Máy Tính - Nguyễn Hữu Lộ phần 8

Chia sẻ: Dqwdqweferg Vgergerghegh | Ngày: | Loại File: PDF | Số trang:13

71
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Ngoài ra, một số máy tính, sử dụng chủ yếu trong nghiên cứu và tính toán khoa học, khác biệt rất đáng kể với mô hình trên, nhưng chúng ít có ứng dụng thương mại vì mô hình lập trình chúng vẫn chưa được chuẩn hóa.

Chủ đề:
Lưu

Nội dung Text: Giáo Trình Kiến Trúc Máy Tính - Nguyễn Hữu Lộ phần 8

  1. -92- Caán Truùc Maùy Tính Hình 4.1 (a) moâ taû moät thanh ghi 8 bit ñöôïc noái vôùi moät bus nhaäp vaø moät bus xuaát. Thanh ghi bao goàm 8 flip flop loaïi D, moãi flip flop löu tröõ 1 bit vaø ñöôïc noái vôùi bus xuaát qua moät coång ñeäm khoâng ñaûo. Thanh ghi coù hai tín hieäu ñieàu khieån, CK vaø cho pheùp xuaát OE (output enable), noái ñeán taát caû caùc flip flop. Bình thöôøng 2 tín hieäu naøy ôû traïng thaùi tónh nhöng thænh thoaûng chuùng ñöôïc xaùc laäp, gaây neân taùc ñoäng töông öùng. Khi CK khoâng xaùc laäp, noäi dung cuûa thanh ghi bôûi caùc tín hieäu treân Bus. Khi CK xaùc laäp, thanh ghi ñöôïc naïp töø bus nhaäp. Khi OE khoâng xaùc laäp, thanh ghi khoâng ñöôïc keát noái vôùi bus xuaát. Ngöôïc laïi khi OE ñöôïc xaùc laäp, noäi dung cuûa thanh ghi ñöôïc naïp neân bus xuaát ( thanh ghi xuaát thoâng tin leân bus ) Hình 4.1 (a) chi tieát moät thanh ghi 8-bit noái vôùi moät bus nhaäp vaø moät bus xuaát b) kyù hieäu cuûa moät thanh ghi 16 – bit vôùi moät bus nhaäp vaø 2 bus xuaát Neáu coù moät thanh ghi khaùc, R chaúng haïn, coù caùc ngoõ vaøo noái vôùi Bus xuaát cuûa thanh ghi vöøa moâ taû ôû treân, thanh gi naøy coù theå truyeàn thoâng tin ñeán R. Ñeå thöïc hieän ñieàu naøy, OE phaûi ñöôïc xaùc laäp vaø giöõ ôû traïng thaùi naøy ñuû laâu ñeå ñöa thoâng tin leân bus oån ñònh. Keá ñeán ñöôøng CK cuûa R ñöôïc xaùc laäp ñeå naïp cho R thoâng tin naøy. Thao taùc môû coång ñöa thoâng tin cuûa moät thanh ghi leân bus ñeå noät thanh ghi khaùc naïp vaøo thöôøng xaûy ra ôû lôùp vi chöông trình. Hình 4.1 b) trình baøy moät thanh ghi 16 bit vôùi 2 bus xuaát , moãi bus ñöôïc ñieàu khieån bôiû moät tín hieäu OE khaùc nhau Nguyeãn Höõu Loäc Khoa Vaät Lyù
  2. -93- Caán Truùc Maùy Tính II. MOÄT VÍ DUÏ VEÀ VI CHÖÔNG TRÌNH: Hình 4.2: Sô ñoà khoái cuûa 1 CPU ñôn giaûn cuûa moät maùy tính ñieän töû thieát keá theo phöông phaùp vi chöông trình hoaù. Ñeå thöïc hieän moät leänh coäng (ADD) caàn moät heä toái thieåu caùc pheùp vi toaùn: Kyù töï gôïi nhôù Ghi chuù MAR-M Noái MAR vôùi BUS M MBR-M Noái MBR vôùi BUS M PC-D Noái PC vôùi BUS D IA-D Noái IA (cuûa IR) vôùi BUS D AC-D Noái Accumulator vôùi BUS D MTS Noái BUS M vôùi BUS S qua ALU DTS Noái BUS D vôùi BUS S qua ALU S-MAR Noái BUS S vôùi MAR S-MBR Noái BUS S vôùi MBR S-PC Noái BUS S vôùi PC S-IR Noái BUS S vôùi IR Nguyeãn Höõu Loäc Khoa Vaät Lyù
  3. -94- Caán Truùc Maùy Tính S-AC Noái BUS S vôùi AC R Ñoïc noäi dung trong Mem ra MBR W Vieát noäi dung töø MBR vaøo Mem PLUS Coäng noäi dung coù treân BUS D vaø BUSM taïi ALU vaø ñöa ra BUS S ONE Noái BUS D vôùi BUS S qua ALU coäng 1 JMP Nhaûy ñeán ñòa chæ trong leänh sau neáu A=0 JOPC Nhaûy ñeán ñòa chæ cuûa maõ leänh (giaûi maõ leänh) Hình 4.3: heä toái thieåu caùc pheùp vi toaùn VI LEÄNH MEM Nhaûy ALU BUSM BUSD BUSS Ñòa chæ PC-MAR DTS PCD SMAR |ADDR|MBR R (MBR)IR MTS MBRM SIR DECODE JOPC (IA)MAR DTS IAD SMAR |DATA|MBR R MBR+A PLUS MBRM ACD SAC PC+1 ONE PCD SPC Hình 4.4: Vi chöông trình thöïc hieän leänh ADD Söû duïng caùc phöông phaùp vieát chöông trình: - Moùc noái chöông trình con - Ñaùnh ñòa chæ chæ soá hoaù - Ñaùnh ñòa chæ thoâng soá hoaù Öu ñieåm: Giaûm sai laàm logic - Coù khaû naêng moâ phoûng nhieàu thieát bò coù chöùc naêng khaùc nhau baèng 1 maùy - Xaây döïng keát caáu cuûa heä thoáng coù theå quyeát ñònh trong giai ñoaïn cuoái cuûa quaù trình thieát keá Nguyeãn Höõu Loäc Khoa Vaät Lyù
  4. -95- Caán Truùc Maùy Tính CHÖÔNG 5: LÔÙP MAÙY QUY ÖÔÙC Chöông naøy giôùi thieäu lôùp maùy qui öôùc (lôùp 2) vaø thaûo luaän nhieàu khía caïnh veà caáu truùc cuûa lôùp naøy. Theo lòch söû, ngoân ngöõ maùy lôùp 2 ñöôïc phaùt trieån tröôùc baát kyø moät ngoân ngöõ maùy naøo khaùc vaø vaãn ñöôïc xem laø moät ngoân ngöõ maùy phoå bieán. Do bôûi treân nhieàu maùy, vi chöông trình ñöôïc ñaët trong boä nhôù chæ ñoïc, ngöôøi söû duïng (khoâng phaûi ngöôøi cheá taïo maùy) khoâng theå vieát c h ö ô n g t r ì n h c h o m a ù y l ô ù p 1 . H ô n n ö õ a , n g a y treân nhöõng maùy ngöôøi söû duïng coù theå vi laäp trình, söï phöùc taïp raát lôùn cuûa caáu truùc lôùp 1 cuõng ñuû laøm haàu heát nhöõng ngöôøi laäp trình e ngaïi, tröø nhöõng ngöôøi laäp trình chuyeân nghieäp. Ngoaøi ra, do khoâng coù moät maùy naøo coù söï baûo veä phaàn cöùng ôû lôùp 1, neân khoâng theå cho pheùp moät ngöôøi söûa sai (debug) caùc vi chöông trình môùi trong khi moät ngöôøi khaùc ñang söû duïng maùy. Ñaëc tính naøy hôn nöõa coøn lôùp ngöôøi söû duïng laäp vi chöông trình. I. CAÙC THÍ DUÏ VEÀ LÔÙP MAÙY QUI ÖÔÙC: Thay vì coá gaéng ñònh nghóa moät caùch chính xaùc lôùp maùy qui öôùc laø gì (coù leõ khoâng theå ñònh nghóa ñöôïc), chuùng ta seõ giôùi thieäu lôùp maùy naøy baèng caùch khaûo saùt caùc ví duï, tröôùc tieân laø Intel. Muïc ñích cuûa vieäc nghieân cöùu hoï CPU hieän coù naøy laø nhaèm trình baøy nhöõng yù töôûng ñöôïc thaûo luaän ôû ñaây coù theå ñöôïc aùp duïng nhö theá naøo vôùi theá giôùi thöïc. Caùc maùy naøy seõ ñöôïc so saùnh vaø ñoái chieáu theo nhieàu caùch khaùc nhau ñeå trình baøy nhöõng choïn löïa khaùc nhau cuûa caùc nhaø thieát keá khaùc nhau. Caùc CPU naøy ñöôïc duøng ñeå minh hoïa yù töôûng thieát keá moät maùy tính nhö laø moät chuoãi caùc lôùp maùy. Nhöõng ñaëc tính khaùc nhau veà caáu truùc cuûa chuùng seõ ñöôïc khaûo saùt vaø thoâng tin veà laäp trình treân chuùng cuõng ñöôïc giôùi thieäu taïi nhöõng ñieåm caàn thieát. Tuy nhieân, ôû ñaây khoâng cung caáp moät moâ taû hoaøn toaøn ñaày ñuû. Ñeå hieåu thoâng suoát veà taát caû chi tieát cuûa caùc CPU, haõy tham khaûo nhöõng taøi lieäu ñöôïc caùc nhaø cheá taïo ra chuùng xuaát baûn. Cuoái cuøng, chöông naøy chuû yeáu xöû lyù nhöõng leänh vaø caáu truùc maø caùc chöông trình cuûa ngöôøi söû duïng duøng ñeán (nghóa laø chöông trình öùng duïng). Caùc khía caïnh veà caáu truùc vaø nhöõng leänh lieân quan ñeán ngöôøi vieát heä ñieàu haønh seõ bò boû qua hoaëc ñöôïc gaùc laïi cho tôùi khi vaán ñeà ñöôïc baøn ñeán trong chöông 6. 1. Hoï 8088 cuûa Intel : Baét ñaàu thaûo luaän veà lôùp maùy qui öôùc vôùi chip 8088 cuûa Intel laø thích hôïp vì ñaây laø boä oùc cuûa caùc maùy IPM PC vaø nhöõng maùy moâ phoûng theo, vaø do vaäy CPU naøy ñöôïc söû duïng roäng raõi haàu nhö treân khaép theá giôùi. Nguyeãn Höõu Loäc Khoa Vaät Lyù
  5. -96- Caán Truùc Maùy Tính Hình 5.1:Caáu truùc boä nhôù cuûa 8088 ÔÛ lôùp maùy qui öôùc, 8088 vaø 8086 gioáng heät nhau neân moïi ñieàu chuùng ta noùi veà 8088 cuõng aùp duïng ñöôïc cho 8086. Chip 8088 coù theå ñòa chæ hoùa 220 byte, ñaùnh soá lieân tuïc baét ñaàu töø 0 nhö trình baøy trong hình 5.1. Caùc leänh coù theå hoaït ñoäng treân caùc byte 8 bit hoaëc treân caùc töø 16 bit. Töø khoâng nhaát thieát baét ñaàu ôû byte chaün maëc duø vôùi caùc töø baét ñaàu ôû byte chaün, 8086 laøm vieäc coù hieäu quaû hôn. Vôùi boä nhôù 220 byte, 8088 thöïc söï caàn caùc ñòa chæ 20 bit ñeå ñòa chæ hoùa boä nhôù. Vì caùc thanh ghi vaø moïi thöù khaùc cuûa maùy ñeàu duøng caùc töø 16 bit, neân caùc soá 20 bit roõ raøng khoâng thuaän tieän. Ñeå giaûi quyeát vaán ñeà naøy, caùc nhaø thieát keá CPU phaûi caàn ñeán giaûi phaùp goïi laø "queø quaët" (kludge=moät bieät ngöõ cuûa maùy tính chæ moät phöông phaùp khoâng lòch söï vaø vuïng veà ñöôïc duøng ñeå laøm moät ñieàu gì ñoù). Giaûi phaùp naøy ñöa ra 4 thanh ghi phaân ñoaïn (segment): maõ, döõ lieäu, ngaên xeáp vaø phuï (code, data, stack vaø extra), moãi thanh ghi phaân ñoaïn chöùa moät ñòa chæ boä nhôù troû tôùi neàn (base) cuûa moät phaân ñoaïn 64K. Moãi thanh ghi phaân ñoaïn troû tôùi moät nôi naøo ñoù trong khoâng gian ñòa chæ 220 byte, nhö trình baøy trong hình 5.2. taát caû vieäc tìm naïp leänh ñeàu coù lieân quan ñeán thanh ghi phaân ñoaïn maõ. Thí duï, neáu thanh ghi naøy troû ñeán ñòa chæ 96000 vaø boä ñeám chöông trình coù giaù trò 1024, leänh keá tieáp seõ ñöôïc tìm naïp töø ñòa chæ 97024. Vôùi giaù trò naøy cuûa thanh ghi phaân ñoaïn maõ, caùc leänh ñaët trong taàm ñòa chæ töø 96000 tôùi 161535 ñeàu ñöôïc truy xuaát. Ñeå truy xuaát moät leänh ôû ngoaøi taàm naøy, ta phaûi thay ñoåi noäi dung thanh ghi phaân ñoaïn maõ. Töông töï, thanh ghi phaân ñoaïn döõ lieäu vaø thanh ghi phaân ñoaïn ngaên xeáp duøng ñeå truy xuaát caùc phaân ñoaïn döõ lieäu vaø phaân ñoaïn ngaên xeáp. Cuoái cuøng, thanh ghi phaân ñoaïn phuï (cuõng duøng ñeå truy xuaát phaân ñoaïn döõ lieäu) laø moät thanh ghi döï phoøng khi caàn. Nguyeãn Höõu Loäc Khoa Vaät Lyù
  6. -97- Caán Truùc Maùy Tính Sô ñoà naøy coù nghóa laø baát cöù luùc naøo, 256K boä nhôù ñeàu coù theå truy xuaát ñöôïc maø khoâng phaûi thay ñoåi moät thanh ghi phaân ñoaïn naøo caû. Hình 5.2: Söû duïng caùc thanh ghi phaân ñoaïn treân 8088 Moät soá trình bieân dòch giôùi haïn chöông trình vôùi chieàu daøi 64K cho vaên baûn chöông trình (nghóa laø caùc leänh) vaø 64K khaùc cho caû döõ lieäu vaø ngaên xeáp nhaèm traùnh toån phí (overhead) thôøi gian keát hôïp vôùi vieäc naïp vaø caát lieân tuïc caùc thanh ghi phaân ñoaïn hoaëc duøng thanh ghi phaân ñoaïn phuï. Theo lyù thuyeát, caùc thanh ghi phaân ñoaïn neân coù ñoä roäng 20 bit ñeå troû tôùi baát kyø ñòa chæ naøo trong khoâng gian ñòa chæ 220 byte. Tuy nhieân, nhö ñaõ noùi treân, 8088 khoâng ñöôïc trang bò ñeå xöû lí caùc soá thanh ghi phaân ñoaïn chæ troû tôùi nhöõng ñòa chæ laø boäi soá cuûa 16 ñeå 4 bit thaáp nhaát cuûa ñòa chæ laø zero vaø 4 bit naøy khoâng caàn caát vaøo thanh ghi phaân ñoaïn. Nhö vaäy, caùc thanh ghi phaân ñoaïn chæ chöùa 16 bit cao cuûa ñòa chæ 20 bit. 8088 coù 14 thanh ghi 16 bit ( hình 5.3 ). Thanh ghi AX chuû yeáu ñöôïc duøng cho caùc pheùp toaùn soá hoïc. Thí duï ñeå tính toång 2 soá nguyeân, chöông trình coù theå naïp 1 trong 2 soá nguyeân naøo ñoù vaøo AX, sau ñoù coäng soá thöù 2 vôùi AX vaø cuoái cuøng caát AX vaøo boä nhôù. Cuõng coù theå duøng nhöõng thanh ghi khaùc, nhöng caùc leänh töông öùng ñeå thöïc hieän pheùp toaùn seõ daøi hôn vaø chaäm hôn so vôùi nhöõng leänh duøng thanh ghi AX. Nguyeãn Höõu Loäc Khoa Vaät Lyù
  7. -98- Caán Truùc Maùy Tính (a) Hình 5.3: Caùc thanh ghi 8088 Thanh ghi BX tieâu bieåu duøng ñeå chöùa con troû ( pointer ) troû ñeán boä nhôù, thanh ghi CX chöùa soá ñeám trong caùc leänh voøng laëp. Ñeå laëp laïi moät voøng laëp n laàn, CX ñöôïc naïp giaù trò n sau moãi laàn laëp, CX ñöôïc giaûm 1 cho ñeán khi CX baèng zero, voøng laëp keát thuùc. DX laø moät thanh ghi môû roäng cuûa AX trong caùc leänh nhaân vaø chia, thanh ghi naøy chöùa nöûa cao cuûa moät tích 32 bit hoaëc nöûa cao cuûa soá bò chia 32 bit. Moãi thanh ghi 16 bit naøy (AX, BX,CX,DX) ñeàu coù nöûa thaáp vaø nöûa cao, chuùng ñeàu coù theå ñöôïc ñòa chæ hoaù rieâng leû. Khi duøng phöông phaùp ñòa chæ hoaù naøy, chuùng hình thaønh moät taäp 8 thanh ghi 1 byte coù theå duøng vôùi leänh thao taùc treân caùc ñaïi löôïng 1 byte. Söû duïng caùc thanh ghi theo kieåu naøy laø daáu veát coøn toàn taïi cuûa caùch laøm vieäc trong 8088 cuõ (CPU 8 bit). Thanh ghi SI vaø DI ñöôïc duøng cho caùc thao taùc chuoãi. Moät thao taùc chuoãi ñieån hình caàn coù ñòa chæ nguoàn xaùc ñònh bôûi thanh ghi SI trong phaân ñoaïn döõ lieäu vaø ñòa chæ ñích xaùc ñònh bôûi thanh ghi DI trong phaân ñoaïn phuï. Thí duï, leänh cho pheùp di chuyeån 1 soá byte töø nguoàn tôùi ñích. Thanh ghi BP vaø SP thöôøng ñöôïc duøng ñeå ñòa chæ hoaù stack. BP troû tôùi ñaùy cuûa khung ngaên xeáp hieän taïi vaø SP troû tôùi ñænh cuûa khung ngaên xeáp. Bieán cuïc boä cuûa thuû tuïc hieän taïi thöôøng ñöôïc ñòa chæ hoaù baèng caùch cung caáp böôùc nhaûy (offset) cuûa bieán töø BP (bôûi vì bieán cuïc boä khoâng theû chæ roõ ñòa chæ lieân quan tôùi SP). Keá tieáp laø 4 thanh ghi phaân ñoaïn, nhö ñaõ moâ taû tröôùc ñaây, theo sau laø boä ñeám chöông trình PC duøng ñeå troû tôùi leänh keá tieáp (lieân quan tôùi vò trí baét ñaàu cuûa phaân ñoaïn maõ). Nguyeãn Höõu Loäc Khoa Vaät Lyù
  8. -99- Caán Truùc Maùy Tính Hai thanh ghi cuoái cuøng laø con troû chöông trình IP (instruction pointer) vaø caùc côø (flag), treân haàu heát caùc maùy khaùc chuùng ñöôïc goïi laø boä ñeám chöông trình vaø töø traïng thaùi chöông trình PSW (program status word). Boä ñeám chöông trình troû tôùi leänh keá tieáp seõ ñöôïc thöïc hieän. Thanh ghi caùc côø (xem hình 5.4) laø thanh ghi môùi. Thaät ra ñaây khoâng phaûi laø thanh ghi bình thöôøng maølaø 1 taäp hôïp caùc bit coù theå ñöôïc thieát laäp (set), xoùa (clear) vaø kieåm tra bôûi nhöõng leänh khaùc nhau. Moät caùch toùm taét, caùc bit coù yù nghóa nhö sau: Bit D xaùc ñònh höôùng (direction) cuûa caùc thao taùc chuoåi. Bit I cho pheùp ngaét. Bit T cho pheùp chaïy chöông trình töøng böôùc ñeå theo doõi. Hình 5.4: Thanh ghi caùc côø cuûa 8088 Caùc bit coøn laïi thöôøng ñöôïc goïi laø caùc maõ ñieàu kieän (condition code) bôûi vì chuùng ñöôïc thieát laäp vaø xoùa bôûi nhöõng leänh khaùc nhau tuøy thuoäc vaøo nhöõng ñieàu kieän khaùc nhau xaûy ra (keát quaû aâm, zero, vaø v.v… ). Bit 0 ñöôïc thieát laäp khi keát quaû cuûa pheùp toaùn soá hoïc bò traøn. Bit S ñöôïc thieát laäp bôûi caùc leänh soá hoïc, 1 cho keát quaû aâm, 0 cho keát quaû döông. Töông töï, bit Z ñöôïc thieát laäp laø 1 khi keát quaû baèng zero vaø bò xoùa veà 0 khi keát quaû khaùc zero. Caùc bit A vaø C bieåu thò soá nhôù xuaát hieän ôû giöõa vaø cuoái toaùn haïng. Cuoái cuøng, bit P laø bit kieåm tra chaün leû (parity) keát quaû cuûa moät leänh soá hoïc. Coù 7 bit khoâng ñöôïc söû duïng trong 8088, nhöng moät soá trong chuùng ñöôïc duøng cho nhöõng chip keá thöøa. Taäp leänh cuûa 8088 ñöôïc lieät keâ trong hình 5.5. Nhieàu leänh tham chieáu 1 hoaëc 2 toaùn haïng (operand), hoaëc trong caùc thanh ghi hoaëc trong boä nhôù. Thí duï, leänh INC coäng theâm 1 vaøo toaùn haïng. Leänh ADD coäng nguoàn vaøo ñích. Moät soá leänh coù vaøi bieán theå lieân quan maät thieát. Thí duï, caùc leänh dòch bit coù theå dòch traùi hoaëc dòch phaûi, coù theå xöû lyù vôùi bit coù daáu hoaëc khoâng. Haàu heát caùc leänh ñeàu coù nhieàu daïng maõ hoaù khaùc nhau tuyø thuoäc vaøo baûn chaát cuûa caùc toaùn haïng. Trong hình 5.5, tröôøng scr laø nguoàn cuûa thoâng tin vaø khoâng bò thay ñoåi. Traùi laïi, tröôøng dst laø ñích cuûa thoâng tin vaø thöôøng bò thay ñoåi bôûi leänh. Coù nhöõng quy luaät cho pheùp moät toaùn haïch naøo ñoù laø nguoàn hay laø ñích , chuùng thöôøng thay ñoåi giöõa leänh naøy vôùi leänh khaùc vaø chuùng ta seõ khoâng baøn theâm ôû ñaây. Ña soá leänh ñeàu coù 2 bieán theå, moät bieán theå hoat ñoäng treân caùc töø 16-bit vaø moät soá bieán theå hoaët ñoäng treân caùc byte 8-bit. Nhöõng bieán theå naøy ñöôïc phaân bieät baèng moät bit trong leänh. Ñeå thuaän tieän, ta seõ chia caùc leänh thaønh nhieàu nhoùm. Nhoùm ñaàu tieân chöùa caùc leänh di chuyeån döõ lieäu beân trong maùy ; giöõa caùc thanh ghi, boä nhôù vaø ngaên xeáp. Nhoùm thöù 2 thöïc hieän caùc pheùp tính soá hoïc, caû soá coù daáu vaø khoâng coù daáu. Ñoái vôùi pheùp nhaân Nguyeãn Höõu Loäc Khoa Vaät Lyù
  9. -100- Caán Truùc Maùy Tính chia, tích soá hoaëc soá bò chia 32-bit ñöôïc caát trong AX (chöùa phaàn thaáp) vaø DX (chöùa phaàn cao). Nhoùm thöù 3 thöïc hieän caùc pheùp tính soá BCD (binary-coded decimal), xöû lyù töøng byte nhö laø hai nibble (nöûa byte)4 bit. Moãi nibble chöùa moät soá thaäp phaân (töø 0 ñeán 9). Caùc toå hôïp bit töø 1010 tôùi 1111 khoâng ñöôïc duøng . moät soá nguyeân 16-bit coù theå chöùa moät soá thaäp phaân töø 0 ñeán 9999. Duø daïng löu tröõ naøy khoâng coù hieäu quaû nhöng traùnh ñöôïc söï caàn thieát phaûi ñoåi soá thaäp phaân sang nhò phaân roài sau ñoù phaûi ñoåi laïi thaønh thaäp phaân ñeå xuaát keát quaû. Nhöõng leänh naøy ñöôïc duøng ñeå thöïc hieän caùc pheùp tính soá hoïc treân caùc soá BCD. Caùc leänh ñaïi soá logic vaø dòch / quay thao taùc vôùi caùc bit trong 1 töø hoaëc 1 byte theo nhieàu caùch khaùc nhau. Moät vaøi keát hôïp cuõng ñöôïc cung caáp. Hình 5.5 taäp leänh cuûa 8088 Hai nhoùm leänh keá tieáp thöïc hieän pheùp kieåm tra vaø so saùnh, sau ñoù thöïc hieän nhaûy döïa vaøo keát quaû sinh ra. Keát quaû cuûa caùc leänh kieåm tra vaø so saùnh ñöôïc caát trong nhöõng bit khaùc nhau cuûa thanh ghi côø. Jxx nghóa laø taäp caùc leänh nhaûy coù ñieàu kieän tuøy thuoäc vaøo keát quaû cuûa pheùp so saùnh tröôùc ( nghóa laø, caùc bit trong thanh ghi côø ). Nguyeãn Höõu Loäc Khoa Vaät Lyù
  10. -101- Caán Truùc Maùy Tính 8088 coù vaøi leänh naïp, caát, di chuyeån, so saùnh vaø queùt chuoãi caùc kí töï hoaëc caùc töø. Nhöõng leänh naøy coù theå ñöôïc môû ñaàu baèng 1 byte ñaëc bieät goïi laø REP, byte naøy laøm cho leänh ñöôïc laëp laïi cho tôùi khi thoûa maõn moät ñieàu kieän naøo ñoù, nhö CX chaúng haïn, trong ñoù CX bò giaûm 1 sau moãi laàn laëp cho tôùi khi baèng 0. Baèng caùch naøy, caùc khoái döõ lieäu tuøy yù coù theå ñöôïc di chuyeån, so saùnh, vaø v.v… Nhoùm cuoái cuøng laø nhöõng leänh hoãn ñoän khoâng thích hôïp trong moät nhoùm naøo caû. Nhöõng leänh naøy bao goàm caùc leänh bieán ñoåi, xuaát / nhaäp vaø döøng CPU. 8088 ( vaø caû 80286, 80386 ) coù moät soá leänh tieàn toá ( prefix ), vaø chuùng ta ñaõ ñeà caäp ñeán moät tieàn toá, REP. Moãi tieàn toá naøy laø moät byte ñaëc bieät thöôøng ñöùng tröôùc leänh. REP laøm cho leänh theo sau tieàn toá naøy ñöôïc laëp laïi. LOCK daønh rieâng bus cho toaøn boä leänh ñeå cho pheùp ñoàng boä ña xöû lí. Nhöõng tieàn toá khaùc ñöôïc duøng ñeå buoäc leänh phaûi tìm naïp toaùn haïng cuûa leänh töø ngaên xeáp hoaëc töø phaân ñoaïn phuï thay vì töø phaân ñoaïn döõ lieäu. II. CAÙC KHUOÂN DAÏNG LEÄNH Chöông trình bao goàm moät chuoãi caùc leänh, moãi leänh xaùc ñònh moät ñoäng taùc cuï theå naøo ñoù. Moät phaàn cuûa leänh ñöôïc goïi laø maõ thao taùc (operation code ) hoaëc opcode cho bieát ñoäng taùc gì ñöôïc thöïc hieän. Nhieàu leänh chöùa hoaëc chæ roõ vò trí cuûa döõ lieäu ñöôïc leänh söû duïng. Thí duï leänh so saùnh 2 kyù töï xem chuùng coù gioáng nhau khoâng caàn phaûi xaùc ñònh roõ caùc kyù töï naøo ñöôïc so saùnh. Vaán ñeà chung cho bieát caùc toaùn haïng ôû ñaâu ñöôïc goïi laø ñònh ñòa chæ hay ñòa chæ hoùa hay ñaùnh ñòa chæ ( addressing ) seõ ñöôïc thaûo luaän trong phaàn sau nöõa. Hình 5.6 trình baøy vaøi khuoân daïng ( format ) tieâu bieåu cho caùc leänh lôùp 2. Treân moät soá maùy lôùp 2, taát caû caùc leänh coù cuøng chieàu daøi, treân moät soá maùy khaùc coù theå coù 2 hoaëc 3 chieàu daøi khaùc nhau. Hôn nöõa caùc leänh coù theå coù chieàu daøi ngaén hôn, baèng hoaëc daøi hôn chieàu daøi cuûa 1 töø. Hình 5.6: 3 khuoân daïng chæ thò tieâu bieåu Thí duï veà caùc khuoân daïng leänh Hoï 8088/80286/80386 cuûa Intel Vôùi caùc CPU cuûa Intel,tình huoán hoaøn toaøn khaùc vaø raát ít theo quy luaät. Nhìn chung, vôùi caùc leänh 2 toaùn haïng, neáu 1 toaùn haïng ôû trong boä nhôù, toaùn haïng kia khoâng ôû trong boä nhôù. Vì vaäy toàn taïi nhöõng leänh coäng 2 thanh ghi,coäng thanh ghi vôùi boä nhôù Nguyeãn Höõu Loäc Khoa Vaät Lyù
  11. -102- Caán Truùc Maùy Tính vaø coäng boä nhôù vôùi thanh ghi,nhöng khoâng toàn taïi leänh coäng töø nhôù naøy vôùi töø nhôù kia, PDP-11 cho pheùp ñieàu naøy nhö laø moät keát quaû tröïc tieáp caûu tính tröïc giao. Treân 8088 moãi opcode laø 1 byte, nhöng vôùi 80386 caùc opcodeù-byte ñeàu ñaõ ñöôïc taän duïng heát, vì theá opcode 15 ñöôïc duøng nhö laø phöông tieän ñeå ñi tôùi caùc opcode 2 byte. Caáu truùc duy nhaát trong tröôøng opcode laø vieäc duøng bit thaáp trong moät soá leänh ñeå cho bieát byte /töø vaø duøng bit keá beân ñeå cho ñòa chæ boä nhôù (neáu coù) laø nguoàn hay ñích. Theo sau byte opcode trong haàu heát caùc leänh laø 2 byte thöù 2 cho bieát toaùn haïng ôû ñaâu, töông töï vôùi 2 tröôøng kieåu/thanh ghi trong hình 5.21. Vì chæ coù 8 bit neân byte thöù 2 ñöôïc chia thaønh 1 tröôøng kieåu 2 bit vaø 2 tröôøng thanh ghi 3 bit . Nhö vaäy chæ coù 4 caùch ñeå ñòa chæ hoaù caùc toaùn haïng (PDP-11 coù 8) vaø 1 trong caùc toaùn haïng luoân luoân phaûi laø thanh ghi. Moät caùch logic, moät thanh ghi baát kyøtrong caùc thanh ghi AX, BX, CX, DX, SI, DI, BP hoaëc SP caàn ñöôïc chæ roõ nhö thanh ghi khaùc, nhöng caùc quy luaät maõ hoaù caám moät soá toå hôïp naøo ñoù vaø duøng chuùng cho nhöõng tröôøng hôïp ñaëc bieät. Treân 80386, trong caùc phaân ñoaïn 32 bit, caùc kieåu hoaøn toaøn khaùc vôùi caùc kieåu treân 8088 vaø80286. Moät soá caùc kieäu naøy caàn theâm 1 byte, goïi laø SIB (scale, index, base ) ñeå cho theâm moät ñaëc tính kyõ thuaät nöõa. Sô ñoà naøy khoâng phaûi laø sô ñoà lyù töôûng nhöng ñôn giaûn laø vì chuùng khoâng coøn bit. Ngoaøi ra moät soá leänh coù 1, 2 hoaëc 4 byte nöõa ñeå xaùc ñònh ñòa chæ boä nhôù vaø 1, 2 hoaëc 4 byte khaùc döôïc duøng laøm toaùn haïng haèng soá ( thí duï ñeå chuyeån soá 100 vaøo thanh ghi). Moãi leänh coù theå coù 6 tröôøng, moãi tröôøng coù taàm töø 0 tôùi 5 byte. Treân 8088 vaø 80286, leänh ngaén nhaát daøi 1 byte vaø leänh daøi nhaát coù 9 byte ( keå caû caùc tieàn toá REF, LOCK vaø caùc tieàn toá thay theá phaân ñoaïn ). Treân 80386, leänh ngaén nhaát vaãn daøi 1 byte, nhöng vôùi vieäc coäng theâm caùc tieàn toá, kích thöôùc cuûa toaùn haïng vaø kích thöôùc cuûa ñòa chæ, moät leänh coù theå daøi tôùi 17 byte. III. KIEÅU ÑÒNH VÒ ÑÒA CHÆ : Caùc leänh coù theå ñöôïc phaân loaïi theo soá ñòa chæ söû duïng. Neân nhôù raèng taäp caùc thanh ghi ñöôïc ñaùnh soá cuûa CPU thöïc teá hình thaønh moät boä nhôù toát ñoä cao vaø xaùc ñònh moät khoâng gian ñòa chæ. Moät leänh coäng thanh ghi 1 vôùi thanh ghi 2 ñöôïc xeáp vaøo loaïi coù 2 ñòa chæ bôûi vì leänh phaûi xaùc ñònh caùc thanh ghi naøo tham gia vaøo pheùp coäng, gioáng nhö leänh coäng 2 töø nhôù phaûi cho bieát caùc töø nhôù naøo ñöôïc coäng. Moät caùch toång quaùt, caùc leänh coù theå coù 1, 2 vaø 3 ñòa chæ. Treân nhieàu maùy, vieäc thöïc hieän pheùp toaùn soá hoïc chæ coù 1 ñòa chæ vaø ngöôøi ta söû duïng 1 thanh ghi ñaëc bieät goïi laø thanh chöùa (accumulator), thanh ghi naøy cung lôùp 1 toaùn haïng. Nguyeãn Höõu Loäc Khoa Vaät Lyù
  12. -103- Caán Truùc Maùy Tính Treân nhöõng maùy naøy ñòa chæ thöôøng laø ñòa chæ cöûa töø nhôù m, ôû ñoù toaùn haïng ñöôïc ñònh vò. Leänh coäng xaùc ñònh ñòa chæ m coù keát quaû laø Accumulator:= accumulator + memory[m] Caùc leänh coäng coù 2 ñòa chæ söû duïng 1 ñòa chæ laø nguoàn vaø ñòa chæ kia laø ñích . sau ñoù coäng nguoàn vôùi ñích: Destination := destination + source Caùc leänh coù 3 ñòa chæ cho bieát 2 nguoàn vaø 1 ñích. Noäi dung cuûa 2 nguoàn ñöôïc coäng vôùi nhau vaø caát keát quaû vaøo ñích. Chuùng ta ñaõ ít chuù yù ñeán caùch caùc bit cuûa 1 tröôøng ñòa chæ ñöôïc phieân dòch ñeå tìm toaùn haïng. Tuy nhieân, cuõng coù nhöõng khaû naêng khaùc vaø trong phaàn tieáp theo chuùng ta seõ khaùm phaù ra ñieàu ñoù. 1. Ñònh ñòa chæ töùc thôøi: Caùch ñôn giaûn nhaát ñeå 1 leänh xaùc ñònh 1 toaùn haïng laø phaàn ñòa chæ cuûa leänh chöùa chính toaùn haïng ñoù, khoâng phaûi laø ñòa chæ hoaëc thoâng tin khaùc moâ taû toaùn haïng ñoù ôû ñaâu. Moät toaùn haïng nhö vaäy ñöôïc goïi laø toaùn haïng töùc thôøi (immediate operand) bôûi vì toaùn haïng ñöôïc tìm naïp töï ñoäng töø boä nhôù cuøng luùc vôùi leänh vaø ñöôïc söû duïng ngay laäp töùc. Ñònh ñòa chæ töùc thôøi (immediate addressing) coù coâng duïng khoâng yeâu caàu moät tham chieáu boä nhôù ñeå tìm naïp toaùn haïng. Ñieåm baát lôïi laø toaùn haïng bò giôùi haïn bôûi moät soá ñaët vöøa trong moät tröôøng ñòa chæ. Trong moät leänh vôùi ñòa chæ 3 bit (nghóa laø tröôøng thanh ghi), giôùi haïn cuûa caùc toaùn haïng laø 3 bit, haïn cheá nhöõng lôïi ñieåm cuûa caùch ñònh ñòa chæ naøy. Caùc CPU cuûa Intel khoâng coù kieåu ñònh ñòa chæ cho caùc toaùn haïng töùc thôøi. Thay vaøo ñoù, chuùng coù moät taäp lôùn caùc leänh phaân bieät trong ñoù moät trong hai toaùn haïng laø töùc thôøi. Thöïc teá, 9 opcode khaùc nhau söû duïng cho leänh Add, 5 trong soá ñoù cho pheùp coù toaùn haïng töùc thôøi, tuøy thuoäc vaøo caùch chæ ra ñích vaø chieàu daøi cuûa toaùn haïng töùc thôøi (8, 16 hoaëc 32 bit). 680x0 coù kieåu ñònh ñòa chæ töùc thôøi, moät toaùn haïng nguoàn baát kyø coù theå laø haèng soá. Treân 68000, moät soá leänh chæ cho pheùp haèng soá laø 8 bit hoaëc 16 bit, nhöng treân 68020 vaø 68030 caû 3 loaïi chieàu daøi ñeàu ñöôïc pheùp. Ngoaøi ra, caùc leänh ñaët bieät nhö ADDI, ADDQ vaø CMPI cho pheùp caùc leänh töùc thôøi ñeå ñöôïc maõ hoùa moät caùch hieäu quaû hôn. 2. Ñònh ñòa chæ tröïc tieáp Phöông phaùp ñôn giaûn khaùc ñeå xaùc ñònh moät toaùn haïng laø cung lôùp ñòa chæ cuûa töø nhôù chöùa toaùn haïng. Daïng naøy ñöôïc goïi laø ñònh ñòa chæ tröïc tieáp (Direct addressing ). Chi tieát veà caùch thöùc maùy tính nhaän bieát ñòa chæ naøo laø töùc thôøi, ñòa chæ naøo laø tröïc tieáp seõ ñöôïc thaûo luaän sau. Moät caùch toång quaùt, coù 2 phöông phaùp: söû duïng caùc Nguyeãn Höõu Loäc Khoa Vaät Lyù
  13. -104- Caán Truùc Maùy Tính opcode khaùc nhau hoaëc söû duïng moät kieåu ñònh ñòa chæ ñaëc bieät cho moãi loaïi toaùn haïng. Hình 5.7: Ñòa chæ tröïc tieáp Caùc CPU cuûa Intel ñeàu coù ñònh ñòa chæ tröïc tieáp. 8088 vaø 80286 söû duïng caùc ñòa chæ tröïc tieáp 16 bit. 80386 söû duïng caùc ñòa chæ 16 bit ôû caùc cheá ñoä thöïc vaø aûo, caùc phaân ñoaïn 16 bit ôû cheá ñoä baûo veä. Trong cheá ñoä baûo veä 32 bit, caùc ñòa chæ tröïc tieáp daøi 32 bit. Löu yù laø trong moïi tröôøng hôïp, caùc ñòa chæ tröïc tieáp deàu khoâng bao truøm toaøn boä khoâng gian ñòa chæ . 860x0 coù 2 daïng ñònh ñòa chæ tröïc tieáp, moät daïng vôùi ñòa chæ 16 bit vaø moät daïng vôùi ñòa chæ 32 bit. Caùc ñòa chæ trong 64K ñaàu tieân cuûa boä nhôù ñöôïc tham chieáu baèng daïng ngaén trong khi caùc ñòa chæ treân 64K caàn daïng daøi. Caû 2 daïng naøy ñöôïc xaùc ñònh bôûi caùc giaù trò trong tröôøng MOD 3 bit, vaø do vaäy aùp duïng cho taát caû caùc leänh coù moät hoaëc nhieàu tröôøng toaùn haïng. 3. Ñònh ñòa chæ thanh ghi Khaùi nieäm ñònh ñòa chæ thanh ghi cuõng gioáng nhö ñònh ñòa chæ tröïc tieáp. trong daïng ñònh ñòa chæ naøy, tröôøng ñòa chæ chöùa soá cuûa caùc thanh ghi löu giöõ toaùn haïng. Moät maùy vôùi 16 thanh ghi vaø 65536 töø nhôù thöïc söï coù 2 khoâng gian ñòa chæ. Ngöôøi ta nghó ñeán moät ñòa chæ treân moät maùy nhö vaäy coù 2 phaàn: (a) moät bit cho bieát thanh ghi hoaëc töø nhôù (b) moät tröôøng ñòa chæ cho bieát thanh ghi naøo hoaëc töø nhôù naøo. Do coù ít thanh ghi hôn töø nhôù neân caàn ñòa chæ nhoû hôn vaø nhö vaäy caùc leänh coù daïng khaùc nhau thöôøng ñöôïc duøng cho caùc toaùn haïng thanh ghi vaø caùc toaùn haïng boä nhôù. Neáu coù moät leänh thanh ghi töông öùng vôùi moãi moät leänh boä nhôù, moät nöûa soá opcode daønh cho caùc toaùn haïng boä nhôù vaø moät nöûa daønh cho caùc toaùn haïng thanh ghi. Moät bit trong opcode ñöôïc caàn ñeán ñeå ghi roõ khoâng gian ñòa chæ naøo ñöôïc söû duïng. Neáu sau ñoù bit ñöôïc loaïi boû khoûi tröôøng opcode vaø ñöôïc ñaët vaøo tröôøng ñòa chæ, vieäc söû duïng 2 khoâng gian ñòa chæ seõ roõ hôn. Bit seõ cho bieát khoâng gian ñòa chæ naøo ñöôïc söû duïng. Caùc maùy ñöôïc thieát keá vôùi caùc thanh ghi vì 2 lyù do : Nguyeãn Höõu Loäc Khoa Vaät Lyù
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2