Perché i dispositivi relativamente più semplici come i microcontrollori sono molto più lenti delle CPU?


25

Dato lo stesso numero di stadi della pipeline e lo stesso nodo di produzione (diciamo 65 nm) e la stessa tensione, i dispositivi semplici dovrebbero funzionare più velocemente di quelli più complicati. Inoltre, la fusione di più fasi della pipeline in una non dovrebbe rallentare di un fattore più grattoso del numero di fasi.

Ora prendi una CPU di cinque anni, che esegue 14 stadi della pipeline a 2,8 GHz. Supponiamo che uno unisce le fasi; che rallenterebbe a meno di 200 MHz. Ora aumenta la tensione e riduce il numero di bit per parola; ciò accelererebbe effettivamente le cose.

Ecco perché non capisco perché molti microcontrollori attualmente fabbricati, come AVL, funzionino a velocità abissale (come 20 MHz a 5 V), anche se CPU molto più complicate prodotte anni fa erano in grado di funzionare 150 volte più velocemente o 10 volte più velocemente se si rotolano tutti gli stadi della pipeline in uno, a 1,2 V-ish. Secondo i calcoli più grossolani sul retro, i microcontrollori, anche se fabbricati utilizzando la tecnologia obsoleta borderline, dovrebbero funzionare almeno 10 volte più velocemente a un quarto della tensione fornita.

Da qui la domanda: quali sono i motivi delle basse frequenze di clock del microcontrollore?


8
Un buon gruppo di microcontrollori sono fabbricati con tecnologia obsoleta al limite perché il fab è pagato.
Matt Young,

18
Energia. Tieni conto del consumo di energia di entrambe le CPU e saranno abbastanza vicini alle stesse prestazioni / watt, altrimenti il ​​micro vincerà.
Brian Drummond,

34
L'idea che più semplice == più veloce è semplicemente sbagliata. Gran parte della complessità di una moderna CPU cisc va in funzionalità per renderlo più veloce, come cache multi-livello, pipeline e previsione dei rami
PlasmaHH,

1
quella vecchia CPU non funziona da una piccola batteria per mesi / anni. ha usato la tecnologia all'avanguardia (leggi: costosa) per i suoi giorni. non ho dovuto aspettare il flash lento / economico per ogni istruzione. raramente è necessario che un mcu funzioni velocemente, possono prendere qualche nuova verilog per il bene degli sviluppatori e implementarlo su qualunque fonderia. Mi piace il commento della bicicletta contro la formula 1, la migliore, penso che la riassuma.
old_timer

14
20 MHz non è affatto lento. Siamo semplicemente coccolati dalle velocità GHz per PC, dove la maggior parte delle risorse viene utilizzata per il rendering di una grafica sofisticata. Puoi volare sulla Luna con un processore Kilohertz ...
vsz

Risposte:


66

Ci sono altri fattori che contribuiscono alla velocità.

  • Memoria: le prestazioni effettive sono spesso limitate dalla latenza della memoria. Le CPU Intel hanno grandi cache per compensare questo. I microcontrollori di solito no. La memoria flash è molto più lenta della DRAM.

  • Consumo energetico: questo è spesso un grosso problema nelle applicazioni integrate. Le CPU Intel effettive a 200 MHz consumavano più di 10 watt (spesso molto di più) e avevano bisogno di un grande dissipatore di calore e di una ventola. Ciò richiede spazio e denaro e non conta nemmeno la logica e la memoria esterne che ne derivano. Un AVR a 20 MHz richiede circa 0,2 watt, che include tutto il necessario. Ciò è anche correlato al processo: i transistor più veloci tendono a perdere.

  • Condizioni operative: come sottolinea Dmitry nei commenti, molti microcontrollori possono operare su un ampio intervallo di tensione e temperatura. Quel ATMega che ho menzionato sopra funziona da -40 ° C a 85 ° C e può essere conservato in qualsiasi punto da -65 ° C a 150 ° C. (Altre MCU funzionano fino a 125 ° C o anche a 155 ° C.) La tensione VCC può essere compresa tra 2,7 V e 5,5 V (5 V +/- 10% per le massime prestazioni). Questa scheda tecnica Core i7 è difficile da leggere poiché tagliano il VCC consentito durante la produzione, ma le tolleranze di tensione e temperatura sono certamente più strette - tolleranza di tensione ~ 3% e temperatura di giunzione massima di 105 ° C. (Minimo 5 ° C, ma quando stai tirando> 100 amp, le temperature minime non sono davvero un problema.)

  • Numero di gate: più semplice non è sempre più veloce. Se così fosse, Intel non avrebbe bisogno di architetti di CPU! Non è solo pipeline; hai anche bisogno di cose come una FPU ad alte prestazioni. Questo aumenta il prezzo. Molte MCU di fascia bassa hanno CPU di soli numeri interi per questo motivo.

  • Budget area die: i microcontrollori devono adattare molte funzionalità in un die, che spesso include tutta la memoria utilizzata per l'applicazione. (SRAM e il flash NOR affidabile sono piuttosto grandi.) Le CPU del PC parlano con memoria e periferiche off-chip.

  • Processo: questi AVR da 5 V sono realizzati con un antico processo a basso costo. Ricorda, sono stati progettati da zero per essere economici. Intel vende prodotti di consumo a margini elevati utilizzando la migliore tecnologia che il denaro può comprare. Intel vende anche CMOS puro. I processi MCU devono produrre memoria flash su chip, il che è più difficile.

