# Une approche de structuration des unités de commande microprogrammées

Romuald Marczynski, Marek Tudruj

► To cite this version:

Romuald Marczynski, Marek Tudruj. Une approche de structuration des unités de commande microprogrammées. [Rapport de recherche] IRIA-RR-047, IRIA. 1974, pp.30. hal-04715968

HAL Id: hal-04715968

https://inria.hal.science/hal-04715968v1

Submitted on 1 Oct 2024

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
RIA
laboria

laboratoire de recherche
en informatique
et automatique

Une approche
de structuration des unités
de commande
microprogrammées

R.Marczynski,M.Tudruj

Institut de Recherche
d'Informatique
et d'Automatique

Domaine de Voluceau
Rocquencourt
78150 - Le Chesnay
Tél. 954.90.20

Rapport de Recherche n° 47

Janvier 1974
# UNE APPROCHE DE STRUCTURATION DES UNITÉS DE COMMANDE MICROPROGRAMMÉES

R. Marczynski*, M. Tudruj*

## Résumé :

Nous nous intéressons au classement des unités de commandes des calculateurs. Cette approche est le résultat d'une analyse portant sur les structures des unités de contrôle de machines existantes ou théoriques.

La première partie de cet article est destinée à situer l'unité de commande dans l'ensemble des circuits de l'ordinateur, à en définir les mécanismes fondamentaux, à énumérer les principaux problèmes que posent sa réalisation et enfin à préciser une classification des unités de commande selon leur mode de réalisation.

La seconde partie est consacrée aux unités de commande comportant une mémoire de commande. On donne une définition de l'unité microprogrammée de commande et on classe les structures de ces unités de contrôle selon leur mode d'adressage des mots dans la mémoire de commande.

## Abstract :

We present a classification of computer control units. This approach results from the analysis of control units of existing computers as well as of theoretical proposals.

The first part of this communication presents a global view of control units, defines their basic mechanisms, lists the main realization problems and proposes a classification according to the way they are realised.

The second part concerns the control units which include a control memory. The microprogrammed control units are considered and a classification of their structure is given according to the control memory addressing structure.
Ce document a été rédigé à l'IRIA au cours d'un stage.

Il résulte d'une recherche conduite en collaboration avec
M. Romuald Marczynski à l'Académie des Sciences de
Pologne à Varsovie.

Il a été présenté à l'IRIA dans un séminaire le 15 Juin 1973.

Je remercie Monsieur le Professeur J.L. Lions de
m'avoir accueilli pour ce stage à l'IRIA.

Je tiens à remercier MM. Victor Chaptal, Claude
Kaiser et Sacha Krakowiak pour l'aide et les conseils
qu'ils m'ont apportés. Et tout particulièrement M. Chaptal
qui a eu la tâche ingrate de revoir entièrement ce texte.

Je tiens à remercier également M. François Anceau
et son équipe pour leur aide et sympathique collaboration
pendant mon stage et séjour à l'IMAG.

Marek TUDRUJ
# Plan

## Introduction

1. Le tableau de commande d'un ordinateur

2. La réalisation de l'unité de commande d'un ordinateur

3. Une classification des structures de l'unité de commande avec une mémoire de commande.

3.1. Le schéma global

3.2. L'unité de type "base compteur"

3.3. L'unité de type "base compteur + adresse"

3.4. L'unité de type "base adresse"

3.5. L'unité de type "base adresse + mémoire".

3.6. Remarques

## Annexe

## Bibliographie
## Introduction

Le but de ce travail est de proposer une certaine approche du problème qui se pose quand on veut classer les unités de commandes des calculateurs. Cette approche est le résultat d'une analyse des structures des unités de contrôle des machines existantes et des propositions théoriquement possibles.

La première partie de cet article est destinée à montrer un point de vue général de l'unité de commande dans l'ensemble de la circuiterie de l'ordinateur, à définir les mécanismes fondamentaux de l'unité, à énumérer les problèmes principaux de réalisation de l'unité de commande et enfin à préciser une classification des unités de commande selon la façon dont elles sont réalisées.

La deuxième partie est consacrée aux unités de commande comportant une mémoire de commande. On donne une définition de l'unité microprogrammée de commande et on classe les structures de ces unités de contrôle selon un critère qui est le mécanisme d'adressage des mots dans la mémoire de commande.

## 1. Le tableau de commande d'un ordinateur

On divise l'ensemble du matériel de l'ordinateur en deux parties : l'unité de commande et les dispositifs exécutifs -(le milieu de traitement d'information).

On peut proposer la définition de l'unité de commande suivante : l'unité de commande d'ordinateur est l'ensemble des éléments logiques et des autres composants qui fournissent des signaux assurant la commande du transfert et du traitement des informations dans les autres unités de l'ordinateur selon des algorithmes fixés et conformément au contenu de l'information externe (p. ex. une instruction ou un signal) qui y a été introduite.

