Eroare de calcul SIN și COS pe toate modelele de CPU Intel
  [ Ignoră ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Tineți minte scandalul cu Intel care a implementat greșit operatorul de împărțire pe CPU-urile Intel ?

Tocmai s-a aflat că mai există și o altă bubă în TOATE CPU-urile Intel din de pe piață. Valoarea lui PI stocată în procesor are lipsă jumătate din digiți:

în loc de

3.141592653589793115997963468544185

este

3.141592653589793100000000000000000

De aceea, toate calculele de Sinus, Cosinus și Tangent făcute de un CPU Intel folosind precizia maximă sunt eronate.

http://randomascii.wordpress.com/2014/10/09/intel-underestimates-error-bounds-by-1-3-quintillion/

Și până de curând, documentația Intel susținea că valorile sunt corecte. Se știe de peste zece ani că există buba aceasta dar Intel a ținut informația sub preș, să nu se facă de râs.

Partea distractivă este că CPU-urile AMD au aceiași bubă. AMD a încercat să facă CPU-uri cu valoarea corectă, dar nu mai dădeau aceleași răspunsuri [greșite] ca un CPU Intel și astfel nu erau 100% compatibile. Așa că au decis să folosească și ei aceiași valoare greșită a lui PI

E cineva care a avut vre-un proiect pe Windows sau Linux în care a trebuit să facă calcule matematice de mare precizie și a folosit un CPU Intel ? Ar fi bine să le refacă folosind librării software de virgulă mobilă (extrem de încete față de CPU) sau pe un alt CPU (PowerPC ?).

Mac OS X a implementat un work-around pentru buba asta începând cu 10.5.2 (Feb 2008), făcând toate calculele de SIN, COS și TAN în software, fără a se mai baza pe CPU.

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRankRank
Member
Din: Bucuresti
Macuser din: 20.07.10

interesat, datorita acestei greseli am aflat ca “pi’’ este stocat in cpu.

 Semnătură 

*Mac Mini (Late 2012), 2.5GHz Intel Core i5, 4Gb DDR3, 120Gb SSD
*iPhone SE Space Gray, 16GB; Apple Watch Sport 38mm Space Gray;
*2 x PS3 Slim 120Gb, XBOX 360 Slim 640Gb, XBOX Classic 250Gb, Wii, Wii U, NDS Lite, NES, Raspberry Pi, PSP;
*Canon 550D, Fujifilm S6500FD

Profil
 
  [ Ignoră ]   [ # 2 ]
Avatar
RankRankRank
Member
Din: Cluj Napoca
Macuser din: 09.02.13

Da e chiar interesanta problema, insa eu sunt foarte curios unde si ce fel de calcule matematice pot face diferenta cu acele valori lipsa?

 Semnătură 

...prin livada cu mere…

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRankRankRank
Sr. Member
Din: Cluj-Napoca
Macuser din: 26.01.06

probabil e folosit pt ceva intern, mi-e greu sa cred ca limbajele de programare citesc de acolo pi cand pot sa-l defineasca ei. nici nu vad cum ar putea sa-l citeasca.

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 4 ]
Avatar
RankRankRankRank
Administrator
Din: județul Devon, UK
Macuser din: 18.10.05

Whoa! Deci, daca lansau racheta spre luna cu un Intel d-asta, ajungea ... cu satelitu’?

Profil
 
  [ Ignoră ]   [ # 5 ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Pentru calcului SIN si COS, Co-procesorul matematic are nevoie de valoarea lui PI - care este stocată ca o constantă în firmware-ul CPU-ului. Numai că, din prostie sau lene, valoarea lui PI este stocata pe 64 biți în loc de 128, cum trebuia. Bănuiesc eu că la trecerea pe 32 biți, de la coprocesorul matematic Intel 80287 la 387 și CPU-ul 486 (care avea coprocesorul inclus), s-a păstrat valoarea constantei de la procesoarele de 16 biți.

Pentru a calcula rapid o valoare Sinus a unui număr in virgulă mobilă, se folosește instrunțiunea de CPU “FSIN” - care, conform documentației originale Intel, pentri valori mici ale numărului pentru care se vrea aflarea valori sinus, va returna 31 de zecimale corecte după virgulă. Buba este că returnează doar 15 corecte. Și pentru numere mari, precizia scade - ajungând la doar câteva zecimale corecte.

Uite un blogger care a descoperit buba asta prin 2007 - în comentarii câțiva încearcă testul lui și pe CPU-uri PowerPC cu care - surpriză-surpriză - obțin rezultatele corecte.

http://blogten.blogspot.ro/2007/08/fun-with-x87-fsin.html

Rușine Intel.

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil