Architectures matérielles

Quelques dates :

  • 1945 : Premier ordinateur : l'ENIAC (Electronic Numerical Integrator And Computer) était capable de réaliser 100 000 additions par secondes, pesait 30 tonnes et consommait .
    05-ENIAC.jpg
    ENIAC
  • 1950 : Premier processeur à transistor
  • 1960 : Les missions Apollo développent l'AGC (Apollo Guidance Computer) suffisament léger (32 kg), économe en énergie et puissant (85 kHz) pour être embarqué dans un vaisseau spatial. Cette prouesse a pu être réalisé grâce à la technique d'intégration des circuits.
  • 1971 : Premier microprocesseur
    05-Premier%20processeur%20Intel.jpg
    commercialisé par Intel. Il intégrait 2300 transistors lui permettant d'atteindre la puissance de calcul de l'ENIAC.
  • 1981 : Premier PC
    05-premier-PC-IBM.jpg
    (Personal Computer) par IBM
  • 2012 : Lancement du Raspberry Pi, un ordinateur de la taille d'une carte bancaire.
    06-Raspberry%20Pi%201.jpg

L'architecture de base de tout outil numérique s'appuie sur trois éléments :

  • le processeur aussi appelé microprocesseur ou encore CPU (Central Processing Unit) qui effectue les calculs élémentaires,
  • la mémoire qui stocke les données nécessaires à toute opération,
  • les périphériques d'entrée/sortie.

L'interaction entre ces trois éléments est ce qui permet tous nos usages numériques. Les quatre étapes élémentaires d'un cycle d'exécution sont :

  1. le chargement de l'instruction élémentaire dans le CPU : cette instruction correspond à l'opération à effectuer,
  2. le chargement des opérandes : il s'agit des données sur lesquelles vont s'appliquer l'opération,
  3. le calcul,
  4. l'écriture du résultat dans la mémoire.
Principe de fonctionnement d
Principe de fonctionnement d'un processeur

La mémoire

La mémoire utilise le magnétisme dans les disques durs (HDD pour Hard Drive Disc) ou l'électricité pour la RAM, les clés USB, les SSD (Solid-State Drive) pour stocker les bits d'information.
Elle peut être :

  • permanente, quand les données sont conservées même sans alimentation électrique,
  • volatile, lorsqu'elle sont perdus sans alimentation électrique.

Dans un ordinateur, il existe plusieurs familles de mémoire que l'on peut hiérarchiser ainsi :

  • Les registres sont des mémoires de taille réduite mais d'accès extrèmement rapide car directement intégrée dans le processeur. Ils stockent l'instruction, les opérandes et le résultat.
  • La mémoire cache est une mémoire rapide destinée à accélérer l'accès à la mémoire centrale en stockant les données les plus utilisées.
  • La mémoire principale ou mémoire vive ou RAM (Random Access Memory) est l'espace principal de stockage du processeur. C'est une mémoire volatile qui au démarrage d'un ordinateur stocke d'abord les instructions et les données du système d'exploitation puis des programmes à exécuter. Quand un programme est fermé, il est déchargé de la mémoire vive.
  • La mémoire de masse (mémoire de stockage) est permanente et de grande capacité.
Hiérarchie des mémoires
Hiérarchie des mémoires
Code source (modification) :
Consulter le guide
sur Wikipédia.
Écrire du HTML
30s Mémorisation 0x - Réussite 0/0

Le processeur

Un microprocesseur est un circuit intégré sur puce composé de milliards de permettant d'exécuter des instructions. La taille des CPU est de plus en plus réduite grâce aux avancées scientifiques qui permettent des techniques de gravures en-dessous de la dizaine de nanomètres.
Selon la technologie utilisée, un microprocesseur peut effectuer un jeu d'instruction prédéfinie lors de se conception. Cela peut généralement être une opération arithmétique (addition, multiplication ...) ou une opération logique (et, ou ...).
Historiquement, il existe deux familles de microprocesseurs :

  • les processeurs RISC (Reduced Instruction Set Computer) qui disposent de peu d'instructions mais très rapide à effectuer,
  • les processeurs CISC (Complex Instructions Set Computer) qui proposent des instructions plus élaborées mais qui nécessitent un temps plus long d'exécution.

