Nguyên lý thâm nhập bộ nhớ trực tiếp

Một phần của tài liệu kiến trúc máy tính giới thiệu chung về máy tính điện tử (Trang 64 - 151)

1. Nguyên lý cấu trúc của một mạch DRAM

4.2.2.Nguyên lý thâm nhập bộ nhớ trực tiếp

Trong câcphương phâpvăo/ratrìnhbăytríncócâcnhượcđiểmsau:

-Văo/rabằngchươngtrìnhphảichuyểnsốliệugiữathiếtbịvăo/ravăbộnhớ thôngquaACC(hình4.10)

Sử dụngphươngphâpvăo/rađiềukhiểnbằngchươngtrìnhtathấy: -Việcvăo/rasốliệuđềuquaACCcủaCPU

-MuốnđọcsốliệutừTBvăo/ravăobộnhớphảiqua2bước

(DATA.R)

→ACC

(ACC)

→MEM

-MuốnđưanộidungcủaônhớtớiTBvăo/racũngphảiqua2bước

(MEM)

(ACC)

→DATA.RcủaTBvăo/ra

Như vậy việc chuyển số liệu giữa thiết bị ngoại vi vă bộ nhớ cần hai bước, tốcđộchậm.

Phươngphâp văo/rabằngngắtbảođảm thiếtbịvăo/rađượcphụcvụgầnnhư tức thời (trong thời gian ngắn). Nhưng trong chương trình con phục vụ ngắt, quâ trìnhchuyểnsốliệuđượcthựchiệnbằngchươngtrìnhníntốcđộchậm.

643

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

Phương phâp văo/ra thđm nhập bộ nhớ trực tiếp DMA (Direct Memory

Access) (hình 4.11) khắc phục câc nhược điểm trín. Phương phâp năy chuyển số liệuvớibộnhớ khôngquaACCcủaCPU

Chương trìnhcon đểchuyển sốliệu giữaTBvăo/ra văbộnhớ được thay đổi bằng đơn vị điều khiển đặc biệt bằng phần cứng DMAC (Direct Memory Access Controller).

QuâtrìnhthựchiệnDMA:

653

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

CPUlămviệcbìnhthường

Khithiếtbịngoạivimuốnchuyểnsốliệutrựctiếpvớibộnhớ thìgửiyíucầu tớiDMACquatínhiệuDRQ(DMAReqest)

BộđiềukhiểnDMACchuyểnyíucầunăytớiCPUquatínhiệuHOLD CPU thực hiện nốt chu kỳ mây đang thực hiện, treo BUS vă trả lời DMAC

bằngtínhiệuHLDA.

DMACtrảlờithiếtbịvăo/rabằngtínhiệuDACK,lămchủBUSsinhra -BUSđ/c(Câctínhiệuđịachỉ)

-Câctínhiệuđiềukhiển

-ĐiềukhiểnchuyểnsốliệugiữabộnhớvăTBvăo/ra Sốliệuchuyểngiữabộnhớvăthiếtbịvăo/rathường lăcảmộtkhối.

Khi chuyển xong số liệu DMAC đưa tín hiệu TC (Terminal Count) thănh tíchcựcđểbâomộtquâtrìnhDMAkếtthúc

Có thể minh họa hoạt động của phương phâp văo/ra số liệu bằng DMAnhư (adsbygoogle = window.adsbygoogle || []).push({});

663

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST 4.3.Địachỉthiếtbị văo/ra

Bộ nhớ lă tập hợp câc thanh ghi, quâ trình chuyển số liệu giữa CPU vă bộ nhớ thựcchấtlăquâtrìnhchuyểnsố liệugiữacâcthanhghiACC củaCPUvăcâcô nhớ.

Trong câc thiết bị văo/ra đều có thanh ghi số liệu, việc chuyển số liệu giữa CPUvăTBvăo/rathựcchấtcũnglăchuyểnsốliệugiữacâcthanhghi.

Trong nhiềuhệmâytínhcókhảnăngcó +địachỉriíngchoTBvăo/ravă +địachỉriíngchobộnhớ

Câchệthốngnhưvậygọilăhệthốngcóvăo/ratâchbiệt. Câchệthốngnăythườngcólệnhvăo/rariíng.

IN XXX

