AMD သည် Spectre-STL တိုက်ခိုက်မှုတွင် AMD Zen 3 CPU များ၏ အလားအလာရှိသော အားနည်းချက်ကို အတည်ပြုခဲ့သည်။

AMD သည် Zen 3 စီးရီးပရိုဆက်ဆာများတွင် လုပ်ဆောင်ခဲ့သည့် PSF (Predictive Store Forwarding) ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းနည်းပညာ၏ လုံခြုံရေးကို ပိုင်းခြားစိတ်ဖြာသည့် အစီရင်ခံစာကို ထုတ်ပြန်ခဲ့သည်။ အဆိုပါလေ့လာမှုသည် Spectre-STL (Spectre-v4) တိုက်ခိုက်မှုနည်းလမ်းကို သီအိုရီအရ အတည်ပြုခဲ့ပြီး 2018 ခုနှစ်၊ မေလတွင်ဖော်ထုတ်ခဲ့သည်။ PSF နည်းပညာ၊ သို့သော် လက်တွေ့တွင်၊ တိုက်ခိုက်မှုတစ်ခုဆီသို့ ဦးတည်နိုင်သည့် ကုဒ်ပုံစံပုံစံများကို မတွေ့ရှိရသေးကြောင်းနှင့် အလုံးစုံအန္တရာယ်သည် အရေးမပါဟု အကဲဖြတ်ပါသည်။

Spectre-v4 (Speculative Store Bypass) တိုက်ခိုက်မှုသည် indirect addressing ကိုအသုံးပြု၍ သွယ်ဝိုက်သောလိပ်စာဖြင့် ရေးသားခြင်းနှင့် ဖတ်ရှုခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သည့်အခါ မှန်းဆလုပ်ဆောင်မှုများ၏ရလဒ်ကို ဖယ်ရှားပြီးနောက် ပရိုဆက်ဆာ cache တွင် အခြေချထားသည့် ဒေတာကို ပြန်လည်ရယူခြင်းအပေါ် အခြေခံထားကြောင်း သတိရကြပါစို့။ လုပ်ဆောင်ချက်တစ်ခုသည် ရေးရန်လုပ်ဆောင်ချက်ကို လိုက်နာသောအခါ (ဥပမာ၊ mov [rbx + rcx]၊ 0x0; mov rax၊ [rdx + rsi])၊ အလားတူလုပ်ဆောင်မှုများ လုပ်ဆောင်နေခြင်းကြောင့် read address ၏ offset ကို သိရှိပြီးဖြစ်နိုင်သည် (ဖတ်ရှုခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များသည်၊ ပိုမိုမကြာခဏလုပ်ဆောင်ပြီး reads များကို cache မှလုပ်ဆောင်နိုင်သည်) နှင့် processor သည် write's indirection offset ကို တွက်ချက်ရန် မစောင့်ဆိုင်းဘဲ မရေးမီ read များကို မှန်းဆနိုင်သည်။

ဤအင်္ဂါရပ်သည် စတိုးဆိုင်လည်ပတ်မှု မပြီးပြတ်သေးချိန်တွင် အချို့လိပ်စာတွင် တန်ဖိုးဟောင်းတစ်ခုကို ဝင်ရောက်ကြည့်ရှုရန် ဤအင်္ဂါရပ်ကို ခွင့်ပြုသည်။ ခန့်မှန်းမှု အမှားအယွင်းရှိပါက၊ မအောင်မြင်သော မှန်းဆလုပ်ဆောင်မှုကို ဖယ်ရှားပစ်မည်၊ သို့သော် ၎င်း၏လုပ်ဆောင်မှုခြေရာများသည် ပရိုဆက်ဆာ cache တွင် ရှိနေမည်ဖြစ်ပြီး ဝင်ရောက်အသုံးပြုမှုဆိုင်ရာ အပြောင်းအလဲများကို ခွဲခြမ်းစိတ်ဖြာမှုအပေါ် အခြေခံ၍ ကက်ရှ်၏အကြောင်းအရာများကို ဆုံးဖြတ်သည့်နည်းလမ်းများထဲမှ တစ်ခုဖြင့် ပြန်လည်ရယူနိုင်ပါသည်။ ကက်ရှ်လုပ်ပြီး ကက်ရှ်မထားတဲ့ ဒေတာတွေကို သိမ်းဖို့ အချိန်ပါပဲ။

