programmation de systèmes embarqués : introduction aux systèmes embarqués

61
E302C Gestion des périphériques Séance 4 Introduction aux systèmes embarqués Sébastien Combéfis 21 mars 2017

Upload: sebastien-combefis

Post on 23-Jan-2018

594 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

E302C Gestion des périphériques

Séance 4

Introduction auxsystèmes embarqués

Sébastien Combéfis 21 mars 2017

Page 2: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative CommonsAttribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.

Page 3: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Objectifs

Définir et comprendre la notion de système embarqué

Définition et composants d’un système embarquéTypes, caractéristiques et contraintesSystème connecté et objets intelligents

Passer en revue les aspects hardware et software

Type de processeurs, unités hardware, interruption et énergieProgrammation, chaine de compilation, système d’exploitation

Vue de l’ingénieur et du clientExigences, aspects multi-disciplinaires et case study

3

Page 4: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Technologie d’information du futur

Disappearingcomputer

Ubiquitouscomputing

Pervasivecomputing

Ambientintelligence

Ordinateurs partout

Information partout,tout le temps

Exploitation techno-logie existante

Maisons du futur,smart cities

4

Page 5: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Système embarqué

Page 6: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Système embarqué

Présence grandissante d’appareils intelligents et connectésConstitué d’un « ordinateur de bord », le système embarqué

Système embarqué est électronique et informatiqueIl est embarqué au sein d’un produit plus large

6

Page 7: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Traitement d’information (1)

Système embarqué est un intermédiaire

Réception d’information provenant de son environnementTraitement de cette informationAction à travers le produit hôte qui l’héberge

configuration donnéessenseurs

régulation

7

Page 8: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Traitement d’information (2)

Système embarqué se trouve au sein d’un système plus large

Input en interrogant le système via des senseursOutput en agissant sur le système via des actuateurs

Possibilité d’interaction directe avec l’utilisateur

Processus externes

Systèmeembarqué

Utilisateuractuateurs

senseurs

8

Page 9: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Vue orientée-produit

Système embarqué implémente un processusCollecte d’inputs pour produire des outputs

Inputs produits par des senseurs ou capteursTempérature, gyroscope, configuration, communication réseau...

Outputs produits par des actuateurs ou actionneursMoteur, vérin, baffle, LEDs, écran, communication réseau...

9

Page 10: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Définition de l’IEE

Définition de l’Institution of Electrical Engineers (IEE)

“the devices used to control, monitor or assist the operation ofequipment, machinery or plant. ‘Embedded’ reflects the fact thatthey are an integral part of the system. In many cases their em-beddedness may be such that their presence is far from obviousto the casual observer [...]”

Système embarqué souvent associé à une machineFait partie d’un système plus large, et est souvent caché

10

Page 11: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Traditionnel versus embarqué

Un système embarqué n’a pas de raison d’être seulComposant d’un système plus large, parfois invisible

Situation dans les années 2000

Informatique focus sur 150 · 106 d’ordinateurs « traditionnels »Processeurs se trouvent dans 8 · 109 de systèmes embarqués

Système embarqué exécute une tâche spécifique

Moins de ressources et moins performantsSoftware spécifiqueFonctionnement en autonomie, pas de clavier, affichage réduit

11

Page 12: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Exemple (1)

Système embarqué seul ou à plusieursIsolé et cloisonné dans l’hôte/collaborant avec d’autres systèmes

Simple gestion des états de fonctionnement d’une machineMachine à laver, four à micro-onde, toaster...

Traitement de signaux audio et vidéoAppareil photo et caméra numérique, console de jeu...

Système de communication et d’informationSmartphone, modem-routeur, fax, antenne-relais, satellite...

12

Page 13: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Exemple (2)

Plus que 40% de la valeur d’une voiture moderneMultiples systèmes embarqués qui peuplent la voiture

ABS

Boite de vitesse Moteur

Climatisation

Système de divertissement

13

Page 14: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Type d’application visé

Usage général avec applications similaires aux « traditionnels »Embarqué dans package de petites tailles comme PDA, ATM...

Boucle rétroactive fermée de contrôle de système temps-réelMoteur de voiture, centrale nucléaire, contrôle aérien...

Calcul sur gros flux de données comme traitement de signalTraitement audio et vidéo, radar, sonar...

