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
Pentium FIST BUG (Dan-0411) Intel Flag Erratum
Pentium Pro e Pentium II Stepping C0 non gestiscono correttamente l'errore di conversione di numeri in virgola mobile in numeri interi.
IL BUG
Il Pentium FIST BUG (Dan-0411) o Flag Erratum come riportato da Intel, è un errore di calcolo che i Pentium Pro e i primi Pentium II presentavano durante le operazioni di conversione di numeri in virgola mobile in numeri interi. Fu scoperto nel 1997 da un anonimo Dan che l'11 Aprile (da qui il nome Dan-0411) inviò una e-mail all'esperto Robert R. Collins, critico di Intel e autore del sito Intel secrets and bug (Link), in cui chiedeva se era possibile verificare l'esistenza del bug con un programma scritto in assembly. Con questo linguaggio è possibile testare direttamente l'hardware senza introdurre eventuali errori dovuti ad altri fattori (come ad esempio il compiler).
Quando si verifica il bug
I numeri in virgola mobile sono memorizzati nella CPU nel formato a 80-bit mentre gli interi nel formato a 16-bit (short integer) e a 32-bit (long integer). La conversione dei numeri in virgola mobile a 80-bit in interi nei Pentium Pro o Pentium II può generare il Dan-0411 bug quando il numero convertito supera la capacità del buffer (più piccolo) riservato all'intero (overflow hardware).
L'errore si verifica solo quando l'istruzione FIST[P] (Float-to-Integer Store) è una operazione a 16 o 32 bit: la CPU non imposta correttamente uno specifico flag di stato nel registro dedicato alla conversione dei numeri in virgola mobile. Quando si memorizzano interi a 16 bit, la probabilità che il bug si verifichi è 1 a 8.6 bilioni, con gli interi a 32 bit è 1 a 562.950 bilioni: in totale circa 140.739.635.839.000 di numeri in virgola mobile diversi possono provocare il flag erratum.
In merito al bug, Robert R. Collins fa una interessante analogia con il fallimento del lancio del razzo Ariane 5 esploso a meno di un minuto dal lancio a causa di un overflow di conversione (software, non hardware) da virgola mobile a intero che non è stato gestito correttamente dal computer di bordo.
Il software di verifica
Robert R. Collins ha scritto il codice assembly (Link) per la verifica del bug in due versioni:
- fistbug rileva la presenza dell'errore con un semplice messaggio;
- fistbugv (versione verbose) vengono riportate altre informazioni tra cui il CPUID, il core e i risultati dei test per ogni singolo caso.
Anche altri software implementano i test errata come ad esempio HWiNFO per DOS (Link) o AIDA per DOS (Link).
Modelli con FIST BUG
Il bug è presente in tutti i Pentium Pro e nei primi Pentium II Stepping C0: dallo Stepping C1 l'errore è stato risolto. Nel documento Intel Pentium II Specification Update il flag erratum è l'item A25 - Invalid operation not signaled by the FIST instruction on some out of range operands che risulta infatti fixed dallo Stepping C1. Nel documento Intel Pentium Pro Specification Update il flag erratum è l'item A62 che risulta invece NO fixed e non pianificato per la risoluzione. I Pentium Classic (P54) e MMX (P55) e gli AMD K6 non sembrano avere questo problema.
Pentium II 233MHz Stepping C0
Intel S-Spec SL264, SL268, SL28K (Processor core Klamath)
Pentium II 266MHz Stepping C0
Intel S-Spec SL265, SL269, SL28L (Processor core Klamath)
Pentium II 300MHz Stepping C0
Intel S-Spec SL28R, SL2MZ (Processor core Klamath)
Pentium FIST BUG (Dan-0411) Intel Flag Erratum © PC Rebuilding
Prima pubblicazione: 17 Marzo 2016, 10:29.30
Ultimo aggiornamento: 23 Giugno 2017, 11:51.01
Visualizzazioni attive: 410



Link correlati
Link veloci
Inserimenti negli ultimi 30 giorni
Statistiche gruppi
22 [TECHNET]
Applicazioni pratiche del BIOS chip swapping
Esempi per motherboard non identificate e che non eseguono il boot