Come funzionano i microprocessori

  • Peter Tucker
  • 0
  • 3719
  • 18
I microprocessori sono il cuore di tutti i computer. Jorg Greuel / Getty Images

-Il computer che stai utilizzando per leggere questa pagina utilizza un file microprocessore per fare il suo lavoro. Il microprocessore è il cuore di qualsiasi computer normale, sia che si tratti di una macchina desktop, di un server o di un laptop. Il microprocessore che stai utilizzando potrebbe essere un Pentium, un K6, un PowerPC, uno Sparc o una qualsiasi delle tante altre marche e tipi di microprocessori, ma fanno tutti approssimativamente la stessa cosa più o meno allo stesso modo.

Un microprocessore, noto anche come a processore o unità di elaborazione centrale: è un motore di calcolo completo fabbricato su un singolo chip. Il primo microprocessore era l'Intel 4004, introdotto nel 1971. Il 4004 non era molto potente: tutto ciò che poteva fare era aggiungere e sottrarre, e poteva fare solo 4 bit alla volta. Ma è stato sorprendente che tutto fosse su un chip. Prima del 4004, gli ingegneri costruivano computer da raccolte di chip o da componenti discreti (transistor collegati uno alla volta). Il 4004 ha alimentato una delle prime calcolatrici elettroniche portatili.

- Se ti sei mai chiesto cosa stia facendo il microprocessore del tuo computer, o se ti sei mai chiesto quali sono le differenze tra i tipi di microprocessori, allora continua a leggere. In questo articolo imparerai come tecniche di logica digitale abbastanza semplici consentono a un computer di fare il suo lavoro, sia che stia giocando o controllando l'ortografia di un documento!

Contenuti
  1. Progressione del microprocessore: Intel
  2. Logica del microprocessore
  3. Memoria del microprocessore
  4. Istruzioni del microprocessore
  5. Prestazioni e tendenze del microprocessore
  6. Microprocessori a 64 bit
L'Intel 8080 è stato il primo microprocessore in un computer di casa.

Il primo microprocessore a trasformarlo in un computer domestico è stato l'Intel 8080, un computer completo a 8 bit su un chip, introdotto nel 1974. Il primo microprocessore a fare un vero salto nel mercato è stato l'Intel 8088, introdotto nel 1979 e incorporato nel PC IBM (apparso per la prima volta intorno al 1982). Se hai familiarità con il mercato dei PC e la sua storia, sai che il mercato dei PC è passato dall'8088 all'80286 all'80386 all'80486 dal Pentium al Pentium II al Pentium III al Pentium 4. Tutti questi i microprocessori sono realizzati da Intel e sono tutti miglioramenti al design di base dell'8088. Il Pentium 4 può eseguire qualsiasi pezzo di codice che girava sull'8088 originale, ma lo fa circa 5.000 volte più velocemente!

Dal 2004, Intel ha introdotto microprocessori con più core e milioni di transistor in più. Ma anche questi microprocessori seguono le stesse regole generali dei chip precedenti.

Ecco le differenze tra i diversi processori che Intel ha introdotto nel corso degli anni. Compilato dalla Guida di riferimento rapido del microprocessore Intel e dai punteggi di benchmark TSCP

