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:

  1. támogatás a Linux kernel-be
  2. a microcode betöltő utility (microcode_ctl)
  3. a microcode
  4. 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.

Külső hivatkozások