Architecture informatique de base : Manuel. Processeurs. Système de commande informatique. Appareils de contrôle. Organisation des systèmes d'entrée/sortie d'informations intraprocesseur Types de commandes informatiques

Organisation fonctionnelle et structurelle des ordinateurs.

Déclencheurs

Il s'agit d'un élément de mémoire. Un appareil capable de mémoriser, de stocker, etc. information.

Les bascules RS se composent de deux portes, une porte est ou non, deuxième et non.

Le déclencheur RS se souvient laquelle de ses entrées a reçu un signal égal à un la dernière fois. Si le signal a été appliqué à l’entrée S, alors la bascule en stocke un. Si un signal a été appliqué à l’entrée R, alors la bascule stocke zéro.

0 1 1 - définir 1

1 0 0 - définir 0

1 1 - non autorisé

En connectant des additionneurs en cascade, vous pouvez obtenir un circuit additionneur logique pour les nombres binaires avec n'importe quel nombre de chiffres.

Les additionneurs et demi-additionneurs sont des circuits logiques à cycle unique. Les déclencheurs sont multi-cycles.

Les registres sont conçus pour enregistrer, stocker et convertir les nombres qui y sont écrits. Un déclencheur est utilisé comme cellule de registre élémentaire.

Un compteur est une unité conçue pour compter la moitié du nombre de signaux d'entrée et enregistrer les résultats en code binaire.

Il s'agit d'un modèle abstrait décrivant les capacités d'un ordinateur. Il est déterminé par le type de tâches à résoudre, les besoins en ressources et les types de tâches (mémoire, caractéristiques du processeur).

L'organisation structurelle d'un ordinateur est un modèle physique qui établit l'ordre et les relations des composants et des blocs.

Une commande est un ensemble d'informations, sous forme de code binaire, occupant certains champs nécessaires au processeur pour effectuer les actions requises.

Le format de commande est la structure convenue de ses champs, de son code, y compris le code d'opération et les adresses des opérandes, ainsi que l'adresse du résultat.

Flic A1 A3 Flic A1 A2 A3

Flic. ß---a3---à

Méthodes d'adressage : adresse et associative (recherche par contenu). Associative - visualisation de toutes les cellules pour identifier les codes contenant une commande.

Recherche d'adresse – les informations sont récupérées de la mémoire par le numéro contenu dans la cellule d'adresse. En apparence, cela peut être explicite ou implicite. Explicite : ne contient pas de cellules de code d'adresse. L'adressage implicite est utilisé dans l'adressage de pile.

La pile est vide écrire écrire lire B lire Une pile est vide

Une pile est un groupe de cellules mémoire ou de registres séquentiels. Il n'y a pas d'adresse de pile et le schéma de contrôle est formé selon la règle suivante. Un seul registre est disponible en lecture ou en écriture, une cellule constitue le sommet de la pile. Le dernier registre rédigé sera considéré comme le premier.

Adressage à indexation automatique – utilisé dans les ordinateurs modernes. Le contenu de la mémoire des registres est augmenté ou diminué, avant ou après l'opération, d'une quantité spécifiée et déterminée de manière permanente. Ce type est utilisé lors du traitement de grandes quantités de données.



Le principe de l'académicien Glushkov.

Dispositif universel de traitement de l'information (1956). Il se compose de registres, d'additionneurs et d'autres nœuds qui vous permettent de recevoir, de stocker et de convertir des informations. Le processus de fonctionnement dans le temps d'un dispositif de traitement de l'information consiste en une séquence d'intervalles d'horloge dans lesquels l'unité opérationnelle effectue certaines opérations, l'exécution de ces opérations se produit en fonction de signaux de commande.

Un microprogramme est une séquence de microcommandes qui assurent l'exécution d'une opération.

La microcommande est une séquence de signaux de contrôle.

Informations générales. Le jeu d’instructions fixe d’un microprocesseur particulier est appelé système de commande. La fonctionnalité d'un processeur est déterminée par une combinaison de basique commandes avec différents codes de fonctionnement. Nombre total Il y a toujours plus de commandes (codes d'opération) dans le système que le nombre de commandes de base. Par exemple, la commande de base inclut la commande MOV dst, scr, qui fournit la fonction d'envoyer des données du scr source au dst de destination. Il peut y avoir de nombreuses commandes de ce type dans le système. Le système de commande est présenté sous forme de tableau. Le tableau peut avoir une structure différente, mais il contient généralement les informations suivantes sur la commande :

  • mnémonique command, qui est une abréviation du nom de la commande. Pour ce faire, utilisez 3 à 4 lettres latines du nom de l'opération effectuée par la commande. Mnémotechnique est une forme pratique pour représenter l'opcode d'une commande. Il est également utilisé pour décrire une commande en langage assembleur. Le programme assembleur convertit la notation mnémonique des opcodes en équivalents binaires correspondants ;
  • codes hexadécimaux commandes ;
  • influence de la commande exécutée sur les drapeaux registre d'état du programme ;
  • nombre d'octets dans l'équipe et nombre de cycles et de cycles machine, dépensé pour l'exécution de la commande ;
  • verbal et/ou description symbolique l'opération effectuée par la commande.

Souvent, pour plus de commodité, le système de commande est divisé en groupes distincts en fonction des fonctionnalités. Par exemple, le système de commande du microprocesseur KR580VM80, contenant 78 commandes de base, est divisé en 5 groupes. Vous trouverez ci-dessous une brève description des caractéristiques fonctionnelles des commandes de chaque groupe.