Pour chaque instruction un algorithme décrit le comportement des dispositifs exécutifs, qui exécutent cette instruction. On définit un ensemble de points décisifs des dispositifs exécutifs ou sont appliqués les signaux de commande pour obtenir les actions voulues.
L'algorithme d'exécution est traduit en signaux de contrôle appliqués aux points décisifs.

On suppose que les signaux de commande sont binaires et peuvent changer aux instants égaux à un multiple d'un certain quantum de temps $τ$, dont la valeur est définie par les paramètres physiques des circuits.

On range tous les points décisifs dans un vecteur. On transcrit l'algorithme d'exécution en un ensemble de suites des valeurs des signaux appliqués aux points décisifs. On obtient alors un ensemble de vecteurs de signaux de commande en ordre chronologique.

Il existe dans la machine un ensemble d'informations extérieures à l'unité de contrôle et qui influencent les processus internes à cette unité. On range cet ensemble d'informations dans un mot de m bits et on attribue un et un seul entier $i$ qui satisfait la condition $0 \le i \le 2^m - 1$ à chaque combinaison des valeurs des bits dans ce mot.

Pour chaque algorithme, c'est-à-dire pour chaque instruction de la machine, on forme ainsi une matrice (à 3 dimensions) des signaux de commande dans un système de 3 axes : un axe de temps $t$, un axe de numéros de points décisifs $n$ et un axe de valeur des informations externes $i$. Ce tableau constitue une image des changements des signaux de commande nécessaires pour réaliser une instruction. On l'appelle **tableau de commande d'une instruction**. (fig. 1). On peut ranger les tableaux de commande de toutes les instructions dans un tableau à 4 dimensions, ou la 4ème dimension est le numéro d'instruction $x$. L'entrée dans ce tableau peut s'effectuer par un vecteur de signaux ayant une coordonnée $t = 0$ et des coordonnées $x$, I quelconques.

La sortie est indiquée par un vecteur final spécial. Le rôle de l'unité de commande est donc de générer pour chaque instruction de la machine un ensemble de signaux de commande, en concordance avec ce tableau de commande et d'assurer le passage d'une instruction vers une autre.

Pour un matériel exécutif fixé et un ensemble d'instructions donné, le tableau des signaux de commande est un **invariant de l'unité de commande**, indépendant de la réalisation physique de cette unité.
Il y a donc beaucoup de réalisations de l'unité de commande pour un tableau de commande donné.
## 2. La réalisation de l'unité de commande d'un ordinateur.

En utilisant le concept de tableau de commande on peut définir les 3 problèmes généraux de la réalisation du circuit de commande d'un ordinateur.

### I. Le premier problème est celui de la construction du mécanisme qui assure une continuité de l'exécution d'une séquence d'instructions. On peut le nommer - **le problème de sélection**.

Le problème de sélection se divise en problèmes d'entrée dans le tableau de commande et de sortie de ce tableau, ce qui revient à désigner une nouvelle coordonnée $x$ dans ce tableau. Ce sont des problèmes de codage des instructions et du transcodage du code opération d'une instruction en un jeu de coordonnées d'un vecteur du tableau.

Il faut noter que le passage d'un vecteur de commande final d'une instruction vers un vecteur initial d'une nouvelle instruction se fait en général à l'extérieur du tableau de commande, dans le "méta-système" si on appelle un "système", le mécanisme d'avancement à l'intérieur du tableau de commande.

### II. Le deuxième problème est celui de la construction du mécanisme d'avancement à l'intérieur du tableau de commande. C'est le problème du passage entre les vecteurs consécutifs des signaux de commande. Il faut choisir ici un algorithme optimal de passage, selon un critère qui peut être par exemple le coût du matériel ou la commodité de faire des modifications du contenu du tableau de commande quand on change l'algorithme d'exécution d'une instruction.

### III. Le troisième problème est le **problème de la minimisation** de la quantité de matériel utilisé pour construire un dispositif réalisant le tableau de commande. Il faut essayer de transformer ce tableau pour diminuer le nombre de ses éléments. On utilise une méthode d'agrégation
- en éliminant les redondances entre les vecteurs des signaux de commande - et une méthode de codage des informations constituant les vecteurs de ce tableau. Une autre méthode est la décomposition du tableau de commande c'est-à-dire la réalisation indépendante des fragments de ce tableau et l'introduction d'une hiérarchie dans la réalisation de ce tableau, en construisant les sous-unités de l'unité de commande.

En utilisant l'approche décrite ici on peut alors distinguer trois formes de réalisation de l'unité de commande :