Communication et réseaux pour transmission de donnéesUtilisés en téléphonie et sur internet

14

Page 15: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Type de fonction (1)

Assurer qu’une loi de contrôle est respectéeContrôleur PID pour assurer stabilité vol stationnaire

Représentation d’une logique séquentielleAlternation entre modes comme machine à laver

Calculs et opérations en traitement de signauxCompression/décompression de contenu multimédia, filtrer son...

15

Page 16: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Type de fonction (2)

Rôle d’interface pour des applications spécifiquesGérer des alarmes sonores, contrôleur disque SSD...

Réaction à des fautes ou gestion d’exceptionsDétection, diagnostic et correction de la faute

16

Page 17: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Taille et complexité

Système de petite échelle avec un microcontrôleur 8–16 bitsNiveau d’une carte, limitation ressources pour puissance

Moyenne échelle avec microcontrôleurs 16–32 bits, DSP, RISCHardware de type ASSPs et IPs et software avec des RTOS

Système sophistiqué avec processeurs configurables et PLACo-design et intégration software/hardware très important

17

Page 18: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Fiabilité

Un système embarqué doit avoir une grande fiabilitéCar il doit très souvent pouvoir fonctionner en autonomie

Plusieurs caractéristiques mesurables de fiabilité

Robustesse, proba de fonctionnement en t, si ok en t0Maintenabilité, proba de fonctionnement d après une erreurDisponibilité, proba de fonctionner en t

Sûreté, il ne cause pas de nuisancesSécurité, communications confidentielles et authentifiées

Aspects à prendre en compte au moment de la conceptionEt compromis à prendre car impossible de tous les maximiser

18

Page 19: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Efficacité

Un système embarqué doit être efficace pour sa fonctionPlus qu’un ordinateur « traditionnel », justifier son développement

Cinq aspects mesurables d’efficacité

Consommation énergétique en WattsTaille du code en octets, lignes de codeExécution du programme en MIPS, R/W par secondePoids et taille en kg et cmCout de fabrication et conception en $, €, ¥...

19

Page 20: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Contrainte

Système spécifique dédié à une tâche déterminéeConnaissances sur les conditions et à l’environnement d’utilisation

Contraintes de temps-réel sur le temps de réaction

Strict, réaction garantie endéans temps de réponse fixéSouple, réaction au mieux endéans temps de réponse fixé

“A real-time constraint is called hard, if not meeting thatconstraint could result in a catastrophe.”

Alimentation du système embarqué en énergieBatterie évolue moins vite que besoins en puissance de calcul

20

Page 21: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Système connecté

Intelligence ambiente, troisième ère de l’informatiqueLarge gamme de petits appareils « intelligents »

Système embarqué doté de moyens de communicationRécupération/échange d’informations, réseaux de senseurs

Apparition d’applications distribuées pour données et calculsDomotique et maison intelligente, smart cities, e-health...

21

Page 22: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Aspect hardware

Page 23: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Boucle hardware

Hardware d’un système embarqué en “Hardware in a loop”

Méthode de test par envoi de stimuli et mesure de la réponse

Système embarqué

SenseurConversion

A/D CPUConversion

D/A Actuateur

FPGA/ASIC Mémoire

Environnement

environnement → senseur → système embarqué → actuateur → environnement → ...

23

Page 24: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Intel 4004

Premier microprocesseur sur une seule puce est l’Intel 4004Créé en 1971 suite à une demande de la firme japonaise Busicom

Microprocesseur à usage général programmé pour les produitsSur 4 bits, fréquence CPU de 740 kHz max, 2300 transistors

24

Page 25: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Unité de calcul (1)

Processeurs exécutent une séquence d’instructions

General Purpose Processor (GPP)Jeu d’instructions large et varié

Application-Specific Instruction set Processor (ASIP)Jeu d’instructions conçu pour un ensemble d’opérations

Circuits spécifiques implémentent une fonction en hardware

Reprogrammable hardwareFonction modifiable après fabrication, comme FPGA

Application-Specific Integrated Circuit (ASIC)Circuit intégré réalisant les fonctions d’une application

25

Page 26: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Unité de calcul (2)

Comparaison de la flexibilité par rapport aux performancesGénérique et flexible moins performant et efficace en énergie

