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
Da IDE HD a SSD CF
Clonare un Hard Disk
con Windows 98 SE
su un "SSD" Compact Flash
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
CPU
AMD Sempron 2500+ Thoroughbred SDA2500DUT3D Brown
Intel Celeron D 336 Prescott-256 2.8GHz SL8H9
Intel Pentium Dual-Core E2140 Allendale 1.6GHz SLA3J #08
Intel Pentium 4 531 Prescott 3GHz SL9CB #02
Intel Pentium Dual-Core E2140 Allendale 1.6GHz SLA3J #07
Intel Pentium Dual-Core E2140 Allendale 1.6GHz SLA3J #06
MOTHERBOARD
MSI P4M890M2 (MS-7255) VER:2.1 Pentium 4/D/Core 2 Duo #04
A-MAX LE-440A Pentium II
ASUS P5G4IT-M LX REV. 1.03 Pentium 4/D/Core 2 Duo/Dual Core
MSI P4M890M2 (MS-7255) VER:2.1 Pentium 4/D/Core 2 Duo #03
MSI P4M890M2 (MS-7255) VER:2.1 Pentium 4/D/Core 2 Duo #02
ASUS P5VDC-MX REV. 2.00G Pentium 4/D/Core 2 Duo
2nd LIFE
MSI P4M890M2 (MS-7255) - Intel Celeron D 336 2.8GHz
MSI P4M890M2 (MS-7255) - Intel Pentium Dual Core E2200 2.2GHz
MSI P4M890M2 (MS-7255) - Intel Pentium Dual Core E2180 2GHz
ASUS P5VDC-MX - Intel Pentium D 820 2.8GHz
COMPONENTS
Rack rimovibile per Hard Disk SATA - TermalTake Max 4
EXPANSION CARD
S3 VIRGE/DX On Board PCI
Advantech PC-LabCard PCL-744 ISA 16BIT
FLYTECH FT-8501101 (PC 8255 CARD) ISA 8BIT #02
U.S.Robotics Sportster ISDN TA ISA 16BIT
SECO CS309 ISA 16BIT
ATI Radeon 7000 AGP #03
STORAGE
Maxtor DiamondMax 10 6V160E0 SATA
HARDWARE MANUFACTURER
Advantech
SECO
BIOS STRING
63-0100-000001-00101111-011306-RS400-410M1000-Y2KC (ELITEGROUP RC410-M2)
04/09/2005-SiS-741-6A7I8FK9C-00 (FOXCONN WinFast K7S741M01C-GX-6L)
63-0709-009999-00101111-080406-P4M800 Pro-A0403709-Y2KC (ASUS P5VDC-MX)
Statistiche gruppi
22 [TECHNET]