
BIOS Update
Sulla motherboard PCCHIPS M756MRT+ (Slot 1 / Socket 370) proviamo ad installare un Pentium III 1.133GHz (Socket 370) utilizzando un adapter che supporta il core Tualatin. Prima di procedere verifichiamo che tutto funzioni installando temporaneamente un Pentium III Coppermine 933MHz, la RAM e una scheda video PCI. Il sistema si avvia correttamente e la versione del BIOS è la 04/20/2000S.
Sul sito PCChips nella sezione Download ( Link) è presente una versione aggiornata del BIOS valida per le motherboard: M756T (V1.21/V1.21A), M756T+/M756LT+ (V3.3) e M756+/M756L+ (V5.3). Nelle note è specificato che sono stati aggiunti vari CPU microcode e il supporto per il Celeron Tualatin per cui è supportato anche il Pentium III Tualatin.
Inseriamo ora con pressione la CPU sull'adapter e configuriamo correttamente lo switch SW1:1 OFF (P-III) sull'adapter. Montiamo poi il gruppo CPU-adapter nel Socket 370 ed installiamo la ventola di raffreddamento. Proviamo il boot: la motherboard si avvia ma la CPU non viene riconosciuta quindi l'adapter funziona correttamente ma il BIOS non riconosce la CPU poichè non ha il microcode corretto.
Reinstalliamo il Pentium III 933MHz e e scarichiamo l'ultima versione del BIOS (05/14/2002S file 020514S.ROM): utilizzando il programma di flash allegato (aminf342.exe) procediamo con l'aggiornamento. Dopo il completamento il riavvio va a buon fine e viene confermata la versione 05/14/2002S.
A questo punto è possibile installare il Pentium III 1.133GHz core Tualatin: la nuova CPU viene rilevata in automatico sull'adapter e, dopo aver impostato i valori CPU ratio pari a 8.5 e CPU frequency pari a 133, al reboot la frequenza corretta risulta di 1.13GHz (nota: il BIOS riconosce una CPU diversa da quella installata in precedenza e si avvia in safe-mode, con valori bassi di frequenza e clock multiplier).
CPUID
La stringa CPUID introdotta nel 1993 da Intel per l'identificazione univoca delle CPU risiede in un particolare registro ed è ottenuta dalla concatenzione di Extended Family, Extended Model, Type, Family, Model, Stepping e Brand ID come segue:
Extended Family / Model | Type | Family | Model / Stepping | Brand ID | Extends the Base Family / Base Model value | 0 = Standard, 1 = Overdrive, 2 = 2nd Dual Pentium | 4 = 486, Am5x86, Cx5x86 5 = Pentium, Nx586, Cx6x86, K5/K6, C6, mP6 6 = Pentium Pro / Pentium II / Pentium III, CxMII / CxIII, Athlon, C3 F = Pentium 4, Athlon64 | CPU Model and 486 L1 cache mode / Stepping or sub-model number | Genuine Intel, UMC, Authentic AMD, Cyrix Instead, NexGen Driven, Centaur Hauls, Rise, SiS, Genuine TMx86, Geode by NSC |
Ad esempio il Pentium III Coppermine 933MHz SL4C9 ha CPUID 000686: Pentium III (6) model 8 stepping C0 (6), brand ID GenuineIntel (Intel processor). Per ulteriori dettagli si può fare riferimento alla guida tecnica su sandpile.org ( Link) oppure all'utility chkcpu/chkcpu32 for DOS/Windows di Jan Steunebrink (da cui deriva la tabella sopra, Link).
Ora verifichiamo quali CPU microcode sono stati aggiunti nella versione 05/14/2002S per il supporto del core Tualatin.

