Brevet FR2086169A1 — publié le 19711231

L'a présente invention concerne un système de traitement de données à microprogramme présentant des caractéristiques de performance et de coût optimum. Ce système est un perfectionnement de celui décrit dans le brevet américain n°s 3 400 371 et est adapté pour fonctionner conformément aux 5 instructions de programme du type établi dans ledit brevet, En possédant trois cycles machine fondamentaux disponibles, par exemple, 180ns (nanosecondes), 225ns, et 270ns et en examinant certains bits dans chaque mot de commande afin de déterminer le temps de cycle minimum qui peut être utilisé pour exécuter le mot de commande, il est possible de réduire substantiellement tout le ■jq temps nécessaire à l'exécution d'une série de microinstructions. Des exemples particuliers de la réalisation améliorée seront expliqués en détail ci-dessous en considérant des mots de commande qui exécutent des opérations de branchement, des opérations arithmétiques et logiques, et des opérations d'emmagasinage. 15 Dans des systèmes de traitement de données, à logique câblée, on sait commander le fonctionnement des circuits de traitements tel que le temps nécessaire à l'exécution d'une instruction de programme soit maintenu à un temps minimum pour chacune des instructions. Cependant, dans des machines microprogrammées, on prévoit en général un temps de cycle de base pour l'exé-20 cution de tous les mots de commande ou un multiple de ce dit cycle pour exécuter les mots de commande qui ne peuvent pas être exécutés dans le-temps alloué pour un cycle. " Aucun processeur microprogrammé n'a été prévu avec C1} une mémoire de mots de commande et/ou une mémoire principale oui a un temps d'accès 25 qui est substantiellement inférieur au temps exigé par les circuits de traitement pour exécuter un mot de commande, et [2] des moyens pour analyser certains bits dans chaque mot de commande pendant l'exécution de c.e mqt de commande pour déterminer pendant ladite exécution la durée de temps qui sera allouée à l'exécution. 30 En conséquence, un premier objet de la présente invention est de proposer dans un système microprogrammé, une mémoire de commande qui -est plus rapide que les circuits d'exécution des mots de commande ainsi que des moyens permettant d'analyser certains bits de mots, de commande pour commander à l'horloge du système processeur de choisir des longueurs de cycle d'horloge adéquates. 35 De façon à réaliser l'objet ci-dessus, une réalisation préférée de la présente invention utilise un écoulement de données qui fonctionne à des cycles machine de 180, 225 et 270ns, selon le type de mot de commande de microprogramme à exécuter. En concevant un écoulement des données à ces vitesses de cycle, il est possible d'utiliser les circuits de traitement avec 40 plus d'efficacité et d'obtenir par ce moyen les meilleurs performances possi- 71 13016 2 2086169 bles en exécutant chaque mot de microcommande aussi rapidement que possible. Chaque fois qu'un mot de commande est transféré de la mémoire de commande au registre de commande, un mécanisme de décodage du registre de commande examine certains bits du mot de commande pour déterminer les opérations 5 qui doivent être réalisées. A la suite de ce décodage, un circuit de commande de longueur de cycles d'horloge applique des signaux sélectifs au mécanisme d'horloge du processeur pour le faire fonctionner à l'un des trois cycles disponibles Cou à deux des trois cycles]. Pendant le temps où le mécanisme de décodage et les circuits de commande de longueur de cycle déterminent 10 le temps de cycle, le mécanisme d'horloge aura déjà commencé le cycle et, en fait, l'exécution du mot de commande de microprogramme•aura été mis en route. , Dans la réalisation préférée, chaque fois qu'on établit un accès vers la mémoire de commande, deux mots sont lus de la mémoire de commande et 15 sont envoyés dans le registre de commande. Puisque seulement un des deux mots de commande de microprogramme lu à partir de la mémoire de commande doit être utilisé, ce parcours de données peut être utilisé pour retarder le branchement, c'est-à-dire, le mot de commande particulier qui doit être écrit dans le registre de commande n'a pas besoin d'être déterminé jusqu'à 20 Ce que les deux mots soient immédiatement disponibles à l'entrée du registre de commande, ce qui représente un laps de temps impartant après l'accès et la lecture du double mot provenant de la mémoire de commande. Ainsi, la décision du choix de l'un des deux mots pour l'exécution peut, dans beaucoup de cas, être retardée dans le cycle ce qui permet de raccourcir le temps 25 de traitement en utilisant un cycle légèrement plus long (225ns) mais plus court que les deux cycles de 100 ns. Des branchements déterminés par les bits de mot de commande fixes ou les bits de registre d'état peuvent être réalisés dans un cycle plus court (180ns). Un autre exemple d'amélioration des performances/coût est dû à l'utili-30 sation d'un ALU (unité arithmétique et logique). Un ALU à demi-mot est prévu qui permet l'exécution d'une opération logique ou arithmétique binaire par demi-mot dans le temps de cycle le plus court (180ns). Il suffit de prévoir quelques circuits de traitement additionnels dans l'ALU pour permettre le traitement du second demi-mot par l'ALU pendant des opérations utilisant 35 des mots entiers en augmentant le temps de cycle (180ns) nécessaire pour l'opération arithmétique d'un demi-mot à 225ns pour une opération arithmétique d'un mot. Ceci permet une très légère diminution de la performance avec une réduction très importante du coût des circuits de traitement de l'ALU. De même, cette possibilité d'utiliser l'ALU deux fois pendant un cycle 40 machine est utilisée pour exécuter des additions décimales darts un cycle 71 13016 3 2086169 de 225ns. Deux octets décimaux sont ajoutés dans l'ALU et les résultats de l'addition sont introduits dans l'ALU pour donner une correction décimale lorsque c'est nécessaire. En réalisant une correction décimale lors du second passage à travers l'ALU et en éliminant les circuits de correction de l'entrée 5 de l'ALU, on élimine un étage de retardement, raccourcissant le temps d'exécution de toutes les opérations autres que les additions décimales. Un troisième exemple qui sera décrit avec plus de détail ci-dessous, dans lequel des performances améliorées sont atteintes par l'utilisation de temps de cycle variables, concerne des mots d'emmagasinage qui provoquent 10 le transfert des données vers la mémoire principale et à partir de la mémoire principale pour permettre le traitement des données. Dans la réalisation préférée, les données sont transférées pendant une exécution de mots de commande à partir de la mémoire principale vers une mémoire locale pour permettre le traitement pendant une exécution subséquente de mots de commande. 15 Après traitement des données, elles retournent à la mémoire locale avant d'être transférées à la mémoire principale. Les cycles d'emmagasinage qui sont utilisés pour le transfert des données entre la mémoire locale et la mémoire principale demandent des périodes de temps qui sont plus longues que n'importe quel temps de cycle machine classique. En définitive, un cycle 20 de 225ns, et un cycle de 270ns, ou deux cycles de 270ns, sont combinés pour exécuter des mots d'emmagasinage. Certains avantages résultant de l'utilisation de longueurs de cycles multiples apparaîtront à la suite de la description détaillée. Quelques-uns des avantages sont donnés ci-dessous. Examinons ces avantages d'abord, 25 d'un point de vue négatif: a. Si le temps de cycle machine de la réalisation préférée était cîe 180ns, tous les mots entiers, décimaux et de retard de branchement demanderaient 360ns au lieu de 225ns. Le mot de lecture de la mémoire demanderait 3 cycles de 180ns (soit 540nsJ. 30 b. Si le temps de cycle machine était de 225ns, tous les branchements rapides demanderaient 225ns au lieu de 180ns. Les mots d'emmagasinage demanderaient 775ns au lieu de 495 ou 540ns. c. Si le temps de cycle machine était de 270ns, seuls le mot d'emmagasinage fonctionnerait de façon efficace. Tous les autres mots perdraient 35 45 à 90ns de performance. Le seul fait de pouvoir fonctionner à l'une des trois vitesses de cycle permet d'optimiser de façon efficace la réalisation. De façon positive, les avantages obtenus par la réalisation d'un système à cycles multiples sont : 71 13016 4 2Û86169 1. Efficacité maximum dans l'utilisation du temps, gagnée avec un coût minimum par rapport aux machines à cycles simples. 2. Possibilité d'exécuter des opérations arithmétiques par mat complet sans addition de circuits de traitement coûteux. 5 3. Possibilité de conserver un étage de retardement dans le parcours de l'ALU en réalisant une correction décimale pendant le second passage à travers l'ALU. 4. Réalisation du "retard de branchement", arrangement avantageux et possible. 10 5. Possibilité d'exécuter toutes les opérations nécessaires du mot d'emmagasinage avec des synchronisations communes utilisées dans les autres types de mots de commande, minimisant ainsi la nécessité de créer des synchronisations particulières. 6. Possibilité d'atteindre des objectifs à performances améliorées 15 sans augmentation importante du coût. D'autres objets, caractéristiques et avantages de la présente invention ressortiront mieux de l'exposé qui suit, fait en référence aux dessins annexés à ce texte, qui représentent un mode de réalisation préféré de celle-ci. La figure 1 est une illustration schématique d'un processeur à vitesse 20 élevée et de ses circuits de transmission de données. Les figures 2a - 2i inclus sont des représentations schématiques détaillées d'un processeur amélioré et de son circuit de transmission de données et la figure 2 représente la façon avec laquelle les figures 2a - 2i sont interconnectées; 25 La figure 3 représente de façon schématique une forme préférée de l'hor loge à cycle variable et de ses connexions d'entrée et de sortie; La figure 4 est un diagramme des temps des cycles d*horloge; La figure 5 est un diagramme des circuits de commande qui permettent aux différents cycles machines d'avoir des intervalles de temps d'horloge 30 prédéterminés; Les figures 6-16 inclus représentent de façon schématique l'exécution des différents exemples de mots de commande et établit les diagrammes de temps correspondants pour les opérations. Le dispositif préféré représenté dans les dessins est une amélioration 35 du dispositif décrit dans le brevet américain n° 3 400 371 déposé le 3 Septembre 1966 par la demanderesse et comporte des routines de microprogramme pour commander le circuit de traitement pour l'exécution de macro-instructions généralement du type décrit dans le brevet sus-mentionnée. Avant de décrire la réalisation préférée, on définira un certain nombre de termes qui seront utilisés par la suite. Les données sont d'abord disposées 40 71 13016 5 2086169 sur une base de mots, chaque mot comprenant quatre octets. Chaque octet comporte huit bits de données binaires et un bit de contrôle de parité. Dans certains cas, les données sont introduites et transférées par double mots, que l'on appelle parfois mots pairs et impairs d'un double mot. Dans 5 la mémoire principale et dans la mémoire de commande, les données et mots de commande sont disposées en groupes de 64 mots que l'on appelle des modules. La figure 1 est une représentation schématique d'un système préféré à l'intérieur duquel on peut utiliser la présente application. Le système comprend une unité d'emmagasinage à vitesse élevée 1 qui se compose d'une 10 mémoire de commande 1a et d'une mémoire principale 1b. Les mots de commande de microprogramme sont emmagasinés dans la mémoire de commande 1a, tandis que les données et instructions de programme sont emmagasinées dans la mémoire principale 1b. Des mots de commande de microprogramme sont transférés de façon séquen-15 tielle de l'unité 1 au registre (de commande) C2 par l'intermédiaire d'un "bus de sortie de données d'emmagasinage" que l'on appellera SDSO (ayant pour largeur deux mots). L'accès aux mots de commande, données et instructions de programme dans l'unité 1 est réalisée par l'intermédiaire d'un registre d'adresse 3. Des circuits de branchement 4 peuvent être utilisés si on le 20 désire, pour changer la séquence normale dans laquelle les mots de commande de microprogramme sont exécutés. Pour travailler sur les données emmagasinées dans la partie de la mémoire principale de l'unité 1, il est nécessaire de transférer ces données aux unités d'emmagasinage locales A et B, 5 et b, ou aux registres externes 25 7. Le transfert des données de l'unité 1 aux unités d'emmagasinage locales ou aux registres externes est effectué par l'intermédiaire du bus SDBO, des bascules pré-assembleur SDBD 10, de l'assembleur 11, et des circuits 12 de sélection d'octets, de mots, et demi-mots. La position particulière dans les unités d'emmagasinage locales ou dans les registres externes, dans lesquels 30 les données doivent être transférées est déterminée par les circuits 13 de décodage d'adresse de registres externes et de mémoire locale qui décodent les bits choisis dans chaque mot de commande sur le bus SDBO et certains bits dans les octets P et L du registre externe particulier (SPTL) 7a. Des données sont traitées dans un ALU (unité logique et arithmétique) 35 20 qui reçoit les données provenant des. unités d'emmagasinage locafcS et S par l'intermédiaire des registres A et B 21 et 22, et des assembleurs A et B 23 et 24. Les données à traiter par l'ALU 20 et se trouvant dans les registres externes 7 sont transférées à l'ALU 20 par l'intermédiaire d'un assembleur externe 25, d'un registre A 21, et soit.de l'assembleur 40 A 23, soit du registre B 22 et de l'assembleur B 24. 7113016 2086169' De façon à réaliser le transfert des données sur le parcours que l'on vient de mentionner, il est nécessaire de prévoir un bus 26 connectant la sortie du registre A à l'entrée du registre B 22. Des valeurs constantes binaires déterminées sont introduites dans l'ALU 20 par l'intermédiaire 5 de l'assembleur K 27. Les données qui doivent être traitées par l'ALU 20 sont renvoyées aux positions correspondantes choisies dans les unités d'emmagasinage locales 5 et 6 ou autrement vers un registre externe choisi 7 par l'intermédiaire d'un registre Z 30, d'un registre D 31 et de l'assembleur 11. La sélection 10 de l'emplacement particulier pour la destination des données traitées est réalisée par l'intermédiaire de la même mémoire locale et des mêmes circuits de décodage d'adresses externes 13. Les données traitées sont alors renvoyées à la partie de la mémoire principale de l'unité de commande 1 par l'intermédiaire d'un registre A 21, de l'assembleur A 23 et d'"un bus d'entrée de 15 données d'emmagasinage" SDBI. Pendant le transfert des données entre l'unité d'emmagasinage 1 et, soit les unités d'emmagasinage local 5 et S, soit les registres externes 7, la position d'emmagasinage dans l'unité 1 est choisie par l'intermédiaire d'une adresse imposée ou d'une adresse indiquée par l'unité d'emmagasinage locale 5 ou 6 et transférée au registre d'adresses 20 3 par l'intermédiaire du registre B 22. Dans le système préféré illustré dans la figure 1, les unités d'errmaga-sinage locales A et B 5 et 6 sont symétriques l'une par rapport à l'autre, autrement dit chaque fois que les données sont emmagasinées dans une position choisie de l'unité d'errmagasinage local A 5, les mêmes données sont emmagasi-25 nées dans une position correspondante de l'unité d'emmagasinage locale B 6. Par conséquent, à tout moment, les données existant dans chacune des unités d'emmagasinage 5 et 6 seront identiques. Cependant, lorsque des données sont lues à partir de, soit l'unité d'emmagasinage local A, soit B 5 ou 6, les positions de données sont adressées individuellement. C'est-à-dire, 30 une position dans l'unité d'emmagasinage local A 5 est introduite comme une source de données A pendant une première partie d'un cycle de mot de commande et au même moment, une position totalement différente dans la mémoire locale 3 6-est introduite comme une source de données B. De cette façon, deux emplacements d'emmagasinage local (ou un emplacement d'emmagasinage 35 local et un registre externe) sont introduits simultanément comme des sources de données pour augmenter la vitesse de fonctionnement du dispositif. La synchronisation du fonctionnement du dispositif est commandée par l'intermédiaire de plusieurs horloges de systèmes pratiquement identiques 35 (c'est-à-dire 35-1 à 35-n) et par un maître oscillateur 36. Les impulsions 40 de sortie de l'oscillateur 36 sont appliquées de façon continue aux entrées 10 71 13016 2086169 ' das horloges du système 35. Cependant, un dispositif comportant un circuit de décodage de commande de longueur de cycle associé au registre C 2 envoie sélectivement les impulsions de sortie de l'oscillateur dans les différentes horloges 35 selon le mot de commande de microprogramme particulier à exécuter. Selon le type de mot à exécuter, la longueur de cycle des horloges sera établie pendant l'exécution de ce mot de commande particulier. Dans la réalisation préférée, une horloge est prévue pour chaque panneau de circuit et comporte un dispositif à retardement réglable placé entre ses entrées et la sortie de l'oscillateur pour synchroniser toutes les périodes d'horloge. La mise en séquence manuelle du processeur est réalisée par des commutateurs de console 37, dont les signaux de sortie sont couplés au registre de commande 2 et aux circuits de décodage d'adresses 13 par l'intermédiaire d'un assembleur 30. Des données peuvent être introduites dans le processeur a partir des commutateurs 37 par l'intermédiaire d'un assembleur 39 et d'un 15 assembleur externe 25. Dans la réalisation préférée de la présente application, l'unité d'emmagasinage 1 est d'un certain type dans lequel les positions d'emmagasinage sont constituées de cellules d'emmagasinage à transistors fabriquées de façon monolithique dans lesquelles un bit de données binaires est emmagasiné 20 dans chaque cellule. L'unité d'emmagasinage à transistors est du type à lecture non destructive qui permet à la partie de la mémoire de commande de l'unité d'emmagasinage d'être du type mémoire de commande inscriptible dans laquelle les mots de commande de microprogramme peuvent être sélectivement introduits dans la partie de la mémoire de commande de l'unité 1 et peuvent 25 être modifiés à n'importe quel moment en chargeant dans la partie de la mémoire de commande un nouvel ensemble de mots de commande de microprogramme. Dans la réalisation préférée, le chargement de la mémoire de commande non permanente est réalisé par l'intermédiaire d'une mémoire extérieure 40 comportant une unité à disques magnétiques et des dispositifs de commande 30 appropriés, à la demande des clients, une partie de microprogramme de la mémoire de commande sera transférée de la mémoire extérieure 40 à la partie de commande de l'unité d'emmagasinage 1 par l'intermédiaire de l'assembleur 39, de l'assembleur externe 25 et des parcours de données normaux du processeur. La mémoire extérieure 40 emmagasine aussi des commandes adéquates qui, lors-qu'elles sont décodées dans l'unité 40, sont appliquées au registre de commande 2 et au circuit de décodage d'adresses 13 par l'intermédiaire de l'assembleur 38 pour commander à la fois le chargement de la partie de la mémoire de commande de l'unité d'emmagasinage 1 et pour permettre de diagnostiquer le processeur. La réalisation préférée représentée dans la figure 1 comporte aussi 40 71 13016 a 2086169 ip circuit d'anticipàtion 41. La fonction prévue pour ce circuit 41 est le transfert direct des données du registre Z 30 aux registres A et B 21 et 22 par l'intermédiaire du parcours 42 dans les cas où une source de données dans les unités d'emmagasinage local 5 ou B représente aussi la destination 5 des données dans le cycle précédent. Dans ce sens, on se rendra compte que dans la réalisation préférée de la présente invention, les données qui sont traitées pendant l'exécution d'un mot de commande ne sont pas destinées à leurs positions choisies dans les unités d'arrmagasinage 5 ou 6 ou dans les registres externes 7 jusqu'à l'exécution du mot de commande suivant. 10 Puisque les données dans les unités d'emmagasinage locales 5 et 6 et dans les registres externes 7 ne sont pas mises à jour jusqu'au mot de commande suivant dans le cycle, on ne peut pas accéder à cet emplacement mis à jour comme une source pendant l'exécution du mot de commande suivant. Par conséquent, par rapport aux positions dans les unités d'emmagasinage locales A et B 15 5 et 8, le transfert direct des données mises à jour est effectué par l'intermédiaire d'un parcours de données 42 connectant la sortie du registre Z 30 aux registres A et B 21 et 22. Dans la réalisation préférée, cette caractéristique d'anticipation de destination n'est pas prévue par rapport aux registres externes 7 à l'exception du registre SPTL 7a dont la sortie est aussi 20 directement connectée aux registres A et B 21, 22 par l'intermédiaire du parcours 43. Par conséquent, tout registre externe autre que 7a qui doit être mis à jour pendant l'exécution d'un mot de commande ne peut jamais être une sou-rce de données pour le mot de commande suivant. On décrira maintenant de façon plus détaillée les circuits représentés 25 dans les figures 2a - 2i inclus, la figure 2 représente le positionnement des figures 2a - 2i las unes par rapport aux autres. L'unité d'emmagasinage 1 est montrée avec plus de détail dans la figure 2i et comporte des parties d'emmagasinage de commande paires et impaires 100 et 101, des parties d'emmagasinage de données ou de mémoire principale 30 102 et 103. Comme indiqué précéderrment, on accède à la fois à la mémoire principale et à la mémoire de commande pendant les cycles de lecture par double mot et ces doubles mots sont appliqués au bus SDBO. Pour essayer d'empêcher le défaut d'alignement entre les mots pairs et impairs des doubles mots, les emplacements physiques des doubles mots pairs et impairs se trouvent 35 sur les côtés opposés et éauidistants des circuits de sortie de données 104. La mémoire de commande est représentée adjacente aux circuits de données 104, la mémoire principale 102 et 103 étant placée beaucoup plus loin des circuits 104. Ceci assure un retard minimum dans le transfert des mots de commande des parties de l'unité d'enmagasinage 100 et 101 au registre de 40 commande 2 de la figure 2f et aux circuits de décodage d'adresses des figures 71 13016 9 2086169 2a et 2b. Les données transférées à l'unité 1 pendant des cycles d'emmagasinage par l'intermédiaire du bus d'entrée SDBI sont introduites sur la base d'un mot à la fois. Par conséquent, il n'y a aucun positionnement critique des circuits d'entrée de données 105,sur lesquels le bus SOBI est connecté 5 et les emplacements des positions de la mémoire principale et de la mémoire de commande. L'unité d'emmagasinage 1 comporte aussi un circuit 103 de type connu de contrôle d'erreurs de bits doubles asymétriques et de correction d'erreurs de bit unique. Puisque ce circuit particulier n'est pas revendiqué dans la présente application, ne sera pas décrit ici. 10 La figure 2e représente avec détail le registre d'adresses 3 et comporte les registres M1, M2 et M3 110, 111 et 112. Les sorties de ces registres sont connectées aux circuits de commande d'entrée 113, 114 et 115 de l'unité d'emmagasinage 1 par l'intermédiaire des bus 116, 117 et 118. Associés à ces registres 111 et 112, il y a des registres auxiliaires N2 et >M3 119 15 et 120. Les adresses, pour accéder aux données à partir de la mémoire principale 102 et 103 ou aux mots de commande de microprogramme à partir des parties de la mémoire de commande 100 et 101, sont placées dans les registres M1, M2 et M3. Dans_ la réalisation préférée, le registre M3 représente la partie d'ordre inférieure des circuits de registre d'adresses 3 et comporte 20 huit bits [ un octet) pour accéder à un des 64 mots dans chaque module. Le registre M2 est un registre à 1 octet et le registre M1 comporte 4 bits pour accéder aux différents modules. Le bit d'ordre inférieur 7 de M3 détermine la sélection de l'octet. Le bit 6 de M3 détermine la sélection de demi-mot, et le bit 5 de M3 détermine la sélection de mots. Les bits 0-5, inclus 25 de M3 permettent la sélection de l'un des 64 mots, c'est-à-dire, d'un module. Les 8 bits de M2 permettent la sélection entre les 256 modules ou approximativement 16K. (milliers) de mots. Les quatre bits de M1 permettent seize combinaisons par lesquelles on peut accéder à 256K mots par les registres M1, M2 et M3. 30 Dans la réalisation préférée, la mémoire de commande 1a peut avoir un maximum de 16K mots par lequel des adresses de mots de commande fournies par microprogramme demandent un maximum de seulement 16 bits à fournir, c'est-à-dire à M2. Les accès à la mémoire principale et à la mémoire de commande se font 35 toujours sur une base d'un double' mot. Cependant, des données peuvent être emmagasinées dans la mémoire principale sur une base d'un octet, d'un demi-mot ou d'un mot. L'opération particulière qui est précisée par le mot de commande à exécuter détermine si on doit emmagasiner un mot, un demi-mot ou un octet. 40 La plupart des opérations de mots de commande de microprogramme entraîne 11 13016 10 2086169 ' seulement la modification du registre M3. Dans la mesure du possible, des mots de commande de microprogramme suivant dans une routine sont maintenus à l'intérieur du même module par lesquels les registres M1:et M2 peuvent être maintenus à la même valeur pour une série d'opérations de commande 5 de microprogramme. Des opérations de branchement à quatre directions sont précisées par le chargement des bits 4 et 5 dans le registre M3. Comme indiqué ci-dessus, le bit 5 de M3 détermine la sélection d'un mot pair ou impair dans un double mot lu ou dans une opération d'emmagasinage" qui est particulièrement utile aux accès de mots de commande comme on le décrira par la suite. 1Q Le bit 4 de M3 pour les opérations de branchement détermine le double mot auquel on accède parmi les deux doubles mots consécutifs de la mémoire principale et de la mémoire de commande. Les registres N2 et I\I3 sont prévus comme des registres 'auxiliaires pour l'accès aux mots de commande. L'adresse dans N2, aussi bien que dans 15 . M2, sera une adresse de module. Comme indiaué précédemment, une série d'opérations de mots de commande de microprogramme peut être indiquée en accédant aux mots à partir du même module dans la mémoire de commande. L'adresse emmagasinée dans N2 est modifiée seulement lorsqu'une variation dans l'adresse de module est précisée par le mot de commande en cours d'exécution. Les 20 registres M2 et N2 sont chargés avec cette nouvelle adresse de module. L'adresse reste alors dans le registre N2 jusqu'à ce qu'un nouveau changement dans l'adresse du module soit précisé. Comme chaque mot de commande suivant dans le même module est exécuté, l'adresse dans N2 est transférée dans M2 pour accéder au mot de commande suivant jusqu'à ce qu'un nouveau module 25 soit demandé. Si une rupture de déroulement se produit pendant l'exécution d'un mot de commande, les registres M sont chargés à la valeur d'adresse de la rupture de déroulement. Cependant, les registres i\l ne sont pas modifiés lorsqu'une rupture de déroulement se produit, de sorte que l'adresse de commande suivante 30 en cours peut être conservée. La routine de rupture de déroulement errmagasine le contenu du registre N de sorte que la séquence correcte de mots de commande peut être remise en route en rechargeant à la fois M et N avec l'adresse mise de côté lorsque la routine de microprogramme mise en route par la rupture de déroulement est achevée. 35 Les registres MB2 et MB3 125 et 126 servent de registres auxiliaires supplémentaires pour les registres M2 et f13. Les registres MB2 et FIB3 sont chargés à l'adresse du mot de commande qui se trouve dans M2 et M3. Lorsque l'horloge du CPU est arrêtée, les registres MB2 et MB3 renferment les bits d'adresse du mot de commande exécuté précédemment tandis que les registres 40 M2 et M3 renferment l'adresse du mot de commande à exécuter ensuite. Cette 71 13016 n 2086169 donnée existante dans les registres MB2 et MB3 est utilisée pendant les routines de contrôle d'erreur. Les circuits d'interruption et de commande de priorité sont illustrés en 127 et sont d'un type connu. Les registres auxiliaires 128 de la figure 5 2h sont des registres utilisés en même temps que les circuits 127 dans certaines routines d'interruption. Les circuits 127 et les registres 128 ne sont pas revendiqués dans la présente application et ne seront pas, par conséquent, décrits. L'entrée des données d'adresses dans les registres M1, M2 et M3 aussi 10 bien que dans les registres N2 et N3, se fait pas l'intermédiaire des circuits assembleurs 130, 131 et 132. Pour chaque bit d'adresse, les assembleurs 130 - 132 comprennent plusieurs circuits ET, dont les sorties sont appliquées à un circuit OU. Ainsi, les références numériques 4, 8, 8 sont indiquées dans les circuits OU des assembleurs 130 - 132 pour indiquer qu'il y a quatre 15 circuits 130, huit circuits 131 nu 132. Les signaux de sortie des circuits OU sont envoyés à leurs registres respectifs M, P12, M3, N2 et N3. Les entrées de l'assembleur 130 reçoivent d'abord un premier bus ACB+1, et un bus ACB qui provient des circuits de frontière de mémoire d'adresse 133 qui fournissent des moyens de réaliser des accès supplémentaires à la mémoire de commande 20 1 de placer la frontière entre la mémoire de commande 1a et la mémoire principale 1b. Un bus Force constitue une troisième entrée à l'assembleur 130 et est utilisé dans les cas où les bits d'adresse à transférer à M1 sont des constantes numériques choisies provenant du mot de commande à exécuter. On rappellera qu'un maximum de 20 bits est transféré aux registres 25 M1, M2 et M3 pour adresser n'importe quelle partie de la mémoire principale 1b. Ainsi, pendant l'exécution de plusieurs mots d'emmagasinage dans lesquels les données sont transférées entre l'unité de la mémoire principale 1b et soit la mémoire locale 5, B soit un registre externe 7, l'adresse de 20 bits à insérer dans les registres M1, M2 et M3 provient des 20 bits d'ordre 30 inférieur dans le bus de sortie 133 du registre B 22 de la figure 2d. Ce bus à 20 bits 133 est appliqué aux entrées respectives des assembleurs 130, 131 et 132. les bits choisis de l'octet 2 provenant du registre C 2 de la figure 2g sont utilisés comme signaux aux entrées 143 et 144 des assembleurs 131 35 et 132. Un bus d'entrée 145 à l'assembleur 132 couple l'assembleur aux bits de sortie choisis de l'octet du registre C 3. Des adresses d'interruption sont introduites dans les assembleurs 131 et 132 provenant des circuits d'interruption 127 par l'intermédiaire des bus 14Sa, 146b. Les unités de mémoire locale A et B 5 et B sont illustrées dans la 40 figure 2b et on y accède par l'intermédiaire des circuits d'adressage compor 71 13016 12 2086169 tant les circuits de décodage d'adresses de mémoire locale A et B 150 et 151. Les circuits 15Q et 151 ainsi qu'un registre d'adresses de destination et de décodage du registre externe 152 comportent le circuit de décodage d'adresse externe et de mémoire locale 13 de la figure 1. 5 Un bus d'adresse de sortie 153 provenant du circuit de décodage 150 est utilisé pour choisir des mots désirés dans une unité d'emmagasinage locale 5. Il est aussi connecté à un registre d'adresses de destination A 154 par l'intermédiaire du registre de mémoire intermédiaire A 155. Chaque fois que l'on accède à la mémoire locale A 5 considéré comme 10 une source, en décodant les bits choisis dans le circuit de décodage 150, le décodage d'adresses est transféré dans la mémoire intermédiaire 155. Dans le cas où cette même adresse correspond à l'adresse de destination des données à traiter par l'ALU 20, cette adresse est alors transférée de la mémoire intermédiaire 155 à la fois dans le registre de destination A 154 15 et dans le registre de destination B 156. De même, une mémoire intermédiaire de destination B 157 est reliée à la sortie du bus d'adresses 158 du circuit de décodage B 151. Lorsque la source B peut aussi être la destination, l'adresse emmagasinée dans la mémoire intermédiaire 157 est transférée à la fois dans les registres 154 20 et 156. Ceci est la façon par laquelle les données sont destinées aux deux mémoires locales simultanément par lesquelles une mémoire locale est l'image symétrique de l'autre par rapport aux données qui y sont emmagasinées. Des adresses pour accéder aux mémoires locales A et B 5 et 6 proviennent partiellement des registres P et L par l'intermédiaire des bus 160 et 161 25 et du bus SDBO par l'intermédiaire du circuit de porte de sélection de mot pair/impair 162 de la figure 2a, d'un bus à quatre octets 163, d'un assembleur d'adresses de la mémoire locale 164 et d'un bus à deux octets 165 qui transfère les octets 1 et 2 (que l'on appelle ici C1 et C2) du mot de commande choisi par le circuit 162. Des octets similaires C1 et C2 pour adresser la mémoire 30 locale proviennent aussi de la mémoire extérieure 40 de la figure 2a, d'un circuit de commande à canaux simples (non représentés), des commutateurs de la console de l'opérateur 37 et des bascules de diagnostic 166 de la figure 2c, chacune par l'intermédiaire de l'assembleur 3B de la figure 2a et d'un câble 167 qui est relié à l'autre entrée de l'assembleur 164. Un signal 35 d'entrée de bits d'adresses supplémentaires au circuit de décodage de la mémoire locale 151 provient de la mémoire extérieure 40 par l'intermédiaire d'un bus 170. Un bus 171, appelé bus "canal simple force", en provenance des circuits de commande de priorité 127 de la figure 2e, est appliqué à l'entrée des circuits de décodage A et B 150 et 151. Des bits 0-5 inclus 40 du registre d'adresse M3 sont appliqués à l'entrée du circuit de décodage 71 13016 13 2086169 A 150 par l'intermédiaire d'un bus 172. Lorsqu'on accède aux mémoires locales A et B 5 et 6, pour y entrer l'information, les adresses dans les registres d'adresses de destination A et B 154 et 156 sont envoyées aux entrées des circuits de décodage 150 et 151 5 par l'intermédiaire des bus 173 et 174, respectivement. sont Les circuits d'anticipation de destination 41/illustrés sur la figure 2b et comportent une partie de décodage B 175 et une partie de décodage A 176. Les câbles de sortie 177 et 178 provenant des circuits de décodage A et B 175 et 176 sont appliqués aux entrées des circuits de comparaison 10 A et B 180 et 181. Les câbles de sortie 174 et 173 des registres de destination A et B 156 et 154 sont aussi appliqués aux circuits de comparaison 180 et 181. Dans le cas où l'un des circuits 180 ou 181 indique une égalité entre ses signaux d'entrées respectifs lorsqu'on doit accéder à la mémoire locale A ou B respectivement comme source dans la première partie de l'exécution 15 du mot de commande, l'égalité indique que la source n'a pas été mise à .jour puisque c'est l'adresse de destination provenant du mot de microprogramme exécutée précédemment. Une comparaison indiquant l'égalité dans le circuit 180 applique une impulsion à la ligne de sortie 182 pour permettre à la partie du mot de commande qui n'a pas encore été mise à jour et qui se trouve 20 encore dans le registre Z (figure 2g) d'être envoyée directement au registre B 22 (figure 2d) par l'intermédiaire du câble 42 qui relie directement la sortie du registre Z à l'entrée du registre B 22 par l'intermédiaire des circuits de conditionnement ou des assembleurs 190 ou 191 (figure 2d). Une comparaison indiquant l'égalité dans le circuit 181 applique une 25 impulsion sur la ligne 163 qui entraîne le transfert de la partie du mot désiré qui n'a pas été mis à jour et qui se trouve encore dans le registre Z vers le registre 21 de la figure 2c par l'intermédiaire du câble 42 et de l'assembleur 192 de la figure 2c. Comme indiqué précédemment sur la figure 1, des données sont introduites 30 dans les mémoires locales A et B 5 et 6 de la figure 2b par l'intermédiaire de l'assembleur SDBO 11 de la figure 2f et d'un bus à quatre octets 193. L'assembleur SDBO 11 reçoit des signaux d'entrée alternativement du registre B 31 de la figure 2g par l'intermédiaire du câble 194 et des bascules de pré-assemblage SDBO 10 par l'intermédiaire des circuits de sélection 12, 35 d'octets, de mots et de demi-mots de la figure 2f. Les données de sortie provenant de la mémoire locale B 6 de la figure 2b sont appliquées au registre B 22 par l'intermédiaire d'un câble 200 et de l'assembleur 191. Les données de sortie provenant de la mémoire locale A 5 sont appliquées au registre A 21 de la figure 2c par l'intermédiaire 40 d'un câble 201 et de l'assembleur 192. 71 13016 14 2086169 La sortie du registre A 21 (figure 2c) est couplée, comme .indiqué précédemment, par l'intermédiaire du câble 26, aux circuits de conditionnement 191 (figure 2d) dans le registre B 22. Le câble 26 couple aussi les octets 0, 2 et 3 du registre A 21 à l'octet 0 de l'assembleur 23 et les cctets. 5 0, 1 et 3 du registre A 21 à l'octet 1 de l'assembleur 23 et enfin les quatre octets du registre A 21 aux octets 2 et 3 de l'assembleur 23. L'ALU 20 a une largeur de deux octets et est divisé par conséquent en deux parties appelées ALU2 et ALU3 (octets 2 et 3, figures 2g, 2h). L'octet 3 de l'assembleur 23 est envoyé aux circuits de branchement 10 4 (figure 2d) par l'intermédiaire d'un câble 210. Les octets 0 - 4 de l'assembleur 23 sont couplés au bus SDBI par l'intermédiaire de plusieurs circuits de commande 211 et un câble à quatre octets 212. Les octets 2 et 3 de l'assembleur 23 sont envoyés à l'ALU2 et à l'ALU3 par l'intermédiaire des câbles 213, 214 et des circuits de conditionnement et de croisement 215, 216. 15 Les octets 0 et 1 du registre B 22 sont couplés respectivement aux octets 0 et 1 du registre Z 30 (figure 2g) par l'intermédiaire des câbles 220 et 221 et les octets 0 et 1 d'un circuit de conditionnement à quatre octets 222 de la figure 2h. Les octets 2 et 3 et les bits 4 - 7 de l'octet 1 du registre B 22 sont 20 envoyés par l'intermédiaire du câble 133 aux circuits de conditionnement d'entrée du registre M comme décrit ci-dessus. Les octets 0 - 3 du registre B 22 sont aussi envoyés à l'ALU 3 de la figure 2i par l'intermédiaire de l'octet 2 de l'assembleur 24, des câbles 224 et 225, des circuits de conditionnement et de décalage 226 et 227, des circuits "valeurs vraies et complé-25 mentaires" 228 et 229. L'octet 1 du registre B 22 est aussi envoyé à l'ALU2 par l'intermédiaire du câble 221, d'un circuit de conditionnement 230, d'un circuit ET 231, d'un circuit de conditionnement et de décalage 226 et du circuit 228. Pendant les opérations de décalage, un circuit ET 232 de la figure 30 2d peut être utilisé pour coupler les quatre bits d'ordre supérieur 0 - 3 de l'octet 3 de l'assembleur 24 aux bits d'ordre inférieur 4 - 7 de l'octet 2 de l'assembleur 24 à l'ALU 3 par l'intermédiaire des circuits de conditionnement et de décalage 227 et du circuit 229. De même, le circuit ET 231 (figure 2c) peut être utilisé pendant les opérations de décalage pour coupler 35 les quatre bits d'ordre inférieur 4 - 7 de l'octet 1 du registre B 22 aux quatre bits d'ordre supérieur 0 - 3 de l'octet 2 du registre B à l'ALU2. Le signal de sortie de l'ALU3 de la figure 2h est envoyé à chacun des quatre octets du registre Z 30 par l'intermédiaire de chacun des quatre octets du circuit de conditionnement 222 et d'un câble 235. Le signal de 40 sortie de l'ALU2 est envoyé aux octets 0 et 2 du registre Z 30 par l'inter 71 13016 15 2086169 médiaire des octets 0 et 2 des circuits de conditionnement 222 et du câble 236. Comme indiqué précédemment, le signal de sortie du registre Z est envoyé directement à l'entrée du registre D 31 comme représenté sur la figure 2g 5 et est envoyé par l'intermédiaire du câble 42 aux entrées des circuits de conditionnement des registres A et B 190 des figures 2d et 192 de la figure 2c. Les octets 0 - 3 du registre Z sont aussi envoyés respectivement aux octets S, P, T et L du registre SPTL 7a de la figure 2h par l'intermédiaire des câbles à un octet, 240 - 0 à 240 - 3 respectivement. 10 Le signal de sortie du registre SPTL 7a est envoyé au registre B 22 de la figure 2d par l'intermédiaire du câble à 4 octets 43 et des circuits de conditionnement 190 et 191. Le câble 43 est aussi relié au registre A 21 par l'intermédiaire d'un circuit OU 242 de la figure 2c, d'un câble 243 et des circuits de conditionnement 192. 15 Le circuit DU 242, le câble 243 et le circuit de conditionnement 192 relient aussi la sortie de l'assembleur externe 25 de la figure 2b au registre A 21 de la figure 2c. La commande de l'assembleur externe 25 est effectuée par le circuit du registre d'adresses de destination et de décodage de registre externe 152a [et par son assembleur 152b) qui est connecté à une entrée 20 de l'assembleur externe 25 par l'intermédiaire d'un câble 250. Les registres externes 7 ont leur sortie connectée à l'entrée de l'assembleur externe 25 par l'intermédiaire d'un câble 251. Une autre entrée à l'assembleur externe 25 reçoit le câble 252 qui provient des registres N2, N3 119 et 120 de la figure 2e. 25 La mémoire extérieure 40 et les commutateurs 37 (figure 2a) sont connectés à l'autre entrée de l'assembleur externe 25 par l'intermédiaire du circuit de conditionnement 39 et d'un câble 253. Les circuits de commande de canaux 260 de la figure 2b sont connectés à l'autre entrée du registre externe 25 et aux circuits de commande de priorité 30 et d'interruption 127 (figure 2i) par l'intermédiaire d'un câble 261a. Les circuits 260 sont aussi connectés à l'entrée de l'assembleur 38 par l'intermédiaire d'une partie de câble 261b (figure 2a). Les circuits de commande de canal 260 ainsi que les circuits de parcours entrée/sortie 262 de la figure 2b sont utilisés pour commander la transmission des données entre le proces-35 seur représenté sur les figures 2à à 2i et l'équipement périphérique à vitesse élevée, tel que des dispositifs d'emmagasinage à disques magnétiques (non représenté). Les circuits 262 comportent un registre GR1 d'entrée 265 dont l'entrée est connectée à un bus d'entrée BI de données canal 1. La sortie du registre 40 G01 266 est connectée au bus de sortie BCT de données canal 1. Une mémoire 71 13016 16 2086169 intermédiaire de registre à décalage 267, comportant le registre d'entrée 265 , est utilisée pour emmagasiner les données à transférer du bus d'entrée canal 1 à la mémoire principale 1 ou à transférer de la mémoire principale 1 au bus de sortie canal 1. 5 Les données sont reçues sur le bus d'entrée canal 1, un octet a la fois, et sont transférées à travers les étages suivants de la méoire intermédiaire 267. Les données sont alors transférées, par mots de 4 octets, de la mémoire intermédiaire 267 à l'unité d'emmagasinage 1 par l'intermédiaire d'un assembleur cirect-inverse 268, d'un sâble 26a, de l'assembleur externe 10 25, du circuit OU 242, du câbla 243, du circuit de conditionnement 192, du registre A 21, de l'assembleur A 23, du câble 212, des dispositifs de commande 211 et du bus SDBI. Les données sont transférées du dispositif d'emmagasinage 1 un mot à la fois, à la mémoire intermédiaire 267 par l'intermédiaire du bus SDBO, 15 du circuit de conditionnement 162 de la figure 2a, du câble 163, des bascules 10 de la figure 2f, des circuits de sélection 12, de l'assembleur SDBO 11, des dispositifs de commande 140, et du bus d'entrée externe EBI. On peut voir à partir des parcours de données décrits immédiatement ci-dessus que la mémoire intermédiaire 267 avec ses registres associés 265 et 266 repré-20 sentent en fait une partie des registres externes 7. Cependant, ils ont été illustrés séparément tel que SPTL pour illustrer plus clairement certaines caractéristiques du dispositif amélioré. On a supposé dans le but de la présente application que le processeur possède quatre canaux pour la transmission des données entre le processeur 25 et l'équipement périphérique. Ainsi, le circuit 260 possède quatre parties, une pour chacun des canaux. De même, le circuit 262 possède quatre mémoires intermédiaires et assembleurs, dont seulement deux sont représentées. Un circuit de décodage 270 (figure 2f) est relié à la sortie du registre C 2. Chaque fois qu'un mot de commande est introduit dans le registre C 30 pour l'exécution, le circuit de décodage 270 répond aux combinaisons de bits du mot de commande pour faire fonctionner les différentes portes nécessaire à l'exécution du mot. Le circuit de décodage 270 comporte une partie de commande de longueur de cycles 271 qui répond aux bits de mots de.commande choisis pour obliger 35 les horloges 35 à fournir une longueur de cycle choisie de 180ns, 225ns, ou 270; et, pour certains types de mots, deux cycles de 225ns + 270ns ou 270ns+ 270ns sont réalisés, Des fonctions de diagnostic, non décrites dans la présente application, sont réalisées par des moyens comportant un registre de diagnostic 272 (figure 40 2f) et un circuit 273 (figure 2i). 71 13016 " 2086169 Pour certains types de fonctions le contenu des registres A et B 21, 22 peut être transféré aux registres de retrait 128 [figure 2h) par l'intermédiaire d'un circuit de conditionnement 280 (figure 2d) et du câble 281. Lorsque des opérations arithmétiques sont réalisées dans ALU2 et ALU3, 5 les bits de parité sont supprimés des opérandes avant d'être envoyés dans l'ALU. Un générateur de parité 282 ajoute la valeur du bit de parité correct au résultat arithmétique. Pour les opérations binaires et décimales, un circuit de prévision de parité (non représenté) dans l'ALU contrôle le bit de parité généré avec le bit de parité prévu dans un but de détection d'erreurs 10 Des erreurs dans les résultats d'une opération logique (qui est réalisée en double dans ALU2 et ALU33 sont détectées par un circuit de contrôle logique 283 qui compare les résultats de l'ALU2 avec ceux de l'ALU3. Le circuit commande de correction décimale 284 (figure 2h) assure une addition décimale correcte en utilisant un additionneur binaire dans l'ALU2 15 et l'ALU3. Ceci sera décrit en détail ci-dessous. Un circuit 285 (figure 2d) commande les entrées de l'ALU3 pour les digits décimaux non valables pendant les opérations décimales. Les opérations décimales sont seulement des opérations à octet unique dans la réalisation préférée. 20 Lorsque des données sont destinées du registre 0 31 (figure 2g) aux mémoires locales A et B 5 et B (figure 2b), les données sont introduites dans les deux mémoires locales et immédiatement lues (de façon non destructive) sur les bus 201 et 200. Un circuit OU exclusif 256 (figure 2c) détermine si les données dans les deux mémoires locol?s sont les mêmes, et un registre 25 de contrôle 287 ainsi qu'un circuit de coïncidence 288 déterminent si les nouvelles données (d'un à quatre octets) provenant du registre D 31 sont égales aux nouvelles données placées dans la mémoire locale A 5. Avant de décrire plus en détail quelques opérations effectuées selon l'invention, quelques remarques préliminaires sont nécessaires: 30 (1) Bien que tous les bits de mot de commande soient illustrés comme étant dans le registre C2, on appréciera que ceci est fait dans un but de facilité d'explications; en fait, l'adressage du registre externe et de la mémoire locale est réalisé par des bits correspondant dans les circuits de décodage de la figure 2b plutôt que 35 par les bits de sortie.du registre C actuel. .(2) Des valeurs arbitraires ont été choisies pour les données dans les différents registres pour des exemples d'exécution de mot de commande (3) Les références telles que A3.0-2 sont utilisées dans un but de simplicité, ce symbole représentant les bits 0-2 de l'octet 3 40 du signal de sortie du registre A. 71 13016 " 2086169 (4) De préférence, la plupart des registres et des bascules sont de type à maintien de polarité, Les bascules à maintien de polarité sont d'un type connu classique possédant deux circuits ET logiques, dont les sorties sont connectées aux entrées d'un circuit logique 5 OU. Une ligne de données est connectée à une entrée d'un circuit ET et le signal de sortie en phase du circuit OU est envoyé à l'entrée de l'autre circuit ET. Une ligne unique d'enclenchement/restauration est connectée directement à la seconde entrée de l'autre circuit ET et est connectée à la seconde entrée du circuit ET 10 par l'intermédiaire d'un circuit d'inveî-sion logique avec un léger retard entre l'entrés et la sortie. Avec la ligne d'enclenchement/restauration à son niveau'zéro logique, la bascule agit comme un amplificateur sans inversion produisant à sa sortie un niveau logique correspondant à celui sur la ligne de données d'entrée. 15 Quand la ligne d'enclenement/restauration va au niveau 1 logique, elle bascule dans l'état logique où se trouve à ce moment la ligne de données et elle garde cet état jusqu'à ce que la ligne d'enclenchement/restauration retourne au niveau 0 logique. Chaque horloge 35 illustrée dans la figure 3 comprend plusieurs entrées 20 et donne plusieurs signaux de sortie, dont chacun a une durée de 90ns et chaque signal est séparé du signal précédent par une durée de temps d'appro-ximativement 45 nanosecondes dans la réalisation préférée. Les détails d'une forme préférée de chaque horloge 35 sont décrits de façon plus complète dans le "IBM Technical Disclosure Bulletin", Vol. 12, 25 N° 1, pages 71 - 73 inclus, publié en Juin 1969. Les symboles (-) et (+) de cette publication ont été utilisés sur la figure 3j cependant, dans toutes les autres parties du dessin et spécification, le symbole est utilisé pour la valeur négative et aucun symbole n'est utilisé pour la valeur positive. 30 En résumé, l'horloge comporte plusieurs bascules [non représentées) dont chacune fournit un signal de sortie positive et négative correspondant au temps zéro, au tlemps zéro retardé, au temps un, au temps un retardé, au temps deux et au temps deux retardé. Ces bascules répondent aux fronts de montée et descente du signal d'entrée provenant de l'oscillateur 36 (figure 1) 35 sous la commande des signaux d'entrée - ayant pour cycle 180 nanosecondes, - 225 nanosecondes, et - 270 nanosecondes, qui déterminent la longueur des cycles à réaliser. Le départ de l'horloge pour chaque cycle est détermine par la ligne de restauration de départ d'horloge + et la ligne de départ d'horloge -40 . L'horloge peut être restaurée à son état initial par l'application d'un 71 13016 19 2086169 signal à l'entrée de restauration +. Un signal d'entrée arrêt de l'erreur + est prévu en forçant l'horloge à garder les cycles de temps zéro jusqu'à ce que le signal d'erreur soit éliminé. Comme représenté sur la figure 4, chacun des signaux tels que le signal 5 temps zéro, temps zéro retardé, temps un, etc... a une durée de 90 nanosecondes et chacun a un retard par rapport au précédent de 45 nanosecondes. Ainsi, un signal temps zéro retardé est retardé de 45 nanosecondes à partir du temps zéro, un temps un est retardé de 45 nanosecondes à partir d'un temps zéro; et un signal de temps un retardé est retardé de 45 nanosecondes supplé-10 mentaires etc... . Les niveaux du signal d'entrée de l'oscillateur sont aussi illustrés sur la figure 4. Le circuit de commande de la longueur du cycle d'horloge 271 est illustré sur la figure 5 et comporte les circuits logiques qui produisent les signaux d'entrée ayant pour cycles 180 nanosecondes, 225 nanosecondes et 15 270 nanosecondes à l'horloge 35 (correspondant aux lignes ayant pour cycle -180 nanosecondes, -225 nanosecondes, - 270 nanosecondes, représentées sur la figure 3). Les lignes de décodage "branchement" RR et "branchement et commutateur module " (BR et MS) sont combinées dans un circuit OU 300 et la sortie de 20 ce circuit OU 300 est appliquée à la ligne de commande 301 à 225 nanosecondes par l'intermédiaire d'un circuit ET 302 et d'un circuit OU 303 lorsque les bits d'ordre supérieur de branchement (CO.4-7 > 0111), c'est-à-dire lorsque les bits d'ordre supérieur de branchement demandent de tester la source de branchement pour charger M3.4 de façon à choisir le mot de commande suivant, 25 un cycle de 225ns est nécessaire.Ainsi, la ligne de bit C0.4 (c'est-à-dire, C0.4 a une valeur de 1000) est combinée dans un circuit OU avec le signal de sortie du circuit ET 312 qui décode les bits CO.5-7 = 111, et le signal de sortie du circuit OU 304 est appliqué comme signal d'entrée au circuit ET 302. 30 Lorsque les bits C0.4-7 35 Lorsqu'un branchement et un mot de liaison (CO.0-3=0010) est décodé, la ligne de décodage BAL (Branchement et Liaison) est appliquée alternativement au circuit OU 308 par l'intermédiaire d'un circuit ET 313 ou au circuit OU 303 par l'intermédiaire d'un circuit ET 314 selon que, soit le bit C0.4 est égal à zéro (un mot de liaison), soit il est égal à un (un mot de retour), 40 respectivement. 71 13016 20 2086169 Un circuit ET 315 décode le mat déplacement (C0.0-3=0011) et son signal de sortie est appliqué au circuit OU 308 pour produire un cycle de 180ns. Le mot complet arithmétique est indiqué par C0.1,2=10 et par CQ.4-7 égal à 0000, 0001 ou 0010. Le décodage du mot complet arithmétique est 5 réalisé en partie par les bits de décodage CQ.0,1 = 10 dans un circuit ET 319 pour obtenir la forme 10 du mot arithmétique. Les bits CO.6,7 sont décodés dans un circuit ET-INVERSEUR 320, et le signal de sortie du circuit 320 est appliqué à l'entrée du circuit ET 322. Les bits -C0.4 et -C0.5 constituent aussi les signaux d'entrée au circuit 322. Les signaux de sortie des circuits 10 319 et 322 sont appliqués aux entrées du circuit ET 321, dont la sortie constitue la ligne de décodage arithmétique du mot complet 323. Un signal sur la ligne 323 produit un cycle de 225ns puisqu'il est appliqué comme signal d'entrée du circuit OU 303. La forme 10 du mot arithmétique applique un signal au circuit OU 308 15 par l'intermédiaire du circuit ET 328 pour produire des cycles machine de 180ns dans tous les cas excepté pour les opérations décimales et de mot entier. Pour réaliser ceci, la signal de sortie du circuit ET 319 est appliqué au circuit ET 328. Un circuit de décodage 318 applique un signal è un circuit inverseur OU 329 lorsqu'il décode les bits C0.4-7=1010 qui indique une opération 20 décimale. Le circuit ET 322 utilisé pour décoder les opérations arithmétiques de mot entier est aussi connecté à une entrée du circuit 329. Le circuit 329 émet un signal de sortie seulement lorsque les deux signaux ne sont pas appliquées à ces entrées (par exemple, ni une opération décimale, ni une opération de mot entier] pour permettre au circuit 328 d'appliquer un signal 25 au circuit OU 308 pour un cycle de 180ns. Le décodage du mot arithmétique 10 par le circuit ET 319 ainsi que le décodage des bits CQ.4-7=1010 (opération décimale) produit à la sortie d'un circuit ET 325, sur la ligne de décodage d'addition décimale 326, un signal qui est transmis à la ligne de commande 301 de cycle de 225ns par 30 l'intermédiaire du circuit OU 303. Un circuit ET 317 décade les bits C0.0,1=11 pour chaque forme 11 d'un mot arithmétique et applique un signal à une entrée du circuit OU 308 pour entraîner l'exécution d'un cycle de 180ns. Le décodage des bits de forme de mot d'emmagasinage CO.01=01 dans le 35 circuit ET 330 amorce le cyclage de trois bascules à maintien de polarité 340, 341 et 342 qui sont enclencher à leur état logique un en séquence pour produire à leurs sorties le temps de cycle 1 de la mémoire, un temps d'interverrouillage d'emmgasinage et un temps de cycle 2 de la mémoire. La première bascule 340 est enclenchée par le signal OT au temps 0 pendant le premier 40 cycle; la bascule 341 est enclenchée par le signal 1T au temps 1 pendant 71 13016 21 2086169 le premier cycle, et la bascule 342 est enclenchée par le signal OT au temps zéro du second cycle comme on le décrira ci-dessous. Les temps de cycle 1 et 2 de la mémoire sont utilisés avec le décodage des bits de mot d'emmagasinage pour choisir un cycle de 225 nanosecondes 5 ou de 270 nanosecondes pendant le cycle 1 de la mémoire du mot d'emmagasinage ou pour choisir un cycle de 270ns pendant le cycle 2 de la mémoire. Ainsi, la ligne de sortie de décodage du mot d'emmagasinage provenant du circuit ET 330 et la ligne du cycle 2 de la mémoire sont appliquées à un circuit ET 350 pour exciter la ligne de commande 351 de cycle de 270ns 10 pendant tous les cycles 2 de la mémoire. Pendant le cycle 1 de la mémoire, les circuits ET 331, 332 et 333 décodent un mot d'emmagasinage, un demi-mot d'emmagasinage, et un octet d'ermagasinage respectivement; et leurs signaux de sortie sont appliqués à un circuit OU 352, dont le signal de sortie est appliqué à un circuit ET 353. La ligne de 15 cycle 1 de la mémoire est aussi appliquée comme un signal d'entrée au circuit ET 353 et la ligne de décodage de mot d'emmagasinage provenant du circuit ET 330 est reliée à la troisième entrée du circuit ET 353. Ainsi, pendant un cycle 1 de la mémoire, si la sous forme d'un mot est un mot d'emmagasinage, un demi-mot d'emmagasinage ou un octet d'emmagasinage, le circut OU 352 20 et le circuit ET 330 entraîneront l'émission d'un signal de sortie à partir du circuit ET 353 sur la ligne de commande de cycle 351 à 270ns. Lorsque la sous-formé du mot d'emmagasinage est un mot complet de lecture, un demi-mot de lecture ou un octet de lecture, les circuits ET 335, 336 ou 337 décodent respectivement la sous-forme. Leurs signaux de sortie sont 25 appliqués à un circuit OU 354 dont le signal de sortie ainsi que le signal sur la ligne de cycle 1 de la mémoire et le signal sur la ligne de décodage de mot d'emmagasinage sont appliqués aux entrées du circuit ET 355 qui émet un signal de sortie qui est transmis par la ligne de commande 301 de cycle de 225ns par l'intermédiaire du circuit OU 303. 30 . L'enclenchement des bascules 340 - 342 sera maintenant décrit avec plus de détail. L'enclenchement/restauration des bascules 340 et 342 est réalisé par les inverseurs 343 et 345 et le signal d'horloge d'entrée "temps zéro". Un inverseur 344, un circuit ET 346 et les lignes d'horloge d'entrée temps 1 et temps 1 retardé fournissent la fonction d'enclenchement/restaura-35 tion pour la bascule 341. Un inverseur 347 et un circuit ET 346 provoquent l'enclenchement de la bascule 340 pendant le premier cycle d'un mot d'emmagasinage et empêche l'enclenchement de la bascule 340 pendant le second cycle. MOT - DE BRANCHEMENT 40 La figure 6 représente une illustration schématique de l'exécution d'un 71 13016 22 2086169 mot de branchement classique du type demandant un temps de cycle de 100ns. La figure 7 représente la synchronisation pour les différentes opérations pendant l'exécution d'un mot de branchement. Le registre C2 est représenté sur le côté droit de la figure 6 avec des positions d'octets CO, C1, C2 5 et C3. Les valeurs hexadécimales des quatre octets du mot de commande 1036204F sont représentées au-dessus du registre 2. Les positions de bits de données dans chacun des octets sont illustrées sur la colonne de gauche à l'intérieur du registre C et les valeurs de bits du mot de commande sont représentées sur la colonne de droite à l'intérieur du registre C. De façon arbitraire, 10 les valeurs choisies ont été attribuées au registre P et à l'octet 1 du registre V à l'adresse 13 dans les unités locales d'emmagasinage 5 et 6. Les quatre bits d'ordre supérieur C0.0-3 ont une valeur de 0001 qui indiquent un type de mot de branchement. La fonction de l'exécution de ce mot de branchement est de se brancher sur un mot de commande à l'intérieur 15 du même module de la mémoire de commande. M2 est chargé à partir de (\I2 et par conséquent reste le même; seul M3 est modifié. L'adresse du mot particulier à l'intérieur du module [variation dans F13) est déterminée par (1) le champ CO.4-7, branchement d'ordre supérieure, (2) les bits adresse suivants C3.0-3 et (3) le champ C3.4-7 branchement d'ordre inférieur. Puisque 20 nous accédons à un mot de commande qui est toujours aligné sur une frontière de mot, on ne tient pas compte des bits 6 et 7 de M3 parce que ce sont des bits de sélection d'octets du registre d'adresse. Les bits de branchement d'ordre supérieur CO.4-7 sont égaux à 0000 et par conséquent obligent le bit 4 de M3 à être égal à zéro. Un décodage 25 du champ du branchement d'ordre inférieur [1111 ) entraîne le transfert des données sur les circuits de branchement 4 pour introduire de force le bit 5 du registre M3 conformément à un test. Les quatre bits d'ordre supérieur C1.0-3 entraînent l'adressage direct de la mémoire locale par lequel les quatre bits d'ordre inférieur du registre P ainsi que les bits C1.1-3 sont 30 décodés par le circuit 150 pour adresser le registre U, dans la mémoire locale A 5. Les données du registre U sont transférées au registre A 21. Les bits C1.4-5 entraînent le transfert de la valeur héxadécimale FB (octet 1 du registre U) de A1 aux positions d'octets 2 et 3 de l'assembleur d'octets A 23. L'octet 3 de l'assembleur d'octets A 23 est envoyé aux circuits de bran-35 chement 4, et les bits de sélection du branchement d'ordre inférieur C3.4-7 envoient le bit 7 des circuits de branchement, c'est-à-dire, un 1 logique, au bit 5 du registre M3. Le transfert des données de source de branchement de la mémoire locale A 5 aux circuits de branchement 4 se produit approximativement du temps 35 au temps 75 (figure 7). 40 Le chargement du registre M3 se produit approximativement du temps 45 au 71 13016 23 2086169 temps 90 dans ce cas particulier parce que le mot de branchement est du type dans lequel la source de branchement place le bit 5 du registre M3 qui choisit soit le mot impair, soit le mot pair d'un double mot et qui n'est pas nécessaire pendant un certain temps dans le cycle. Le double mot est lu de la 5 mémoire de commande approximativement à partir du temps 75 au temps 105 comme indiqué par la ligne de sélection. Le branchement sur un nouveau mot de commande est aussi accompagné par la mise à jour du registre P pour l'adressage de la mémoire locale. Ainsi, approximativement au temps 45-90, C2.2.3 entraîne l'adressage et 10 le transfert du registre P sur le registre B 22, puis vers l'assembleur 24 et vers l'ALU 2 et l'ALU 3. Les bits C1.B.7 envoient la valeur K (C2.4-7) à l'ALU2 et l'ALU3. Approximativement au temps 45, les bits C2.2-3 envoient la valeur du registre P 100000010) par l'intermédiaire du registre B 22 et de l'assembleur d'octets 24 à l'ALU2 et l'ALU3. Le commutateur B sert, 15 avec un décodage des bits B et 7 de l'octet C1 du mot de commande égal à 10, à envoyer la valeur de champ K 0001 à l'entrée d'ordre supérieur de l'ALU2 et de l'ALU3 et la valeur 0000 à l'entrée d'ordre inférieur. Lorsque les valeurs P et K sont combinées dans un circuit OU (c'est-à-dire, le bit C2.1 fait appel à une fonction OU) dans l'ALU, le résultat, qui est égal 20 à la valeur héxadécimale 12, est emmagasiné dans le registre Z 30. Approximativement au temps 1 3 5, le résultat est chargé dans le registre P. MOT ARITHMETIQUE - ADDITION POSITIVE MOT COMPLET La figure 6 est une représentation schématique de l'exécution d'une addition de mots complets demandant un cycle ae 225ns comme illustré par 25 le diagramme des temps de la figure 9. La partie inférieure droite de la figure 8 représente les opérations qui se produisent après un temps de cycle de 1B0ns. De ce point de vue, on s'intéressera aussi au diagramme des temps, à la ligne de chargement - déchargement du registre Z sur laquelle on peut voir que les octets 0 et 1 du résultat arithmétique sont emmagasinés dans 30 le registre Z seulement après le commencement du cycle de mot de commande suivant. Ceci n'entrave, pas dans aucun cas, l'exécution du mot de commande parce que le chargement du résultat dans le registre D ne se produit pas jusqu'à approximativement le temps 45 du cycle suivant. Le mot de commande B04E64AC de l'exemple est une addition positive de 35 mots complets avec un conditionnement particulier. Le principal objectif du mot de commande est d'ajouter le mot complet emmagasiné dans le registre V avec les huit bits inférieurs (par exemple l'octet 3) du registre Y. Les vingt-quatre bits inférieurs (par exemple les octets 1-3) du résultat doivent être renvoyés aux vingt-quatre bits inférieurs du registre Y. 40 Le décodage des bits ÇO.1,2 demande un type de mot arithmétique. Le 71 13016 24 2086169 décodage de bits CD.2,3 détermine la forme de l'opération arithmétique; c'est-à-dire, les opérandes sont trouvés aux adresses de source A et de source B et le résultat est emmagasiné à l'adresse de source B. Le décodage des bitss CQ.4-7 demande une addition positive de mots complets. 5 Le décodage des bits C1.0-3 fait appel à l'emmagasinage local direct accédant à la source A dans laquelle les bits 1, 2 et 3 de l'octet C1 ainsi que les bits 4-7 du registre P sont utilisés pour choisir l'emplacement du registre V (c'est à dire 143 dans la mémoire locale A 5. Le contenu du registre V, les valeurs hexadécimales 1497C5A2, sont transférées au registre 10 A 21 et ensuite à l'assembleur d'octets A 23 en réponse au décodage de C1.4,5 qui demande que tous les trente-deux bits ou quatre octets du registre V soient transférés. Les bits B et 7 de l'octet C1 sont des bits d'enclenchement d'état qui entraînent l'emmagasinage seulement des vingt-quatre bits d'ordre inférieur (octets d'ordre inférieur 1, 2 et 3) du résultat obtenu à partir de 15 l'opération arithmétique, dans le registre Y à l'adresse de la mémoire locale 16. Le décodage des bits C2.0-3, entraîne l'adressage direct de l'opérande de la source B avec les bits 1, 2 et 3 de l'octet C2, les bits 4-7 du registre P étant utilisés pour adresser le registre Y dans la mémoire locale B 6. 20 Le contenu du registre Y, la valeur héxadécimale 2DEC5972, est transférée au registre B 22, et les octets 2 et 3 de ce mot sont alors transférés à l'assembleur d'octets B 24. Le décodage des bits C2.4.5 n'entraîne le conditionnement que des huit bits d'ordre inférieur, c'est-à-dire l'octet 3, des données dans l'assembleur d'octets B à l'ALU3 et le blocage des 24 bits 25 d'ordre supérieur (octets 0-2) de la source B. Ceci empêche l'octet 2 de l'assembleur d'octets B 24 d'être transféré à l'ALU2. Les valeurs dans l'ALU2 sont additionnées et introduites dans les octets 0 et 2 du registre Z 30, et les valeurs dans l'ALU3 sont additionnées et introduites dans les octets 1 et 3 du registre Z 30. 30 Les bits C3.0-5 sont placés dans le registre M3 pour adresser le mot de commande suivant. Le mot de commande suivant est dans le même module, par conséquent le registre M2 est chargé à partir du registre N2. Les opérations qui ont été décrites immédiatement ci-dessus se produisent dans les 180 premières nanosecondes du cycle machine comme représenté dans 35 le diagramme des temps. Commençant au temps 180, les opérations représentées schématiquement par les lignes brisées dans la partie inférieure droite de la figure 8 sont exécutées. Au temps 180, les octets 0 et 1 du registre A sont transférés dans les octets 2 et 3 de l'assembleur d'octets A 23. Au même moment, les octets 0 et 1 du registre B sont transférés à l'assembleur 40 d'octets B 24. Le contenu des octets 2 et 3 de l'assembleur d'octets A est 71 13016 2086169 transféré à l'ALU2 et à l'ALU3. Cependant, comme indiqué précédemment, le décodage des bits C2.4.5 empêche le conditionnement des trois octets d'ordre supérieur de la source B dans l'ALU. En conséquence, le contenu de l'assembleur d'octets B ne peut pas être transféré à l'ALU. Les résultats de cette 5 addition positive sont transférés aux octets 0 et 1 du registre Z 30. Ce placement des octets Z 0, Z 1 se produit comme indiqué ci-dessus du temps 0 à approximativement au temps 45 du cycle machine suivant. Le contenu du registre Z est transféré au registre D pendant le cycle suivant entre le temps 45 et le temps 90.Pendant la partie lecture-écriture, du cycle machine 10 suivant, seuls les octets 1, 2 et 3 du registre D seront transférés au registre Y à la fois dans les mémoires locales A et B 5 et 6 puisque le décodage des bits C1.6,7 envoie seulement les 24 bits inférieurs du résultat. EXEMPLE DE MOT ARITHMETIQUE - ADDITION D'OCTETS La figure 10 représente de façon schématique l'exécution du mot de 15 commande "FD3C2F92". Le diagramme des temps correspondant est illustré dans la figure 11. Les bits 0 et 1 de l'octet C0 du mot de commande, lorsqu'il est décodé, indique un mot arithmétique. L'opération particulière ou la forme est obtenue par décodage des bits 2 et 3 de l'octet CO, dans ce cas, les bits sont chacun égaux à 1 indiquant que le résultat d'une opération 20 utilisant une source A et une source B sera emmagasiné à l'adresse de la source B. Le bit 4 de l'octet CO égal à 1 indique que l'opération est une addition positive. Une commande de conditionnement de commutateur est effectuée par les bits 5, B et 7 de l'octet CO. Dans l'exemple donné, les bits sont égaux à 101 et entraînent le croisemenL des valeurs héxadécimales d'ordre 25 supérieur et inférieur [5 et 7) appliquées au commutateur A et bloquant ainsi la valeur d'ordre supérieur (7 3 après croisement. Le bit 0 de l'octet C1 étant égal à 0 indique l'adressage direct de la mémoire locale par lequel les bits 1, 2 et 3 de C1 sont utilisés directement, avec les bits d'ordre inférieurs du registre P pour adresser un emplacement choisi (registre U) 30 dans la mémoire locale A 5. Les bits 4 et 5 de l'octet C1 du mot de commande étant égaux à 11 provoquent la sélection de l'octet 3 du registre de source A (U33 choisi à partir de la mémoire locale 5. Les bits 6 et 7 de l'octet C1 étant égaux à 00 entraînent le non chargement du registre d'état S. Les bits 0-3 de l'octet C2 sont utilisés pour adresser directement, comme une 35 source B, le registre W de l'unité d'emmagasinage locale B B. Les bits d'ordre inférieur du registre P sont à nouveau utilisés pour une partie du décodage d'adresses dans la sélection du registre W. Tout le contenu du registre W est transféré au registre B 22, et la valeur (28) dans l'octet 3 du registre W est choisie pour le transfert aux deux positions d'octet de l'assembleur 40 d'octets 24 par les bits 4 et 5 de l'octet C2 du mot de commande. Les bits 71 13016 26 2086169 10 6 et 7 de l'octet C2 du mot de commande provoquent l'envoi direct des octets se trouvant dans l'assembleur B24 à l'ALU2 et l'ALU3. Les digits héxadécimaux 05 et 28 sont ajoutés les uns aux autres dans chacune des parties de l'ALU et une comparaison est faite des résultats pour déterminer si oui ou non une erreur s'est produite à l'intérieur des parties de l'ALU. En supposant qu'aucune erreur n'est réalisée, le résultat, qui dans ce cas, est la valeur héxadécimale 20, est transféré à chaque octet du registre Z 30. Le mot de commande étant exécuté doit aussi effectuer l'adressage du mot de commande suivant qui doit être exécuté. Ainsi, les bits 0 - 5 de l'octet C3 du mot de commande sont utilisés jusqu'à former au moins partiellement l'adresse du mot de commande suivant. Ainsi, les bits 0 - 3 de l'octet C3 sont transférés directement aux bits 0 - 3 du registre M3. Les bits 6 et 7 de l'octet C3 font appel au branchement conformément à l'état des bits 4 et 5 du registre S. On suppose que les bits 4 et 5 du registre S sont chacun "15 à leur niveau logique 1, ces bits sont combinés dans un circuit OU respectivement aux bits 4 et 5 de l'octet C3, et le résultat, qui est égal au 11 logique est envoyé dans les bits 4 et 5 du registre M3. La chronologie des opérations ci-dessus apparaît facilement dans le diagramme de la figure 11, dans lequel on peut voir que le registre C est chargé du temps 0 au temps 45 et la formation de l'adresse de mot de commande suivant peut être réalisée entre le temps 45 et le temps 90. Le mot de commande suivant peut être lu comme indiqué par la ligne de sélection commençant environ au temps 75. Les sources A et B sont lues de la mémoire locale A et B 5 et 6 entre le temps 35 et le temps 70. Les sources A et B sont disponibles dans les registres A et B entre le temps 45 et le temps 90. Le parcours entre les registres A et B 21 et 22 et leurs assembleurs d'octets 23 et 24 sont conditionnés commençant environ au temps 45 et des circuits de commutation entre les assembleurs d'octets et l'ALU sont aussi conditionnés approximativement au temps 45. L'ALU sert à mettre en route l'opération arithmétique choisie approximativement au temps 90 et le conditionnement du signal d'entrée du registre Z 30 devient efficace approximativement au temps 135. Des données, qui peuvent avoir exister dans le registre Z provenant d'un mot de commande exécuté précédemment auront été transférées du registre Z au registre D à partir du temps approximativement de 45 et ces données sont transférées du registre D aux emplacements 35 choisis dans les mémoires locales A et B 5 et 6 commençant au temps approximatif de 90. Le contrôle de l'information est effectué entre le temps 135 et le temps 180. ADDITION DECIMALE (POSITION) 20 25 30 40 La figure 12 est une représentation schématique d'un mot de commande d'addition décimale classique BA4CSFAC; et la figure 13 représente la chrono 71 13016 27 2086169 logie des différentes opérations machine. Le décodage des bits C0.0,1 fait appel à un mot arithmétique. Le décodage des bits CO.2,3 indique que l'opération demande une source A et une source B et que les résultats doivent être destinés à l'adresse de la source B. Les bits CO.4-7 font appel à une addition décimale. 5 On suppose que le bit de registre d'état SO=û fournit une fonction d'addition "positive". Les bits C1.0-3 font appel à un adresage direct de^mémoire locale pour obtenir une source A utilisant les bits 4-7 du registre P et les bits C1.1.2 et 3 pour accéder aux registres V de la mémoire locale A 5 à l'adresse 14. Les bits C1.4,5 indiquent que l'opération doit être réalisée sur l'octet 10 3 du contenu du registre V. Les bits C1.6.7 ne font appel à aucun chargement de registre d'état. Les bits C2.0-3 font appel à l'accès direct à la mémoire locale de la source B utilisant les bits 4-7 du registre P et les bits C2.1-3 pour accéder au registre Y à l'emplacement 16 dans la mémoire locale B 6. Les bits C2.4,5 indiquent que l'octet 3 du contenu du registre Y doit 15 être traité. Les bits C2.6,7 indiquent que le conditionnement de la source B doit être normal ou direct, c'est-à-dire que les valeurs héxadécimales d'ordre inférieur et supérieur de l'octet 3 seront envoyées respectivement aux positions d'ordre supérieur et inférieur de l'ALU2 et l'ALU3. Les bits C3.0-5 inclus sont transférés au registre P13 et le registre M2 est chargé 20 à partir du registre l\12 pour accéder au mot de commande suivant du même module de mémoire. Ainsi, on peut voir, à partir de l'illustration schématique de la figure 12, que l'accès direct à la mémoire locale des sources A et B entraîne le transfert du contenu du registre V de l'unité d'emmagasinage locale 5 au 25 registre A 21 et le transfert du contenu du registre Y de la mémoire locale B 6 au registre B 22. Des X sont représentés dans les positions d'octets 0, 1 et 2 des registres A et B puisque leur contenu ne sera pas utilisé pendant le fonctionnement. Comme indiqué ci-dessus, les bits de sélection d'octets choisissent les octets 3 du contenu des registres V et Y. Ainsi, l'octet 30 3 dans le registre A 21 qui a une valeur héxadécimale de 0 7 est transféré aux quatre positions d'octets de l'assembleur d'octets A 23. Cette valeur est alors transférée des positions d'octets 2 et 3 de l'assembleur d'octets A directement aux entrées A de l'ALU2 et l'ALU3. L'octet 3 dans le registre B ayant une valeur héxadécimale de 15 est transféré à la fois aux positions 35 d'octets de l'assembleur d'octets B 24 à partir duquel il est transféra à travers les circuits positifs/négatifs aux entrées B de l'ALU2 et l'ALU3. Les valeurs héxadécimales sont additionnées dans l'ALU3 et le résultat qui est égal à la valeur héxadécimale 1C est transférée aux quatre positions d'octets du registre Z 30. 40 Toutes les opérations décrites ici par rapport au mot de commande se 71 13016 26 2086169 produisent pendant les premières 180ns du cycle. Les opérations qui sont réalisées pendant l'exécution du mot de commande ultérieures au temps 180 sont illustrées à l'intérieur des lignes brisées sur la partie inférieure droite de la figure 12. Au temps 180, la valeur hexadécimale 1C est transférée 5 de l'octet 3 du registre Z 30 à l'octet 3 du registre A à partir duquel elle est transférée aux octets 2 et 3 de l'assembleur d'octets A 23 pour être transmise aux entrées A de l'ALU2 et l'ALU3. Les quatre entrées du circuit de commande de correction décimale, les bits Z3.0-3, les bits Z3.4-7, le bit de report d'ordre supérieur et le bit de report d'ordre inférieur de 10 la première opération décimale, permettent à l'assembleur K d'appliquer un digit de correction 0B aux entrées B de l'ALL)2 et l'ALU3. Le facteur de correction est additionné au résultat hexadécimal de la première opération pour donner un résultat hexadécimal corrigé 22 qui est transféré de la sortie de l'ALU 3 au registre Z 30. On notera à partir du diagramme des temps de 15 la figure 13 que le chargement du résultat corrigé dans le registre Z 30 se produit à partir du temps 0 jusqu'à approximativement au temps 45 du cycle suivant. Peu de temps après le résultat corrigé est amené dans la registre D, après quoi il retourne à l'octet 3 du registre Y dans les mémoires locales A et B 5 et 6. 20 MOT D'EMMAGASINAGE L'exécution du mot de commande d'emmagasinage 487B2DEE est représenté de façon schématique par les figures 14a et 14b et la chronologie des différentes opérations machine est représentée dans le diagramme des temps des * figures 15a, 15b. On verra à partir des diagrammes des temps que l'exécution 25 d'un mot d'emmagasinage demande 2 cycles mémoire que l'on appellera cycle 1 de la mémoire et cycle 2 de la mémoire, chacun demandant 270ns. Le rôle du mot de commande particulier 4Q7B2DEE représenté à l'aide d'un exemple, est de transférer le mot de données Cou une partie) qui se trouve dans les registres Q de mémoire locale A et B à l'adresse de la mémoire principale 30 qui se trouve dans les registres W des mémoires locales A et B. Dans ce mot particulier, les données sont transférées à la mémoire principale 1b en utilisant les bits 0 - 3 du registre T comme un masque. L'exécution du mot de commande sera décrite par rapport aux différents bits constituant le mot de commande qui sont représentés emmagasinés dans 35 le registre C2. Les bits 0 et 1 de l'octet C0, lorsqu'ils sont décodés, indiquent un mot d'emmagasinage. Les bits 2, 3 et 4 de l'octet C0 indiquent la sous forme du mot, un mot du type emmagasinage. Les bits 0 - 3 de l'octet C1, lorsqu'ils sont décodés, indiquent l'accès direct à la mémoire locale utilisant les bits 1, 2 et 3 de l'octet C1 et les bits 4 - 7 du registre 40 P pour accéder au registre Ç à l'adresse 17 de la mémoire locale A. Le contenu 71 13016 29 2086169 F7F3F2C3 du registre Q est transféré au registre A 21 et ensuite à l'assembleur d'octets A 23. Les bits 6 et 7 de l'octet C2 indiquent que les données dans l'assembleur d'octets A 23 devront être transférés à la mémoire principale 1b sous le masque déterminé par les bits d'ordre supérieur 0 - 3 du registre 5 T. Les bits d'ordre supérieur 0010 du registre T entraînent le transfert dans la mémoire principale 1b de l'octet 2 de données se trouvant dans l'assembleur 23. L'adresse à laquelle cet octet de données est emmagasiné est déterminée par les bits 0 - 3 de l'octet C2 du mot de commande. Le décodage de ces 10 bits provoque l'accès direct de la mémoire locale B, les bits 1, 2 et 3 de l'octet C2 et les bits d'ordre inférieur 4-7 du registre P étant décodés par le circuit 151 pour la sélection du registre W à l'adresse 12. L'adresse de la mémoire principale 001EFD00 dans le registre W est transférée au registre B 22 et les octets d'ordre inférieur 2 et 3 sont transférés du registre 15 B 22 dans l'assembleur d'octets B 24. L'octet 2 de l'assembleur d'octets B est transféré à l'ALU 2 et est emmagasiné dans les octets 0 et 2 du registre Z 30. L'octet d'ordre inférieur 3 de l'assembleur 24 est transféré à une entrée de l'ALU3. Une autre entrée de l'ALU3 fait appel à la mise à jour de l'octet d'ordre inférieur par une addition de 1. Ceci entraîne l'addition 20 de un à l'octet 3 de l'assembleur d'octets B 24, le résultat étant emmagasiné dans les octets 1 et 3 du registre Z 30. La mise à jour de l'adresse est déterminée par les bits 4 et 5 de l'octet C1 du mot de commande qui indique que la mise à jour doit être une fonction d'addition. Les bits B et 7 de l'octet C2 du mot de commande indique que la valeur de la mise à jour doit 25 être réalisée en relation avec la valeur des bits 0-3 du registre T. Dans ce cas particulier, un décodage des bits dans le registre T fait appel à la mise à jour par addition de 1. Selon que l'opération est une opération utilisant des mots, des demi-mots ou des octets comme données à emmagasiner, la mise à jour se fera par incréments de 1, 2, ou 4. Dans le mot particulier 30 de l'exemple, seul un octet est emmagasiné dans la mémoire principale et mis à jour par addition de 1. Approximativement au temps 180 du cycle 1 de la mémoire, les octets 0 et 1 du registre B 22 sont transférés à l'assembleur d'octets B 24 et par conséquent vers les octets 0 et 1 du registre Z 30 par l'intermédiaire 35 de l'ALU 2 et l'ALU 3. Ultérieurement à l'utilisation des bits d'ordre supérieur du registre T, pour envoyer les données dans la mémoire principale 1b, le décodage des bits 2, 3 et 4 de l'octet C0 et des bits 6 et 7 de l'octet C2 entraînent la restauration des bits d'ordre supérieur du registre T. Le cycle 2 de la mémoire de l'exécution du mot de commande est représenté 40 dans la partie inférieure de la figure 14a. Au commencement du cycle 2, le 71 13016 30 2086169 décodage des bits 2, 3 et 4 de l'octet CO et le décodage du bit 4 de l'octet C3 provoquent l'incrémentation par 1 de l'adresse qui choisit le registre W de la mémoire locale B6 pendant le premier cycle, d'une valeur de 12 à une valeur de 13, entraînant l'accès du registre U dans la mémoire locale 5 B B. Les octets d'ordre inférieur 2 et 3 du registre U renferment une valeur de compte égale au nombre d'octets qui doivent être transférés de la mémoire principale dans un but de traitement pendant une opération arithémtique demandât jusqu'à un maximum de 256 octets. Dans la réalisation préférée du système, représentée ici, la valeur de compte est toujours emmagasinée dans le registre 10 immédiatement à la suite du registre qui est utilisé pour adresser les données, dans ce cas, le registre W. Chaque fois qu'un mot ou une partie du mot de données est transféré de la mémoire principale pour le traitement et le résultat renvoyé à la mémoire principale, le compte de mot dans le registre U doit être décrémenté jusqu'à ce que l'on atteigne une valeur nulle, indiquant 15 la fin de l'opération arithmétique particulière. La sous-forme du mot de commande particulier à exécuter détermine la valeur dont le compte est décrémenté. Une opération sur des octets demande une diminution par incrément de 1, une opération sur des demi-mots demande la diminution par incrément de 2, et une opération sur des mots complets demande la diminution par incré-20 méent de 4. Dans le présent exemple, les bits de mot de commande 2, 3 et 4 de l'octet CO, lorsqu'ils sont décodés, indiquent une opération de mots d'emmagasinage par laquelle la décrémentation par 4 est nécessaire même si le registre T masque 3 des 4 octets du mot. Ainsi, l'octet d'ordre inférieur 0B de l'assembleur d'octets B 24 est transféré à l'ALU 3 et est diminué 25 par un incrément de 4 et ensuite emmagasiné dans les octets 1 et 3 du registre Z 30. Du temps 45 au temps 90 du cycle 2 de la mémoire, l'adresse du mot mise à jour (001EFDQ1) qui est transférée dans le registre Z pendant le cycle 1 de la mémoire est transférée au registre D 31. Du temps 90 au temps 30 150 du cycle 2, l'adresse mise à jour est transférée du registre D au registre W par l'intermédiaire de l'assembleur SDBO 11. Le mot de commande suivant à exécuter est adressé en partie par l'intermédiaire des bits d'adresse suivants 0-3 de l'octet C3 du mot de commande à exécuter. Les bits supérieurs de branchement 5, 6 et 7 de l'octet CO sont 35 décodés donnant la valeur 0 au bit 4 du registre M3. Les bits inférieurs de branchement 5, 6 et 7 de l'octet C3, lorsqu'ils sont décodés, donnent au bit 5 du registre M3 la même valeur que pour le bit 7 du registre S. Dans l'exemple particulier, le bit 7 du registre S est égal à 0 et le bit 5 du registre (13 est aussi égal à 0. Il n'est pas prévu de commutateur de module 40 dans le mot de commande illustré par lequel la valeur des bits d'adresses 71 13016 31 2086169 dans le registre N2 sont enclenchés dans le registre M2 pour accéder au mot de commande désiré dans le même module. Bien que l'on ait décrit dans ce qui précède et représenté sur. le dessin, les caractéristiques essentielles de l'invention appliquées à un mode de réalisation préféré de celle-ci, il est évident que l'homme de l'art peut y apporter toutes modifications de forme ou de détail qu'il juge utiles, sans pour autant sortir du cadre de ladite invention. 71 13016 32 2086169 REVENDICATIONS 1.- Système de traitement de données comportant: une unité arithmétique et logique pour traiter des données, une mémoire principale contenant des données et des instructions de 5 programme, une mémoire de commande contenant des mots de commande de microprogramme, des circuits logiques commandés par une ou plusieurs unités de commande de microprogramme pour exécuter les micro-opérations permettant au système de réaliser chacune des opérations définies par les instructions du programme, 10 des premiers moyens permettant d'accéder aux mots de commande et de les sortir de la mémoire de commande dans un intervalle de temps substantiellement plus court que l'intervalle de temps exigé par les circuits logiques pour exécuter ces mots de commande, une horloge produisant des séries d'impulsions cycliques pour commander 15 dans le temps les différentes opérations exécutant chaque met de commande; ce système étant caractérisé en ce que: l'horloge du système est associée à des deuxièmes moyens permettant d'utiliser des longueurs de cycle d'horloge variables au cours de l'exécution des différents mots de commande, ces moyens étant commandés par certains 20 bits des mots de commande de façon que l'horloge ne délivre au système, parmi les séries d'impulsions cycliques, et pour l'exécution d'un mot de commande, que cellets) qui estCsont) nécessaire(s) à l'exécution, la plus rapide possible, de ce mot de commande, une série nouvelle d'impulsions étant délivrée pour l'exécution du mot de commande suivant si ce nouveau mot 25 de commande fait partie d'une catégorie différente de mots de commande exigeant une durée d'exécution différente. 2.- Système selon la revendication 1 comportant en outre: une unité de mémoire locale rapide. des troisièmes moyens commandés par certains mots de commande pour 30 transférer des données de la mémoire principale vers la mémoire locale rapide avant le traitement de ces données par l'unité arithmétique et logique et pour transférer les données traitées de la mémoire locale rapide vers la mémoire principale, des quatrièmes moyens commandés par certains mots de commande pour 35 transférer des données de la mémoire locale rapide vers l'unité arithmétique et logique pour traiter ces données et pour transférer les données traitées de l'unité arithmétique et logique vers la mémoire locale rapide. 10 71 13016 " 2086169 3.- Système selon la revendication 1 ou 2 dans lequel des cinquièmes moyens, commandés par chacun des mots de commande, durant son exécution, forment l'adresse du mot de commande suivant devant être exécuté. 4.- Système selon la revendication 3 dans lequel les premiers moy.;ns permettent d'accéder à des paires de mots de commande et de les sortir de la mémoire de commande, les cinquièmes moyens comportant en outre: un registre d'état de programme, des premier et deuxième circuits de branchement, commandés par certaines combinaisons prédéterminées de certains bits de mots de commande, qui peuvent sélectionner, pour exécution, respectivement un des deux mots de commande de la paire et une paire de mots de commande, suivant certaines combinaisons de bits de mots de commande, le contenu du registre d'état et certaines conditions de la mémoire locale. Les premiers circuits de branchement, sélectionnant un mot de commande, commandent les deuxièmes moyens de façon telle que l'horloge fournit des signaux d'une première durée de cycle. Les deuxièmes circuits de branchement commandent les deuxièmes moyens de façon telle que l'horloge fournit des signaux cycliques d'une certaine durée de cycle quand les circuits de branchement sont commandés par des bits de mots de commande et des bits du registre d'état, des signaux d'une durée de cycle plus longue 20 étant fournis lorsque ces circuits de branchement sont commandés par des bits de la mémoire locale sélectionnés par le mot de commande exécuté. 5.- Système selon l'une des revendications 1 ou 2 eu 3, dans lequel les deuxièmes moyens sont commandés par certains mots de commande pour fournir, pour l'exécution de ces mots de commande, des signaux d'une première longueur 25 de cycle choisie parmi des longueurs de cycle présélectées. 6.- Système selon la revendication 5 dans lequel les deuxièmes moyens sont commandés par d'autres mots de commande pour fournir, pour l'exécution de ces mots dç commande, des signaux dont la longueur de cycle est une combinaison des premières longueurs de cycle. 30 7.- Système selon la revendication B comportant trois bascules pour commander l'exécution de chaque mot de commande d'emmagasinage de données durant deux cycles d'horloge consécutifs, des moyens, commandés par chacun des mots de commande d'emmagasinage, étant en outre prévus pour faire basculer la première bascule durant le premier cycle, la deuxième bascule durant le 35 second cycle et la troisième bascule durant la fin du premier cycle et le début du second cycle. 71 13016 34 2086169 8.- Système selon les revendications 1 et 2 dans lequel les quatrièmes moyens sont commandés par chacun des mots de commande d'opérations arithmétiques pour transférer à partir de la mémoire locale dans l'unité arithmétique et logique les bits d'ordre inférieur puis les bits d'ordre supérieur des opérandes, les deuxièmes moyens étant commandés par les mots de commande de manière que l'horloge fournisse les impulsions nécessaires à l'exécution en un cycle du mot de commande d'opérations arithmétiques. a.- Système selor; l'une quelconque des revendications précédentes dans lequel le tenvps de lecture et le temps d'écriture .-je la moire principale et de la mémoire de commande sont plus courts que le temps d'exécution des mots de