Sunday, February 1, 2015

CPU တွေ ဘယ်လို အလုပ်လုပ်သလဲ ?



ဒီPost လေးကို brighter myanmar မှာကူးယူဖော်ပြပါသည်....
ကျေးဇူးပြုပီး ဒီ Post ကို ဖတ်တဲ့ အခါ PDF ဖိုင် အနေနဲ့ ဒေါင်းပီးဖတ်ပါ၊ ဒီပိုစ့် ကို သေချာနားလည်ဖို့ အတွက် ဓါတ်ပုံ နဲ့ အသေးစိတ်ရှင်းခဲ့ရပါတယ်၊ အခု Post တင်တော့ ဓါတ်ပုံ တစ်ပံပဲ တင်လို့ရလို့ Post ချည်း ဆို နားလည်ရခက်သွားနိုင်ပါတယ်၊ ဒီပိုစ်ကို ဖတ်ဖြစ်အောင် ဖတ်ပေးပါ မိတ်ဆွေတို့ အချိန် အလကား မဖြစ်စေရပါဘူး၊

CPU ရဲ့ မူရင်း စာလုံးက တော့ Central Processing Unit ဖြစ်ပါတယ်၊ သူ့ကို ကွန်ပြူတာ ဦးနောက်လို့လဲ အဓိပါယ် ဖွင့်ဆိုကြပါတယ်၊ CPU ဘယ်လို အလုပ်လုပ်သလဲ ဆိုတာကို သိရင် ကွန်ပြူတာ ဘယ်လို အလုပ်လုပ် သလဲ ဆိုတာကို လဲ ကောင်းကောင်း သဘောပေါက်သွားမှာပါ၊

