Riesci a basare un computer su un microcontrollore a 32 bit?


9

Tutti noi abbiamo (principalmente) macchine a 32 bit nelle nostre case. Ma le macchine a 32 bit hanno un microprocessore. Stavo leggendo un articolo su ARM Cortex. È un microcontrollore a 32 bit. Ora questo ha incuriosito una domanda dentro di me. I microcontrollori sono stati fatti per ridurre i circuiti esterni attorno a un microprocessore, quindi i microprocessori sono diventati più potenti mentre i microcontrollori sono rimasti lì in forma di 8 bit per troppo tempo. Ma ora che abbiamo microcontrollori a 32 bit non possiamo avere un computer basato su quelle cose?


Risposte:


11

Dipende da come si definisce "computer".

All'estremità più piccola della scala, quelli che potresti chiamare microcontroller tradizionali, non ottieni la gestione della memoria e raramente vedi più RAM della piccola quantità incorporata nel chip. Devo ammettere di avere pochissime conoscenze sull'architettura dei microcontrollori più capaci ora disponibili, ma l'esistenza (o la mancanza di queste) di queste funzionalità è probabilmente la chiave per distinguere tra un dispositivo più adatto per applicazioni integrate o per il calcolo per scopi generali .

Per "gestione della memoria" mi riferisco alla capacità di eseguire programmi in spazi di indirizzi virtuali e mapparli alla RAM fisica disponibile nel sistema, una funzione svolta da quella che normalmente viene chiamata unità di gestione della memoria (MMU).

Senza una MMU, se si tenta di eseguire più processi, tutti sono costretti a condividere un singolo spazio di indirizzi e ciò significa che, a meno che tutti i processi coinvolti non aderiscano al proprio schema di allocazione della memoria, un processo può facilmente arrestarne un altro. Quindi, se hai il controllo totale della progettazione di tutti i processi, come con un sistema incorporato, questo non è un problema. Tuttavia, se stai cercando di supportare il calcolo per scopi generali, non puoi garantire che tutto il codice che verrà eseguito rispetterà lo schema di allocazione della memoria e che il sistema sarà piuttosto fragile.

Anche la mancanza di RAM non è un grosso problema per i sistemi embedded, (1) perché di solito c'è molto flash e (2) non essere un computer per uso generico significa che non devi preoccuparti di eseguire programmi non previsti sul per un utente. Sai in anticipo la somma totale di tutto il software che verrà eseguito sul sistema e hai solo bisogno di RAM per le variabili per quel software. Quando provi a trasformare il tuo sistema in un computer per scopi generici, tuttavia, gli utenti si aspettano di essere in grado di eseguire ciò che si adatta a loro, e questo richiede RAM.

Ora, è assolutamente corretto eseguire calcoli generici su dispositivi senza MMU e non molta memoria. Il PC IBM 128K RAM originale, basato su 8088 (16 bit) se ne è andato via, purché fosse necessario eseguire solo un programma alla volta.

Quindi, se vuoi definire il "computer" come qualcosa di simile alla tecnologia del 1982, la risposta è sicuramente sì. O se hai un sistema chiuso in cui puoi mitigare i problemi di non avere una MMU e / o molto RAM (ad es. Telefoni cellulari) controllando attentamente la progettazione del software, anche sì. Oppure, se il tuo microcontrollore ha un MMU incorporato e gob di RAM (o può adattarli esternamente), dovresti essere in grado di costruire un sistema che assomigli di più ai computer attuali.


Gli sviluppi nei compilatori just-in-time per cose come Java rendono una MMU forse meno necessaria di quanto sarebbe stata storicamente. In assenza di bug relativi a JIT, si potrebbe avere l'elaborazione multipla indipendente che esegue piattaforme indipendenti su macchine virtuali Java senza MMU e farle isolare l'una dall'altra, poiché la JIT non genererà istruzioni per un programma che accederebbe in modo inappropriato alla memoria usato dall'altro.
supercat,

16

Assolutamente! Dai un'occhiata a quasi tutti i cellulari là fuori. Ad esempio, Motorola Droid utilizza il microcontrollore TI OMAP ARM basato su Android con sistema operativo Linux. Fondamentalmente, c'è un sistema operativo per computer completo e molti altri gadget. Su alcuni dei prodotti che il mio client crea, usano FreeScale PowerQuicc I & II processore / controller a 32 bit che può eseguire Linux su di essi. I PowerQuicc hanno fondamentalmente un core PowerPC insieme a un processore RISC separato per gestire tutte le periferiche in modo altamente configurabile. È un microcontrollore glorificato.

Devi anche ricordare che anni fa i computer non funzionavano con processori a 32 bit, ma più come processori a 8 bit (a 4 bit allora) come Commodore 64. Quindi sono passati a 16 bit, 32 bit , ecc. Non c'è davvero molta differenza tra un microcontrollore e un microprocessore di architettura e velocità di bit equivalenti. I microcontrollori di solito mancano dell'unità a virgola mobile, ma ciò può essere compensato con la matematica a punto fisso. Ad esempio, il processore Motorola 68000 originale (16 bit) è stato utilizzato per alimentare quei vecchi computer Macintosh e quindi è stato trasformato in una versione di microcontrollore per molte applicazioni elettroniche integrate per anni.