a) **l'unité à mémoire de commande** - le tableau de commande est rangé dans un dispositif ayant les caractéristiques d'une mémoire et permettant la lecture et l'écriture de mots multi bits, qui constituent une base de la génération des signaux de commande.

b) **l'unité de type classique** - formée d'automates séquentiels générant à leur sortie les éléments des vecteurs des signaux de commande du tableau de commande.

c) **l'unité de type mixte** - possède les caractéristiques des deux classes citées ci-dessus.

L'unité de commande à mémoire de commande satisfait les conditions suivantes :

a) il y a une interprétation des instructions par un ensemble d'éléments de type instruction.

b) elle contient une mémoire de commande, mémorisant les éléments interprétatifs (les micro instructions) qui définissent les actions dans l'unité de commande et dans les circuits exécutifs de la machine.

c) elle possède une structure interprétative c'est-à-dire une configuration qui assure que cette interprétation ait lieu automatiquement et par l'intermédiaire de circuits.
**L'unité microprogrammée de commande** - les micro instructions sont de type structurel, c'est-à-dire qu'elles ont une petite puissance opérationnelle et une grande activité de commande (les micro instructions sont très peu codées, elles sont de niveau bas).

**L'unité de commande de type "stored logic"** - les micro instructions sont de type complexe, c'est-à-dire qu'elles ont une grande puissance opérationnelle et une petite activité de commande (elles sont fortement codées).

## 3. Classification des structures de l'unité de commande à mémoire de commande.

### 3.1. Le schéma global.

Le schéma global de cette unité est représenté sur la figure 2.
Décrivons ses éléments :

**Mémoire de commande.** Elle sert à mémoriser les micro instructions. Pour faire un schéma plus clair, on a fait l'hypothèse qu'une information lue dans la mémoire de commande reste affichée jusqu'au moment de la lecture d'une nouvelle information.

**Générateur d'adresse de la mémoire de commande.** Il sert à élaborer l'adresse de la prochaine micro instruction qui doit être lue dans cette mémoire.
Cette adresse est générée en général à partir des informations suivantes :

a) les informations des champs d'adresses de la dernière micro instruction qui a été lue dans la mémoire.

b) les informations venant du générateur de synchronisation

c) les informations provenant des circuits exécutifs de la machine.

**Emetteur des signaux de commande.** Il sert à émettre des signaux de contrôle vers tous les points décisifs des circuits exécutifs de la machine.

Ces signaux sont en général le résultat du traitement des informations des champs de contrôle et d'adresse de la micro instruction et des instructions de provenance externe à l'unité de commande.
**Générateur de synchronisation.** C'est une partie de l'unité de commande qui émet les signaux qui sont transférés inconditionnellement (toujours) aux autres organes de l'unité de commande, afin de forcer leur travail.

Le générateur travaille en mode supérieur par rapport aux autres éléments de l'unité de commande. Il peut être initialisé ou arrêté par les éléments extérieurs à l'unité de commande. Son travail dépend quand même du contenu des informations lues dans la mémoire de commande.

**Le mot de micro instruction.** Il se divise en général en 3 champs principaux :

- le champ de commande, se composant en général d'une ou de plusieurs parties de commande. Il contient les informations

- le plus souvent codées - qui définissent les signaux de commande devant être transmis vers le milieu de traitement de la machine.

- le champ de synchronisation, contenant les informations de commande du générateur de synchronisation.

- le champ d'adresses, contenant les informations qui concernent l'adressage des mots en mémoire de commande et l'adressage des parties de champs lues dans cette mémoire.

On peut classer les structures de l'unité microprogrammée de commande selon le mécanisme de chaînage des mots dans la mémoire de commande appartenant aux microprogrammes donnés. Ce problème du "passage" d'un vecteur à un autre exposé dans la première partie se reflète dans la structure hardware du générateur d'adresse de la mémoire de commande.

La structure de ce générateur décide de la caractéristique générale de l'unité de commande. On va donc classer les structures selon les mécanismes d'adressage des mots de la mémoire de contrôle et la structure du générateur d'adresses.

Pour simplifier les schémas on a supposé qu'il existe dans le mot de micro instruction seulement une adresse et une partie de commande, ce qui n'influe pas sur le principe de notre classification. A la fin de cette partie on étudiera le cas où la microinstruction contient plusieurs adresses ou plusieurs parties de contrôle.
### 3.2. L'unité de type "base compteur". (fig. 3).

Le mot de micro instruction ne contient pas l'adresse de la micro instruction suivante. Il y a un compteur d'adresses qui contrôle la sélection des mots de la mémoire de commande. Avant de commencer un microprogramme, il faut mettre dans le compteur un paramètre venant de l'extérieur de l'unité de commande.

