ဌာနခွဲကြိုတင်ခန့်မှန်းသူသည် စွမ်းဆောင်ရည်မြှင့်တင်ရန် ဒီဇိုင်းထုတ်ထားသော ခေတ်မီ CPU ဗိသုကာများ၏ အရေးပါသောအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ဤထင်မြင်ချက်သည် CPU အား ကြိုတင်ခန့်မှန်းထားသောလမ်းကြောင်းတစ်လျှောက် ညွှန်ကြားချက်များကို ထုတ်ယူနိုင်စေပြီး၊ ယင်းကြောင့် ရိပ်မိသော latency ကို လျှော့ချပြီး အလုံးစုံဖြတ်သန်းမှုကို တိုးတက်စေသည်။ သို့သော်၊ ဤစွမ်းဆောင်ရည်ကို ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းက CPU အချိန်ကိုက်တိုက်ခိုက်မှုများတွင် အသုံးချနိုင်သည့် အလားအလာရှိသော အားနည်းချက်များကို မိတ်ဆက်ပေးသည်
ဘဏ်ခွဲများ၏ ခန့်မှန်းချက်သည် ဌာနခွဲရလဒ်များ၏ မှတ်တမ်းကို ထိန်းသိမ်းထားပြီး အနာဂတ်အကိုင်းအခက်များကို ခန့်မှန်းရန် ဤမှတ်တမ်းကို အသုံးပြုခြင်းဖြင့် လုပ်ဆောင်သည်။ ဌာနခွဲညွှန်ကြားချက်တစ်ခုကို ကြုံတွေ့ရသောအခါ၊ ကြိုတင်ခန့်မှန်းသူသည် ဤအကိုင်းအခက်ကို ယူမည်၊ မယူမည်ကို ခန့်မှန်းရန် ဤသမိုင်းအချက်အလက်ကို အသုံးပြုသည်။ ခန့်မှန်းချက်မှန်ကန်ပါက CPU သည် အနှောင့်အယှက်မရှိဘဲ ဆက်လက်လုပ်ဆောင်နေပါသည်။ မမှန်ပါက၊ CPU သည် စွမ်းဆောင်ရည်ပြစ်ဒဏ်ကျခံရမည့် မှန်ကန်သောလမ်းကြောင်းကို လည်ပတ်လုပ်ဆောင်ရမည်ဖြစ်သည်။ ဤပြစ်ဒဏ်သည် သေးငယ်သော်လည်း၊ တိုက်ခိုက်သူများမှ တိုင်းတာပြီး အသုံးချနိုင်သည်။
တိုက်ခိုက်သူများသည် မှန်ကန်စွာ နှင့် မှားယွင်းစွာ ခန့်မှန်းထားသော အကိုင်းအခက်များကြားတွင် တိုင်းတာနိုင်သော အချိန်ချိန်ခြားနားချက်ကို ဖန်တီးရန် အကိုင်းအခက် ခန့်မှန်းသူကို ကြိုးကိုင်နိုင်သည်။ ဤခြားနားချက်ကို ပရိုဂရမ်တစ်ခု၏ အကောင်အထည်ဖော်မှုလမ်းကြောင်းကို ကောက်ချက်ချရန်အတွက် အသုံးပြုနိုင်ပြီး၊ တစ်ဖန် အထိခိုက်မခံသော အချက်အလက်များကို ဖော်ထုတ်နိုင်မည်ဖြစ်သည်။ ထိုသို့သော တိုက်ခိုက်မှု၏ လူသိအများဆုံး ဥပမာများထဲမှ တစ်ခုသည် ခွင့်ပြုချက်မရှိဘဲ မှတ်ဉာဏ်တည်နေရာများကို ဝင်ရောက်ကြည့်ရှုရန် မှန်းဆလုပ်ဆောင်မှုနှင့် ဌာနခွဲခန့်မှန်းချက်တို့ကို အသုံးချသည့် Spectre အားနည်းချက်ဖြစ်သည်။
ပုံမှန် Spectre တိုက်ခိုက်မှုတွင်၊ တိုက်ခိုက်သူသည် သတ်မှတ်ထားသောပုံစံအတိုင်း လုပ်ဆောင်ရန် အကိုင်းအခက်ကြိုတင်သူကို ဦးစွာလေ့ကျင့်ပေးသည်။ ဤလေ့ကျင့်ရေးအဆင့်တွင် ကြိုတင်ခန့်မှန်းသူအား အထူးဟောကိန်းထုတ်ရန် သတ်မှတ်ပေးသည့် ဌာနခွဲညွှန်ကြားချက်များ ဆက်တိုက်လုပ်ဆောင်ခြင်း ပါဝင်သည်။ ကြိုတင်ခန့်မှန်းသူကို လေ့ကျင့်သင်ကြားပြီးသည်နှင့်၊ တိုက်ခိုက်သူသည် လျှို့ဝှက်ဒေတာပေါ် မူတည်၍ အကိုင်းအခက်တစ်ခုပါ၀င်သည့် သားကောင်ကုဒ်အပိုင်းကို လုပ်ဆောင်သည်။ အကယ်၍ ကြိုတင်ခန့်မှန်းသူသည် တိုက်ခိုက်သူ၏လေ့ကျင့်မှုအပေါ်အခြေခံ၍ မှားယွင်းသောကြိုတင်ခန့်မှန်းမှုတစ်ခုပြုလုပ်ပါက CPU သည် လျှို့ဝှက်ဒေတာကိုအခြေခံ၍ မမ်မိုရီကိုဝင်ရောက်နိုင်သည့်ညွှန်ကြားချက်များကို မှန်းဆလုပ်ဆောင်မည်ဖြစ်သည်။ ဤမှန်းဆချက်ညွှန်ကြားချက်များကို နောက်ဆုံးတွင် ဖျက်သိမ်းလိုက်သော်လည်း CPU ၏ cache တွင် ခြေရာများ ချန်ထားခဲ့သည်။
ထို့နောက် တိုက်ခိုက်သူသည် မည်သည့်ဒေတာကို မှန်းဆကာ ဝင်ရောက်ခဲ့သည်ကို ဆုံးဖြတ်ရန် မတူညီသော memory တည်နေရာများသို့ ဝင်ရောက်ချိန်များကို တိုင်းတာနိုင်သည်။ ကက်ရှ်အချိန်ကိုက်တိုက်ခိုက်မှုဟု လူသိများသော ဤနည်းပညာသည် တိုက်ခိုက်သူအား သတိပြုမိသော အချိန်ကွာခြားချက်များအပေါ် အခြေခံ၍ လျှို့ဝှက်အချက်အလက်များကို ကောက်ချက်ချနိုင်စေပါသည်။ ထိုသို့သော တိုက်ခိုက်မှုတစ်ခုအတွက် အဓိကခြေလှမ်းများမှာ-
1. ဘဏ်ခွဲခန့်မှန်းသူအား လေ့ကျင့်ပေးခြင်း: တိုက်ခိုက်သူသည် ဌာနခွဲကြိုတင်ခန့်မှန်းသူ၏ အခြေအနေအပေါ် လွှမ်းမိုးသည့် ထိန်းချုပ်ထားသော ညွှန်ကြားချက်များ အပိုင်းကို လုပ်ဆောင်သည်။ ဥပမာအားဖြင့်၊ ဌာနခွဲတစ်ခု၏ ညွှန်ကြားချက်ကို တသမတ်တည်း ရလဒ် (ဥပမာ၊ အမြဲယူဆောင်သည်) ဖြင့် ထပ်ခါတလဲလဲ လုပ်ဆောင်ခြင်းသည် အနာဂတ် ကွပ်မျက်ခြင်းများတွင် ထိုရလဒ်ကို ကြိုတင်ခန့်မှန်းသူအား အခြေအနေပေးသည်။
2. မှန်းဆ အကောင်အထည်ဖော်မှု ထွက်လာပါတယ်။: တိုက်ခိုက်သူသည် လျှို့ဝှက်ဒေတာပေါ် မူတည်၍ အခက်အလက်ညွှန်ကြားချက်ဖြင့် သားကောင်ကုဒ်ကို လုပ်ဆောင်သည်။ တိုက်ခိုက်သူ၏ ကြိုတင်လေ့ကျင့်မှုများကြောင့်၊ ဌာနခွဲမှ ကြိုတင်ခန့်မှန်းသူသည် လျှို့ဝှက်ဒေတာကို အခြေခံ၍ မမ်မိုရီကို ဝင်ရောက်ခြင်းပါ၀င်သည့် မှားယွင်းသောလမ်းကြောင်းကို မှန်းဆလုပ်ဆောင်သည်။
3. Cache Access အချိန်များကို တိုင်းတာခြင်း။: မှန်းဆလုပ်ဆောင်ပြီးနောက်၊ တိုက်ခိုက်သူသည် သတ်မှတ်ထားသော မှတ်ဉာဏ်တည်နေရာများကို ဝင်ရောက်ရန် လိုအပ်သည့်အချိန်ကို တိုင်းတာသည်။ ပိုမိုမြန်ဆန်သော ဝင်ရောက်မှုအချိန်များသည် ကက်ရှ်တွင် ဒေတာများ ရှိနေကြောင်း ညွှန်ပြပြီး ၎င်းကို မှန်းဆကာ ဝင်ရောက်ခဲ့သည်ဟု ဆိုလိုသည်။ ဤအချိန်များကို ခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့်၊ တိုက်ခိုက်သူသည် လျှို့ဝှက်အချက်အလက်များကို ခန့်မှန်းနိုင်သည်။
၎င်းကို ခိုင်မာသော ဥပမာတစ်ခုဖြင့် သရုပ်ဖော်ရန်၊ လျှို့ဝှက်ဒေတာသည် ဌာနခွဲတစ်ခုအတွင်းရှိ array ဝင်ရောက်မှု၏ အညွှန်းကိန်းကို ဆုံးဖြတ်ပေးသည့် မြင်ကွင်းတစ်ခုကို သုံးသပ်ကြည့်ပါ။ တိုက်ခိုက်သူသည် အကိုင်းအခက် ခန့်မှန်းသူကို ဦးစွာ လေ့ကျင့်ပေးကာ အချို့သော အကိုင်းအခက် လမ်းကြောင်းကို ခံယူသည်။ သားကောင်ကုဒ်အလုပ်လုပ်သောအခါ၊ ဌာနခွဲခန့်မှန်းသူသည် လေ့ကျင့်ထားသော ဦးတည်ချက်အပေါ် အခြေခံ၍ array access ကို မှန်းဆပြီး လုပ်ဆောင်သည်။ မှန်းဆချက်တွင် သီးခြား array ဒြပ်စင်ကို ဝင်ရောက်ခြင်း ပါ၀င်ပါက၊ သက်ဆိုင်ရာ cache လိုင်းကို တင်နေပါသည်။ ထို့နောက်တွင် တိုက်ခိုက်သူသည် မည်သည့် cache လိုင်းများကို တင်ထားသည်ကို ဆုံးဖြတ်ရန် အချိန်သတ်မှတ်ထားသော memory access များကို ဆက်တိုက်လုပ်ဆောင်နိုင်ပြီး၊ ထို့ကြောင့် လျှို့ဝှက်အညွှန်းကို ကောက်ချက်ချနိုင်သည်။
ထိုသို့သော တိုက်ခိုက်မှုများကို လျော့ပါးစေရန် နည်းဗျူဟာများစွာ ပါဝင်ပါသည်။ ဟာ့ဒ်ဝဲအခြေခံဖြေရှင်းချက်များတွင် မှန်းဆခြင်းနှင့် မှန်းဆခြင်းမဟုတ်သော လုပ်ဆောင်မှုလမ်းကြောင်းများကြားတွင် အထီးကျန်မှုကို ပိုမိုကောင်းမွန်လာစေရန်နှင့် မှန်းဆသည့်လုပ်ဆောင်မှုသည် ကက်ရှ်ကဲ့သို့သော မျှဝေထားသောအရင်းအမြစ်များကို မထိခိုက်စေကြောင်း သေချာစေခြင်းတို့ပါဝင်သည်။ ဆော့ဖ်ဝဲလ်အခြေခံဖြေရှင်းချက်များတွင် ကုဒ်အတွင်းရှိ အချို့သောနေရာများကို မှန်းဆပြီးလုပ်ဆောင်မှုကို တားဆီးရန် "ခြံစည်းရိုး" ညွှန်ကြားချက်များကို ထည့်သွင်းခြင်းကဲ့သို့သော နည်းပညာများပါ၀င်သည် သို့မဟုတ် လုပ်ဆောင်ချိန်သည် လျှို့ဝှက်အချက်အလက်များပေါ်တွင်မူတည်ခြင်းမရှိကြောင်း သေချာစေရန် အချိန်နှင့်တပြေးညီ ပရိုဂရမ်ရေးဆွဲခြင်းအလေ့အကျင့်များကို အသုံးပြုခြင်း။
ဌာနခွဲခန့်မှန်းသူ-အခြေပြု အချိန်ကိုက်တိုက်ခိုက်မှုများ၏ ရှုပ်ထွေးမှုနှင့် ဆန်းပြားမှုသည် ဟာ့ဒ်ဝဲနှင့် ဆော့ဖ်ဝဲလ်လုံခြုံရေးနှစ်ခုစလုံးတွင် သုတေသနနှင့် ဖွံ့ဖြိုးတိုးတက်မှုအတွက် ဆက်လက်လုပ်ဆောင်ရန် လိုအပ်မှုကို ထင်ရှားစေသည်။ CPU ဗိသုကာများသည် ဆက်လက်တိုးတက်နေသဖြင့် ဤနှင့် အခြားဘေးထွက်ချန်နယ်တိုက်ခိုက်မှုများကို ကာကွယ်ရန်အတွက် ဗျူဟာများလည်း လိုအပ်ပါသည်။
အခြား လတ်တလောမေးခွန်းများနှင့် အဖြေများ CPU အချိန်ကိုက်တိုက်ခိုက်မှု:
- စနစ်စွမ်းဆောင်ရည်ကို ထိန်းသိမ်းထားစဉ် အချိန်ကိုက်တိုက်ခိုက်မှုများကို ဆန့်ကျင်သည့် ဟာ့ဒ်ဝဲနှင့် ဆော့ဖ်ဝဲလျော့ပါးစေရေး အကောင်အထည်ဖော်ရာတွင် ပါဝင်သော စိန်ခေါ်မှုများနှင့် အပေးအယူအချို့က အဘယ်နည်း။
- အချိန်အဆက်မပြတ် ပရိုဂရမ်ရေးဆွဲခြင်းသည် ကုဒ်ဝှက်စနစ်ဆိုင်ရာ အယ်လဂိုရီသမ်များတွင် အချိန်ကိုက်တိုက်ခိုက်မှုအန္တရာယ်ကို မည်သို့လျော့ပါးစေသနည်း။
- မှန်းဆလုပ်ဆောင်ခြင်းဆိုသည်မှာ အဘယ်နည်း၊ Spectre ကဲ့သို့ အချိန်ကိုက်တိုက်ခိုက်မှုများအတွက် ခေတ်မီပရိုဆက်ဆာများ၏ အားနည်းချက်ကို မည်သို့အထောက်အကူပြုသနည်း။
- အချိန်ကိုက်တိုက်ခိုက်မှုများသည် စနစ်တစ်ခုမှ အကဲဆတ်သောအချက်အလက်များကို ကောက်ချက်ချရန်အတွက် လုပ်ဆောင်ချိန်အတွင်း ကွဲပြားမှုများကို မည်သို့အသုံးချသနည်း။
- အချိန်ကိုက်တိုက်ခိုက်မှုဆိုတာဘာလဲ။