địachỉthiếtbịvăo OUT XXX

địachỉTBra

Trong một số trường hợp (đặc biệt lă câc hệ vi xử lý họ MOTOROLA) không có không gian địa chỉriíng cho TB văo/ramă phải dùng không gianđịa chỉ

củabộnhớthaychokhônggianđịachỉTBvăo/ra.

Trong câc hệ thống năy một số ô nhớ đặc biệt không dùng như ô nhớ mă dùng như câc thanh ghi cho TB văo/ra. Câc ô nhớ năy còn gọi lă câc ô nhớ giả (Pseudo). Quâtrình chuyểnsố liệu giữaCPU văTB văo/ra được thựchiện nhờ câc lệnhchuyểnsốliệugiữaCPUvăbộnhớ.

673

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST CHƯƠNG V

CẤUTRÚC CỦAĐƠNVỊ XỬLÝTRUNGTĐM

5.1.HọVi xửlý Intel80x86

Với sự tiến bộ của công nghệ vi điện tử, toăn bộ CPU được cấy bín trong một mạch vi điện tử. Mạch vi điện tử như vậy còn gọi lă Microprocessor (MPU), (MP). Họ vi xử lý Intel 80x86 được sử dụng để xđy dựng dòng mây tính câ nhđn IBM-PC (Personal Computer), được sử dụng rộng rêi nhất hiện nay. Bảng sau đđy sẽgiớithiệuquâtrìnhphâttriểnvătínhnăngcơbảncủahọvixửlýIntel80x86.

PC/AT Compatibility

→ Pentiu m → Pro Pentiu m → II Pentiu m → 4 Addr-BUS 20 24 32 32 32 36 36 36 VIRTUAL SIZE 1 MEG 16 MEG* 4 GIG* 4 GIG* 4GIG* 64 GIG* 64 GIG* 64 GIG* MEMSIZE NA 1GIG 64 TERA 64 TERA 64 TERA 64 TERA 64 TERA 64 TERA D-BUS REGSIZE 8 16 32 32 64 64 64 64 16 16 32 32 32 32 32 32 4 4 6 6 6 6 6 6 #SEG.REG S 8087 80287 80387 On Chip On Chip On Chip On Chip On Chip MATH 4.77,8 8,12 16,25, 33 33,50 50,60, 66 60,66 66,100 100/40 0* BUSSPEE D (MHz) PAGING

NO NO YES YES YES YES YES YES NO NO NO YES YES #YES #YES #YES

ONCHIP CACHE

5.2. Giới thiệuvềBộvi xửlý80x86

683

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

Chúng tabắtđầu bằngviệctìmhiểu tínhnăngvăkiển trúcbộvixửlý16-bit 80286đểdễdăngtiếntớilămchủcâcbộvixửlý32-bitphứctạphơn nhưPentium.

5.2.1. Tínhnăngbảncủabộvixử80286

Bộvixửlý80286lămộtbộvixửlýthuộchọvixửlý80x86.Họ80x86gồm câcbộvixửlý8086, 8088,8018680286vă80386, 80486văPentium.

MộtsốđặctínhkỹthuậtchínhcủaMP80286lă:

Tầnsốcủađồnghồthờigian:10MHz,8MHz,16MHz,20MHz.

Khảnăngđịachỉhóa:16megabyte(MB)nhớvậtlý,1gigabyte(GB)nhớảo. Haichếđộhoạtđộng:Chếđộđịachỉthực,chếđộđịachỉảohaychếđộbảovệ. Cóđơn vịquảnlýbộnhớbíntrongbộvixửlý. (adsbygoogle = window.adsbygoogle || []).push({});

Cóbốnmứcbảovệbộnhớ.

Cókhảnăngđốithoạivớicâcbộđồngxửlý.

Trong chế độ địa chỉ thực, MP 80286 có mê lệnh tương thích với MP 8086 vă8088, nhưngquâtrìnhthựchiệnnhanhhơn.

Khả năng địa chỉ hóa bộ nhớ vật lý lớn nhất lă 16 MB vì có 24 bit địa chỉ. Trong chế độ thực, chỉ sử dụng câc đường địa chỉA0-A19 vă như vậy địa chỉ hóa

được mộtmegabyte.