AMI BIOS Tools
Per l'editing dei BIOS AMI esistono diversi tools:
- amibcp (AMI BIOS Configuration Program per DOS): applicazione DOS sviluppata da American Megatrend per la modifica della maggior parte dei parametri del BIOS ROM file ( Link), funziona con i BIOS meno recenti AMI7 e ROM file 128-256 KB;
- amibcp_w32 (AMI BIOS Configuration Program per Windows): applicazione Windows sviluppata da American Megatrend per la modifica della maggior parte dei parametri del BIOS ROM file ( Link), funziona con i BIOS più recenti AMI8 e ROM file 512+ KB;
- mmtool (Award Bios Editor): applicazione Windows sviluppata da American Megatrend per la modifica della maggior parte dei parametri del BIOS ROM file, consente anche l'estrazione/inserimento dei moduli ( Link), funziona con i BIOS più recenti AMI8 e ROM file 512+ KB;
- ctmc: applicazione DOS sviluppata da Andreas Stiller per la visualizzazione/estrazione dei CPU microcode contenuti nel BIOS ROM file ( Link)

Estrazione CPU microcode
Per estrarre i dati dei CPU microcode presenti nel ROM BIOS file 020514S.ROM usiamo il tool amibcp per DOS passando da riga di comando il ROM file: amibcp.exe 020514S.ROM Dall'interfaccia grafica accediamo al submenu 'Edit BIOS Modules': tenendo selezionata la voce 'P6 Micro Code' con la barra spazio viene richiesto il nome del file di output 020514S.CMC (CMC=CPU Micro Code).

Analisi CPU microcode
I dati dei CPU microcode estratti dal ROM BIOS file possono essere analizzati con il tool ctmc passando come opzione da riga di comando il file CMC salvato: ctmc.exe 020514S.CMC I risultati sono riassunti nella tabella seguente:
UpdateID | Date | CPUID | Checksum | Platform | 00000003 | 05.05.1999 | 00000665 | 2B9733F1 | 00000010 | 00000035 | 08.05.1998 | 00000634 | 3AC2FB53 | 00000001 | 00000030 | 10.06.1998 | 00000651 | DE71ECC9 | 00000001 | 00000014 | 10.06.1998 | 00000652 | 0E4A7195 | 00000001 | 00000004 | 05.06.1998 | 00000660 | 0C7B5205 | 00000001 | 00000004 | 15.11.2000 | 000006B0 | 65611EB6 | 00000010 | 0000001C | 15.02.2001 | 000006B1 | 6506E1CF | 00000010 | 00000011 | 21.09.1999 | 00000681 | FC16538D | 00000010 | 00000010 | 10.01.2000 | 00000683 | AA8ED88C | 00000010 | 00000008 | 05.05.2000 | 00000686 | EA2B7B61 | 00000010 | 00000001 | 02.11.2000 | 0000068A | 80FC9E3B | 00000010 | 0000000C | 10.01.2000 | 00000683 | B1605BCA | 00000001 | 0000000D | 21.09.1999 | 00000681 | 31708166 | 00000001 | 00000007 | 23.04.1999 | 00000673 | AA465D96 | 00000001 | 00000007 | 05.05.2000 | 00000686 | 87AA303F | 00000001 | 00000014 | 06.02.2001 | 00000683 | 0976FD98 | 00000010 | 00000013 | 06.02.2001 | 00000683 | 2F0DA1B0 | 00000001 | 00000001 | 12.07.1999 | 00000681 | CB9DA6D0 | 00000001 | 00000005 | 16.07.1999 | 00000681 | D31A2D47 | 00000010 |
In particolare, il CPU microcode 068A introduce il supporto per i core Coppermine, Coppermine-128 e Coppermine-T mentre i CPU microcode relativi ai CPUID 06B0 e 06B1 introducono il supporto per i core Tualatin dei Celeron e Pentium III:
CPUID | CPU Type | CPU Core | Core Stepping | Package and Revision | L2 Cache Size (KB) | 068A | Celeron, Pentium III | Coppermine, Coppermine-128, Coppermine-T | D0 | FC-PGA, FC-PGA2 (370 PIN) | 128, 256 | 06B0 | ES Engineering Sample | Tualatin | - | - | - | 06B1 | Celeron | Tualatin | A1 | FC-PGA2 (370 PIN) | 256 | 06B1 | Pentium III | Tualatin | A1 | FC-PGA2 (370 PIN) | 256 | 06B1 | Pentium III | Tualatin | A1 | FC-PGA2 (370 PIN) | 512 | 06B4 | Pentium III | Tualatin | B1 | FC-PGA2 (370 PIN) | 512 |
Per ulteriori dettagli si può fare riferimento alle guide tecniche ufficiali Intel Celeron Processor Specification Update ( Link) e Intel Pentium III Processor Specification Update ( Link) Ulteriori considerazioni
Il CPU microcode relativo al CPUID 06B4 (relativo allo stepping B1 delle ultime versioni S dei Pentium III con 512KB di L2 cache) non è presente nella lista degli update. Effettuando dei test con un Pentium III-S Tualatin 1.4GHz, il BIOS autorizza comunque il boot e la CPU funziona correttamente.
CPUID | CPU Type | CPU Core | Core Stepping | Package and Revision | L2 Cache Size | Speed Core/Bus (MHz) | S-Spec | 06B4 | Pentium III | Tualatin | B1 | FC-PGA2 (370 pin) | 512KB | 800, 1133, 1267, 1400/133 | SL6HC, SL6BW, SL6BX, SL6BY |
Il CPU microcode relativo al CPUID 06B0 è presente nell'update ma non nelle specifiche tecniche ufficiali di Pentium III e Celeron poichè è relativo alle CPU ES (Engineeering Sample).