Les commandes ont une longueur de 1 à 3 octets. L'opcode est toujours placé dans le premier octet de la commande. Le deuxième octet de la commande est alloué pour l'opérande immédiat ou l'adresse du port, les deuxième et troisième octets sont l'adresse de la cellule mémoire. Les commandes permettent de définir explicitement une seule adresse mémoire, c'est-à-dire qu'elles appartiennent à la classe des commandes unicast. Lorsque vous décrivez des commandes, utilisez désignations suivantes:

  • src, dst – source et destination 8 bits. La source ou la destination peut être l'un des registres de 8 bits A, B, C, D, E, H ou une cellule mémoire M dont l'accès est assuré par la paire de registres H L, contenant l'adresse de l'octet envoyé. Dans l'opcode, le src source et le dst de destination sont spécifiés sous la forme d'un code à trois bits SSS et DDD ;
  • RP – code à deux bits des paires de registres BC, DE, N L, A + RP (registre de fonctionnalités) ou pointeur de pile SP ;
  • données, données 16 – opérande 8 et 16 bits ;
  • addr, port – adresse mémoire 16 bits et adresse de port 8 bits ;
  • (addr), (SP) – contenu de la cellule mémoire aux adresses spécifiées ;
  • (SP)+, -(SP) – opérations post-incrémentation et pré-incrémentation avec la pile. Commandes de transfert. Le groupe contient les instructions de transfert de données les plus fréquemment utilisées dans les programmes, dont les sources et les destinations peuvent être des registres internes du processeur, la mémoire principale et des périphériques externes. Les commandes n'ont aucun effet sur les indicateurs du registre d'état.

Le mnémonique de commande reflète les caractéristiques de l'opération en cours et la méthode d'adressage. Par exemple, le mnémonique MOV, MVI indique le mouvement des opérandes ; LDA, LDAX, LXI, LHLD – pour le chargement (Load) ; STA, STAX, SHLD – pour enregistrer. Pour les opérations avec des octets, le mnémonique MOV, MVI, LDA, STA, LDAX, STAX est utilisé ; pour les opérations avec des mots – LXI, LHLD, SHLD. L'adressage direct lors du chargement et de la sauvegarde du contenu de l'accumulateur est reflété par les mnémoniques LDA et STA, l'adressage indirect par les mnémoniques LDAX et STAX.

Les équipes de ce groupe sont résumées dans le tableau. 5.8. Ils vous permettent de :

  • opération de transfert de données entre la source (src) et la destination (dst), qui s'écrit dst ← src (commande 1). Les sources et les destinations sont des registres internes usage général(A, B, C, D, E, H) et la cellule mémoire M. Toute combinaison est autorisée, à l'exception de M ← M, c'est-à-dire que le rechargement de la cellule mémoire M n'est pas autorisé ;
  • chargement registres à usage général et cellule M avec le deuxième octet B2 (commande 2) et les paires de registres BC, DE, HL (y compris le pointeur de pile SP) avec les deuxième octets B2 et troisième B3 (commande 3), et B3 est toujours chargé dans le paires de registres supérieurs (B, D, H), B2 – aux registres inférieurs (C, E, L) ;
  • expéditeur données entre la batterie A et la mémoire principale (commandes 4÷7), entre la batterie et un périphérique externe (commandes 8, 9). Lors du transfert entre la batterie A et la mémoire, les adresses des cellules mémoire se situent dans les paires de registres BC, DE ou dans les troisième et deuxième octets (B3B2) de la commande ;

Tableau 5.8

Mnémotechnique

Exécuté

opération

opérations

heure d'été src

UN (adresse)

Remarques : RP – code 2 bits des paires de registres BC, DE, HL, A + RP (registre de fonctionnalités) ou pointeur de pile SP ; B – octets, U – cycles, T – cycles.

  • expéditeur données entre une paire de registres HL et la mémoire (équipes 10, 11). Dans ce cas, l'opérande du registre L est envoyé à la cellule d'adresse B3B2, formée à partir des troisième et deuxième octets de la commande, et du registre H à une adresse supérieure. Lors du transfert inverse, le premier opérande est d'abord chargé depuis la cellule d'adresse B3B2 dans le registre L, puis le second est chargé depuis la cellule d'adresse B3B2+1 dans le registre H ;
  • expéditeur données entre des paires de registres, y compris une paire de l'accumulateur A et du registre de fonctionnalités RP, et la pile (équipes 12, 13). Lors de l'écriture dans la pile, le contenu du pointeur de pile est décrémenté de un, et à l'adresse SP-1, le premier opérande est chargé dans l'un des registres B, D, H ou A, puis le contenu du pointeur de pile est décrémenté par un à nouveau, et le deuxième opérande est chargé à l'adresse SP–2 du registre C, E, L ou RP. Lors du retrait de la pile, l'opérande stocké dans la cellule avec l'adresse SP du pointeur de pile est d'abord chargé dans l'un des registres C, E, L ou RP. Le contenu est ensuite incrémenté de un, à partir de la cellule à l'adresse SP + 1, le deuxième opérande est chargé dans l'un des registres B, D, H ou A, et le contenu du pointeur de pile est à nouveau incrémenté de un et prend le valeur SP + 2. Il est à noter que lors du chargement des paires de registres A, RP (son code RP = 11) depuis la pile, l'état des déclencheurs du registre d'attribut RP change. C'est la seule commande (parmi toutes les commandes de transfert de données) qui affecte les attributs ;
  • expéditeur le contenu d'une paire de registres HL dans le pointeur de pile SP et le compteur de programme PC (instructions 14, 15) ;
  • échange données entre les paires de registres HL et DE, la paire de registres HL et la pile (instructions 16, 17). Lors d'un échange, le contenu de la paire de registres HL est placé dans la paire ou pile DE, et le contenu de la paire ou pile de registres DE est placé dans la paire HL. L'opération d'échange est signalée par le symbole "↔".

