Domanda

Una cosa su cui non capisco è come può il codice compilato per una CPU Intel funzionare su una CPU AMD.

La mia comprensione di base è che se si compila il codice C, ad esempio, il compilatore trasforma il codice sorgente in linguaggio macchina che avrà le istruzioni per un particolare processore. Quindi, è necessario compilare con un compilatore per qualsiasi piattaforma si desidera utilizzare l'applicazione. Perché non hai bisogno di un compilatore per AMD rispetto a Intel e devi acquistare software per un determinato processore?

So che i processori AMD e i processori Intel condividono una certa compatibilità con le precedenti istruzioni x86; quello che mi piacerebbe sapere è come lo fanno? Voglio dire, non è che AMD o Intel si stiano chiamando a vicenda e si raccontino i loro segreti commerciali, quindi come possono creare set di istruzioni compatibili?

Tutta la compatibilità è ancora basata sul set di istruzioni 386, con un mucchio di istruzioni come " IF AMD CPU, fare questo ELSE SE INTEL farlo " ;?

È stato utile?

Soluzione

Le CPU AMD e Intel x86 e x86-64 sono quasi interamente compatibili. Entrambi implementano tutti x86 e x86-64. Ognuno di essi ha le proprie estensioni (come MMX e 3DNow), ma i compilatori generalmente non le usano a meno che non glielo dica. Oggi, AMD e Intel supportano quasi tutte le estensioni reciproche. L'unica volta che potresti doverti preoccupare della differenza è quando stai facendo cose del kernel veramente di basso livello.

A proposito, il set di istruzioni non è in realtà un "segreto commerciale". L'implementazione è. Entrambe le società producono documentazione sul set di istruzioni, quindi ognuna può copiarla. La ragione di ciò è probabilmente che se più aziende producono chip compatibili, più software verrà scritto per questo set di istruzioni, quindi più persone compreranno questi chip. x86 / x86-64 è fondamentalmente l'architettura standard per desktop, garantendo che le persone continueranno ad acquistare chip Intel e AMD. Intel e AMD hanno implementazioni molto diverse, eseguono semplicemente lo stesso codice.

Altri suggerimenti

In realtà hanno un accordo di licenza incrociata. Le informazioni e l'innovazione sono passate da Intel ad AMD negli anni '90 quando AMD era una seconda fonte di processori 386 e 486, e poi da AMD a Intel quando Intel ha adottato le estensioni x86-64.

Ricorda anche che i set di istruzioni per questi processori sono documentati pubblicamente; in genere un fornitore inventa un nuovo set di istruzioni e una o due generazioni dopo l'altro fornitore implementerà estensioni compatibili. Come tale, piuttosto che IF 386 .... hai qualcosa di più sulla falsariga di SE SSE4 È SUPPORTATO ..., senza riguardo al fornitore specifico.

Entrambi i fornitori implementano lo stesso set di istruzioni, quindi quando il codice compilato viene trasformato in istruzioni macchina, funzioneranno su entrambi i chip. Tuttavia, ci sono alcuni set di istruzioni speciali come SSE che possono essere specifici per un fornitore o un altro. Se si desidera migliorare le prestazioni di un'applicazione, è possibile effettuare controlli di runtime per utilizzare queste funzionalità quando disponibili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top