အခု CPU ကို ရဲ့ အဖုန်းကို ဖွင့်ကြည့်ရအောင်အထက်က ပုံကတော့ CPU ရဲ့ အဖုန်းကို ခွါလိုက်ရင် အတွင်းပိုင်းကို မြင်ရမယ့်ပုံပါ၊ အခု ပုံကြီးချဲ့လိုက်မယ်၊ နည်းနည်းပိုမြင်နိုင်အောင်လို့
CPU အထဲမှာ ဝါယာ အမျိုးမျိုး က သတင်းအချက်အလက်တွေ သယ်ယူပို့ဆောင်တဲ့ အလုပ်ကိုလုပ်နေပါတယ်၊ အခု Post မှာ ရှင်းပြဖို့ အသုံးပြုသွားမယ့် CPU ကတော့ 65-02 လို့ခေါ်ပါတယ်၊ ဒီ CPU အမျိုးအစားကို Apple အပါအဝင် ကွန်ပြူတာတွေအများစု မှာ အသုံးပြုကြပါတယ်၊ Original Naintainent System မှာလဲ ဒီ CPU ကိုပဲသုံးပါတယ်၊ ဒီ CPU ကိုရဲ့ အသေးစိတ် ဖြုတ်တပ်နည်းကိုသိချင်ရင်တော့ Virsual6502.org ဝက်ဆိုက်မှာ သွားရောက်ကြည့်ရူ့နိုင်ပါတယ်၊ 
ဘယ် CPU မှာ မဆို CPU အတွင်း လုပ်နေတဲ့အလုပ်တွေကို အခြေအနေမှန်မှန်နဲ့ တည်ငြိမ်စွာ Data သယ်ဆောင်မူ လုပ်ဖို့ အတွက် တိကျတဲ့ အချိန် အတိုင်း အတာ တစ်ခုတိုင်းမှာ ဖွင့်လိုက် ပိတ်လိုက် အလုပ်လုပ်နေတဲ့ ဝါယာတစ်ချောင်းရှိပါတယ်၊ အဲ့ဒီ့ ဝါယာကပဲ CPU အတွင်း လုပ်ဆောင်မူတွေကို မျှတစေပါတယ်၊ အဲ့ဒီ့ ဝါယာကို Clock လို့ခေါ်ပါတယ်၊ Disimulation မှာ တစ်စက္ကန့်ကို Clock က နှစ်ကြိမ်ဖွင့် ပီး နှစ်ကြိမ်ပိတ်ပါတယ်၊ နောက်ပိုင်းပေါ်တဲ့ CPU တွေမှာတော့ Clock ရဲ့ အလုပ်လုပ်နှုန်းကို GHz (GigaHertz) နဲ့ တိုင်းတာပါတယ်၊ Giga ကတော့ 1 billion ကို ညွန်းပီးတော့ Hz Hertz ကတော့ တစ်စက္ကန့် အတွင်း ဘယ်နှစ်ကြိမ်အလုပ်လုပ်လဲကိုညွန်းပါတယ်၊ ဒီတော့ အခုခါတ် CPU တွေက တစက္ကန့်ကို အကြိပ် ရေး Billion အတော်များများ ဖွင့် လိုက် ပိတ်လိုက်ဖြစ်နေပါတယ်၊ ဒီလို တစ်စက္ကန့်မှာ Billions အတော်များများ ဖွင့် ပိတ်နိုင်ခြင်းကပဲ CPU ရဲ့ တွက်ချက် အလုပ်လုပ်နိုင်မူ စွမ်းအားဖြစ်ပီး CPU ကို အလွန် ရှုတ်ထွေးတဲ့ တွက်ချက်မူတွေကို လုပ်ကိုင်နိုင်စေပါတယ်၊
ဒါပေမယ့် Clock ပွင့် တဲ့ အချိန်မှာ CPU ရဲ့ အလုပ်လုပ်ပုံကတော့ လူတွေထင်ထားသလို ရှုပ်ထွေးတာ မဟုတ်ပဲ ရိုးရိုး ရှင်းရှင်းလေးပဲ အလုပ်လုပ်သွားတာပါ၊ အဲ့ဒီ့ အလုပ်လုပ်ပုံကိုပဲ ဒီ Post မှာလေ့လာသွားမှာပါ၊
CPU ကို အထူးထုတ်လုပ်တဲ့ ကုမ္မဏီ နှစ်ခုကတော့ Intel နဲ့ AMD တို့ဖြစ်ပါတယ်၊
 ဒီမှာ အသေးစိတ်လေ့လာသွားမယ့် CPU ရဲ့နာမည်ကိုတော့ Scott CPU လို့ခေါ်ပါတယ်၊ တကယ်တော့ Scott CPU ဆိုတာ အပြင်မှာတကယ် မရှိပါဘူး၊ လေ့လာသူတွေအတွက် အဆင်ပြေအောင် Clerk Scott က သူ့ရဲ့ “But How to it Know” ဆိုတဲ့စာအုပ်မှာ တည်ဆောက်ပြထားတဲ့ စာအုပ်ထဲက လေ့လာရေး CPU သာဖြစ်ပါတယ်၊ Scott CPU ရဲ့ ဒီဇိုင်းက Clerk Scott ရဲ့ Copyright ဖြစ်ပီး Youtube Master က ရှင်းပြလို သူရှင်းပြတဲ့ အတိုင်း ဒီ Post မှာ ပြန်ဖော်တာပါ၊ Hotdoitknow.com ဝက်ဆိုက်မှာ ဒီစာအုပ်ကိုဝယ်ဖက်နိုင်ပါတယ်၊ ဒီစာအုပ်ကတော့ တကယ့်ကို ဂျွတ်လှပါတယ်၊ အသေးစိတ်ကို တဆင့်စီ ဖြေးဖြေး ရှင်းသွားပီး
ဖတ်ရူ့သူကို ခက်ခဲစေမယ့် ဘယ်လို Techical Jarcon (နည်းပညာသုံးသီးသန့်စာလုံး) တွေမပါပါဘူး၊