Ulteriori informazioni sulla tabella in questa pagina:

  • Il Data è l'anno in cui il processore è stato introdotto per la prima volta. Molti processori vengono reintrodotti a velocità di clock più elevate per molti anni dopo la data di rilascio originale.
  • Transistor è il numero di transistor sul chip. Puoi vedere che il numero di transistor su un singolo chip è aumentato costantemente nel corso degli anni.
  • Micron è la larghezza, in micron, del filo più piccolo sul chip. Per fare un confronto, un capello umano ha uno spessore di 100 micron. Man mano che la dimensione della caratteristica sul chip diminuisce, il numero di transistor aumenta.
  • Velocità dell'orologio è la velocità massima alla quale il chip può essere sincronizzato. La velocità di clock avrà più senso nella sezione successiva.
  • Larghezza dati è la larghezza dell'ALU. Un ALU a 8 bit può aggiungere / sottrarre / moltiplicare / ecc. due numeri a 8 bit, mentre un ALU a 32 bit può manipolare numeri a 32 bit. Una ALU a 8 bit dovrebbe eseguire quattro istruzioni per aggiungere due numeri a 32 bit, mentre una ALU a 32 bit può farlo in un'unica istruzione. In molti casi, il bus dati esterno ha la stessa larghezza dell'ALU, ma non sempre. L'8088 aveva un ALU a 16 bit e un bus a 8 bit, mentre i moderni Pentium recuperano i dati a 64 bit alla volta per i loro ALU a 32 bit.
  • MIPS sta per "milioni di istruzioni al secondo" ed è una misura approssimativa delle prestazioni di una CPU. Le CPU moderne possono fare così tante cose diverse che le classificazioni MIPS perdono molto del loro significato, ma puoi ottenere un'idea generale della potenza relativa delle CPU da questa colonna.

