Microcode
A HupWiki-ből...
Tartalomjegyzék |
Mi az a microcode?
Egyes Intel CPU-k (mint a legtöbb hardver és szoftver) rendelkeznek tervezési és/vagy gyártási bugokkal. Szerencsére az architektúrájuk eléggé rugalmas, és lehetővé teszi, hogy ezeket a hibákat kijavítsuk. Na nem kalapáccsal és pontozóval, hanem szoftveresen. A javítás egyik lehetséges módja az, hogy egy darab kódot, ún. microcode-ot töltünk be a processzorba "on-the-fly" azaz röptében, az operációs rendszer futása alatt. Ehhez nincs szükség arra, hogy rebootoljuk az operációs rendszert. Azzal, hogy betöltjük a processzorba a microcode-ot, érvényre juttatjuk azokat a javításokat, amelyet az Intel készített el azóta, hogy az adott CPU-t szilíciumba öntötte. A betöltött változtatásokkal a processzort felfrissítettük.
Mivel ez a beavatkozás nem végez fizikai változásokat a processzorban, a rendszer rebootolásával a frissítés eltűnik, így minden egyes boot-kor be kell tölteni a kódot. Természetesen ez azt is jelenti, hogy a microcode feltöltésével nem tudjuk elrontani a processzorunkat.
Használata Linux alatt
Nézzük mi kell ahhoz Linux operációs rendszer alatt, hogy kihasználhassuk az Intel microcode frissítések előnyeit:
Az Intel néha kiadja a legfrissebb microcode-okat, de nem ad hozzá változások listáját. Tehát azt, hogy mit változtatnak a processzor működésén, nem igazán lehet tudni. A microcode-dal kapcsolatos Linux dolgokat (microcode kernel driver, betöltő utility) Tigran Aivazian tartja karban.
Honnan szerezhető be?
A legfrissebb microcode-ot az alábbi címen lehet beszerezni:
http://urbanmyth.org/microcode/
Előfeltételek a használathoz
A használatához az alábbiakra van szükség:
- támogatás a Linux kernel-be
- a microcode betöltő utility (microcode_ctl)
- a microcode
- initscript-ek
Kernel támogatás
A Linux kernel-ek a 2.2.28-tól, 2.4.0-test1-ac10-től felfele tartalmazzák a microcode drivert. Természetesen a 2.6-os kernelek is.
A kernelbe bele kell fordítani a microcode frissítés támogatást:
Processor type and features ---> < M > /dev/cpu/microcode - Intel IA32 CPU microcode support
Célszerű kernelmodulba fordítani, mert a microcode feltöltése után a modul eltávolítható (rmmod microcode), és így nem foglal feleslegesen memóriát.
Előrefordított kernel esetén a modul neve microcode, általában a megfelelő init script betölti boot folyamán.
Betöltő segédprogram
Ha a kernel képes fogadni a microcode frissítést, akkor be kell szereznünk a feltöltő utility-t és a legfrissebb Intel által biztosított microcode-ot.
Ezt megtehetjük a http://urbanmyth.org/microcode/ oldalon.
#wget http://urbanmyth.org/microcode/microcode_ctl-x.xx.tar.gz
Kibontjuk, majd lefordítjuk, és telepítjük (untar, make all, make install). A make install-lal helyére kerül a microcode_ctl bináris, és bemásolódik a /etc könyvtárba microcode.dat néven a microcode file.
A legtöbb disztribúcióhoz elérhető előrefordított csomagként is, a csomag neve microcode (esetleg microcode.ctl).
Használata
(1200MHz 55C) root@alderaan:/home/trey $ microcode_ctl -f /etc/microcode.dat microcode_ctl: writing microcode (length: 208896) microcode_ctl: microcode successfuly written to /dev/cpu/microcode
Ezzel a microcode_ctl utility dekódolta és feltöltötte az új microcode-ot a processzorba.
Initscript-ek
A letöltött csomagban találunk initscript mintát, amelyet bemásolva a megfelelő helyre elérhetjük, hogy a microcode minden bootoláskor betöltődjön.
Mely processzorokkal használható az Intel microcode frissítés?
A microcode_ctl utility és a microcode file csak Intel Pentium Pro, PII, PIII, Pentium 4, Celeron, Xeon, stb. processzorokkal (az összes P6 architektúrájú vagy újabb Intel processzorral) használható. Nem használható a klasszikus Pentium processzorokkal. Újabban támogatja a x86_64 architektúrát is. A microcode.dat az összes processzor javítását tartalmazza, az utility automatikusan csak a szükséges részeket tölti fel az egyes processzorokba.
Néhány FAQ
K: Van valami hátránya a microcode használatának?
V: Nincs. Az új microcode a processzor ismert (de nem közismert) hibáit javítja. Használata "nem kerül semmibe" (nincs overhead-je).
K: Van valahol changelog a microcode-hoz?
V: Nincs. Ha az Intel úgy dönt, hogy kiad egy frissítést, akkor azt feltöltik a http://urbanmyth.org/microcode/ oldalra.
K: Van valami errata arról, hogy mit javítanak az egyes microcode-ok?
V: Lásd az előző kérdést.
K: ....AMD vagy más nem-Intel processzorok?
V: Csak Intel processzorok....
A napokban (2004. október 30.) jelent meg a legfrissebb microcode csomag, amely már a 2.6.x kerneleken is támogatja az x86_64 architektúrát.