Les évolutions technologiques actuelles tendent à faire disparaître cette distinction.

Un processeur fonctionne de manière cadencées. Il est caractérisé par la fréquence à laquelle il réalise un cycle d'exécution. Pour les processeurs d'aujourd'hui cette fréquence est de l'ordre du GigaHertz soit 1 milliards d'opérations par seconde.
Il peut être constitué de plusieurs coeurs, ce qui lui permet d'exécuter des instructions en parallèle, et d'augmenter encore ses performances. Cette stratégie multicoeurs permet de compenser les limitations de l'augmentation de la fréquence qui entraîne une plus forte consommation électrique et donc un besoin de dissipation d'énergie thermique.

Schéma du circuit intégré d
Schéma du circuit intégré d'un processeur Intel Core I7
Survoler chaque processeur pour faire apparaître le schéma de son circuit intégré. Y retrouver les différents composants (coeurs et mémoires cache) intégrés et déterminer leur nombre de coeurs respectif.
  • Processeur AMD Opteron
    05-AMD_Opteron_processor.jpg
    Le processeur AMD Opteron possède 4 coeurs.
  • Processeur AMD Richland
    05-Processeur-AMD-Richland.jpg
    Le processeur AMD Richland possède 2 coeurs.
  • Processeur Intel Core I7 980X
    05-Processeur%20Intel%20Core%20I7%20980X.jpg
    Le processeurs Intel Core I7 980X possède 6 coeurs.
Combien d'opérations par seconde peut théoriquement effectuer :
  1. le processeur AMD Am286 simple-coeur cadencé entre 8 et 20 MHz, sorti en 1983 ?
    entre 8 et 20 millions
  2. le processeur Intel Pentium II simple-coeur cadencé à 233 MHz, sorti en 1997 ?
    233 millions
  3. le processeur AMD Athlon simple-coeur cadencé entre 850 et 1733 MHz, sorti en 2001 ?
    entre 850 millions et 1,733 milliard
  4. le processeur AMD Athlon 64 X2 avec deux coeurs cadencés à 2,2 GHz sorti en 2006 ?
    4,4 milliards
  5. e processeur Intel Core i7-1160G7 possédent 4 coeurs cadencés à 4,40 GHz sorti en 2020 ?
    17,6 milliards
  6. le processeur Intel Core i7-10875H de 8 coeurs cadencés à 5,10 Ghz sorti en 2020 ?
    40,8 milliards
  7. le processeur AMD Ryzen Threadripper 3990X possédant 64 coeurs cadencés entre 2,9 et 4,3 GHz sorti en 2020 ?
    entre 185,6 et 275,2 milliards
Trouver, installer et utiliser une application pour connaître l'état du CPU de votre smartphone.
CPU-Z pour Android ou CPU-x sur iOS
Code source (modification) :
Consulter le guide
sur Wikipédia.
Écrire du HTML
30s Mémorisation 0x - Réussite 0/0

Système intégré sur puce

La miniaturisation des composants électroniques permet d'intégrer tous les composants utiles à une fonction sur une même puce.
Un système intégré sur puce ou SoC (System On Chip) vise à effectuer une tâche précise, de manière complète, robuste et rapide en regroupant sur une unique puce les différents composants nécessaire à sa fonction.

Les composants qui peuvent être intégrés sont nombreux : CPU, mémoires, dispositifs de communication sans fil, dispositifs d'entrée/sortie, capteurs ... Ce phénomène d'intégration est apparue avec l'ère des smartphones et l'émergence de systèmes tout-en-un. Presque tout le contenu d'un ordinateur se retrouve intégré sur une seule puce dans un smartphone. Il en résulte que les composants sont bien plus interconnectés qu'ils ne le sont dans un ordinateur classique où chaque composant était plus ou moins indépendant et liés par une carte mère.

