FR 2028240 A1 19701009 FR 7001118 A 19700113 70 01118 2028240 Les ordinateurs numériques universels et spécialisés sont conçus pour appliquer des séquences d'instructions^.! verses à une certaine quantité de données d'entrée pour en tirer les résultats recherchés, lesdites séquences se traduisant par des réponses ma-5 thématiques, des séries d'opérations pour les solutions algorithmiques, ou plus simplement, par la restitution de données enregistrées particulières. Le nombre effectif d'instructions dont dispose un ordinateur donné dépend évidemment de sa complexité. Pour .un ordinateur universel de forte puissance t le répertoire peut 10 comprendre plusieurs centaines d'instructions, alors que pour un petit ordinateur spécialisé ce nombre peut être réduit à quelques instructions de base que l'on combine de diverses manières pour exécuter des fonctions plus complexes. Un inconvénient du répertoire d'instructions limité d'un petit ordinateur estqu'-il faut 15 programmer un grand nombre d'instructions de base, même pour exécuter une opération arithmétique très simple. Ainsi, si le répertoire d'instructions ne comprend que l'addition, le décalage et la sortie des résultats, une opération de multiplication nécessite la programmation séparée de chaque addition répétitive, entraînant 20 un temps de programmation et une durée de traitement exagérés. D'autre part, plus le répertoire d'instructions est élaboré et long, plus l'organisation interne de l'ordinateur est complexe. La solution idéale serait de pouvoir disposer d'un répertoire de quelques instructions de base très puissantes pouvant être 25 combinées de manière efficace pour programmer directement et de façon simple de nombreux sous-programmes standards qui comportent généralement des boucles itératives de programme complexes. Dans certains ordinateurs puissants, ceci est réalisé par la modification externe des adresses au moyen de registres auxiliaires 30 d'index adressables individuellement. La présente invention permet précisément de réaliser cette même fonction, mais pour des ordinateurs relativement petits, en remplaçant les registres d'index séparés par des dispositifs capables de détecter et d'opérer directement sur les informations 35 contenues dans les registres ordinaires de calcul. En particulier, le bit de signe d'un accumulateur classique peut être utilisé comme registre d'index à un seul bit pour des opérations de choix en deux possibilités. 70 01118 -2- 2028240 La présente invention a pour objet un calculateur dont le répertoire d'instructions ne comprend qu'un petit nombre d'instructions très soupleset qui comporte un dispositif interne de modification des données et des adresses sans l'emploi de regis-5 tres^.'index séparés.Un tel registre d'index peut notamment être remplacé par le bit de signe d'un accumulateur normal. Selon une caractéristique essentielle de l'invention, un ordinateur universel utilise l'information fournie par le signe du contenu d'un accumulateur pour diverses opérations de choix 10 alternés. Le bit de signe de l'accumulateur, est en fait utilisé comme registre d'index à un seul bit facilitant la modification d'adresse en fonction du contenu de certaines instructions d'indexation. Chaque instruction d'indexation de ce type comporte une position binaire réservée servant à spécifier un branchement 15 à l'une ou l'autre de deux adresses. -D'autres caractéristiques et avantages de l'invention res-sortiront de la description qui va suivre faite en regard des dessins annexés et donnant à titre explicatif, mais nullement limitatif une forme de réalisation conforme à l'invention. 20 Sur ces dessins : la figure 1 est un schéma synoptique d'un ordinateur universel ; la figure 2 illustre un exemple de format d'instructions ; la figure 3 est un organigramme illustrant l'approximation 25 numérique du tracé d'une ligne droite; la figure 4 est un autre organigramme illustrant la multiplication de deux nombres binaires ; la figure 5 représente l'utilisation d'un accumulateur à double précision dans un sous-programme de multiplication. 30 La figure 1 est un schéma synoptique d'un ordinateur numé rique universel composé des éléments classiques, Ravoir un organe d'entrée-sortie 1, une mémoire 2, un calculateur arithmétique 3 et une unité de commande 4. Dans le cas de la présente invention, la mémoire 2 peut être à accès direct^, telle qu'une mémoire 35 à tore^inagnétique^ à couche^minces, à transistor MOS, ou à accès séquentiel, telle qu'un tambour, un disque ou une ligne à retard. L'ordinateur peut être organisé en mots de longueur fixe ou va 70 01118 -3- 2028240 riable (la longueur étant le nombre de bits que comprend le mot). Le système de numération peut être le système binaire vrai dans lequel les grandeurs négatives sont exprimées en complément à 1 ou à 2, ou un autre système comportant un signe et une valeur décimale 5 codée binaire, ou tout autre système dans lequel le signe d'un mot de données particulier est représenté par un bit situé en un point fixe du mot. Le calculateur arithmétique 3 comprend principalement un accumulateur 5 qui peut être soit un élément matériel, du système (tel qu'une ligne de bascule binaire ou.autre) , soit un 10 ensemble d'emplacement affecté de manière fixe ou.modifiable dans la mémoire 2. La capacité de l'accumulateur 5 peut être fixe ou variable et dépendante ou non de la longueur des mots enregistrés dans la mémoire 2. Le répertoire d'instructions conditionnant la capacité de 15 calcul de l'ordinateur doit comprendre une instruction classique d'addition ou de soustraction permettant de modifier le contenu de l'accumulâteur par le contenu d'un emplacement déterminé de la mémoire pour produire dans l'accumulateur une grandeur résultat dont le signe est positif ou négatif. Le répertoire d'instructions 20 doit comprendre en outre une instruction classique de "chargement" permettant de transférer le contenu d'une adresse particulière de la mémoire 2 dans l'accumulateur 5, une instruction de sortie commandant le transfert d'un emplacement particulier de la mémoire 2 ou de l'accumulateur 5 vers un organe de sortie 9» tel qu'un 25 dérouleur de bande magnétique, une machine à écrire, un traceur de courbe électronique, etc ; le-répertoire comprend en outre une branchement instruction de / . conditionnel. examinant le signe d'une adresse particulière de la mémoire (ou de l'accumulateur) pour déterminer l'adresse de l'instruction suivante, une instruction de déca-30 lage du contenu de l'accumulateur, une instruction d'entrée, une instruction de chargement de l'accumulateur et. -une instruction de mise en mémoire. . - Bien que les applications de l'indexation-interne et de la modification d'adresse selon les principes de la présente inven-35 tion soient décritœen détail à partir du répertoire d'instruc-tiongênuméré ci-dessus, il va de soi qu'il peut comprendre un grand nombre d'autres instructions, auxquelles s'applique également 70 01118 -4- 2028240 le concept de la présente invention. La figure 2 représente un format classique d'instructions comprenant un code OP (bits 1 à N) spécifiant une instruction de base, telle que "addition","soustraction", "mise en mémoire" "char-5 gement", "sortie", "entrée", etc, ainsi qu'une adresse d'opérande AO (bits N + 1 à X) indiquant un emplacement particulier de la mémoire qui contient l'opérande à utiliser dans l'instruction. Lorsque l'on doit coder des boucles de programme itératives, il est pratique de pouvoir modifier la partie adresse de l'instruc-10 tion. Ainsi, pour faire, par exemple, la somme d'une longue suite de nombres enregistrés dans les adresses consécutives 030 à 077 de la mémoire de l'ordinateur, on peut utiliser la même instruction d'addition en modifiant la partie adresse AO avant chaque opération, de façon à ajouter le contenu de l'adresse suivante 15 à la somme partielle. Dans les ordinateurs classiques, la modification d'adresse s'effectue au moyen d'un dispositif auxiliaire dont le contenu sert à modifier l'adresse de l'opérande sur lequel doit travailler l'instruction. Généralement, le dispositif auxiliaire est un registre d'index indépendant dont le contenu est 20 normalement modifié par une instruction spéciale indépendante des le instructions qui modifient /contenu de l'accumulateur. Dans l'exemple ci-dessus, on peut procéder en chargeant dans le registre d'index la valeur de la première adresse et en agrémentant son contenu d'une unité à chaque addition pour accéder aux adresses con-25 séeutives de la mémoire. Une caractéristique importante de la présente invention est la facilité avec laquelle elle permet de modifier une adresse sans utiliser d'instruction spéciale d'indexation ni de registre supplémentaire autre que l'accumulateur. Pour ceci, le bit de signe 10 30 de l'accumulateur 5 est utilisé comme registre d'index à un seul bit. En outre, le répertoire d'instructions de l'ordinateur comporte un bit de commande permettant au programmeur de choisir l'adressage simple ou modifié (par indexation). Ainsi, s'il choisit l'adressage indexé, l'adresse d'opérande est donnée par la valeur 35 spécifiée directement dans l'instruction lorsque l'accumulateur contient un nombre positif,(bit signe positif) alors que dans le cas où le signe est négatif, l'adresse d'opérande est égale à la 70 01118 -5- 2028240 valeur spécifiée plus un incrément connu (par exemple +1 ou +2) qui peut en outre varier selon le type d'instruction. Cette fonction est assurée par le dispositif logique 8 de la figure 1. les avantages d'un ordinateur numérique organisé selon ce 5 principe seront mieux compris en partant du répertoire d'instructions suivant : 1M(Y),0 charger dans l'accumulateur le contenu de l'emplacement Y LD(Y),1 charger dans l'accumulateur le contenu de l'em-10 placement Y si le contenu actuel (A) est positif, ou avec le contenu de l'adresse Y + 1 si le contenu actuel A est négatif. . ADD(Y),0 ajouter le contenu de l'emplacement Y au contenu de l'accumulateur. 15 ADD(Y),1 ajouter le contenu de l'emplacement Y au contenu de l'accumulateur si ce dernier est positif x>u le contenu de l'emplacement Y + 1 aijifcontenu de l'accumulateur si ce dernier est négatif. 0IJT(Y),0 transférer le contenu de l'emplacement Y vers 20 l'organe de sortie. 0UT(Y),1 transférer le contenu de l'emplacement Y vers l'organe de sortie si l'accumulateur est positif .ou le contenu de l'emplacement Y + 1 si l'accumulateur est négatif. 25 DIJB(IT) diminuer le contenu de l'emplacement de mémoire suivant immédiatement celui dans lequel est enregistrée l'instruction. S'il n'y a pas débordement, revenir en arrière de N instructions (par exemple en prenant l'instruction située N emplacements de 30 mémoire avant l'adresse de l'instruction DIJB). A l'aide de ces quelques instructions, on peut par exemple écrire un programme algorithmique pour l'approximation d'une ligne droite sur un traceur point par point. On suppose que les coordonnées directionnelles de la ligne sont X et Y données sous la forme 35 d'un rapport de A sur B et que la ligne doit avoir une longueur égale à "C" incrément . Si le traceur de courbe est relié à l'ordinateur comme organe de sortie exécutant des mouvements point par 70 01118 -6- 2028240 point parallèles soit à l'axe X soit à l'axe Y selon que les codes X ou Y sont transmis à la so'rtie ; il est possible de tracer une ligne à partir du programme dont l'organigramme schématique est donné à la figure 3. Sur cette figure 5 les opérations sont symbolisées mathématiquement, S étant l'organe de sortie et la dernière opération de décision (C étant le test du débordement de C. Le programme complet s'écrirait sous la forme suivante : dans ce programme les constantes des codes de X et Y sont enregistrées dans deux emplacements successifs de façon que l'instruction OUT(X),1 provoque le choix du code X si l'accumulateur est posi-Î5 tif et le choix du code Y si l'accumulateur est négatif. De même, les constantes A et B sont enregistrées dans deux emplacements successifgde" façon que A soit ajouté au contenu de l'accumulateur ou B soustrait du contenu de l'accumulateur selon le signe de ce dernier après l'instruction ADD(A),1. La valeur C - 1 est enregis-20 trée dans l'emplacement suivant immédiatement l'instruction DIJB de façon à être diminué d'une imité à chaque cycle jusqu'au moment du débordement. Le programme en trois instructions décrit ci-dessus pour réaliser un algorithme linéaire classique illustre bien la simplifica-25 tion qui résulte de l'emploi du signe du contenu de l'accumulateur pour effectuer la modification d'adresse. La souplesse de l'emploi d'un index spécial en combinaison avec les informations fournies par le bit de signe de l'accumulateur pour effectuer un choix alterné sera mieux comprise en considérant l'organigramme de la fi-30 gure 4 qui décrit la multiplication de deux nombres binaires l'un par l'autre. Dans cette application, le bit de signe sert d'indicateur de valeur sprécifiant s'il faut ou non additionner le multiplicande. Pour ceci on suppose que l'ordinateur est équipé d'un accumulateur à double précision (ADP) comme illustré à la figure 5, 35 le multiplicateur étant initialement placé dans la moitié de gauche (moitié de rang supérieur) et la moitié de droite étant mise à zéro. Le bit de signe de l'accumulateur est utilisé pour déter10 out(X),1 add(a),1 dijb(2) 70 01118 -7- 2028240 miner s'il faut ou non ajouter le multiplicande à la somme partielle après chaque décalage du contenu vers la gauche. En résumé, chaque "bit du multiplicateur est successivement examiné dans la position de signe et éliminé par une opération de décalage vers 5 la gauche qui opère également le décalage vers la gauche de la somme partielle pour assurer l'addition du multiplicande (ou de zéros) dans les positions voulues selon le signe du bit suivant du multiplicateur. Ainsi, si le bit de signe est égal à 1, on ajoute le multiplicande M, sinon il n'y a pas d'addition. Après 10 un nombre de décalages égal au nombre de bits du multiplicateur, le sous-programme s'arrête et le produit se trouve dans l'accumulateur double précision ADP. En ajoutant les trois instructions suivantes au répertoire déjà mentionné, on peut écrire le programme correspondant à l'algorithme : 15 RSA décalage de l'accumulateur vers la droite LSA décalage de l'accumulateur vers la gauche ADR(M),1 ajouter le contenu de l'emplacement de mémoire (M) à la moitié de droite de l'accumulateur indexé du signe se trouvant dans la partie de gauche. 20 la boucle de programme utilisant l'indexation par le bit de signe peut s'écrire de la manière suivante : ADR(M),1 ISA DIJB(Z) 25 RSA dans laquelle M contient la valeur zéro, M + 1 contient le multiplicande et DIJB(Z) est suivi du nombre de bits du multiplicateur, la figure 4 illus-tre l'organigramme du traitement et se lit de la manière suivante:1'opération A suivant le départ et la comparai-30 son du bit le moins significatif du multiplicateur à 1. S'il y a inégalité on effectue l'opération B consistant à décaler vers la droite l'accumulateur pour présenter le bit suivant et décaler le produit partiel, par contre/s'il y a égalité,on effectue d'abord l'opération C qui consiste à ajouter le multiplicande au produit 35 partiel, puis l'opération B. Ensuite, à l'opération Dron..retranche 1 du compteur de décalage, puis à l'opération E on teste le débordement de ce compteur. S'il y a débordement le programme est ter 70 01118 -8- 2028240 miné et s'il n'y a pas débordement on recommence à l'opération A. TABLEAU" I Phase Accumulateur Moitié supérieure Moitié inférieure 1. Début 01 10 0000 2. Ajouter 0 0110 0000 3. Décalage 1 100 0000 4. Ajouter multiplicande 1100 0011 5. Décalage 1000 0110 6. Ajouter multiplicande 1000 1001 7. Décalage 0001 0010 8. Ajouter 0 0001 0010 9. Décalage 0010 0100 10 . Décalage droite 0001 0010 Le Tableau I représente les différents états de l'accumulateur au cours de la multiplication de deux nombres de quatre bits 20 par l'algorithme précédent. Le multiplicande est 3(0011) et le multiplicateur est 6(0110). Initialement, le multiplicateur (0110) est rangé dans la moitié supérieure de l'accumulateur et la moitié inférieure est mise à zéro. On voit qu'un décalage vers la droite du contenu de l'accumulateur (phase 10) est nécessaire pour posi-25 tionner correctement le produit 18 (00010010) dans l'accumulateur après le dernier décalage vers la gauche (phase 9). Les quantités soulignées du Tableau indiquent l'extension progressive du produit partiel. Comme autre exemple de l'utilité de l'indexation par le 30 bit de signe, on peut considérer les instructions de branchement conditionnel. . Dans un^lnstruction classique de branchement, l'ordinateur reçoit l'ordre de traiter soit l'instruction suivante en séquence, soit une instruction prise dans un emplacement de la mémoire autre que l'emplacement suivant dans la séquence normale. 35 La. décision de ce choix dépend de la comparaison de valeurs enregistrées. par exemple on peut adopter les conventions suivantes : 70 01118 -9- 2028240 Branchement négatif : si l'accumulateur est négatif prendre l'instruction suivante à l'adresse A. Si 1^accumulateur est positif continuer en séquence. : Si l'accumulateur est positif prendre l'adresse suivante à l'adresse A. Si l'accumulateur est négatif continuer en séquence. : Si l'accumulateur a un contenu nul, prendre l'instruction suivante à l'adresse A, sinon continuer en séquence. Dans chacune des instructions classiques ci-dessus, le programmeur a le choix entre deux emplacements. L'emploi de l'indexation par un hit de signe permet de réaliser un branchement a quatre voies. 15 Ainsi, on peut supposer que l'instruction de branchement permette de se reporter à un nouvel emplacement B si le contenu de l'accumulateur est impair. Une instruction de branchement enregistrée à l'emplacement (A - 1) provoque l'exécution soit de l'instruction suivante (A), soit de l'instruction qui est enregistrée à l'adresse 20 B, selon l'état du bit le moins significatif âe l'accumulateur. Si l'on utilise en outre l'indexation par le bit de signe, et si le bit de droite est impair, l'adresse B est indexée d'une unité si le contenu de l'accumulateur est iiégatif, c'est-à-dire que l'instruction suivante sera prise à l'adresse B ou B + 1 selon le signe 25 algébrique du contenu de l'accumulateur. Cependant, si le contenu de l'accumulateur est pair, l'instruction suivante sera prise à l'adresse A ou à l'adresse A + 1 selon la valeur du bit de signe. Les quatre combinaisons possibles sont résumées dans le Tableau II ci-dessous : 30 TABLEAU II Bit le moins Bit de Adresse de l'instruction significatif signe suivante Pair POS. A 35 Pair HEG. A+1 Impair POS. B Impair NEG-. B+1 5 Branchement positif Branchement nul 10 70 01118 -10- 2028240 L'indexation peut être utilisée pour effectuer n'importe quel type de choix alterné. De plus, le signe de l'accumulateur peut être pris soit pour représenter le signe d'un nombre (comme dans le premier exemple) soit la valeur d'un bit choisi (comme 5 dans les second et troisième exemples). Comme on l'a vu précédemment, l'indexation peut s'appliquer à de nombreux autres types d'instructions de chargement, de mise en mémoire, d'addition, de soustraction, de sortie, d'entrée, etc. Pour les ordinateurs utilisant en outre l'adressage indirect (c'est-à-dire dans les-10 quels une instruction ne spécifie pas directement l'adresse de l'opérande mais plutôt l'adresse de l'adresse de l'opérande) le principe d'indexation de la présente invention peut fournir un choix alterné entre différents indicateurs d'adresses d'opérandes. Dans une telle application, les opérandes peuvent être enregistrés 15 n'importe où dans la mémoire et l'instruction permet de choisir entre deux adresses contenant les adresses directes des opérandes. Il va de soi que l'invention n'a été décrite et représentée qu'à titre explicatif, mais nullement limitatif et qu'elle est susceptible de diverses variantes sans sortir de son cadre. 70 01118 -11- 2028240 REVENDICATIONS 1. Ordinateur numérique, caractérisé en ce qu'il comprend un accumulateur dont une position de bit particulière est réservée pour représenter le signe de son contenu et un dispositif logique 5 commandé par la valeur dudit bit de signe pour modifier l'adresse spécifiée par une instruction. 2. Ordinateur numérique, caractérisé en ce qu'il comprend un accumulateur dont une position, de bit particulière est réservée pour représenter le signe de son contenu, des moyens de commande 10 sensibles à des instructions non modifiées pour les appliquer à un opérande spécifié par la partie adresse de ladite instruction, quel que soit l'état dudit bit de signe, des moyens de commande sensibles à des instructions modifiées pour changer la partie adresse d'une instruction selon l'état du bit de signe, de façon que 15 l'ordinateur puisse être programmé pour effectuer des décisions en fonction de l'état dudit bit de signe. 3. Système de choix conditionnel entre l'opérande spécifié par la partie adresse de l'instruction d'un ordinateur numérique et un opérande auxiliaire dont l'adresse est différente, ledit 20 système étant caractérisé en ce qu'il comprend un registre dans lequel les informations sont mémorisées sous forme numérique, un moyen de commande sensible à des instructions d'indexation pour prendre l'opérande soit à l'emplacement spécifié par l'instruction, soit à un autre emplacement en fonction de l'état dudit registre. 25 4. Système selon la revendication 3, caractérisé en ce que le registre est un accumulateur. 5. Système selon la revendication 3> caractérisé en ce que les décisions sont basées sur le signe du contenu dudit registre. 6. Système selon la revendication 4, caractérisé en ce que 30 les décisions sont basées sur le signe du contenu dudit accumulateur . 7. Système de décision pour ordinateur, caractérisé en ce qu'il comprend un moyen de détection destiné à déterminer la valeur d'une information enregistrée et un moyen de commande action- 35 né par ledit moyen de détection pour exécuter des instructions d'indexation modifiables changeant l'adresse d'opérande spécifiée par l'instruction en fonction de la valeur de l'information enregistrée. 70 01118 -12- 2028240 8. Système selon la revendication 7» caractérisé en ce que ladite information est contenue dans un accumulateur. 9- Système selon la revendication 7» caractérisé en ce que la valeur de ladite information enregistrée est déterminée par un 5 seul bit. 10. Système selon la revendication 8, caractérisé en ce que la valeur de l'information enregistrée est déterminée par un bit unique dudit accumulateur. 11. Système pour utiliser le signe du contenu d'un accumu-10 lateur comme un. registre d'index à un seul bit, ledit système étant caractérisé par l'utilisation d'un répertoire d'instructions comprenant au moins une instruction ayant un bit de commande pour son modifier ^adresse d'instruction , un accumulateur ayant, une position de bit particulière représentant le signe de son contenu et 15 un dispositif logique sensible à l'état du-bit de signe de l'accumulateur et du bit de commande de l'instruction modifiable pour changer la partie adresse de cette dernière. 12. Ordinateur numérique, caractérisé en ce qu'il est capable de modifier la partie adresse d'une instruction en fonction 20 du signe algébrique du contenu de l'un de ses accumulateurs. 13. Ordinateur numérique, caractérisé en ce que son répertoire d'instructions comprend des instructions d'indexation de la partie adresse d'autres instructions en fonction du signe de l'un de ses accumulateurs. 25 14. Ordinateur selon la revendication 13 » caractérisé erjifee que le répertoire d'instructions comprend au moins une instruction de branchement conditionnel et d'indexation à partir du bit de signe permettant: de prendre l'instruction suivante à l'une de quatre adresses possibles.