အခု CPU ကိုပြောင်းပြန်လှန်ပီးအောက်ပိုင်းကို တစ်ချက်ကြည့်ကြမယ်၊
Pins တွေအတော်များများ အပြင်ထွက်နေတာကို တွေ့ရပါမယ် ၊ အဲ့ဒီ့ Pin တွေကပဲ သတင်းအချက်အလက်တွေကို CPU ထဲကို ပို့ပီး အဲ့ဒီ့ Pin တွေကပဲ အချက်အလက်တွေကို CPU ကနေ အပြင်ကို ပြန်ထုတ်ပေးပါတယ်၊ ဒီ Pin တွေက သတင်းအချက်အလက်တွေအတွက် CPU ထဲကို ဝင်မယ့် ဝင်ပေါက် ထွက်ပေါက်တွေပေါ့၊ CPU ကို Mother Board ထဲမှာ စိုက်ထည့်ထားပါတယ်၊ အောက်က အတိုင်းပေါ့၊

MotherBoard ကတော့ ကွန်ပြူတာရဲ့ Components တွေအားလုံးကို တပ်ဆင်ပီး အားလုံး အချိတ်အဆက်မိစေတဲ့ Circus Board တစ်ခုဖြစ်ပါတယ်၊ အထက်က ပုံက CPU အဖုံးကို ဖွင့်ထားတဲ့ ပုံပါ အခု ပြန်ပိတ်လိုက်ကြပီး MotherBoard ထဲပြန်ထည့်ကြမယ်၊ အောက်က အတိုင်း
အထက်ကပုံရဲ့ ညာဘက်မှာတော့ RAM ထည့်မယ့် Socket ပေါက်ကိုတွေ့ရပါမယ်၊ RAM ကတော့ Random Access Memory ရဲ့ အတိုကောက်ပါ၊ CPU ကနေ တွက်ချက် အလုပ်လုပ်လို့ရတဲ့ Data တွေအားလုံးကို RAM ကိုလှမ်းပို့ပီး RAM ထဲမှာ သိုလှောင်ထားပါတယ်၊ ဒီနေရာမှာ RAM နဲ့ CPU တို့ ဘယ်လို တွဲဖက်ပီး အလုပ်လုပ်လဲ သိဖို့လိုအပ်တဲ့ အတွက် RAM ဘယ်လို အလုပ်လုပ်လဲဆိုတာကိုလဲ လေ့လာရမယ်၊ အခု အထက်က ပုံရဲ့ ဘယ်ဘက်က မလိုအပ်တဲ့ Wire အစိတ်အပိုင်းတွေကို ဖြတ်ထုတ်ပီး RAM Chips ပါပါဝင်မယ့် ပုံကို ကြည့်ကြမယ်၊

RAM ထဲမှာ Address လို့ခေါ်တဲ့ လိပ်စာတွေအများကြီးထည့်ထားတဲ့ စာရင်းပါပါတယ်၊ Address တစ်ခုစီက Data အစိတ်အပိုင်းတစ်ခုကိုညွန်းပါတယ်၊ အောက်က ပုံမှာ Addresses ကော Data တွေကိုပါ သရုပ်ဖော်ပြထားတယ်၊

CPU က RAM ထဲက Data တစ်ခုစီကို Request (တောင်းယူ) ပီးတော့ အလုပ်လုပ်ပါတယ်၊ Data တစ်ခု တောင်းယူ အလုပ်လုပ်ပီး နောက်တစ်ခု လုပ်တယ် နောက်တစ်ခုပီး နောက်တစ်ခု အလုပ်လုပ်တယ် စသဖြင့် တစ်ခုပီးနောက်တစ်ခု အစီအစဉ်အလိုက် အလုပ်လုပ်သွားတယ်၊ အစီအစဉ်တစ်ကျ အလုပ်လုပ် ဆိုပေမယ့် အမြဲ တမ်းတော့ အစီအစဉ်တစ်ကျ အလုပ်လုပ်နေမှာ မဟုတ်ပါဘူး၊ CPU ကို အစီအစဉ်တစ်ကျမဟုတ်ပဲ RAM ကနေ Data တွေကို တောင်းယူ အလုပ်လုပ်အောင် ညွန်ကြားနိုင်ပါတယ်၊ RAM က လဲ ဒီလို အစီအစဉ်မကျတဲ့ Request (တောင်းဆိုမူ) မျိုးကို လဲ လက်ခံနိုင်ပါတယ်၊ ဒါ့ကြောင့်ပဲ သူ့ကို Random Access Memory လို့ခေါ်တာပါ၊ ဒီတော့ CPU အနေနဲ့ ပုံမှန်အတိုင်းဆိုရင် RAM ထဲက ဒေတာတွေကို အစီအစဉ်အလိုက် တောင်းယူ အလုပ်လုပ်တယ်ဆိုပေမယ့် လိုအပ်လာရင် အစီအစဉ်မကျတဲ့ ပုံစံနဲ့ စိတ်ကြိုက် Data ကို တောင်းယူ အလုပ်လုပ်နိုင်တယ်ဆိုတာကိုလဲ သဘောပေါက်သင့်ပါတယ်၊

