2009-05-06 12 views
9

Una cosa su cui non mi capisco è come può il codice compilato per una CPU Intel funzionare su una CPU AMD.Perché le applicazioni off-the-shelf funzionano su processori Intel e 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à istruzioni per un particolare processore. Quindi, devi compilare un compilatore per qualsiasi piattaforma tu voglia che la tua applicazione usi. Perché non hai bisogno di un compilatore per AMD rispetto a Intel e devi acquistare software per un particolare processore?

So che i processori AMD ei processori Intel condividono un po 'di compatibilità nelle precedenti istruzioni x86; quello che mi piacerebbe sapere è come lo fanno? Voglio dire, non è che AMD o Intel si chiamino l'un l'altro 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 una serie di istruzioni come "IF AMD CPU, fai questo ELSE SE INTEL lo fai"?

risposta

18

Le CPU AMD e Intel x86 e x86-64 sono quasi interamente compatibili. Entrambi implementano tutto x86 e x86-64. Ognuno di loro ha le proprie estensioni (come MMX e 3DNow), ma i compilatori generalmente non li usano a meno che non glielo dica. Al giorno d'oggi, AMD e Intel supportano quasi tutte le estensioni degli altri. L'unica volta in cui potresti doverti preoccupare della differenza è quando stai facendo roba del kernel veramente di basso livello.

A proposito, il set di istruzioni non è realmente un "segreto commerciale". L'implementazione è. Entrambe le aziende producono la documentazione sul set di istruzioni, quindi ciascuna 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 i desktop, garantendo che le persone continueranno ad acquistare chip Intel e AMD. Intel e AMD hanno implementazioni molto diverse, eseguono solo lo stesso codice.

+1

Quindi, insieme alla risposta di bdonlan, i set di istruzioni sono pubblicati pubblicamente da Intel o AMD, poi l'altro crea un chip che supporta lo stesso (o qualche estensione di esso) di quel set di istruzioni? Le differenze riguardano quindi l'implementazione hardware specifica di tali istruzioni. E 'giusto? – romandas

+0

@romandas: Sì, la tua comprensione è corretta. I produttori di chip documentano il set di istruzioni, consentendo ad altri di copiarlo. – Zifre

+0

Ti suggerisco di aggiungere questa informazione alla tua risposta, o di fare in modo che bdonlan aggiunga il tuo al loro, così posso accettare la risposta unificata come definitiva. – romandas

6

In realtà hanno un contratto di cross-licensing. L'informazione e l'innovazione passarono da Intel a AMD negli anni '90, quando AMD era una seconda fonte di processori 386 e 486, e poi da AMD a Intel quando Intel adottò le estensioni x86-64.

6

Ricordare inoltre che i set di istruzioni per questi processori sono documentati pubblicamente; in genere un fornitore inventerà una nuova serie di istruzioni e una o due generazioni dopo l'altro produttore implementerà le estensioni compatibili. In quanto tale, piuttosto che in IF 386 .... hai qualcosa in più sulla falsariga di SE SSE4 È SUPPORTATO ..., senza riguardo per il fornitore specifico.

+0

Giusto, queste sono in genere chiamate CPUID avanzate. –

+0

+1 per una buona risposta di supporto; Ho chiesto a Zifre di aggiungere queste informazioni alla loro risposta. – romandas

1

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, esistono 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 verifiche di runtime per utilizzare queste funzionalità quando disponibili.

Problemi correlati