NguyÔn §øc Hoµng PC Magazine 12/94 Pcword VN
Gièng nh IRQ, DMA (Direct Memory Access) lµ mét thµnh phÇn bÝ Èn mµ dêng nh tÊt c¶ chóng ta ®Òu ®· gÆp nhng chØ cã mét sè rÊt Ýt ngêi cã thÓ gi¶i thÝch mét c¸ch chÝnh x¸c.
Trong c¸c m¸y PC hiÖn nay, ng¾t vµ IRQ (Interrupt ReQuest) ®îc quan t©m ®Õn nhiÒu, nhng cã mét khÝa c¹nh kh¸c quan träng ®èi víi ho¹t ®éng cña m¸y l¹i kh«ng ®îc chó ý ®Õn, ®ã lµ DMA hay Direct Memory Access (truy nhËp bé nhí trùc tiÕp). Gièng nh IRQ, DMA lµ mét thµnh phÇn bÝ Èn mµ dêng nh tÊt c¶ chóng ta ®Òu ®· gÆp nhng chØ cã mét sè rÊt Ýt ngêi cã thÓ gi¶i thÝch mét c¸ch chÝnh x¸c.
Kh«ng hoµn toµn lý thuyÕt khi b¹n t×m kiÕm sù hiÓu biÕt vÒ DMA. §Ó l¾p thªm mét card ©m thanh hoÆc mét thiÕt bÞ tiÕp hîp (gäi t¾t lµ thiÕt bÞ) vµo m¸y tÝnh, b¹n cã thÓ ®îc yªu cÇu chän m«t kªnh DMA. Lµm sao b¹n biÕt cÇn ph¶i chän kªnh nµo vµ hËu qu¶ sÏ ra sao khi b¹n chän sai kªnh? §Ó tr¶ lêi c©u hái ®ã, chóng ta sÏ t×m hiÓu DMA lµ g×, nã lµm viÖc ra sao vµ ngµy nay nã ®îc sö dông nh thÕ nµo trªn c¸c m¸y PC. Chóng ta còng sÏ th¶o luËn vÒ t¸c ®éng qua l¹i gi÷a bé phËn ®iÒu khiÓn DMA vµ nh÷ng ch¬ng tr×nh qu¶n lý bé nhí 386 vµ kh¸m ph¸ ý nghÜa thùc sù cña tham sè D = ®îc cung cÊp bëi tr×nh qu¶n lý EMM386.EXE cña DOS.
1. DMA lµ g× ?
DMA lµ mét kü thuËt chuyÓn d÷ liÖu nhanh tõ mét card thiÕt bÞ tíi bé nhí, tõ bé nhí ra card thiÕt bÞ, hoÆc trong mét vµi trêng hîp tõ mét vÞ trÝ trong bé nhí tíi mét vÞ trÝ kh¸c. ViÖc chuyÓn theo DMA rÊt quan träng v× nã kh«ng yªu cÇu ®Õn sù thùc thi cña CPU. ChuyÓn theo DMA ®îc thùc hiÖn b»ng c¸ch lËp tr×nh mét chip cã tªn lµ bé ®iÒu khiÓn DMA (gäi ng¾n gän lµ DMAC), chip ®ã n»m trªn bo m¹ch hÖ thèng cña mäi m¸y PC. ViÖc lËp tr×nh thêng ®îc hoµn thµnh bëi mét ch¬ng tr×nh ch¹y trªn m¸y tÝnh cña b¹n (vÝ dô mét ch¬ng tr×nh sao lu ®Üa cøng) hoÆc bëi mét thñ tôc lu trong ROM, hoÆc trªn mét card thiÕt bÞ tiÕp hîp (vÝ dô trong ROM cña card ®iÒu khiÓn ®Üa mÒm). Mçi lÇn bé ®iÒu khiÓn ®îc khëi ®éng vµ qu¸ tr×nh chuyÓn d÷ liÖu b¾t ®Çu, CPU ®îc tù do vµ lµm viÖc kh¸c trong khi DMAC tiÕp tôc thùc hiÖn chuyÓn d÷ liÖu, cã hai bé vi xö lý ®ång thêi lµm viÖc phôc vô b¹n: mét thùc hiÖn m· (code), cßn mét chuyÓn d÷ liÖu.
ViÖc chuyÓn theo DMAC quan träng cßn v× mét lý do kh¸c, nã chuyÓn d÷ liÖu trùc tiÕp tõ nguån d÷ liÖu ®Õn n¬i nhËn mµ kh«ng cÇn th«ng qua bÊt kú bé phËn lu tr÷ trung gian nµo. Qu¸ tr×nh ®a mét byte d÷ liÖu tõ mét thiÕt bÞ tíi mét vÞ trÝ trong bé nhí th«ng qua CPU lµ mét qu¸ tr×nh hai bíc. §Çu tiªn CPU ®äc byte ®ã tõ thiÕt bÞ vµ lu trong mét trong sè c¸c thanh ghi cña nã. TiÕp theo ®ã nã ®äc byte tõ thanh ghi tíi ®Þa chØ cÇn chuyÓn ®Õn trong bé nhí. DMAC gi¶m qu¸ tr×nh trªn xuèng cßn mét bíc, nã vËn dông c¸c tÝn hiÖu ®iÒu khiÓn trªn ®êng truyÒn, v× thÕ byte ®ã ®îc ®äc vµ ghi chØ trong mét hµnh ®éng.
Mét c¸ch tèt ®Ó hiÓu sù kh¸c nhau trªn lµ minh häa c¸c qu¸ tr×nh trªn nh lµ mét cuéc ch¬i bãng nÐm. CPU lµ ngêi ch¬i nÐm bãng víi hai ngêi kh¸c ®îc gäi lµ A vµ B. §Ó chuyÓn bãng tõ A tíi B, CPU ph¶i b¾t qu¶ bãng do A nÐm vµ tung nã cho B. DMA, theo mét c¸ch kh¸c, sÏ nãi A tung trùc tiÕp qu¶ bãng cho B. Trong lóc Êy, CPU cã thÓ lµm c¸c c«ng viÖc kh¸c nh khëi ®éng cÇu thñ tiÕp theo.
ChuyÓn d÷ liÖu tõ bé nhí ®Õn bé nhí theo DMA hiÖn nay kh«ng ®îc sö dông n÷a v× tèc ®é CPU vît trªn DMAC rÊt nhiÒu, nhng chuyÓn d÷ liÖu tõ bé nhí ®Õn thiÕt bÞ vµ tõ thiÕt bÞ ®Õn bé nhí lµ nh÷ng kú tÝch ®¸ng kÓ. §Ó ®a d÷ liÖu tõ thiÕt bÞ vµo bé nhí, DMAC kÝch ho¹t ®êng truyÒn g©y nªn lÖnh ®äc tõ thiÕt bÞ (mét ho¹t ®éng ®äc cæng I/O) vµ ®ång thêi t¹o ra lÖnh ghi vµo bé nhí. ViÖc kÝch ho¹t ®äc tõ cæng I/O sÏ lµm cho thiÕt bÞ ®Æt mét ®¬n vÞ - th«ng thêng lµ mét byte hoÆc mét Word - lªn ®êng truyÒn d÷ liÖu cña m¸y PC. Vµ v× tuyÕn ®äc bé nhí ®îc ho¹t ®éng ®ång thêi cho nªn d÷ liÖu trªn ®êng truyÒn ®îc sao ngay vµo bé nhí. Víi mçi lÇn ghi, DMAC dïng ®êng ®Þa chØ ®Ó chØ ®Þnh ®Þa chØ trong bé nhí n¬i d÷ liÖu sÏ tíi.
T¬ng tù ®èi víi qu¸ tr×nh chuyÓn theo DMA tõ bé nhí ®Õn thiÕt bÞ. Víi mçi ®¬n vÞ d÷ liÖu ®îc chuyÓn, DMAC ra lÖnh ®äc ®èi víi bé nhí vµ ghi ®èi víi cæng I/O. §Þa chØ cña bé nhí ®îc ®Æt trªn ®êng ®Þa chØ. Gièng nh qu¸ tr×nh trªn, d÷ liÖu ®îc chuyÓn trùc tiÕp tõ n¬i ph¸t ®Õn n¬i nhËn b»ng c¸ch sö dông ®êng d÷ liÖu.
DMAC ®îc sö dông trong phÇn lín c¸c m¸y PC lµ chip cã ký hiÖu 8237A hoÆc t¬ng ®¬ng. C¸c dßng m¸y Micro Channel vµ EISA ®· söa ®æi kü thuËt DMA t¹o ra mét chip riªng cã c¸c chøc n¨ng h¬n h¼n 8237A, nhng cã rÊt Ýt ch¬ng tr×nh ®iÒu khiÓn thiÕt bÞ tËn dông ®îc nh÷ng u ®iÓm më réng ®ã. Dßng m¸y IBM-XT chØ sö dông mét chip 8237A lËp tr×nh ®îc cung cÊp 4 kªnh DMA riªng rÏ, ®¸nh sè tõ 0 ®Õn 3. Dßng m¸y IBM-AT (chiÕm phÇn lín thÞ trêng m¸y PC hiÖn nay) sö dông 2 chip 8237A cung cÊp 8 kªnh DMA ®éc lËp ®¸nh sè tõ 0 ®Õn 7. ChØ cã 7 trong sè 8 kªnh DMA sö dông ®îc v× mét kªnh (kªnh 4) ®îc sö dông ®Ó liªn kÕt hai bé ®iÒu khiÓn víi nhau sao cho chóng cã thÓ lµm viÖc nh mét ®¬n vÞ thèng nhÊt. Kªnh 0 ®Õn 3 chuyÓn 8 bit d÷ liÖu cïng mét lóc vµ cã thÓ lu 64KB chØ trong mét lÇn ho¹t ®éng, trong khi kªnh 5 ®Õn 7 chuyÓn 16 bit vµ cã thÓ chuyÓn ®îc 128KB trong mét lÇn ho¹t ®éng.
Gièng nh bé ®iÒu khiÓn ng¾t, n¬i nhËn yªu cÇu ng¾t tõ c¸c thiÕt bÞ th«ng qua ®êng IRQ, mét DMAC nhËn yªu cÇu DMA th«ng qua ®êng DMA request (DREQ). Chip 8237A cung cÊp mét vµi ph¬ng thøc vµ ph¬ng ph¸p hµnh ®éng kh¸c nhau, tuy nhiªn mét qu¸ tr×nh chuyÓn ®iÓn h×nh tõ thiÕt bÞ tíi bé nhí diÔn ra nh sau:
DMAC ®îc lËp tr×nh ®Çu tiªn víi ®Þa chØ cña bé nhí sÏ ghi d÷ liÖu vµ sè byte ®îc chuyÓn. Khi thiÕt bÞ ®· s½n sµng b¾t ®Çu qu¸ tr×nh chuyÓn, nã kÝch ho¹t ®êng DREQ ®Ó kÕt nèi víi DMA. Sau khi ®îc CPU cho phÐp ®iÒu khiÓn ®êng truyÒn, DMAC ®a ra ®Þa chØ bé nhí vµ t¹o ra tÝn hiÖu ®Ó mét byte (hoÆc mét tõ) d÷ liÖu ®îc ®äc tõ thiÕt bÞ vµ ghi vµo vïng ®îc chØ ®Þnh trong bé nhí. Sau ®ã nã cËp nhËt ®Þa chØ bé nhí cho byte tiÕp theo vµ lÆp l¹i qu¸ tr×nh trªn cho tíi khi toµn bé d÷ liÖu ®îc chuyÓn hoµn tÊt. Dùa trªn c¸ch bé ®iÒu khiÓn ®îc lËp tr×nh, mçi byte ®îc chuyÓn cã thÓ yªu cÇu mét tÝn hiÖu DREQ riªng rÏ (ph¬ng thøc chuyÓn ®¬n) hoÆc chØ mét tÝn hiÖu cã thÓ khëi ®éng tÊt c¶ qu¸ tr×nh truyÒn (ph¬ng thøc chuyÓn khèi hoÆc theo yªu cÇu).
Cã mét thiÕt bÞ DMA cã trªn tÊt c¶ c¸c m¸y PC lµ bé ®iÒu khiÓn ®Üa mÒm. D÷ liÖu trªn ®Üa mÒm ®îc ®äc theo tõng ®¬n vÞ 512 byte (1 sector) vµ ®îc chuyÓn b»ng DMA sö dông kªnh DMA sè 2. §Ó ®äc mét sector d÷ liÖu, ng¾t BIOS 13H lËp tr×nh DMA theo ph¬ng thøc chuyÓn ®¬n vµ cung cÊp mét lÖnh ®äc cho ®iÒu khiÓn ®Üa mÒm. Khi thùc hiÖn, ®iÒu khiÓn ®Üa ®äc byte d÷ liÖu tõ ®Üa vµ khëi ®éng qu¸ tr×nh truyÒn b»ng c¸ch kÝch ho¹t DREQ 2. Sau ®ã nã ®äc lÇn lît c¸c byte kh¸c theo c¸ch nh trªn ®Ó chuyÓn byte vµo ®Þa chØ vËt lý trong bé nhí. Tíi khi DMAC ®· chuyÓn xong 512 byte, ®iÒu khiÓn ®Üa t¹o ra mét ng¾t cøng ®Ó b¸o cho CPU biÕt ®· cã thÓ sö dông ®îc sector ®ã.
2. C¸c kªnh DMA
Khi b¹n g¾n mét card thiÕt bÞ cã sö dông DMA trªn m¸y PC, b¹n thêng ®îc yªu cÇu chän kªnh DMA. §Æt mét DIP-switch hoÆc ®Þnh l¹i jumper víi kªnh DMA 5 sÏ thiÕt lËp mét giao tiÕp vËt lý gi÷a thiÕt bÞ vµ DMAC th«ng qua DREQ 5. Th«ng thêng, phÇn mÒm sö dông thiÕt bÞ ph¶i ®îc cung cÊp sè hiÖu kªnh DMA Ên ®Þnh ®Ó nã cã thÓ lËp tr×nh DMAC cho viÖc chuyÓn theo DMA. MÆc dï theo lý thuyÕt cã thÓ nhiÒu thiÕt bÞ chia sÎ mét ®êng DREQ nÕu chóng kh«ng ®ång thêi sö dông, nhng - nh mét luËt - tèt nhÊt lµ giíi h¹n mçi thiÕt bÞ sö dông mét kªnh. Nh vËy b¹n sÏ ch¾c ch¾n kh«ng gÆp xung ®ét DMA.
Nh ®· biÕt, chóng ta kh«ng sö dông ®îc kªnh DMA 2 vµ 4 v× chóng ®îc dµnh cho ®iÒu khiÓn ®Üa mÒm vµ lµm ®êng nèi 2 chip DMA. Kªnh 0 còng kh«ng sö dông ®îc v× trªn c¸c m¸y PC tríc ®©y nã ®îc sö dông ®Ó phôc håi bé nhí. Vµo lóc khëi ®éng, BIOS cña m¸y PC nguyªn thñy lËp tr×nh cho ®ång hå ®Ó cø vµi mili gi©y l¹i ®a yªu cÇu ®äc DMA gi¶ - nh»m t¹o ra viÖc ®äc bé nhí nhng kh«ng nhÊt thiÕt cã thiÕt bÞ nhËn d÷ liÖu ®ã - nh vËy tr¸nh mÊt th«ng tin trong DRAM. TÊt c¶ c¸c m¸y PC hiÖn nay phôc håi DRAM mµ kh«ng cÇn sù gióp ®ì cña hÖ thèng DMA. Tuy vËy b¹n vÉn kh«ng thÓ sö dông kªnh DMA sè 0 v× cã mét sè m¸y kh«ng thiÕt lËp kªnh ®ã. VËy b¹n sÏ xö trÝ ra sao khi ®îc yªu cÇu chän mét kªnh DMA? C©u tr¶ lêi lµ chän c¸c kªnh DMA cßn l¹i.
B¶ng díi liÖt kª danh s¸ch c¸c kªnh DMA ®· ®îc ph©n bæ. Trªn hÇu hÕt c¸c m¸y PC, kªnh 1, 3, 5, 6 vµ 7 ®îc ®Ó dµnh cho viÖc ghÐp nèi víi thiÕt bÞ. Dßng m¸y PS/2 sö dông kªnh 5 ®Ó chuyÓn d÷ liÖu cho ®Üa cøng, cßn dßng XT th× dïng kªnh 3. V× lý do nµy, khi sö dông 2 dßng m¸y trªn, b¹n cÇn tr¸nh sö dông c¸c kªnh ®ã. Khi b¹n cßn cha Ên ®Þnh mét kªnh DMA cho mét thiÕt bÞ nµo th× b¹n cã thÓ sö dông nã bÊt kú khi nµo b¹n muèn. Nhng b¹n nªn theo dâi b¶ng ph©n bæ kªnh DMA ®Ó kh«ng x¶y ra hiÖn tîng hai thiÕt bÞ cïng chia sÎ mét kªnh DMA. T«i viÕt trªn quyÓn sæ ®Ó bµn cña m×nh danh s¸ch c¸c IRQ vµ DMA ®· ®îc sö dông. Khi c¾m thªm mét card thiÕt bÞ míi vµ t×m kiÕm mét DMA cha sö dông, t«i kh«ng ph¶i th¸o c¸c card thiÕt bÞ ®· c¾m trong m¸y vµ xem c¸c jumper cña chóng.
Cã mét vµi tr×nh tiÖn Ých ph¸t hiÖn ®îc kªnh DMA nµo ®· ®îc sö dông nhng chóng kh«ng thùc sù ®¸ng tin cËy. NÕu b¹n kh«ng cã th«ng tin vÒ c¸c kªnh DMA ®· ®îc ph©n bæ vµ b¹n còng kh«ng muèn lôc t×m trong ®èng tµi liÖu cña m×nh th× ®· cã mét lo¹t c¸c ch¬ng tr×nh chÈn ®o¸n ph©n tÝch m¸y th«ng b¸o cho b¹n biÕt danh s¸ch nh÷ng kªnh DMA ®· sö dông. C¸c ch¬ng tr×nh trªn cha thùc sù hoµn h¶o nªn cã thÓ kÕt qu¶ ®a ra sÏ kh«ng chÝnh x¸c.
3. C¸c vÊn ®Ò qu¶n lý bé nhí
C¸c tr×nh qu¶n lý bé nhí theo 86 ¶o nh EMM 386.EXE., QEMM-386 vµ 386MAX g©y ra mét vÊn ®Ò ®Æc biÖt ®èi víi DMAC. §Þa chØ bé nhí ®îc lËp tr×nh vµo trong DMAC phôc vô cho viÖc chuyÓn theo DMA lµ c¸c ®Þa chØ vËt lý. Nhng c¸c tr×nh qu¶n lý trªn thêng xuyªn ®Þnh l¹i b¶n ®å bé nhí lµm cho mét ®Þa chØ bé nhí cã tríc t¬ng øng víi mét ®Þa chØ bé nhí vËt lý kh¸c (th«ng thêng lµ mét n¬i kh«ng dïng ®Õn trong bé nhí më réng). Khi mét ch¬ng tr×nh truy nhËp ®Õn phÇn ®Þa chØ ®· ®îc ®Þnh l¹i, CPU chuyÓn yªu cÇu ®ã ®Õn ®Þa chØ vËt lý phï hîp. Tuy nhiªn, nÕu DMAC cè g¾ng truy nhËp ®Õn ®Þa chØ trªn, viÖc truy nhËp sÏ thÊt b¹i v× kh«ng cã c¸ch nµo ®Ó DMAC biÕt b¶n ®å bé nhí ®· ®îc ®Þnh l¹i.
§iÒu kÕt luËn lµ c¸c ch¬ng tr×nh lµm viÖc theo DMA cã d÷ liÖu n¹p trong vïng bé nhí cao (UMB) sÏ kh«ng lµm viÖc ®îc nÕu kh«ng chÞu sù kiÓm so¸t cña c¸c ch¬ng tr×nh qu¶n lý bé nhí. Mét DMAC ®îc lËp tr×nh ®a d÷ liÖu ra cæng I/O vµ trong chÕ ®é 86 ¶o mét tr×nh qu¶n lý bé nhí cã thÓ chÆn t¸t c¶ d÷ liÖu ®îc ®a ra cæng I/O. Nh vËy nã cã thÓ dù ®o¸n ®îc c¸c yªu cÇu DMA s¾p tíi vµ thËm chÝ biÕt ®îc c¶ ®Þa chØ bé nhí tiÕp theo. NÕu c¸c ®Þa chØ ®ã ®· ®îc söa ®æi, tr×nh qu¶n lý bé nhí sÏ lËp tr×nh l¹i DMAC theo ®Þa chØ bé nhí vËt lý phï hîp. Sau ®ã nã cho phÐp qu¸ tr×nh chuyÓn DMA thùc hiÖn nh thêng lÖ.
Mét t×nh huèng tai h¹i tiÒm tµng x¶y ra khi ®Þa chØ bé nhí vËt lý ®· ®îc söa ®æi göi cho qu¸ tr×nh chuyÓn theo DMA l¹i n»m ngoµi vïng qu¶n lý cña DMAC. PhÇn lín c¸c DMAC bÞ giíi h¹n trong 16MB bé nhí, mét sè kh¸c kh«ng thÓ ®¸nh ®Þa chØ lín h¬n 8MB. Khi mét ®Þa chØ nguån hoÆc ®Ých n»m ngoµi vïng DMAC cã kh¶ n¨ng ®¸nh ®Þa chØ, tr×nh ®iÒu khiÓn bé nhí ®a ra mÑo sau: Nã ®Þnh l¹i qu¸ tr×nh chuyÓn DMA ra mét vïng ®Öm cña nã - mét vïng n»m trong vïng cã thÓ truy nhËp bíi DMA - vµ cho phÐp qu¸ tr×nh chuyÓn thùc hiÖn. NÕu vïng ®Öm ®ñ lín ®Ó chøa d÷ liÖu th× sau khi qu¸ tr×nh chuyÓn kÕt thóc, tr×nh qu¶n lý bé nhí chuyÓn d÷ liÖu trong vïng ®ªm tíi ®Þa chØ bé nhí thÝch hîp. Sù viÖc trªn lµm gi¶m hiÖu qu¶ cña qu¸ tr×nh DMA nhng bï l¹i nã lµm cho hÖ thèng vÉn cã thÓ thùc hiÖn ®îc.
Mét vÊn ®Ò thùc sù x¶y ra khi d÷ liÖu cña qu¸ tr×nh chuyÓn DMA lín h¬n vïng ®Öm. B¹n sÏ nhËn ®îc mét th«ng b¸o lçi nh¾c nhë t¨ng kÝch thíc vïng ®Öm DMA cña tr×nh qu¶n lý bé nhí, tiÕp theo ®ã lµ viÖc m¸y bÞ treo cøng. §ã lµ s¶n phÈm cña tr×nh qu¶n lý bé nhí trong khi nã ®ang cè g¾ng ng¨n chÆn viÖc thÊt tho¸t d÷ liÖu. Theo ngÇm ®Þnh, EMM386.EXE sö dông vïng ®Öm DMA cã kÝch thíc 32KB. KÝch thíc vïng ®Öm cã thÓ ®îc ®Æt trong kho¶ng tõ 16KB tíi 256KB b»ng c¸ch sö dông tham sè D=; kÝch thíc ngÇm ®Þnh thêng lµ phï hîp v× trong hµng lo¹t trêng hîp nã cã kh¶ n¨ng chøa hÕt ®îc d÷ liÖu DMAC.
ThËm chÝ mét trêng hîp phøc t¹p kh¸c n¶y sinh khi DMAC kh«ng n»m trªn bo m¹ch hÖ thèng mµ n»m trªn thiÕt bÞ, n¬i mµ tr×nh qu¶n lý bé nhí kh«ng thÓ ®iÒu khiÓn qu¸ tr×nh DMAC ®a d÷ liÖu ra cæng I/O. §iÒu ®ã x¶y ra víi mét ®iÒu khiÓn ®Üa cøng chØ huy ®îc ®êng truyÒn (BMC). Bé ®iÒu khiÓn ®ã g©y ra rÊt nhiÒu ®iÒu phiÒn to¸i khi ngêi sö dông khëi ®éng SmartDrive cña DOS 5.0 vµ n¹p nã lªn vïng bé nhí cao. Gi¶i ph¸p ®îc Microsoft ®a ra n¨m 1990 lµ mÉu chi tiÕt kü thuËt cña c¸c thiÕt bÞ phôc vô ¶o (VDS). VDS lµ mét tËp c¸c phôc vô cho phÐp tr×nh qu¶n lý bé nhí cung cÊp ®Þa chØ bé nhí cña hÖ thèng cho BMC tríc khi ®äc vµ ghi. TÊt nhiªn, bé ®iÒu khiÓn chøa DMAC ph¶i nhËn biÕt ®îc VDS, nhng giê ®©y dêng nh hÇu hÕt c¸c bé ®iÒu khiÓn ®Òu cã kh¶ n¨ng ®ã. §ã lµ tÊt c¶ nh÷ng ®iÒu phøc t¹p thó vÞ. §iÒu kÕt luËn lµ ngµy nay viÖc sö dông c¸c thiÕt bÞ DMA víi c¸c tr×nh qu¶n lý bé nhí trong mode 86 ¶o thùc sù an toµn.
4. §äc thªm vÒ DMA
NÕu b¹n muèn häc thªm vÒ DMA vµ ®Æc biÖt lµ t×m hiÓu c¸ch lËp tr×nh chip DMA, cho phÐp t«i giíi thiÖu víi b¹n 2 cuèn s¸ch sau :
Cuèn thø nhÊt cña Hans-Peter Messmer víi nhan ®Ò The Indispensable PC Hardware Book (1994, Addition - Wesley). §©y thùc sù lµ mét kiÖt t¸c vµ v« h×nh chung nã ®· thay thÕ h¬n nöa t¸ s¸ch híng dÉn sö dông phÇn cøng t«i thêng dïng. Nã kh«ng qu¸ ®i s©u vµo chi tiÕt khi m« t¶ c¸c thµnh phÇn trong m¸y PC lµm viÖc ra sao, bao gåm c¶ chip n»m trªn bo m¹ch hÖ thèng. Vµ mÆc dï cuèn s¸ch ®îc dÞch tõ tiÕng §øc, néi dung cña nã vÉn gi÷ ®îc nguyªn b¶n.
Cuèn s¸ch thø hai cña Frank Van Gilluwe cã nhan ®Ò The Undocumented PC (1994, Addition - Wesley). MÆc dï kh«ng b»ng cuèn s¸ch cña Messmer, cuèn s¸ch nµy còng lµ mét kho tµng c¸c th«ng tin khã kiÕm vÒ m¸y PC.
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com