Computer က Program တစ်ခုကိုစ Run ပီဆိုတာနဲ့ CPU က RAM ဆီကနေ အလုပ်လုပ်လိုတဲ့ Program ကို တောင်းတဲ့ Request ကို တောင်းဆိုလိုက်ပါတယ်၊
RAM address မှာ တော့ 0 နဲ့ 1 တွေသာပါဝင်တဲ့ ဂဏန်းတွေတန်းစီထားပါတယ်၊ အဲ့ဒီ့ဂဏန်းတစ်ခုစီက တွေ On မလား Off မလား ဆိုတဲ့ အမိန့်ကို ကိုစားပြုပါတယ်၊ RAM မှာ Address တွေမရှိရင် RAM ကလဲ ဘာမှလုပ်နိုင်တော့ မှာမဟုတ်ပါဘူး၊ RAM အလုပ်လုပ်ဖို့ဆို CPU ကလဲ Enable Wire ကို On ပေးရပါတယ်၊ အောက်က ပုံမှာ Enable Wire On နေတာကို ကြည်ပါ၊ 
(မ်က္စိရွင္ရွင္ထား)

အကယ္၍ Address လဲရွိမယ္ Enable Wire ကလဲ On ေနမယ္ဆိုရင္ေတာ့ RAM က CPU ကေတာင္း ဆိုထားတဲ့ Address မွာရွိတဲ့ Data ကို CPU ကိုျပန္ပို႔ေပးပါတယ္၊ ဒီလို Data ျပန္ရပီဆိုရင္ေတာ့ CPU က အဲ့ဒီ့ ေဒတာကို ကို အလုပ္စလုပ္ေတာ့တယ္၊ အလုပ္လုပ္လို႔ပီးသြားရင္ CPU က RAM ဆီကို ေနာက္ထက္ Address တစ္ခု ျပန္ပို႔မယ္၊ Enable Wire ကို On လိုက္မယ္၊ ဒါဆိုရင္ RAM က ေနာက္ထက္ Data တစ္ခုကို CPU ကို ဆက္ပို႔ေပးမယ္၊ CPU က လုပ္ေဆာင္ခ်က္ေတြလုပ္မယ္၊ ပီးရင္ Address အသစ္ကို RAM ကို ျပန္ေပးမယ္၊ စသျဖင့္ အလုပ္ Data ပို႔လိုက္ ယူလိုက္နဲ႔ ဆက္တိုက္ အလုပ္လုပ္သြားမယ္၊ ဒီျဖစ္စဥ္က ကြန္ျပဴတာမွာ အျမဲ ျဖစ္ေန တဲ့ ျဖစ္စဥ္ျဖစ္ပါတယ္၊