Grand cout de conception et développement des ASICPas de chaine de production à grande échelle, un ASIC par besoin

GPP Microprocesseur

ASIP Microcontrôleur, DSP

Hardware reprogrammable FPGA

ASIC

Performanceet efficacitéénergétique

Flexibilité

26

Page 27: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

ASSP et FPGA

Application Specific Standard Product (ASSP)

Version plus générale des ASICs, contenant une seule fonctionVise un large marché et peut être produit en masseÀ l’opposé des ASICs qui combinent plusieurs fonctions

Prototypage d’une ASIC réalisé à l’aide de FPGAÀ l’instar de la breadboard qui prototype un PCB

27

Page 28: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Architecture matérielle (1)

Architecture matérielle décrit structure système embarquéPlusieurs représentations avec degrés d’abstraction différents

Description possible par un diagramme blocs

Blocs pour composants, unités, sous-systèmes...Liens représentent échange d’information, commande...

28

Page 29: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Architecture matérielle (2)

Exemple d’un ventilateur contrôlé par la températureSystème embarqué construit avec microcontrôleur ARM7TDMI

MicrocontrôleurARM7TDMILPC2378

SenseurLM35 ADC Driver

L293DMoteurDC

ÉcranLCD

29

Page 30: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Architecture type

Architecture type d’un système embarqué avec processeurHorloge, mémoire, dispositif général/spécifique/communication

Deux ouvertures vers le monde extérieurPort debug et bus de périphériques

Processeur

Port debug

Horloges Mémoirenon-volatile

Mémoirevolatile

Dispositifscommunication

Dispositifsgénéraux

Dispositifsspécifiques

Mon

deextérie

ur

Bus périphérique

Bus système

30

Page 31: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Alimentation (1)

Alimentation en énergie d’un système embarqué importanteAdaptateur secteur AC/DC, batterie, hôte, charge pump

Plusieurs plages possibles selon les besoins des composants5V ± 0.25V , 3.3V ± 0.3V , 2.0V ± 0.2V , 1.5V ± 0.2V

Construits à partir de LVCMOS et LVTTL

Tension inversement proportionnelle délais de propagationPasser de 5V à 3.3V divise dissipation puissance par deuxPasser à 3.3V génèrent moins de chaleur, plus petits packs

31

Page 32: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Alimentation (2)

Caractéristiques d’un bon sous-système d’alimentation

Tension stable et lisse, et constante pour ADC par exempleCourant en suffisance pour système embarqué et composantsEfficace et stable selon conditions (température, circulation air)

Offrir un découplage entre différents composants

Horloge et circuit de reset sans interférence radioélectriquePorts d’entrée/sortie dissipent beaucoup de puissanceTimers dissipent une puissance constante

32

Page 33: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Horloge

Horloge cadence fonctionnement du processeurRythme le cycle fetch-decode-execute

Trois principales technologies utilisées pour des oscillateurs

Crystal externe plus stable (doit être proche du processeur)Résonateur céramique interne (dérive 10min/mois versus 1–5)Oscillateur externe en circuit intégré (plus contrôlable)

Présence de circuit de timer Real-Time Clock (RTC)Ordonnanceur de tâche, système temps réel

33

Page 34: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Mémoire

Plusieurs mémoires permettant de stocker de l’informationPermanente ou volatile, interne ou externe

Trois principaux types de mémoires utilisés

Read-Only Memory (ROM)Permanente en lecture seule, programme exécuté

Random-Access Memory (RAM)Volatile, travail en cours, variable, tampon

Electrically Erasable Programmable ROM (EEPROM)Permanente modifiable, copie instructions, calcul rapide

34

Page 35: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Entrée/sortie

Communication avec dispositifs externes identifiés par port

Port d’entrée : senseur, bouton, circuit transducteur...Port de sortie : LED, écran LCD...

Port est un dispositif physique pour transiter des données

Recevoir données de périphérique, processeur, contrôleurEnvoyer données vers l’extérieurConnecté vers le processeur grâce à un bus

35

Page 36: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Port GPIO

Port General Purpose Input/Output (GPIO)Connexion directe du processeur avec le monde extérieurDeux valeurs de tension pour chaque pin GPIO (valeur binaire)Utilisé comme entrée (bouton) ou comme sortie (LED)

Fonctionnement du port GPIO grâce à des registres

Port GPIO