Les principaux concepteurs de SoC, aussi appelés «fondeurs», sont : AMD, Apple, Broadcom, Intel, Nvidia, Qualcomm, Samsung et Texas Instrument.

Par abus de langage, on appelle toujours "processeur", ce qui est en réalité des SoC. En effet, les CPU d'aujourd'hui intègre tous de la mémoire. C'est encore plus vrai pour les processeurs de téléphones portables qui intègre, sur une même puce, de plus en plus des composants supplémentaire tels que :

  • un processeur graphique (GPU : Graphics Processing Unit) qui est l'équivalent de la carte graphique dans un PC,
  • des circuits radio pour le Wifi et le Bluetooth,
  • un circuits de traitement d'image pour l'appareil photo embarqué,
  • des circuits de communication 4G, 5G, ...
  • un processeur neuronnal (NPU : Neural Processing Unit) qui prend en charge l'interlligence artificielle.

Avantages :

  • leur faible encombrement est un atout majeur pour les appareils mobiles,
  • leur faible consommation énergétique due à la grande proximité des composants qui limite la longueur des connecteurs et ainsi les pertes par effet Joule,
  • leur rapidité également due à la grande proximité des composants,
  • leur coût réduit du fait de la facile automatisation de la chaîne de production. En effet tous les composants sont gravés en une seule fois sur une puce unique.

Inconvénients :

  • leur coût de recherche et développement est plus important,
  • leur du fait de l'impossible évolutivité. En effet les composants intégrés ne peuvent être séparés et remplacés individuellement,
  • leur faible durée de vie. La durée de vie du SoC correspond à celle de son composant le plus fragile. Plus il y a de composants intégrés, plus il y a de chance qu'un composant soit défaillant rapidement et condamne le SoC tout entier.

Exemples :

  • les appareils photo numérique intègrent des SoC de plus en plus complets pour le traitement d'image, offrant des fonctions qui étaient auparavant réalisées par des logiciels.
  • la carte mère d'un téléphone portable Samsung Galaxy S posséde plusieurs SoC :
    Carte mère d
    Carte mère d'un Samsung Galaxy S
    • en rouge : le bluetooth
    • en turquoise : le tuner radio
    • en orange : le contrôleur de son
    • en jaune : un amplificateur de réseau
    • en violet : un contrôleur de communication 3G
    • en bleu : circuit de transmission/réception
  • le Raspberry Pi qui est un nano-ordinateur créé par des professeurs de l'université de Cambridge et qui dans sa version 4 est équipé du SoC Broadxom BCM2711 (en rouge).
    Raspberry Pi 4
    Raspberry Pi 4
Effectuer des recherches sur les SoC ci-dessous afin de déterminer leurs caractéristiques : fabricant, taille de gravure, mémoire, fréquence, composants intégrées ...
  • Raspberry PI : Soc Broadcom BCM2711
  • Apple iPhone 11 : SoC A13 Bionic
  • Samsung Galaxy S11 : SoC Exynos 990
  • Nintendo Switch : SoC Nvidia Tegra
Effectuer une recherche pour identifier le SoC de votre smartphone et déterminer ses caractéristiques.
Code source (modification) :
Consulter le guide
sur Wikipédia.
Écrire du HTML
30s Mémorisation 0x - Réussite 0/0/2

Systèmes d'exploitation

Quelques dates :

  • 1981 : MS-DOS est le premier système d'exploitation pour PC
  • 1985 : Lancement de Windows 1.0
    05-windows-1.jpg
    ajoutant un surcouche graphique à MS-DOS.
  • 1986 : Lancement de Mac OS 1.0
    06%20-%20FirstVersions_Mac-OS_Desktop.png
    , premier système d'exploitation public à interface graphique (doté de fenêtres, icônes, menus et souris) développé par Apple pour équiper ses ordinateurs personnels Macintosh.
  • 1991 : Création de Linux
    05-logo-linux-1991.png
    , système d'exploitation libre
  • 2007 : Android
    05-logo-android-2007.png
    est créé pour l'informatique mobile
  • 2008 : Première version d'iOS, système d'exploitation des iPhone.