Commandes arithmétiques. Les capacités de calcul du microprocesseur se limitent à de simples instructions d'addition et de soustraction sur des opérandes de 8 bits. Les opérations de multiplication et de division sont mises en œuvre par programmation. L'ensemble des commandes (Tableau 5.9) permet d'effectuer :

  • ajout Et soustraction Opérandes de 8 bits avec et sans report (instructions l÷8), avec l'un des opérandes toujours situé dans l'accumulateur, et le second dans l'un des registres à usage général (cellule mémoire M) ou est le deuxième octet de la commande . Les commandes qui prennent en compte la valeur du signal de transfert C du registre de fonctionnalités sont utilisées lors de l'ajout et de la soustraction de nombres multi-octets. Dans le même but, vous pouvez utiliser la commande 9 pour ajouter le contenu d'une paire de registres HL avec un registre adressable de 16 bits ;
  • arithmétique comparaison le contenu de l'accumulateur A avec le contenu d'un des registres généraux Rn (cellule mémoire M) ou le deuxième octet B2 (commandes 10+11). Dans ce cas, la soustraction A – Rn ou A – B2 est effectuée. Le résultat de la comparaison est déterminé par les signaux de déclenchement du registre de caractéristiques : si Z = 1, alors A = Rn ou A = B2 ; si S = 1, alors A > Rn ou A > B2. Le contenu de la batterie ne change pas ;
  • augmenter Et diminuer par 1 (incrément Et décrément) contenu des registres et des paires de registres. Quand on programme souvent

Tableau 5.9

Mnémotechnique

Opération à réaliser

opérations

A ← A + src + C

A ←A – src – C

A ← A + données + CY

A ← A – données

A ← A – données – CY

A – scr (comparaison)

A – scr (comparaison)

heure d'heure ← heure d'heure – 1

A ← correction 2/10 A

il est nécessaire d'augmenter ou de diminuer la valeur de l'opérande de un. Pour ce faire, vous pouvez utiliser les opérations d'addition A + B2 ou de soustraction A – B2, en écrivant B2 = 1 dans le programme. Cependant, le système d'instructions fournit des instructions spéciales (12-5-15) pour incrémenter et décrémenter 8- et. opérandes 16 bits ;

correction décimale le contenu de l'accumulateur après avoir effectué des opérations arithmétiques dans le BCD 8421 (instruction 16). Dans ce cas, le contenu de l’accumulateur est représenté sous la forme de deux quartets, chacun correspondant à un chiffre décimal. La correction s'effectue par un bloc de correction décimal selon les règles énoncées au § 5.2 (p. 99).

Commandes d'opérations logiques. Les commandes de ce groupe (Tableau 5.10) permettent de mettre en œuvre :

  • opérations logiques doubles multiplication(ET), ajout(OU) et exclusif OU sur des opérandes de 8 bits (instructions 1÷6). Les opérations logiques sont au niveau du bit et sont effectuées indépendamment pour chacun des huit bits d'opérande. L'opérande non adressable se trouve dans l'accumulateur, et le résultat de l'opération y va également. Le deuxième opérande est le contenu de l'un des registres à usage général (cellule mémoire M) ou le deuxième octet de l'instruction ;
  • inverser contenu de la batterie A (commande 7) ;
  • commandes de drapeau (8, 9) inversion Et installation bit C du déclencheur de transfert du registre d'attributs ;
  • deux types changements cycliques contenu de la batterie à gauche et à droite (commandes Yul-13). Le premier type de décalages (changements sans report) est mis en œuvre en fermant tous les déclencheurs d'accumulateur en anneau ; avec le deuxième type de décalages (changements avec report ou décalages étendus), un déclencheur de report C du registre d'attributs est en outre introduit dans le anneau. Les décalages logiques et arithmétiques dans les deux sens qui manquent dans le système de commande peuvent être mis en œuvre en réglant d'abord le bit C à 0 ou 1 avec le décalage étendu.

Commandes de transfert de contrôle. Lors du transfert de contrôle, le processus séquentiel de récupération du contenu des cellules mémoire est perturbé et le processeur est adressé à une autre zone mémoire. Souligner

Tableau 5.10

Mnémotechnique

Exécuté

opération

opérations

A ← A l src – multiplication

A ← A v src – addition

A ← A © src – excl. OU

A ← A l données

Données A ← A ©

trois types de commandes de transfert de contrôle : commandes transitionà une adresse donnée (JMP), appel sous-programmes (CALL) et retour du sous-programme (RET). Ceux-ci incluent inconditionnel Et conditionneléquipes. Les commandes conditionnelles effectuent une transition, appellent un sous-programme et reviennent d'un sous-programme en fonction de l'état du drapeau précisé par la valeur du signal d'un des quatre triggers Z, C, S, P du registre d'attribut (ou état) . Le processeur 8080 utilise les deux états (1 et 0) de quatre indicateurs (Z, C, P, S), permettant 8 options pour chaque commande (Tableau 5.11). La désignation de l'attribut (condition) est indiquée dans le mnémonique des commandes conditionnelles J**, C**, R** à la place des astérisques (**). Par exemple, l'attribut NC, pour lequel les conditions de transition sont considérées comme satisfaites lorsque C = 0, correspond à la commande JNC.

Les sauts conditionnels et inconditionnels ainsi que les appels de sous-programmes utilisent une adresse directe complète de 16 bits pour transférer le contrôle vers n'importe quel point de l'espace mémoire de 64 kilo-octets.

Tableau 5.11

