Tuesday, December 11, 2018

Direct Memory Access (DMA) ဆုိတာ



System Resources ထဲမွာ ပါ၀င္တဲ့ Direct Memory Access (DMA) ဆုိတာက Direct ဆုိတဲ့အတုိင္း တုိက္ရုိက္ အလုပ္လုပ္ေဆာင္ျခင္း ျဖစ္ပါတယ္။ သံုးစြဲသူ တစ္ဦးဦးက မိမိ အသံုးျပဳေနတဲ့ Computer မွာ လုပ္ေဆာင္ေစခ်င္တဲ့ အရာတစ္ခုခု ၫႊန္ၾကားလိုက္တယ္ ဆုိပါေတာ့။ အဲဒီ ၫႊန္ၾကားခ်က္က CPU ဆီ ေရာက္သြားၿပီး မိမိ လုပ္ေဆာင္ေစခ်င္တဲံ အရာကို Output အေနနဲ႔ ျပန္လည္ရရွိမွာ ျဖစ္ပါတယ္။ အဲ...လုပ္ငန္းက တစ္ခုတည္းဆုိရင္ေတာ့ CPU အတြက္အလုပ္မွ မ႐ႈပ္ဘဲ အဆင္ေျပတာေပါ့ေနာ္။ တကယ္လုိ႔ လုပ္ေဆာင္စရာ လုပ္ငန္းစဥ္ေတြ မ်ားေနရင္ေလ

CPU က လုပ္စရာေတြမ်ားေနေတာ့ မႏို္င္ေတာ့ဘဲ ျဖစ္ေနတတ္ပါတယ္။ အဲဒီအခါ CPU က လုုပ္ငန္းစဥ္ေတြ မၿပီးတဲ့အတြက္ ေစာင့္ဆုိင္းရတဲ့အခ်ိန္ေတြ ၾကာလာပါတယ္။ ဒီေတာ့ လုပ္ေဆာင္မႈေတြ ေႏွးလာေတာ့တာေပါ့။

            ဒီလိုအေျခအေနမ်ိဳးမွာ တုိက္ရိုက္လုပ္ေဆာင္မႈ DMA လုိလာၿပီေပါ့။ သူ႔ရဲ႕  အဓိက လုပ္ေဆာင္မႈက အလုပ္႐ႈပ္ေနတဲ့ CPU ကုိ ဒုကၡမေပးေတာ့ဘဲ မိမိကုိယ္တုိင္ Memory ဆီ တုိက္ရုိက္သြားၿပီး လုိအပ္တဲ့ Data အခ်က္အလက္ေတြကို လွမ္းေတာင္းယူတဲ့ သေဘာတရားပါ။ ဒီေတာ့ သူက CPU ကို လံုး၀ အားမကုိးေတာ့ဘူးေလ။ လုပ္ေဆာင္စရာ တစ္ခုခုရွိေနတဲ့အခါ လုိအပ္တဲ့ အခ်က္အလက္ေတြကို  ယခင္ကကဲ့သို႔  CPU မွ တဆင့္ Memory ဆီ သြားေရာက္ေတာင္းယူျခင္းမ်ိဳး မဟုတ္ဘဲ CPU ရဲ႕ အကူအညီ မယူေတာ့ဘဲ Memory ထံ တိုက္ရုိ္က္သြားေရာက္ၿပီး Data အခ်က္အလက္ေတြ ရယူျခင္းပါ။ ဒီေတာ့ CPU အငယ္စားေလးလုိ႔ ေျပာလုိ႔ ရပါတယ္။  Disk Drive Controllers, Graphic Cards, Nerwork Cards နဲ႔ Sound Cards စတဲ့ Hardware Systems အမ်ားစုက DMA  ကုိ အသံုးျပဳၾကပါတယ္။ အမ်ုားအားျဖင့္ DMA ကို Local Memory နဲ႔ Main Memory တုိ႔အၾကား Data ေတြ သယ္ေဆာင္ရာမွာ အသံုးျပဳပါတယ္။