Les micro instructions d'un microprogramme sont inscrites à des adresses consécutives. Il y a quand même une possibilité de réalisation de branchements conditionnels dans un microprogramme. La partie adresse spécifie s'il faut exécuter un branchement et à quelle condition. Si le test de condition est positive, on réalise une combinaison logique ou arithmétique du contenu du compteur avec les informations externes choisies.

On peut facilement réaliser plusieurs fois l'exécution d'une même micro instruction. La réalisation des boucles est théoriquement possible mais difficile à réaliser, à cause de la nécessité de préparer les informations à l'extérieur de l'unité de commande pour modifier l'adresse afin de revenir au début de la boucle.

Le microprogramme se termine par une micro instruction spéciale qui supprime par générateur de synchronisation les contacts avec la mémoire de commande, jusqu'au moment où le compteur d'adresses sera rempli de nouveau par une information externe.

Nous obtenons ainsi une économie de capacité de la mémoire de commande et une bonne efficacité d'utilisation des bits de la micro instruction, mais la structure de commande à l'intérieur du microprogramme n'est pas flexible. Les réalisations des branchements et l'implantation des microprogrammes en mémoire sont difficiles en pratique. Certains exemples de propositions théoriques de l'unité de commande de ce type sont données en [12], [17].

### 3.3. L'unité de type "base compteur + adresse" (fig. 4)

C'est une extension de l'unité type "base compteur", qui donne plus de souplesse dans l'utilisation du contenu de la mémoire de commande.
Il y a deux formats de mot dans la mémoire de commande :

- sans adresses

- avec une adresse complète ou avec des fragments d'adresse.

Le générateur d'adresse contient un compteur d'adresse et un commutateur. Ce dernier permet de transférer l'adresse ou des fragments d'adresse à partir du compteur d'adresse ou à partir de la partie adresse de la micro instruction en cours.

Les micro instructions d'un programme sont le plus souvent inscrites séquentiellement dans la mémoire. C'est le compteur qui contrôle leur sélection dans la mémoire. Quand il faut effectuer un branchement vers une adresse non séquentielle, on utilise le deuxième format de la micro instruction. On transfère dans ce cas les bits d'adresse par le commutateur et par le circuit de combinaison vers le compteur, pour modifier son contenu. Nous avons ici deux possibilités de réalisation de branchements conditionnels :

- par commutateur (le contenu du compteur d'adresse ou l'adresse de la micro instruction en cours)

- par circuit de combinaison - modifier ou pas le contenu du compteur d'adresse.

Dans la structure décrite il est facile de réaliser l'exécution multiple d'une micro instruction ou d'une boucle de micro instructions. L'adresse de retour au début de la boucle est contenue dans la dernière micro instruction de cette boucle.

La structure de type "base compteur + adresse" permet de limiter la longueur du mot de micro instruction. On ne perd pas ici beaucoup d'efficacité lors du contrôle de bits du mot de micro instruction pour l'adressage, à condition que les parties séquentielles des microprogrammes soient raisonnablement longues.

Les exemples des réalisations des unités de commande de ce type sont données en [28], [29].
### 3.4. L'unité de type "base adresse" (fig. 5).

Chaque mot de micro instruction contient l'adresse de la micro instruction suivante. On peut disposer librement des adresses de la mémoire de commande. Il y a possibilité de réalisation de branchements conditionnels dans les microprogrammes. Quand un test de condition défini par les bits de la partie d'adresse est positif une adresse de branchement est générée par une combinaison de bits d'adresse de la micro instruction avec des informations choisies à l'extérieur de l'unité de commande. Il est facile de réaliser ici une exécution multiple de la même micro instruction pour y placer la même adresse que celle ou était inscrite la micro instruction donnée. La sortie se fait par une modification conditionnelle d'adresse. On peut réaliser des boucles. La dernière micro instruction contient une adresse de retour vers le début de la boucle. La sortie de la boucle est faite par une modification conditionnelle de l'adresse. L'utilisation de la longueur de la micro instruction est peu avantageuse, mais le rangement de micro instructions en mémoire de commande est facilité. Les exemples des réalisations des unités de commande de ce type sont donnés en [2] [3] [18], [23].

### 3.5. L'unité de type "base adresse + mémoire" (fig. 6).

Le type de l'unité de commande est caractéristé par la présence d'une mémoire d'adresse dans le générateur d'adresse. Cette mémoire sert à contenir les adresses de retour des sous-microprogrammes. Chaque micro instruction contient ici une adresse.

L'adresse qui entre dans la mémoire de commande peut venir directement de la micro instruction en cours ou du circuit de modification ou de la mémoire d'adresse.