Registre directionde port (PDR)

Registre donnéesd’entrée du port (PIDR)

Registre données desortie du port (PODR)

PortsE/S

Bussystèm

e

36

Page 37: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Communication

Transmission des informations en série ou parallèle

Parallèle historiquement plus rapide car plusieurs bits à la foisSérie plus léger niveau hardware (câble, émetteur/récepteur)Parallèle sur distances courtes, série longue distance

Rythme de la communication et messages échangés

Synchrone suit une horloge, à partager entre les boutsAsynchrone transmet des balises, surcharge de communicationChoix à faire selon régularité des messages

Plusieurs types de bus : RS-232, I2C, SPI, CAN, USB, PCI...

37

Page 38: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Support analogique

Système hybride, discret/numérique et continu/analogique

Lire une entrée analogique comme un son d’un microProduire une sortie analogique pour contrôler un moteur

Génération d’un signal analogique avec DAC (PWM)Construction d’un signal continu à partir d’états discrets

Acquisition d’un signal analogique avec ADCDiscrétisation d’un signal continu en séquence binaire

38

Page 39: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Choix technologique

Démarrage avec technologie générique moins couteux

Implémentation des fonctions désirées en softwarePerformances moins bonnes et nécessité d’optimisation

Remplacement processeur-software par un ASIC

Implémentation des fonctions au niveau hardwareSolution plus chère et avec un grand temps de développement

39

Page 40: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Flexibilité versus puissance/énergie

Augmentation de la flexibilité coute en performance/énergieFonction software coute 10 fois plus que équivalent hardware

flexibilité

puissance/énergie

ASIC

FPGA

ASIP (+SW)

GPP (+SW)

40

Page 41: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Taille versus opérations/Watt

Plus d’opérations par Watt en diminuant les tailles des CIHardware câblé pur offre un gain d’un ordre de grandeur supérieur

µm

MOps/mW

0.01

0.1

1

10

100

1.0 0.5 0.25 0.13 0.07

processeurshardware reprogrammable

ASIC

microprocesseur

DSP/ASIP

41

Page 42: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Aspect software

Page 43: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Software

Software partie importante système embarqué, son « brain »

Tout du moins pour ceux qui sont basés sur un processeur

Software développé pour un système embarqué pas portableCar le lien avec le hardware peut être très fort

Développement différent de celui d’un software « classique »

Pas facile de directement coder sur le système embarqué

43

Page 44: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Système réactif

Comportement exécuté en réaction à des évènementsL’environnement produit des évènements sur le système embarqué

Interaction continue à un rythme imposé par l’environnement

“A reactive system is one that is in continual interaction with its en-vironment and executes at a pace determined by that environment.”

Deux types d’évènements possibles sur le système embarquéPériodique (boucle de contrôle) et non périodique (bouton)

44

Page 45: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Temps réel

Système temps réel doit réagir endéans une deadlinePas une question de vitesse d’exécution, mais respect de deadline

Deux niveaux de contraintes selon conséquence de non respect

Temps réel souple, pas grave si une deadline est manquéeTemps réel strict, conséquences très graves

aucune souple forte

contraintestemps réelsimulation

PCinterfaceutilisateur

videointernet

cruisecontrol

télécom contrôleaérien

moteurélectronique

45

Page 46: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Polling et interruption

Software doit être avertit de la disponibilité de donnéesPar des bus, périphériques, etc.

Deux mécanismes principaux pour avertir le CPU

Polling, CPU va vérifier régulièrement dans un registre d’étatMécanisme d’interruption du CPU par le périphérique

Choix très critique dans le cas de systèmes temps réelOn ne peut pas toujours se permettre d’attendre un périphérique

46

Page 47: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Programmation

Software se présente sous la forme de code machineImage ROM du software d’un système embarqué

Utilisation des opérations du jeu d’instructions du processeurPlacement en mémoire en fonction de ses caractéristiques

Langage de haut niveau Langage d’assemblage

CPU

Langage machine exécution directe

compilation traduction

47

Page 48: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Niveau de programmation

Directement en code machineBeaucoup de temps pour comprendre jeu d’instructions et coder

Langage d’assemblage traduit en code machineRaccourci textuels pour l’être humain, et routines

Langage de haut niveau compilé en code machineAbstraction plus proche de la façon de penser du programmeur

