Quote:
Originariamente inviato da liviux
Va bene, intendevo essere un po' provocatorio e a quanto pare ci sono riuscito. Ma non dico cose a caso.
Storicamente, fino al K5 AMD lanciava CPU che implementavano il set di istruzioni dettato da Intel. In genere ci riuscivano molto bene, replicando anche alcuni "bug" (in senso lato) architetturali di Intel che erano necessari per l'esecuzione di questo o quel software. Anche quando superavano le prestazioni di Intel, per esempio con una CPU a x*40 MHZ del tutto identica ad una Intel da x*33 MHz, dovevano però scontare una certa sfiducia da parte di molti acquirenti che si chiedevano se la CPU fosse "Intel compatibile al 100%". La domanda non era oziosa, perchè nel proliferare di cloni erano emerse anche CPU dalla compatibilità scadente. Il criterio di riferimento era: "fa girare qualunque software esattamente come lo farebbe girare una CPU Intel, difetti compresi?".
Ora invece le parti si sono invertite: AMD ha lanciato un set di istruzioni a 64 bit e Intel si è adeguata in seguito, solo dopo aver riscontrato scarso successo per le sue CPU a 64 bit. Per coerenza, visto che ora l'architettura di riferimento è AMD, sarebbe onesto (ma ironico) interrogarsi sulla compatibilità delle CPU Intel. Non parlo di prestazioni: le CPU Netburst fanno pena in ambiente 64 bit, ma Conroe potrebbe eccellere. Parlo di "far girare qualunque software esattamente come lo farebbe girare una CPU AMD, difetti compresi". Non ho una risposta pronta, ma osservo solo che ci sono delle differenze fra le due implementazioni del set di istruzioni che sono rilevanti per un software come un compilatore.
Per cui vi chiedo: se un software compilato in codice x86-64 girasse in un modo su una CPU AMD ed in un altro modo su una CPU Intel, quale delle due secondo voi avrebbe "ragione" e quale sarebbe "incompatibile"? Secondo me, essendo il set di istruzioni opera di AMD, è rispetto ad essa che va misurata la compatibilità. Esattamente l'opposto che in passato, ironicamente.
|
Paradossalmente, la compatibilità verrebbe comunque testata basandosi sulla maggior diffusione.
Quindi eventuali test di compatibilità dovrebbero ancora una volta riguardare l'architettura AMD, visto che è naturale che i programmatori creino codice basandosi principalmente sull'architettura X64 più diffusa, ovvero quella "tarocco" di Intel.
Se quest'ultima dovesse avere dei bachi, il codice sarà "vestito" a loro misura, e allora bisogna vedere se l'architettura "pura" AMD, gradirà questi workaround.
Ma visto che ormai si tende a standizzare tutto, non credo ci siano di questi problemi, in ogni caso. Si lavora a comparti stagni, e poi tutto dovrebbe incastrarsi in automatico.
E poi, mi sembrano molto più attuali le SSE. Intel debuttò con le SSE3, e AMD fu costretta a un nuovo step di A64 per implementarle. Ora Intel debutterà con le SSE4, e AMD dovrà nuovamente far uscire un nuovo step per includerle...
E neppure in questo caso ho mai sentito di problemi di incompatibilità fra le due implementazioni.