အထက္က ျဖစ္စဥ္က CPU Data Processing လုပ္တဲ့ျဖစ္စဥ္ပါ၊ တကယ္၍ CPU က Data တစ္ခုကို အလုပ္လုပ္ပီးသြားလို႔ အဲ့ဒီ့ အလုပ္နဲ႔ ပက္သက္တဲ့ Data ကို သိမ္းဖို႔ပါလိုလာပီဆိုရင္ေတာ့ အထက္က နည္း အတိုင္း Address သာလွ်ွင္ RAM ကို ျပန္ေပးတာမဟုတ္ေတာ့ပဲနဲ႔ Address ေကာ Data ေကာ ကိုျပန္ေပးတယ္၊ Address ကို Address Bus ကေန ျပန္ေပးတယ္၊ Data ကို Data Bus ကေန ျပန္ေပးတယ္၊ ဒီလို Address ေကာ Data ေကာ ျပန္ေပးတဲ့အခါ Set Wire ကိုလဲ On ထားပါတယ္၊ ဒါဆိုရင္ေတာ့ CPU ကျပန္ေပးလိုက္တဲ့ Data ကို RAM က ျပန္ေပးလိုက္တဲ့ Address အတိုင္း ရိွရင္းစြဲ Data ကို Override လုပ္ပစ္ပီးသိမ္းလိုက္ပါတယ္၊

RAM ထဲမွာ ရွိတဲ့ 0 ေတြ 1 ေတြက တကယ္ေတာ့ မတူညီတဲ့ အခ်က္အလက္ေတြကို ကိုယ္စားျပဳပါတယ္၊ အေရး အႀကီးဆံုး အခ်က္ကေတာ့ Instructions (ညြန္ၾကားခ်က္ေတြ) ပါ၊ Instructions ေတြက CPU ကို ဘာအလုပ္ကို လုပ္မလဲ ဆိုတာကိုညြန္ႀကားေပးတယ္၊ ေအာက္ အနီေရာင္ျမားျပထားတဲ့ အနီေရာင္မ်ဥ္းတန္း ေတြအားလံုး က ညြန္ၾကားခ်က္ (Instruction) ေတြပါ၊
Data ေတြထဲမွာ Numbers ေတြလဲပါပါတယ္၊ ဒီ Numbers ေတြက Compare(ႏိုင္ယွဥ္ဖို႔) Add (ေပါင္းဖို႔) စသျဖင့္ လုပ္ခ်င္တဲ့အလုပ္ကိုလုပ္ႏိုင္ဖို႔ပါ၊

RAM ထဲမွာ Addresses ေတြလဲပါပါေသးတယ္၊ Address ေတြက ညြန္းတဲ့ Data ေတြထဲမွာ Address ေတြကို ျပန္သိမ္းထားတယ္ဆိုေတာ့ နည္းနည္းေတာ့ ေၾကာင္ခ်င္စရာ ျဖစ္သြားမယ္၊ ဒါေပမယ့္ ဒီ Address ေတြကလဲ အသံုး၀င္လွသလို လိုအပ္တဲ့ အခ်က္ေတြမ်ိဳးစံုကို သိုလွာင္ထားႏိုင္ပါတယ္၊
ဥပမာ OutPut Device တစ္ခုစီကို Data ကို ထုတ္ေပးခ်င္တယ္ဆိုပါစို႔ ၊ ဒါဆိုရင္ ကြန္ျပဴတာထဲမွာရွိတဲ့ အဲ့ဒီ့ Device ရဲ့ Address ကို သိဖို႔လိုပါတယ္၊ ကြန္ျပဴတာနဲ႔ ခ်ိတ္ဆက္ထားတဲ့ဖုန္းကို Data Output လုပ္ေပးခ်င္ရင္ ကြန္ျပဴတာနဲ႔ ခ်ိတ္ဆက္တာနဲ႔ ဖုန္းကို Register လုပ္ထားတဲ့ Address ကိုသိဖို႔လိုပါတယ္၊

RAM ထဲမွာ Latter ေတြကိုလဲ သိုေလွာင္ပါေသးတယ္၊ အကယ္၍ Monitor Screen ေပၚကို စာသားေတြ Output လုပ္ခ်င္တယ္ဆိုရင္ အဲ့ဒီ့ Output လုပ္လိုတဲ့ Data ေတြကို 1 နဲ႔ 0 ေတြသံုးပီး RAM ထဲမွာသိုေလွာင္ထားပါတယ္၊ စာသားတစ္လံုးစီကို သက္ဆိုင္ရာ Character Code အလိုက္ 1 နဲ႔ 0 ေတြေပါင္းထားတဲ့ သီးသန္႔အုပ္စု အေနနဲ႔ သိုေလွာင္တယ္၊ Character Code ေတြကေတာ့ Obitary ေတြျဖစ္ပါတယ္၊ ဥပမာ 01100001 က a အကၡရာ အေသး 01000111 က G အကၡရာ ဆိုပီး သတ္မွတ္တာပါ၊