Rechercher les parts de marché actuelles, des OS d'ordinateur d'un part et des OS de smartphone d'autre part.

Ses fonctions

Souvent appelé l'OS (Operating System), le système d'exploitation est un ensemble de programme qui permet d'utiliser les éléments physiques d'un ordinateur pour exécuter les applications nécessaires à l'utilisateur. L'élément fondamental du système d'exploitation est son noyau, c'est lui qui permet l'accès aux ressources matérielles.
Toute machine est doté d'un OS qui a pour fonction :

  • de charger les programmes depuis la mémoire de masse,
  • de gérer leur exécution en leur créant des processus et en ordonnançant les tâches,
  • de gérer les ressources (microprocesseur, mémoire, disques, carte graphique, carte réseau, clavier, souris, ...),
  • de gérer des accès aux ressources pour permettre : d'une part à tous les utilisateurs de travailler simultanément, et d'autre part de ne permettre l'utilisation d'une ressource qu'aux utilisateurs autorisés.
  • de traiter les interruptions,
  • d'assurer la sécurité globale du système.
Architecture globale d
Architecture globale d'un système d'exploitation
Historique des logos de Windows
Historique des logos de Windows
Code source (modification) :
Consulter le guide
sur Wikipédia.
Écrire du HTML
1 min Mémorisation 0x - Réussite 0/0

Les processus

Pour permettre le fonctionnement d'un ordinateur, un système d'exploitation multitâche doit permettre l'exécution simultanée de plusieurs applications par plusieurs utilisateurs. Pour cela, il crée et gère l'exécution de nombreux processus. Attention à ne pas confondre programme et processus.
Un processus est un programme en cours d'exécution. Un programme exécuté/instancié plusieurs fois (dans le temps ou par plusieurs utilisateurs simultanément) génère autant de processus. On dit que le système d'exploitation exécute des instances d'un programme, chargées en mémoire, dans des processus dédiés.
Chaque processus possède en mémoire les instructions à exécuter et ses données. L'OS multitâche exécute chaque processus dans un environnement mémoire cloisonnée et protégé. Par sécurité, un processus ne peut lire ou écrire les données en mémoire que dans la zone que le système d'exploitation lui a dédié.

