Bosh sahifa Wiki Microcode

Microcode

Microcode — protsessor ichidagi murakkab mashina buyruqlarini ichki boshqaruv amallariga aylantirishda ishlatiladigan past darajadagi boshqaruv qatlami.

Barcha protsessor arxitekturasi bir xil microcode modelidan foydalanmaydi. Zamonaviy x86 protsessorlarda ayrim instruktsiyalar va ichki holatlar micro-operationlar orqali boshqariladi.

Microcode update apparat ishlab chiqarilgandan keyin aniqlangan ayrim xato va xavfsizlik muammolarini tuzatishga yordam beradi.

Instruction va micro-operation

Dastur protsessorga arxitektura ko‘rsatmalarini beradi.

Misol:

ADD
MOV
DIV
CPUID

Murakkab instruction ichkarida bir nechta sodda micro-operationga bo‘linishi mumkin.

Microcode yoki ichki decoder shu ketma-ketlikni boshqaradi.

Hardwired control

Sodda instruktsiyalar to‘liq hardwired logic bilan bajarilishi mumkin.

Afzalligi:

  • tez;
  • deterministic;
  • microcode lookup talab qilmaydi.

Murakkab x86 instructionlar, exception va maxsus holatlar microcode yordamidan foydalanishi mumkin.

Zamonaviy CPU hardwired va microcoded usullarni birga ishlatadi.

Microcode ROM

Protsessor ichida boshlang‘ich microcode mavjud.

U chip ishlab chiqarilganda yozilgan ROM yoki ichki saqlash qatlamida bo‘ladi.

Tizim microcode update bermasa, CPU shu built-in versiya bilan ishlaydi.

Microcode update

Update protsessor ichidagi vaqtinchalik patch storage’ga yuklanadi.

U:

  • ma’lum instruction xatti-harakatini o‘zgartiradi;
  • noto‘g‘ri corner case’ni tuzatadi;
  • xavfsizlik mitigation qo‘shadi;
  • feature bitni o‘zgartirishi;
  • ayrim funksiyani o‘chirishi

mumkin.

Microcode fizik tranzistor xatosini to‘liq o‘zgartirmaydi. Faqat patchlanadigan boshqaruv yo‘llariga ta’sir qiladi.

Volatile xususiyat

Ko‘p CPUda microcode patch doimiy flashga yozilmaydi.

Har cold bootdan keyin qayta yuklanadi.

Update manbalari:

Firmware erta bosqichda, OS esa keyinroq yangi versiyani yuklashi mumkin.

Early loading

Operatsion tizim kernel to‘liq ishga tushishidan oldin microcode yuklashi mumkin.

Bu muhim, chunki CPU zaif instruction yoki feature’dan boot jarayonining o‘zida foydalanishi mumkin.

Linux initramfs ichida microcode paket bo‘lishi mumkin.

Late loading

Ishlayotgan tizimda microcode yangilash ayrim platformada mumkin.

Biroq barcha patch late loading uchun xavfsiz emas.

CPU corelar sinxron yangilanishi va oldingi holat bilan moslik talab qilinadi.

Ko‘pincha update’dan keyin reboot tavsiya etiladi.

UEFI update va microcode

Motherboard firmware yangi CPU microcode versiyalarini o‘z ichiga olishi mumkin.

UEFI update:

  • yangi protsessorni qo‘llash;
  • microcode patch;
  • memory initialization;
  • security fix

beradi.

Operatsion tizim paketi UEFIdan yangiroq microcode yuklashi mumkin.

Operatsion tizim paketi

Linux distributivlarda CPU ishlab chiqaruvchiga mos microcode paketlari mavjud.

Kernel logida:

  • oldingi revision;
  • yangi revision;
  • update holati

ko‘rinishi mumkin.

Paket yangilangan bo‘lsa ham, yangi microcode faol bo‘lishi uchun reboot kerak bo‘lishi mumkin.

CPU signature

Microcode update ma’lum CPU family, model va stepping uchun mo‘ljallangan.

Noto‘g‘ri update CPU tomonidan qabul qilinmaydi.

Platforma patch headeridagi identifikator va checksumni tekshiradi.

Stepping

Bir model protsessor ishlab chiqarish davomida turli steppingga ega bo‘lishi mumkin.

Stepping kichik hardware revisionni bildiradi.

Bir steppingdagi xato boshqasida fizik tuzatilgan bo‘lishi mumkin.

Microcode fayl aynan mos signature uchun tanlanadi.

Errata

Protsessor hujjatida ma’lum apparat xatolari errata sifatida e’lon qilinadi.

Yechim:

bo‘lishi mumkin.

Har errata microcode bilan tuzatilmaydi.

Xavfsizlik zaifligi

Speculative execution va boshqa CPU zaifliklarida mitigation bir nechta qatlamdan iborat bo‘lishi mumkin:

Faqat microcode update barcha himoyani avtomatik yoqmaydi.

Kernel yangi control bitlardan foydalanishi kerak.

Performance ta’siri

Microcode yoki mitigation ayrim workload performance’iga ta’sir qilishi mumkin.

Sabablar:

  • speculation cheklovi;
  • branch predictor flush;
  • qo‘shimcha barrier;
  • context switch amali;
  • feature disable.

Ta’sir workload va CPU avlodiga bog‘liq.

Virtual mashina

Hypervisor host CPU microcode’iga tayanadi.

Guest odatda fizik microcode’ni o‘zi yangilamaydi.

Hypervisor guestga qaysi CPU featurelarni ko‘rsatishni boshqaradi.

Live migrationda ikki hostdagi CPU model va microcode mosligi muhim.

Container

Container host kernel va CPUdan foydalanadi.

Microcode container image ichida boshqarilmaydi.

Host administrator firmware va OS microcode paketini yangilaydi.

Versionni tekshirish

Microcode revision:

orqali ko‘rilishi mumkin.

Revision raqami turli CPU familylar orasida to‘g‘ridan-to‘g‘ri solishtirilmaydi.

Microcode va firmware farqi

Microcode protsessorning ichki instruction boshqaruviga tegishli.

Firmware kengroq tushuncha:

Microcode firmware turi sifatida qaralishi mumkin, lekin har firmware microcode emas.

Yangilash siyosati

Server parkida:

birgalikda boshqariladi.

Faqat UEFI yoki faqat OS paketga tayanish versiya tafovutiga olib kelishi mumkin.

Diagnostika

Microcode muammosida:

tekshiriladi.

Update yuklanmasa, paket mos CPU signaturega ega ekanligi va boot image yangilangani tekshiriladi.

Microcode update’ni tekshirish

Yangilanish o‘rnatilgandan keyin faqat paket versiyasi emas, protsessorda faol revision tekshiriladi.

Boot log quyidagilarni ko‘rsatishi mumkin:

microcode updated early to revision ...

Server klasterida barcha node bir xil patch darajasida bo‘lishi live migration va barqarorlik uchun muhim. Yangilanishdan keyin vulnerability scanner, kernel mitigation holati va workload testi qayta bajariladi.

Bog‘liq tushunchalar

CPU, Instruction set, Micro-operation, Firmware, UEFI, Errata, Kernel, Hypervisor, Speculative execution, Stepping