5.2.2. đồkhốichứcnăngcủabộvi xử (Hình5.1)

BộvixửlýMPđượcxđydựngtừ4đơnvịcóthểlămviệcsongsong.

a. Đơnvị busBU(BusUnit)

693

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

BUthựchiệncâcchứcnăngchínhsau:

Sinhracâctínhiệu địachỉ,sốliệuvăđiềukhiển đểthđmnhậpvăobộnhớhaythiết bịvăo/ra.

ThiếtlậpquanhệvớibộđồngxửlýEPhaycâcbộxửlýkhâcđanglămchủBUS. Cho phĩpquâ trìnhnhập lệnh songsong vớicâcquâ trìnhkhâc vìcó hăngđợi lệnh

6byte.Vìvậyloạitrừđượcthờigianchếttrongkhitìmlệnhtrongbộnhớ.

b.ĐơnvịlệnhIU(InstructionUnit)

IUthựchiệncâcchứcnăngchínhsau: Nhậnlệnhtừbộnhớvăohăngđợilệnh.

Giảimêlệnhthănhcontrỏtớivichươngtrìnhthựchiệnlệnh.

Quâtrìnhđọclệnhđược thựchiệnkhikhôngcóđơn vịkhâcyíucầusửdụngBUS. Quâ trình nhận lệnh vă giải mê lệnh được thực hiện song song với quâ trình thực

hiệncâclệnhtrướcđó.

c. ĐơnvịthựchiệnlệnhEU(ExecutionUnit)

Cộng, trừ(8,16bit).

Nhđn, chiabằngphầncứng.

Câcphĩptínhxửlýbit,dịchchuyển, quayvòngởcâcthanhghivẵnhớ. Vềphươngkiếntrúc,tậpthanhghiđanăngđêtươngđốiphongphú.

d.ĐơnvịđịachỉAU(AddressUnit)

Baogồmcâcthanhghimảng(CS.DS, SS,ES) văbộchuyểnđổiđịachỉ. Trong họ vi xử lý 80x86, bộ nhớ được tổ chức theo mảng. Địa chỉ ô nhớ gồm hai thănh phần: địa chỉ mảng vă địa chỉ offset. Địa chỉ mảng cho biết mảng nhớ năo trong bộ nhớ, địa chỉ offsetcho biết ô nhớ cụ thể trong bộ nhớ. Cặp địa chỉ mảng: địachỉ offsetcòn gọilăđịachỉlogic. Từđịachỉ logicsẽđược tínhthănhđịachỉvật lýđểtruynhậpbộnhớvậtlý.

5.3. Câc thanhghicủa 80x86

MP80286gồm15thanhghi16bit,chialăm3nhóm:

Thanhghiđanăng(hình5.2a)

Câc thanh ghi năy chứa câc toân hạng của câc phĩp tính số học hay logic. Bốn thanhghi16bitAX, BX, CX,DX cóthểsửdụngnhưtâm thanhghi8bit. Bốn thanh ghi chứa byte thấp (AL, BL, CL, DL) vă bốn thanhghi chứa byte cao (AH, BH, CH,DH).

703 (adsbygoogle = window.adsbygoogle || []).push({});

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

Ngoăichứcnăngchung,câcthanhghitríncòncócâcchứcnăngngầmđịnh: -AXgiữvaitrònhưthanhghiACCcủacâcmâytínhtổngquât.

-AXvăDXdùngtrongcâclệnhnhđn,chiavăvăo/ra.

- CX giữ chức năng thanh đếm, dùng cho tất cả câc lệnh quay vòng, lệnh dịch chuyểnvăcâclệnhlặp.

- BX vă BP lă những thanh ghi cơ sở, chứa địa chỉ cơ sở trong phĩp tính địa offset.

- SIvă DIgọilă nhữngthanhghichỉ số,chứađịa chỉofsset cóthểtăngdần khi thđmnhậpvăomộtcấutrúcdữliệu.

- SPlăcon trỏngănxếp,chứađịa chỉoffsetcủađỉnh ngănxếp. BPcòngọi con trỏ cơ sở, được dùng ngầm địnhđể truy nhập văongăn xếp. BPcũng tham gia đểtínhđịachỉoffsettrongcâcphĩptínhđịachỉtronglệnh.

Câcthanhghimảng(segment)(hình5.2b)