È necessario esaminare il ruolo del microcontrollore per capire come viene utilizzato. Normalmente, quando si progetta con un microcontrollore, si ha in mente un'applicazione altamente specializzata e si sta cercando di adattarla in uno spazio più piccolo rispetto a una PC Tower. Considerando che, il computer ha uno scopo molto generale: ridurre i numeri ed elaborare l'input dell'utente. Quando cerchi un microcontrollore, ne cerchi uno che supporti il ​​tipo di interfaccia che stai costruendo per la tua applicazione. Hai bisogno di 3 porte USB, 2 Ethernet, 2 UART, porta SPI, ATM e interfaccia CAN? Alcune di queste interfacce non arrivano su un tipico computer come SPI, ATM e CAN e un microcontrollore le ha integrate per ridurre lo spazio sulla scheda. Puoi guardare i microcontrollori come processori progettati per una soluzione specifica.


Non credo che nessun "computer generico" abbia mai usato qualcosa di più piccolo di un processore a 8 bit. I computer di uso generale devono essere in grado di accedere a RAM sufficiente per contenere un programma utilizzabile e non conosco alcun computer a quattro bit che disponga di un archivio di codici RAM di dimensioni utilizzabili.
supercat

forse non commercialmente, ma molti hacker hanno incluso mio nonno. Aveva un computer a 4 bit in esecuzione nel suo laboratorio prima che Commodore 64 e TRS-80 fossero popolari. Aveva anche RAM (pile di DIP).
Jay Atkinson,

Hai qualche documentazione su macchine con architettura Von-Neumann a 4 bit costruite fisicamente?
supercat,

5

Possiamo sicuramente. L'iPad, ad esempio, utilizza un processore ARM Cortex A8 per il suo cervello.


2
Questo è un microprocessore, non un microcontrollore, come nota di seguito JPC
Kortuk,

3

Vale la pena notare che i citati ARM (OMAP e A8) sono microprocessori senza memoria Flash e RAM (non del tutto vero per A8). Il microcontrollore Cortex-M3 è più piccolo, ha una piccola memoria integrata e un accesso più facile alle periferiche.

C'è un grande divario (dal punto di vista delle prestazioni e delle caratteristiche) tra loro.


+1 per indicare la differenza tra la serie Cortex-A e Cortex-M ...
Johan,

1
il microcontrollore ha flash e ram incorporati. I microprocessori hanno la loro memoria esternamente.
Kortuk,


2

Non sto cercando di resuscitare un vecchio thread, ma il mio Zaurus SL5500 ha eseguito Linux incorporato su un processore ARM con goccioline di RAM e ulteriori goccioline di memoria tramite slot CF e SD. Per quanto ne so, la MMU è stata implementata principalmente nel software (ha comunque senso per un sistema Linux). L'elaborazione per scopi generici non era solo possibile, ma resa completamente disponibile tramite software di terze parti, compilatori e una shell di comando flessibile che forniva la maggior parte delle utilità e funzionalità standard * nix.

Non era il più veloce computer GP al mondo, ma sicuramente ha reso ARM (e / o equivalenti Samsung - non sono sicuro al 100% di quale fosse contenuto) apparire incredibilmente capace. Le caratteristiche e le prestazioni lo hanno paragonato abbastanza bene con un WinMobile Ipaq di vintage molto più recente (definito clone Samsung StrongArm). Entrambe le macchine avevano un sacco di RAM e un sacco di spazio di archiviazione così tanto di gestione della memoria in corso - suppongo che dobbiamo sfocare un po 'la linea tra microprocessori e microcontrollori quando arriviamo a questo livello di prestazioni.


2

Citi "microprocessori" e "microcontrollori" ma sempre più spesso appare una terza categoria di dispositivi nota come "SOC" (che sta per "system-on-chip", un termine che trovo piuttosto fuorviante)

I microcontrollori hanno quantità molto piccole di RAM e in genere non hanno mappatura della memoria e protezione della memoria molto limitata. Ciò li rende scarsamente adatti all'uso come computer di uso generale.

I SOC possono essere visti come una via di mezzo tra i microcontrollori convenzionali che hanno tutto integrato su un chip e microprocessori convenzionali che richiedono grandi quantità di circuiti di supporto. I SOC hanno il core del processore e i perhipherals integrati in un chip ma, a differenza dei microcontrollori, usano la memoria esterna. In genere questi SOC hanno un MMU completo che può creare uno spazio di indirizzi virtuale per diverse applicazioni. Molti SoC hanno anche blocchi funzionali speciali per grafica 3D, DSP, codifica / decodifica video ecc.

I SOC non sono potenti come un moderno PC desktop ma, se combinati con un ambiente software non rovinato, sono abbastanza potenti e funzionali da poter essere considerati "computer di uso generale".

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.