AMD Zen 3 ပရိုဆက်ဆာများတွင် ပေါင်းထည့်ထားသော PSF သည် ဖတ်ရှုခြင်းနှင့် ရေးသားခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များကြား ဆက်နွယ်မှုကို ခန့်မှန်းခြင်းဖြင့် မှန်းဆချက်ဖြင့် ဖတ်ရှုခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ပေးသည့် STLF (Store-To-Load-Forwarding) ကို အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ပေးပါသည်။ classic STLF ကိုအသုံးပြုသောအခါ၊ ပရိုဆက်ဆာသည် ယခင် "စတိုး" အမိန့်မှ တိုက်ရိုက်ပေးပို့သော ဒေတာအပေါ် "load" လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပြီး ရလဒ်အမှန်တကယ် မှတ်ဉာဏ်သို့ စာရေးရန် မစောင့်ဆိုင်းဘဲ "load" တွင် အသုံးပြုထားသည့် လိပ်စာများကို သေချာစေပါ။ နှင့် "စတိုး" အမိန့်များ တူညီသည်။ PSF ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းသည် လိပ်စာကိုစစ်ဆေးခြင်းကို မှန်းဆစေပြီး လိပ်စာတစ်ခုတည်းကို ကိုင်တွယ်လုပ်ဆောင်သော စတိုး/ဝန်အတွဲကို ယခင်က လုပ်ဆောင်ခဲ့လျှင် လိပ်စာအချက်အလက်ကို မတွက်ချက်မီ "load" လုပ်ဆောင်ချက်ကို လုပ်ဆောင်စေသည်။ ကြိုတင်ခန့်မှန်းမှု မအောင်မြင်ပါက အခြေအနေသည် ပြန်လှည့်မည်ဖြစ်သော်လည်း ဒေတာသည် ကက်ရှ်တွင် ကျန်ရှိနေပါသည်။

PSF ကို တိုက်ခိုက်ခြင်းသည် အခွင့်ထူးများ အဆင့်တစ်ခု၏ ဘောင်အတွင်းသာ ဖြစ်နိုင်ပြီး၊ လက်ရှိ လုပ်ငန်းစဉ် အကြောင်းအရာကိုသာ အကျုံးဝင်ပြီး address space isolation method သို့မဟုတ် hardware sandbox ယန္တရားများဖြင့် ပိတ်ဆို့ထားသည်။ ဤကိစ္စတွင်၊ လုပ်ငန်းစဉ်များတွင် software sandboxing နည်းလမ်းများသည် ပြဿနာကြောင့် ထိခိုက်နိုင်ချေရှိသည်။ တိုက်ခိုက်မှုသည် လုပ်ငန်းစဉ်တစ်ခုတည်းအတွင်းတွင် ပြင်ပကကုဒ်ကို လုပ်ဆောင်သည့် ဘရောက်ဆာများ၊ ကုဒ်လုပ်ဆောင်ခြင်း virtual machines နှင့် JITs ကဲ့သို့သော စနစ်များအတွက် ခြိမ်းခြောက်မှုဖြစ်စေသည် (တိုက်ခိုက်မှုသည် ယုံကြည်စိတ်ချရသော sandboxed ကုဒ်ကို အခြားလုပ်ငန်းစဉ်ဒေတာများသို့ ဝင်ရောက်ခွင့်ရရှိစေခြင်းဖြစ်သည်)။

AMD သည် PSF ကို လုံးဝ (သို့) ရွေးချယ်ပိတ်ခြင်းအတွက် နည်းလမ်းများစွာကို ပံ့ပိုးပေးထားပြီးဖြစ်သော်လည်း အပလီကေးရှင်းအများစုအတွက် ပေါ့ပေါ့ပါးပါးရှိသော အန္တရာယ်ကြောင့်၊ ဤ optimization ကို မူရင်းအတိုင်း မပိတ်ထားရန် အကြံပြုထားသည်။ မယုံကြည်ရထိုက်သောကုဒ်များကိုလုပ်ဆောင်နေသူများအား သီးခြားခွဲထုတ်ထားသည့် လုပ်ငန်းစဉ်များကို ရွေးချယ်ကာကွယ်ရန်အတွက် "SSBD" နှင့် "PSFD" MSR ဘစ်များကို သတ်မှတ်ခြင်းဖြင့် PSF ကို ပိတ်ရန် အဆိုပြုထားသည်။ PSF အဖွင့်အပိတ်လုပ်နည်းကို ထိန်းချုပ်သည့် "psfd" နှင့် "nopsfd" command line ရွေးချယ်မှုများဖြင့် Linux kernel အတွက် Patches များကို ပြင်ဆင်ထားပါသည်။

source: opennet.ru

မှတ်ချက် Add