On écrit dans la mémoire d'adresse l'adresse de la micro instruction en cours ou l'adresse modifiée par des informations externes. L'adresse de cette écriture est fixée par un générateur d'adresse de la mémoire d'adresse. Elle peut être donnée dans la partie d'adresse de la micro instruction en cours ou générée automatiquement. La nature de la communication avec la mémoire d'adresse est fixée par le contenu du champ d'adresse de la
micro instruction. La structure décrite donne une très grande souplesse pour l'adressage de la mémoire de commande. On peut réaliser des boucles, des sous microprogrammes, on peut réaliser ainsi une structure des microprogrammes vraiment modulaire.

On peut réaliser de plus des branchements conditionnels multidirectionnels grâce à la disponibilité de plusieurs adresses dans la mémoire d'adresse.

Il y a quand même un allongement des mots de micro instruction, mais on peut le compenser par une économie de mots dans la mémoire de commande.

D'autre part, certains mécanismes (sélection de mots dans la mémoire d'adresse à accès aléatoire) sont réalisés partiellement en software, ce qui peut être une cause de la réduction de vitesse. Un exemple de l'unité de commande de ce type est décrit en Annexe et en [31].

## 3.6. Remarques

3.6.1. La discussion ci-dessus doit être complétée par certaines informations concernant le bloc émetteur.

On peut distinguer deux types généraux d'émetteurs de signaux de commande :

a) sans mémoire

b) avec mémoire.

L'émetteur sans mémoire (fig. 7) contient un décodeur et un circuit de combinaison, qui combine les signaux décodés avec les signaux venant du générateur de synchronisation.

L'émetteur avec mémoire (fig. 8) comporte une mémoire d'émetteur [28] qui contient les mots donnant une base pour la génération des signaux de commande effectifs. Les parties de commande dans les micro instructions sont alors des adresses dans la mémoire d'émetteur.
L'émetteur peut également contenir une mémoire auxiliaire dite mémoire de boucles [12] qui enregistre les adresses appartenant à une boucle de micro instructions. Quand une boucle doit être effectuée en enregistre les différentes adresses dans cette mémoire de boucle. Pour la prochaine exécution de cette boucle les adresses seront lues dans la mémoire de boucles au lieu de la mémoire de commande,

3.6.2. Regardons maintenant quels sont les changements dans les schémas de l'unité de commande si l'on admet plusieurs adresses et plusieurs parties de commande dans le mot de la micro instruction.

### Plusieurs adresses (fig. 9)

Sur l'entrée du générateur d'adresse de la mémoire de commande on place un commutateur d'adresse contrôlé par les bits du champ d'adresse de la micro instruction en cours compte tenu des informations externes à l'unité de commande.

### Plusieurs parties de contrôle (fig. 10)

Dans ce cas, le changement concerne l'émetteur des signaux de commande. Sur l'entrée de l'émetteur on place un commutateur commandé par les bits du champ d'adresse de la micro instruction en cours ou par des signaux du générateur de synchronisation tenant compte de l'information provenant de l'extérieur.

Des exemples de réalisation d'émetteurs de ces deux types sont donnés en [23].

3.6.3. Dans l'optique de réaliser une machine concrète il faut définir une structure de mot de commande. Cette définition est un compromis entre les avantages et inconvénients de différentes catégories qu'on vient de décrire. Ce choix n'est pas facile.
# Annexe

Le but de cette annexe est de proposer une alternative du circuit de commande microprogrammée de type "base adresse + mémoire". C'est une solution théorique qui a été élaborée au Centre de Calcul de l'Académie Polonaise des Sciences [31]. Le schéma global de l'unité de commande proposé est montré sur la figure 11. On va décrire brièvement les éléments de ce schéma.

La mémoire de commande MC contient les micro instructions. On distingue dans le mot de micro instruction les parties suivantes :

- A, l'adresse potentielle de la micro instruction suivante,

- K, la clé de la micro instruction,

- TYP, un champ désignant la façon de générer l'adresse de la micro instruction suivante,

- O, la partie de commande de la micro instruction.

Le registre d'adresse RAD sert à contrôler la sélection de mots dans la mémoire de commande.

Le registre de sortie de cette mémoire RST garde les micro instructions lues dans la mémoire pendant un cycle d'exécution.

L'ensemble des registres-compteurs $L_1, L_2, ..., L_n$ sert à mémoriser les bits du champ A de micro instructions après y être transférés. La longueur de chaque registre est égale à la longueur du champ A. Chaque registre peut effectuer une opération + 1 sur son contenu, en réponse au signal appliqué sur l'entrée Ns.

L'ensemble des registres de clé $RK_1, RK_2, ..., RK_n$, dont la longueur est égale à la longueur du champ K dans la micro instruction sert à mémoriser les bits de champ K après leur transfert.

Les ensembles des registres $L_1, L_2, ..., L_n$ et $RK_1, RK_2, ..., RK_n$ forment une pile du générateur adresse de la mémoire de commande.