713

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

Câc chương trình thường được cấu tạo từ nhiều modul lệnh vă số liệu. MP 80286chophĩpmộtchươngtrìnhđangthựchiệncóthểthđmnhậptứcthờiđếnbốn mảng nhớ. Bốn thanh ghi mảng nhận biết bốn mảng nhớđang sử dụng.Câc thanh ghimảngđólă:

CS:thanhghimảnglệnh DS:thanhghimảngsốliệu SSthanhghimảngngănxếp ESthanhghimảngsốliệuphụ.

Nội dung của thanh ghi mảng gọi lăbộ chọn mảng nín có nhiều khi còn gọi thanh ghimảnglăthanhghichọnmảng.

c. Câcthanhghiđiềukhiểntrạngthâi

Câcthanhghinăygồm: Thanhghicờ FR(FlagRegister) ContrỏlệnhIP(InstructionPointer)

ThanhghitrạngthâimâyMSW(MachineStatusWord)

Con trỏlệnh IP

Con trỏ lệnh luônchứa địa chỉtương đối (so với đầu của mảng nhớđang sử dụng) của lệnh sẽ thực hiện tiếp theo. Như vậy con trỏ lệnh cùng với thanh ghi mảng lệnh (CS: IP) định nghĩa địa chỉ logic của lệnh tiếp theo, có chức năng như thanhđếmchươngtrình(PC)trongmâytínhtổngquât.

723

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

Con trỏ lệnh được điều khiển bởi cơ chế ngắt, bẫy vă câc phĩp chuyển điều khiển.

ThanhghicờFR

ThanhghicờFRcó16bitđượcbiểudiễntrínhình5.3:

CF(CarryFlag),cờ nhớ.

CF=1 chỉrằngcóhiện tượngnhớ từbitcaonhấtcủa mộtphĩptoân8bit hay 16 bit,sau khithựchiện câclệnh sốhọc. Tấtcảcâc lệnhdịch chuyểnvăquay vòng đềuảnhhưởngđếncờCF.

PF(ParityFlag),cờ kiểmtrachẵnlẻ.

PF=1,nếu8bitthấpcủakếtquảcósốcâcchữsố1lăchẵn, ngượclạiPF=0. AF(auxiliarycarryFlag),cờnhớ phụ.

AF được sử dụng trong câc phĩp tính số học với mê BCD (Binary Coded Decimal). Nó chobiết có nhớtừ số BCD thấpsang sốBCD caohay bitsố liệu D3 sangbitD4trongthanhghiAL.

ZF=1,khikếtquảphĩptínhbằng0. SF(SignFlag),cờ dấu.

SF cho biết kết quả phĩp tính lă dương hay đm, nếu đm, SF=1 ngược lại, SF=0 (adsbygoogle = window.adsbygoogle || []).push({});

OF(OverflowFlag),cờ trăn.

OFdùngtrongphĩptínhsốhọccódấu,nóchỉrằngkếtquảtrănsangbitdấu. - TF (TrapFlag), cờTF chỉchếđộchạytừnglệnh. Nếucờ TF=1,MP80286ở chếđộchạytừngbướcđểgiúpchoviệchiệuchỉnhchương trìnhđượcthuậnlợi.

Mỗi lệnh gđy ra một ngắt đểMP 80286 nhảy văochương trình conphục vụ hiệuchỉnhchươngtrình.

Cờ TFchỉcó thểthayđổi thôngquangăn xếp:cấtthanh ghicờ RFvăongăn xếp,thiếtlậpbitTFtrongngănxếpvăđưatrởlạithanhghicờ.

Trước khi nhảy văo chương trình con phục vụ hiệu chỉnh, thanh ghi cờ FR đượctựđộnglưugiữ.TrongchươngtrìnhconnăybitTFđượcxoâ,đểkhithựchiện câc lệnh của chương trình con không xẩy ra chế độchạy từng bước. Khi trở về từ chương trìnhcon phụcvụhiệu chỉnh,thanh ghicờ đượcphục hồivăbitTFvẫn giữ giâtrịcũ.(TF=1).

- IF(InterruptenableFlag),cờchophĩpngắt.NếucờIF=1chophĩpghinhận ngắtởchđnINTRcủabộvixửlý.

