CPU ေတြဘယ္လို အလုပ္လုပ္သလဲ
ေက်းဇူးျပဳပီး ဒီ Post ကို ဖတ္တဲ့ အခါ PDF ဖိုင္ အေနနဲ႔ ေဒါင္းပီးဖတ္ပါ၊ ဒီပိုစ့္ ကို ေသခ်ာနားလည္ဖို႔ အတြက္ ဓါတ္ပံု နဲ႔ အေသးစိတ္ရွင္းခ့ဲရပါတယ္၊ အခု Post တင္ေတာ့ ဓါတ္ပံု တစ္ပံပဲ တင္လို႔ရလို႔ Post ခ်ည္း ဆို နားလည္ရခက္သြားႏိုင္ပါတယ္၊ ဒီပိုစ္ကို ဖတ္ျဖစ္ေအာင္ ဖတ္ေပးပါ မိတ္ေဆြတို႔ အခ်ိန္ အလကား မျဖစ္ေစရပါဘူး၊
CPU ရဲ့ မူရင္း စာလံုးက ေတာ့ Central Processing Unit ျဖစ္ပါတယ္၊ သူ႔ကို ကြန္ျပဴတာ ဦးေနာက္လို႔လဲ အဓိပါယ္ ဖြင့္ဆိုၾကပါတယ္၊ CPU ဘယ္လို အလုပ္လုပ္သလဲ ဆိုတာကို သိရင္ ကြန္ျပဴတာ ဘယ္လို အလုပ္လုပ္ သလဲ ဆိုတာကို လဲ ေကာင္းေကာင္း သေဘာေပါက္သြားမွာပါ၊
အခု 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 ၀က္ဆိုက္မွာ ဒီစာအုပ္ကို၀ယ္ဖက္ႏိုင္ပါတယ္၊ ဒီစာအုပ္ကေတာ့ တကယ့္ကို ဂၽြတ္လွပါတယ္၊ အေသးစိတ္ကို တဆင့္စီ ေျဖးေျဖး ရွင္းသြားပီး
ဒါေပမယ့္ 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 ကို ေတာင္းဆိုလိုက္ပါတယ္၊
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) ေတြပါ၊
အထက္က ျဖစ္စဥ္က 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 အကၡရာ ဆိုပီး သတ္မွတ္တာပါ၊
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 ကို တစ္ခ်က္ၾကည့္ၾကမယ္၊
အခု 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 သြားလိုက္တာကိုလဲ ေတြ႔ရမွာပါ၊ (နားလည္ေအာင္ ေသခ်ာ ဖတ္ပါ)၊
ေသခ်ာေလ့လာၾကည့္ပါ၊ 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 ပါ၊ သူကေတာ့ တပ္တစ္ခုက အရာရွိနဲ႔တူပါတယ္၊
သံုးထားတဲ့ 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 လို႔ပဲ ဆိုၾကပါစို႔၊
ALU မွာ Input ႏွစ္ခုရွိပါတယ္၊ Input A နဲ႔ Input B လို႔ပဲ ဆိုၾကပါစို႔၊
ဆိုၾကပါစို႔ ေရွ႕က ၀န္တင္ခဲ့တဲ့ညြန္ၾကားခ်က္မွာ ဂဏန္း ႏွဏ္ခုပါတယ္ဆိုပါစို႔၊ အဲ့ဒီ့ ဂဏန္း ႏွစ္ခုကိုလဲေပါင္းခ်င္တယ္၊ ဒါဆိုရင္ အဲ့ဒီ့ ဂဏန္း ႏွစ္ခုကိုေပါင္းမယ့္ ညြန္ၾကားခ်က္ကို Control Unit က RAM ကေန လက္ခံရရွိလာပီး ALU ကို ဘယ္လို အလုပ္ကိုလုပ္ေဆာင္ရမလဲ ဆိုတဲ့ ညြန္ၾကားခ်က္ကုိ ပို႔ေပးတယ္၊
ALU က လဲ Control Unit ကေန လက္ခံရရွိတဲ့ ညြန္ၾကားခ်က္ကအတိုင္း အလုပ္လုပ္ပီး အေျဖကို Output လုပ္ေပးပါတယ္၊
တစ္ခါတစ္ရံမွာေတာ့ရရွိလာတဲ့ညြန္ၾကားခ်က္ေပၚမူတည္ပီး ALU ရဲ့ Output ကို ဘာမွဆက္မလုပ္ပဲ ဥပကၡာျပဳထားရတာရွိပါတယ္၊
မနက္ျဖန္ဆက္ေရးမယ္
ေအာက္က လင့္မွာ PDF ဖိုင္ကို ေဒါင္းလုပ္ရယူပါ၊
မွတ္ခ်က္၊
ဒီပို႔စ္ကို BrighterMyanmar အဖြဲ႔႕ ေရးတာျဖစ္ပီး အကယ္၍ ပို႔စ္ မွာ အမွား ပါေနတာေတြ႔ရင္ ေက်းဇူးျပဳၿပီး brightermyanmar@gmail.com ကို ေၾကာင္းၾကားေပးပါခင္ဗ်ာ၊ ကၽြန္ေတာ္တို႔ ေသခ်ာ ျပန္စီစစ္ပီး ျပင္ပါ့မယ္
0 comments:
Post a Comment