CPU

Un'unità di elaborazione centrale (CPU) è una parte importante di ogni computer. La CPU invia segnali per controllare le altre parti del computer, quasi come il cervello controlla un corpo.

La CPU è una macchina elettronica che lavora su una lista di cose da fare al computer, chiamate istruzioni. Legge la lista delle istruzioni ed esegue (esegue) ognuna in ordine. Una lista di istruzioni che una CPU può eseguire è un programma per computer.

La velocità di clock, o velocità delle parti interne di una CPU, viene misurata in hertz (Hz). I moderni processori funzionano spesso così velocemente che si utilizzano invece i gigahertz (GHz). Un GHz è di 1.000.000.000.000 di cicli al secondo.

La maggior parte delle CPU utilizzate nei computer desktop (domestici) sono microprocessori realizzati da Intel o Advanced Micro Devices (di solito abbreviati in AMD). Alcune altre aziende che producono CPU sono ARM, IBM e AMD sotto ATI Technologies, che è il leader in questo momento. La maggior parte delle loro CPU sono usate in sistemi embedded per cose più specializzate, come nei telefoni cellulari, nelle automobili, nelle console di gioco, o nell'esercito.

Una CPU Pentium all'interno di un computer
Una CPU Pentium all'interno di un computer

Tipi di CPU

Nel XX secolo gli ingegneri hanno inventato molte architetture informatiche diverse. Oggi la maggior parte dei computer desktop utilizza CPU a 32 bit o a 64 bit. Le istruzioni in una CPU a 32 bit sono buone per gestire dati di 32 bit (la maggior parte delle istruzioni "pensa" a 32 bit in una CPU a 32 bit). Allo stesso modo, una CPU a 64 bit è brava a gestire dati di 64 bit (e spesso è anche brava a gestire dati a 32 bit). La dimensione dei dati che una CPU gestisce meglio è spesso chiamata dimensione della parola CPU. Molte vecchie CPU degli anni '70, '80 e dei primi anni '90 (e molti sistemi embedded moderni) hanno una dimensione di parola di 8 o 16 bit. Quando le CPU sono state inventate a metà del XX secolo, avevano molte dimensioni di parola diverse. Alcune avevano dimensioni di parola diverse per le istruzioni e i dati. Le dimensioni delle parole meno popolari hanno poi smesso di essere utilizzate.

La maggior parte delle CPU sono microprocessori. Ciò significa che la CPU è solo un singolo chip. Alcuni chip con microprocessori al loro interno contengono anche altri componenti, e sono "computer" completi a singolo chip. Questo è chiamato microcontrollore.

Registri

Quando la CPU esegue un programma per computer, ha bisogno di un posto in cui memorizzare i dati su cui operano le istruzioni (i dati che leggono e scrivono). Questa memorizzazione si chiama registro. Una CPU di solito ha molti registri. I registri devono essere molto veloci da accedere (da leggere e scrivere). Pertanto, essi fanno parte del chip della CPU stessa.

Memoria

Memorizzare tutti i dati nei registri renderebbe la maggior parte delle CPU troppo complicata (e molto costosa). Pertanto, i registri di solito memorizzano solo i dati su cui la CPU sta lavorando "al momento". Il resto dei dati utilizzati dal programma viene memorizzato nella RAM (memoria). Tranne che nei microcontrollori, la RAM è di solito memorizzata al di fuori della CPU in chip separati.

Quando la CPU vuole leggere o scrivere dati in RAM, emette un indirizzo su quei dati. Ogni byte nella RAM ha un indirizzo di memoria. La dimensione degli indirizzi è spesso la stessa della dimensione della parola: Una CPU a 32 bit utilizza indirizzi a 32 bit, ecc. Tuttavia, le CPU più piccole, come le CPU a 8 bit, utilizzano spesso indirizzi più grandi della dimensione della parola. Altrimenti la lunghezza massima del programma sarebbe troppo corta.

Poiché la dimensione degli indirizzi è limitata, anche la quantità massima di memoria è limitata. I processori a 32 bit di solito possono gestire solo fino a 4 GB di RAM. Questo è il numero di diversi byte che possono essere selezionati utilizzando un indirizzo a 32 bit (ogni bit può avere due valori-0 e 1- e 232 byte è di 4 GB). Un processore a 64 bit può gestire fino a 16 EB di RAM (16 exabyte, circa 16 miliardi di GB, ovvero 16 miliardi di byte). Il sistema operativo può limitarsi ad utilizzare quantità inferiori.

