Professional Documents
Culture Documents
DMA và các chương trình quản lý bộ nhớ
DMA và các chương trình quản lý bộ nhớ
DMA và các chương trình quản lý bộ nhớ
l mt thnh phn b n m dng nh tt c chng ta u gp nhng ch c mt s rt t ngi c th gii thch mt cch chnh xc. Trong cc my PC hin nay, ngt v IRQ (Interrupt ReQuest) c quan tm n nhiu, nhng c mt kha cnh khc quan trng i vi hot ng ca my li khng c ch n, l DMA hay Direct Memory Access (truy nhp b nh trc tip). Ging nh IRQ, DMA l mt thnh phn b n m dng nh tt c chng ta u gp nhng ch c mt s rt t ngi c th gii thch mt cch chnh xc. Khng hon ton l thuyt khi bn tm kim s hiu bit v DMA. lp thm mt card m thanh hoc mt thit b tip hp (gi tt l thit b) vo my tnh, bn c th c yu cu chn mt knh DMA. Lm sao bn bit cn phi chn knh no v hu qu s ra sao khi bn chn sai knh? tr li cu hi , chng ta s tm hiu DMA l g, n lm vic ra sao v ngy nay n c s dng nh th no trn cc my PC. Chng ta cng s tho lun v tc ng qua li gia b phn iu khin DMA v nhng chng trnh qun l b nh 386 v khm ph ngha thc s ca tham s D = c cung cp bi trnh qun l EMM386.EXE ca DOS. 1. DMA l g ? DMA l mt k thut chuyn d liu nhanh t mt card thit b ti b nh, t b nh ra card thit b, hoc trong mt vi trng hp t mt v tr trong b nh ti mt v tr khc. Vic chuyn theo DMA rt quan trng v n khng yu cu n s thc thi ca CPU. Chuyn theo DMA c thc hin bng cch lp trnh mt chip c tn l b iu khin DMA (gi ngn gn l DMAC), chip nm trn bo mch h thng ca mi my PC. Vic lp trnh thng c hon thnh bi mt chng trnh chy trn my tnh ca bn (v d mt chng trnh sao lu a cng) hoc bi mt th tc lu trong ROM, hoc trn mt card thit b tip hp (v d trong ROM ca card iu khin a mm). Mi ln b iu khin c khi ng v qu trnh chuyn d liu bt u, CPU c t do v lm vic khc trong khi DMAC tip tc thc hin chuyn d liu, c hai b vi x l ng thi lm vic phc v bn: mt thc hin m (code), cn mt chuyn d liu.
Vic chuyn theo DMAC quan trng cn v mt l do khc, n chuyn d liu trc tip t ngun d liu n ni nhn m khng cn thng qua bt k b phn lu tr trung gian no. Qu trnh a mt byte d liu t mt thit b ti mt v tr trong b nh thng qua CPU l mt qu trnh hai bc. u tin CPU c byte t thit b v lu trong mt trong s cc thanh ghi ca n. Tip theo n c byte t thanh ghi ti a ch cn chuyn n trong b nh. DMAC gim qu trnh trn xung cn mt bc, n vn dng cc tn hiu iu khin trn ng truyn, v th byte c c v ghi ch trong mt hnh ng. Mt cch tt hiu s khc nhau trn l minh ha cc qu trnh trn nh l mt cuc chi bng nm. CPU l ngi chi nm bng vi hai ngi khc c gi l A v B. chuyn bng t A ti B, CPU phi bt qu bng do A nm v tung n cho B. DMA, theo mt cch khc, s ni A tung trc tip qu bng cho B. Trong lc y, CPU c th lm cc cng vic khc nh khi ng cu th tip theo. Chuyn d liu t b nh n b nh theo DMA hin nay khng c s dng na v tc CPU vt trn DMAC rt nhiu, nhng chuyn d liu t b nh n thit b v t thit b n b nh l nhng k tch ng k. a d liu t thit b vo b nh, DMAC kch hot ng truyn gy nn lnh c t thit b (mt hot ng c cng I/O) v ng thi to ra lnh ghi vo b nh. Vic kch hot c t cng I/O s lm cho thit b t mt n v - thng thng l mt byte hoc mt Word - ln ng truyn d liu ca my PC. V v tuyn c b nh c hot ng ng thi cho nn d liu trn ng truyn c sao ngay vo b nh. Vi mi ln ghi, DMAC dng ng a ch ch nh a ch trong b nh ni d liu s ti. Tng t i vi qu trnh chuyn theo DMA t b nh n thit b. Vi mi n v d liu c chuyn, DMAC ra lnh c i vi b nh v ghi i vi cng I/O. a ch ca b nh c t trn ng a ch. Ging nh qu trnh trn, d liu c chuyn trc tip t ni pht n ni nhn bng cch s dng ng d liu. DMAC c s dng trong phn ln cc my PC l chip c k hiu 8237A hoc tng ng. Cc dng my Micro Channel v EISA sa i k thut DMA to ra mt chip ring c cc chc nng hn hn 8237A, nhng c rt t chng trnh iu khin thit b tn dng c nhng u im m rng . Dng my IBM-XT ch s dng mt chip 8237A lp trnh
c cung cp 4 knh DMA ring r, nh s t 0 n 3. Dng my IBMAT (chim phn ln th trng my PC hin nay) s dng 2 chip 8237A cung cp 8 knh DMA c lp nh s t 0 n 7. Ch c 7 trong s 8 knh DMA s dng c v mt knh (knh 4) c s dng lin kt hai b iu khin vi nhau sao cho chng c th lm vic nh mt n v thng nht. Knh 0 n 3 chuyn 8 bit d liu cng mt lc v c th lu 64KB ch trong mt ln hot ng, trong khi knh 5 n 7 chuyn 16 bit v c th chuyn c 128KB trong mt ln hot ng. Ging nh b iu khin ngt, ni nhn yu cu ngt t cc thit b thng qua ng IRQ, mt DMAC nhn yu cu DMA thng qua ng DMA request (DREQ). Chip 8237A cung cp mt vi phng thc v phng php hnh ng khc nhau, tuy nhin mt qu trnh chuyn in hnh t thit b ti b nh din ra nh sau: DMAC c lp trnh u tin vi a ch ca b nh s ghi d liu v s byte c chuyn. Khi thit b sn sng bt u qu trnh chuyn, n kch hot ng DREQ kt ni vi DMA. Sau khi c CPU cho php iu khin ng truyn, DMAC a ra a ch b nh v to ra tn hiu mt byte (hoc mt t) d liu c c t thit b v ghi vo vng c ch nh trong b nh. Sau n cp nht a ch b nh cho byte tip theo v lp li qu trnh trn cho ti khi ton b d liu c chuyn hon tt. Da trn cch b iu khin c lp trnh, mi byte c chuyn c th yu cu mt tn hiu DREQ ring r (phng thc chuyn n) hoc ch mt tn hiu c th khi ng tt c qu trnh truyn (phng thc chuyn khi hoc theo yu cu). C mt thit b DMA c trn tt c cc my PC l b iu khin a mm. D liu trn a mm c c theo tng n v 512 byte (1 sector) v c chuyn bng DMA s dng knh DMA s 2. c mt sector d liu, ngt BIOS 13H lp trnh DMA theo phng thc chuyn n v cung cp mt lnh c cho iu khin a mm. Khi thc hin, iu khin a c byte d liu t a v khi ng qu trnh truyn bng cch kch hot DREQ 2. Sau n c ln lt cc byte khc theo cch nh trn chuyn byte vo a ch vt l trong b nh. Ti khi DMAC chuyn xong 512 byte, iu khin a to ra mt ngt cng bo cho CPU bit c th s dng c sector . 2. Cc knh DMA
Khi bn gn mt card thit b c s dng DMA trn my PC, bn thng c yu cu chn knh DMA. t mt DIP-switch hoc nh li jumper vi knh DMA 5 s thit lp mt giao tip vt l gia thit b v DMAC thng qua DREQ 5. Thng thng, phn mm s dng thit b phi c cung cp s hiu knh DMA n nh n c th lp trnh DMAC cho vic chuyn theo DMA. Mc d theo l thuyt c th nhiu thit b chia s mt ng DREQ nu chng khng ng thi s dng, nhng - nh mt lut - tt nht l gii hn mi thit b s dng mt knh. Nh vy bn s chc chn khng gp xung t DMA. Nh bit, chng ta khng s dng c knh DMA 2 v 4 v chng c dnh cho iu khin a mm v lm ng ni 2 chip DMA. Knh 0 cng khng s dng c v trn cc my PC trc y n c s dng phc hi b nh. Vo lc khi ng, BIOS ca my PC nguyn thy lp trnh cho ng h c vi mili giy li a yu cu c DMA gi - nhm to ra vic c b nh nhng khng nht thit c thit b nhn d liu - nh vy trnh mt thng tin trong DRAM. Tt c cc my PC hin nay phc hi DRAM m khng cn s gip ca h thng DMA. Tuy vy bn vn khng th s dng knh DMA s 0 v c mt s my khng thit lp knh . Vy bn s x tr ra sao khi c yu cu chn mt knh DMA? Cu tr li l chn cc knh DMA cn li. Bng di lit k danh sch cc knh DMA c phn b. Trn hu ht cc my PC, knh 1, 3, 5, 6 v 7 c dnh cho vic ghp ni vi thit b. Dng my PS/2 s dng knh 5 chuyn d liu cho a cng, cn dng XT th dng knh 3. V l do ny, khi s dng 2 dng my trn, bn cn trnh s dng cc knh . Khi bn cn cha n nh mt knh DMA cho mt thit b no th bn c th s dng n bt k khi no bn mun. Nhng bn nn theo di bng phn b knh DMA khng xy ra hin tng hai thit b cng chia s mt knh DMA. Ti vit trn quyn s bn ca mnh danh sch cc IRQ v DMA c s dng. Khi cm thm mt card thit b mi v tm kim mt DMA cha s dng, ti khng phi tho cc card thit b cm trong my v xem cc jumper ca chng. C mt vi trnh tin ch pht hin c knh DMA no c s dng nhng chng khng thc s ng tin cy. Nu bn khng c thng tin v cc knh DMA c phn b v bn cng khng mun lc tm trong ng ti liu ca mnh th c mt lot cc chng trnh chn on phn tch my thng bo cho bn bit danh sch nhng knh DMA s
dng. Cc chng trnh trn cha thc s hon ho nn c th kt qu a ra s khng chnh xc. 3. Cc vn qun l b nh Cc trnh qun l b nh theo 86 o nh EMM 386.EXE., QEMM-386 v 386MAX gy ra mt vn c bit i vi DMAC. a ch b nh c lp trnh vo trong DMAC phc v cho vic chuyn theo DMA l cc a ch vt l. Nhng cc trnh qun l trn thng xuyn nh li bn b nh lm cho mt a ch b nh c trc tng ng vi mt a ch b nh vt l khc (thng thng l mt ni khng dng n trong b nh m rng). Khi mt chng trnh truy nhp n phn a ch c nh li, CPU chuyn yu cu n a ch vt l ph hp. Tuy nhin, nu DMAC c gng truy nhp n a ch trn, vic truy nhp s tht bi v khng c cch no DMAC bit bn b nh c nh li. iu kt lun l cc chng trnh lm vic theo DMA c d liu np trong vng b nh cao (UMB) s khng lm vic c nu khng chu s kim sot ca cc chng trnh qun l b nh. Mt DMAC c lp trnh a d liu ra cng I/O v trong ch 86 o mt trnh qun l b nh c th chn tt c d liu c a ra cng I/O. Nh vy n c th d on c cc yu cu DMA sp ti v thm ch bit c c a ch b nh tip theo. Nu cc a ch c sa i, trnh qun l b nh s lp trnh li DMAC theo a ch b nh vt l ph hp. Sau n cho php qu trnh chuyn DMA thc hin nh thng l. Mt tnh hung tai hi tim tng xy ra khi a ch b nh vt l c sa i gi cho qu trnh chuyn theo DMA li nm ngoi vng qun l ca DMAC. Phn ln cc DMAC b gii hn trong 16MB b nh, mt s khc khng th nh a ch ln hn 8MB. Khi mt a ch ngun hoc ch nm ngoi vng DMAC c kh nng nh a ch, trnh iu khin b nh a ra mo sau: N nh li qu trnh chuyn DMA ra mt vng m ca n - mt vng nm trong vng c th truy nhp bi DMA - v cho php qu trnh chuyn thc hin. Nu vng m ln cha d liu th sau khi qu trnh chuyn kt thc, trnh qun l b nh chuyn d liu trong vng m ti a ch b nh thch hp. S vic trn lm gim hiu qu ca qu trnh DMA nhng b li n lm cho h thng vn c th thc hin c. Mt vn thc s xy ra khi d liu ca qu trnh chuyn DMA ln hn vng m. Bn s nhn c mt thng bo li nhc nh tng kch
thc vng m DMA ca trnh qun l b nh, tip theo l vic my b treo cng. l sn phm ca trnh qun l b nh trong khi n ang c gng ngn chn vic tht thot d liu. Theo ngm nh, EMM386.EXE s dng vng m DMA c kch thc 32KB. Kch thc vng m c th c t trong khong t 16KB ti 256KB bng cch s dng tham s D=; kch thc ngm nh thng l ph hp v trong hng lot trng hp n c kh nng cha ht c d liu DMAC. Thm ch mt trng hp phc tp khc ny sinh khi DMAC khng nm trn bo mch h thng m nm trn thit b, ni m trnh qun l b nh khng th iu khin qu trnh DMAC a d liu ra cng I/O. iu xy ra vi mt iu khin a cng ch huy c ng truyn (BMC). B iu khin gy ra rt nhiu iu phin toi khi ngi s dng khi ng SmartDrive ca DOS 5.0 v np n ln vng b nh cao. Gii php c Microsoft a ra nm 1990 l mu chi tit k thut ca cc thit b phc v o (VDS). VDS l mt tp cc phc v cho php trnh qun l b nh cung cp a ch b nh ca h thng cho BMC trc khi c v ghi. Tt nhin, b iu khin cha DMAC phi nhn bit c VDS, nhng gi y dng nh hu ht cc b iu khin u c kh nng . l tt c nhng iu phc tp th v. iu kt lun l ngy nay vic s dng cc thit b DMA vi cc trnh qun l b nh trong mode 86 o thc s an ton. 4. c thm v DMA Nu bn mun hc thm v DMA v c bit l tm hiu cch lp trnh chip DMA, cho php ti gii thiu vi bn 2 cun sch sau : Cun th nht ca Hans-Peter Messmer vi nhan The Indispensable PC Hardware Book (1994, Addition - Wesley). y thc s l mt kit tc v v hnh chung n thay th hn na t sch hng dn s dng phn cng ti thng dng. N khng qu i su vo chi tit khi m t cc thnh phn trong my PC lm vic ra sao, bao gm c chip nm trn bo mch h thng. V mc d cun sch c dch t ting c, ni dung ca n vn gi c nguyn bn. Cun sch th hai ca Frank Van Gilluwe c nhan The Undocumented PC (1994, Addition - Wesley). Mc d khng bng cun sch ca Messmer, cun sch ny cng l mt kho tng cc thng tin kh kim v my PC.