BIOS modding
Con gli stessi tools usati per l'estrazione e l'analisi dei CPU microcode, proviamo ora a costruire un nuovo BIOS update che supporti anche il Pentium III Tualatin CPUID 06B4. L'idea è quella di partire dall'ultima versione 020514S.ROM (che contiene anche altri fix) e aggiungere il CPU microcode relativo al CPUID 06B4.
Operazioni preliminari
Il file 020514S.CMC salvato in precedenza contiene l'elenco dei CPU microcode estratti con amibcp per DOS; con il tool ctmc è possibile salvare in formato .bin tutti i CPU microcode presenti nel file CMC come segue da riga di comando: ctmc.exe 020514S.CMC /store Nella nostra working directory troveremo l'elenco di tutti i file .bin con nome dato dalla concatenazione di CPUID (4 caratteri), Platform (2 caratteri) e UpdateID (2 caratteri), in accordo con l'elenco presente nel file CMC.

Download ultimo CPU microcode datafile
Intel supporta i Sistemi Operativi Linux e VMware ESX (che hanno una routine di update dei microcode al boot per riconoscere automaticamente nuove CPU) per cui rilascia periodicamente l'elenco dei CPU microcode relativi a tutti i processori Intel. Scarichiamo quindi l'ultima versione ( Link) e decomprimiamo il contenuto dell'archivio in una cartella temporanea intelcmc ottenendo il file microcode.dat. Con l'utility di terze parti microdecode.exe è possibile salvare in formato .bin tutti i CPU microcode presenti nel file:
microdecode.exe microcode.dat L'utility, scritta in C, è stata modificata per restituire i nomi dei file .bin in accordo con la convenzione CPUID (4 caratteri), Platform (2 caratteri) e UpdateID (2 caratteri). In particolare, risultano 2 file relativi al CPUID 06B4 e precisamente: 06B41001.BIN e 06B42002.BIN.
Inserimento CPU microcode per supporto Tualatin CPUID 06B4
Nella working directory copiamo dalla cartella intelcmc i file relativi al CPUID 06B4. A questo punto si possono combinare tutti i file .bin in un unico file CMC (che verrà importato nel nuovo BIOS update) con il comando copy:
copy /b *.bin 020514U.CMC Per verificare la correttezza del nuovo file CMC si può analizzarne il contenuto:
ctmc.exe 020514U.CMC In effetti il risultato è quello atteso: il file contiene i CPU microcode relativi al CPUID 06B4 (supporto core Tualatin).

