FR2752471A1 - Dispositif et procede pour traiter des interruptions de logiciel avec transfert d'argument - Google Patents
Dispositif et procede pour traiter des interruptions de logiciel avec transfert d'argument Download PDFInfo
- Publication number
- FR2752471A1 FR2752471A1 FR9710438A FR9710438A FR2752471A1 FR 2752471 A1 FR2752471 A1 FR 2752471A1 FR 9710438 A FR9710438 A FR 9710438A FR 9710438 A FR9710438 A FR 9710438A FR 2752471 A1 FR2752471 A1 FR 2752471A1
- Authority
- FR
- France
- Prior art keywords
- processor
- instruction
- software interrupt
- vector
- argument
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 12
- 238000012546 transfer Methods 0.000 title description 13
- 230000008569 process Effects 0.000 claims abstract description 9
- 239000013598 vector Substances 0.000 claims description 222
- 238000012545 processing Methods 0.000 claims description 34
- 230000015654 memory Effects 0.000 claims description 14
- 230000005055 memory storage Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000012360 testing method Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 230000001343 mnemonic effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000283074 Equus asinus Species 0.000 description 1
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 240000001987 Pyrus communis Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004092 self-diagnosis Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Abstract
Dispositif à plusieurs processeurs mutuellement couplés. Le dispositif à ordinateur comprend un ensemble de processeurs comportant un premier processeur (204) et un second processeur (206), le premier processeur comprenant une logique de commande pour exécuter une instruction d'interruption de logiciel afin d'appeler une interruption de logiciel dans le second processeur (206), l'instruction d'interruption de logiciel présentant une zone d'argument pour transférer des informations du premier processeur (204) vers le second processeur (206), le second processeur (206) comprenant une logique de commande répondant à l'interruption de logiciel pour accéder aux informations de la zone d'argument. Le dispositif sert à appeler et traiter des interruptions de logiciel dans un dispositif à plusieurs processeurs.
Description
1 2752471
La présente invention concerne un dispositif d'ordinateur à multiprocesseurs. De manière plus particulière, la présente invention concerne un dispositif et un procédé pour appeler et traiter des interruptions des logiciels dans un dispositif à multiprocesseurs. Les dispositifs d'ordinateur à multiprocesseurs typiques sont composés d'un ensemble de microprocesseurs disponibles dans le commerce. Ces microprocesseurs présentent de manière générale une fonctionnabilité limitée de support de la synchronisation de la communication entre les divers processeurs. Les communications entre les divers processeurs sont en général obtenues en utilisant des structures de bus système standard telles qu'un bus PCI, un bus ISA, un bus ESA, un bus I, et analogues. Ces structures de bus imposent un grand temps système qui ralentit la communication entre
les divers processeurs du dispositif.
En utilisant ces structures de bus standard, un logiciel s'exécutant sur un premier processeur du dispositif à multiprocesseurs rend actif l'exécution du logiciel sur un second processeur par l'intermédiaire de structures d'interruptions de matériel standard associées aux bus et aux interfaces de bus des divers processeurs. Les dispositifs de fonctionnement à logiciel commandant des multiprocesseurs de sont développés de sorte qu'un seul dispositif de fonctionnement fonctionne en coopération sur l'ensemble des processeurs. Ainsi, une structure de communication hautement efficace utiliserait des interruptions de logiciel plutôt que des interruptions de matériel pour appeler des interruptions dans un processeur coopérant. Cependant, jusqu'à présent, des interruptions de logiciel ont été mises en oeuvre sur un seul processeur, de sorte que les programmes de requête d'interruption et de traitement de l'interruption s'exécutent
sur les mêmes processeurs.
Conformément à la présente invention, une définition architecturale à multiprocesseurs prévoit qu'un programme s'exécutant sur un premier processeur interrompt un second processeur en exécutant une instruction d'interruption de
2 2752471
logiciel. L'instruction d'interruption de logiciel comprend une zone d'argument pour faire passer des informations depuis
un programme requérant l'interruption de logiciel.
L'argument, en même temps que le code opératoire, est sauvegardé dans un registre désigné pour maintenir l'argument. L'information communiquée par l'intermédiaire de l'argument est utilisée dans un mode de réalisation pour indiquer une cause de l'interruption. Dans un mode de
réalisation, les informations communiquées par l'inter-
médiaire de l'argument désignent un programme d'intervention d'interruption pour être rendu actif dans le processeur interrompu. De nombreux avantages sont obtenus par le dispositif à processeur décrit cidessus. un avantage réside en ce que l'interruption de logiciel est appelée et que l'information est passée en utilisant une instruction unique, ce qui augmente l'efficacité du programme ainsi que les performances de vitesse du dispositif à multiprocesseurs. Un autre avantage réside en ce qu'un processeur appelant l'interruption de ce logiciel désigne le programme de traitement d'interruption de logiciel spécifique à exécuter par le processeur interrompu, ce qui augmente grandement la
polyvalence de l'interface du logiciel.
Diverses autres caractéristiques de l'invention
ressortent d'ailleurs de la description détaillée qui suit.
Des formes de réalisation de l'objet de l'invention sont représentées, à titre d'exemple non limitatifs, aux
dessins annexés.
La figure 1 est un schéma synoptique de type évolué illustrant un dispositif à multiprocesseurs multimédia
conforme à un mode de réalisation de la présente invention.
La figure 2 est un schéma synoptique montrant un processeur de signaux multimédia inclu dans le dispositif à
multiprocesseurs multimédia illustré à la figure 1.
La figure 3 est un schéma synoptique qui illustre un processeur de commande du dispositif à multiprocesseurs multimédia.
3 2752471
La figure 4 est un schéma fonctionnel du processeur de commande. La figure 5 est un schéma synoptique montrant un processeur vectoriel du processeur de signaux multimédia illustré à la figure 2. La figure 6 est un schéma synoptique montrant des chemins de données d'exécution du processeur vectoriel
illustré à la figure 5.
La figure 7 est un schéma synoptique montrant une interface de coprocesseur dans le processeur de signaux
multimédia illustré à la figure 2.
La figure 8 est un schéma synoptique illustrant une architecture de micro-programmation du processeur de signaux multimédia. La figure 9 est un organigramme qui illustre des opérations concernant le traitement d'interruption et
d'exception dans le dispositif à multiprocesseurs multimédia.
En se référant à la figure 1, un schéma synoptique de type évolué illustre un dispositif à multiprocesseurs multimédia 100 comprenant un processeur central 102 et un processeur de signaux multimédia 104. Un processeur central typique 102 est un processeur x86 tel qu'un processeur PentiumTM ou Pentium ProTM. Le processeur central 102 exécute des programmes basés sur des instructions et des données maintenues dans une mémoire système 116. Le processeur central 102 communique avec le processeur de signaux multimédia 104 par l'intermédiaire d'un bus système 106 tel qu'un bus PCI. Le processeur de signaux multimédia 104 fournit une interface pour divers blocs fonctionnels tels qu'un CODEC audio et de communication 108, un convertisseur A/N vidéo 110, un convertisseur N/A vidéo 112 et une mémoire
tampon SDRAM de trame 114.
En se référant à la figure 2, un schéma synoptique montre le processeur de signaux multimédia 104 à l'intérieur du dispositif à multiprocesseurs multimédia 100. Le processeur de signaux multimédia 104 comprend une mémoire
4 2752471
centrale de processeur de signaux numériques (PSN) 202 qui
est reliée à un ensemble d'interfaces multimédia.
La mémoire centrale de PSN 202 constitue le moteur de calcul du processeur de signaux multimédia 104 et comprend un processeur de commande RISC 204, un processeur vectoriel 206, un sous système antémémoire 208, un bus rapide (FBUS) 210 et un bus entree/sortie E/O 212. Le processeur de commande 204 est un ARM7TM de 32 bits qui est conçu et fabriqué par ARM Limited, Grande Bretagne, et effectue des fonctions de traitement général tel que des opérations système à fonctionnement en temps réel, des traitements d'interruption et d'exception, une gestion de dispositifs entree/sortie, une
communication avec le processeur central 102 et analogue.
Dans un mode de réalisation, le processeur de commande 204 fonctionne à 40 MHz. Le processeur de commande 104 fournit une interface pour le processeur vectoriel 206 par
l'intermédiaire d'une interface de coprocesseur 242.
Le processeur de commande 204 effectue un traitement d'exception en réponse à des exceptions, en général des conditions anormales qui se produisent au cours du traitement des instructions, en provoquant une modification du déroulement de commandes d'exécution. Le processeur de commande 204 répond à sept types d'exception, listés dans l'ordre d'une priorité plus élevée à une priorité plus basse, comprenant une condition de remise à l'état initial, une condition de suspension d'exécution (données), FIQ, IRQ, une condition de suspension d'exécution (pré-extraction), et une interruption de piégeage d'instruction indéfinie ou de logiciel. En se référant à la figure 3, un schéma synoptique illustre le processeur de commande ARM7 204 qui est commandé par un décodeur d'instructions et une logique de commande 302. Le processeur de commande 204 communique avec le sous système antémémoire 208 par l'intermédiaire d'un registre de données d'écriture 304 et d'un registre pipeline d'instructions et de données de lecture 306. Le processeur de commande 204 inclut un registre d'adresses 308 et un
2752471
incrémenteur d'adresses 310 pour adresser des données dans un bloc de registres 312 à 31x32 bits. Le processeur de commande 204 comprend une logique arithmétique telle qu'une ALU à 32 bits 314, un décaleur à tambour 316 et un multiplicateur de Booth 318. L'interface de coprocesseur 242 est couplé directement au décodeur d'instructions et à la logique de commande 302 par l'intermédiaire de lignes de signaux nOPC, nCPI, CPA et CPB qui communiquent des codes d'opération et des arguments d'instruction entre le processeur de commande 204 et le processeur vectoriel 206 par l'intermédiaire de l'interface de coprocesseur 242. La figure 4 illustre un
schéma fonctionnel du processeur 204.
Le processeur vectoriel 206 est le moteur de traitement de signaux numériques du processeur de signaux multimédia 104. Le processeur vectoriel 206 présente une architecture d'Instruction Unique-Données Multiples et comprend un moteur RISC pipeliné qui fonctionne sur des éléments de données multiples en parallèle afin d'effectuer des fonctions de traitement de signaux tels que des Transformés de Cosinus Discrètes (TCD), un filtrage FIR, une convolution, une estimation de mouvement vidéo et d'autres opérations de traitement. Le processeur vectoriel 206 supporte une arithmétique vectorielle dans laquelle des éléments de données multiples sont actionnés en parallèle, à la manière d'un processus vectoriel, par un ensemble d'unités d'exécution vectoriel. Le processeur vectoriel 206 exécute à la fois des opérations scalaires et des opérations vectorielles-scalaires combinées. Les éléments de données multiples du processeur vectoriel 206 sont comprimés dans un vecteur à 576 bits qui est calculé à un débit de trente deux opérations arithmétiques à virgule fixe de 8/9 bits, seize opérations arithmétiques à virgule fixe de 16 bits, ou huit opérations arithmétiques à virgule fixe ou à virgule flottante par cycle (par exemple 12,5 ns). La plupart des opérations scalaires à 32 bits sont pipelinées à une cadence d'une instruction par cycle tandis que la plupart des opérations vectorielles à 576 bits sont pipelinées à une
6 2752471
cadence d'une instruction en deux cycles. Les opérations de charge et de mise en mémoire présentent une simultanéité d'exécution avec des opérations arithmétiques et sont exécutées de manière indépendante par des circuits séparés de charge et de mise en mémoire. En se référant à la figure 5, le processeur vectoriel 206 présente quatre blocs fonctionnels comprenant une unité d'extraction d'instructions 502, un décodeur et un délivreur d'instructions 504, un chemin de données d'exécution d'instructions 506 et une unité de charge et de mise en mémoire 508. L'unité d'extraction d'instructions 502 et le décodeur et le délivreur d'instructions 504 sont inclus dans le processeur vectoriel 206 pour permettre au processeur vectoriel 206 de fonctionner de manière indépendante du
processeur de commande 204.
L'unité d'extraction d'instructions 502 effectue une extraction préalable des instructions et traite des instructions de déroulement de commande telles que des
instructions de Branchement et de Saut vers Sous-programme.
L'unité d'extraction d'instructions 502 contient une file d'attente à seize entrées d'instructions d'extraction préalable pour le train d'exécution en cours et une file d'attente à huit entrées d'instructions d'extraction préalable pour le train de cible de Branchement. L'unité d'extraction d'instructions 502 reçoit jusqu'à huit instructions provenant de l'antémémoire d'instructions dans un cycle. Le décodeur et le délivreur d'instructions 504 décodent et organisent toutes les instructions exécutées par le processeur vectoriel 206. Le décodeur traite une instruction dans un cycle dans l'ordre de réception à partir de l'unité d'extraction d'instructions 502, tandis que le délivreur organise la plupart des instructions en dérangement dépendant à la fois de la ressource d'exécution et de la
disponibilité des données d'opérandes.
En se référant à la figure 6, le chemin des données d'exécution d'instructions 506 comprend un fichier registre à quatre entrées 602, huit multiplicateurs parallèles 32x32 604
7 2752471
et huit ALU à 36 bits 606. Le fichier registre 602 supporte deux opérations de lecture et deux opérations d'enregistrement par cycle. Les multiplicateurs parallèles 604 produisent jusqu'à huit multiplications à 32 bits dans un format entier ou à virgule flottante, ou seize multiplications à 16 bits ou trente deux multiplications à 8 bits par cycle. Les ALU 606 exécutent soit huit opérations ALU à 36 bits dans un format entier ou à virgule flottante, soit seize opérations ALU à 16 bits, soit encore trente deux
opérations à 8 bits par cycle (par exemple, 12,5 ns).
Le fichier registre 602 inclut un ensemble de registres
spécialisés et un ensemble de registres d'adresses de retour.
Les registres spécialisés comprennent un registre de commande vectorielle et état (VCSR), un compteur de programme vectoriel (VPC), un compteur de programme d'exception vectoriel (VEPC), un registre de source d'interruption vectoriel (VISRC), un registre de synchronisation du processeur vectoriel et de commande (VASYNC) et d'autres registres tels que divers registres de comptage, de masquage, de dépassement de capacité et de point de rupture. Le compteur de programme vectoriel (VPC) constitue l'adresse de l'instruction suivante devant être exécutée par le processeur
vectoriel 206.
Le registre de source d'interruption vectoriel (VISRC) indique les sources d'interruption vers le processeur de commande 204. Les bits appropriés du VISRC sont réglées par le matériel lors de la détection d'exceptions. Les bits sont remis à l'état initial par le logiciel avant que reprenne l'exécution du processeur vectoriel 206. Tout bit contenu dans le VISRC amène le processeur vectoriel 206 à entrer l'état VPIDLE. Si le bit d'autorisation d'interruption correspondant est réglé dans un registre VIMSK de l'interface de coprocesseur 242, une interruption IRQ est signalée au
processeur de commande 204.
Le processeur vectoriel 206 détecte des conditions d'exceptions y compris des exceptions précises et des exceptions imprécises. Les exceptions précises sont détectées
8 2752471
par le processeur vectoriel 206 et rapportées avant l'instruction en défaut. Les exceptions précises comprennent une exception de point de rupture d'adresse d'instructions, une exception de point de rupture d'adresse de données, une exception d'instruction incorrecte, une exception d'un seul chemin, une exception de dépassement de capacité d'empilage d'adresses de retour, une exception de dépassement de capacité négatif d'empilage d'adresses de retour, une exception VCINT, et une exception VCJOIN. Les exceptions imprécises du processeur vectoriel 206 sont détectées et rapportées après l'exécution d'un nombre variable d'instructions qui sont plus tard, dans l'ordre du programme vers l'instruction en défaut. Les instructions imprécises comprennent une exception d'adresse d'instructions incorrecte, une exception d'adresse de données incorrecte, une exception d'adresse de données non alignée, une exception de dépassement de capacité entière, une exception de dépassement de capacité à virgule flottante, une exception d'opérande incorrecte à virgule flottante, une exception de division par zéro à virgule flottante et une exception de
division par zéro entière.
Le registre d'instructions d'interruption vectoriel (VIINS) est mis à jour avec l'instruction VCINT ou l'instruction VCJOIN du processeur vectoriel lorsque l'instruction est exécutée pour interrompre le processeur de
commande 204.
Le processeur vectoriel 206 reconnaît deux conditions particulières comprenant une instruction d'Interruption de CoProcesseur (CPINT) qui est exécutée par le processeur de commande 204 et un Dépassement de Capacité d'Empilage de Matériel qui résulte de multiples instructions de Branchement à Sous-programme exécutées par le logiciel du processeur vectoriel 206. D'autres conditions d'interruption et d'exception créées dans le processeur de signaux multimédia
104 sont traitées par le processeur de commande 204.
Le processeur vectoriel 206 exécute une séquence de mise sous tension d'instructions lors de la remise à l'état
9 2752471
initial du système qui place le processeur vectoriel 206 dans un état inactif (VP_IDLE). Le processeur vectoriel 206 reste dans l'état VP-IDLE jusqu'à ce que le processeur de commande 204 initialise les registres du processeur vectoriel 206 et déclenche les opérations du processeur vectoriel 206 en utilisant une instruction STARTVP du jeu d'instructions du
processeur de commande.
En se référant à nouveau à la figure 2, le processeur de commande 204 déclenche les opérations du processeur vectoriel 204. De manière spécifique, le processeur de commande 206 commande les interactions avec le processeur vectoriel 206 par l'intermédiaire d'extensions vers le jeu d'instructions du processeur de commande 204. Les extensions du jeu d'instructions comprennent des opérations de données de coprocesseur tel qu'une instruction STARTVP et une instruction INTVP, des transferts de données de coprocesseur, et des transferts de registre de coprocesseur, telle qu'une instruction TESTSET et des instructions MFVP, MTVP, MFER et MTER pour les registres de lecture et d'enregistrement du
processeur vectoriel 206.
Le processeur de commande 204 déclenche le processeur
vectoriel 206 en utilisant une instruction STARTVP.
L'instruction STARTVP amène le processeur vectoriel 206 à entrer un état VP_RUN indiquant que le processeur vectoriel 206 est en train d'exécuter une opération. Le STARTVP ne fait rien si le processeur vectoriel 206 est déjà dans l'état VP_RUN. Aucun résultat n'est communiqué au processeur de commande 204 en réponse à l'instruction STARTVP et le processeur de commande 204 continue l'exécution à la suite de STARTVP. L'instruction STARTVP est appelée à la suite d'une instruction de format d'opérations de données de coprocesseur (CDP) qui règle un code de condition. L'instruction STARTVP est appelée en utilisant la syntaxe d'assembleur suivante: CDP {cond} p7,0, cO,cO,cO STARTVP {cond}
2752471
o les conditions comprennent (eg) non égal (ne), jeu de report (jr), effacer report (er), moins (mi), plus (pl), et d'autres conditions. STARTVP n'est exécuté que si la condition est vérifiée. Le processeur de commande 204 utilise l'instruction STARTVP pour signaler au processeur vectoriel 206 une requête de démarrer l'exécution et efface automatiquement le bit d'interruption du processeur vectoriel (VISRC<vcp>) et le bit de jonction du processeur vectoriel (VISRCVIP>) du registre de la source d'interruption vectorielle (VISRC). Lors de l'appel de STARTVP, le processeur de commande 204 continue à exécuter l'instruction suivante sans attendre que le processeur vectoriel 206 commence à exécuter une opération. L'état du processeur vectoriel 206 doit être initialisé comme on le désire avant que STARTVP soit appelé. L'instruction STARTVP n'a aucun effet si le processeur vectoriel 206 est déjà dans l'état VP_RUN. Une exception de processeur vectoriel non disponible
peut se produire pendant une instruction STARTVP.
Le processeur de commande 204 arrête le processeur vectoriel 206 en utilisant une instruction de processeur vectoriel d'interruption (INTVP). L'instruction INTVP amène le processeur vectoriel 206 à entrer un état VPIDLE indiquant que le processeur vectoriel 206 n'est pas en train d'exécuter une opération. INTVP ne fait rien si le processeur
vectoriel 206 n'est pas en train d'exécuter une opération.
Aucun résultat n'est communiqué au processeur vectoriel 204 en réponse à l'instruction INTVP, et le processeur de commande 204 continue l'exécution après INTVP. L'instruction INTVP est appelée après une instruction de format d'opération de données de coprocesseur (CDP) qui règle un code de condition. L'instruction INTVP n'est exécutée que si le condition est vérifiée. Ainsi, l'instruction INTVP est appelée en utilisant la syntaxe d'assembleur suivante: CDP{cond} p7,1,cO,cO,cO INTVP{cond} il 2752471 o les conditions comprennent égal (eg), non égal (ne), jeu de report (jr), effacer report (er), moins (mi), plus (pl), et d'autres conditions. Le processeur de commande 204 utilise l'instruction INTVP pour signaler au processeur vectoriel 206 une requête d'arrêter l'exécution. Lors de l'appel de INTVP, le processeur de commande 204 continue à exécuter l'instruction suivante sans attendre que le processeur vectoriel 206 s'arrête. Un déplacement à partir de l'instruction de registre étendu (MFER) est utilisé de manière typique à la suite de l'instruction INTVP pour
déterminer si le processeur vectoriel 206 s'est arrêté.
L'instruction INTVP n'a aucun effet si le processeur vectoriel 206 est déjà dans l'état VP_IDLE. Une exception de processeur vectoriel non disponible peut se produire au cours
d'une instruction INTVP.
Le processeur de commande 204 essaie l'état de fonctionnement du processeur vectoriel 206, y compris un essai de synchronisation, en utilisation une instruction d'essai et de réglage (TESTSET). TESTSET lit un registre étendu d'utilisateur et règle le bit 30 du registre à 1, en fournissant une synchronisation de type producteur/ utilisateur entre le processeur vectoriel 206 et le processeur de commande 204. TESTSET amène le processeur de commande 204 à être bloqué jusqu'à ce que le registre soit transféré. Le processeur de commande 204 requiert l'instruction TESTET suivant une instruction d'opérations de transfert de registre de coprocesseur (MRC, MCR) qui règle un code de condition. L'instruction TESTSET n'est exécutée que si la condition est vérifiée. L'instruction TESTSET est appelée en utilisant la syntaxe d'assembleur suivante: MRC{cond} p7,0,Rd,cO,cER,0 TESTSET{cond} Rd, RNAME o les conditions comprennent égal (eg), non égal (ne), jeu de report (jr), effacer report (er), moins (mi), plus (pl), et d'autres conditions. Rd est un registre du processeur de
12 2752471
commande 204. ER est un registre étendu de l'interface de coprocesseur 242 et RNAME se réfère à une mnémonique de registre architecturellement spécifiée, telle que UER1 ou
VASYNC.
D'autres instructions du processeur de commande transfèrent un registre scalaire/usage spécialisé du processeur vectoriel vers un registre de processeur de commande. Encore d'autres instructions du processeur de commande transfèrent un registre du processeur de commande
vers un registre scalaire/spécialisé du processeur vectoriel.
Par exemple, une instruction MFVP déplace des données du registre scalaire/spécialisé du processeur vectoriel vers
un registre général du processeur de commande 204.
L'instruction MFVP est appelée à la suite d'une instruction d'opérations de transfert du registre de coprocesseur (MRC, MCR) qui règle un code de condition. L'instruction MFVP n'est exécutée que si la condition est vérifiée. L'instruction MFVP est appelée en utilisant la syntaxe d'assembleur suivante: MRC{cond} p7,Rd,CRn, CRm,0 MTVP{cond} Rd,RNAME o les conditions comprennent égal (eg), non égal (ne), jeu de report (jr), effacer report (er), moins (mi), plus (pl) et d'autres conditions. Le code de numéro de coprocesseur p7 désigne le processeur vectoriel 206. Rd est un registre du processeur de commande 204. CRn et CRm sont des registres scalaire/spécialisé du processeur vectoriel 206. RNAME se réfère à une mnémonique de registre architecturellement spécifiée telle que SPO ou VCSR. Le processeur de commande 204 appelle l'instruction MFVP pour déplacer des données des registres scalaire/spécialisé CRn et CRm du processeur
vectoriel 206 vers le registre Rd du processeur de commande.
Une exception de processeur vectoriel indisponible peut se
produire pendant une instruction NFVP.
Un déplacement vers l'instruction du processeur vectoriel (MTVP) déplace les données vers un registre
13 2752471
scalaire/spécialisé du processeur vectoriel depuis un registre général du processeur de commande 204. L'instruction MTVP est appelée à la suite d'une instruction d'opérations de transfert de registre de coprocesseur (MRC, MCR) qui règle un code de condition. L'instruction MTVP n'est exécutée que si la condition est vérifiée. L'instruction MTVP est appelée en utilisant la syntaxe d'assembleur suivante: MRC{cond} p7,1,Rd,CRn,CRm,O MTVP{cond} RNAME, Rd o les conditions comprennent égal (eg), non égal (ne), jeu de report (jr), effacer report (er), moins (mi), plus (pl), et d'autres conditions. Le code de numéro de coprocesseur p7 désigne le processeur vectoriel 206. Rd est un registre du processeur de commande 204. CRn et CRm sont des registres scalaire/spécialisé du processeur vectoriel 206. RNAME se réfère à une mnémonique de registre architecturellement spécifiée telle que SPO ou VCSR. Le processeur de commande 204 appelle l'instruction MTVP pour déplacer des données du registre Rd du processeur de commande vers les registres
scalaire/spécialisé CRn et CRm du processeur vectoriel 206.
Une exception de processeur vectoriel indisponible peut se
produire pendant une instruction MTVP.
MFVP et MTVP ne doivent être exécutés que lorsque le
processeur vectoriel 206 se trouve dans un état VP_IDLE.
Aucune communication directe n'a lieu entre le processeur de commande 204 et le processeur vectoriel 206. Chaque transfert utilisé un stockage intermédiaire qui est fourni, dans le mode de réalisation illustré, par l'interface de coprocesseur 242. Les instructions MFVP et MTVP permettent au processeur de commande 204 de librement lire et enregistrer des registres de commande et d'état à l'intérieur du processeur vectoriel 206. Le processeur de commande 204 commande ainsi le fonctionnement du processeur vectoriel 206 pendant l'exécution du système opératoire ou des programmes
14 2752471
d'application. Les instructions MFVP et MTVP ne doivent être exécutées que lorsque le processeur vectoriel 206 est dans un état VP_IDLE parce que le processeur de commande 204 a accès aux registres de commande et d'état du processeur vectoriel 206 indépendamment de l'exécution du processeur vectoriel 206 de sorte que les mêmes registres de commande et d'état peuvent être accédés par le processeur de commande 204 et le
processeur vectoriel 206 en parallèle.
Un déplacement vers l'instruction de registre étendu (MTER) déplace des données depuis le processeur de commande 204 jusqu'à un registre étendu spécifié. L'instruction MTER est appelée à la suite d'une instruction d'opérations de transfert de registre de coprocesseur (MRC, MCR) qui règle un code de condition. L'instruction MTER n'est exécutée que si la condition est vérifiée. L'instruction MTER est appelée en utilisant la syntaxe d'assembleur suivante: MRC{cond} p7,1,Rd,cP,CER,0 MTER{cond} RNAME,Rd o les conditions comprennent égal (eg), non égal (ne), jeu de report (jr), effacer report (er), moins (mi), plus (pl), et d'autres conditions. Le code de numéro de coprocesseur p7 désigne le processeur vectoriel 206. Rd est un registre du processeur de commande 204. P désigne un coprocesseur choisi et ER désigne un registre étendu du coprocesseur P. RNAME se réfère à une mémonique de registre architecturellement spécifiée telle que PER0 ou CSR. Le processeur de commande 204 appelle l'instructionMTER pour déplacer des données du registre Rd du processeur de commande vers le registre étendu désigné ER du coprocesseur désigné P. Une violation de protection pendant une tentative d'accès vers le coprocesseur
désigné peut se produire pendant une instruction MTER.
Un déplacement depuis l'instruction de registre étendu (MFER) déplace les données d'un registre étendu d'un coprocesseur désigné vers un registre du coprocesseur de commande 204. L'instruction MFER est appelée ensuite vers une
2752471
instruction d'opérations de transfert de registre de
coprocesseur (MRC, MCR) qui règle un code de condition.
L'instruction MFER n'est exécutée que si la condition est vérifiée. L'instruction MFER est appelée en utilisant la syntaxe d'assembleur suivante: MRC{cond} p7,2,Rd,cP,cER,0 MTER{cond} Rd, RNAME o les conditions comprennent égal (eg), non égal (ne), jeu de report (jr), effacer report (er), moins (mi), plus (pl), et d'autres conditions. Le code de numéro de coprocesseur p7 désigne le processeur vectoriel 206. Rd est un registre du processeur de commande 204. P désigne un coprocesseur choisi et ER désigne un registre étendu du coprocesseur P. RNAME se réfère à une mnémonique de registre architecturellement spécifiée telle que PERO ou CSR. Le processeur de commande 204 appelle l'instruction MFER pour déplacer des données depuis le registre étendu désigné ER du coprocesseur désigné P vers le registre Rd. Une violation de protection pendant une tentative d'accès vers le coprocesseur désigné peut se
produire pendant une instruction MTER.
Un schéma synoptique de l'interface de coprocesseur 242 est montré à la figure 7. L'interface de coprocesseur 242 complète la fonctionnabilité du processeur de commande 204 en ajoutant des registres et des fonctions logiques pour mettre en oeuvre des instructions qui étendent le jeu d'instructions du processeur de commande 204. L'interface de coprocesseur 204 comprend des registres pour communiquer entre le
processeur de commande 204 et le processeur vectoriel 206.
L'interface de coprocesseur 242 sert également de tampon pour communiquer des données et des signaux entre des structures qui fonctionnent à des cadences d'horloge différentes. Dans un mode de réalisation, le processeur de commande focntionne à une cadence de 40 MHz et le processeur vectoriel 206
fonctionne à 80 MHz.
16 2752471
L'interface de coprocesseur 242 comprend un décodeur 702, une machine d'état 704, un bloc de registres étendus privilégiés 706 et un bloc de registres étendus d'utilisateurs 708. Les registres du bloc de registre étendu privilégiés 706 et du bloc de registres étendus d'utlisateurs 708 peuvent être lus et enregistrés par le processeur de commande 204 et par le processeur vectoriel 206. Le décodeur 702 décode des instructions du jeu d'instructions du processeur de commande. Le jeu d'instructions du processeur de commande comprend des instructions qui peuvent être exécutées sur le processeur de commande 204 et des instructions étendues qui ne sont pas exécutées par le processeur de commande 204 mais sont au lieu de cela exécutées par l'interface de coprocesseur 204 pour mettre en oeuvre une fonctionnalité de coprocesseur spécial. Le décodeur 702 décode des instructions du processeur de commande, détecte des instructions étendues et fournit des instructions d'extension détectées à la machine d'état 704 en vue d'une exécution. La machine d'état 704 inclut une logique
pour mettre en oeuvre les instructions d'extension.
Le bloc de registres étendus privilégiés 706 présente des registres étendus qui sont accédés au cours de l'exécution d'instructions spéciales par ie processeur de commande 204. Le bloc de registres étendus privilégiés 706 comprend un registre de commande (CTR), un registre de version de processeur (PVR), un registre de masque d'interruption vectorielle (VIMSK), un registre de point de rupture d'adresse d'instructions (AIABR), un registre de point de rupture d'adresse de données (ADABR), un registre de zone de travail (SPREG) et un registre d'état (STR). Le bloc de registres étendus privilégiés 706 est utilisé principalement pour une synchronisation du processeur de
commande et du processeur vectoriel 206.
Dans un mode de réalisation, les registres d'un bloc de registres étendus d'utilisateurs 708 ne présentent qu'un seul bit, correspondant au bit <30>, de sorte que des bits <31> et <29:0> sont lus comme étant 0. Le bloc de registres étendus
17 2752471
d'utilisateurs 708 comprend un indicateur d'état du processeur vectoriel (VPSTATE) et un indicateur de synchronisation du processeur vectoriel et du processeur de commande (VASYNC). VPSTATE indique que le processeur vectoriel 206 est dans l'état VP_RUN quand le bit <30> est réglé. Lorsque le bit <30> est remis à l'état initial, le processeur vectoriel 206 est dans l'état VP_IDLE et est arrêté avec le compteur de programme adressant l'instruction suivante à exécuter. VASYNC permet une synchronisation producteur-utilisateur entre le processeur vectoriel 206 et le processeur de commande 204. L'indicateur VASYNC est positionné ou remis à l'état initial par l'exécution d'une instruction VMOD dans le processeur vectoriel 206. VASYNC est également positionné ou remis à l'état initial par un processus du processeur de commande 204 utilisant un déplacement depuis le registre étendu (MFER), une instruction de déplacement vers le registre étendu (MTER) ou
l'instruction TESTEST.
Lors de la remise sous tension, tous les bits du bloc de registres étendus privilégiés 706 et du bloc de registres étendus d'utilisateurs 708 sont remis à l'état initial de
sorte que le processeur vectoriel 206 est inactif.
Le registre de masque d'interruption vectoriel (VIMSK) commande le rapport des exceptions se produisant à l'intérieur du processeur vectoriel 206 vers le processeur de commande 204. Les bits du VIMSK lorsqu'ils sont réglés en même temps qu'un bit correspondant du registre de source d'interruption vectoriel (VISRC), permettent à l'exception d'interrompre le processeur de commande 204. Le registre VISRC comprend un ensemble de bits indiquant quelle est la source d'un ensemble d'exceptions et d'interruptions. Les bits du registre VIMSK comprennent une autorisation d'Interruption de Point de Rupture d'Adresse de Données (DABE), une autorisation d'interruption de point de rupture d'adresse d'instruction (IABE), et une autorisation d'interruption d'un seul chemin (SSTPE). Le VIMSK commande en outre des bits d'autorisation d'interruption de dépassement
18 2752471
de capacité (FOVE), d'opérande incorrecte (FINVE) et de division par zéro (FDIVE), à virgule flottante, ainsi que les bits d'autorisation d'interruption de dépassement de capacité (IOVE) et de division par zéro (IDIVE), entier. Le VIMSK commande également une autorisation d'interruption VCINT (VIE), une autorisation d'interruption VCJOIN (VJE) et une
autorisation de commutation de contexte (CSE).
Le processeur vectoriel 206 interagit avec le processeur de commande 204 en envoyant des signaux au processeur de commande 204. De manière spécifique, le processeur vectoriel 206 comprend une logique fournissant un accès de lecture et un accès d'enregistrement au processeur de commande 204. Le processeur vectoriel 206, en utilisant une instruction VCJOIN et une instruction VCINT, envoie des signaux vers un processeur de commande 204 de manière indirecte par l'intermédiaire de registres étendus d'utilisateurs en indiquant que le processeur vectoriel 206 a exécuté une instruction de synchronisation. Le processeur vectoriel 206 envoie aussi directement des signaux au processeur de commande 204 par l'intermédiaire d'une requête d'interruption indiquant que le processeur vectoriel 206 a arrêté l'exécution et a entré l'état VPIDLE. Le processeur vectoriel 206 exécute deux instructions pour envoyer des signaux au processeur de commande 204. L'instruction VCJOIN (VCJOIN n) se réunit conditionnellement au processeur de commande 204 et amène le processeur vectoriel 206 à s'arrêter et à entrer l'état VPIDLE. Un compteur de programme (non représenté) du processeur vectoriel 206 adresse l'instruction après l'instruction VCJOIN. L'instruction VCINT (VCINT n) interrompt de manière conditionnelle le processeur de commande 204, en amenant le processeur vectoriel 206 à s'arrêter et à entrer l'état VPIDLE. Le compteur de programme du processeur vectoriel 206 adresse l'instruction après l'instruction VCINT. Les instructions VCINT et VCJOIN sont des instructions exécutées par le processeur vectoriel 204 qui sont classées en classe d'écoulement de commande. Les instructions d'écoulement de commande comprennent diverses
19 2752471
instructions d'écoulement de commande comprennent diverses instructions conditionnelles telles que des instructions de branchement, de décrément et de branchement, de saut, de retour de sous-programme, de commutation et de barrière de contexte. Un ensemble d'instructions en cours d'exécution sur un processeur vectoriel 206, comprenant une instruction de commutation de contexte conditionnel (VCCS), une instruction d'interruption conditionnelle (VCINT) et une instruction de liaison conditionnelle (VCJOIN), sont utilisés pour traiter
des interruptions et des exceptions.
L'instruction d'interruption conditionnelle (VCINT), si elle est autorisée, arrête l'exécution du processeur
vectoriel 206 et interrompt le processeur de commande 204.
L'instruction VCINT peut créer une interruption VCINT. La syntaxe d'assembleur de l'instruction d'interruption conditionnelle (VCINT) est comme suit: VCINT.cond #ICODE o cond est un code de condition définie et #ICODE est une valeur à 23 bits qui identifie une constante devant être utilisée par le processeur de commande 204. Le code de condition (cond) est choisi à partir des codes de condition: inconditionnel (in), inférieur à (ia), égal à (ea), inférieur ou égal à (ie), plus grand que (pq), non égal à (ne), supérieur ou égal à (sa) et dépassement de capacité (dc). L'opération VCINT est décrite par un pseudo-code comme suit: Si ((cond==VCSR[SO, GT, EQ, LT]) I (cond==in)) { VISRC<vip> = 1; VIINS = [instruction VCINT.cond #ICODE];
VEPC = VPC;
si (VIMSK<vie≥=1) int du processeur de commande de signaux;
VPSTATE = VP IDLE;
2752471
} autrement VPC = VPC + 4; En conséquence, si le registre de commande vectoriel et d'état (VCSR) est en concordance avec le code de condition ou que le code de condition est inconditionnel, alors le bit d'interruption vectoriel du registre de la source d'interruption vectoriel (VISRC) est réglé, le registre d'instruction d'interruption vectoriel (VIINS) est chargé avec l'instruction identifiée par le paramètre #ICODE, et le compteur du programme d'exception vectoriel (VEPC) est chargé avec la valeur provenant du compteur de programme du processeur vectoriel 206. Le registre d'instructions d'interruption vectoriel (VIINS) est chargé avec un identificateur de l'instruction VCINT, la condition, et l'argument #ICODE pour appliquer au processeur de commande 204 une information concernant: (1) la raison pour laquelle le processeur vectoriel 206 est en cours d'interruption du processeur de contrôle 204 et (2) une valeur constante devant utilisée par le processeur de commande 204 en exécutant le programme de service d'interruption logiciel. Si le bit d'autorisation d'interruption du processeur vectoriel du registre VIMSK est réglé, alors le processeur vectoriel 206 envoie un signal d'interruption (IRQ) au processeur de commande 204. L'état (VP_STATE) du processeur vectoreil 206 est réglé à l'état inactif. Cependant, si le code de condition n'est pas inconditionnel et que le code de condition n'est pas en concordance avec le registre de commande vectoreil d'état (VCSR), alors l'instruction VCINT est ignorée à l'exception que le compteur du programme est
incrémenté de quatre.
La liaison conditionnelle avec l'instruction de tâche du processeur de commande (VCJOIN), si elle est autorisée, arrête l'exécution du processeur vectoriel 206 et réunit
l'opération de tâche dans le processeur de commande 204.
L'instruction VCJOIN peut créer une interruption VCJOIN. La syntaxe d'assembleur de l'instruction d'interruption conditionnelle (VCJOIN) est comme suit:
21 2752471
VCJOIN.cond #Offset o cond est un code de condition défini et #Offset est une valeur à 23 bits qui identifie le décalage par rapport à l'emplacement de l'instruction VCJOIN dans la mémoire du processeur vectoriel 206 d'un sous-programme du processeur vectoriel qui doit être ensuite rendu actif. L'instruction VCJOIN rend actif un sous-programme de service d'interruption qui s'exécute dans le processeur de commande 204. Le processeur de commande 204 sauvegarde le paramètre #Offset et
effectue un programme de service d'interruption défini.
Pendant que le programme de service d'interruption est terminé, le processeur de commande 204 effectue des opérations définies et règle des registres du processeur vectoriel 206 en vue d'un traitement ultérieur. A la fin du programme de service d'interruption, le processeur de commande 204 démarre le processeur vectoriel 206 en utilisant une instruction STARTVP et désigne l'adresse de sauvegarde #Offset en tant qu'emplacement d'un sous-programme au niveau duquel le processeur vectoriel 206 doit commencer l'exécution. L'argument décalé est utilisé par le processeur de commande 204 à la manière d'une instruction de branchement pour diriger la séquence d'instructions exécutée par le processeur de commande 204. Un exemple de l'utilisation de l'instruction VCJOIN est donné dans la demande de brevet US 08/699 280 intitulée "EFFICIENT CONTEXT SAVING AND RESTORING IN MULTIPROCESSORS", S.P. Song et al., laquelle est ici incorporée en son ensemble à titre de référence. Le code de condition (cond) est choisi à partir des codes de condition: inconditionnel (ea), inférieur à (ia), égal à (ea), inférieur ou égal à (ie), plus grand que (pq), non égal à (ne),
supérieur ou égal à (sa) et dépassement de capacité (dc).
L'opération VCJOIN est décrite par un pseudo-code comme suit: Si ((cond==VCSR[SO,GT,EQ,LT]) I (cond==in)) { {VISRC<vjp> = 1; VIINS = [instruction VCJOIN.cond #Offset];
22 2752471
VEPC = VPC;
si (VIMSK<vje> ==1) int de processeur de commande de signaux;
VPSTATE = VPIDLE;
} autrement VPC = VPC+4; En conséquence, si le registre de commande vectoriel et d'état (VCSR) est en concordance avec le code de condition ou que le code de condition est inconditionnel, alors le bit de liaison vectoriel du registre de la source d'interruption vectoriel (VISRC) est réglé, le registre d'instruction d'interruption vectoriel (VIINS) est chargé avec l'instruction identifiée par le paramètre #Offset, et le compteur du programme d'exception vectoriel (VEPC) est chargé avec la valeur provenant du compteur de programme du processeur vectoriel 206. Le registre d'instructions d'interruption vectoriel (VIINS) est chargé avec un identificateur de l'instruction VCJOIN, la condition et l'argument #Offset pour appliquer au processeur de commande 204 une information concernant (1) la raison pour laquelle le processeur vectoriel 206 est en cours d'interruption du processeur de commande 204 et (2) le décalage par rapport à une adresse ou un label de la mémoire d'instructions du processeur vectoriel 206 indiquant un décalage de branchement pour diriger l'écoulement de la séquence d'instructions du programme du processeur vectoriel lorsque le processeur de commande 204 rend à nouveau actif le processeur vectoriel 206. L'utilisation d'une souplesse de décalage de branchement permet au processeur vectoriel 206 de diriger la séquence de commande exécutée par le processeur de commande 204 en réponse à une requête d'interruption. Si le bit d'autorisation de liaison du processeur vectoriel du registre VIMSK est réglé, alors le processeur vectoriel 206 envoie un
signal d'interruption (IRQ) au processeur de commande 204.
L'état (VP_STATE) du processeur vectoriel 206 est réglé à l'état inactif. Cependant, si le code de condition n'est pas
23 2752471
inconditionnel et que le code de commande n'est pas en concordance avec le registre de commande vectoriel et d'état (VCSR), alors l'instruction VCJOIN est ignorée à l'exception
que le compteur de programme est incrémenté de quatre.
L'instruction de commutation de contexte conditionnel
(VCCS) effectue un saut immédiat (non retardé) vers un sous-
programme de commutation de contexte si le bit d'autorisation de commutation de contexte du registre VIMSK, VIMSK <cse>, est vérifié. Si VIMSK <cse> est vérifié, une adresse de retour dans VPC+4 est sauvegardée sur la pile d'adresses de retour. S'il n'en est pas ainsi, l'exception se poursuit à l'adresse VPC+4. L'instruction VCCS peut créer une exception
de dépassement de capacité de la pile d'adresses de retour.
La syntaxe d'assembleur de l'instruction de commutation de contexte conditionnel (VCCS) est comme suit: VCCS #Offset o #Offset est une valeur à 23 bits qui identifie
l'emplacement du sous-programme de commutation de contexte.
L'opération VCCS est décrite par un pseudo-code comme suit: Si VIMSK<cse> == 1) { si (VSP<4> > 15) {
VISRC <RASO> = 1;
processeur de commande de signaux avec RASO;
VPSTATE = VPIDLE;
} autrement {
RSTACK[VSP<3:0>]=VPC+4;
VSP<4:0> = VSP<4:0>+1;
VPC + VPC + 4;
} autrement VPC = VPC+4; En conséquence, si le bit d'autorisation de commutation de contexte du registre VIMSK est réglé, l'indicateur de pile
de retour (VSP) est essayé en vue du débordement de capacité.
Si une condition de débordement de capacité s'est produite,
24 2752471
le bit de dépassement de capacité de la pile d'adresses de retour du registre de la source d'interruption vectoriel (VISRC) est réglé, le processeur vectoriel 206 envoie une exception de dépassement de capacité de la pile d'adresses de retour au processeur de commande 204 et l'état (VP_STATE) du processeur vectoriel 206 est réglé à l'état inactif. Si une condition de dépassement de capacité ne s'est pas produite, alors le compteur de programme incrémenté de quatre est poussé sur la pile d'adresses de retour (RSTACK), l'indicateur de pile de retour (VSP) est incrémenté de 1 et le compteur de programme (VPC) du processeur vectoriel 206 est incrémenté par le produit étendu du signe de #Offset fois quatre. Si le bit d'autorisation de commutation de contexte du registre VIMSK n'est pas réglé, alors l'instruction VCCS est ignorée à l'exception que le compteur de programme est
incrémenté de quatre.
Le processeur de commande 204 et le processeur vectoriel 206 fonctionnent de manière indépendante, en parallèle, une fois que les opérations du processeur vectoriel 206 commencent à être exécutées après l'exécution
de l'instruction STARTVP par le processeur de commande 204.
Les opérations indépendantes et parallèles du processeur de commande 204 et du processeur vectoriel 206 sont synchronisées en utilisant des instructions de commande spéciales. Le support de l'exécution concurrente de deux pas: un sur le processeur de commande 204 et un autre sur le processeur vectoriel 206, augmente de manière avantageuse la vitesse d'exécution de la tâche et facilite l'adaptation du fonctionnement du code d'instruction sur le processeur de commande 204 à une variété de processeurs de la famille MSP de processeurs. Dans le mode de réalisation illustré, le
processeur vectoriel 206 fonctionne à une cadence de 80 MHz.
En se référant à nouveau à la figure 2, le sous système d'antémémoire 208 comprend une antémémoire de données 214 (par exemple, 5 kilo- octets), une antémémoire d'instructions (par exemple, 2 kilo-octets), et une ROM d'antémémoire 218 (par exemple 16 kilo-octets) et fonctionne de manière typique
2752471
à la même vitesse que le processeur vectoriel 206 (80 MHz).
Dans un mode de réalisation, le sous sytème d'antémémoire 208 comprend une capacité de stockage de 1 kilo-octet d'instructions et une capacité de stockage de 1 kilo-octet de données pour le processeur de commande 204, 1 kilo-octet de capacité de stockage d'instruction et 4 kilo-octets de capacité de stockage de données pour le processeur vectoriel 206, et un partage de 16 kilo-octets de ROM d'instructions intégré et d'antémémoire de données pour l'ensemble du processeur de commande 204 et du processeur vectoriel 206. Le sous système d'antémémoire 208 fournit une interface au processeur de commande 204 par l'intermédiaire de bus de données à 32 bits et fournit une interface pour le processeur vectoriel 206 par l'intermédiaire de bus de données à 128 bits. La ROM d'antémémoire 218 comprend un logiciel
d'initialisation de uROM, un logiciel de diagnostic d'auto-
test, un logiciel de gestion de divers systèmes, des programmes de bibliothèque et une antémémooire pour des instructions choisies et des constantes de données. De manière spécifique, la ROM d'antémémoire 218 comprend un organe de traitement d'exception d'instructions et des organes de traitement d'interruption de dispositifs entrée et sortie 0,1, 2,3 pour le processeur de commande 204. La ROM d'antémémoire 218 comprend également un organe de traitement d'interruption du processeur vectoriel et un organe de traitement d'exception du point de rupture du processeur
vectoriel qui s'exécutent dans le processeur de commande 204.
Le FBUS 210 fournit une interface pour un ensemble de périphériques FBUS comprenant, par exemple, une interface de bus PCI à 32 bits 220, un organe de commande de mémoire SDRAM à 64 bits, un organe de commande DMA à 8 canaux 224, un bloc logique ASIC d'utilisateur 226 et un organe de déplacement de données mémoire 228. L'interface de bus PCI 220 fournit une interface pour le bus système 106 et fonctionne, par exemple, à 33 MHz. Le bloc logique ASIC d'utilisateur 226 fournit une logique de commande pour mettre en oeuvre une fonctionnabilité adaptée aux besoins particuliers de
26 2752471
l'utilisateur, si cela est désiré. Le bloc logique ASIC d'utilisateur 226, dans un mode de réalisation, fournit 10 kiloportes comprenant des interfaces à divers dispositifs analogiques CODEC et d'entrée/sortie (E/S) spécifiques d'utilisateur. L'organe de déplacement de données mémoire 228 transfère des données DMA depuis le processeur central 102 à la mémoire STRAM 230 qui est locale par rapport au processeur
de signaux multimédia 104.
Le bus d'entrée/sortie (E/O) 212 fournit une interface pour un ensemble de dispositifs à bus E/O comprenant, par exemple, un processeur de train de bits 232, une ligne série UART 224, un circuit à rythmeurs 236, un organe de commande d'interruption 238, et un registre spécial 240. Le processeur de train de bits 232 traite le train de bits vidéo. Le registre spécial 240 est utilisé pour un traitement
d'initialisation et d'interruption commandé par logiciel.
En se référant à la figure 8, un schéma synoptique illustre l'architecture de logiciel et de micro-programmation 800 du processeur de signaux multimédia 104 comprenant un logiciel d'éléments de système MPS 802 s'exécutant sur le processeur de signaux multimédia 104 et un logiciel de système d'applications PC et de fonctionnement 808 s'exécutant sur le processeur central 102. Le processeur de
signaux multimédia 104 est commandé par une micro-
programmation comprenant une bibliothèque de micro-
programmation à vecteur DSP 804 qui s'exécute sur le processeur vectoriel 206 et un bloc de fonctions de gestion
système 806 qui s'exécute sur le processeur de commande 204.
La bibliothèque de micro-programmation à vecteur DSP 804 et le bloc de fonctions de gestion système 806 sont inclus dans le logiciel des éléments de système MSP 802. L'architecture 800 sépare de manière avantageuse la fonctionnalité de traitement des signaux des opérations de commande d'application centrale afin de simplifier le développement du logiciel, améliorer la gestion de la conception du logiciel et réduire les frais de développement et d'entretien des applications.
27 2752471
Le logiciel des éléments de système MSP 802 s'exécute exclusivement sur le processeur de commande 204 et comprend une partie résidante à temps réel MSP 810, un module de bibliothèque multimédia 812, le bloc de fonctions de gestion de système 806 et la bibliothèque de micro- programmation à vecteur DSP 804. La partie résidante à temps réel MSP 810 est de manière typique responsable pour fournir une interface pour le processeur central 102, la gestion de ressource, le traitement du dispositif E/O et la plupart des traitements d'interruption et d'exception. La partie résidante à temps réel MSP 810 comprend un logiciel pour fournir une interface pour des logiciels WindowsTM et Windows NTTM s'exécutant dans le processeur central 102. La partie résidante à temps réel MSP 810 comprend également un logiciel pour sélectionner et télécharger un micro-programmation d'application choisie depuis le processeur central 102, un logiciel pour organiser des tâches devant être exécutées dans le processeur de commande 204 et dans le processeur vectoriel 206, et un logiciel permettant de gérer des ressources système du processeur de signaux multimédia 104 comprenant des dispositifs à mémoire E/S. La partie résidante à temps réel MSP 810 comprend un logiciel pour synchroniser une communication entre des tâches du processeur de signaux multimédia 104 et un logiciel pour rapporter des conditions
reliées au MSP d'interruption d'exception et d'état.
La bibliothèque de micro-programmation à vecteur DSP effectue sensiblement toutes les fonctions de traitement de signaux numériques. La bibliothèque de micro-programmation à vecteur DSP 804 commande également des interruptions spéciales spécifiques telles qu'une Interruption de Coprocesseur qui est émise par le processeur de commande 204 vers le processeur vectoriel 206, ou une Exception de Dépassement de Capacité de Pile de Matériel, qui est créée à
l'intérieur du processeur vectoriel 206.
Le module de bibliothèque multimédia 812 effectue des fonctions de traitement de communication comprenant une communication de données, une communication vidéo et audio
28 2752471
MPEG, une communication de codage et de synthèse de parole, une communication audio compatible SoundBlasterTM, et analogue. La partie résidante à temps réel MPS 810 est un système de fonctionnement en temps réel, robuste, à multitache, et pré- vidé comprenant des perfectionnements qui facilitent des applications multimédia s'exécutant sur le
processeur de signaux multimédia 104.
Le logiciel d'applications PC et de système de fonctionnement 808 s'exécutant dans le processeur central 102 commande le processeur de signaux multimédia 104 en lisant et en enregistrant des registres de commande et d'état MSP par l'intermédiaire du bus système 106, et en enregistrant vers des structures à données partagées qui sont résidentes pour la mémoire système 116 et résidentes pour le processeur de
signaux multimédia 104.
* L'exécution du programme MSP commence avec le processeur de commande 204 qui exécute un premier train d'exécution. Le processeur de commande 204 peut lancer un second train d'exécution indépendant dans le processeur vectoriel 206. Les opérations du processeur de commande 204 et du processeur vectoriel 206 sont synchronisées par l'intermédiaire d'instructions de coprocesseur spécifiques qui fonctionnent dans leprocesseur de commande 204, comprenant des instructions STARTVP, INTVP et TESTVP, ainsi que des instructions spéciales s'exécutant dans le processeur vectoriel 206, comprenant des instructions VJOIN et VINT. Un transfert de données entre le processeur de commande 204 et le processeur vectoriel 206 est effectué en utilisant des instructions de déplacement de données exécutées dans le
processeur de commande 204.
Après mise sous tension, le processeur de signaux multimédia 104 entre de manière automatique une séquence d'auto-essai de manière à essayer pleinement la fonctionnabilité. La séquence d'auto- essai comprend l'initialisation de tous les registres du processeur de
signaux multimédia 104 et l'exécution d'un diagnostic d'auto-
essai sur puce pour vérifier la fonctionnabilité des éléments
29 2752471
du processeur de signaux multimédia 104. A la fin de la séquence d'autoessai, le processeur de signaux multimédia 104 exécute un logiciel d'éléments de système MSP 802 qui charge et exécute un logiciel d'initialisation MSP et charge et exécute la partie résidente à temps réel MSP 810. Le processeur de signaux multimédia 104 supporte trois types d'opération de remise à l'état initial comprenant une remise à l'Etat Initial du système à commande par matériel par l'intermédiaire du bus PCI, une remise à l'état initial du système à commande par logiciel par l'intermédiaire du bit de Remise à l'état initial du Système PCI du registre de commande MSP, et un redémarrage à commande par logiciel par l'intermédiaire du processeur de commande 204 et d'un bit de
redémarrage vectoriel du registre de commande MSP.
En se référant à la figure 9, un organigramme illustre des fonctionnements concernés par le traitement d'interruption et d'exception du système à multiprocesseurs
multimédia 100.
Le processeur vectoriel 206 effectue des fonctions de commande et de gestion très limitées à l'intérieur du système à multiprocesseurs multimédia 100. De manière spécifique, bien que le processeur vectoriel 206 génère des exceptions, le processeur vectoriel 206 n'inclut pas une capacité à traiter des exceptions. Au lieu de cela, les exceptions et l'initialisation de remise à l'état initial sont traitées par le processeur de commande 204. En outre, le processeur de commande 204 n'est autorisé à lire ou enregistrer le processeur vectoriel 206 que lorsque le processeur vectoriel 206 est inactif. En conséquence, le processeur de commande 204 fonctionne en tant que processeur "commandant" et le processeur vectoriel 206 fonctionne en tant que processeur
"commandé" sous la commande du processeur commandant.
De cette façon, le système à multiprocesseurs multimédia 100 comprend un ensemble de processeurs qui sont asymétriques en ce sens que le processeur vectoriel 206 et le processeur de commande 204 présentent des caractéristiques dissemblables de commande et de traitement de données. Les
2752471
processeurs asymétriques sont commandées par un système de fonctionnement unique. Le processeur vectoriel 206 et le processeur de commande 204 présentent des jeux d'instructions qui sont mutuellement indépendants. Le système à multiprocesseurs multimédia 100 utilise une définition architecturale à multiprocesseurs de traitement d'interruption et d'exception dans lequel le processeur vectoriel 206 présente un grand état de machine ou un grand context ainsi qu'une grande largeur de données et plusieurs registres. Dans un mode de réalisation pris à titre d'exemple, un processeur vectoriel 206 présente une largeur de données de 128 bits avec des registres vectoriels à 64288
bits, plus de 80 registres scalaires à 32 bits et 4 kilo-
octets de mémoire de travail. Le grand état de machine du processeur vectoriel 206 comprend un nombre relativement grand de registres avec les registres qui présentent un relativement grand nombre de bits. Le processeur vectoriel 206 est très efficace pour traiter de grandes structures de données telles que des réseaux ou des vecteurs, mais il n'est pas optimisé pour traiter de petites structures de données telles que des bits et des indicateurs. Ainsi, le processeur vectoriel 206 comprend des circuits pour détecter des exceptions mais renvoie les opérations de traitement d'interruption et d'exception vers le processeur de commande 204. Le processeur de commande 204 présente un petit état de machine et une petite largeur de données, par exemple 16 ou 32 bits, lesquels sont avantageux pour exécuter des programmes de système de fonctionnement tels qu'un traitement d'interruption et d'exception car les programmes de commande impliquent de manière typique le contrôle et la commande de
codes et d'indicateurs individuels.
Le processeur vectoriel 206 détecte une condition d'exception et, au lieu de satisfaire à la condition, envoie un signal d'interruption vers le processeur de commande 204 et entre un état inactif et reste dans l'état inactif jusqu'à ce que les conditions ou les sources qui ont provoqué l'exception soient prises en charge par des opérations du
31 2752471
processeur de commande 204. La commande du système à multiprocesseurs multimédia 100 est simplifiée car les opérations de commande d'exception et d'interruption n'ont pas besoin d'être coordonnées, puisque toutes les opérations de commande sont effectuées par le processeur de commande 204 seul. Le processeur vectoriel 206 fonctionne dans un état d'exécution (VP_RUN) et un état inactif (VP_IDLE), lesquels sont définis en accord avec l'architecture MSP, de manière à indiquer respectivement si le processeur vectoriel 206 est en train d'exécuter ou a suspendu de manière indéfinie l'exécution. Lors de la remise à l'état initial 902 du système à multiprocesseurs multimédia 100, le processeur vectoriel 206 entre l'état VP_IDLE 904. Le processeur de commande 204 n'est autorisé qu'à lire ou à enregistrer un registre 906 du processeur vectoriel 906 pendant l'état VP_IDLE. Les résultats d'une opération de lecture ou d'une opération d'enregistrement, qui sont exécutés dans le processeur de commande 204 et dirigés vers un registre du processeur vectoriel 206 lorsque le processeur vectoriel 206
est dans l'état VP_RUN, sont "indéfinis de manière bornée".
Un résultat "indéfini de manière bornée" est un état du système à multiprocesseurs multimédia 100 qui peut être généré par une séquence d'instructions quelconque du processeur de signaux multimédia 104. En conséquence, des accès de lecture et d'enregistrement des registres à l'intérieur du processeur vectoriel 206 par le processeur de commande 204 sont seulement permis lorsque le processeur
vectoriel 206 est dans l'état VPIDLE.
Le processeur de commande 204 initialise les registres 908 du processeur vectoriel 206. Après initialisation des registres du processeur vectoriel 206 a un état sélectionné, le processeur de commande 204 exécute une instruction STARTVP 910 pour changer l'état du processeur vectoriel 206 à l'état
VPRUN 911.
Lorsque le processeur vectoriel 206 rencontre une condition d'exception 912, le processeur vectoriel 206 entre
32 2752471
l'état VP_IDLE 914 et émet un signal vers le processeur de commande 204 avec une requête d'interruption 916. Le processeur vectoriel 206 reste dans l'état VPIDLE jusqu'à ce que le processeur de commande 204 exécute une autre instruction STARTVP 918. Le processeur de commande 204 détermine la nature de l'exception rapportée 920 en lisant des registres du processeur vectoriel 206 et traite l'exception 922 d'une manière définie. Le processeur de commande 204 ré-initialise alors en 924 des registres du processeur vectoriel 206, si cela est désiré, et redémarrage
l'exécution 926 du processeur vectoriel 206.
Le processeur vectoriel 206 est plus efficace pour sauvegarder et restaurer des registres à l'intérieur du processeur vectoriel 206 que ne l'est le processeur de commande 204. En conséquence, de meilleures performances sont obtenus lorsque le processeur de commande 204 programme le processeur vectoriel 206 afin d'exécuter des instructions de sauvegarde et de restauration des registres pendant des opérations de commutation de contexte. Une opération de commutation de contexte avantageuse est énoncée en détail dans la demande de brevet US N 08/699 280 intitulée
"EFFICIENT CONTEXT SAVING AND RESTORING IN MULTIPROCESSORS",
S.P. Song et al., déposée le 19 août 1996.
Le processeur vectoriel 206 entre l'état VPIDLE lors de la remise à l'état initial et lorsqu'une exception est détectée pour faciliter la conception et la programmation du système, et pour simplifier la synchronisation des processeurs au niveau de la remise à l'état initial du système. En général, des exceptions se produisent de manière peu fréquente de sorte que le traitement d'interruption du processeur vectoriel 206 est grandement simplifié sans réduire de manière significative la fonctionnabilité ou les performances du processeur vectoriel 206. En outre, la réponse aux exceptions est considérée de manière commune comme étant une caractéristique de signification limitée. Par exemple, de nombreux programmes d'applications de type traditionnel qui s'exécute en temps réel, tels que des
33 2752471
programmes d'applications multimédia, comprennent une programmation qui met hors service la réponse à des événements d'exception dans un mode de fonctionnement en temps réel. Dans un autre exemple, certains programmes d'applications de type traditionnel utilisent un mode de saturation pour éviter des conditions arithmétiques ou de dépassement de capacité négatif au cours d'un traitement
arithmétique en temps réel.
L'invention n'est pas limitée aux exemples de réalisation représentés et décrits en détails car diverses modifications peuvent y être apportées sans sortir de son cadre. Par exemple, les modes de réalisation ont été décrits comme des systèmes qui utilisent un système à multiprocesseurs comprenant un ordinateur central Pentium et un processeur multimédia particulier. Cependant d'autres configurations de processeurs peuvent être utilisées dans
d'autres modes de réalisation.
La présente invention est concernée par les demandes de brevets déposées aux Etats-Unis le 19 août 1996 et les incorpore en leur ensemble par référence: Demande de brevet US N 08/697 102 intitulée
"MULTIPROCESSOR OPERATION IN A MULTIMEDIA SIGNAL PROCESSOR",
Le Nguyen.
Demande de brevet US N 08/699 597 intitulée "SINGLE-
INSTRUCTION-MULTIPLE-DATA PROCESSING IN A MULTIMEDIA SIGNAL
PROCESSOR", Le Nguyen.
Demande de brevet US N 08/699 280 intitulée "EFFICIENT CONTEXT SAVING AND RESTORING IN MULTIPROCESSORS, S.P. Song et al. Demande de brevet US N 08/699 294 intitulée "SYSTEM
AND METHOD FOR HANDLING SOFTWARE INTERRUPT AND EXCEPTION
EVENTS IN AN ASYMETRIC MULTIPROCESSOR ARCHITECTURE", S.P.
Song et al. Demandes de brevet US N 08/699 303 et 08/699 382 intitulées "METHODS AND APPARATUS FOR PROCESSING VIDEO DATA", C. Reader et al.
34 2752471
Demande de brevet US N 08/697 086 intitulée "SINGLE- INSTRUCTIONMULTIPLE-DATA PROCESSING USING MULTIPLE BANKS OF
VECTOR REGISTERS", Le Nguyen et al. Demande de brevet US No 08/699 585 intitulée "SINGLE-
INSTRUCTION-MULTIPLE-DATA PROCESSING WITH COMBINED SCALAR/VECTOR OPERATIONS", Le Nguyen et al.
2752471
Claims (19)
1. Système à ordinateur caractérisé en ce qu'il comprend: un ensemble de processeurs comportant un premier processeur et un second processeur; le premier processeur comportant une logique de commande pour exécuter une instruction d'interruption de logiciel afin d'appeler une interruption de logiciel dans le second processeur; l'instruction d'interruption de logiciel présentant une zone d'argument pour transférer des informations du premier processeur vers le second processeur; le second processeur comprenant une logique de commande répondant à l'interruption de logiciel pour accéder aux
informations de la zone d'argument.
2. Dispositif à ordinateur selon la revendication 1 caractérisé en ce que la zone d'argument d'instruction d'interruption de logiciel comprend une zone pour transférer des informations identifiant la raison pour laquelle le premier processeur est en cours d'interruption du second
processeur.
3. Dispositif à ordinateur selon la revendication 1 caractérisé en ce que la zone d'argument d'instructions d'interruption de logiciel comprend une zone pour transférer les informations identifiant un code d'instructions à l'intérieur d'une mise en mémoire dans le second processeur au niveau de laquelle est placé un programme prise en charge d'interruption de logiciel, le programme de prise en charge d'interruption de logiciel étant rendu actif par
l'interruption de logiciel.
4. Dispositif à ordinateur selon la revendication 1, caractérisé en ce que l'instruction d'interruption de logiciel est une instruction JOIN amenant une interruption de logiciel dans le second processeur et rendant actif un
36 2752471
programme de prise en charge d'interruption de logiciel
identifié par un argment décalé dans la zone d'argument.
5. Dispositif à ordinateur selon la revendication 4 dans lequel la zone d'argument de l'instruction JOIN comprend une zone pour transférer des informations identifiant la raison pour laquelle le premier processeur est en cours
d'interruption du second processeur.
6. Dispositif à ordinateur selon la revendication 4, caractérisé en ce que le décalage de la zone d'argument de l'instruction JOIN est une adresse de branchement pour se brancher à un programme de prise en charge d'interruption de logiciel.
7. Dispositif à ordinateur selon la revendication 1 caractérisé en ce que: le second processeur est un processeur de commande présentant une largeur de chemin d'accès définie; et le premier processeur est un processeur vectoriel présentant une large largeur du chemin de données qui est sensiblement plus grande que la largeur de chemin de données
du second processeur.
8. Dispositif à ordinateur selon la revendication 1, caractérisé en ce que: la logique de commande du premier processeur permettant d'exécuter une instruction d'interruption de logiciel appelant une interruption de logiciel dans le second processeur comprend en outre une logique de commande mettant
le premier processeur à l'état inactif.
9. Dispositif à ordinateur selon la revendication 1, caractérisé en ce que les premier et second processeurs présentent des caractéristiques mutuellement dissemblables de
commande et de traitement de données.
10. Dispositif à ordinateur selon la revendication 1 caractérisé en ce qu'il comprend en outre: un coprocesseur couplé entre le premier processeur et le second processeur, le coprocesseur incluant un registre
pour traiter la zone d'argument.
37 2752471
11. Premier processeur dans un dispositif à ordinateur comprenant un ensemble de processeurs, caractérisé en ce qu'il comporte: une logique de commande pour exécuter une instruction d'interruption de logiciel afin d'appeler une interruption de logiciel dans un second processeur de l'ensemble de processeurs; l'instruction d'interruption de logiciel présentant une zone d'argument pour faire passer des informations du premier
processeur vers le second processeur.
12. Premier processeur selon la revendication 11 caractérisé en ce que la zone d'argument d'instructions d'interruption de logiciel comprend une zone pour transférer des informations identifiant la raison pour laquelle le premier processeur est en cours d'interruption du second processeur.
13. Premier processeur selon la revendication 11 caractérisé en ce que la zone d'argument d'instructions d'interruption de logiciel comprend une zone pour transférer des informations identifiant un code d'instructions à l'intérieur d'une mémoire dans le second processeur au niveau de laquelle est placé un programme de prise en charge d'interruption de logiciel, le programme de prise en charge d'interruption de logiciel étant rendu actif par
l'interruption de logiciel.
14. Premier processeur selon la revendication 11 caractérisé en ce que l'instruction d'interruption de logiciel est une instruction JOIN amenant une interruption de logiciel dans le second processeur et rendant actif un programme de prise en charge d'interruption de logiciel
identifié par un argument décalé dans la zone d'argument.
15. Premier processeur selon la revendication 14 caractérisé en ce que la zone d'argument de l'instruction JOIN comprend une zone pour transférer des informations identifiant la raison pour laquelle le premier processeur est
en cours d'interruption du second processeur.
38 2752471
16. Premier processeur selon la revendication 14 caractérisé en ce que le décalage de la zone d'argument d'instruction JOIN est une adresse de branchement pour se brancher à un programme de prise en charge d'interruption de logiciel.
17. Premier processeur selon la revendication 11 caractérisé en ce que: le second processeur est un processeur de commande présentant une largeur de chemin de données définie; et le premier processeur est un processeur vectoriel présentant une large largeur du chemin de données qui est sensiblement plus grande que la largeur de chemin de données
du second processeur.
18. Premier processeur selon la revendication 11 caractérisé en ce que: la logique de commande du premier processeur pour exécuter une instruction d'interruption de logiciel appelant une interruption de logiciel dans le second processeur comprend en outre une logique de commande mettant le premier
processeur à l'état inactif.
19. Premier processeur selon la revendication 11 caractérisé en ce que les premier et second processeurs présentent des caractéristiques mutuellement dissemblables de
commande et de traitement de données.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/699,295 US5996058A (en) | 1996-08-19 | 1996-08-19 | System and method for handling software interrupts with argument passing |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2752471A1 true FR2752471A1 (fr) | 1998-02-20 |
FR2752471B1 FR2752471B1 (fr) | 1999-06-11 |
Family
ID=24808713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9710438A Expired - Fee Related FR2752471B1 (fr) | 1996-08-19 | 1997-08-18 | Dispositif et procede pour traiter des interruptions de logiciel avec transfert d'argument |
Country Status (7)
Country | Link |
---|---|
US (1) | US5996058A (fr) |
JP (1) | JPH10149297A (fr) |
KR (1) | KR100267090B1 (fr) |
CN (1) | CN1123837C (fr) |
DE (1) | DE19735869A1 (fr) |
FR (1) | FR2752471B1 (fr) |
TW (1) | TW353738B (fr) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192073B1 (en) | 1996-08-19 | 2001-02-20 | Samsung Electronics Co., Ltd. | Methods and apparatus for processing video data |
JP3739888B2 (ja) * | 1997-03-27 | 2006-01-25 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および方法 |
US9092595B2 (en) | 1997-10-08 | 2015-07-28 | Pact Xpp Technologies Ag | Multiprocessor having associated RAM units |
US6697935B1 (en) * | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6202067B1 (en) * | 1998-04-07 | 2001-03-13 | Lucent Technologies, Inc. | Method and apparatus for correct and complete transactions in a fault tolerant distributed database system |
US6289446B1 (en) * | 1998-09-29 | 2001-09-11 | Axis Ab | Exception handling utilizing call instruction with context information |
US6347344B1 (en) * | 1998-10-14 | 2002-02-12 | Hitachi, Ltd. | Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor |
KR100308618B1 (ko) * | 1999-02-27 | 2001-09-26 | 윤종용 | 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법 |
KR20010038857A (ko) * | 1999-10-28 | 2001-05-15 | 박종섭 | 비동기 이동통신 시스템에서 메시지 인터페이스 방법 |
WO2001063434A1 (fr) * | 2000-02-24 | 2001-08-30 | Bops, Incorporated | Procede et appareil pour interface a double usage de co-traitement et de mise au point |
US7133951B1 (en) * | 2000-02-29 | 2006-11-07 | Bourekas Philip A | Alternate set of registers to service critical interrupts and operating system traps |
KR100385233B1 (ko) * | 2000-03-14 | 2003-05-23 | 삼성전자주식회사 | 데이터 프로세싱 시스템의 익스포넌트 유닛 |
US20020178313A1 (en) * | 2001-03-30 | 2002-11-28 | Gary Scott Paul | Using software interrupts to manage communication between data processors |
US7162573B2 (en) * | 2003-06-25 | 2007-01-09 | Intel Corporation | Communication registers for processing elements |
US7493435B2 (en) * | 2003-10-06 | 2009-02-17 | Intel Corporation | Optimization of SMI handling and initialization |
US7584344B2 (en) * | 2006-05-02 | 2009-09-01 | Freescale Semiconductor, Inc. | Instruction for conditionally yielding to a ready thread based on priority criteria |
US7831960B2 (en) * | 2006-06-08 | 2010-11-09 | Oracle America, Inc. | Configuration tool with multi-level priority semantic |
US20080082710A1 (en) * | 2006-09-29 | 2008-04-03 | Dell Products L.P. | System and method for managing system management interrupts in a multiprocessor computer system |
US7721034B2 (en) * | 2006-09-29 | 2010-05-18 | Dell Products L.P. | System and method for managing system management interrupts in a multiprocessor computer system |
CN101510190A (zh) * | 2009-04-02 | 2009-08-19 | 北京中星微电子有限公司 | 一种基于自定义指令的多核通信系统及方法 |
US9038073B2 (en) * | 2009-08-13 | 2015-05-19 | Qualcomm Incorporated | Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts |
US9378164B2 (en) * | 2011-12-22 | 2016-06-28 | Intel Corporation | Interrupt return instruction with embedded interrupt service functionality |
US9329834B2 (en) | 2012-01-10 | 2016-05-03 | Intel Corporation | Intelligent parametric scratchap memory architecture |
CN104679585B (zh) * | 2013-11-28 | 2017-10-24 | 中国航空工业集团公司第六三一研究所 | 浮点上下文切换方法 |
US10402527B2 (en) | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
US11507831B2 (en) | 2020-02-24 | 2022-11-22 | Stmicroelectronics International N.V. | Pooling unit for deep learning acceleration |
US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
CN117311817B (zh) * | 2023-11-30 | 2024-03-08 | 上海芯联芯智能科技有限公司 | 一种协处理器控制方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5109514A (en) * | 1988-07-28 | 1992-04-28 | Sun Microsystems, Inc. | Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions |
US5182811A (en) * | 1987-10-02 | 1993-01-26 | Mitsubishi Denki Kabushiki Kaisha | Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt |
US5511217A (en) * | 1992-11-30 | 1996-04-23 | Hitachi, Ltd. | Computer system of virtual machines sharing a vector processor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2858140B2 (ja) * | 1988-10-19 | 1999-02-17 | アポロ・コンピューター・インコーポレーテッド | パイプラインプロセッサ装置および方法 |
US5278647A (en) * | 1992-08-05 | 1994-01-11 | At&T Bell Laboratories | Video decoder using adaptive macroblock leak signals |
US5319753A (en) * | 1992-09-29 | 1994-06-07 | Zilog, Inc. | Queued interrupt mechanism with supplementary command/status/message information |
US5576765A (en) * | 1994-03-17 | 1996-11-19 | International Business Machines, Corporation | Video decoder |
US5510842A (en) * | 1994-05-04 | 1996-04-23 | Matsushita Electric Corporation Of America | Parallel architecture for a high definition television video decoder having multiple independent frame memories |
US5729279A (en) * | 1995-01-26 | 1998-03-17 | Spectravision, Inc. | Video distribution system |
US5594905A (en) * | 1995-04-12 | 1997-01-14 | Microsoft Corporation | Exception handler and method for handling interrupts |
US5668599A (en) * | 1996-03-19 | 1997-09-16 | International Business Machines Corporation | Memory management for an MPEG2 compliant decoder |
-
1996
- 1996-08-19 US US08/699,295 patent/US5996058A/en not_active Expired - Lifetime
-
1997
- 1997-04-07 KR KR1019970012761A patent/KR100267090B1/ko not_active IP Right Cessation
- 1997-08-14 JP JP9219650A patent/JPH10149297A/ja active Pending
- 1997-08-18 FR FR9710438A patent/FR2752471B1/fr not_active Expired - Fee Related
- 1997-08-18 DE DE19735869A patent/DE19735869A1/de not_active Withdrawn
- 1997-08-19 TW TW086111962A patent/TW353738B/zh not_active IP Right Cessation
- 1997-08-19 CN CN97116041A patent/CN1123837C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5182811A (en) * | 1987-10-02 | 1993-01-26 | Mitsubishi Denki Kabushiki Kaisha | Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt |
US5109514A (en) * | 1988-07-28 | 1992-04-28 | Sun Microsystems, Inc. | Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions |
US5511217A (en) * | 1992-11-30 | 1996-04-23 | Hitachi, Ltd. | Computer system of virtual machines sharing a vector processor |
Also Published As
Publication number | Publication date |
---|---|
US5996058A (en) | 1999-11-30 |
FR2752471B1 (fr) | 1999-06-11 |
JPH10149297A (ja) | 1998-06-02 |
DE19735869A1 (de) | 1998-03-26 |
CN1123837C (zh) | 2003-10-08 |
KR19980018068A (ko) | 1998-06-05 |
CN1177147A (zh) | 1998-03-25 |
TW353738B (en) | 1999-03-01 |
KR100267090B1 (ko) | 2000-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR2752470A1 (fr) | Dispositif et procede pour traiter des evenements d'interruption et d'exception dans une architecture a multiprocesseurs asymetriques | |
FR2752471A1 (fr) | Dispositif et procede pour traiter des interruptions de logiciel avec transfert d'argument | |
FR2752966A1 (fr) | Sauvegarde et restauration efficaces de contexte dans un environnement a systeme de calcul multitache | |
US5197138A (en) | Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching | |
US5430850A (en) | Data processing system with synchronization coprocessor for multiple threads | |
CN107066241B (zh) | 用于动态加载基于图的计算的系统和方法 | |
JP2645669B2 (ja) | データ処理システム | |
US8972699B2 (en) | Multicore interface with dynamic task management capability and task loading and offloading method thereof | |
US7870443B2 (en) | Method to isolate crash of an embedded multi-threaded application to a shared library call without core dump files or debugger | |
JP2004362564A (ja) | 統一イベント通知およびコンシューマ−プロデューサメモリ演算による仮想プロセッサ方法および装置 | |
US20030135720A1 (en) | Method and system using hardware assistance for instruction tracing with secondary set of interruption resources | |
JP5666473B2 (ja) | マルチスレッド式データ処理システム | |
US20110087919A1 (en) | Managing availability of a component having a closed address space | |
FR2950714A1 (fr) | Systeme et procede de gestion de l'execution entrelacee de fils d'instructions | |
JP5710434B2 (ja) | アシスト・ハードウエア・スレッドの拡張可能な状態追跡のための方法、情報処理システム、およびプロセッサ | |
CN107025135B (zh) | Docker容器内应用进程管理方法、装置和介质 | |
US20080104371A1 (en) | Method and system using hardware assistance for continuance of trap mode during or after interruption sequences | |
TW201346570A (zh) | 技術抽象層 | |
US20230315458A1 (en) | Synchronous microthreading | |
US7350193B2 (en) | Procedure invocation in an integrated computing environment having both compiled and interpreted code segments | |
JP3702184B2 (ja) | データ処理装置 | |
US8091077B1 (en) | System and method for handling rare events by modification of executable code | |
JP2876791B2 (ja) | 例外処理装置および例外処理方法 | |
Chiba | Optimizing Boot Times and Enhancing Binary Compatibility for Unikernels | |
Zhang et al. | Externalizing java server concurrency with cal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |
Effective date: 20160429 |