- Architectures de processeur
- Architecture du jeu d'instructions RISC et CISC
- Calcul de jeu d'instructions complexes (CISC)
- Calcul de jeu d'instructions réduit (RISC)
Le système embarqué est le cœur et le cœur de la plupart des produits électroniques disponibles sur le marché. C'est la mise en œuvre de l'ingénierie dans laquelle le matériel rencontre le logiciel. Nous sommes entourés d'un monde de systèmes embarqués, avec des mini-ordinateurs dans les serrures de portes biométriques, les avions, les voitures, les stimulateurs cardiaques, etc.
Nous avons déjà réfléchi au fonctionnement de notre corps, aux systèmes nerveux, au cerveau et à la capacité d'effectuer plusieurs tâches à la fois. Si vous combinez toutes ces fonctions, vous obtiendrez une image approximative d'un système biologique embarqué. Notre cerveau cache le détail complexe de son fonctionnement qui se déroule à l'intérieur mais nous permet pourtant de le contrôler au maximum de son potentiel. La même complexité s'applique au processeur ou au contrôleur utilisé dans les systèmes embarqués. Ils cachent des détails complexes et nous fournissent une interface de haut niveau sur laquelle travailler. Pour le niveau d'abstraction, on peut rapporter comment le code pour ajouter deux nombres dans un langage de programmation de haut niveau fait que les registres dans les puces manipulent des bits et donnent une sortie à l'utilisateur.
Architectures de processeur
L'unité centrale de traitement, faisant référence à la fois au microprocesseur et au microcontrôleur, effectue des tâches spécifiques à l'aide d'une unité de contrôle (CU) et d'une unité logique arithmétique (ALU). Comme les instructions sont délivrées à partir de la RAM, la CPU agit à l'aide de ses deux unités d'aide en créant des variables et en leur attribuant des valeurs et de la mémoire. Il est vraiment important de savoir comment le CPU effectue toutes ces actions à l'aide de son architecture. Si vous souhaitez en savoir plus sur le fonctionnement d'un microcontrôleur, vous pouvez lire cet article de base sur les microcontrôleurs.
Chaque CPU est associée à une mémoire pour stocker le programme et les données. Le programme et les données fonctionnent avec la CPU pour obtenir la sortie. Le programme fournit les instructions tandis que les données fournissent les informations sur lesquelles travailler. Pour accéder au programme et aux données CPU utilise des bus, ces bus sont des fils, plus précisément ce sont les traces de fils comme vous l'avez peut-être vu sur les circuits imprimés. Au cours de ces années, les microcontrôleurs et microprocesseurs ont évolué en adaptant diverses architectures, en fonction des exigences de l'application ou de la conception, le choix du microcontrôleur est influencé par le type d'architecture utilisé. Jetons un coup d'œil aux architectures populaires.
Architecture de Von-Neumann / Princeton
La manière dont le CPU accède au programme et aux données, raconte l'architecture du CPU. Auparavant, un seul bus était utilisé pour accéder au programme et aux données. Ce type d'architecture est connu sous le nom d'architecture de Von Neumann ou plus simplement d' architecture de Princeton. Un seul bus pour récupérer le code et les données signifie, ils viennent se gêner et ralentir la vitesse de traitement du CPU car chacun a dû attendre que l'autre finisse la récupération. Cette limitation est également connue sous le nom de condition de goulot d'étranglement de Von-Neumann.
L'architecture de Harvard
Pour accélérer le processus, Harvard Architecture a été proposé. Dans cette architecture, des bus de données séparés pour les données et le programme sont présents. Cela signifie donc que cette architecture proposait l'utilisation de quatre bus
- Un ensemble de bus de données transportant les données dans et hors de la CPU.
- Un ensemble de bus d'adresses pour accéder aux données.
- Un ensemble de bus de données pour transporter le code dans la CPU.
- Un bus d'adresse pour accéder au code.
L'utilisation de bus d'adresses et de bus de données séparés signifiait un temps d'exécution réduit pour le processeur, mais cela se faisait au prix de la complexité de la conception de l'architecture. L'architecture de Von Neumann peut sembler un peu paresseuse mais elle a l'avantage de sa conception simple.
L'architecture de Harvard est beaucoup plus facile à mettre en œuvre lorsque le processeur et les unités de mémoire partagent le même espace ou que la RAM et la ROM sont intégrées (sur puce) à l'unité de traitement, comme dans le microcontrôleur où les distances sont en microns et millimètres. Cependant, la même architecture est difficile à mettre en œuvre lorsque la mémoire contenant le code est externe à l’unité de traitement, comme celle des PC IBM x86. Un ensemble de traces de fils séparées pour les données et l'adresse sur la carte mère rendrait la carte complexe et coûteuse. Comprenons-le avec un exemple de processeur.
Un processeur avec un bus de données 64 bits et un bus d'adresse 32 bits aurait besoin d'environ 100 bus (96 pour le bus de données et d'adresse et quelques autres pour les signaux de commande) pour la mise en œuvre de l'architecture Von-Neumann. La même structure si elle était mise en œuvre avec l'architecture Harvard coûterait environ 200 pistes à double fil avec un grand nombre de broches sortant du processeur. C'est pour la même raison que nous ne voyons pas une architecture Harvard pure implémentée pour les PC et les postes de travail. Au lieu de cela, une architecture Harvard modifiée est utilisée dans laquelle la hiérarchie de mémoire avec la mémoire cache du processeur est utilisée pour séparer le programme et les données. La hiérarchie de la mémoire sépare le stockage en fonction de la hiérarchie du temps de réponse des processus.
Architecture d'ensemble d'instructions
Lorsque le programme (code) est chargé dans la mémoire du système (RAM), il est récupéré par le processeur (faisant référence à la fois au microprocesseur et au microcontrôleur) pour agir sur les données, il est très similaire que nous donnons des instructions lorsque nous entraînons le chien pour certaines actions et commandes. Lorsque ces instructions sont appliquées, certains transistors passent d'un niveau logique à un autre pour que cela se produise. Donc, fondamentalement, avec l'aide d'instructions, le programmeur humain communique avec le processeur. Chaque CPU a son propre jeu d'instructions, un ensemble d'instructions basé sur son architecture et ses capacités.
Le CPU comprend ces instructions dans la combinaison de 0 et de 1 qui sont également appelés opcode. Pour un programmeur humain, il est vraiment difficile de se souvenir de la combinaison de 0 et de 1 pour chaque instruction associée au CPU. Pour faciliter le travail d'un programmeur humain, nous sommes fournis avec des interfaces de haut niveau de ces instructions et le compilateur les convertit sous la forme de 0 et de 1 pour son traitement. Toujours dans le jeu d'instructions de chaque CPU, il a un nombre limité d'instructions qu'il peut comprendre.
Performances du processeur
Vous avez peut-être entendu le terme fréquence d'horloge du processeur lié aux performances du processeur. Les processeurs ont généralement une fréquence d'horloge en MHz (Méga-Hertz) ou en GHz (Giga-Hertz) comme une fréquence d'horloge de 25 GHz. Le nombre associé à la fréquence d'horloge indique combien de fois l'horloge à l'intérieur du processeur passe en cycles par seconde. Le caractère pratique de la fréquence d'horloge peut être compris par le fait que les instructions sont exécutées sur la base de cycles d'horloge de la CPU qui sont proportionnels au nombre de programmes que la CPU peut exécuter à la fois.
Les performances de la CPU dépendent du nombre d'instructions qui sont écrites dans le programme, plus les instructions, plus le temps mis par la CPU pour les exécuter. Cela dépend également du nombre de cycles d'horloge dans lesquels chaque instruction est exécutée, certaines instructions ont besoin de plus de cycles d'horloge pour être exécutées que d'autres, de sorte qu'elles retardent les performances du CPU. Les instructions d'un programme et les cycles nécessaires pour exécuter chaque instruction sont inversement proportionnels les uns aux autres. Changer l'un affectera l'autre. C'est le point où l'industrie du processeur est divisée.
Architecture du jeu d'instructions RISC et CISC
Comme indiqué ci-dessus, l'exécution d'un programme et les performances de la CPU dépendent du nombre d'instructions dans un programme dans lequel les instructions sont proposées à cette CPU particulière en tant que partie du jeu d'instructions et le deuxième facteur est le nombre de cycles d'horloge dans dont chaque instruction est exécutée. Sur la base de ces deux facteurs, deux jeux d'instructions sont actuellement disponibles. Le plus ancien est le calcul du jeu d'instructions complexe (CISC), tandis que l'autre est le calcul du jeu d'instructions réduit (RISC). Discutons de chacune de ces architectures en détail pour comprendre la différence entre l'architecture RIC et CISC.
Calcul de jeu d'instructions complexes (CISC)
CISC signifie Complex Instruction Set Computing. Le principal motif du CISC est de réduire le nombre d'instructions qu'un programme exécute, cela se fait en combinant de nombreuses instructions simples comme le mode d'adresse, le chargement, etc. et de former une seule instruction complexe. L' instruction CISC comprend une série d'instructions simples ainsi que des instructions spéciales dont l'exécution nécessite plus d'un cycle d'horloge. Les instructions CISC peuvent travailler directement sur la mémoire sans l'intervention de registres, ce qui signifie qu'elle élimine le besoin d'instructions de base comme le chargement de valeurs et l'exigence de mémoire (RAM). Les instructions du CISC mettent davantage l'accent sur le matériel que sur le logiciel, ce qui signifie qu'au lieu de mettre la charge sur les compilateurs,CISC utilise des transistors comme matériel pour décoder et mettre en œuvre les instructions. Cependant, comme l'instruction est complexe et se compose de plusieurs étapes, elles sont exécutées en un plus grand nombre de cycles d'horloge.
Une simple analogie est de relier quand on vous dit d'ouvrir le livre et lire le 3 e 2 du chapitre deuxième page. Dans cette série d'activités, vous effectuez plusieurs étapes comme trouver le livre dans votre sac, puis mélanger la page au chapitre 3, puis aller à la 2 e page du chapitre, puis commencer à lire. La série d'une étape si elle est combinée en une seule instruction de lecture de la page 44 (qui est le 2 ème numéro de page du 3 ème chapitre), on obtient une instruction CISC.
Calcul de jeu d'instructions réduit (RISC)
La première puce intégrée a été conçue par Jack Kilby en 1958 qui était un oscillateur et en 1970, le premier microprocesseur commercial est sorti d'Intel. Bien qu'au démarrage des processeurs, il n'y avait pas de CISC. Mais avec les fortes demandes informatiques, l'architecture CISC devenait de plus en plus complexe et difficile à gérer. Une refonte totale de l'architecture CISC connue sous le nom de RISC est sortie d' IBM par John Coke. Ainsi, pour différencier les deux architectures, les termes RISC et CISC ont été introduits.
RISC est synonyme de calcul de jeu d'instructions réduit. Le principal motif du RISC était d' introduire une uniformité dans la taille et l'exécution des instructions. Cela a été fait en introduisant un jeu d'instructions simple qui pourrait être exécuté comme une instruction par cycle, cela se fait en cassant des instructions complexes telles que le chargement et le stockage dans différentes instructions, où chaque instruction prend environ un cycle d'horloge pour s'exécuter. L' architecture RISC comprend des instructions simples de même taille qui pourraient être exécutées en un seul cycle d'horloge. Les machines basées sur RISC ont besoin de plus de RAM que CISC pour contenir les valeurs pendant qu'il charge chaque instruction dans les registres. L'exécution d'une seule instruction par cycle donne aux machines RISC l'avantage du pipelining(le pipelining est le processus dans lequel l'instruction suivante est chargée avant que la première instruction ne soit exécutée, cela augmente l'efficacité de l'exécution). L'architecture RISC met l'accent