les héritages des conceptions antérieures, telles que le moteur de différence de Babbage et les systèmes de cartes perforées mainframe des années 1970, ont un impact significatif sur les systèmes informatiques d’aujourd’hui. Dans mon premier article de cette série historique, Computer history and modern computers for sysadmins, j’ai discuté de plusieurs précurseurs de l’ordinateur moderne et énuméré les caractéristiques qui définissent ce que nous appelons un ordinateur aujourd’hui.,
dans cet article, je discute de L’UNITÉ CENTRALE DE TRAITEMENT (CPU), y compris ses composants et ses fonctionnalités. La plupart des sujets renvoient au premier article, alors assurez-vous de le lire si vous ne l’avez pas déjà fait.
L’unité centrale de traitement (CPU)
le CPU dans les ordinateurs modernes est l’incarnation du « moulin » dans le moteur de différence de Babbage. Le terme unité centrale de traitement est né dans les brumes du temps de l’ordinateur quand une seule armoire massive contenait les circuits nécessaires pour interpréter les instructions de programme au niveau de la machine et effectuer des opérations sur les données fournies., L’unité centrale de traitement a également terminé tous les traitements pour tous les périphériques connectés. Les périphériques comprenaient des imprimantes, des lecteurs de cartes et des périphériques de stockage précoces tels que des lecteurs de batterie et de disque. Les périphériques modernes ont eux-mêmes une quantité importante de puissance de traitement et déchargent certaines tâches de traitement du processeur. Cela libère le processeur des tâches d’entrée/sortie afin que sa puissance soit appliquée à la tâche principale à accomplir.
Les premiers ordinateurs n’avaient qu’un seul processeur et ne pouvaient effectuer qu’une seule tâche à la fois.,
nous conservons le terme CPU aujourd’hui, mais maintenant il se réfère au package de processeur sur une carte mère typique. La Figure 1 affiche un package de processeur Intel standard.
la Figure 1: Un processeur Intel Core i5 processeur (Jud McCranie via Wikimedia Commons, CC BY-SA 4.0).
Il n’y a vraiment rien à voir ici autre que le processeur lui-même. Le paquet de processeur est une puce contenant le ou les processeurs scellés à l’intérieur d’un récipient métallique et montés sur une petite carte de circuit imprimé (PC)., Le paquet est simplement déposé en place dans la prise CPU sur une carte mère et sécurisé avec un agencement de levier de verrouillage. Un refroidisseur de processeur se fixe au package de processeur. Il existe plusieurs sockets physiques différents avec un nombre spécifique de contacts, donc obtenir le bon paquet pour s’adapter à la prise de la carte mère est essentiel si vous construisez vos propres ordinateurs.
Comment le PROCESSEUR fonctionne
regardons le CPU plus en détail. La Figure 2 est un diagramme conceptuel d’un CPU hypothétique afin que vous puissiez visualiser les composants plus facilement., La RAM et l’horloge système sont ombrées car elles ne font pas partie du processeur et ne sont affichées que pour plus de clarté. En outre, aucune connexion entre L’horloge CPU et l’Unité de commande aux composants CPU n’est établie. Il suffit de dire que les signaux de l’horloge et de l’Unité de commande font partie intégrante de tous les autres composants.
la Figure 2: Une procédure simplifiée schéma conceptuel d’un type de CPU.
Cette conception ne semble pas particulièrement simple, mais la réalité est encore plus compliquée., Ce chiffre est suffisant pour nos besoins, sans être trop complexe.
Unité logique arithmétique
l’unité logique arithmétique (ALU) exécute les fonctions arithmétiques et logiques qui sont le travail de l’ordinateur. Les registres A et B contiennent les données d’entrée et l’accumulateur reçoit le résultat de l’opération. Le registre d’instructions contient l’instruction que L’ALU doit exécuter.
par exemple, lors de l’ajout de deux nombres, un nombre est placé dans le registre A et l’autre dans le registre B. L’ALU effectue l’addition et place le résultat dans l’accumulateur., Si l’opération est logique, les données à comparer sont placées dans les registres d’entrée. Le résultat de la comparaison, un 1 ou 0, est mis dans l’accumulateur. Qu’il s’agisse d’une opération logique ou arithmétique, le contenu de l’accumulateur est ensuite placé dans l’emplacement de cache réservé par le programme pour le résultat.
Il existe un autre type d’opération effectuée par l’ALU. Le résultat est une adresse en mémoire, et il est utilisé pour calculer un nouvel emplacement dans la mémoire de chargement des instructions. Le résultat est placé dans le registre du pointeur d’instruction.,
Registre D’instructions et pointeur
le pointeur d’instructions spécifie l’emplacement en mémoire contenant la prochaine instruction à exécuter par la CPU. Lorsque le CPU est terminée l’exécution de l’instruction, l’instruction suivante est chargé dans le registre d’instructions à partir de l’emplacement mémoire pointé par le pointeur d’instruction.
Une fois l’instruction chargée dans le registre d’instructions, le pointeur du registre d’instructions est incrémenté d’une adresse d’instruction. L’incrémentation permet d’être prêt à passer à l’instruction suivante dans le registre d’instructions.,
Cache
le processeur n’accède jamais directement à la RAM. Les processeurs modernes ont une ou plusieurs couches de cache. La capacité du processeur à effectuer des calculs est beaucoup plus rapide que la capacité de la RAM à fournir des données au processeur. Les raisons en sont au-delà de la portée de cet article, mais je vais l’Explorer plus en détail dans le prochain article.
la mémoire Cache est plus rapide que la RAM du système, et elle est plus proche du processeur car elle se trouve sur la puce du processeur. Le cache fournit un stockage de données et des instructions pour empêcher le processeur d’attendre que les données soient récupérées à partir de la RAM., Lorsque la CPU a besoin de données – et que les instructions du programme sont également considérées comme des données-le cache détermine si les données sont déjà en résidence et les fournit à la CPU.
Si les données demandées ne se trouvent pas dans le cache, elles sont extraites de la RAM et utilisent des algorithmes prédictifs pour déplacer davantage de données de la RAM dans le cache. Le contrôleur de cache analyse les données demandées et tente de prédire quelles données supplémentaires seront nécessaires à partir de la RAM. Il charge les données anticipées dans le cache., En gardant certaines données plus proches du processeur dans un cache plus rapide que la RAM, le processeur peut rester occupé et ne pas gaspiller de cycles en attente de données.
notre CPU simple a trois niveaux de cache. Les niveaux 2 et 3 sont conçus pour prédire quelles données et quelles instructions de programme seront nécessaires ensuite, déplacer ces données de la RAM et les rapprocher toujours plus du processeur pour être prêt en cas de besoin. Ces tailles de cache varient généralement de 1 Mo à 32 Mo, en fonction de la vitesse et de l’utilisation prévue du processeur.
le cache de niveau 1 est le plus proche de la CPU. Dans notre CPU, il existe deux types de cache L1., L1i est le cache d’instructions, et L1d est le cache de données. Les tailles de cache de niveau 1 vont généralement de 64 KO à 512 Ko.
unité de gestion Mémoire
L’unité de gestion mémoire (MMU) gère le flux de données entre la mémoire principale (RAM) et le CPU. Il fournit également une protection de la mémoire requise dans les environnements multitâches et la conversion entre les adresses de mémoire virtuelle et les adresses physiques.
horloge CPU et unité de contrôle
tous les composants CPU doivent être synchronisés pour fonctionner ensemble en douceur., L’Unité de commande exécute cette fonction à une vitesse déterminée par la vitesse d’horloge et est responsable de diriger les opérations des autres unités en utilisant des signaux de synchronisation qui s’étendent dans toute la CPU.
Random access memory (RAM)
bien que la RAM, ou stockage principal, soit montrée dans ce diagramme et dans le suivant, elle ne fait pas vraiment partie de la CPU. Sa fonction est de stocker des programmes et des données afin qu’ils soient prêts à l’emploi lorsque le processeur en a besoin.
comment ça marche
Les processeurs fonctionnent sur un cycle géré par l’Unité de contrôle et synchronisé par l’horloge CPU., Ce cycle est appelé le cycle D’instruction CPU, et il se compose d’une série de composants fetch/decode/execute. L’instruction, qui peut contenir des données statiques ou des pointeurs vers des données variables, est récupérée et placée dans le registre d’instructions. L’instruction est décodée et toutes les données sont placées dans les registres de données A et B. L’instruction est exécutée en utilisant les registres A et B, avec le résultat mis dans l’accumulateur. La CPU augmente ensuite la valeur du pointeur d’instruction de la longueur de la précédente et recommence.
le cycle D’instruction CPU de base ressemble à ceci.,
la Figure 3: La base du PROCESSEUR de cycle d’instruction.
le besoin de vitesse
bien que le processeur de base fonctionne bien, les processeurs qui fonctionnent sur ce cycle simple peuvent être utilisés encore plus efficacement. Il existe plusieurs stratégies pour améliorer les performances du processeur, et nous en examinons deux ici.
suralimentation du cycle d’instruction
un problème rencontré par les premiers concepteurs de CPU était une perte de temps dans les différents composants de CPU., L’une des premières stratégies pour améliorer les performances du processeur a été de chevaucher les parties du cycle D’instruction du processeur pour utiliser les différentes parties du processeur plus pleinement.
Par exemple, lorsque l’instruction a été décodé, la prochaine est récupérée et placée dans le registre d’instructions. Dès que cela s’est produit, le pointeur d’instruction est mis à jour avec l’adresse mémoire de l’instruction suivante. L’utilisation de cycles d’instruction qui se chevauchent est illustrée à la Figure 4.,
la Figure 4: Le PROCESSEUR de cycle d’instruction avec chevauchement.
Cette conception est belle et lisse, mais des facteurs tels que l’attente d’E / S peuvent perturber le flux. Ne pas avoir les données ou les instructions appropriées dans le cache nécessite que le MMU localise les bonnes et les déplace vers le processeur, ce qui peut prendre un certain temps. Certaines instructions prennent également plus de cycles CPU que d’autres, interférant avec le chevauchement en douceur.
néanmoins, il s’agit D’une stratégie puissante pour améliorer les performances du processeur.,
Hyperthreading
Une autre stratégie pour améliorer les performances du processeur est l’hyperthreading. Hyperthreading fait fonctionner un cœur de processeur unique comme deux processeurs en fournissant deux flux de données et d’instructions. L’ajout d’un deuxième pointeur d’instruction et d’un registre d’instructions à notre CPU hypothétique, comme indiqué sur la Figure 5, le fait fonctionner comme deux CPU, exécutant deux flux d’instructions distincts pendant chaque cycle d’instructions. En outre, lorsqu’un flux d’exécution se bloque en attendant les données-encore une fois, les instructions sont également des données-le deuxième flux d’exécution continue le traitement., Chaque cœur qui implémente l’hyperthreading est l’équivalent de deux Processeurs dans sa capacité à traiter les instructions.
la Figure 5: Un schéma conceptuel d’un PROCESSEUR avec la technologie hyperthreading.
rappelez-vous qu’il s’agit d’un diagramme et d’une explication très simplifiés de notre CPU hypothétique. La réalité est beaucoup plus complexe.
plus de terminologie
j’ai rencontré beaucoup de terminologie CPU différente., Pour définir la terminologie un peu plus explicitement, regardons le CPU lui-même en utilisant la commande lscpu
.
Le processeur Intel illustré ci-dessus est un paquet qui se branche sur une seule prise sur la carte mère. Le package de processeur contient six cœurs. Chaque cœur est capable d’hyperthreading, de sorte que chacun peut exécuter deux threads simultanés pour un total de 12 processeurs.
mes définitions:
- Core – un core est la plus petite unité matérielle physique capable d’effectuer la tâche de traitement. Il contient un ALU et un ou deux ensembles de registres de support., Le deuxième ensemble de registres et de circuits de support permet l’hyperthreading. Un ou plusieurs cœurs peuvent être combinés en un seul paquet physique.
- CPU – une unité matérielle logique capable de traiter un seul thread d’exécution. L’usage moderne du terme unité centrale de traitement désigne le nombre total de threads qu’un processeur est capable d’exécuter simultanément. Un processeur monocœur qui ne prend pas en charge l’hyperthreading est l’équivalent d’un seul processeur. Dans ce cas, CPU et core sont synonymes., Un processeur hyperthreading avec un seul cœur est l’équivalent fonctionnel de deux processeurs. Un processeur hyperthreading avec huit cœurs est l’équivalent fonctionnel de 16 processeurs.
- Package-le composant physique qui contient un ou plusieurs cœurs, comme celui illustré à la Figure 1 ci-dessus.
- processeur – 1) un dispositif qui traite les instructions du programme pour manipuler les données. 2) fréquemment utilisé comme synonyme de paquet.,
- Socket-parfois utilisé comme un autre synonyme de package, mais il se réfère plus précisément à la prise physique sur la carte mère dans laquelle le package de processeur est inséré.
les Termes socket, processeur et package sont souvent utilisés de manière interchangeable, ce qui peut causer une certaine confusion. Comme nous le voyons dans les résultats de la commande lscpu
ci-dessus, Intel nous fournit sa propre terminologie, et je considère que la source faisant autorité., En réalité, nous utilisons tous ces termes de différentes manières, mais tant que nous nous comprenons à un moment donné, c’est ce qui compte vraiment.
notez que le processeur ci-dessus a deux caches de niveau 1 de 512 Ko chacun, un pour les instructions (L1i) et un pour les données (L1d). Le cache de niveau 1 est le plus proche du processeur, et il accélère les choses pour que les instructions et les données soient séparées à ce stade. Les caches de niveau 2 et de niveau 3 sont plus grands, mais les instructions et les données coexistent dans chacun.
Qu’est-ce que tout cela signifie?
Bonne question., Au début des mainframes, chaque ordinateur n’avait qu’un seul processeur et était incapable d’exécuter plus d’un programme simultanément. Le mainframe peut exécuter la paie, puis la comptabilité des stocks, puis la facturation des clients, etc., mais une seule application peut s’exécuter à la fois. Chaque programme devait se terminer avant que l’opérateur du système puisse commencer le suivant.
certaines premières tentatives d’exécution de plusieurs programmes à la fois adoptaient une approche simple et visaient à une meilleure utilisation d’un seul processeur., Par exemple, program1 et program2 ont été chargés et program1 s’est exécuté jusqu’à ce qu’il soit bloqué en attendant que les E/S se produisent. À ce stade, program2 s’est exécuté jusqu’à ce qu’il soit bloqué. Cette approche a été appelée multi-traitement et a permis d’utiliser pleinement le temps informatique précieux.
Les premières tentatives de multitâche impliquaient toutes de basculer très rapidement le contexte d’exécution d’un seul processeur entre les flux d’exécution de plusieurs tâches. Cette pratique n’est pas vraie multitâche telle que nous la comprenons car, en réalité, un seul thread d’exécution est traité à la fois. Il est plus correctement appelé temps de partage.,
les ordinateurs modernes, des montres intelligentes et des tablettes aux superordinateurs, prennent tous en charge le véritable multitâche avec plusieurs processeurs. Plusieurs processeurs permettent aux ordinateurs d’exécuter plusieurs tâches simultanément. Chaque CPU remplit ses propres fonctions en même temps que tous les autres CPU. Un processeur à huit cœurs avec hyperthreading (c’est-à-dire 16 processeurs) peut exécuter 16 tâches simultanément.
réflexions finales
Nous avons examiné un CPU conceptualisé et simplifié pour en apprendre un peu plus sur les structures. J’ai à peine écrémé la surface de la fonctionnalité du processeur dans cet article., Vous pouvez en savoir plus en prenant les liens intégrés pour les sujets que nous avons explorés.
rappelez-vous que les diagrammes et les descriptions de cet article sont purement conceptuels et ne représentent aucun processeur réel.
dans la prochaine partie de cette série, je vais regarder RAM et les lecteurs de disque comme différents types de stockage et pourquoi chacun est nécessaire pour les ordinateurs modernes.