ဒီေတာ့ DMA ကုိ  Data ေတြ တစ္ေနရာမွ တစ္ေနရာသုိ႔ သယ္ယူပုိ႔ေဆာင္ရာမွာ CPU ဆီသြားေနဖို႔ မလိုဘဲ Memory ဆီ တုိ္က္ရုိ္က္သြားၿပီး လုပ္ေဆာင္မႈျပဳတဲ့ေနရာမွာ အသံုးျပဳပါတယ္။ ဒီေတာ့ CPU ကို ေစာင့္ဆုိင္းေနဖို႔ အခ်ိန္မလုိေတာ့တဲ့အတြက္ အလုပ္လုပ္ေဆာင္တဲ့  အခ်ိန္ပုိမုိ ျမန္ဆန္လာတာေပါ့။ DMA Chip ေလးကေတာ့ 8237 ဆိုတဲ့ Chip ေလးပါပဲ။ ဒီေတာ့  IBM (International Business Machine) ကုမၸဏီက DMA နဲ႔ သက္ဆိုင္တာေတြ အားလံုးကုိ 8237 Chip ထဲမွာ ထည့္ေပးထားတာပါ။ CPU အလုပ္႐ႈပ္ေနတဲ့အခ်ိန္မွာ CPU က External Data Bus ကုိ အသံုးမျပဳေသးတဲ့အတြက္ DMA Chip ေလးက အဲဒီ External Data Bus ကို အသံုးျပဳၿပီး Data ေတြ ပို႔ပါတယ္။ 8237 Chip ေလးရဲ႕ တစ္ဖက္မွာ CPU ကုိ Wire တစ္ခုနဲ႔ ဆက္သြယ္ထားၿပီး ေနာက္တစ္ဖက္က Wire (၄) ခု ထြက္ေနပါလိမ့္မယ္။ အဲဒီ Wire ေလးခုကို DRQ 0 မွ DRQ 3 (သို႔) DMA Channel လို႔ ေခၚဆိုၾကပါတယ္။ ISA (Industry Standard Architecture) Slot နဲ႔ ခ်ိတ္ဆက္ထားပါေသးတယ္။
            PC (Personal Computer) တစ္လံုးမွာ DMA Channels (၈)ခု ပါ၀င္ပါတယ္။ ပထမ Channel (၄) ခု (DRQ0 to DRQ3) က 8-bit Bandwidth ရွိေပမဲ့ က်န္တဲ့ Channel (4) ခု (DRQ4 to DRQ7) ကေတာ့ 16-bit Bandwidth ရွိပါတယ္။ Windows XP မွာ ဆိုရင္ေတာ့ DMA Channel အေနနဲ႔ က 0 မွ 7 အထိ Channel (၈) ခု ရွိပါတယ္။ DMA နဲ႔ ပတ္သက္ၿပီး သိထားရမွာ တစ္ခုက 286 ကေနစၿပီး ယေန႔အထိ DMA ႏွစ္လံုး သံုးထားပါတယ္။

