ဗဟုသုတဘဏ်
ေယဘုယ်အားျဖင့္ RISC Processor ေတြမွာ Instruction တစ္ခုအတြက္ လုပ္ရမယ့္အလုပ္ေတြကို ေအာက္မွာျပထားသလို အဆင့္နဲ႔ခြဲထားပါတယ္။
အလုပ္တစ္ခုဟာ Clock တစ္ခုလုိအပ္တဲ့အတြက္ Instruction တစ္ခုအတြက္ အဆင့္ငါးဆင့္ လုပ္ရမွာျဖစ္လို႔ ပံုမွန္အားျဖင့္ Clock ငါးခုလိုအပ္ပါတယ္။ နမူနာအျဖစ္ အလုပ္လုပ္ပံုကို ေျပာရမယ္ဆိုရင္ 680x0 Instruction နမူနာတစ္ခုအျဖစ္ move.l (a1), d1 ဆိုတာ Memory တစ္ေနရာမွာ ရွိတယ္ဆိုၾကပါစို႔ အဲဒါဆိုရင္ ပထမအဆင့္ IF အေနနဲ႔ အဲဒီ့ Instruction ကို သက္ဆိုင္ရာေနရာကေန ဖတ္ပါတယ္ ဒုတိယအဆင့္ ID အေနနဲ႔ Instruction ကိုဘာလုပ္ခိုင္းသလဲ ခြဲျခားရပါတယ္ ခြဲျခားလိုက္မယ္ဆိုရင္ move လုပ္ရမယ္ လုပ္ရမယ့္ Size က Long ျဖစ္တယ္ a1 ထဲမွာရွိတဲ့ Address မွာသိမ္းထားတဲ့ data ကို d1 ဆိုတဲ့ Register ထဲကိုကူးထည့္ရမယ္လို႔ ခြဲျခားႏိုင္ပါတယ္။ တတိယအဆင့္ EX အေနနဲ႔ သူေျပာထားတဲ့အလုပ္ကို ALU အေနနဲ႔လုပ္ဖုိ႔လိုအပ္ပါတယ္ Execute လုပ္ဖို႔အတြက္ ဒီအတိုင္းလုပ္လို႔မရပါဘူး a1 ထဲမွာရွိတဲ့ Address မွာသိမ္းထားတဲ့ data ကိုဖတ္ဖို႔လိုတဲ့အတြက္ Processor ထဲက Data နဲ႔မလံုေလာက္လို႔ Memory ကို Access လုပ္ဖို႔လိုပါတယ္ အဲဒီ့လိုလုပ္တဲ့အလုပ္ကို စတုတၳအဆင့္အေနနဲ႔ MA လို႔ေျပာလို႔ရမွာျဖစ္ပါတယ္ ေနာက္ဆံုးအဆင့္အေနနဲ႔ ထြက္လာတဲ့အေျဖကို သက္ဆိုင္ရာ ေနရာမွာသြားေရးရပါတယ္ ဒီ Instruction မွာေတာ့ ဖတ္လို႔ရတဲ့ Data ကို d1 ထဲကိုသြားေရးပါတယ္ ဒါဆိုရင္ ပဥၥမအဆင့္ျဖစ္တဲ့ WB ၿပီးဆံုးပါလိမ့္မယ္။ အဲဒါဆိုရင္ေနာက္ထပ္ Instruction တစ္ခုကိုထပ္ဖတ္တဲ့ IF ကေန WB အထိဆက္လုပ္ရင္ Processor ကိုမပိတ္မခ်င္း ဆက္လုပ္ေနမွာျဖစ္ပါတယ္။
အခုအခ်ိန္အထိ အလုပ္တစ္ခုဟာ Clock အျဖစ္သာ အလုပ္လုပ္ေနတယ္လို႔ ယူဆေနတာပါ အဲဒီ့လိုဆိုရင္အလြန္ပဲေႏွးပါလိမ့္မယ္ ေနာက္ၿပီးေတာ့ Processor ရဲ႕အစိတ္အပိုင္းေတြဟာ အလုပ္အျပည့္အဝ အလုပ္ႏိုင္ပါဘူး။ ပံုမွန္အားျဖင့္ IF ဟာ တစ္ႀကိမ္အလုပ္လုပ္ၿပီးရင္ ေနာက္ထပ္ IF မေရာက္မခ်င္း Clock ေလးခု အားေနပါတယ္ အဲဒီ့ေတာ့ အစိတ္အပိုင္း ၅ ခုလံုးသာ တစ္ၿပိဳင္တည္း အလုပ္လုပ္ႏိုင္ရင္ လက္ဆင့္ကမ္းအလုပ္လုပ္သလို အၿပိဳင္အလုပ္လုပ္ႏိုင္ပါတယ္။ ဥပမာအားျဖင့္ IF အလုပ္ၿပီးလို႔ ID ကိုအလုပ္ကို လက္ဆင့္ကမ္းလုိက္ၿပီးရင္ IF အေနနဲ႔ ေနာက္ထပ္ Instruction တစ္ခုကိုယူၿပီးေတာ့ IF အလုပ္ထပ္လုပ္လို႔ရပါတယ္ အဲဒါဆိုရင္ အလုပ္စစခ်င္း Clock ေလးခုကလြဲရင္ ေနာက္အႀကိမ္ေတြမွာ Clock တစ္ခုမွာ Instruction တစ္ခုေပးႏိုင္ပါလိမ့္မယ္။ အဲဒါမ်ိဳးအလုပ္လုပ္တာကို Pipelining လို႔ေခၚပါတယ္။ ေအာက္ကပံုမွာၾကည့္ပါ
အေပၚမွာျပထားသလိုဆိုရင္ အလုပ္ေတြက Clock တစ္ခုမွာ Instruction တစ္ခုေတာ့ ၿပီးေအာင္လုပ္ႏိုင္သြားပါတယ္ အရင္လို Clock ေတြအမ်ားႀကီးမလိုေတာ့ဘူးေပါ့။ ေနာက္တစ္ဆင့္အေနနဲ႔ Clock တစ္ခုမွာ Multiple Instruction ဘယ္လိုလုပ္မလဲဆိုတာ စဥ္းစားရျပန္တယ္။ အယူအဆအားျဖင့္ ရွင္းလင္းပါတယ္ Pipeline တစ္ခုဟာ Single clock per instruction လုပ္ေပးႏိုင္ရင္ Multiple Pipeline ဆိုရင္ Single clock per multiple instruction အလုပ္လုပ္ႏိုင္ပါလိမ့္မယ္ အဲဒါမ်ိဳးကို Superscalar လို႔ေခၚပါတယ္။ ေအာက္မွာျပထားတဲ့ Figure ကိုၾကည့္ပါ Double Pipeline ျဖစ္တဲ့အတြက္ Single clock per double instruction အလုပ္လုပ္ေနတာ ေတြ႔ရပါလိမ့္မယ္။
အေပၚမွာေျပာထားတာေတြက Instruction Execution ကိုအၾကမ္းအားျဖင့္ေျပာထားတာပါ တစ္ကယ္ကေတာ့ Processor Architecture ဆိုတာ အင္မတန္ႀကီးမားတဲ့ ဘာသာရပ္ႀကီးတစ္ခုပါ အဲဒါေၾကာင့္ သေဘာေပါက္ရံုသာေျပာထားပါတယ္။ အေသးစိတ္လည္း စာတစ္ပုဒ္နဲ႔ နားလည္ေအာင္ေျပာဖို႔မျဖစ္ႏိုင္ပါ။ အေသးစိတ္သိခ်င္ရင္ေတာ့ Processor architecture ေတြအေၾကာင္း ေရးထားတဲ့စာအုပ္ေတြကို ဖတ္မွပဲရပါလိမ့္မယ္။ Hardware ဆိုၿပီး A+ လိုစာအုပ္ကို မျမင္မိပါနဲ႔ A+ ဆိုတာမ်ိဳးက Processor architecture နဲ႔ယွဥ္ၾကည့္ရင္ မူႀကိဳစာအုပ္လို႔ ေျပာရပါလိမ့္မယ္။ ဖတ္ခ်င္ရင္ေတာ့ ရွာလို႔အလြယ္ဆံုးက ကြန္ပ်ဴတာတကၠသိုလ္ တတိယႏွစ္မွာသင္တဲ့ Computer Architecture ကိုဖတ္ၾကည့္လို႔ရပါတယ္ အေသးစိတ္ဖတ္ခ်င္ရင္ေတာင္ အဲဒီ့စာအုပ္ဟာ အင္မတန္ေကာင္းပါတယ္။ ေနာက္ၿပီးေတာ့ Computer Organization လိုစာအုပ္မွာလည္း Knowledge အတြက္ လံုေလာက္ပါလိမ့္မယ္။ အေသးစိတ္ေတြကေတာ့ Computer Architecture By A. D. Gajski, A.P.Godse, D.A.Godse လိုဟာမ်ိဳးေတြ ဖတ္မွပဲရပါမယ္။ သိခ်င္ရင္ေတာ့ရွာဖတ္ပါ ကြ်န္ေတာ္က Hardware အေၾကာင္း ေလ့လာတဲ့လူမဟုတ္ေတာ့ အေသးစိတ္ေတြက မမွတ္မိေတာ့ပါဘူး....
|
Labels: A+, Computer-IV, Knowledges-II
ကျေးဇူးတင်ပါတယ် မုန်တိုင်း
ကျန်းမာကြပါစေ
0 - ဦး မှတ်ချက်ပေးထားပါသည်
Post a Comment