SOC, NPU, CPU et GPU 1

Proposé par Bastien et Louis, mis à jour le 15 mars 2019.

SOC (System On a Chip)

SOC, NPU, CPU et GPU 2

Représentation des différents composants présents dans le SOC Qualcomm Snapdragon 845.Un soc est un composant électronique développé tout particulièrement pour les appareils mobiles très limités par la place et leur autonomie. Ils ne nécessitent pas de système de refroidissement actif.

Il s’agit d’une unique puce qui regroupe beaucoup d’éléments  :

  • le CPU (plus de détails plus bas dans le texte)
  • le GPU (plus de détails plus bas dans le texte)
  • un NPU pour les derniers modèles
  • le chipset (du moins, une gestion des périphériques)
  • un DSP, module qui traite des signaux numériques. Il s’agit en fait d’un regroupement de plusieurs éléments sur une même partie. Sur l’Exagone 690, utilisé par le Snapdragon 855, il existe trois partis :

– partie Scalar, qui traite les donnés à la manière d’un CPU : chaque tâche est effectuée de manière distincte, ce sont des tâches assez conséquente comparé au GPU.
– partie Vector, qui traite les donnés à la manière d’un GPU : il traite de multiple tâches parallèlement, mais ces dernières sont d’une complexité moindre.
– partie Tensor, qui traite des donnés relatifs à l’ia. Son fonctionnement se rapproche de celui du GPU. Il existe un système neuronal composé d’un réseau de “neurones” qui traite simultanément une même tâche mais avec une gestion et un traitement des donnés différents. Une fois les résultats individuels rassemblés, on obtient un résultat global qui donne une certaine réponse. Si cette dernière est “validée” par l’homme ou par un algorithme, le schéma pour arriver à cette conclusion est “sauvegardé”. Dans le cas opposé, le schéma est “mis de côté” car il n’est pas viable. C’est ainsi qu’un NPU peut réaliser un traitement qui n’est pas une science exacte. La conclusion peut être la même pour par exemple deux images différentes sur le fait qu’un animal est présent sur les deux photos.

SOC, NPU, CPU et GPU 3

Représentation des différentes parties qui composent le DSP Hexagon 690 du Snapdragon 855 de Qualcomm.

  • La mémoire flash
  • Un DAC (Digital Analogic Converter), qui convertit les informations numériques en analogique (pour les sorties audio analogique = prise jack)
  • Un ADC (Analogic Digital Converter), qui convertit les informations analogique en numérique (pour les micros par exemple)
  • Un ISP (Image Signal Processor), qui gère les signaux numériques de(s) l’appareil(s) photo(s)
  • Un modem, qui émet et reçois les ondes nécessaires pour l’appareil : 5G, LTE, 3G, 2G, Wifi, Bluetooth, Galileo, GPS, Glonass…
  • Un système de cryptage = SPU, par exemple le Qualcomm Secure Processing Unit

L’ensemble de ces éléments est réuni sur un même circuit intégré qui est produit d’un trait. Cela permet de limiter drastiquement l’encombrement et la consommation. Lors d’une surchauffe, la fréquence des cœurs est atténuée pour laisser refroidir l’ensemble.

En début 2018, ARM a dévoilé un cœur différent de ce qu’il existe actuellement. Jusqu’alors, les SOC étaient composés de deux types de cœur : les cœurs haute performance et les cœurs basse consommation.

Les SOC octo core étaient composés de 4 core basse consommation et de 4 haute performance (pour les tâches qui demandent beaucoup de ressources uniquement).

Aujourd’hui nous utilisons beaucoup les réseaux sociaux. Mais les SOC n’étaient pas très optimisés pour ce genre d’usage. Lors du chargement d’une vidéo affiché sur un feed Instagram par exemple, les core haute performance étaient utilisés. Or leur usage fréquent n’était pas idéal pour l’autonomie.

ARM a donc dévoilé de nouveau core appelé “middle”. Leur rendement se base sur les cœurs haute performance mais leur fréquence est bridée, la mémoire cache est moins importante.

Aujourd’hui, un Snapdragon 855 est composé de 4 core basse consommation, 3 middle et seulement un seul haute performance. L’agencement de ces types de core diffère en fonction du SOC.

SOC, NPU, CPU et GPU 4

Présentation des core utilisés par le Huawei Kirin 980 en fonction de la tâche en cours d’exécution. Ce tableau est successible de varier en fonction des SOC.

SOC, NPU, CPU et GPU 5

Photo grossie du SOC Apple A12 Bionic. Nous voyons bien que la partie NPU est directement intégré dans le SOC et non dans le DSP comme chez Qualcomm. Image Tech Insights.

SOC, NPU, CPU et GPU 6

Photo grossie du SOC Apple A11 Bionic. Même constat que précédemment, nous voyons bien que la partie NPU est directement intégré dans le SOC et non dans le DSP comme chez Qualcomm. Image Tech Insights.

SOC, NPU, CPU et GPU 7

Comparaison des différents SOC (les plus populaires) qui datent de 2017/2018. Image Tech Insights.

NPU (Neural Processing Unit)

Pour comprendre le fonctionnement d’un NPU, se référencer à la partie “l’Exagone 690”. Le principe de ce DSP est applicable à tout principe d’IA.
Mais par exemple chez Apple ou Huawei, une partie distincte est directement implémentée dans le soc et non dans le DSP qui n’est pas aussi poussé que chez Qualcomm.