Regardons les caractéristiques des commandes présentées dans le tableau. 5.12.

À l'aide de l'instruction JMP à trois octets, il est implémenté inconditionnel transfert de contrôle. Dans ce cas, les deuxième et troisième octets de la commande (l'adresse de suite du programme addr) sont entrés dans le compteur de commandes du PC (le contenu de B3 est dans les bits de poids fort, B2 dans les bits de poids faible).

Équipes conditionnel les transferts de contrôle J** implémentent le branchement du processus de calcul en fonction de la condition. Lorsque la condition (OUI) est remplie, les deuxième et troisième octets de la commande sont entrés dans le compteur PC, sinon (NON) le contenu du compteur est augmenté de 3 unités. Le programme continue à l'adresse située dans le compteur de programme, soit à partir de la commande suivante.

Tableau 5.12

Mnémotechnique

Exécuté

opération

opérations

Équipes inconditionnel(APPEL) et conditionnel(AVEC**) appels sont utilisés pour accéder aux sous-programmes stockés dans une autre partie de la mémoire principale. Ces instructions offrent toujours la possibilité de revenir au programme principal interrompu en stockant le contenu du compteur de programme PC sur la pile. Après avoir effectué l'opération de retour :

  • à inconditionnel appeler ou réalisation de la condition les deuxième et troisième octets de la commande sont saisis dans le compteur de programme PC ;
  • à non-respect de la condition le contenu du compteur de programme augmente de 3 unités.

Le programme continue à l'adresse située dans le compteur de programme du PC.

L'ensemble contient des commandes qui vous permettent d'implémenter inconditionnel(RET) et transfert de contrôle conditionnel (K**) pour le retour au programme interrompu. Lorsque ces instructions sont exécutées, l'adresse de retour est réécrite de la pile vers le compteur du programme PC, pour lequel la méthode d'adressage post-incrémentation est utilisée. Si la condition de retour n'est pas remplie (pour une commande avec condition), un passage à la commande suivante est effectué en augmentant de un le contenu du compteur programme PC. Les instructions de retour sont des instructions à un octet car le pointeur de pile SP stocke l'adresse de l'emplacement de la pile avec l'adresse de retour du programme interrompu.

L'instruction PCHL charge le compteur de programme PC avec l'adresse stockée dans la paire de registres HL.

Équipes de direction générale. Les commandes de ce groupe (Tableau 5.13) permettent de définir le mode de fonctionnement du microprocesseur. L'instruction RST est utilisée pour redémarrer le microprocesseur et lors de la maintenance des interruptions. Lors de son exécution :

  • le contenu du compteur de programme est transféré dans la pile aux adresses SP – 1, SP – 2, formées dans le pointeur de pile, ce qui assure un retour au programme principal ;
  • L'adresse 16 bits du début d'un des 8 programmes de service d'interruption est envoyée au compteur de programme.

Tableau 5.13

Mnémotechnique

Exécuté

opération

opérations

–(SP) ← PC ← 8×n, n = 0 – 7

Activer les interruptions

Désactiver les interruptions

Lire le masque

Installation du masque

Aucune opération

La commande d'activation d'interruption EI définit le déclencheur d'activation d'interruption INTE sur un état unique, obligeant le microprocesseur à répondre aux demandes d'interruption. La commande de désactivation de l'interruption DI met la bascule INTE à zéro. La commande NOP vide est utilisée dans les boucles à retard programmables. La commande HLT stop entraîne l'arrêt de l'exécution du programme.

Important partie intégrante L'architecture d'un ordinateur est un système de commandes. Malgré grand nombre variétés d’ordinateurs, au niveau le plus bas (« machine »), ils ont beaucoup en commun. Le système de commande de tout ordinateur contient nécessairement les groupes suivants de commandes de traitement de l'information. 1. Commandes de transfert de données (recensement) qui copient les informations d'un endroit à un autre. 2. Les opérations arithmétiques, auxquelles la technologie informatique doit son nom. Bien sûr, la part des actions informatiques dans un ordinateur moderne a sensiblement diminué, mais elles jouent toujours un rôle important dans les programmes. Notez que les opérations arithmétiques de base incluent généralement l'addition et la soustraction (cette dernière se réduit le plus souvent également à l'addition d'une manière ou d'une autre). Quant à la multiplication et à la division, dans de nombreux ordinateurs, elles sont effectuées selon programmes spéciaux. 3. Opérations logiques qui permettent à l'ordinateur d'analyser les informations en cours de traitement. Les exemples les plus simples sont la comparaison, ainsi que les opérations logiques bien connues ET, OU, NON (inversion). De plus, l'analyse des bits de code individuels, leur réinitialisation et leur installation y sont souvent ajoutées. 4. Le code binaire se déplace vers la gauche et la droite. Pour prouver l'importance de ce groupe de commandes, il suffit de rappeler la règle de multiplication des colonnes : chaque produit suivant est écrit selon un tel schéma avec un décalage d'un chiffre vers la gauche. Dans certains cas particuliers, la multiplication et la division peuvent généralement être remplacées par un décalage (rappelez-vous qu'en ajoutant ou en supprimant un zéro vers la droite, c'est-à-dire en décalant réellement un nombre décimal, vous pouvez l'augmenter ou le diminuer de 10 fois). 5. Commandes d'entrée et de sortie d'informations à échanger avec des périphériques externes. Dans certains ordinateurs, les périphériques externes sont des adresses de mémoire de service spéciales, de sorte que l'entrée et la sortie sont effectuées à l'aide de commandes de recensement. 6. Commandes de contrôle qui implémentent des algorithmes non linéaires. Cela comprend principalement les sauts conditionnels et inconditionnels, ainsi que les commandes permettant d'appeler un sous-programme (saut avec retour). Certains ordinateurs disposent de commandes spéciales pour organiser les boucles, mais cela n'est pas nécessaire : une boucle peut être réduite à l'une ou l'autre combinaison de transitions conditionnelles et inconditionnelles. Souvent, ce même groupe de commandes comprend quelques opérations pour contrôler le processeur, comme « stop » ou NOP (« no opération »). Parfois, ils sont séparés en un groupe spécial. À mesure que la complexité du processeur augmente, le nombre de commandes qui analysent l'état des bits de contrôle et agissent sur eux augmente également. Ici, à titre d'exemple, nous pouvons nommer les bits du mode de fonctionnement du processeur et les bits de contrôle des mécanismes d'interruption des périphériques externes. Dernièrement, tout grand rôle Le jeu d'instructions contient des commandes de conversion d'un format de données à un autre (par exemple, de 8 bits à 16 bits, etc.), ce qui simplifie considérablement le traitement des données. différents types , mais peut en principe être remplacé par une séquence de plusieurs commandes plus simples. Considérant le système de commande, on ne peut s'empêcher de mentionner deux directions modernes concurrentes dans sa construction : un ordinateur avec un ensemble complet de commandes CISC (Complex Instruction Set Computer) et avec un ensemble limité - RISC (Reduced Instruction Set Computer). La division vient du fait que la plupart du temps, l'ordinateur doit exécuter une petite partie de son ensemble d'instructions, tandis que le reste est utilisé sporadiquement (un article populaire formule cela en plaisantant sous la forme de l'analogie visuelle suivante : « 20 % de la population boit 80% de la bière). Ainsi, si vous limitez considérablement l'ensemble des opérations aux plus simples et les plus courtes, mais que vous les optimisez soigneusement, vous obtiendrez une machine RISC assez efficace et rapide. Certes, vous devrez payer pour la rapidité par la nécessité d'implémenter des commandes « rejetées » dans le logiciel, mais souvent ce paiement est justifié : par exemple, pour les calculs scientifiques ou l'infographie, la vitesse est bien plus importante que les problèmes de programmation. Les questions liées au système d'instructions des microprocesseurs modernes seront abordées plus en détail plus loin dans ce chapitre. Pour résumer, nous soulignons une fois de plus que l'ensemble des commandes de base a très peu changé au cours de l'évolution rapide des ordinateurs. Parallèlement, les méthodes d'indication de l'adresse de l'emplacement des informations en mémoire ont subi des changements importants et méritent une attention particulière. Une commande informatique se compose généralement de deux parties : opérationnelle et adresse. La partie opérationnelle (autrement appelée code d'opération - OPC) indique quelle action doit être effectuée avec les informations. La partie adresse décrit où les informations utilisées sont stockées. Quelques commandes de contrôle du fonctionnement de la machine peuvent ne comporter aucune partie d'adresse, par exemple dans une commande d'arrêt ; la partie opérationnelle est toujours là. Un code d'opération peut être considéré comme un certain numéro conventionnel dans la liste générale des systèmes de commande. Fondamentalement, cette liste est construite selon certains modèles internes, même s'ils ne sont pas toujours évidents. La partie adresse est beaucoup plus variée et doit être examinée plus en détail. Tout d’abord, notons que les instructions peuvent être à une, deux ou trois adresses, selon le nombre d’opérandes impliqués. Les premiers ordinateurs disposaient du système de commande à trois adresses le plus simple et le plus intuitif. Par exemple : prenez les nombres des adresses mémoire A1 et A2, additionnez-les et placez la somme à l'adresse A3. Si l'opération nécessite plus petit nombre adresses, alors les adresses supplémentaires n'ont tout simplement pas été utilisées. Disons que lors de l'opération de recensement, seules les cellules source et réceptrice des informations A1 et A3 étaient indiquées, et que le contenu de A2 n'avait aucune signification. La commande à trois adresses était facile à déchiffrer et pratique à utiliser, mais à mesure que la quantité de RAM augmentait, sa longueur devenait prohibitive. En effet, la longueur de la commande est la somme de la longueur de trois adresses et du code opération. Il s'ensuit, par exemple, que pour une modeste RAM de 1024 cellules, la simple écriture de la partie adresse d'une commande nécessite 3 * 10 = 30 bits binaires, ce qui n'est pas très pratique pour la mise en œuvre technique. Par conséquent, des machines à deux adresses sont apparues, dans lesquelles la longueur de la commande a été réduite en éliminant l'adresse d'enregistrement du résultat. Dans de tels ordinateurs, le résultat de l'opération restait dans un registre spécial (additionneur) et pouvait être utilisé dans des calculs ultérieurs. Sur certaines machines, le résultat était écrit à la place d'un des opérandes. Une simplification supplémentaire de la commande a conduit à la création de machines unicast. Considérons le système de commande d'un tel ordinateur à l'aide d'un exemple simple et spécifique. Supposons que nous devions additionner les nombres stockés dans les cellules avec les adresses RAM A1 et A2 et placer la somme dans la cellule avec l'adresse A3. Pour résoudre ce problème, une machine unicast devra exécuter trois commandes : extraire le contenu de la cellule A1 dans l'additionneur ; ajoutez l'additionneur avec le nombre de A2 ; écrivez le résultat de l’additionneur dans A3. Il pourrait sembler qu’une machine unicast nécessiterait trois fois plus de commandes pour accomplir une tâche qu’une machine à trois adresses. En fait, ce n’est pas toujours le cas. Essayez de planifier votre propre programme pour calculer l'expression A5 = (A1 + A2)*AZ/A4 et vous constaterez que vous aurez besoin de trois commandes à trois adresses et seulement de cinq commandes unicast. Ainsi, une machine unicast est d’une certaine manière encore plus efficace, puisqu’elle n’écrit pas de résultats intermédiaires inutiles en mémoire. Par souci d'exhaustivité, il convient de mentionner la possibilité de mettre en œuvre une machine sans adresse (adresse nulle), qui utilise une manière particulière d'organiser la mémoire - une pile. Comprendre les principes d’une telle machine nécessiterait quelques explications assez détaillées. De nos jours, les ordinateurs sans adresse ne sont pratiquement plus utilisés. Par conséquent, nous nous limiterons à mentionner simplement le fait qu'un système de commande disposé de la même manière était à la base de certains microcalculateurs programmables (par exemple, tels que "BZ-21" et "BZ-34", etc.). Jusqu'à présent, pour décrire la structure d'une instruction machine, nous avons utilisé le concept intuitif d'adresse d'information. Examinons maintenant la question de l'adressage des éléments RAM de manière plus détaillée et stricte. La mémoire était organisée le plus simplement dans les ordinateurs des deux premières générations. Il se composait de cellules individuelles dont le contenu était lu ou écrit comme une seule unité. Chaque cellule mémoire avait son propre numéro, appelé adresse. Évidemment, les adresses des cellules RAM voisines sont des entiers consécutifs, c'est-à-dire diffèrent d’un. Les ordinateurs considérés utilisaient des données d'un seul type (nombres réels), et leur longueur était égale à la longueur de l'instruction machine et coïncidait avec la capacité de la mémoire et de tous les autres dispositifs de la machine. Par exemple, soulignons que la cellule d'un ordinateur typique de deuxième génération était composée de 36 bits binaires. Très souvent, un programme était destiné à traiter, à l'aide des mêmes formules, une certaine quantité du contenu de cellules successivement localisées (dans les langages haut niveau les structures de ce type furent plus tard appelées tableaux). Les deux premières générations d'ordinateurs prévoyaient des mécanismes spéciaux pour le traitement cyclique des tableaux d'informations. A cet effet, dans les instructions machine, en plus des adresses normales, il était possible d'utiliser des adresses modifiables dans lesquelles un bit de contrôle spécial était mis à un. Lors de l'exécution de la commande, les adresses modifiées ainsi marquées ont été ajoutées avec la valeur des cellules d'index spéciales. En modifiant le contenu des cellules d'index, il était possible d'accéder à différents éléments du tableau. Nous soulignons particulièrement que la formation de l'adresse résultante a été effectuée dans l'unité de contrôle au moment de l'exécution de la commande, de sorte que la commande originale dans la RAM a été enregistrée sans modification. Le mécanisme décrit pour modifier les adresses a considérablement simplifié l'écriture de programmes cycliques, comme la recherche de la somme des cellules RAM consécutives, la copie de sections de mémoire individuelles, etc. Dans les ordinateurs de troisième génération, l'idéologie de la construction de la mémoire a considérablement changé : l'information minimale à échanger avec la RAM a été fixée à 8 chiffres binaires, c'est-à-dire un octet. Il est devenu possible de traiter plusieurs types de données : caractères de texte (1 octet), entiers (2 octets), nombres réels de précision ordinaire ou double (respectivement 4 ou 8 octets). À cet égard, une nouvelle unité conventionnelle de mesure de l'information a été introduite : le mot machine. Elle était égale à 4 octets et correspondait à la longueur du standard nombre réel. Toutes les quantités d'informations ont commencé à être mesurées en unités multiples du mot : double mot, demi-mot, etc. Naturellement, l'adresse (numéro de cellule RAM) sur les machines avec une organisation en octets a commencé à faire référence à un octet distinct ; les octets de mémoire ont des nombres croissants de un. Un mot est constitué de plusieurs octets séquentiels. Comme adresse d'un mot, il convient de prendre l'adresse de l'un des octets qui le composent (on utilise généralement l'octet de poids faible, qui a le plus petit nombre). Ainsi, les adresses des mots ne changent plus après un ; leur incrément dépend de la longueur du mot machine en octets et est égal à quatre. La taille du mot machine a apparemment été choisie en fonction des formats des informations traitées, et non en fonction de la capacité en bits d'un appareil. Pour le confirmer, voici quelques faits sur les ordinateurs typiques de troisième génération de la famille EC. L'unité arithmétique-logique du modèle EC-1022 avait 16 bits binaires, l'EC-1033 avait 32 bits et l'EC-1050 avait 64 bits. Dans le même temps, pour un accès à la RAM dans les ES-1022 et ES-1033, 4 octets ont été sélectionnés, dans l'ES-1050 - 8 octets (et dans l'ES-1045 - 16 octets). Ainsi, la variété des nombres indique que 32 bits (4 octets) ne constituaient pas une quantité d'informations techniquement allouée. Plusieurs autres fonctionnalités sont apparues dans les voitures de troisième génération : différentes longueurs commandes en fonction du mode d'adressage des données, de la présence d'une mémoire spéciale de registres ultra-aléatoires, du calcul de l'adresse RAM effective comme somme de plusieurs registres, etc. Tout cela a été développé dans les ordinateurs de quatrième génération, pour lesquels la capacité en bits du microprocesseur est devenue l'un des les caractéristiques les plus importantes. Nous reporterons l'examen des caractéristiques structurelles de la mémoire informatique de quatrième génération à la section suivante.