Le générateur des impulsions de synchronisation "Horloge" sert à générer séquentiellement sur chacune des sorties $T_0, T_1, T_2, T_3$ une impulsion pendant un cycle de micro instruction. Ces impulsions $t_0, t_1, t_2, t_3$ synchronisent le travail de tout le circuit de commande.
Un circuit de comparaison PK sert à tester si les bits de champ K de la micro instruction en cours ont la même configuration que les bits mémorisés dans un des registres $RK_1, RK_2...RK_n$ choisi. Le résultat de cette comparaison dans le moment $t_o$ est mémorisé dans une bascule de circuit PK en sorte que la concordance fasse apparaître un signal sur la sortie Z et la discordance - un signal sur la sortie $\bar{Z}$ de circuit PK.

Un circuit $\pi$ composé de bascules $\pi_1, \pi_2...\pi_n$ sert à désigner le niveau de travail de la pile, c'est-à-dire, à décider dans lequel des registres $L_1, L_2... L_n$ et $RK_1, RK_2... RK_n$ doit s'effectuer une opération concernant la pile définie par le champ TYP de la micro instruction en cours et le contenu duquel des registres $RK_1, RK_2... RK_n$ doit être comparé dans le circuit PK. Le niveau le plus bas est nommé 0.

Un circuit de décodage et de combinaison UDK, possédant m sorties sur lesquelles il génère les signaux résultant des combinaisons logiques des informations suivantes : les bits de champ TYP de la micro instruction en cours, les états des sorties du circuit $\pi$, les états W et $\bar{W}$ de la bascule des conditions externes W, les états des sorties Z et $\bar{Z}$ du circuit de comparaison PK.

Les signaux $S_o, S_1... S_n$ provenant des sorties du circuit UDK contrôlent toutes les opérations dans le circuit de commande. Ils sont appliqués aux éléments logiques sur les chemins de transfert des informations comme le montre la figure 11.

Dans la suite on décrira les modes de travail de ce circuit de contrôle.

A l'exécution de chaque micro instruction à l'instant $t_o$ dans tous les modes de travail du circuit, le contenu du champ (K) de la micro instruction est comparé dans PK avec le contenu d'un des registres $RK_1, RK_2... RK_n$. Des nouveaux signaux apparaissent sur les sorties Z, $\bar{Z}$ de PK et dans le même temps sur les sorties du circuit UDK. Les signaux $S_o, S_1...$ gardent la valeur qu'ils avaient à leur établissement à $t_o$ et restent inchangés jusqu'à la fin du cycle de la micro instruction (à la fin de temps $t_3$). Les opérations effectuées dans les phases $t_1, t_2, t_3$ sont différentes pour les différents modes de travail. On va donc les décrire séparément.
Parmi l'ensemble des modes de travail possibles on a choisi les modes suivants, qui ont été définis pour le champ TYP de longueur de 3 bits. En définissant des autres modes on obtient des autres caractéristiques fonctionnelles du circuit.

### Travail normal A sur niveau K

$t_1 : (A) \rightarrow RAD, L_{K+1}$

$(K) \rightarrow RK_{K+1}$

$t_2 : (L_{K+1}) + 1 \rightarrow L_{K+1}$

$t_3 : \text{rien}$

### Travail normal B sur niveau K

$t_1 : (A) \rightarrow RAD, L_{L+1}$

$(K) \rightarrow RK_{K+1}$

$t_2 : \text{rien}$

$t_3 : \text{rien}$

### Fixation d'adresse retour sur niveau K

$t_1 : (A) \rightarrow RAD, L_{K+2}$

$(K) \rightarrow RK_{K+2}$

$t_2 : (L_{K+2}) + 1 \rightarrow L_{K+2}$

$t_3 : \text{ETAT}(\pi) \rightarrow K+1$

### Retour

$t_1 : (L_K) \rightarrow RAD$

$t_2 : (L_K) + 1 \rightarrow L_K$

$t_3 : \text{ETAT}(\pi) \rightarrow K-1$
### Retour sans + 1

$t_1 : (L_K) \rightarrow RAD$

$t_2 : \text{rien}$

$t_3 : \text{ETAT}(\pi) \rightarrow K-1$

### Annulation d'adresse retour

$t_1 : (A) \rightarrow RAD, L_{K+1}$

$(K) \rightarrow RK_{K+1}$

$t_2 : (L_{K+1}) + 1 \rightarrow L_{K+1}$

$t_3 : \text{ETAT}(\pi) \rightarrow K-1$

### Branchement A selon compteur

$t_1 : (L_{K+1}) \rightarrow RAD$

$(K) \rightarrow RK_{K+1}$

$t_2 : (L_{K+1}) + 1 \rightarrow L_{K+1}$

$t_3 : \text{rien}$

### Branchement B selon compteur

$t_1 : (L_{K+1}) \rightarrow RAD$

$(K) \rightarrow R_{K+1}$

