Pouvez-vous baser un ordinateur autour d'un microcontrôleur 32 bits?

9

Nous avons tous (principalement) des machines 32 bits chez nous. Mais les machines 32 bits ont un microprocesseur. Je lisais un article sur l'ARM Cortex. C'est un microcontrôleur 32 bits. Maintenant, cela intriguait une question en moi. Les microcontrôleurs ont été conçus pour diminuer les circuits externes autour d'un microprocesseur, puis les microprocesseurs sont devenus plus puissants tandis que les microcontrôleurs sont restés dans ces formes 8 bits pendant trop longtemps. Mais maintenant que nous avons des microcontrôleurs 32 bits, ne pouvons-nous pas avoir comme un ordinateur basé sur ces choses?

Rick_2047
la source

Réponses:

11

Cela dépend de la façon dont vous définissez «ordinateur».

À la plus petite extrémité de l'échelle, ce que vous pourriez appeler des microcontrôleurs traditionnels, vous n'obtenez pas de gestion de la mémoire et ne voyez rarement plus de RAM que la petite quantité intégrée à la puce. J'admets très peu de connaissances sur l'architecture des microcontrôleurs les plus performants actuellement disponibles, mais l'existence (ou leur absence) de ces fonctionnalités est probablement la clé pour distinguer un appareil le mieux adapté aux applications embarquées ou au calcul général. .

Par `` gestion de la mémoire '', je fais référence à la capacité d'exécuter des programmes dans des espaces d'adressage virtuels et de les mapper à la RAM physique disponible dans le système, une fonction exécutée par ce qu'on appelle généralement une unité de gestion de la mémoire (MMU).

Sans MMU, si vous essayez d'exécuter plusieurs processus, tous sont obligés de partager un seul espace d'adressage, ce qui signifie qu'à moins que tous les processus impliqués adhèrent à votre schéma d'allocation de mémoire, un processus peut très facilement en planter un autre. Donc, si vous contrôlez totalement la conception de tous les processus, comme avec un système embarqué, ce n'est pas autant une préoccupation. Cependant, si vous essayez de prendre en charge le calcul à usage général, vous ne pouvez pas garantir que tout le code qui sera exécuté respectera le schéma d'allocation de mémoire et que le système sera plutôt fragile.

Le manque de RAM n'est pas non plus un problème majeur pour les systèmes embarqués, (1) car il y a généralement beaucoup de flash, et (2) n'étant pas un ordinateur à usage général, vous n'avez pas à vous soucier d'exécuter des programmes inattendus à la ordre d'un utilisateur. Vous connaissez à l'avance la somme totale de tous les logiciels qui s'exécuteront sur le système, et vous n'avez besoin que de RAM pour les variables de ce logiciel. Cependant, lorsque vous essayez de transformer votre système en un ordinateur polyvalent, les utilisateurs s'attendent à pouvoir exécuter ce qui leur convient, et cela nécessite de la RAM.

Maintenant, il est tout à fait correct de faire des calculs à usage général sur des appareils sans MMU et pas beaucoup de mémoire. Le PC IBM original de 128 Ko de RAM, basé sur 8088 (16 bits) s'en est sorti, tant que vous n'aviez besoin que d'exécuter un programme à la fois.

Donc, si vous voulez définir «ordinateur» comme quelque chose comme la technologie de 1982, la réponse est certainement oui. Ou si vous avez un système fermé où vous pouvez atténuer les problèmes de ne pas avoir de MMU et / ou beaucoup de RAM (par exemple, des téléphones portables) en contrôlant soigneusement la conception du logiciel, oui également. Ou, si votre microcontrôleur a une MMU intégrée et des morceaux de RAM (ou peut les accueillir en externe), vous devriez être en mesure de construire un système qui ressemble davantage à des ordinateurs actuels.

JustJeff
la source
Les développements dans les compilateurs juste à temps pour des choses comme Java rendent une MMU peut-être moins nécessaire qu'elle ne l'aurait été historiquement. En l'absence de bogues liés au JIT, on pourrait avoir plusieurs traitements indépendants exécutant des plateformes indépendantes sur des machines virtuelles Java sans MMU, et les isoler les uns des autres, car le JIT ne générera pas d'instructions pour un programme qui accèderait de manière inappropriée à la mémoire utilisé par l'autre.
supercat
16

Absolument! Jetez un œil à presque tous les téléphones portables. Par exemple, le Motorola Droid utilise le microcontrôleur basé sur TI OMAP ARM exécutant Android sur Linux. Fondamentalement, un système d'exploitation informatique complet est installé et de nombreux autres gadgets. Sur certains des produits construits par mon client, ils utilisent des processeurs / contrôleurs FreeScale PowerQuicc I & II 32 bits qui peuvent exécuter Linux sur eux. Les PowerQuicc ont fondamentalement un noyau PowerPC avec un processeur RISC séparé pour gérer tous les périphériques de manière hautement configurable. C'est un microcontrôleur glorifié.

Vous devez également vous rappeler qu'il y a des années, les ordinateurs ne fonctionnaient pas sur des processeurs 32 bits, mais plutôt comme des processeurs 8 bits (à l'époque 4 bits) comme le Commodore 64. Ensuite, ils ont migré vers 16 bits, 32 bits. , etc. Il n'y a vraiment pas beaucoup de différence entre un microcontrôleur et un microprocesseur d'architecture et de vitesse binaires équivalentes. Les microcontrôleurs n'ont généralement pas l'unité à virgule flottante, mais cela peut être compensé par des calculs à virgule fixe. Par exemple, le processeur d'origine Motorola 68000 (16 bits) a été utilisé pour alimenter ces anciens ordinateurs Macintosh, puis transformé en version microcontrôleur pour de nombreuses applications électroniques intégrées pendant des années.