Le système d'instructions est un élément important de l'architecture informatique. Nous examinerons donc cette question plus en détail.

Sous équipe comprendre l'ensemble des informations, présentées sous forme de codes binaires, nécessaires au processeur pour effectuer l'étape suivante.

Dans le code de commande, certains bits (champs) sont alloués pour contenir des informations :

Concernant le type d'opération,

Adresses des cellules RAM dans lesquelles sont stockées les données traitées,

Adresses des cellules mémoire où sera écrit le résultat de l’opération.

Une structure de champs préalablement convenue qui permet à l'ordinateur de reconnaître les composants d'un code de commande est appelée Format de commande .

Des exemples de formats de commande sont présentés dans la figure 5.

Figure 5

L'élément principal du code de commande est le code d'opération (OPC), qui détermine les actions qui seront effectuées sur cette commande. N bits de poids fort du format lui sont alloués.

Les bits restants contiennent A1 et A2 - les adresses des opérandes, A3 - l'adresse du résultat.

La répartition des champs dans le format de commande peut changer lors du changement de méthode d'adressage.

La longueur de la commande dépend du nombre de champs d'adresse. En fonction du nombre d'adresses, les équipes sont divisées en sans adresse ; une, deux, trois adresses.

Rappelez-vous que le code de commande contient des informations sur les données sur lesquelles certaines opérations doivent être effectuées. Ces données sont appelées opérandes. En règle générale, les opérandes sont contenus dans la RAM ou la mémoire de registre de l'ordinateur. La façon dont les opérandes sont trouvés en mémoire détermine également le format des instructions.

