Loading ...

Loading splash screen ...
Galleria
TECHNET
Pentium FDIV BUG
Pentium FIST BUG (Dan-0411) Intel Flag Erratum
CPU Identification
Motherboard Identification
Motherboard Identification: BIOS chip swapping
Applicazioni pratiche del BIOS chip swapping
Motherboard Identification: layout
CPU Speed e Clock Multiplier
BIOS Update
AWARD BIOS inside - CPU microcode
AMI BIOS inside - CPU microcode
Power-On Self-Test: PC Diagnostic Card
Socket 3 CPU voltage detection
Socket 3 clock multiplier detection (AMD Am5x86-P75 4x clock mode)
Turbo-Deturbo motherboard check
Socket 7 FSB / clock multiplier detection
AWARD BootBlock BIOS Recovery
Riprogrammazione BIOS: BIOS chip hot swapping
Compaq Deskpro 2000 BIOS F10: Computer SETUP/V and PC Diagnostics
Olivetti PCS 386 SX: disassemblaggio
Desktop Management Interface (DMI) e Custom MIFD
PC Windows 98: da standard Hard Disk a SSD Compact Flash
 
TECHNET: 22
.
Mouse prototype
Joint Computer Conference
San Francisco Convention Center
(1968)
AMI BIOS inside - CPU microcode
Analisi dei CPU microcode nel BIOS AMI
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
0000000305.05.1999000006652B9733F100000010
0000003508.05.1998000006343AC2FB5300000001
0000003010.06.199800000651DE71ECC900000001
0000001410.06.1998000006520E4A719500000001
0000000405.06.1998000006600C7B520500000001
0000000415.11.2000000006B065611EB600000010
0000001C15.02.2001000006B16506E1CF00000010
0000001121.09.199900000681FC16538D00000010
0000001010.01.200000000683AA8ED88C00000010
0000000805.05.200000000686EA2B7B6100000010
0000000102.11.20000000068A80FC9E3B00000010
0000000C10.01.200000000683B1605BCA00000001
0000000D21.09.1999000006813170816600000001
0000000723.04.199900000673AA465D9600000001
0000000705.05.20000000068687AA303F00000001
0000001406.02.2001000006830976FD9800000010
0000001306.02.2001000006832F0DA1B000000001
0000000112.07.199900000681CB9DA6D000000001
0000000516.07.199900000681D31A2D4700000010

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 CeleronTualatin 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).
AMI BIOS inside - CPU microcode © PC Rebuilding
Prima pubblicazione: 10 Settembre 2015, 11:59.00
Ultimo aggiornamento: 8 Giugno 2017, 15:14.00
Visualizzazioni attive: 2818



Link correlati
Link veloci
Statistiche gruppi
22 [TECHNET]