အထက္က ေဖာ္ျပခဲ့တဲ့ Instruction,Number,Address,Letter ေတြကေတာ့ RAM ထဲ က Data အေနနဲ႔ ထည့္သြင္းသိမ္းဆည္းတဲ့ Data ေတြျဖစ္ပါတယ္၊

အခု CPU ရဲ့ Instruction Set ကို တစ္ခ်က္ၾကည့္ၾကမယ္၊


RAM ရဲ့ Data ေတြထဲမွာ Instrucion ေတြပါတာကို သိေနေလာက္ပါပီ၊ အဲ့ဒီ့ Instruction ေတြ ဘယ္ေလာက္ အထိ အေရးႀကီးလဲ ဆိုတာလဲ ေျပာခဲ့ပီးပါဘူး၊ အထက္က ပံုကေတာ့ အသံုးမ်ားတဲ့ Instructions ေတြကို ေဖာ္ျပထားတဲ့ပံုပါ၊ ဒါအကုန္ေတာ့မဟုတ္ေသးဘူး၊ အသံုးအမ်ားဆံုးလို႔ပဲေျပာတာပါ၊ အခု အဲ့ဒီ့ Instruction ေတြကို တစ္ခုစီရွင္းမယ္၊

LOAD : : Load Instruction ကေတာ့ RAM ကေန ဂဏန္းတန္ဖိုး တစ္ခုကို CPU ထဲကို ၀န္တင္တဲ့ အခါ မွာ သံုးတဲ့ Instruction ပါ၊

ADD : : Add Instruction ကေတာ့ ဂဏန္း တန္ဖိုး ႏွစ္ခုကို ေပါင္းဖို႔ အတြက္ သံုးတဲ့ Instruction ပါ၊
STORE: : Store Instruction ကေတာ့ Add Instruction ညြန္ၾကားခ်က္အတိုင္း ေပါင္းလို႔ရလာတဲ့ Data ကို CPU က ေနျပန္ပို႔တဲ့အခါမွာ RAM မွာ ျပန္သိမ္းဖို႔ အတြက္သံုးပါတယ္၊

COMPARE : : Compare Instruction ကေတာ့ ဂဏန္းတန္ဖိုး ႏွစ္ခုမွာ ဘယ္တစ္ခုပိုႀကီးလဲနဲ႔ သူတို႔ တန္ဖိုး တူမတူ စစ္လိုတဲ့အခါသံုးပါတယ္၊ Compare Instruction က JUMP IF Instruction နဲ႔ အမ်ားစု တြဲသံုးပါတယ္၊

JUMP IF : : JUMP IF Instruction ကိုေတာ့ အကယ္၍ စစ္ေဆးတဲ့ အေျခအေနတစ္ခုက မွန္ရင္ Address A ကိုသြားမယ္ မွား ရင္ ဘာမွမလုပ္ဘူး စသျဖင့္ အေျခအေနကိုစစ္ေဆးပီး Address ကို Randomly ေျပာင္းခ်င္တဲ့အခါမွာ သံုးပါတယ္၊

JUMP : : Jump ကေတာ့ RAM ထဲက Address ေတြကို အစီအစဥ္ မက်တဲ့ ပံုနဲ႔ စိတ္ႀကိဳက္ ေရြးခ်ယ္လို တဲ့အခါမွာသံုးတယ္၊

OUT : : Out Instruction ကေတာ့ Data ေတြကို Monitor သို႔ အျခား External Devices ေတြကို Output ထုတ္လိုတဲ့အခါသံုးပါတယ္၊