Il existe 2 principes différents pour rechercher des opérandes en mémoire : associatif et adressable :

- Recherche associative (recherche par le contenu d'une cellule mémoire) consiste à visualiser le contenu de toutes les cellules mémoire pour identifier un code contenant une fonctionnalité associative spécifiée par une commande.

- Recherche d'adresse suppose que l'opérande se trouve à l'adresse spécifiée dans le champ d'adresse de commande.

Une distinction est faite entre l'adresse exécutive de l'opérande et le code d'adresse de l'instruction.

Adresse d'exécution de l'opérande est le code binaire du numéro de cellule mémoire par lequel l'opérande sera écrit ou lu.

Code d'adresse de commande est appelé le code binaire dans le champ d'adresse de la commande, à l'aide duquel il est nécessaire de générer l'adresse exécutive de l'opérande. Dans un ordinateur, le code d'adresse et l'adresse d'exécution ne coïncident pas, la méthode d'adressage peut donc être définie comme la méthode de formation de l'adresse d'exécution à partir du code d'adresse de la commande.

Nous utiliserons ces concepts plus en détail dans la description des méthodes d'adressage des opérandes.

Les méthodes d'adressage des opérandes, selon le type de recherche d'opérandes en mémoire, sont classées :

1) par la présence d'informations d'adresse dans la commande pour :

