quels sont vraiment: microcontrôleur (uC), système sur puce (SoC) et processeur de signal numérique (DSP)?

9

La vraie question est à la fin. Mais lire cela seul ne vous montrera peut-être pas pourquoi je suis confus. J'ai écrit ce post en commençant par quelques définitions, hypothèses et spéculations, puis en posant la vraie question.

Je pense toujours que je connais la différence mais quand je reçois une question comme: "si je mets un émetteur-récepteur avec un uC, est-ce maintenant un SoC?" Je m'embrouille et je ne sais pas comment répondre. Je me souviens une fois qu'on m'a dit qu'un uC est essentiellement un SoC . Mais quelle preuve ai-je? Mais Arduino n'est pas sur une seule puce! Je peux retirer le processeur Atmeg de la "carte" à tout moment!

Lorsque je vérifie en ligne, j'obtiens toutes sortes de réponses qui confirment ou contredisent ce que je viens de dire directement ou indirectement. C'est toujours déroutant pour moi et je ne blâme rien d'autre que de commercialiser les personnes qui utilisent ces termes de manière lâche et parfois interchangeable, et les personnes qui suivent leur exemple.

J'ai donc décidé de chercher la signification fondamentale de ces trois termes: uC, SoC et DSP. Parce que par exemple, quand je me trompe sur les tensions dans les circuits, je reviens toujours aux fondamentaux de la physique, la masse n'est pas vraiment nulle, c'est juste une "référence" et les tensions ne sont pas "absolues", elles sont des "parents". Cela me dirige toujours dans la bonne direction. Mais il n'y a pas de base pour parler d'uC. "micro" "contrôleur" est un contrôleur si petit qu'il est à l'échelle du micromètre. Mais nous n'avons pas le terme de nanocontrôleur, n'est-ce pas? Donc, cette façon de penser n’aiderait pas.

Ce que j'essaie de répondre sont les suivants:

  • uC est une unité de traitement avec d'autres périphériques et de la mémoire avec elle pour une utilisation générale, non?
  • SoC est un "système" complet sur une "puce". Donc, quel que soit le système que vous mettez sur une seule puce, est un SoC, non?
  • DSP est une unité de traitement à usage spécifique, principalement des opérations mathématiques, non?

    Maintenant

  • Est-ce à dire que tout dans une uC, ils doivent tous être sur une seule puce? car si oui, alors uC est en fait un SoC. Peut-être un petit, mais ça l'est. Et Arduino. Probablement uC "peut" être un SoC s'il est sur une seule puce, mais n'est pas obligé (j'utilise beaucoup Arduino comme exemple ici).

  • Donc l'arduino est un uC, si je prends tous ses composants et les mets dans une autre carte et j'ajoute du XBEE au mix par exemple. C'est toujours une uC, non? Alors, quand dit-on que c'est maintenant un SoC? Ce n'est que lorsque les mêmes choses sont mises dans une seule puce plutôt que collectées dans une planche?

Jusqu'à présent, je pense que les questions ci-dessus se répondent en quelque sorte, mais je veux juste confirmer afin que je puisse continuer. Quand j'essaie de penser "fondamentalement", une puce ou une carte "peut" être la même, ce ne sont que des fils reliant les différents composants. et à ce stade, que définissez-vous un composant? S'agit-il d'un seul transistor ou d'un circuit comme un ADC? Mais je ne veux pas y aller.