IN : : IN Instruction ကိုေတာ့ Keybaord လိုမ်ိဳး External Device ကေန Data ထည့္သြင္းတာကို လက္ခံ တဲ့ အေျခအေနမ်ိဳးမွာသံုးပါတယ္၊

အထက္က အခ်က္ေတြကို သင္ေသျပဖို႔ အတြက္ Gussing Program
ေလးတစ္ခုကို တည္ေဆာက္ၾကည့္ပါမယ္၊ ေအာက္က ပံုကိုေသခ်ာၾကည့္ပါ မ်က္စီကို ရွင္ရွင္ထားဖို႔လိုမယ္၊
အထက္မွာ Load Instruction ကိုသံုးပီး 9 ကို CPU ထဲကို ၀န္တင္လိုက္ပါတယ္၊ Programmer က အဲ့ဒီ့ Number ကို CPU ထဲမွ ထားပီး Program အသံုးျပဳသူကို နံပါတ္ဘယ္ေလာက္လဲ ခန္႔မွန္းခိုင္ပါမယ္၊
 ဒါဆို Program အသံုးျပဳသူက ခန္႔မွန္းပီး သူထင္တဲ့ ဂဏန္းတန္ဖိုးကိုရိုက္ထည့္ လိမ့္မယ္၊ အဲ့ဒီ့ အသံုးျပဳသူ ရိုက္ထည့္တဲ့ တန္ဖိုး ကို IN instruction နဲ႔ ဖမ္းမယ္၊ Input Device က Keyboard ျဖစ္တဲ့ အတြက္ Keyboard Address အတိုင္းဖမ္းမယ္၊ ပီးရင္ CPU ထဲမွာ Hold လုပ္ထားတဲ့ နံပါတ္နဲ႔ Compare Instruction သံုးပီး ႏိုင္းယွဥ္မယ္၊ မွန္ရင္ JUMP IF = Instruction ကိုသံုးပီး ေအာက္က Memory Address ကိုသြားခိုင္းမယ္၊ မွားခဲ့ရင္ မွားခဲ့ေၾကာင္း OUT Instruction ကိုသံုးပီး Output Device ျဖစ္တဲ့ Monitor ကို Letter “G” ကို Output ထုတ္ေပးမယ္၊ ပီးရင္ JUMP Instruction ကိုသံုးပီး အထက္က In Instruction ကို ျပန္သြားပီး ေနာက္တစ္ႀကိမ္ ထပ္ႀကိဳးစားခိုင္းမယ္၊ မမွန္မျခင္း ဒီ Process ကို ဆက္တိုက္ ျဖစ္ေနေအာင္ Program ကိုေရးသားထားႏိုင္ပါတယ္၊

ေသခ်ာေလ့လာၾကည့္ပါ၊ Instructions ေတြ အားလံုးကိုေသခ်ာ အသံုးျပဳျပသြားတာပါ၊ Ourput နဲ႔ Input Devices ေတြအပါအ၀င္ JUMF IF Instruction ကိုသံုးပီး မွန္ရင္ Memory Address တစ္ခုကို Randomly သြားလိုက္တာကိုလဲ ေတြ႔ရမွာပါ၊ (နားလည္ေအာင္ ေသခ်ာ ဖတ္ပါ)၊

အိုေက RAM က႑ပီးရင္ RAM ကေပးတဲ့ Instruction တစ္ခုရတိုင္းရတိုင္း CPU က Instruction ေတြကို ဘယ္လို အလုပ္လုပ္လဲၾကည့္ရေအာင္....

သံုးထားတဲ့ CPU 65-02 ရဲ့ Wiring နဲ႔ Scoot CPU တို႔ကို ေသခ်ာ ေလ့လာၾကည့္ရမွာပါ၊ (အထက္ကမွာ CPU ဖြင့္ထားတဲ့ပံုကိုျပခဲ့ပီးျဖစ္တဲ့ အတြက္ ေနာက္တစ္ႀကိမ္မျပေတာ့ဘူး)၊