Molti dei suddetti fattori sono correlati.

Oggi puoi acquistare microcontroller a 200 MHz ( ecco un esempio ). Certo, costano dieci volte di più di quegli ATMegas a 20 MHz ...

La versione breve è che la velocità è più complicata della semplicità e i prodotti economici sono ottimizzati per la convenienza, non per la velocità.


11
Non dimenticare la robustezza: una CPU tipica non funzionerà se la tensione di alimentazione cambia di oltre il 5% circa, mentre un ATMega funziona da qualsiasi cosa nella gamma 1,8-5,5 V a 4 MHz.
Dmitry Grigoryev,

1
@DmitryGrigoryev Ottimo punto! Ho aggiornato la mia risposta.
Adam Haun,

25

Un importante motivo tecnico alla base delle basse velocità è che le MCU economiche / di piccole dimensioni utilizzano solo la memoria flash su chip per l'archiviazione del programma (ovvero non vengono eseguite dalla RAM).

I piccoli MCU generalmente non memorizzano nella cache la memoria del programma, quindi devono sempre leggere un'istruzione da Flash prima di eseguirla, ogni ciclo. Ciò fornisce prestazioni deterministiche e # cicli / operazioni, è solo più economico / più semplice ed evita problemi simili a quelli di un PC in cui codice e dati vengono mescolati creando un nuovo set di minacce da overflow del buffer, ecc.

La latenza della lettura dalla memoria flash (nell'ordine di 50-100 ns) è molto più lenta della lettura da SRAM o DRAM (nell'ordine di 10 ns o inferiore) e tale latenza deve essere sostenuta ad ogni ciclo, limitando la velocità di clock del parte.


4
Anche la potenza (e quindi il calore) aumenta più che linearmente con la frequenza.
Kimberly W,

1
Non penso che la lettura dal flash sia vicino a 100 ns, vero? IIRC è due ordini di grandezza più grandi. Tuttavia, se il controller flash contiene una piccola cache DRAM e il codice non è troppo ramificato, la percentuale di hit della cache può essere molto elevata (90% +), quindi la latenza media può essere molto più bassa.
Salterio,

2
Questo foglio dati AT91SAM7S che ho aperto dice per il suo flash interno "Tempo di accesso rapido, accesso a ciclo singolo a 30 MHz in condizioni peggiori" per il suo flash interno. Sono 33ns. E ha una dword di buffer prefetch. Off-die Flash potrebbe infatti avere una latenza più elevata.
pjc50,

1
@Jamil Non ricordo la formula esatta, ma credo che fosse quadrata di frequenza.
Jan Dorniak,

22

Perché le persone vanno in bicicletta o in una piccola moto quando si possiede un'auto di Formula 1? Sicuramente deve essere meglio guidare diciamo 300 km / he arrivare ovunque all'istante?