ဥပမာ အေနနဲ႔ ေအာက္မွာ ေဖၚျပေပးထားတဲ့ DMA Channel ေတြအေၾကာင္းကို ေလ့လာႏိုင္ပါတယ္။ No Specific Assignment ဆုိတာက တိတိက်က် သတ္မွတ္ထားျခင္း မရွိဘူးလို႔ ဆုိလုိတာပါ။
DRQ0 - The System Board (8-bit Transfer)
DRQ1 - No Specific Assignment, တစ္ခါတစ္ရံ Sound Cards, (သုိ႔) SCSI Host Adapters တုိ႔အတြက္ အသံုးျပဳတတ္ပါတယ္။  (8-bit Transfer)
DRQ2 - The Diskette Drives (8-bit Transfer)
DRQ3 - No Specific Assignment, တစ္ခါတစ္ရံ Sound Cards, Network Interface Cards (သုိ႔) SCSI Host Adapters တုိ႔အတြက္ သံုးပါတယ္။ (8-bit Transfer)
DRQ4 - No Specific Assignment (16-bit Transfer)
DRQ5 - No Specific Assignment, တစ္ခါတစ္ရံ Sound Blaster Cards ေတြမွာ ဒီ Channel ကုိ အသံုးျပဳပါတယ္။ (16-bit Transfer)
DRQ6 - No Specific Assignment (16-bit Transfer)
DRQ7 - No Specific Assignment (16-bit Transfer)
 ေနာက္ထပ္ ဥပမာ အေနနဲ႔ DMA Channel နဲ႔ သက္ဆိုင္တာေလးေတြကို ေဖၚျပေပးပါဦးမယ္။ တစ္ခါတစ္ရံ ေအာက္မွာ ေဖၚျပထားတဲ့အတုိင္း ျမင္ေတြ႔ႏုိင္ပါတယ္။
    * DMA0 - free
    * DMA1 - (sound card)/ free
    * DMA2 - floppy disk controller
    * DMA3 - parallel port (printer port)
    * DMA4 - direct memory access (DMA) controller (connected to DMA0)
    * DMA5 - Same as DMA1
    * DMA6 - (SCSI)/ free
    * DMA7 - Available
 အခု ေလာေလာဆယ္မွာေတာ့ အနည္းငယ္ ႐ႈပ္ေထြးေနပါလိမ့္မယ္။ ပုိၿပီး နားလည္သြားေအာင္ မိမိတုိ႔ရဲ႕ Computer အတြင္းမွာ ရွိေနတဲ့ DMA Channel ေတြကို ေလ့လာၾကည့္ရေအာင္ေနာ္။ ဘယ္လိုသြားရမလဲဆုိတဲ့ လမ္းေၾကာင္းကုိလည္း ေျပာျပေပးမယ္ေနာ္။ Start>All Programs> Accessories>System Tools>System Information ကုိ သြားလို႔ရသလုိ My Computer ကို Right Click ႏွိပ္ၿပီး Properties ထဲ၀င္ကာ Hardware Tab မွ တဆင့္ Device Manager ထဲ ၀င္လို႔ရပါတယ္။ အဲဒီ ေနာက္ View ဆိုတဲ့ Tab ေလးထဲမွာ ပါ၀င္တဲ့ Resources by Type ကုိ ေရြးၿပီး ၾကည့္လုိ႔ရပါတယ္။






ေနာက္ထပ္ မွတ္သားရမွာတစ္ခုက DMA မွာလည္း ကန္႔သက္ခ်က္ ရွိပါတယ္။ DMA က ISA Bus မွာ စုိက္ထားတဲ့ Card ေတြမွာပဲ အလုပ္ လုပ္ေဆာင္ေပးႏုိင္ပါတယ္။ Speed အေနနဲ႔ေတာ့ အျမန္ဆံုး 8MHz ပဲ ရႏုိ္င္ပါတယ္။ 8237 Chip ေလးက Data တစ္ခါသယ္တိုင္း 8-bit ပဲ သယ္ေဆာင္ႏုိ္င္ပါတယ္။ ဒါေၾကာင့္ Computer အသံုးျပဳတဲ့အခါ ေႏွးေနတတ္ပါတယ္။ ေနာက္ပုိင္းမွာ ျမန္ဆန္လာတဲ့ Modern Computer ေတြကို တျဖည္းျဖည္းနဲ႔ ထုတ္လုပ္လာၾကေတာ့ 8237 Chip ေလးကုိ မသံုးေတာ့ဘဲ DMA ကုိ အသံုးျပဳႏုိင္မယ့္ လုပ္ငန္းစဥ္ (Process) တစ္ခု  ေပၚေပါက္လာခဲ့ပါတယ္။ အဲဒီ အရာေလးကုိ Bus Mastering လို႔ ေခၚပါတယ္။ Bus Mastering အေၾကာင္း ေလ့လာခ်င္တယ္ဆုိရင္ေတာ့ အဲဒီ ေခါင္းစဥ္နဲ႔ သင္ခန္းစာေလးကုိ ေစာင့္ေမွ်ာ္ ဖတ္႐ႈပါဦးေနာ္...။




























No comments:

Post a Comment