Ize... Ne terjesszunk mar butasagokat a mikrokoddal kapcsolatban.
Tegyuk akkor helyre egy kicsit a dolgokat (ha mar a problemamon senki nem tudott segiteni). Amirol korabban a kollega meselt, az a CPUID. A pentium utasitaskeszletben jelent meg a CPUID utasitas, mely a processzor azonositasara szolgal. Kulonbozo bemeneti ertekekkel meghivva a processzor egyes jellenzoi kerhetoek le. Ilyen pl. a csalad (Pentium Pro/Pentium II/III, ebbe a csaladba tartozo Celeron prociknal ez 6, Pentium 4 es ilyen alapu Celeronok eseten F), a modell es a stepping. Tehat a csaladon belul vannak az egyes modellek, a modelleken belul pedig mondjuk ugy, hogy az egyes "verziok" (stepping). Mas bemenettel hivva a CPUID-t lekerhetoek a cache leiroi (tehat hogy hany szintu, mekkora es milyen szervezesuek a proci cache-e), megint massal a tamogatott funkcioi (pl. MMX/SSE). Ezek alapjan azonositjak be a sysinfo programok a processzorokat.
A feszultseg bealitasa mar mas teszta. Ezt szoftveresen lekerni tudtommal nem lehet (a sysinfo progik is vagy szenzorok alapjan jelentik le, vagy "tudjak", hogy az egyes tipusok milyen feszultseget igenyelnek), viszont a processzorok egyes labai a helyes feszultseg beallitasaert felelnek. Van 3-5 lab, amelyek mindegyiken vagy van jel, vagy nincs (ugyebar ez 2^3, 2^4 vagy 2^5 lehetoseg, most nem szedem le a doksit, hogy P4 prociknal pontosan hany lab is szolgalja ezt a celt), es az alaplap ezek alapjan allitja be a megfelelo feszultseget. Annak idejen az alap feszkot ugy is meg lehetett manipulalni, hogy egyes labakat osszekotve azon jelet mert az alaplap, es mas erteket (altalaban az volt a cel hogy magasabbat) allitott be.
A mikrokod a processzor szoftvere, ez vezerli kozvetlenul a mikroprocesszort. A gepi kodu utasitasok erre fordulnak at, illetve ez tartalmaz bizonyos muveletek gyorsitasahoz szukseges tablazatokat, melyek elore definialt ertekekkel vannak feltoltve. Biztosan sokan emlekeznek meg a hires Pentium osztasi hibara, amikor egy ilyen gyorsitotabla volt rosszul kitoltve, es ez okozta a hibat. A Pentium Pro utan gyartott Intel processzorokban lehetoseg van a beegetett mikrokod foltozasara, igy a kesobbiekben felfedett, az osztasi hibahoz hasonlo problemakat szoftveresen lehet orvoslasara. Erre valoak a mikrokod update-ek - egy mai atlagos BIOS image-ben 6-8 ilyen talalhato (vagy akar meg tobb is), minden tamogatott CPU tipushoz egy. Mivel ez szoftveres megoldas, a CPU-t nem modositja, aramtalanitas utan ismet a beegetett mikrokoddal indul el a CPU. A BIOS-ban van egy rutin, ami a POST utan lefut, lekeri a jelenlegi mikrokod verziot, majd a CPUID alapjan frissebbet keres (a BIOS image-ben), es ha talal, feltolti azt meg a boot procedura elott. Termeszetesen ezek a mikrokod frissitesek barmikor maskor is betolthetoek, pl. a windows-nak is megvan a megfelelo eszkoze erre (az update.sys tartalmazza a frissiteseket), es a linux is tamogatja ezt.
Egy-egy alaplapnal az ujabb processzorok tamogatasa egy BIOS frissitessel nagyjabol abban merul ki, hogy kepes felismerni a processzort (tehat nem azt fogja kiirni, hogy "CPU Type: unknown", hanem a proci valodi tipusat), illetve megfeleloen inicializalni azt.
A mikrokod egyebkent eleg kenyes tema az Intel tajan. Semmifele erdemi informacio nem erheto el a gyartonal az egyes mikrokod frissitesekrol (legalabbis egy foldi halandonak, mint pl. nekem), sem arrol, hogy mikor jott ki ujabb, sem arrol, hogy milyen hibat frissitett - ezt a gyartoknak adja at az Intel, akik szepen bepakoljak a BIOS frissitesbe, es a fent leirt modon ez fel is toltodik. Nekem maniam az, hogy minden legyen a leheto legfrissebb, igy tobb gyarto BIOS frissiteseit is szedegetem, amikbol kigyujtogetem a mikrokod frissiteseket, es ha ujabbat talalok, mint ami a procimra van toltve, szepen kicserelem, es flash-elek egyet.
Hirtelen ennyi...