48

Page 49: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Développement (1)

Développeur

Compilateur

Debugger

ÉmulateurSimulateurDebugger

Système embarqué

code source

code machine

Système hôte Système cible

49

Page 50: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Développement (2)

Pas toujours possible de développement sur système embarquéUtilisation d’un système hôte pour programmer une cible

Deux options avec un code source compilé en code machine

Envoi vers le système cible pour exécution directeExécution sur le système hôte avec émulateur ou simulateur

Possibilité de debugger directement depuis le système cibleAvec les standards JTAG, par exemple

50

Page 51: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Développement (3)

Spécification

Séparation matériel/logi-ciel et choix des composants

Développement hardware Développement software

Intégration

Validation et test

Maintenance et mise à jour

51

Page 52: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Développement (4)

Pas une unique procédure de développementMais coordination entre les aspects hardware et software

Spécification puis séparation matériel/softwarePlusieurs itérations et point de non retour

Développement parallèle software/hardware, mise en communIntégration, validation et tests, maintenance et mise à jour

52

Page 53: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Vue ingénieur et client

Page 54: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Disparition de l’ordinateur

L’ordinateur « traditionnels » disparait lentementRelativement à l’explosion des systèmes embarqués

Trois grandes tendances d’informatique omniprésente

Ubiquitous computingBut à long terme d’“information anytime, everywhere”

Pervasive computingExploitation de technologies déjà existantes

Ambient intelligenceCommunication pour maison future et smart cities

54

Page 55: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Hardware versus software

Hardware stabilisé, usinage grande échelle et cout récurrentCout software non récurrent, conception pour chaque application

t

€/année

Cout hardware

Cout software

55

Page 56: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Compétence

Compétences transversales, dépassent frontières des disciplinesImportance de comprendre le domaine d’application

domained’application

hardware électroniqued’interface

software algorithme

56

Page 57: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Compromis (1)

Choix et compromis entre les différentes disciplinesComprendre les contraintes des différents domaines

Plusieurs activités menées par l’ingénieur

Concevoir algorithmes de contrôle, traitement de signal...Concevoir microprocesseurs pour des applications embarquéesConcevoir logiciels (e.g. RTOS) pour systèmes embarquésFaire partie d’équipes des domaines d’applicationDévelopper senseurs/actuateurs (e.g. MEMS)

57

Page 58: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Compromis (2)

Optimisation de plusieurs critères outre la vitesse d’exécutionProcesseur, mais tout ce qui gravite autour

Trois catégories d’éléments à prendre en compte

Multi-objectifs, fiabilité, abordabilité, sécurité, sûreté,évolutivité et mise à l’échelle, ponctualitéMulti-discipline, hardware et software, algorithme de contrôle,interface électronique, domaine d’applicationCycle de vie, exigences, conception, usinage, déploiement,logistique et retraite

58

Page 59: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Client

Diminution des couts pour le client, plus petits et moins cherAppareil spécialisé pour ce qu’il désire

Nouvelles fonctionnalités part intégration dans d’autres objetsFonctions pas possibles avec appareils plus « traditionnels »

Améliorer les performances du systèmeConsommation plus contrôlée, meilleure batterie, etc.

59

Page 60: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Livres de référence

ISBN978-1-402-07690-9

ISBN978-0-070-14589-4

ISBN978-0-596-00983-0

60

Page 61: Programmation de systèmes embarqués : Introduction aux systèmes embarqués

Crédits

Photos des livres depuis Amazonhttps://www.flickr.com/photos/splorp/8165771383https://www.flickr.com/photos/tamaki/7568407https://www.flickr.com/photos/code_martial/2445612018https://www.flickr.com/photos/sozialhelden/9397521833https://www.flickr.com/photos/nicknormal/30419435085https://www.flickr.com/photos/gcollazo/65244956https://www.flickr.com/photos/davegray/6373321029https://www.flickr.com/photos/npobre/4484863605https://en.wikipedia.org/wiki/File:Intel_D4004.jpghttps://en.wikipedia.org/wiki/File:Unicom_141P_Calculator_3.jpghttps://www.flickr.com/photos/bradmontgomery/8007012137https://openclipart.org/detail/100267/cpu-central-processing-unithttps://www.flickr.com/photos/128474566@N03/15504868300

61