La question suivante est de savoir de quoi parle vraiment ce post:

  • Un uC est-il essentiellement un SoC? Un cas particulier d'un SoC dont l'une des exigences est que l'ensemble du système soit à usage général.
  • uC est à usage général (selon Internet) et DSP est principalement destiné à traiter mathématiquement les signaux collectés dans le monde réel. Mais DSP est toujours un "processeur" et un uC contient un "processeur". Puis-je simplement mettre un DSP avec un tas ou des périphériques (disons ADC et DAC car ils sont généralement utilisés avec lui) et appeler le mixage uC? ou est-ce un SoC (puisque maintenant le mélange n'est pas à usage général et donc nous ne pouvons pas l'appeler uC mais c'est toujours un SoC)
himura
la source
Peu importe comment vous l'appelez, «une rose sous un autre nom sentirait aussi bon!» SoC est un terme de vente, «d'autres personnes vous vendent les pièces, mais nous vous vendons tout le système», c'est ce que cela implique. uC est généralement comme une mémoire uP +, et souvent des ADC. Un DSP est optimisé pour, croyez-vous, DSP, et possède invariablement un multiplicateur matériel, mais souvent de nos jours, la mémoire du programme et parfois des ADC / DAC, presque un SoC. Mais dans une large mesure, la plupart d'entre eux pourraient être décrits comme les autres. Ne le transpirez pas, ne frappez certainement pas les gens par-dessus.
Neil_UK
2
Je sais qu'il est largement compris d'utiliser u et il n'y a pas vraiment de problème à l'utiliser, mais si vous souhaitez créer un µ, appuyez sur AltGr + Mou ⌘ + Mfaites l'affaire.
Magic Smoke
1
"micro" est un bagage historique; Le "micro" contrôleur provient d'un "micro" ordinateur, qui se distingue des "mini" ordinateurs de la taille d'un réfrigérateur et des "" ordinateurs qui occupaient des pièces entières.
user253751

Réponses:

11

uC = une puce de traitement autonome: CPU, RAM, ROM, certains périphériques.

DSP = puce processeur (peut être un CPU séparé, de nos jours principalement un uC) optimisé pour le traitement du signal. Possède souvent un MAC rapide (multiplication-accumulation), des calculs saturés et plusieurs interfaces mémoire. Pour en tirer le meilleur parti, vous devez souvent être profondément conscient de ses particularités, comme quel type d'accès à la mémoire peut être effectué en même temps. (D'où souvent utilisé avec des bibliothèques d'assemblage affinées fournies par le fabricant.) Souvent non destiné à être utilisé avec de grandes mémoires (bus d'adresse 16 bits est souvent suffisant).

SOC = puce de processeur (principalement un processeur, peut-être avec de la RAM pour la mise en cache) qui intègre des périphériques qui se trouvaient auparavant en dehors de la puce de processeur principale C'est par définition une cible mouvante: les fonctions des SOC spécialisés d'aujourd'hui se trouvent dans les puces grand public de demain. Les SOC actuels sont principalement destinés à exécuter un système d'exploitation de niveau Linux et contiennent la plupart des éléments dont vous auriez besoin sur un tel système, à l'exception de la RAM et de la ROM (bien qu'une partie de la ROM soit souvent incluse, souvent pour lire un FLASH externe).

Exemples de périphériques courants dans les SOC actuels (mais qui se retrouvent dans les uC!): Ports Ethernet, matrice de commutation Ethernet, USB incl. hôte et OTG, moteur (s) graphique (s), décodage mpeg, moteur cryptographique, interfaces RAM et FLASH.

Un Arduino est un produit au niveau de la carte, il ne s'agit donc pas par définition d'un uC, d'un DSP ou d'un SOC, bien qu'il puisse en contenir un. L'Uno de base contient un uC.

Un uC n'est pas un SOC (bien qu'il puisse y avoir des cas limites): un uC est autonome et (au niveau actuel de la technologie) n'est pas destiné à exécuter des OS de niveau Linux. Un SOC n'est pas autonome (nécessite de la RAM et de la ROM).

Les limites ne sont pas à 100% et changent avec le temps. Les interfaces CPU et mémoire de la plupart des processeurs actuels dépassent facilement les DSP d'hier, même sur leur propre terrain. Mais les DSP d'aujourd'hui sont plus rapides et / ou moins chers ou moins gourmands en énergie que les processeurs plus généraux pour le traitement du signal. C'est une course entre les fabricants pour fabriquer la puce la plus attrayante en utilisant l'état de la technologie et la demande les plus récents. Pour le moment, cela a conduit aux 3 points faibles ci-dessus (plus les microprocesseurs à usage général), mais cela changera avec le temps (les DSP sont moins populaires qu'il y a 10 ans, OMI parce que le débit du niveau audio est désormais facilement atteint par un CPU à usage général).

Un type spécifique de puce qui devient de plus en plus courant de nos jours est le uC (ou SOC) avec une certaine interface sans fil. Consultez l'ESP8266 et l'ESP32 pour des exemples WiFi, et le RN2483 pour LoraWan.

Wouter van Ooijen
la source
2

uC et DSP ont une définition assez simple.

Un uC est un noyau de traitement qui a la mémoire (volatile et non volatile) intégrée en interne. Ceci par rapport à un microprocesseur qui aura généralement une mémoire volatile à l'intérieur mais pas non volatile.