$t_2 : \text{rien}$

$t_3 : \text{rien}$
Le champ TYP de 3 bits de la micro instruction permet d'avoir 8 types de génération d'adresses de la micro instruction suivante.

On organise ces types en utilisant les modes de travail de circuit décrits en fonction de la valeur du champ TYP de la micro instruction, de l'état de sortie W, $\overline{W}$ de la bascule des conditions externes et de l'état de sortie Z, $\overline{Z}$ du circuit de comparaison PK.

On peut définir les types de travail suivants :

<table><tr><td>TYPO</td><td>INCONDITIONNEL</td><td></td><td>TRAVAIL NORMAL A</td></tr><tr><td rowspan="2">TYP1</td><td rowspan="2">CONDITIONNEL</td><td>$\overline{W}$ = 1</td><td>TRAVAIL NORMAL B</td></tr><tr><td>W = 1</td><td>BRANCHEMENT B SELON COMPTEUR</td></tr><tr><td>TYP2</td><td>INCONDITIONNEL</td><td></td><td>FIXATION D'ADRESSE RETOUR</td></tr><tr><td rowspan="2">TYP3</td><td rowspan="2">CONDITIONNEL</td><td>$\overline{W}$ = 1</td><td>FIXATION D'ADRESSE RETOUR</td></tr><tr><td>W = 1</td><td>BRANCHEMENT A SELON COMPTEUR</td></tr><tr><td>TYP4</td><td>INCONDITIONNEL</td><td></td><td>RETOUR</td></tr><tr><td rowspan="2">TYP5</td><td rowspan="2">CONDITIONNEL</td><td>$\overline{W}$ = 1</td><td>TRAVAIL NORMAL A</td></tr><tr><td>W = 1</td><td>RETOUR</td></tr><tr><td rowspan="2">TYP6</td><td rowspan="2">CONDITIONNEL</td><td>$\overline{W}$ = 1</td><td>RETOUR SANS + 1</td></tr><tr><td>W = 1</td><td>ANNULATION D'ADRESSE RETOUR</td></tr><tr><td rowspan="2">TYP7</td><td rowspan="2">CONDITIONNEL</td><td>$\overline{Z}$ = 1</td><td>TRAVAIL NORMAL A</td></tr><tr><td>Z = 1</td><td>RETOUR</td></tr></table>

La proposition décrite n'utilise pas toutes les possibilités opérationnelles du circuit, mais elle donne les possibilités fonctionnelles suivantes :

a) réalisations des branchements conditionnels dans les microprogrammes - (TYP1, TYP3) ;

b) réalisation des sauts vers des sous-microprogrammes avec retours, un sous microprogramme peut constituer même une seule micro instruction et le saut peut être effectué par un microprogramme quelconque - (TYP2, TYP4 ou TYP3, TYP4) ;

c) réalisations des boucles à exécution multiple - (TYP3, TYP5 ou TYP1, TYP2, TYP6) ;

d) réalisations des branchements vers deux boucles à exécution multiple avec retour vers une adresse commune arbitraire - (TYP1 : TYP2, TYP5 et TYP2, TYP6) ;
e) réalisations des sous microprogrammes a longueur variable pour différents microprogrammes pères - (TYP2, TYP7).

Une extension du champ TYP à 4 bits augmente naturellement le nombre de types de travail et permet une utilisation plus complète des possibilités des circuits de commande.

Il est remarquable qu'une augmentation du nombre des niveaux d'imbrication des sous microprogrammes n'allonge pas le mot de la micro instruction.

Le mécanisme de saut et de retour dans un circuit microprogrammé de contrôle permet une économie considérable du volume de la mémoire de contrôle. Cela permet de plus de réaliser des microprogrammes ayant une structure logique très compliquée et modulaire. Bien sur, ces améliorations se font au prix d'une augmentation de la quantité de matériel utilisée.
BIBLIOGRAPHIE

1. M.V. Wilkes "The best way to design an automatic calculating machine",
   Manchester University Computer Inaugured Conference p.16, (1951)

2. M.V. WILKES and J.B. STRINGER "Microprogramming and the design of the control circuits in an electronic digital computer", Proceedings of the Cambridge Phil. Soc. 230 - 238, (1953).

3. M.V. WILKES, W. RENWICK and D.J. WHEELER. "The design of the control unit of an electronic digital computer". Proceedings of IEE 105, 121 - 128, (1958).

4. M.T. GLANTZ. "A note on microprogramming", Journal of the ACM, 3, n°1, 77 - 84, (1956).

5. R.J. MERCER. "Microprogramming", Journal of the ACM, 4, n° 2, 157 - 171, (1957).

6. T.W. KAMPE. "The design of a general purpose microprogram-controlled computer with elementary structure." IRE Trans. on Electr. Comp. Vol. EC-9, 208 - 213, June 1960.