Les processus affichés dans le gestionnaire des tâches de Windows 10
Les processus affichés dans le gestionnaire des tâches de Windows 10
  • Sur votre ordinateur sous Windows, faites la combinaison de touches CTRL + ALT + SUPR et sélectionner "Gestionnaire des tâches" pour observer tous les processus en cours sur votre machine.
  • Sur les postes du lycée, l'accès au gestionnaire des tâches est verrouillé. Il est possible de créer un raccourci vers le terminal Windows Powershell avec un clic droit dans votre répertoire de travail puis "nouveau raccourci" avec l'adresse :
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    La commande ps permet de visualiser les processus comme dans le gestionnaire des tâches.
  • Sous Linux, depuis le terminal, la commande pour afficher les processus est également ps. Utiliser l'émulateur du Terminal Linux en ligne JSLinux pour tester cette commande. Un tableau apparait avec plusieurs champs tels que PID (Identifiant du processus), UID ou USER (Identifiant de l'utilisateur), TIME (temps d'exécution) et CMD ou COMMAND (nom de la commande du processeurs).
  • En utilisant Python, avec le module os :
    import os
    print(os.popen('wmic process get description, processid').read())

L'ordonnanceur

L'OS doit permettre à toutes les applications et tous les utilisateurs de travailler en même temps, mais cette simultanéité n'est qu'illusion. En réalité, il va donner l'impression à chacun qu'il est seul à utiliser l'ordinateur et ses ressources physiques. Cela nécessite une gestion complexe des processus qui est réalisée par une partie spécifique du noyau du système d'exploitation, appelé : l'ordonnanceur (scheduler).

Un cœur de processeur ou un périphérique ne peuvent pas être partagés. Ce qui est réellement partagé c'est leur temps d'utilisation. L'ordonnanceur alloue la ressource à tour de rôle à chaque processus sur un intervalle de temps très courts qui peut varié selon les besoin. Le plus petit intervalle de temps allouable est appelé le quantum de temps du latin quantum qui prend ici le même sens que celui utilisé en physique : plus petite mesure indivisible. Généralement, un quantum de temps dure 20 à 50 ms suivant les OS et les algorithmes d'ordonnancement utilisé.

Les objectifs de l'ordonnanceur sont :

  • de minimiser le temps de traitement du processus d'un utilisateur,
  • de garantir l'équité entre les différents processus,
  • d'optimiser l'utilisation des ressources,
  • d'éviter les blocages.

Les états d'un processus

En première on a vu qu'un microprocesseur possède des mémoires appelées registres. C'est dans ses registres que les instructions d'un processus en cours d'exécution sont copiées. Lorsqu'un processus est interrompu pour laisser la place à un autre processus, l'état des registres au moment de l'interruption, aussi appelée contexte d'exécution (execution context), doit être sauvegardé afin que lorsque ce sera de nouveau son tour d'être exécuté, son contexte d'exécution soit parfaitement rétabli et qu'il puisse poursuivre son exécution. Cette étape de remplacement d'un contexte d'exécution par un autre s'appelle un changement de contexte (context switching).

Tous les processus qui cohabitent en mémoire à un instant donné ne sont pas forcément en attente d'un quantum de temps processeur. Ils peuvent attendre d'avoir un accès à une autre ressource (périphérique d'entrée/sortie) ou bien ils peuvent également attendre le résultat d'un autre processus. Dans ces cas là, le processus n'est pas éligible à un quantum de temps processeur et on dit qu'il est dans l'état "bloqué". Au contraire quand un processus a tout ce qui lui faut et n'attend qu'un quantum de temps processeur, on dit qu'il est dans l'état "prêt".

états des processus
Associer chacune des descriptions suivantes à l'état du processus correspondant :
  • Un processus a été attaché à une instance d'un programme et il n'a encore jamais été exécuté. Son contexte d'exécution initial doit être préparé.
    Nouveau
  • La dernière instruction de processus a été exécutée. Ses ressources affectées et son environnement mémoire vont être libérés.
    Terminé
  • Un ou plusieurs quantums de temps processeur ont été alloués au processus. Son contexte d'exécution a été copié dans les registres et ses instructions sont exécutées jusqu'à l'écoulement du temp imparti.
    En cours d'exécution
  • Le processus est en attente d'une ou plusieurs ressources (réseau, périphériques d'entrée/sortie, action de l'utilisateur, ...) ou du résultat d'un autre processus. Il n'est pas éligible à un quantum de temps processeur.
    Bloqué
  • Le contexte d'exécution est sauvegardé et complet. Le processus est en attente de quantums de temps processeur.
    Prêt
Code source (modification) :
Consulter le guide
sur Wikipédia.
Écrire du HTML
30s Mémorisation 0x - Réussite 0/0

Les algorithmes d'ordonnancement

Il existe plusieurs algorithmes d'ordonnancement de processus. Ils ont tous pour but de répartir les quantums de temps de façon optimale entre tous les processus.

  • L'algorithme du premier arrivé, premier servi ou FCFS (First-Come First-Served) : Les processus sont stockés dans une file. La ressource est affectée dans l'ordre d'arrivée des processus. Lorsqu'un processus se bloque, il laisse la place au suivant et se replace en bout de file.
    Exemple : La file d'attente d'impressions des documents pour une imprimante.
    Avantage : L'algorithme est simple et l'ordonnancement est équitable.
    Inconvénient : Les processus faisant beaucoup d'appels à des périphériques sont défavorisés.
  • L'algorithme du tourniquet ou RR (Round Robin) : La ressource est partagé à tour de rôle entre les processus.
  • L'algorithme du prioritaire : La ressource est affectée par ordre de priorité des processus. Cette priorité peut être varier dynamiquement. Des processus qui sont bloqués et n'ont pas utiliser complètement leurs quantums de temps alloués peuvent obtenir une priorité.
    Exemple : Si le quantum de temps est de 50 ms et que le processus l'utilise intégralement, il peut recevoir une priorité de 50/50 = 1 tandis qu'un processus qui n'aurait utilisé que 10 ms du quantum de temps, recevrait une priorité de 50/10 = 5 et serait ainsi prioritaire sur le premier.
  • L'algorithme du plus court d'abord ou SJF (Shortest Job First) : C'est difficile d'évaluer le temps d'exécution d'un processus mais c'est ce critère qui est utilisé pour prioriser leurs exécutions.
    Exemple : C'est typiquement cet algorithme qui est appliqué aux caisses d'un supermarché, lorsqu'un client laisse passé un autre client ayant peu d'article.
    Avantage : Le temps de terminaison des processus est meilleur en moyenne.
    Inconvénient : Si plusieurs processus plus cours arrivent sans cesse, les plus long ne sont jamais exécutés.
  • L'algorithme du temps restant le plus court : est une version plus agressive du précédent.
    Exemple : Un client avec très peu d'article arrive en caisse et interrompt (entre deux quantums de temps) un autre client avec beaucoup d'article qui été en train de passer.
Voici trois processus et leurs instructions :
Processus A
Priorité 2
  • Instruction A1
  • Instruction A2
  • Instruction A3
Processus B
Priorité 1
  • Instruction B1
  • Instruction B2
  • Instruction B3
  • Instruction B4
  • Instruction B5
  • Instruction B6
Processus C
Priorité 3
  • Instruction C1
  • Instruction C2
  • Instruction C3
  • Instruction C4
  • Donner l'ordonnancement de ces instruction selon l'algorithme FCFS.
    FCFS : A1 A2 A3 B1 B2 B3 B4 B5 B6 C1 C2 C3 C4
  • Donner l'ordonnancement de ces instruction selon l'algorithme du tourniquet.
    Tourniquet : A1 B1 C1 A2 B2 C2 A3 B3 C3 B4 C4B5 B6
  • Donner l'ordonnancement de ces instruction selon l'algorithme du prioritaire.
    Prioritaire : B1 B2 B3 B4 B5 B6 A1 A2 A3 C1 C2 C3 C4
  • Donner l'ordonnancement de ces instruction selon l'algorithme SJF.
    SJF : A1 A2 A3 C1 C2 C3 C4B1 B2 B3 B4 B5 B6
Code source (modification) :
Consulter le guide
sur Wikipédia.
Écrire du HTML
1 min Mémorisation 0x - Réussite 0/0

Le risque de l'interblocage (deadlock)

Une situation d'interblocage se produit lorsque deux processus se bloquent mutuellement soit parce qu'ils monopolisent chacun une ressource que l'autre attend pour poursuivre son exécution, soit parce qu'ils attendent un résultat l'un de l'autre.

Le processus A est dépendant du processus B : pas d'interblocage
Les processus A et B sont interdépendant : interblocage

Pour éviter une situation d'interblocage, il y a l'utilisation de mutex ou l'algorithme du Banquier.

En anglais :

  • processeur : CPU (Central Processing Unit)
  • système intégré sur puce : SoC (System on a Chip)
  • processeurs neuronnaux : NPU (Neural Processing Unit)
  • processeur graphique : GPU (Graphics Processing Unit)
  • système d'exploitation (SE) : operating system (OS)
  • ordonnanceur : scheduler
  • ordonnancement de processus : scheduling
  • contexte d'exécution : execution context
  • changement de contexte d'exécution : context switching
  • premier arrivé, premier servi : FCFS (First-Come First-Served)
  • plus court d'abord : SJF (Shortest Job First)
  • interblocage : deadlock

Bibliographie :

Ressources :

  • Deus Ex Silicium est le premier projet francophone de chaine d'électronique dédiée à la science des semi-conducteurs et à leurs très nombreuses applications. Imaginée pour les ingénieurs, hackeurs, amateurs, étudiants, geeks ou passionnés de technologie