FR 2601163 A1 19880108 FR 8709484 A 19870703 l 2601163 Titre: SYSTEME DE COMMANDE ARITHMETIQUE DE DONNEES SCALAIRES POUR UN PROCESSEUR ARITHMETIQUE VECTORIEL La présente invention se rapporte à un système de commande arithmétique de données scalaires pour un processeur arithmétique vectoriel dans un système de traitement des données. Dans un processeur arithmétique vectoriel classique de ce type, un pointeur d'opérande est position10 né sur la base du contenu d'une instruction vectorielle lorsque l'instruction vectorielle est placée dans un registre d'instruction 6 par une unité centrale de traitement 60 (à laquelle on se réfère ci-dessous comme à l'unité centrale de traitement CPU) et un processeur ari15 thmétique vectoriel 100 démarre l'exécution de l'instruction vectorielle, comme dans le diagramme par blocs de la figure 1 qui montre la relation entre l'unité centrale de traitement 60 et le processeur arithmétique vectoriel 100. Après que l'unité centrale de traitement 6Oait placé 20 l'instruction dans le registre d'instruction 6, un opérande est chargé pour exécuter le premier cycle de l'instruction. Lorsque.le dernier opérande est chargé, l'unité centrale de traitement 60 charge l'opérande à l'aide d'une microinstruction pour armer un compteur d'opérande. Lors25 que le processeur arithmétique vectoriel 100 détecte que le compteur d'opérande a été armé, l'opérande est utilisé pour démarrer une opération arithmétique. Lorsque le traitement à exécuter par le processeur arithmétique vectoriel 100 est achevé, l'unité cen30 trale de traitement 60 démarre le second cycle. Même si l'opérande est un opérande scalaire, c'est le même opérande que dans le premier cycle qui est chargé. Lorsque le chargement de l'opérande est achevé, le compteur d'opérande est armé. Même si c'est un opérande scalaire qui est uti- 2 2601163 lisé, la même donnée est chargée à chaque cycle. La différence entre les opérandes scalaires et les opérandes vectoriels est indiquée par une instruction du logiciel et l'unité centrale de traitement 60 détermine la différence en détectant un bit d'indication. Dans le processeur arithmétique vectoriel classique décrit ci-dessus, l'unité centrale de traitement doit charger le même opérande dans le processeur arithmétique vectoriel à chaque cycle d'instruction vectoriel, 10 ce qui augmente le nombre de pas dans le microprogramme. Le processeur arithmétique vectoriel doit attendre que l'opérande y soit introduit. Il en résulte qu'il n'est pas possible d'augmenter la vitesse opératoire. Un but de l'invention est de proposer un système 15 de contrôle arithmétique de données scalaires pour un processeur arithmétique vectoriel dans lequel on puisse éliminer les inconvénients classiques décrits cidessus et dans lequel on puisse augmenter la vitesse opératoire bien que la disposition soit simple. Un système de contrôle arithmétique de données scalaires pour un processeur arithmétique vectoriel conforme à l'invention comporte, dans le processeur arithmétique vectoriel capable d'exécuter les opérations arithmétiques indépendamment de l'unité centrale de traitement, 25 sous le contrôle de cette unité centrale de traitement, un fichier de registre pour mémoriser un opérande lors de l'exécution d'une instruction vectorielle provenant de l'unité centrale de traitement, un registre de pointeur d'opérande pour mémoriser la donnée d'adresse pour l'opérande mémorisé dans le fichier de registre, un compteur d'opérande qui est incrémenté lorsque l'opérande est chargé dans le fichier de registre et qui est décrémenté lorsque l'instruction vectorielle est exécutée, ainsi qu'un registre de contrôle d'opérande scalaire pour mémoriser une valeur qui indique 3 2 6 2601163 si l'opérande est un opérande scalaire ou un opérande vectoriel. La valeur du registre de contrôle d'opérande scalaire est détectée en tant que valeur pour une opération arithmétique scalaire et c'est la même valeur que celle du premier cycle qui est utilisée dans le registre de pointeur d'opérande dans le second cycle et dans les cycles suivants pour exécuter les opérations arithmétiques scalaires. L'unité centrale de traitement ne charge pas l'opérande dans le fichier de registre mais ne 10 fait qu'armer le compteur d'opérande. La figure 1 est un diagramme par blocs montrant un système classique de contrôle arithmétique de données scalaires; et la figure 2 est un diagramme par blocs montrant 15 un système de contrôle arithmétique de données scalaires conforme à une réalisation de l'invention. On va décrire en détail, en se référant aux dessins joints, une réalisation préférée de l'invention. La figure 2 est un diagramme par blocs montrant 20 une réalisation de l'invention. Dans un processeur arithmétique vectoriel 200, un registre de contrôle d'opérande scalaire 1 est relié à une unité centrale de traitement 60 et mémorise un signal qui indique si l'opérande est un opérande scalaire ou un 25 opérande vectoriel. Le registre de contrôle d'opérande scalaire 1 comporte un registre d'opérande 11 pour mémoriser un premier opérande de 1 bit et un registre d'opérande 12 pour mémoriser un second opérande de 1 bit. Les sorties des registres d'opérande 11 et 12 sont comman30 dées par des sélecteurs d'opérande 20 et 30 respectivement. Un registre de pointeur 2 est relié à la sortie du sélecteur d'opérande 20 et mémorise la donnée dadresse du premier opérande pour la transmettre à un fichier de registre 4. Un registre des pointeur 3 mémorise la donnée d'adresse du second opé- 4 2601163 rande pour la transmettre au fichier de registre 4. Le fichier de registre 4 mémorise les données d'opérande fournies par l'unité centrale de traitement 60 par un bus 106 et mémorise les résultats traités 5 provenant d4une unité arithmétique 10. Dans cette réalisation, le fichier de registre 4 comporte un fichier de registre de mots de 16 bits et comporte deux paires de zones de fichier de registre à mots de 4 bits (BF aux adresses 8HEX (o HEX est la notation hexadécimale) à 10 BHEX et BF' aux adresses CHEX à FHEX) pour mémoriser les données d'opérande et provenant de l'unité centrale de traitement 60. Les zones BF et BF' d fichier de registre commutent sous l'action d'une bascule qui bascule au démarrage de l'exécution de l'instruction,et, sont alternativement utilisées. Par conséquent, l'unité-centrale de traitement 60 peut envoyer l'opérande suivant dans le fichier de registre 4 au cours de l'exécution de l'instruction concernant l'opérande en cours. Le processeur arithmétique vectoriel 200 comporte un compteur d'opérande 9 armé en réponse à un signal de commande provenant de l'unité centrale de traitement 60. Une sortie du processeur arithmétique vectoriel 200 est couplée à l'unité arithmétique 10. Les sorties des registres de pointeurs 2 et 3 et des sélecteurs 20 et 30 sont couplées à un sélecteur d'adresse 40. Un registre 5 d'adresse dans le fichier de registre est couplé à une sortie du sélecteur d'adresse 40 et envoie un signal d'adresse au fichier de registre 4. La borne de sortie du registre d'adresses est reliée à l'une des bornes d'entrée du sélecteurd'adresse 40. Un registre d'instruction 6 mémorise un code d'instruction et les données nécessaires de commande de l'opérande, qui proviennent l'un et l'autre de l'unité 35 centrale de traitement 60, et envoie le code d'instruction, J 2601163 sous forme d'un Signal d'adresse, à un décodeur d'instruction 7. Le décodeur d'instruction 7 comporte une mémoire vive RAM et mémorise les données nécessaires pour l'exécution de l'instruction. Les données de commande de l'opérande du registre d'instruction 6 sont envoyées dans un générateur de pointeur d'opérande 8. Deux signaux de sortie du générateur de pointeur d'opérande 8 sont envoyés à la première borne d'entrée des sélecteurs d'opérande 20 et 30 respectivement. Les sorties des re10 gistres de pointeur 2 et 3 sont couplées à la seconde borne d'entrée des sélecteurs d'opérande 20 et 30 respectivement. Du fait des liaisons électriques indiquées cidessus, le générateur de pointeur d'opérande 8 reçoit un signal de sortie provenant du registre d'instruction 6 15 et un signal de sortie provenant du décodeur d'instruction 7 et engendre les données d'adresse des premier et second opérande pour le fichier de registre 4. Les sélecteurs d'opérande 20 et 30 respectivement 20 reçoivent les signaux de sortie provenant du générateur de pointeur d'opérande 8 par l'intermédiaire des lignes de signaux 101 et 102 lorsque la valeur du registre de contrôle d'opérande scalaire 1 indique une opération arithmétique vectorielle (c'est-à-dire se trouve au niveau logique "0"). Dans ce cas les signaux de sortie des sélecteurs d'opérande 20 et 30 apparaissent sur les lignes de signaux 103 et 104 respectivement. Les sélecteurs d'opérande 20 et 30 sélectionnent les premier et second pointeurs d'opérande mémorisés dans les registres de poin30 teur d'opérande 2 et 3 lorsque la valeur du registre de contrôle d'opérande scalaire 1 indique une opération arithmétique scalaire (c'est-à-dire se trouve au niveau logique "1"). Le sélecteur d'adresse 40 envoie au registre d'adresse 5 du fichier de registre les valeurs sélec- 6 2601163 tionnées par les sélecteurs d'opérande 20 et 30. On va décrire une opération arithmétique dans laquelle on reçoit de l'unité centrale de traitement 60 les données relatives aux deux opérandes, on les ajoute l'une à l'autre, et on envoie de façon répétitive une somme Xi à l'unité centrale de traitement 60. Xi -. Ai + Bi (i = 1 à n)...(1) o Ai est le premier opérande et Bi est le second opérande. Supposons que le premier opérande Ai soit un opérande scalaire et que le second opérande Bi soit un opérande vectoriel. Une instruction d'addition vectorielle est mise en place dans le registre d'instruction 6 sous la commande 15 de l'unité centrale de traitement 60. A ce moment le registre de contrôle d'opérande scalaire 1 prend le niveau logique "0", ce qui indique que l'opérande est l'opérande vectoriel. Les valeurs des lignes de signaux 101 et 102 apparaissent sur les lignes de signaux 103 et 104, respec20 tivement. La zone BF de mémorisation des données dbpérandes,dans le fichier de registre 4, est sélectionnée (la valeur de la bascule de commutation des registres est "0"). La donnée d'adresse du premier opérande Ai qui se trouve sur la ligne de signaux 101 25 est mise en place à l'adresse "8"HEX dans la zone BF du fichier de registre par le registre d'instruction 6 et le décodeur d'instruction 7. La donnée d'adresse du second opérande Bi qui se trouve sur la ligne de signaux 102 est mise en place à l'adresse "A"HEX. Au démar30 rage du premier cycle de la présente instruction, le processeur arithmétique vectoriel 200 place les données d'adresses ci-dessus - dans les registres de pointeur 2 et 3. Après que l'unité centrale de traitement 60 aitdon35 né l'instruction, la donnée de premier opérande Ai et la donnée de second opérande Bi sont chargées par l'unité centrale de traitement 60, par l'intermédiaire du bus 106, aux adresses "8"HE et "A"'HEX du fichier de registre 4, respectivement. Ce chargement ter5 miné, le compteur d'opérande 9 est incrémenté de 1. Lorsque le processeur arithmétique vectoriel 200 détecte que le compteur d'opérande 9 a été armé, le processeur arithmétique vectoriel 200 démarre une addition en utilisant les deux opérandes chargés dans le fichier 10 de registre 4. En même temps le compteur d'opérande 9 est décrémenté de un. Entre temps, l'unité centrale de traitement 60 détermine si l'opérande est un opérande scalaire ou un opérande vectoriel. Si le premier opérande Ai est un opérande scalaire, le bit du registre d'opérande 15 11 qui se trouve dans le registre de contrôle d'opérande scalaire 1 prend le niveau logique "1". Par conséquent, la valeur du registre de pointeur 2, c'est-à-dire le signal de sortie provenant du sélecteur 20, est envoyée à la ligne de signaux 103. Lorsque l'unité centrale de traitement 60 ordonne le démarrage du second cycle de l'instruction vectorielle, la bascule 50 bascule au niveau logique "1" et c'est la zone BF' du fichier de registre qui est sélectionnée, parmi les zones BF et BF', dans le fichier de registre 4. La ligne 101 des signaux du premier opérande prend une valeur correspondant à l'adresse "C"'HEX du fichier de registre 4 et la ligne 102 des signaux du second opérande prend une valeur correspondant à l'adresse "E" HEX du fichier de registre 4. Toutefois, du fait que le registre 11 du registre de contrôle d'opérande scalaire 1 a pris le niveau logique "1", la ligne des signaux 103 prend une valeur correspondant à l'adresse "8"HEX Au moment du démarrage du second cycle, les registres de pointeur 2 et 3 sont respective35 ment placés aux adresses "8"HEX et "E"HEX. Du fait que l'opérande Ai est une donnée scalaire, l'unité centrale de traitement 60 utilise les données du premier cycle pour l'opérande Ai dans le second cycle. L'unité centrale de traitement 60 ne fait que charger les données du second cycle pour le second opérande Bi à l'adresse "E"' HEX du fichier des registres 4 par l'intermédiaire du bus 106. Le compteur d'opérande 9 est incrémenté de un. Lorsque le processeur arithmétique vectoriel 200 détecte que le compteur d'opérande 9 a été armé, le pro10 cesseur arithmétique vectoriel 200 utilise la donnée relative au premier opérande du premier cycle mémorisée à l'adresse '"8"HEX du fichier des registres 4 et la donnée relative au second opérande Bi envoyée dans le second cycle et mémorisée à l'adresse "E"HEX et ajoute ces don15 nées. Lorsque cette addition est achevée, le compteur d'opérande 9 est décrémenté de un. Dans le troisième cycle, le registre de pointeur 2 est placé à l'adresse t"8" HEX et le registre de pointeur 3 est placé à l'adresse "A"HEX. Seule la donnée de second opérande Bi est envoyée et la même opération arithmétique que décrite ci-dessus s'exécute. Une opération arithmétique s'exécute selon la relation (1), dans laquelle le premier opérande Ai et le second opérande Bi sont tous les deux des opérandes 25 scalaires. Dans le premier cycle, le registre de pointeur 2 est placé à l'adresse "8" HEx et le registre de pointeur 3 est placé à l'adresse "A" HEX. Les données du premier opérande Ai et du second opérande Bi sont chargées dans le fichier de registre 4. Du fait que les deux opérandes sont des opérandes scalaires, les deux bits du registre de contrôle d'opérande scalaire 1 ont le niveau logique "1". Le signal de sortie provenant du registre de pointeur 2 apparaît sur la ligne de signaux 103 et le signal de sortie provenant du registre de pointeur 3 9 2 6 0 2601163 apparaît sur la ligne des signaux 104. Dans le second cycle, il n'est pas nécessaire d'envoyer les données relatives aux opérandes. Il suffit que l'unité centrale de traitement 60 arme le compteur d'opérande. 9. Lorsque le processeur arithmétique vectoriel 200 détecte que le compteur d'opérande 9 a été armé, le processeur 200 ajoute les données qui se trouvent aux adresses "8" HEX et 8"A"HEX du fichier de registre 4. Dans le troisième cycle et dans les cycles sui10 vants, les données relatives aux opérandes ne sont pas chargées et le compteur d'opérande est simplement armé. Selon la présente invention, comme décrite cidessus, l'opérande est détecté comme étant un opérande scalaire et c'est la même donnée d'opérande que l'on utilise de façon répétitive pour réduire le nombre de pas d'exécution de l'instruction vectorielle accroissant ainsi la vitesse opératoire arithmétique. REVENDICATIONS 1. Système de contrôle arithmétique de données scalaires pour un processeur arithmétique vectoriel (200) qui peut effectuer des opérations arithmétiques vecto5 rielles indépendamment d'une unité centrale de traitement (6D) sous la commande de ladite unité centrale de traitement (60), ledit processeur arithmétique vectoriel (100) comprenant un fichier de registre (4) pour mémoriser un opérande fourni par ladite unité centrale de traitement 10 (80) lorsqu'il faut exécuter une instruction vectorielle, des registres de pointeur (2, 3) pour mémoriser la donnée relative à l'opérande mémorisé dans ledit fichier de registre, un compteur d'opérande (9) dont le contenu est incrémenté lorsque l'on charge l'opérande dans ledit fi15 chier de registre (4) et dont le contem est décrémenté lorsque l'instruction vectorielle est exécutée, ainsi qu'un registre de contrôle d'opérande scalaire (1) pour mémoriser une valeur qui indique si l'opérande est un opérande scalaire ou un opérande vectoriel, caractérisé en ce que, si une valeur dudit registre de contrôle d'opérande scalaire (1) est détectée comme étant une valeur scalaire, la seconde opération arithmétique et les suivantes sont exécutées en utilisant la même valeur que celle d'un premier cycle qui se trouve dans le25 dit registre de pointeur (2, 3) pour exécuter les opérations arithmétiques scalaires; et en ce que ladite unité centrale de traitement (60) ne fait qu'armer ledit compteur d'opérande (9) au lieu de charger l'opérande dans ledit fichier de registre (4). 2. Système selon la revendication 1, caractérisé en ce que lesdits registres de pointeur (2, 3) comprennent au moins un registre de pointeur sensible à une demande duditregistre de contrôle d'opérande scalaire (l) porrecevoir une valeur pro35 venant duditregistre de pointeur (2, 3). 3. Système selon la revendication 2, caractérisé en ce que lesdits registres de pointeur (2, 3) comportent: un moyen de génération d'adresse pour engendrer une donnée d'adresse pour une zone de fichier dudit fichier de registre (4); et un moyen de sélection (20, 30) pour délivrer un signal de sortie provenant dudit moyen de génération d'adresse à au moins un registre de pointeur, lorsque la valeur provenant dudit registre de contrôle d'opérande scalaire (1) indique 10 une valeur vectorielle, et pour délivrer le signal de sortie provenant dudit moyen de génération d'adresse audit registre de pointeur pour seulement un premier cycle, et pour délivrer audit registre de pointeur, un signal de rétroaction provenant d'une sortie dudit re15 gistre de pointeur pour le second cycle et les cycles suivants, lorsque la valeur provenant dudit registre de contrôle d'opérande scalaire (1) indique une valeur scalaire. 4. Système selon la revendication 3, carac20 térisé en ce que ledit fichier de registre (4) comporte une première et une seconde zones de fichier qui sont utilisées alternativement; et en ce que ledit registre de pointeur comporte des premier et second registres correspondant respectivement auxdites première et se25 conde zones de fichier.