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ư
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ăngcơbảncủabộvixửlý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ý.
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. Sơđồkhốichứcnăngcủabộvi xửlý (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
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ểnvătrạ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
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
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 thanhghicơsở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đốicóquathanhghicơsởvăchỉsố