Le informazioni che vengono memorizzate nella RAM sono solitamente volatili. Ciò significa che scompaiono se il computer è spento.

Cache

Nei computer moderni, la RAM è molto più lenta dei registri, quindi l'accesso alla RAM rallenta i programmi. Per velocizzare gli accessi alla memoria, un tipo di memoria più veloce, chiamata cache, viene spesso messa tra la RAM e le parti principali della CPU. La cache è di solito una parte del chip della CPU stessa, ed è molto più costosa per byte rispetto alla RAM. La cache memorizza gli stessi dati della RAM, ma di solito è molto più piccola. Pertanto, tutti i dati utilizzati dal programma potrebbero non rientrare nella cache. La cache cerca di memorizzare dati che probabilmente saranno utilizzati molto. Gli esempi includono i dati usati di recente e i dati che si chiudono in memoria ai dati usati di recente.

Spesso ha senso avere una "cache per la cache", così come ha senso avere una cache per la RAM. Nel caching multilivello, ci sono molte cache, chiamate cache L1, cache L2 e così via. La cache L1 è la cache più veloce (e più costosa per byte) ed è "più vicina" alla CPU. La cache L2 è a un passo di distanza ed è più lenta della cache L1, ecc. La cache L1 può essere spesso vista come una cache per la cache L2, ecc.

Autobus

I bus per computer sono i fili utilizzati dalla CPU per comunicare con la RAM e gli altri componenti del computer. Quasi tutte le CPU hanno almeno un bus dati - utilizzato per leggere e scrivere dati - e un bus indirizzi - utilizzato per l'output degli indirizzi. Altri bus all'interno della CPU portano i dati a diverse parti della CPU.

Set di istruzioni

Un set di istruzioni (chiamato anche ISA - Instruction Set Architecture) è un linguaggio compreso direttamente da una particolare CPU. Questi linguaggi sono anche chiamati codice macchina o binario. Dicono come si dice alla CPU di fare cose diverse, come caricare i dati dalla memoria in un registro, o aggiungere i valori di due registri. Ogni istruzione in un set di istruzioni ha una codifica, che è il modo in cui l'istruzione è scritta come una sequenza di bit.

I programmi scritti in linguaggi di programmazione come C e C++ non possono essere eseguiti direttamente dalla CPU. Devono essere tradotti in codice macchina prima che la CPU possa eseguirli. Un compilatore è un programma per computer che esegue questa traduzione.

Il codice macchina è solo una sequenza di 0 e 1, il che rende difficile per gli esseri umani leggerlo. Per renderlo più leggibile, i programmi di codice macchina sono di solito scritti in linguaggio assembly. Il linguaggio assembly usa il testo invece degli 0 e degli 1: Si potrebbe scrivere "LD A,0" per caricare il valore 0 nel registro A per esempio. Un programma che traduce il linguaggio assembly in codice macchina è chiamato assembler.

Funzionalità

Ecco alcune delle cose fondamentali che una CPU può fare:

  • Leggere i dati dalla memoria e scrivere i dati in memoria.
  • Aggiungere un numero ad un altro numero.
  • Test per vedere se un numero è più grande di un altro numero.
  • Spostare un numero da un luogo ad un altro (ad esempio, da un registro ad un altro, o tra un registro e la memoria).
  • Saltare ad un altro posto nella lista delle istruzioni, ma solo se qualche test è vero (per esempio, solo se un numero è più grande di un altro).

Anche programmi molto complicati possono essere realizzati combinando molte semplici istruzioni come queste. Questo è possibile perché ogni istruzione richiede un tempo molto breve. Molte CPU oggi possono eseguire più di 1 miliardo (1.000.000.000.000) di istruzioni in un solo secondo. In generale, più una CPU può fare in un dato tempo, più veloce è. Un modo per misurare la velocità di un processore è il MIPS (Million Instructions Per Second). Anche i flop (Floating-point operations per second) e la velocità di clock della CPU (solitamente misurata in gigahertz) sono modi per misurare quanto lavoro può fare un processore in un certo tempo.