Da questa tabella puoi vedere che, in generale, esiste una relazione tra velocità di clock e MIPS. La velocità di clock massima è una funzione del processo di produzione e dei ritardi all'interno del chip. Esiste anche una relazione tra il numero di transistor e MIPS. Ad esempio, l'8088 ha un clock a 5 MHz ma viene eseguito solo a 0,33 MIPS (circa un'istruzione ogni 15 cicli di clock). I processori moderni possono spesso eseguire a una velocità di due istruzioni per ciclo di clock. Questo miglioramento è direttamente correlato al numero di transistor sul chip e avrà più senso nella sezione successiva.

Cos'è un chip?

UN patata fritta è anche chiamato un circuito integrato. Generalmente si tratta di un piccolo e sottile pezzo di silicio su cui sono stati incisi i transistor che compongono il microprocessore. Un chip può essere grande quanto un pollice su un lato e può contenere decine di milioni di transistor. I processori più semplici potrebbero essere costituiti da poche migliaia di transistor incisi su un chip di pochi millimetri quadrati.

Processore Intel Pentium 4 Foto per gentile concessione di Intel Corporation

Per capire come funziona un microprocessore, è utile guardarsi dentro e conoscere la logica utilizzata per crearne uno. Nel processo puoi anche conoscere linguaggio assembly -- la lingua madre di un microprocessore e molte delle cose che gli ingegneri possono fare per aumentare la velocità di un processore.

Un microprocessore esegue una raccolta di istruzioni della macchina che dicono al processore cosa fare. Sulla base delle istruzioni, un microprocessore fa tre cose fondamentali:

  • Utilizzando la sua ALU (Arithmetic / Logic Unit), un microprocessore può eseguire operazioni matematiche come addizione, sottrazione, moltiplicazione e divisione. I microprocessori moderni contengono processori a virgola mobile completi in grado di eseguire operazioni estremamente sofisticate su numeri in virgola mobile di grandi dimensioni.
  • Un microprocessore può spostare i dati da una posizione di memoria a un'altra.
  • Un microprocessore può prendere decisioni e passare a una nuova serie di istruzioni basate su tali decisioni.

Possono esserci cose molto sofisticate che fa un microprocessore, ma queste sono le sue tre attività di base. Il diagramma seguente mostra un microprocessore estremamente semplice in grado di fare queste tre cose:

Questo è semplice quanto un microprocessore. Questo microprocessore ha:

  • Un indirizzo bus (che può essere 8, 16 o 32 bit di larghezza) che invia un indirizzo alla memoria
  • UN bus dati (che può essere 8, 16 o 32 bit di larghezza) che può inviare dati alla memoria o ricevere dati dalla memoria
  • Un RD (leggi e WR (scrivi) per dire alla memoria se vuole impostare o ottenere la posizione indirizzata
  • UN linea dell'orologio che consente a un impulso di clock di sequenziare il processore
  • UN reimpostare la riga che azzera il contatore del programma (o qualsiasi altra cosa) e riavvia l'esecuzione

Supponiamo che sia l'indirizzo che i bus dati abbiano una larghezza di 8 bit in questo esempio.

Ecco i componenti di questo semplice microprocessore:

  • I registri A, B e C sono semplicemente dei fermi fatti di flip-flop. (Vedere la sezione sui "latch attivati ​​dal fronte" in Come funziona la logica booleana per i dettagli.)
  • Il blocco degli indirizzi è proprio come i registri A, B e C.
  • Il contatore del programmaèun latch con la capacità extra di aumentare di 1 quando viene detto di farlo, e anche di azzerare quando viene detto di farlo.
  • L'ALU potrebbe essere semplice come un sommatore a 8 bit (vedere la sezione sui sommatori in Come funziona la logica booleana per i dettagli), oppure potrebbe essere in grado di aggiungere, sottrarre, moltiplicare e dividere valori a 8 bit. Assumiamo quest'ultimo qui.
  • Il registro del test è un latch speciale che può contenere i valori dei confronti eseguiti nell'ALU. Un ALU può normalmente confrontare due numeri e determinare se sono uguali, se uno è maggiore dell'altro, ecc. Il registro di prova può anche normalmente contenere un bit di riporto dall'ultimo stadio del sommatore. Memorizza questi valori in flip-flop e quindi il decodificatore di istruzioni può utilizzare i valori per prendere decisioni.
  • Ci sono sei caselle contrassegnate con "3 stati" nel diagramma. Questi sono buffer a tre stati. Un buffer a tre stati può passare un 1, uno 0 o può essenzialmente disconnettere la sua uscita (immagina un interruttore che scolleghi completamente la linea di uscita dal filo verso cui si sta dirigendo l'uscita). Un buffer a tre stati consente a più uscite di connettersi a un filo, ma solo una di esse può effettivamente pilotare un 1 o uno 0 sulla linea.
  • Il registro delle istruzioni e il decodificatore delle istruzioni sono responsabili del controllo di tutti gli altri componenti.

Sebbene non siano mostrati in questo diagramma, ci sarebbero linee di controllo dal decodificatore di istruzioni che:

  • Indica al registro A di memorizzare il valore attualmente sul bus dati
  • Indica al registro B di memorizzare il valore attualmente sul bus dati
  • Indica al registro C di memorizzare il valore attualmente emesso dall'ALU
  • Indica al registro del contatore di programma di memorizzare il valore attualmente sul bus dati
  • Indica al registro degli indirizzi di memorizzare il valore attualmente sul bus dati
  • Indica al registro delle istruzioni di memorizzare il valore attualmente sul bus dati
  • Dite al contatore del programma di incrementare
  • Dite al contatore del programma di azzerare
  • Attiva uno dei sei buffer a tre stati (sei linee separate)
  • Dite all'ALU quale operazione eseguire
  • Dire al registro di prova di agganciare i bit di prova dell'ALU
  • Attiva la linea RD
  • Attiva la linea WR

Entrano nel decodificatore dell'istruzione i bit del registro di test e della linea di clock, nonché i bit del registro delle istruzioni.

Chip ROM

La sezione precedente ha parlato dell'indirizzo e dei bus dati, nonché delle linee RD e WR. Questi bus e linee si collegano alla RAM o alla ROM, generalmente entrambe. Nel nostro microprocessore di esempio, abbiamo un bus indirizzi largo 8 bit e un bus dati largo 8 bit. Ciò significa che il microprocessore può indirizzare (28) 256 byte di memoria e può leggere o scrivere 8 bit di memoria alla volta. Supponiamo che questo semplice microprocessore abbia 128 byte di ROM a partire dall'indirizzo 0 e 128 byte di RAM a partire dall'indirizzo 128.

ROM sta per memoria di sola lettura. Un chip ROM è programmato con una raccolta permanente di byte preimpostati. Il bus degli indirizzi dice al chip ROM quale byte prendere e posizionare sul bus dati. Quando la linea RD cambia stato, il chip ROM presenta il byte selezionato sul bus dati.

RAM sta per memoria ad accesso casuale. La RAM contiene byte di informazioni e il microprocessore può leggere o scrivere su quei byte a seconda che venga segnalata la linea RD o WR. Un problema con i chip RAM di oggi è che dimenticano tutto una volta che si spegne l'alimentazione. Ecco perché il computer ha bisogno della ROM.

Chip di RAM

A proposito, quasi tutti i computer contengono una certa quantità di ROM (è possibile creare un semplice computer che non contenga RAM - molti microcontrollori lo fanno posizionando una manciata di byte RAM sul chip del processore stesso - ma generalmente impossibile da creare uno che non contiene ROM). Su un PC, la ROM è chiamata BIOS (Basic Input / Output System). Quando il microprocessore si avvia, inizia a eseguire le istruzioni che trova nel BIOS. Le istruzioni del BIOS fanno cose come testare l'hardware nella macchina, e poi va al disco rigido per recuperare il file settore di avvio (vedi Come funzionano i dischi rigidi per i dettagli). Questo settore di avvio è un altro piccolo programma e il BIOS lo memorizza nella RAM dopo averlo letto dal disco. Il microprocessore inizia quindi a eseguire le istruzioni del settore di avvio dalla RAM. Il programma del settore di avvio dirà al microprocessore di recuperare qualcos'altro dal disco rigido nella RAM, che il microprocessore esegue quindi e così via. Questo è il modo in cui il microprocessore carica ed esegue l'intero sistema operativo.

Anche il microprocessore incredibilmente semplice mostrato nell'esempio precedente avrà un insieme abbastanza ampio di istruzioni che può eseguire. La raccolta di istruzioni è implementata come pattern di bit, ognuno dei quali ha un significato diverso quando viene caricato nel registro delle istruzioni. Gli esseri umani non sono particolarmente bravi a ricordare schemi di bit, quindi viene definita una serie di parole brevi per rappresentare i diversi schemi di bit. Questa raccolta di parole è chiamata linguaggio assembly del processore. Un assemblatore può tradurre le parole nei loro modelli di bit molto facilmente, quindi l'output dell'assemblatore viene posto in memoria per l'esecuzione del microprocessore.

Ecco il set di istruzioni in linguaggio assembly che il designer potrebbe creare per il semplice microprocessore nel nostro esempio:

  • LOADA mem - Carica il registro A dall'indirizzo di memoria
  • LOADB mem - Carica il registro B dall'indirizzo di memoria
  • CONB con - Carica un valore costante nel registro B
  • SALVAB mem - Salva il registro B nell'indirizzo di memoria
  • SAVEC mem - Salva il registro C nell'indirizzo di memoria
  • INSERISCI - Aggiungi A e B e salva il risultato in C
  • SUB - Sottrai A e B e memorizza il risultato in C.
  • MUL - Moltiplica A e B e memorizza il risultato in C.
  • DIV - Dividi A e B e salva il risultato in C
  • COM - Confronta A e B e salva il risultato nel test
  • JUMP addr - Vai a un indirizzo
  • JEQ addr - Salta, se uguale, all'indirizzo
  • JNEQ addr - Salta, se non uguale, all'indirizzo
  • JG addr - Salta, se maggiore di, all'indirizzo
  • JGE addr - Salta, se maggiore o uguale, all'indirizzo
  • JL addr - Salta, se inferiore a, all'indirizzo
  • JLE addr - Salta, se minore o uguale, all'indirizzo
  • FERMARE - Interrompi l'esecuzione

Se hai letto Come funziona la programmazione C, allora sai che questo semplice pezzo di codice C calcolerà il fattoriale di 5 (dove il fattoriale di 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):


a = 1; f = 1; while (a <= 5) f = f * a; a = a + 1;

Al termine dell'esecuzione del programma, la variabile f contiene il fattoriale di 5.

Linguaggio assembly

UN Compilatore C. traduce questo codice C in linguaggio assembly. Supponendo che la RAM inizi dall'indirizzo 128 in questo processore e la ROM (che contiene il programma in linguaggio assembly) inizi dall'indirizzo 0, quindi per il nostro semplice microprocessore il linguaggio assembly potrebbe assomigliare a questo:


// Supponiamo che a sia all'indirizzo 128 // Supponiamo che F sia all'indirizzo 1290 CONB 1 // a = 1; 1 SAVEB 1282 CONB 1 // f = 1; 3 SAVEB 1294 LOADA 128 // se a> 5 il salto a 175 CONB 56 COM7 JG 178 LOADA 129 // f = f * a; 9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a = a + 1; 13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // torna indietro a if17 STOP

rom

Quindi ora la domanda è: "Come appaiono tutte queste istruzioni nella ROM?" Ciascuna di queste istruzioni in linguaggio assembly deve essere rappresentata da un numero binario. Per semplicità, supponiamo che a ciascuna istruzione in linguaggio assembly venga assegnato un numero univoco, in questo modo:

  • LOADA - 1
  • LOADB - 2
  • CONB - 3
  • SALVAB - 4
  • Memoria SAVEC - 5
  • AGGIUNGI - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • JUMP addr - 11
  • JEQ addr - 12
  • JNEQ addr - 13
  • JG addr - 14
  • JGE addr - 15
  • JL addr - 16
  • JLE addr - 17
  • STOP - 18

I numeri sono noti come codici operativi. Nella ROM, il nostro programmino sarebbe simile a questo:


// Supponiamo che a sia all'indirizzo 128 // Supponiamo che F sia all'indirizzo 129Addr opcode / value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430831 18 // STOP

Puoi vedere che sette righe di codice C sono diventate 18 righe di linguaggio assembly e sono diventate 32 byte nella ROM.

Decodifica

Il decodificatore di istruzioni deve trasformare ciascuno dei codici operativi in ​​un insieme di segnali che guidano i diversi componenti all'interno del microprocessore. Prendiamo l'istruzione ADD come esempio e guardiamo cosa deve fare:

  1. Durante il primo ciclo di clock, dobbiamo effettivamente caricare l'istruzione. Pertanto il decodificatore dell'istruzione deve: attivare il buffer a tre stati per il contatore del programma attivare la linea RD attivare il buffer a tre stati dei dati in entrata agganciare l'istruzione nel registro delle istruzioni
  2. Durante il secondo ciclo di clock, l'istruzione ADD viene decodificata. Bisogna fare pochissimo: impostare il funzionamento dell'ALU per agganciare in aggiunta l'uscita dell'ALU nel registro C
  3. Durante il terzo ciclo di clock, il contatore del programma viene incrementato (in teoria questo potrebbe essere sovrapposto al secondo ciclo di clock).

Ogni istruzione può essere suddivisa in un insieme di operazioni in sequenza come queste che manipolano i componenti del microprocessore nell'ordine corretto. Alcune istruzioni, come questa istruzione ADD, potrebbero richiedere due o tre cicli di clock. Altri potrebbero richiedere cinque o sei cicli di clock.

Il numero di transistor disponibile ha un enorme effetto sulle prestazioni di un processore. Come visto in precedenza, una tipica istruzione in un processore come un 8088 ha richiesto 15 cicli di clock per essere eseguita. A causa del design del moltiplicatore, sono stati necessari circa 80 cicli solo per eseguire una moltiplicazione a 16 bit sull'8088. Con più transistor, diventano possibili moltiplicatori molto più potenti capaci di velocità a ciclo singolo.

Più transistor consentono anche una tecnologia chiamata pipelining. In un'architettura pipeline, l'esecuzione delle istruzioni si sovrappone. Quindi, anche se potrebbero essere necessari cinque cicli di clock per eseguire ciascuna istruzione, possono esserci cinque istruzioni in varie fasi di esecuzione simultaneamente. In questo modo sembra che un'istruzione completi ogni ciclo di clock.

Molti processori moderni dispongono di più decoder di istruzioni, ciascuno con la propria pipeline. Ciò consente più flussi di istruzioni, il che significa che più di un'istruzione può essere completata durante ogni ciclo di clock. Questa tecnica può essere piuttosto complessa da implementare, quindi richiede molti transistor.

tendenze

La tendenza nella progettazione del processore è stata principalmente verso ALU a 32 bit completi con processori a virgola mobile veloci integrati ed esecuzione pipeline con più flussi di istruzioni. La novità nella progettazione del processore sono le ALU a 64 bit e ci si aspetta che le persone dispongano di questi processori nei loro PC domestici nel prossimo decennio. C'è stata anche una tendenza verso istruzioni speciali (come le istruzioni MMX) che rendono alcune operazioni particolarmente efficienti e l'aggiunta del supporto della memoria virtuale hardware e della cache L1 sul chip del processore. Tutte queste tendenze aumentano il numero di transistor, portando ai multi-milioni di centrali di transistor disponibili oggi. Questi processori possono eseguire circa un miliardo di istruzioni al secondo!

Foto per gentile concessione di AMD

I processori a sessantaquattro bit sono con noi dal 1992 e nel 21 ° secolo hanno iniziato a diventare mainstream. Sia Intel che AMD hanno introdotto chip a 64 bit e il Mac G5 sfoggia un processore a 64 bit. I processori a 64 bit hanno ALU a 64 bit, registri a 64 bit, bus a 64 bit e così via.

Uno dei motivi per cui il mondo ha bisogno di processori a 64 bit è a causa del loro spazi di indirizzi allargati. I chip a trentadue bit sono spesso limitati a un massimo di 2 GB o 4 GB di accesso alla RAM. Sembra molto, dato che la maggior parte dei computer domestici attualmente utilizza solo da 256 MB a 512 MB di RAM. Tuttavia, un limite di 4 GB può essere un grave problema per le macchine server e le macchine che eseguono database di grandi dimensioni. E anche le macchine domestiche inizieranno a sbattere contro il limite di 2 GB o 4 GB molto presto se le tendenze attuali continuano. Un chip a 64 bit non ha nessuno di questi vincoli perché uno spazio di indirizzi RAM a 64 bit è essenzialmente infinito per il prossimo futuro: 2 ^ 64 byte di RAM sono qualcosa nell'ordine di un miliardo di gigabyte di RAM.

Con un bus di indirizzi a 64 bit e bus di dati ampi e ad alta velocità sulla scheda madre, le macchine a 64 bit offrono anche velocità di I / O (input / output) più elevate per cose come unità disco rigido e schede video. Queste funzionalità possono aumentare notevolmente le prestazioni del sistema.

I server possono sicuramente trarre vantaggio da 64 bit, ma per quanto riguarda gli utenti normali? Al di là della soluzione RAM, non è chiaro se un chip a 64 bit offra agli "utenti normali" dei vantaggi reali e tangibili al momento. Possono elaborare i dati (dati molto complessi contengono molti numeri reali) più velocemente. Le persone che fanno l'editing video e le persone che fanno l'editing fotografico su immagini molto grandi beneficiano di questo tipo di potenza di calcolo. Anche i giochi di fascia alta ne trarranno vantaggio, una volta ricodificati per sfruttare le funzionalità a 64 bit. Ma l'utente medio che legge la posta elettronica, naviga sul Web e modifica documenti di Word non utilizza realmente il processore in quel modo.

Per ulteriori informazioni sui microprocessori e argomenti correlati, controllare i collegamenti nella pagina successiva.

articoli Correlati

  • Quiz sulla CPU
  • Perché ci sono limiti alla velocità della CPU?
  • Come funzionano i semiconduttori
  • Come funzionano i PC
  • Come funziona la programmazione C.
  • Come funziona Java
  • Come funzionano i sistemi operativi
  • Come funziona la memoria del computer
  • Come funzioneranno i computer quantistici
  • Come funzioneranno i computer DNA

Altri ottimi link

  • Webopedia: microprocessore
  • Fare clic su CPU
  • Aggiornamenti del processore
  • Confronti CPU di sesta generazione
  • Confronti CPU di settima generazione
  • Punteggi benchmark TSCP



Nessun utente ha ancora commentato questo articolo.

Gli articoli più interessanti su segreti e scoperte. Molte informazioni utili su tutto
Articoli su scienza, spazio, tecnologia, salute, ambiente, cultura e storia. Spiegare migliaia di argomenti in modo da sapere come funziona tutto