Costruzione nuovo BIOS 020514U.ROM
Il nuovo BIOS di partenza sarà ottenuto copiando il file 020514S.ROM nel file 020514U.ROM. Prima di effettuare l'inserimento dei nuovi CPU microcode occorre rimuovere quelli già presenti nel BIOS file con il tool amibcp per DOS:
amibcp.exe 020514U.ROM Dall'interfaccia grafica accediamo al submenu 'Edit BIOS Modules': tenendo selezionata la voce 'P6 Micro Code' con il tasto 'Canc' viene richiesta la conferma per l'eliminazione del modulo. Salviamo il file 020514U.ROM sovrascrivendolo e chiudiamo amibcp. Eseguiamo di nuovo il comando amibcp.exe 020514U.ROM e verifichiamo che effettivamente non esiste più il modulo 'P6 Micro Code'.
Ora è possibile importare il nuovo modulo dal submenu 'Edit BIOS Modules': con il tasto 'Ins' viene richiesto il nome del modulo da inserire 020514U.CMC e successivamente la tipologia di modulo (che può essere selezionata da un menù); in questo caso l'id del nuovo modulo è 11 e corrisponde al 'P6 Micro Code'. Salviamo di nuovo il file 020514U.ROM sovrascrivendolo e chiudiamo amibcp.
Per verificare la corettezza delle operazioni eseguiamo l'estrazione e l'analisi dei CPU microcode come visto in precedenza: in effetti il nuovo BIOS update file contiene i CPU microcode relativi al CPUID 06B4.

L'ultima operazione riguarda il BIOS boot message: sempre con il tool amibcp per DOS possiamo caricare il BIOS update file e modificare la stringa che verrà caricata al boot dal submenu 'Configure BIOS Runtime': Release 05/14/2002U - patch Tualatin 06B4 081915.
A questo punto, se non ci sono stati errori e il checksum è corretto, si può ripetere il BIOS update passando 020514U.ROM come ROM file (non sono stati ancora effettuati test funzionali).

Conclusioni
Il BIOS update rilasciato dal costruttore contiene dei fix e i CPU microcode necessari per la corretta gestione delle nuove CPU, in particolare di Pentium III e Celeron core Tualatin. La motherboard diventa operativa con un adapter su Socket 370 con package type FC-PGA2.
E' possibile manipolare i BIOS ROM file AMI per estrarre/analizzare i CPU microcode. Si possono anche inserire CPU microcode per gestire nuove CPU ma il processo ha un limite dato dalla capacità del ROM CHIP (in questo caso 256KB). Per testare l'overflow, proviamo a generare il file 0205OVF.CMC (OVF=OverFlow) caricando i primi 100 CPU microcode rilasciati da Intel (il file ottenuto ha dimensioni superiori a 256KB); copiamo il file 020514S.ROM nel file 0205OVF.ROM, rimuoviamo i CPU microcode e importiamo il file 0205OVF.CMC: si ottiene l'errore di overflow ROM Module too large for remaining memory
Note su CTMC di Andreas Stiller: A very powerful tool
Il tool ctmc è un potente strumento per l'estrazione dei CPU microcode e funziona con i BIOS AWARD e AMI. E' in grado di analizzare i ROM file ed estrarre direttamente i microcode senza l'utilizzo dei tool di manipolazione del BIOS cbrom/amibcp. Per funzionare correttamente deve avere nella stessa directory il tool lha.exe di compressione/decompressione archivi LHA di Haruyasu Yoshizaki.
Per visualizzare i CPU microcode è sufficiente passare come parametro direttamente il BIOS ROM file, per salvarli l'opzione /store:
ctmc.exe 020514S.ROM ctmc.exe 020514S.ROM /store Il tool è anche in grado di scrivere sulla ROM BIOS ma l'ambiente non deve essere in emulazione (real-mode tipicamente con disco di boot DOS minimale). |