Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 7

DMA v cc chng trnh qun l b nh Nguyn c Hong PC Magazine 12/94 Pcword VN Ging nh IRQ, DMA (Direct Memory Access)

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.

You might also like