CPU မွာ Components ေတြအမ်ားႀကီးပါတယ္၊ အရင္ဆံုး စတင္ေလ့လာသြားမွာက Control Unit ဆိုတဲ့ Component ပါ၊ သူကေတာ့ တပ္တစ္ခုက အရာရွိနဲ႔တူပါတယ္၊

Control Unit က RAM ကေန ပီးေတာ့ အမိန္႔ကို Instruction တစ္ခု အေနနဲ႔ လက္ခံပါတယ္၊ လက္ခံရရွိလာတဲ့ Instruction ကို အျခား Components ေတြအတြက္ သက္ဆိုင္ရာ Commands ေတြ အလုပ္ေတြအလုက္ ခြဲျခမ္းစိတ္ျဖာလိုက္ပါတယ္၊ Control Unit ေအာက္မွာရွိတဲ့ အေရးအႀကီးဆံုး Command တစ္ခုကေတာ့ Arithmetic Logic Unit ျဖစ္ပါတယ္၊ အတိုေကာက္ ALU လို႔ေခၚပါတယ္၊
ALU လို႔လဲအတိုေကာက္ ေခၚတဲ့ Arithmetic Login Unit ကေတာ့ CPU ထဲမွာ Arithetic နဲ႔ ပက္သတ္သမွ် အလုပ္ေတြ ျဖစ္တဲ့ Adding(ေပါင္းျခင္း) Substraction (ႏုတ္ျခင္း) Comparing (ႏိုင္ယွဥ္ျခင္း) ေတြအားလံုးကို လုပ္ႏိုင္ပါတယ္၊

ALU မွာ Input ႏွစ္ခုရွိပါတယ္၊ Input A နဲ႔ Input B လို႔ပဲ ဆိုၾကပါစို႔၊
ဆိုၾကပါစို႔ ေရွ႕က ၀န္တင္ခဲ့တဲ့ညြန္ၾကားခ်က္မွာ ဂဏန္း ႏွဏ္ခုပါတယ္ဆိုပါစို႔၊ အဲ့ဒီ့ ဂဏန္း ႏွစ္ခုကိုလဲေပါင္းခ်င္တယ္၊ ဒါဆိုရင္ အဲ့ဒီ့ ဂဏန္း ႏွစ္ခုကိုေပါင္းမယ့္ ညြန္ၾကားခ်က္ကို Control Unit က RAM ကေန လက္ခံရရွိလာပီး ALU ကို ဘယ္လို အလုပ္ကိုလုပ္ေဆာင္ရမလဲ ဆိုတဲ့ ညြန္ၾကားခ်က္ကုိ ပို႔ေပးတယ္၊

ALU က လဲ Control Unit ကေန လက္ခံရရွိတဲ့ ညြန္ၾကားခ်က္ကအတိုင္း အလုပ္လုပ္ပီး အေျဖကို Output လုပ္ေပးပါတယ္၊

တစ္ခါတစ္ရံမွာေတာ့ရရွိလာတဲ့ညြန္ၾကားခ်က္ေပၚမူတည္ပီး ALU ရဲ့ Output ကို ဘာမွဆက္မလုပ္ပဲ ဥပကၡာျပဳထားရတာရွိပါတယ္၊

မနက္ျဖန္ဆက္ေရးမယ္
ေအာက္က လင့္မွာ PDF ဖိုင္ကို ေဒါင္းလုပ္ရယူပါ၊

မွတ္ခ်က္၊
ဒီပို႔စ္ကို BrighterMyanmar အဖြဲ႔႕ ေရးတာျဖစ္ပီး အကယ္၍ ပို႔စ္ မွာ အမွား ပါေနတာေတြ႔ရင္ ေက်းဇူးျပဳၿပီး brightermyanmar@gmail.com ကို ေၾကာင္းၾကားေပးပါခင္ဗ်ာ၊ ကၽြန္ေတာ္တို႔ ေသခ်ာ ျပန္စီစစ္ပီး ျပင္ပါ့မယ္၊

No comments:

Post a Comment