-adressage explicite. Avec cette méthode de code, la commande possède un champ d'adresse d'opérande ;



- adressage implicite. Avec cette méthode, il n'y a pas de champ d'adresse dans l'instruction et l'adresse de l'opérande est implicite par l'opcode. Par exemple, l'adresse du destinataire destinataire peut être exclue de l'instruction, ce qui implique que le résultat est écrit à la place du deuxième opérande.

2) selon la fréquence d'accès à la RAM :

- adressage direct. Avec l'adressage direct, l'opérande se situe directement dans le champ d'adresse de la commande (Figure 6).

Figure 6

- adressage direct (adressage immédiat). Avec l'adressage direct, l'opérande est accessible à l'aide du code d'adresse dans le champ de commande. Dans ce cas, l'adresse exécutive coïncide avec l'adresse du code de commande. Ceci peut être illustré par la figure suivante (Figure 7).

Figure 7

- adressage indirect. Avec l'adressage indirect, le code instruction précise l'adresse de la cellule mémoire dans laquelle se trouve non pas l'opérande lui-même, mais son adresse, appelée pointeur. Ceci peut être illustré par la figure suivante (Figure 8).

Figure 7

3) selon le procédé de formation des adresses des cellules mémoire :

- Adressage absolu supposons que le code binaire de l'adresse d'une cellule mémoire puisse être entièrement extrait soit du champ d'adresse de l'instruction, soit d'une autre cellule dans le cas d'un adressage indirect.

- Adressage relatif supposons que le code binaire de l'opérande est formé de plusieurs composants :

B - code de base ;

Et - code d'index ;

C - code de décalage.

Ces composants sont utilisés dans diverses combinaisons.

Types d'adressage relatif :



Figure 9

La mémoire de registre est utilisée pour former l'adresse de l'opérande.

L'adresse de l'opérande i dans le tableau est définie comme la somme de l'adresse de début du tableau d'opérandes, donnée par le décalage S, et de l'index i, écrit dans l'un des registres mémoire de registre, appelé registre d'index.

L'adresse du registre d'index est précisée dans la commande par le champ d'adresse d'index Ai.

À chaque ième cycle, le contenu du registre d'index change d'une valeur constante, généralement 1.

Pour travailler avec des programmes avec des tableaux nécessitant des opérations similaires sur les éléments du tableau, il est pratique d'utiliser ce type d'adressage

2) Adressage à indexation automatique. Lors de l'auto-indexation, l'adresse indirecte située dans le registre RP est automatiquement augmentée (adressage auto-incrémental) ou diminuée (adressage auto-décrémentaire) d'une quantité constante avant ou après l'exécution de l'opération.

3) Adressage de la pile. La mémoire pile est largement utilisée dans les ordinateurs modernes. Bien que l'adresse d'accès à la pile ne soit pas dans la commande, elle est générée par le circuit de contrôle (Figure 9) :