Per dirla semplicemente, non c'è bisogno di essere più veloci di loro. Voglio dire, certo che ci sono dei microcontrollori un po 'più veloci che abilitano alcune cose, ma cosa farai per dire un distributore che è in uso continuo per forse 1 ora al giorno? Che cosa hai intenzione di fare in un telecomando per una TV?

D'altra parte, hanno altre importanti capacità, come un basso consumo energetico, essendo MOLTO più semplice da programmare e così via. Fondamentalmente, non sono processori e fanno cose diverse.


12
@Michael Dove hai preso l'idea semplice = veloce?
Matt Young,

3
@Michael Una bicicletta è molto più semplice di un'auto, ma è ancora più lenta. In ogni caso, Matt ha ragione. Qualcosa di semplice non è automaticamente veloce. Vale a dire, qualcosa di veloce sarà complicato, solo per le considerazioni necessarie per le frequenze più alte.
AndrejaKo

2
I processori CISC ad alte prestazioni tendono a fornire molte più istruzioni rispetto ai semplici processori integrati. Stanno facendo molto più lavoro in parallelo, quindi sono sia più complessi che più veloci.
Kimberly W,

2
@Michael $ 1 potrebbe essere lussuosamente costoso per alcune applicazioni, ho letto che i microcontroller nelle schede micro SD costano circa 19 centesimi
Xen2050

2
@Michael "questa è l'idea alla base delle architetture RISC: i compiti semplici possono essere gestiti più velocemente di quelli complicati" No! Le architetture RISC moderne sono estremamente complesse perché devono introdurre più istruzioni (come SIMD) e supportare più funzionalità come superscalar, hyperthreading, esecuzione fuori ordine ... La loro complessità può facilmente superare le architetture CISC. Oggi i MIPS hanno centinaia o migliaia di istruzioni. "CISC contro RISC è in gran parte un dibattito storico"
phuclv,

13

Esistono molti controller ARM che funzionano a centinaia di MHz o più. Chi ha bisogno di un PIC a 500 MHz ed è disposto a pagare abbastanza per parte per giustificare maschere da milioni di dollari per un processo vicino allo stato dell'arte?

Secondo quanto riferito, il popolare ATmega328 è realizzato con tecnologia 350 nm, che è un po 'indietro rispetto alle ultime CPU Intel di produzione (14 nm per Skylake ).

Anche i controller a 8 bit più economici si sono lentamente aumentati di velocità e puoi ottenere controller PIC a 32 e 64 MHz (ad esempio PIC18F14K22) che funzionano ancora a 5 V (quest'ultimo è una considerazione del costo totale del sistema).

Una considerazione è che questi controller hanno un'architettura ottimizzata per spazi di memoria ridotti e velocità di clock basse. Una volta che inizi a raggiungere velocità di clock elevate, devi rigirare le cose con i prescaler, ecc.

C'è stato un tentativo fatto indietro nel tempo (fine degli anni '90) per produrre controller molto simili a PIC, con l'idea che il firmware potesse sostituire le periferiche se il microcontrollore fosse abbastanza veloce. Ad esempio, è possibile eseguire il bit bang di un UART. Non credo che abbiano avuto tutto quel successo commerciale - Scenix-> Ubicom-> Qualcomm (game over).


350 nm? Questo lo spiegherebbe. Non sapevo che nessuno avrebbe prodotto nulla usando la tecnologia di 20 anni.
Michael,

3
Alcuni di noi stanno ancora progettando (non solo usando) i CMOS serie 4000 che sono qualcosa come 3000nm.
Spehro Pefhany,

6
I processi precedenti sono anche potenzialmente utili per le persone che si occupano di ambienti con radiazioni o sistemi ad alta affidabilità che richiedono la tracciabilità.
Krunal Desai,

5
Gioco non finito: l'elica Parallax è una continuazione di questo concetto.
Dave Tweed

3
@Michael: Non è solo l'era della tecnologia. Anche le dimensioni contano. Le dimensioni più grandi del processo hanno tassi di difetto più bassi, il che significa minori scarti e quindi una resa maggiore, il che comporta un costo per chip inferiore. Se sei disposto a pagare $ 100 per una CPU (come i desktop), è giustificato il costo più elevato dovuto alla resa inferiore. Se sei disposto a pagare solo 50 centesimi, non è giustificato.
slebetman,