Vous devez examiner le rôle du microcontrôleur pour comprendre comment il est utilisé. Normalement, lorsque vous concevez avec un microcontrôleur, vous avez en tête une application hautement spécialisée et vous essayez de l'intégrer dans un espace plus petit que, par exemple, une tour PC. Alors que, l'ordinateur est très polyvalent: calcul des nombres et traitement des entrées utilisateur. Lorsque vous recherchez un microcontrôleur, vous en recherchez un qui prend en charge le type d'interface que vous créez pour votre application. Avez-vous besoin de 3 ports USB, 2 Ethernet, 2 UART, port SPI, ATM et interface CAN? Certaines de ces interfaces ne viennent pas sur un ordinateur typique tel que SPI, ATM et CAN, et un microcontrôleur les a intégrées pour réduire l'espace sur la carte. Vous pouvez considérer les microcontrôleurs comme des processeurs conçus pour une solution spécifique.

Jay Atkinson
la source
Je ne pense pas qu'un "ordinateur à usage général" ait jamais utilisé quelque chose de plus petit qu'un processeur 8 bits. Les ordinateurs à usage général doivent pouvoir accéder à suffisamment de RAM pour contenir un programme utilisable, et je ne connais pas d'ordinateurs à quatre bits disposant d'un magasin de codes RAM de taille utilisable.
supercat
peut-être pas commercialement, mais beaucoup de hackers l'ont fait, y compris mon grand-père. Il avait un ordinateur 4 bits en marche dans son atelier avant que les Commodore 64 et TRS-80 ne soient populaires. Il y avait aussi de la RAM (des piles de DIP).
Jay Atkinson
Avez-vous de la documentation sur des machines à architecture Von-Neumann 4 bits construites physiquement?
supercat
5

Nous pouvons certainement. L'iPad, par exemple, utilise un processeur ARM Cortex A8 pour son cerveau.

pingswept
la source
2
Ceci est un microprocesseur, pas un microcontrôleur, comme le note JPC ci
Kortuk
3

Il convient de noter que les ARM mentionnés (OMAP et A8) sont des microprocesseurs sans mémoire Flash et RAM (pas totalement vrai pour l'A8). Le microcontrôleur Cortex-M3 est plus petit, possède une petite mémoire intégrée et un accès plus facile aux périphériques.

Il y a un écart assez important (en termes de performances et de fonctionnalités) entre eux.

jpc
la source
+1 pour avoir souligné la différence entre les séries Cortex-A et Cortex-M ...
Johan
1
le microcontrôleur a intégré flash et ram. Les microprocesseurs ont leur mémoire en externe.
Kortuk
2

N'essayant pas de ressusciter un ancien thread, mais mon Zaurus SL5500 exécutait Linux embarqué sur un processeur ARM avec des tas de RAM et d'autres morceaux de stockage via les emplacements CF et SD. Pour autant que je sache, la MMU a été implémentée principalement dans un logiciel (cela a du sens pour un système Linux de toute façon). L'informatique à usage général était non seulement possible, mais rendue entièrement disponible via des logiciels tiers, des compilateurs et un interpréteur de commandes flexible qui fournissait la plupart des utilitaires et fonctionnalités standard * nix.

Ce n'était pas l'ordinateur GP le plus rapide au monde, mais assurément, l'ARM (et / ou les équivalents Samsung - je ne suis pas sûr à 100% de ce qu'il contenait) avait l'air terriblement capable. En termes de fonctionnalités et de performances, il se comparait assez bien avec un WinMobile Ipaq d'un millésime beaucoup plus récent (clone défini de Samsung StrongArm). Les deux machines avaient beaucoup de RAM et beaucoup de stockage, donc beaucoup de gestion de la mémoire en cours - je suppose que nous devons brouiller un peu la ligne entre les microprocesseurs et les microcontrôleurs lorsque nous atteignons ce niveau de performance.


la source
2

Vous mentionnez les "microprocesseurs" et les "microcontrôleurs", mais il y a de plus en plus une troisième catégorie d'appareil, connue sous le nom de "SOC" (qui signifie "système sur puce", terme que je trouve plutôt trompeur).

Les microcontrôleurs ont de très petites quantités de RAM et n'ont généralement pas de mappage de mémoire et une protection de mémoire très limitée. Cela les rend mal adaptés à une utilisation comme ordinateurs à usage général.

Les SOC peuvent être considérés comme un juste milieu entre les microcontrôleurs conventionnels qui ont tout intégré sur une seule puce et les microprocesseurs conventionnels qui nécessitent de grandes quantités de circuits de support. Les SOC ont le cœur du processeur et les périphériques hérités intégrés sur une seule puce, mais contrairement aux microcontrôleurs, ils utilisent une mémoire externe. En général, ces SOC ont une MMU complète qui peut créer un espace d'adressage virtuel pour différentes applications. De nombreux SoC ont également des blocs fonctionnels spéciaux pour les graphiques 3D, le DSP, l'encodage / décodage vidéo, etc.

Les SOC ne sont pas aussi puissants qu'un ordinateur de bureau moderne, mais lorsqu'ils sont combinés avec un environnement logiciel non crypté, ils sont suffisamment puissants et fonctionnels pour être considérés comme des "ordinateurs à usage général".

Peter Green
la source