733

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

Bit IF được thiết lập bằng lệnh STI vă được xóa bằng lệnh CLI hoặc thông quangănxếp.

- DF(DirectionFlag),bithướng.

DFchobiếthướngtiếntriểntrongmộtchuỗisốliệu.

Nếu DF=1, nội dung của thanh ghi SI hoặc DI hay cảhai thanh SI vă DI sẽ tự động giảm đi 1. Nếu DF=0, nội dung của câc thanh ghi năy sẽ tự động tăng 1 trongcâclệnhxửlýchuỗi.

Bit DF có thể thiết lập bằng lệnh STD, xóa bằng lệnh CLD hay có thể điều khiểnthôngquangănxếp.

NT(NestedTask),nhiệmvụlồngnhau.

NT cho biết lệnh đang thực hiện đang tiến triển bín trong cùng một nhiệm vụ hay sẽ gđy ra việc chuyển nhiệm vụ. NT chỉ dùng trong chế độ bảo vệ của MP 80286.

IOPLchỉramứcđặcquyềnthấpnhấtmănhiệmvụđangthựchiệncầncó, để được phĩpthựchiệncâclệnhvăo/ra. CũngnhưNT,IOPLchỉcóởchếđộbảovệ.

Thanh ghi trạng thâi mây MSW

743

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

Thanh ghiMSWcó 16bitnhưngchỉ có4bitđượcdùng,còncâc bitkhâcdự

trữchocâcbộvixửlý32bit(hình5.4).

- PE(Protected modeEnable), cho phĩp bộvi xửlýchuyển sangchế độbảo vệ.

Bit PE=1 chỉ rằng MP 80286 đang lăm việc ở chế độ bảo vệ. Một khi đê được thiếtlậpthìchỉcóRESETmớixóaPEvề0được.

-MP(MonitorProcessorExtension).

BitMPchobiếtđangcómộtbộđồngxửlýcùnglămviệc. - EM(EmulateProcessorExtension).

EMsẽchophĩpmôphỏngmộtbộđồngxửlý. -TS(TaskSwitch)

Bit năy sẽ được thiết lập mỗi khi chuyển nhiệm vụ vă thường được dùng trong trường hợp có bộ đồng xử lý. Khi chuyển nhiệm vụ không thay đổi phạm vi (context) củabộđồng xửlý. Nhưvậy, khiMP80286thựchiện lệnhđồngxửlýđầu tiín (sau chuyển nhiệm vụ), sẽ gđy ra ngoạilệ số 7.Xử lý ngoại lệ năycho biết có cầnthayđổiphạmvicủabộđồngxửlýhaykhông?

5.4.Câc chếđộđịachỉhóa

Địachỉtrực tiếp

Địachỉoffsetcủatoânhạngchứatrong16bitcủalệnh. OFFSET=16bitdịchchuyểncủalệnh (adsbygoogle = window.adsbygoogle || []).push({});

Vídụ: MOVAX, [34FFh]

Địachỉgiân tiếpquathanhghi

753

KiếntrúcMâytính NVTam,HTCước.IOIT,VAST

ĐịachỉoffsetcủatoânhạngchứatrongcâcthanhghiSI,DI, BX OFFSET=(SI,DI,BX)

Vídụ: MOVAX, [SI]

Địachỉtươngđốitheo thanhghisởBX,BP

Địa chỉ offset của toân hạng bằng tổng của dịch chuyển chứa trong lệnh vă nội dungcủacâcthanhghicơsởBXvăBP

OFFSET=(BXhayBP)+dịchchuyển

Vídụ: MOVAX, [BX]+3FFh

Cóthểsửdụngchếđộđịachỉnăyđểxđydựngmảngmộtchiều.

Địachỉtươngđốitheo chỉsốSI,DI

Địa chỉ offset của toân hạng bằng tổng của dịch chuyển chứa trong lệnh vă nội dungcủathanhghiSIhayDI

OFFSET=(SIhayDI)+dịchchuyển

Cóthểsửdụngchếđộđịachỉnăyđểxđydựngmảngmộtchiều.

Địachỉtươngđốiquathanhghisởchỉsố

Một phần của tài liệu kiến trúc máy tính giới thiệu chung về máy tính điện tử (Trang 64 - 151)