Czy zastanawialiście się, czy Intel wykorzystuje swój kompilator do walki z AMD i VIA? Jeśli nie, to warto poznać kolejną ciemną stronę potentata z Doliny Krzemowej.
Kompilator Intela potrafi generować różne wersje kodu w zależności od zestawu instrukcji(takich jak SSE2/SSE3), jakie wspiera dany procesor. System identyfikuje procesor przy uruchomieniu programu i w zależności od wyników detekcji wybiera optymalną ścieżkę kodu (odpowiada za to tzw. CPU dispatcher).
Jednakże dispatcher Intela wykrywa nie tylko, jaki konkretnie zestaw instrukcji jest obsługiwany, ale także na procesorze jakiej marki został uruchomiony. Odbywa się to poprzez sprawdzenie tzw. VendorString, czyli napisu który jest zakodowany w każdym procesorze. Jeśli zostanie wykryte, że jest to procesor Intela(tzn. VendorString ma wartość “GenuineIntel”), to wykonywana jest optymalna ścieżka kodu. Natomiast wykrycie procesora konkurencji powoduje w większości przypadków automatyczny wybór najwolniejszej ścieżki kodu, nawet jeśli procesor jest zgodny i wspiera wykonywanie szybszego kodu.
Mogłoby się wydawać, że jest to kolejna z wielu legend, ale okazuje się że można to sprawdzić. Otóż redaktorzy ArsTechnica odkryli, że zmiana VendorString w procesorach VIA Nano na “AuthenticAMD” pozwala zwiększyć wyniki benchmarku podsystemu pamięci w PCmark2005 o 10%, natomiast zmiana na “GenuineIntel” owocuje blisko 50% poprawą wyników. Niestety procesory AMD mają zablokowaną taką możliwość, więc trudno ocenić jaki jest wpływ kompilatora Intela na ich wydajność.
Całą sprawą zajęła się Federalna Komisja Handlu USA, która wezwała Intel do naprawienia szkód m.in. poprzez naprawę kompilatora, rekompensatę szkód jakie ponieśli jego użytkownicy oraz publiczne ogłoszenie konieczności ew. wymiany kompilatora na nowszą wersję.
Dodaj komentarz