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:
- UEFI firmware;
- operatsion tizim;
- hypervisor;
- bootloader.
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:
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:
- microcode patch;
- BIOS workaround;
- OS kernel workaround;
- compiler option;
- feature’ni o‘chirish;
- yangi stepping
bo‘lishi mumkin.
Har errata microcode bilan tuzatilmaydi.
Xavfsizlik zaifligi
Speculative execution va boshqa CPU zaifliklarida mitigation bir nechta qatlamdan iborat bo‘lishi mumkin:
- microcode;
- kernel;
- hypervisor;
- compiler;
- application;
- firmware setting.
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:
- vendor advisory;
- CPU model inventory;
- firmware va OS paket;
- reboot reja;
- performance test;
- vulnerability scan;
- rollback
birgalikda boshqariladi.
Faqat UEFI yoki faqat OS paketga tayanish versiya tafovutiga olib kelishi mumkin.
Diagnostika
Microcode muammosida:
- CPU family va stepping;
- active revision;
- UEFI version;
- OS microcode package;
- early load log;
- reboot;
- hypervisor;
- kernel mitigation;
- vendor advisory
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