Figure 9

Un seul registre est disponible pour lire un enregistrement : le haut de la pile.

Cette méthode d'adressage est notamment utilisée par le système d'interruption du programme lors de l'appel de sous-programmes.

La mémoire de pile est implémentée au-dessus de la mémoire normale à l'aide d'un pointeur de pile et d'un adressage à indexation automatique. Logiquement, les cellules mémoire allouées à la pile sont organisées de manière à ce que la dernière adresse écrite soit lue en premier, et la première adresse écrite soit lue en dernier. Cette organisation logique est constituée d'un compteur spécial. Ce compteur est appelé pointeur de pile SP, qui est un registre à microprocesseur. La cellule mémoire dans laquelle à l'heure actuelle peut être écrit, par exemple, l'adresse de retour d'un sous-programme est appelée en haut de la pile . Le nombre de cellules mémoire destinées à organiser une pile est appelé profondeur de pile . La dernière cellule mémoire dans laquelle il est possible d'écrire est appelée bas de la pile . L'écriture sur la pile est effectuée à l'aide d'un adressage autodécrémental et la lecture est effectuée à l'aide d'un adressage auto-incrémental (Figure 10).

Figure 10

Exemple. Appel d'un sous-programme écrit en C.

En langage C, les sous-programmes sont appelés fonctions. Une fonction peut avoir des arguments et des variables locales, c'est-à-dire des variables qui n'existent que lors de l'exécution de la fonction. Supposons qu'une fonction dépende de deux arguments d'entrée x et y de type entier et utilise trois variables locales a, b et c, également de type entier. La fonction renvoie une valeur entière.

Sous-programme :

Programme principal :

Par exemple, à un certain moment du programme, une fonction f est appelée avec les arguments x = 2, y = 3. Le programme appelant pousse les valeurs réelles des arguments x et y de la fonction f sur la pile, avec le premier argument de la fonction en haut de la pile et le deuxième argument en dessous. Lorsqu'une instruction d'appel de fonction est exécutée, l'adresse de retour est également poussée vers le haut de la pile. Lorsque la fonction f démarre, la pile ressemble à ceci :

Avant l'exécution, la fonction f doit récupérer une zone mémoire sur la pile pour ses variables locales a, b, c.

L'ensemble des actions machine mises en œuvre le constitue système de commande .

Malgré le grand nombre de types d’ordinateurs, au niveau le plus bas (« machine »), ils ont beaucoup en commun.

Le système de commande de tout ordinateur contient nécessairement les groupes suivants de commandes de traitement de l'information :

1. Commandes de transfert de données (recensement) qui copient les informations d'un endroit à un autre.

Échange entre registres de processeur,

Processeur et BÉLIER,

Installations de processeurs et de périphériques.

2. Opérations arithmétiques. Les opérations arithmétiques de base incluent généralement l'addition et la soustraction (cette dernière se résume le plus souvent à l'addition). Quant à la multiplication et à la division, dans de nombreux ordinateurs, elles sont effectuées à l'aide d'algorithmes spéciaux.

3. Opérations logiques qui permettent à l'ordinateur d'analyser les informations en cours de traitement. Par exemple, les opérations de comparaison ou les opérations logiques bien connues AND, OR, NOT. De plus, ils ajoutent souvent une analyse des bits de code individuels, leur réinitialisation et leur installation.

4. Le code binaire se déplace vers la gauche et la droite. Pour prouver l'importance de ce groupe de commandes, il suffit de rappeler la règle de multiplication des colonnes : chaque produit suivant est écrit selon un tel schéma avec un décalage d'un chiffre vers la gauche. Dans certains cas particuliers, la multiplication et la division peuvent généralement être remplacées par un décalage (rappelez-vous qu'en ajoutant ou en supprimant un zéro vers la droite, c'est-à-dire en décalant réellement un nombre décimal, vous pouvez l'augmenter ou le diminuer de 10 fois).

5. Commandes d'entrée et de sortie d'informations à échanger avec des périphériques externes. Dans certains ordinateurs, les périphériques externes sont des adresses de mémoire de service spéciales, de sorte que l'entrée et la sortie sont effectuées à l'aide de commandes de recensement.

6. Commandes de contrôle qui implémentent des algorithmes non linéaires. Cela inclut principalement les sauts conditionnels et inconditionnels, ainsi que les commandes d'accès à un sous-programme (saut avec retour). Certains ordinateurs disposent de commandes spéciales pour organiser les boucles, mais cela n'est pas nécessaire : une boucle peut être réduite à l'une ou l'autre combinaison de transitions conditionnelles et inconditionnelles. Souvent, ce même groupe de commandes comprend quelques opérations pour contrôler le processeur - telles que « stop » ou NOP (« aucune opération »). Parfois, ils sont séparés en un groupe spécial.

Considérant le système de commande, on ne peut s'empêcher de mentionner deux directions modernes concurrentes dans sa construction : un ordinateur avec un ensemble complet de commandes CISC (Complex Instruction Set Computer) et avec un ensemble limité - RISC (Reduced Instruction Set Computer). La division est née du fait que la plupart du temps, l'ordinateur doit exécuter une petite partie de son ensemble de commandes, tandis que le reste est utilisé occasionnellement. Ainsi, si vous limitez considérablement l'ensemble des opérations aux plus simples et aux plus courtes, vous obtiendrez une machine RISC assez efficace et rapide. Certes, la rapidité devra être payée par la nécessité d'implémenter des commandes « rejetées » dans le logiciel, mais ce paiement est souvent justifié : par exemple, pour les calculs scientifiques ou l'infographie, la vitesse est bien plus importante que les problèmes de programmation.