3

Immagina di voler produrre automobili. Un approccio consisterebbe nell'utilizzare sequenzialmente un gruppo di apparecchiature nella fabbrica, costruendo un'auto alla volta. Questo approccio può essere fatto con una modesta quantità di apparecchiature moderatamente complicate, così tante apparecchiature possono essere utilizzate per eseguire più di un passaggio. D'altra parte, gran parte dell'attrezzatura in fabbrica rimarrebbe comunque inattiva per la maggior parte del tempo.

Un altro approccio è quello di istituire una catena di montaggio, in modo che non appena l'attrezzatura che ha gestito il primo passaggio di produzione abbia completato l'operazione sulla prima vettura, possa procedere con l'operazione corrispondente sull'auto successiva. Cercare di riutilizzare un pezzo di equipaggiamento in più fasi del processo di fabbricazione sarebbe complicato, quindi nella maggior parte dei casi sarebbe meglio usare più pezzi di equipaggiamento ottimizzati ciascuno per svolgere un compito molto specifico (ad esempio se è necessario perforare 50 fori di 10 dimensioni diverse, quindi una configurazione di attrezzatura minima includerebbe un trapano con 10 punte e un meccanismo a cambio rapido, ma una linea di assemblaggio potrebbe avere 50 punte ciascuna con una punta installata in modo permanente e non è necessario un cambio rapido) .

Per cose come DSP o GPU, è possibile raggiungere velocità molto elevate relativamente a buon mercato perché la natura del lavoro da svolgere è molto coerente. Sfortunatamente, molte CPU devono essere in grado di gestire misture arbitrarie di istruzioni di diversa complessità. È possibile farlo in modo efficiente, ma richiede una logica di pianificazione molto complessa. In molte CPU moderne, la logica necessaria per "fare il lavoro" non è eccessivamente complicata o costosa, ma lo è la logica necessaria per coordinare tutto il resto.


2
Scusate se l'ho perso, ma che rilevanza ha questo rispetto alle CPU rispetto ai microcontrollori "più lenti"? Sembra concentrarsi solo su CPU e processori specializzati (in genere anche più veloci).
underscore_d

1
@underscore_d: il primo paragrafo riguarda i microcontrollori più semplici: sono come il piccolo negozio che costruisce un'auto alla volta. Il secondo paragrafo osserva che ci sono alcuni controller economici che possono eseguire molte operazioni molto rapidamente, ma sono limitati nel tipo di operazioni che possono fare. Ciò che è difficile è essere in grado di eseguire un mix arbitrario di operazioni sovrapponendole in modo significativo (ma altamente variabile). Se uno ha un sottosistema che su ogni ciclo può accettare due numeri e produrrà il prodotto di due numeri che sono stati inviati quattro cicli fa e ...
supercat

1
... un altro che accetterà su ogni ciclo due numeri e produrrà la somma di quelli che sono stati inviati due cicli fa, cercando di capire quando devono essere inviati i valori, quando i risultati saranno disponibili, quando le cose dovrebbero essere caricate e salvate ai registri, ecc. può diventare molto complicato, specialmente se si vuole evitare di riempire tutte le tubazioni per abbinare quella più lunga.
supercat

Grazie; quello lo chiarisce. Sì, ha senso che le veloci CPU per uso generico sostengano la maggior parte dei loro costi, sia finanziari che energetici, su "impalcature" - pipelining, cache, scheduling, controllo RAM, ecc. Cose che non sono solo proibitivamente costose ma spesso spesso non necessarie per i micro. Allo stesso modo, non smette mai di stupirmi di ciò che si può fare con una frequenza di clock relativamente piccola in un processore appositamente progettato per un'applicazione. Roba affascinante su entrambi i lati!
underscore_d

@underscore_d: l'architettura MIPS è stata progettata sul presupposto che i compilatori sarebbero responsabili di alcuni dei problemi di pianificazione, consentendo così di semplificare l'hardware. Il concetto non ha mai preso piede, penso, perché i nuovi processori spesso richiedono più stadi della pipeline rispetto a quelli più vecchi, ma il codice scritto per un processore con condutture più brevi non funzionerà su un processore con quelli più lunghi in assenza di interblocchi hardware.
supercat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.