Dans le cas de l’IA sur serveur, les puces utilisées sont bien plus grandes, puissantes et productrices de chaleur. Elles sont utilisés pour du Machine Learning et Deep Learning, chose que nos smartphones ne font que peu aujourd’hui.

C’est en fait via l’IA sur serveur que sont entraînés les puces mobiles à la reconnaissance des éléments et autre déduction appelé “ia”. Une fois les résultats déterminés, les donnés sont implémentés sur les puces mobiles. Il reste juste la déduction à effectuer à partir des données déjà présentes dans la puce. Tout de même, un système comme Face Id et sa caméra TrueDepth fonctionne avec du machine learning. Le système Neural Engine d’Apple interprète les changements physiques du visage du propriétaire de l’iPhone et adapte son modèle de reconnaissance faciale au fil du temps.

SOC, NPU, CPU et GPU 8

Exemple d’un composant serveur (développé par Google en l’occurrence) utilisé pour l’ia, en particularité pour le machine et deep learning comme expliqué plus haut.

CPU (Central Processing Unit)

Un CPU est un ensemble d’éléments spécialisé dans le traitement de donnés via des calculs.

Les différentes parties sont :

  • les cœurs (core) sont des unités de traitement qui exécutent les instructions d’un programme informatique de manière individuelle.
  • la mémoire cache est configuré à trois niveaux (en général) :

– le cache L1 (Level 1, le plus bas, le plus “profond”, stocké dans tous les core du CPU), sa particularité est sa rapidité, sa latence extrêmement faible, sa bande passante pouvant dépasser le Téra/s, l’espace de stockage très réduit car il est onéreux et n’est utilisé que pour le calcul d’une seule tâche simultanément.
– le cache L2 (Level 2, stocké à côté des core dans l’unité de traitement), est une mémoire “temporaire”. Elle permet de stocker des éléments qui sont utiles à l’instruction qui est en cours de traitement. Cette mémoire a des caractéristiques moins évoluées que le cache L1 mais en contrepartie, elle propose un espace de stockage plus grand.
– le cache L3 (Level 3, stocké à l’extérieur des coeurs mais tout de même dans le CPU), est utilisé pour stocker des donnés qui nécessitent d’être accédé très rapidement. Par exemple, le texte d’une page web sur Chrome affiché à l’instant T est stocké dans le cache L3. C’est finalement l’ensemble des éléments qui est susceptible d’être utile pour l’utilisateur. Cela comporte également des périphériques utilisés parallèlement par l’appareil pour son fonctionnement.

  • I/O, autrement appelé Input / Output est une connectique qui part du CPU jusqu’aux éléments tel que la ram, les ports PCI directement relié au CPU, le chipset (pour un pc/pc portable)…
  • selon les architectures, les contrôleurs mémoire sont externes ou internes au CPU. S’ils sont externes au CPU, ils sont reliés à ce dernier via la connectique Input / Output. Ces contrôleurs permettent de réguler le débit, la fréquence de donnés qui arrivent au CPU pour ne pas le saturer. Il fonctionne dans deux sens : vers le CPU et du CPU vers les autres composants.

GPU (Graphics Processing Unit)

Le GPU est un processeur plus spécialisé dans le traitement des graphiques. Cela est dû au traitement parallèle qu’il réalise contrairement au CPU. 

Les core du GPU sont beaucoup plus petits, plus simple et moins puissants que ceux du CPU. Ils ne sont pas capables de traiter rapidement de grosses instructions. Ils sont également moins cadencés.

Le GPU est composé de cluster (grappe) qui regroupent des core. Chaque grappe utilise une mémoire cache L2 pour l’ensemble des core de la grappe. Chaque grappe a sa mémoire cache L2. Contrairement au CPU, le traitement d’un groupe de donnés est réparti de manière à laisser chaque core traiter une petite partie. Le regroupement de ces traitements forme l’information final.

Dans chaque grappe, il existe des unités spécifiques pour la géométrie. 
Cette unité permet de modéliser les éléments dans l’espace à l’aide de calculs.

SOC, NPU, CPU et GPU 9
Représentation des formes polygonales assemblés pour créer la forme géométrique via les donnés traités par les unités spécifiques pour la géométrie.

Dans chaque grappe, il existe des unités de texturing.

Cette unité est spécifique pour le traitement graphique, c’est elle qui va gérer l’affichage et la modulation des pixels, autrement dit, c’est elle qui gère l’aspect visuel.

Pour la 3D, un traitement est appliqué pour obtenir la texture et son aspect avant la modulation des pixels.

Il existe un composant qui permet la répartition du traitement des tâches entre les grappes. Ce dernier applique le traitement final (après le traitement des grappes) qui forme l’image dans sa globalité.

Un cache L3 qui se situe à l’extérieur des grappes permet le stockage des données finales traitées par les grappes.

La rastérisation permet de passer d’un polygone à des pixels pour former une image qui sera affichée à l’écran après la modulation des donnés en courant électrique.

SOC, NPU, CPU et GPU 10

Procédé de rastérisation qui permet la transformation de polygones en pixels.

La VRAM permet le stockage temporaire des informations visuelles qui apparaissent à l’écran quand cette information est exploitée, dans la mémoire cache.

Le memory contrôleur gère le passage des informations entre la VRAM et la mémoire cache.

SOC, NPU, CPU et GPU 11

Représentation abstraite du fonctionnement d’un GPU dans son ensemble.

Partage

Nous retrouver.