Un DSP est un shoot off d'un uC. Les DSP ont généralement de très bonnes capacités d'échantillonnage analogique par rapport à un uC typique. Les DSP ont également de meilleures capacités mathématiques que uC et sont livrés avec de nombreuses bibliothèques telles que la FFT ou l'autocorrélation pour utiliser ces capacités mathématiques.

SoC est plus un terme de marketing branlant. SoC est un terme qu'ils essaient d'utiliser lorsqu'un uC a suffisamment de fonctionnalités pour créer une solution à puce unique ou quasi unique. Le terme SoC a tendance à être trouvé lorsque l'UC a intégré le traitement graphique et les pilotes graphiques à bord. Pensez aux puces ARM des téléphones portables. Ils intègrent les graphismes.

vini_i
la source
Dites-vous donc qu'un DSP contient également un ADC par exemple?
himura
@himura uC a des ADC mais les DSP ont de très bons ADC. Par exemple, l'Arduino est capable jusqu'à une fréquence d'échantillonnage d'environ 10 kHz à 10 bits. Le dsPIC33 qui est un DSP est capable d'un taux d'échantillonnage de 1,1 MHz à 10 bits. C'est deux ordres de grandeur plus rapidement.
vini_i
Je pensais que DSP était juste l'unité de traitement sans aucune capacité ADC. Mais cela ressemble plus à un système complet maintenant. Merci
himura
1
Je pense que cette réponse est fausse. Il existe de nombreuses puces DSP sans convertisseurs. La principale différence entre un DSP et un CPU à usage général est l'architecture de la mémoire. Les DSP ont plusieurs mémoires accessibles en parallèle. Voir en.wikipedia.org/wiki/Harvard_architecture
Hilmar
@ Hilmar pouvez-vous s'il vous plaît fournir quelques références de DSP sans convertisseurs? J'aime ce point
himura
0

Ce que nous appelons SOC a généralement un cœur de processeur beaucoup plus puissant que uC. Habituellement, vous pouvez y trouver le noyau ARM. Presque tous les "gros" processeurs ARM, comme la série Cortex A, produits aujourd'hui sont en fait des SOC. Pour exécuter un grand système d'exploitation comme Linux, vous avez besoin de beaucoup de RAM, les SOC ont donc un contrôleur de RAM externe prenant en charge les puces SDRAM modernes. Petite quantité de RAM statique intégrée utilisée uniquement lors de la phase de démarrage pour exécuter le chargeur de démarrage et initialiser les périphériques et le contrôleur SDRAM.

Les uC sont généralement des solutions complètes tout-en-un avec RAM statique intégrée (assez petite quantité). La petite RAM et le manque de MMU empêchent d'utiliser de gros OS sur eux. Aujourd'hui, la plupart des uC ont un cœur 8 bits ou 32 bits. UC 16 bits utilisés dans les applications héritées uniquement. L'ère de l'uSc 32 bits a commencé avec les cœurs de la série ARM M. Ces cœurs sont spécialement conçus pour les uC et ont très peu en commun avec les gros ARM, à l'exception du jeu d'instructions (ARM M utilise les instructions THUMB, un sous-ensemble du jeu d'instructions ARM).

Le terme DSP concerne l'architecture de base. Les DSP ont plus d'une ALU et ont ce qu'on appelle des jeux d'instructions VLIW (très long mot d'instruction). L'instruction VLIW est composée d'un certain nombre de sous-instructions (environ 4) destinées à différents sous-systèmes CPU. Par exemple, une instruction aussi longue peut contenir une instruction de prélecture des données de la mémoire, une instruction de multiplication vers un ALU multiplicateur spécialisé et une instruction arithmétique vers un ALU à usage général.

Vous pouvez utiliser DSP comme uC à usage général, mais le but principal est le traitement des données numériques (non seulement les signaux, mais aussi la vidéo). Les filtres numériques, les algorithmes de compression / décompression des médias bénéficient de l'architecture parallélisée DSP.

Les cœurs de processeur modernes ont généralement une sorte d '"extensions DSP" sous forme d'instructions vectorielles (vous pouvez effectuer la même opération arithmétique sur un certain nombre, environ 8, opérateurs). C'est quelque chose de différent des instructions VLIW des DSP.

e_asphyx
la source
"Presque tous les processeurs ARM produits aujourd'hui sont en fait des SOC" vraiment? considérez-vous les puces Cortex-M0 comme les SOC LPC810?
Wouter van Ooijen
J'ai mentionné séparément la série Cortex M en parlant des uC. Les Cortex M sont évidemment des uC.
e_asphyx