7. J.V. BLENKENBAKER. "Logically microprogrammed computers", IRE Transactions on Electronic Computers, Vol. EC-9, 103 - 109, June 1960.

8. M.M. SEMARNE and R.E. PORTER. "A stored logic computer", Datamation 7, n° 5, 33 - 36, May 1961.

9. W.C. Mc GEE. "The TRW-133 Computer", Datamation 10, n° 2, 27 - 29, February 1964.

10. E.O. BOUTWELL, Jr. "The PB 440 Computer", Datamation 10, n° 2, 30 - 32, February 1964.
11. L. BECK and F. KEELER. "The C-8401 Data Processor", Datamation 10, n°2, 33 - 35, February 1964.

12. A. GRASSELLI. "The design of program modifiable microprogrammed control units" IEEE Trans. on Electronic Computers EC-11, n° 3, 336 - 339, 1962.

13. G.B.GERACE. "Microprogrammed control for computing systems", IEEE Trans. on Electronic Computers EC-12, n° 5, 733 - 747, (1963).

14. C.R. CAMPBELL and D.A. NEILSON. "Microprogramming the Spectra 70/35", Datamation 12, n° 9, 64 - 67, (1966).

15. L.D. AMDAHL. "Microprogramming and stored logic", Datamation 10, n° 2, 24 - 26, February 1964.

16. R.H. HILL. "Stored logic programming and applications", Datamation 10, n°2, 36 - 39, February 1964.

17. Y. CHU "Digital computers - Design fundamentals", Mc Graw Hill, 1962.

18. S.G. TUCKER. "Microprogram Control for system/360", IBM Systems Journal, Vol 6, N° 4, 222 - 241, 1967.

19. G.C. VANDLING and D.E. WALDECKER. "The Microprogram Control Technique for Digital Logic Design", Computer Design, Vol 8, n° 8, 44 - 51, 1969.

20. M.V. WILKES. "The growth of interest in microprogramming : A literature survey" Computing Surveys, vol. 1, n° 3, 139 - 145, September 1969.

21. M.C. CASHMAN. "Microprogramming for the Many", Datamation, p. 32. November 1971.
22. G. HOFF. "Design of microprogrammed Control for General Purpose Processors", IEEE International Computer Society Conference, Boston, 87 - 88, September 1971.

23. S.S. HUSSON. "Microprogramming: Principles and Practices", Prentice Hall, 1970.

24.D.E. WALDECKER. "Comparison of a Microprogrammed and a Non-microprogrammed Computer", Computer design, 73 - 78, June 1970.

25. A.B. TUCKER and H.J. FLYNN. "Dynamic Microprogramming Processor Organization and Programming", Comm. of the ACM, 14, 240 - 250, April 1971.

26. G. BOULAYE. "La microprogrammation". Dunod, 1971.

27. C.G. BELL, A. NEVELL. "Computer Structures: Readings and Examples", Mc Graw Hill, 1971.

28. —. "MITRA 15, Manuel de présentation", CII, 1972.

29. —. "T 1600, Manuel de présentation", Télémécanique Electrique, 1972.

30. R.W. MARCZYNSKI, M.S. TUDRUJ. "Przyczynek do teorii uktadu sterującego maszyny cyfrowej", Prace COPAN, Nr 26, 1971.

31. R.W. MARCZYNSKI, M.S. TUDRUJ. "O pewnej koncepcji mikroprogramowanego uktadu sterującego", Projektowanie maszyn i systemów cyfrowych, PWN, 1972, 285 - 296.

32. R.W. MARCZYNSKI, M.S. TUDRUJ. "Mikroprogramowany uktad sterowania maszyn cyfrowych", Prace COPAN, Nr 102, 1973.
<figure><img src="image_2.png" /><figcaption>Fig. 1.</figcaption></figure>

<figure><img src="image_3.png" /><figcaption>Fig. 2.</figcaption></figure>
<figure><img src="image_4.png" /><figcaption>Fig. 3.</figcaption></figure>

<figure><img src="image_5.png" /><figcaption>Fig. 4.</figcaption></figure>
<figure><img src="image_6.png" /><figcaption>Fig. 5.</figcaption></figure>

<figure><img src="image_7.png" /><figcaption>Fig. 6.</figcaption></figure>
<figure><img src="image_8.png" /><figcaption>Fig. 7.</figcaption></figure>

<figure><img src="image_9.png" /><figcaption>Fig. 8.</figcaption></figure>
<figure><img src="image_10.png" /><figcaption>Fig. 9.</figcaption></figure>

<figure><img src="image_11.png" /><figcaption>Fig. 10</figcaption></figure>
<figure><img src="image_12.png" /><figcaption>Fig. 11.</figcaption></figure>