Una CPU è costruita con cancelli logici; non ha parti in movimento. La CPU di un computer è collegata elettronicamente ad altre parti del computer, come la scheda video o il BIOS. Un programma per computer può controllare queste periferiche leggendo o scrivendo numeri in posti speciali nella memoria del computer.

Condutture di istruzione

Ogni istruzione eseguita da una CPU viene solitamente eseguita in molti passaggi. Ad esempio, i passi per eseguire un'istruzione "INC A" (aumentare di uno il valore memorizzato nel registro A) su una semplice CPU potrebbero essere questi:

  • Leggere le istruzioni dalla memoria,
  • decodificare l'istruzione (capire cosa fa l'istruzione), e
  • aggiungere uno per registrare A.

Le diverse parti della CPU fanno queste diverse cose. Spesso è possibile eseguire alcuni passi da istruzioni diverse allo stesso tempo, il che rende la CPU più veloce. Per esempio, possiamo leggere un'istruzione dalla memoria nello stesso momento in cui decodifichiamo un'altra istruzione, poiché questi passi utilizzano moduli diversi. Si può pensare di avere molte istruzioni "all'interno della pipeline" in una sola volta. Nel migliore dei casi, tutti i moduli lavorano su istruzioni diverse contemporaneamente, ma questo non è sempre possibile.

Unità di gestione della memoria (MMU) e memoria virtuale

Le moderne CPU utilizzano spesso un'unità di gestione della memoria (MMU). Una MMU è un componente che traduce gli indirizzi della CPU in (solitamente) diversi indirizzi RAM. Quando si usa una MMU, gli indirizzi utilizzati in un programma non sono (di solito) gli indirizzi "reali" in cui sono memorizzati i dati. Questo è chiamato memoria virtuale (l'opposto della memoria "reale"). Di seguito sono elencati alcuni dei motivi per cui è bene avere una MMU:

  • Una MMU può "nascondere" la memoria di altri programmi da un programma. Ciò viene fatto non traducendo alcun indirizzo negli indirizzi "nascosti" mentre il programma è in esecuzione. Questo è un bene perché significa che i programmi non possono leggere e modificare la memoria di altri programmi, il che migliora la sicurezza e la stabilità. (I programmi non possono "spiarsi" a vicenda o "pestarsi i piedi").
  • Molte MMU possono rendere alcune parti della memoria non scrivibili, non leggibili o non eseguibili (il che significa che il codice memorizzato in quella parte di memoria non può essere eseguito). Questo può essere un bene per ragioni di stabilità e sicurezza, così come per altri motivi.
  • Le MMU consentono a diversi programmi di avere diverse "viste" della memoria. Questo è utile in molte situazioni diverse. Ad esempio, sarà sempre possibile avere il codice "principale" di un programma allo stesso indirizzo (virtuale) senza scontrarsi con altri programmi. È utile anche quando ci sono molti pezzi di codice diversi (da librerie) che sono condivisi tra i programmi.
  • Le MMU consentono di far apparire il codice delle librerie a indirizzi diversi ogni volta che viene eseguito un programma. Questo è un bene, perché non sapere dove si trovano le cose in memoria spesso rende più difficile per gli hacker far fare ai programmi cose cattive. Questa si chiama randomizzazione dello spazio degli indirizzi.
  • I programmi e i sistemi operativi avanzati possono usare trucchi con le MMU per evitare di dover copiare i dati tra i diversi posti in memoria.

Nuclei multipli

I processori multi-core sono diventati comuni all'inizio del 21° secolo. Ciò significa che hanno molti processori costruiti sullo stesso chip in modo da poter eseguire molte istruzioni contemporaneamente. Alcuni processori possono avere fino a trentadue core, come l'AMD Epyc 7601.

Produttori

Le seguenti aziende producono CPU per computer:

  • ARM
  • Intel
  • Dispositivi Micro Avanzati
  • MCST
  • SRISA
  • Microsistemi solari

Ulteriori informazioni

  • Microprocessore
  • ALU
  • Unità di esecuzione
  • Unità a virgola mobile
  • Intel
  • AMD

AlegsaOnline.com - 2020 / 2022 - License CC3