FR2752466A1 - Dispositif processeur integre de signaux numeriques - Google Patents

Dispositif processeur integre de signaux numeriques Download PDF

Info

Publication number
FR2752466A1
FR2752466A1 FR9710434A FR9710434A FR2752466A1 FR 2752466 A1 FR2752466 A1 FR 2752466A1 FR 9710434 A FR9710434 A FR 9710434A FR 9710434 A FR9710434 A FR 9710434A FR 2752466 A1 FR2752466 A1 FR 2752466A1
Authority
FR
France
Prior art keywords
cache
processor
bus
data
vector
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
Application number
FR9710434A
Other languages
English (en)
Other versions
FR2752466B1 (fr
Inventor
Trong Nguyen Le
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of FR2752466A1 publication Critical patent/FR2752466A1/fr
Application granted granted Critical
Publication of FR2752466B1 publication Critical patent/FR2752466B1/fr
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Abstract

La présente invention concerne un dispositif processeur intégré de signaux numériques. Le dispositif est caractérisé en ce qu'il comprend un processeur à tout usage (210) et un processeur de vecteurs (220) pouvant fonctionner en parallèle avec le processeur à tout usage (210). Ce dispositif trouve application dans le domaine du multimédia.

Description

La présente invention concerne des processeurs de signaux numériques et
particulièrement des systèmes de traiement parallèle asymétrique à double mise en place ou à double chemin, qui comprennent un processeur à but général ou à tout usage et un processeur de vecteurs pour
manipulation de données vectorielles.
La présente description est en rapport et incorpore
à titre de références, dans leur totalité, les demandes de brevets suivantes actuellement déposées: Demande de brevet US numéro de série non connu,
dossier du mandataire US No. M-4355, titrée "Single-
Instruction-Multiple-Date Processing in a Multimedia Signal Processor;" Demande de brevet US numéro de série non connu, dossier du mandataire US No. M-436555, titrée "Efficient Context Saving and Restoring in Multiprocessors"; Demande de brevet US numéro de série non connu, dossier du mandataire US No. M-4366, titrée "System and Method for Handling Software Interrupts with Argument Passing"; Demande de brevet US numéro de série non connu, dossier du mandataire US No. M-4367, titrée "System and Method for Handling Interrupts and Exception Events in an Asymmetric Multiprocessor Architecture"; Demande de brevet US numéro de série non connu, dossier du mandataire US No. M-4368, titrée "Methods and Apparatus for Processing Video Data"; Demande de brevet US numéro de série non connu,
dossier du mandataire US No. M-4369, titrée "Single-
Instruction-Multiple-Data Processing Using Multiple Banks of Vector Registers"; and Demande de brevet US numéro de série non connu,
dossier du mandataire US No. M-4370, titrée "Single-
Instruction-Multiple-Data Processing with Combined
Scalar/Vector Operations".
Une variété de processeurs de signaux numériques sont utilisés dans des applications multimédia telles que le codage et le décodage de données vidéo, audio et de communications. Un type de processeur de signaux numériques a du matériel dédié pour s'adresser à un problème spécifique tel que décodage ou encodage vidéo MPEG. Des processeurs de signaux numériques à matériel dédié fournissent généralement une performance élevée par coût mais sont seulement utilisables pour des problèmes spécifiques et incapables de s'adapter à d'autres
problèmes ou changements en standards.
Les processeurs de signaux numériques programmables exécutent des programmes qui résolvent des problèmes multimédia et fournissent une plus grande flexibilité que les processeurs de signaux numériques à matériel dédié parce que changer un logiciel pour un processeur de signaux numériques programmable peut changer le problème résolu. Un inconvénient des processeurs de signaux numériques programmable est leur plus faible performance par coût. Un processeur de signaux numériques programmable a typiquement une architecture similaire à celle d'un processeur à but général et une puissance de traitement relativement faible. La puissance de traitement faible résulte généralement d'une tentative pour minimiser les coûts. Ainsi, un tel processeur de signaux numériques n'est pas complètement satisfaisant car un processeur de signaux numériques de faible puissance retarde la possibilité du processeur de signaux numériques à s'adresser aux problèmes multimédia plus complexes tels que l'encodage et le décodage vidéo en
temps réel.
Puisqu'un but d'un processeur de signaux numériques programmable est de fournir une puissance de traitement élevée pour s'adresser à des problèmes multimédia à un coût minimum, on pourrait l'incorporer dans un traitement parallèle à processeur de signaux numériques, qui est une
manière connue d'augmenter la puissance de traitement.
Une architecture pour traitement parallèle est un processeur de signaux numériques à "mot d'instruction très long" (VLIW), qui est caractérisé par un grand nombre d'unités fonctionnelles, dont la plupart accomplissent des taches différentes mais relativement simples. Une instruction unique pour un processeur de signaux numériques à VLIW peut être de 128 octets ou plus et a des parties séparées. Chaque partie peut être exécutée en parallèle par des unités fonctionnelles séparées. Les processeurs de signaux numériques à VLIW ont une puissance de calcul élevée parce qu'un grand nombre d'unités fonctionnelles peuvent fonctionner en parallèle. Les processeurs de signaux numériques à VLIW ont également un coût relativement faible parce que chaque unité fonctionnelle est relativement petite et simple. Un problème pour les processeurs de signaux numériques à VLIW, cependant, est l'inefficacité dans la gestion de commande d'entrée/sortie, la communication avec un ordinateur hôte et autres fonctions qui ne conduisent pas elles-mêmes à une exécution parallèle dans les unités fonctionnelles du processeur à signaux numériques à VLIW. Additionnellement, des programmes pour VLIW diffèrent des programmes d'ordinateur conventionnels et peuvent être difficiles à exécuter à cause du manque d'outils de programmation et de programmeurs familiers
aux architecteurs à logiciel à VLIW.
Selon l'invention, un processeur de signaux numériques intégré est décrit. Le processeur de signaux numériques combine un processeur à tout usage avec un processeur de vecteurs, qui est capable de fonctionner en parallèle avec le processeur à tout usage. Le processeur de signaux numériques intégré est capable d'accomplir une performance élevée à faible coût puisque les deux processeurs accomplissent seulement des taches idéalement adaptées pour chaque processeur. Par exemple, le processeur à tout usage fait tourner un système de fonctionnement en temps réel et accomplit une gestion de système global tandis que le processeur de vecteurs est utilisé pour accomplir des calculs parallèles en utilisant des structures données appelées "vecteurs". Un vecteur est une collecte d'éléments de données
typiquement du même type.
Dans un mode de réalisation, le processeur de signaux numériques comprend également un sous-système antémémoire ou à mémoire cache, un premier bus et un second bus. Le premier bus est utilisé pour des dispositifs à vitesse élevée tels qu'une interface de bus local, un contrôleur d'accès direct en mémoire (DMA), un contrôleur de dispositif et un contrôleur de mémoire. Le second bus est utilisé pour des dispositifs à vitesse lente tels qu'une temporisation de système, un UART, un processeur de train de bits et un contrôleur d'interruption. Le sous-système antémémoire combine des fonctions antémémoire à des fonctions de tableau de commutation ou de routage de données. Les fonctions de tableau de commutation ou de commutateur permettent des trajets de communication multiples entre les processeurs et les bus pour fonctionner simultanément. De plus, la portion antémémoire du sous-système antémémoire permet des lectures et des écritures simultanées dans la mémoire cache. L'invention sera mieux comprise et d'autres buts, caractéristiques détails et avantages de celle-ci
apparaîtront plus clairement dans la description
explicative qui va suivre faite en référence aux dessins schématiques annexés donnés uniquement à titre d'exemple illustrant plusieurs modes de réalisation de l'invention et dans lesquels: - la figure 1 représente un schéma blocs d'une carte multimédia selon un mode de réalisation de l'invention; - la figure 2 représente un schéma blocs d'un processeur de signaux multimédia selon un mode de réalisation de l'invention; - la figure 3 illustre des relations entre des processeurs et un logiciel ou micrologiciel dans un système comprenant un processeur multimédia selon un mode de réalisation de l'invention; - la figure 4 représente un schéma blocs d'un sous- système antémémoire selon un mode de réalisation de l'invention; - la figure 5 représente une topographie de mémoire selon un mode de réalisation de l'invention; - la figure 6 représente un schéma blocs d'une file d'attente de données utilisées dans un sous-système antémémoire selon un mode de réalisation de l'invention; - la figure 7 représente un schéma blocs d'une seconde file d'attente de données utilisées dans un sous sytème antémémoire selon un mode de réalisation de l'invention; et - la figure 8 représente un schéma blocs d'une file d'attente d'adresse utilisée dans un sous-système
antémémoire selon un mode de réalisation de l'invention.
L'utilisation des mêmes symboles de référence aux différentes figures indique des éléments similaires ou identiques. Selon un aspect de l'invention, un processeur multimédia comprend un processeur à tout usage et un processeur de vecteurs qui fonctionnent en parallèle selon des chemins de programme séparés. Le processeur à tout usage, comme la plupart des processeurs à tout usage conventionnels, exécute des instructions qui manipulent typiquement des données scalaires. De tels processeurs sont adaptés pour l'exécution de fonctions d'entrée/sortie (I/O) et de commande de contrôle. Dans certains modes de réalisation, le processeur à tout usage a une capacité de traitement de vecteurs limitée de plusieurs éléments de données de dimensions d'octets groupées dans un mot de données. Par exemple, si le processeur à tout usage est un processeur 32 bits, certains modes de réalisation du processeur à tout usage peuvent traiter simultanément quatre éléments de données d'un octet. Cependant, des calculs multimédia tels que compression et décompression de données audio et vidéo exigent beaucoup de calculs répétitifs sur des groupes d'éléments d'image et des chaînes de données audio. Pour accomplir des opérations multimédia en temps réel, un processeur à tout usage qui manipule des données scalaires (par exemple une valeur d'élément d'image ou une amplitude de son par opérande) ou seulement de petits vecteurs doit fonctionner à une fréquence d'horloge élevée. Au contraire, le processeur de vecteurs exécute des inscriptions o chaque opérande est un vecteur contenant des éléments de données multiples (par exemple des valeurs d'éléments d'image multiples ou des amplitudes de son). De ce fait, le processeur de vecteurs peut accomplir des opérations multimédia en temps réel à une fraction de la fréquence d'horloge exigée pour un
processeur à tout usage d'accomplir la même fonction.
Ainsi, en autorisant une division performante des taches exigées pour une application multimédia, la combinaison d'un processeur à tout usage et d'un processeur de vecteurs programmables fournit une performance élevée par coût. Dans un mode de réalisation de l'invention, le processeur à tout usage exécute un système fonctionnant en temps réel conçu pour une carte imprimée média ("carte") communiquant avec un système d'ordinateur hôte. Le système fonctionnant en temps réel communique avec un processeur primaire du système d'ordinateur, des disposifs I/O de services sur la carte ou couplés à la carte et choisit des tâches que le processeur de vecteurs exécute. Dans ce mode de réalisation, le processeur de vecteurs est conçu pour accomplir des tâches de calculs intensifs exigeant une manipulation de blocs de données importants, tandis que le processeur à tout usage agit comme le processeur maître au processeur de vecteurs. Des chemins de programme pour chaque processeur sont écrits en utilisant un jeu d'instructions conventionnel qui rend le processeur multimédia "très facile à utiliser pour le programmeur". La programmabilité permet au processeur multimédia d'accomplir une variété de taches multimédia différentes. Le processeur multimédia peut, par exemple, être adapté à un nouveau protocole en changeant simplement soit ses programmes d'application soit son micrologiciel. Dans un mode de réalisation, le jeu d'instructions est similaire à celui d'un jeu d'instructions RISC conventionnel (ordinateur à jeu
d'instructions réduit).
Selon un autre aspect de l'invention, le processeur à tout usage et le processeur de vecteurs partagent une variété de ressources sur puce et hors puce qui sont
accessibles par un espace d'adresse unique. Un sous-
système antémémoire qui met en application des caches de données et d'instructions séparés pour chaque processeur fournit également une connexion du type commutateur entre une mémoire locale et des ressources tels qu'un processeur à flux de bits, une interface de transmission asynchrone ("UART"), un contrôleur d'accès direct en mémoire ("DMA"), une interface de bus local et une interface codeur-décodeur ("CODEC") qui sont des dispositifs cartographiés de mémoire. Le sous-système antémémoire peut utiliser un protocole à transaction orientée qui met en oeuvre un commutateur pour accès de données parmi les processeurs et les ressources
cartographiés de mémoire.
La figure 1 représente une carte multimédia 100 selon un mode de réalisation de l'invention. La carte multimédia 100 comprend une plaque à circuit imprimé, un processeur multimédia 110 et un connecteur qui se fixe à un bus local 105 d'un système d'ordinateur hôte. Dans un mode de réalisation à titre d'exemple, le bus local 105 est un bus PCI; mais dans d'autres modes de réalisation, le bus local 105 pourrait être un bus exclusif ou un bus qui se conforme à tout protocole souhaité tel que les
protocoles de bus ISA ou VESA.
Le processeur multimédia 110 utilise une mémoire locale 120, également située sur la carte multimédia 100, pour mémoriser des instructions de données et des programmes. La mémoire locale 120 peut agir également comme une mémoire d'image pour des applications de codage et de décodage vidéo. Dans le mode de réalisation à titre d'exemple, la mémoire locale 120 peut être mise en oeuvre par une mémoire à accès aléatoire dynamique synchrone de 32 bits à 512K (DRAM). Des portions de l'espace de mémoire locale peuvent également être mises en oeuvre par une mémoire à accès aléatoire statique sur pastille ("SRAM") et une mémoire morte ("ROM") dans le processeur multimédia 110. En fait, si une mémoire sur pastille ou puce est prévue pour maintenir suffisamment les données et les instructions de la carte multimédia 100, la
mémoire locale 120 n'a pas besoin d'être implantée.
En plus du processeur multimédia 110 et de la mémoire locale 120, la carte multimédia 100 comprend un convertisseur vidéo analogique- numérique 132 (ADC), un convertisseur vidéo numérique-analogique 134 (DAC), un ADC audio 142, un DAC audio 144, un ADC de communications 146 et un DAC de communications 148. Chacun des convertisseurs 132, 134, 142, 144, 146 et 148 peut être mis en oeuvre par un ou plusieurs circuits intégrés séparés. Alternativement, deux ou plus des convertisseurs 132, 134, 142, 144, 146 et 148 peuvent être intégrés sur un circuit intégré unique. Par exemple, un circuit intégré unique 140, par exemple, le AD1843 disponible chez Analog Devices, Inc., peut mettre en oeuvre les
fonctions des convertisseurs 142, 144, 146 et 148.
Le ADC vidéo 132, qui peut être mis en oeuvre par, par exemple, un circuit intégré KS0122 disponible chez Samsung Semiconductor, Inc., se relie à une caméra vidéo ou autre source d'un signal vidéo et numérise le signal vidéo en une série de valeurs d'éléments d'image. La carte multimédia 100 comprime ou encode les valeurs d'éléments d'image selon un standard d'encodage vidéo tel que MEPG, JPEG, ou H.324 implantés dans le micrologiciel exécuté par le processeur multimédia 110. Les données vidéo encodées peuvent alors être transmises à l'ordinateur hôte par l'intermédiaire du bus local 105, à un dispositif tel qu'une carte Ethernet couplée au bus local 105 ou être de plus encodées pour transmission sur une ligne téléphonique couplée au DAC de communication
148.
Le DAC vidéo 134 convertit une série d'échantillons numériques du processeur multimédia 110 en un signal vidéo analogique pour un moniteur vidéo ou une télévision. Le DAC vidéo 134 peut être mis en oeuvre, par exemple, par un circuit intégré KS0119 disponible chez Samsung Semiconductor, Inc., selon un standard vidéo NTSC ou PAL. Le processeur multimédia 110 peut produire la série d'échantillons numériques pour le DAC vidéo 134 sur la base de données reçues de l'ordinateur hôte, d'un autre dispositif couplé au bus local 105, d'une caméra vidéo couplée au ADC vidéo 132 ou d'une ligne
téléphonique couplée au ADC de communication 146.
Un composant optionnel de la carte multimédia 100 est un contrôleur graphique 150 qui partage la mémoire locale 120 avec le processeur multimédia 110 et fournit
un signal vidéo à un moniteur vidéo pour le système hôte.
Le contrôle graphique 150 peut être mis en oeuvre, par exemple, par un contrôleur graphique super VGA disponible chez divers vendeurs, tels que Cirrus Logic, S3, ou Trident Microsystems. Le processeur multimédia 110 produit et mémorise des topographies d'éléments d'image dans la mémoire locale 120 de laquelle le contrôleur graphique 150 produit un signal vidéo pour le moniteur vidéo. Le ADC audio 142 et le DAC audio 144 sont pour l'entrée et la sortie de signaux audio analogiques. Selon un aspect de l'invention, la carte multimédia 100 simule les fonctions d'une carte de son, telle que la populaire "SoundBlaster" et met en oeuvre des fonctions de synthèse de son telles que synthèse de table d'ondes et synthèse FM. Pour des simulations de carte de son, un programme d'application exécuté par l'ordinateur hôte fournit des données représentant un son et le processeur multimédia produit des amplitudes de son selon ces données. Le DAC 144 convertit des amplitudes de son en un signal audio analogique pour un haut-parleur ou un amplificateur. Le processeur multimédia 110 traite de façon similaire des signaux audio d'entrée du ADC audio 142. Le ADC de communication 146 échantillonne un signal analogique d'une ligne téléphonique et fournit des échantillons numérisés au processeur multimédia 110. La manière dont le processeur multimédia 110 traite les échantillons numérisés dépend de la fonction mise en oeuvre dans le micrologiciel. Par exemple, le processeur multimédia 110 peut mettre en oeuvre des fonctions modem en exécutant des programmes dans le micrologiciel qui accomplit une démodulation V.34 des échantillons et une correction et une décompression d'erreur V.42 bis. Le processeur multimédia 110 peut également comprimer des données reçues de l'ordinateur hôte et produire des échantillons numériques représentant un signal analogique modulé correctement pour transmission par le DAC de communications 148. De façon similaire, le processeur multimédia 110 peut mettre en oeuvre des fonctions de machine de réponse, de télécopie ou vidéophone utilisant le même matériel (ADC 146 et DAC 148) que l'interface avec des lignes téléphoniques si un micrologiciel ou un
logiciel convenable est disponible.
La figure 2 représente un schéma blocs d'un mode de réalisation du processeur multimédia 110. Le processeur multimédia 110 comprend un noyau de traitement 200 qui contient un processus à tout usage 210 et un processeur de vecteurs 220. Comme ici utilisé, le terme processeur de vecteurs se réfère à un processeur qui exécute des
instructions ayant des opérandes de vecteurs, c'est-à-
dire des opérandes contenant chacun des éléments de données multiples du même type. Chaque processeur à tout usage 210 et processeur de vecteur 220 exécute un chemin de programme séparé et peut être un processeur scalaire
ou super scalaire.
Dans le mode de réalisation à titre d'exemple, le processeur à tout usage 210 est un processeur RISC 32 bits qui fonctionne à 40 Mhz et se conforme au jeu d'instructions standard ARM7. L'architecture pour un processeur RISC ARM7 et le jeu d'instructions ARM7 sont décrits dans le ARM7DM Data Sheet disponible chez Advanced RISC Machines Ltd. Le processeur à tout usage 210 met en oeuvre également une extension du jeu d'instructions ARM7 qui comprend des instructions pour une interface au processeur de vecteurs 220. La demande de brevet en instance, ayant pour titre "System and Method for Handling Software Interrupts with Argument Passing" qui a été incorporée en référence ci-dessus décrit l'extension au jeu d'instructions ARM7 pour le mode de réalisation à titre d'exemple de l'invention. Le processeur à tout usage 210 est relié au processeur de vecteurs 220 par le bus de commande 212 pour accomplir l'extension du jeu d'instructions ARM7. De plus, une ligne d'interruption 222 est utilisée par le processeur de vecteurs 220 pour requérir une interruption sur le
processeur à tout usage 210.
Le processeur de vecteurs 220 a une architecture SIMD (données multiples à instruction unique) et traite à la fois des quantités scalaires et vectorielles. Dans le mode de réalisation à titre d'exemple, le processeur de vecteurs 220 consiste en une unité de traitement centrale RISC en file d'attente qui fonctionne à 80 Mhz et a un fichier de registre de vecteurs de 288 bits. Chaque registre de vecteurs dans le fichier de registre de vecteurs peut contenir jusqu'à 32 éléments de données. Le tableau 1 représente les types de données supportées pour
des éléments de données dans un vecteur.
TABLEAU 1
Type Dimension Interprétation données donnée int8 8 bits (octet) entier complément à 2 8 bits entre -128 et 127 int9 9 bits entier complément à 2/9 bits (octet 9) entre -256 et 255 int16 16 bits entier complément à 2 16 (demi-mot) bits entre -32,768 et 32,767 int32 32 bits entier complément à 2 32 (mot) bits entre -2147483648 et écart 32 bits nombre points écart 32 bits (mot) se conformant au format de l________ _ précision unique IEEE 754 Ainsi, un registre de vecteurs peut maintenir 32 éléments de données entier de 8 bits ou 9 bits, 16 éléments de données entier de 16 bits ou 8 éléments entier ou points d'écart 32 bits. Additionnellement, le mode de réalisation à titre d'exemple peut également fonctionner sur un opérande de vecteurs à 576 bits
fractionnant deux registres de vecteurs.
Le jeu d'instructions pour le processeur de vecteurs 220 comprend des instructions pour manipuler des vecteurs et pour manipuler des scalaires. La demande de brevet ayant pour titre "Single-Instruction- Multiple-Date Processing in a Multimedia Signal Processor", qui a été incorporée par référence ci-dessus, décrit le jeu d'instructions pour le mode de réalisation à titre d'exemple de l'invention et une architecture pour mettre
en oeuvre le jeu d'instructions.
Le sous-système antémémoire 230 contient un bloc SRAM 260, qui est représenté graphiquement en deux blocs,
une ROM 270 et une commande antémémoire 280. Le sous-
système antémémoire 230 peut configurer le bloc SRAM 260 en (i) un cache d'instructions 262 et un cache de données 264 pour le processeur à tout usage 210 et (ii) un cache d'instructions 292 et un cache de données 294 pour le processeur de vecteurs 220. Une ROM 270 sur pastille qui contient des données et des instructions pour le processeur général 210 et le processeur de vecteurs 220 peut également être configurée en un cache. Dans le mode de réalisation à titre d'exemple, la ROM 270 contient: des procédures de réinitialisation et d'initialisation; des procédures de diagnostics d'auto-test; des modules logiciel d'interruption et d'exception; et des sous routines pour une émulation "soundblaster" (programmation de son); des sous routines pour traitement de signal de modem V.34; des fonctions de téléphonie générale; des bibliothèques de sous routines graphiques à 2 dimensions et 3 dimensions; et des bibliothèques de sous routines
pour des standards audio et vidéo tels que MEPG-1, MEPG-
2, H.261, H.263, G.728 et G.723.
La figure 3 illustre les relations entre le matériel et le logiciel ou le micrologiciel dans une application de la carte multimédia 100 dans un système d'ordinateur hôte 300. Le système d'ordinateur hôte 300 a un processeur primaire 310 qui exécute des programmes mémorisés dans une mémoire principale 320. Dans le mode de réalisation à titre d'exemple, le système d'ordinateur hôte 300 est un ordinateur domestique compatible IBM coprenant un microprocesseur du type x86 et les programmes exécutés par le système d'ordinateur hôte 300 comprennent un programme d'application 330, tournant sous
un système de fonctionnement tel que WindowsTM 95 ou NT.
Le programme d'application 330 peut communiquer avec la carte multimédia 100 par l'intermédiaire de logiciels de pilotage du dispositif 342. Les logiciels de pilotage du dispositif 342 se conforment au logiciel de pilotage du
dispositif API du système de fonctionnement.
Les logiciels de pilotage ou pilotes de dispositifs sont typiquement pourvus de chaque carte multimédia 100 puisque des modes de réalisation différents de la carte multimédia 100 peuvent avoir des implantations différentes de matériel telles que des topographies de registres différents et des niveaux d'interruption différents. Le logiciel de pilotage de dispositif doit transformer correctement les signaux de commande nécessités par le mode de réalisation particulier de la carte multimédia 100 en signaux de commande tels que définis par le logiciel de pilotage de dispositif API du système de fonctionnement. Typiquement, le système de fonctionnement s'attendra à un logiciel de pilotage de dispositif différent pour chaque dispositif tel qu'un logiciel de pilotage de modem, un logiciel de pilotage graphique et un logiciel de pilotage audio. Ainsi, si un mode de réalisation de la carte multimédia 100 combine la fonctionnalité d'une carte audio, d'un modem et une carte graphique, trois logiciels de pilotage de dispositifs séparés sont typiquement exigés par le système de fonctionnement. Le processeur à tout usage 210 dans le processeur multimédia 110 exécute un système de fonctionnement en temps réel 360 qui contrôle des communications avec les logiciels de pilotage de dispositifs 342. Le processeur à tout usage 210 accomplit également des tâches générales 370. Le processeur de vecteurs 220 accomplit des tâches
vectorielles 380.
Le sous-système antémémoire 230 (figure 2) couple également les processeurs généraux 210 et les processeurs de vecteurs 220 à deux bus système: IOBUS 240 et FBUS 250. IOBUS 240 fonctionne typiquement à une fréquence inférieure à FBUS 250. Des dispositifs à vitesse plus lente sont couplés au IOBUS 240, tandis que des dispositifs à vitesse plus élevée sont couplés au FBUS 250. En séparant les dispositifs à vitesse plus lente des dispositifs à vitesse plus élevée, les dispositifs à vitesse plus lente sont empêchés d'avoir indûment un impact sur la performance des dispositifs à vitesse plus élevée. Le sous- système antémémoire 230 sert également comme commutateur pour une communication entre le IOBUS 240, le FBUS 250, le processeur général 210 et le processeur de vecteurs 220. Dans la plupart des modes de réalisation du sous-système antémémoire 230, des accès simultanés multiples entre les bus et les processeurs sont possibles. Par exemple, le processeur de vecteurs 220 est capable de communiquer avec le FBUS 250 en même temps que le processeur à tout usage 210 communique avec le IOBUS 240. Dans un mode de réalisation de l'invention, la combinaison du commutateur et de la fonction cache est accomplie en utilisant des techniques de topographie directe pour le FBUS 250 et le IOBUS 240. Spécifiquement, les dispositifs sur le FBUS 250 et le IOBUS 240 peuvent être accédés par le processeur à tout usage 210 et le processeur de vecteurs 220 par des lectures et écritures
de mémoire standards à des adresses appropriées. La figure 5 représente la topographie de mémoire d'un mode de réalisation
de l'invention. Le bloc mémoire 510, c'est-à-dire l'espace d'adresse du zéro d'adresse d'octet à la 4M - 1 adresse (les unités M et V, qui sont
utilisées dans la présente description comme unités pour
des adresses de mémoire, représentent les nombres 1 048 576 (c'est-à-dire 1024 x 1024) et 1 073 741 824 (c'est-à-dire 1024 x 1024 x 1024)), est occupé par la ROM 270. Le bloc mémoire 520, c'est-à-dire l'espace d'adresse de l'adresse d'octet 4M à 8M - 1, est occupé par le bloc SRAM 260. Le bloc mémoire 530, c'est-à-dire l'espace d'adresse de l'adresse d'octet 8M à l'adresse d'octet 72M - 1, est occupé par la mémoire locale 120. Les dispositifs sur le FBUS 250 sont topographies au bloc mémoire 540 qui démarre après l'adresse d'octet 72M et s'étend à l'adresse d'octet 77M. Le bloc mémoire 550 est réservé pour l'expansion future. Les dispositifs sur le IOBUS 240 sont topographies au bloc mémoire 560, qui démarre après l'adresse d'octet 125M et s'étend à l'adresse d'octet 128M 1. Le bloc mémoire 570 est également réservé pour une expansion future. Le bloc mémoire 580, c'est-à-dire l'espace d'adresses de l'adresse d'octet 2G à l'adresse d'octet 4G- l, est occupé par d'autres dispositifs d'ordinateur hôte et est
typiquement accédé par l'interface de bus local 255.
Le FBUS 250 (figure 2) est relié à un contrôleur de mémoire 258, un contrôleur de DMA 257, une interface de bus local 255 et une interface de dispositif 252 qui fournissent des interfaces respectivement pour la mémoire locale 120, le bus local 105 et des convertisseurs 132,
134, 142, 144, 146, 148 et 150 représentés en figure 1.
Le contrôleur de mémoire 258 contrôle des lectures et écritures à la mémoire locale 120. Dans le mode de réalisation à titre d'exemple, le contrôleur de mémoire 258 contrôle une banque de DRAMs (deux pastilles SRAM lMx16) configurée pour utiliser 24 à 26 bits d'adresses et 32 bits de données et ayant les caractéristiques: (i) d'un protocole de rafraîchissement "CAS-avant-RAS", accompli à une fréquence de rafraîchissement programmable, (ii) d'écritures partielles qui
initialisent des opérations de lecture-modification-
écriture et (iii) d'entrelacement de banques internes. Le contrôleur de mémoire 258 fournit également un accord de fréquence de 1:1 entre la mémoire 120 et le FBUS 250, "à la fois une précharge de banque" manuelle et une mise en file d'attente d'adresses et de données pour mieux utiliser le FBUS 250. Les DRAMs synchrones sont connues pour efficacement fonctionner à de telles fréquences (80 MHz) et des DRAMs de page virtuelle rapide standard et des DRAMs de données étendues (EDO) pourraient être également utilisées. Des contrôleurs de DRAM à capacités similaires au contrôleur de mémoire 258 dans le mode de
réalisation à titre d'exemple sont connus dans l'art.
Le contrôleur de DMA 257 contrôle des accès directs en mémoire entre la mémoire principale de l'ordinateur
hôte et la mémoire locale du processeur multimédia 200.
De tels contrôleurs DMA sont bien connus dans l'art. Dans certains modes de réalisation de l'invention, un transfert de données de mémoire est inclus. Le transfert de données de mémoire accomplit un accès direct en
mémoire d'un bloc de mémoire à un autre bloc de mémoire.
L'interface de bus local 255 met en oeuvre le protocole exigé pour des communications avec l'ordinateur hôte par l'intermédiaire du bus local 105. Dans le mode de réalisation à titre d'exemple, l'interface de bus local 255 réalise une interface à un bus PCI de 32 bits, 33 MHz. De telles interfaces sont bien connues dans
l'art.
L'interface de dispositif 252 fournit une interface de matériel pour des dispositifs tels que les convertisseurs 132, 134, 142, 144, 146, 148 et 150 qui seraient typiquement sur une plaque à circuit imprimé avec le processeur multimédia 110. L'interface de dispositif 252 peut être personnalisée pour l'application particulière du processeur multimédia 110. En particulier, l'interface de dispositif 252 pourrait seulement réaliser une interface pour des dispositifs spécifiques ou des circuits intégrés. Des unités typiques dans l'interface du dispositif 252 réalisent une interface pour connexion de ADCs, DACs ou CODECs standards. Les conceptions pour des interfaces ADC, DAC et CODEC sont bien connues dans l'art et non davantage décrits ici. D'autres interfaces qui pourraient utilisées comprennent une interface ISDN pour téléphone numérique et des interfaces pour des bus tels que pour un bus de microcanaux, mais ne sont pas limitées à celles-ci. Dans un mode de réalisation du processeur multimédia 110, l'interface du dispositif 252 est un ASIC (circuit intégré d'application sépcifique) qui peut être programmé
pour accomplir une fonctionnalité souhaitée.
Le IOBUS 240 fonctionne à une fréquence (40 MHz) qui est inférieure à la fréquence de fonctionnement (80 MHz) du bus 250. Couplés au IOBUS 240 sont une temporisation de système 242, un UART 243 (interface de transmission asynchrone), un processeur de flux de bits 248 et un contrôleur d'interruption 245. La temporisation de système 242 interrompt le processeur 210 à des intervalles planifiés qui sont sélectionnés en écrivant à des registres correspondant à la temporisation de système 242. Dans le mode de réalisation à titre d'exemple, la temporisation de système 242 est un Intel 8254 standard compatible à la temporisation d'intervalle ayant trois compteurs indépendants de 16 bits et six modes de
compteurs programmables.
L'UART 243 est une interface série, qui est compatible avec le circuit intégré UART 16450 très connu, pour utilisation dans un modem ou des applications de télécopie qui exige un port de communication série
standard ("COM") d'un ordinateur domestique.
Le processeur de flux de bits 245 est un processeur de matériel fixe qui accomplit les fonctions spécifiques sur un flux de bits d'entrée ou de sortie. Dans le mode de réalisation à titre d'exemple, le processeur de flux de bits 245 accomplit des étages initiaux ou finaux de codage ou de décodage MPEG. En particulier, le processeur de flux de bits 245 accomplit un codage et un décodage de longueur variable (Huffman) et comprime et décomprime des données vidéo en format en "zig-zag". Le processeur de flux de bits 245 fonctionne en parallèle avec le processeur à tout usage 210 et le processeur de vecteurs 220 et sous le contrôle de ceux-ci. Les processeurs 210 et 220 configurent le processeur de flux de bits 245 par l'intermédiaire de registres de contrôle. La demande de brevet US en instance ayant pour titre "Methods and Apparatus for Processing Video Data", qui a été incorporée à titre de référence ci-dessus, décrit un mode de réalisation à titre d'exemple du processeur à flux de
bits 245.
Le contrôleur d'interruption 248 commande des interruptions du processeur à tout usage 210 et supporte des priorités d'interruption multiples. Un registre de masquage est prévu pour permettre à chaque priorité d'interruption d'être masquée individuellement. Dans le mode de réalisation à titre d'exemple, le controleur d'interruption 245 est programmable et met en oeuvre le système d'interruption standard Intel 8259 qui est commun aux ordinateurs domestiques à base du x86. Une interruption de priorité la plus élevée (niveau 0) est attribuée à la temporisation du système 242. Des niveaux de priorité 1, 2, 3 et 7 sont respectivement attribués à une mémoire tampon d'image virtuelle, un contrôleur de DMA 257 et une interface de dispositif 252, un processeur de flux de bits 245, une interface de bus local 255 et un UART 243. Des niveaux de priorité d'interruption 4, 5 et 6 ne sont pas attribués dans le mode de réalisation à titre d'exemple de l'invention. La mémoire tampon d'image virtuelle au niveau de priorité 1, qui est incluse dans certains modes de réalisation de l'invention, simule une
mémoire tampon d'image VGA standard.
La figure 4 représente un schéma blocs du sous-
système antémémoire 230. Le bloc SRAM 260 est divisé en quatre banques de mémoire pour former un cache d'instructions 262 et un cache de données 264 pour utilisation avec le processeur général 210, ainsi qu'un cache d'instructions 292 et un cache de données 294 pour utilisation avec le processeur de vecteurs 220. Le bloc SRAM 260 contient également une section de référence 406,
qui est sous divisée pour chacune des banques de mémoire.
Le bloc SRAM 260 est un circuit de mémoire à double port avec un port de lecture 440 et un port d'écriture 430, de sorte qu'une lecture et une écriture simultanées du bloc SRAM 260 est supportée. Le sous-système antémémoire 230 contient également un cache de ROM 270, ayant une image de référence 472. Comme expliqué ci-dessus le cache de ROM 270 contient des instructions fréquemment utilisées et des données pour le processeur général 210 et le processeur de vecteurs 220. Bien que l'image de référence 472 ne puisse pas être modifiée, des adresses individuelles peuvent être marquées comme invalides de sorte que des données ou des instructions peuvent être amenées de la mémoire à utiliser à la place de données ou
des instructions dans la ROM 270.
Une file d'attente de données 410 accomplit la fonction de commutateur de données du sous-système antémémoire 230. La file d'attente de données 410 est capable de créer des trajets de communications de données simultanées multiples entre le IOBUS 240, le FBUS 250, le processeur à tout usage 210, le processeur de vecteur 220 et le bloc SRAM 260. De façon similaire, la file d'attente d'adresses 420 accomplit des fonctions de commutation pour des adresses. Dans le mode de réalisation de la figure 4, le IOBUS 240 et le FBUS 250 utilisent un multiplexage temporel pour des signaux d'adresses de données. La commande antémémoire 280 fournit les lignes de commande à la file d'attente de données 410 et à la file d'attente d'adresses 420 pour
configurer correctement les canaux de communication.
Dans certains modes de réalisation de ce système antémémoire 230, un protocole à base de transactions est utilisé pour supporter toutes les opérations de lecture et d'écriture. Toute unité couplée à ce système antémémoire 230, telle que le processeur général 210, le processeur de vecteurs 220 ou les divers dispositifs sur le IOBUS 240 et le FBUS 250, peut placer une requête au sous-système antémémoire 230. Une telle requête est formée par un code d'identification de dispositif ("dispositif ID") et une adresse de l'emplacement de mémoire requis. Chaque unité a un dispositif ID distinct et le sous- système antémémoire 230 peut privilégier les requêtes basées sur le dispositif ID de l'unité réalisant la requête. Lorsque les données à l'adresse requise deviennent disponibles, le sous-système antémémoire répond au dispositif ID, à un code d'identification de transaction ("transaction ID"), à l'adresse et aux données requises. Si l'adresse requise n'est pas contenue dans le bloc SRAM 260 ou la ROM 270, le sous-système antémémoire 230 ne sera pas capable de répondre à la requête spécifique pendant plusieurs cycles d'horloge alors que les données à l'adresse de mémoire sont retirées. Cependant, alors que les données d'une première requête sont en train d'être retirées, le sous-système antémémoire 230 est capable de traiter une seconde requête d'une unité différente avec un dispositif ID différent. De cette manière, la requête en instance ne
bloquera pas des requêtes subséquentes d'autres unités.
De plus, le sous-système antémémoire 230 peut supporter une requête de lecture et une requête d'écriture
simultanément dans un cycle unique.
Comme expliqué ci-dessus, le bloc SRAM 260 est divisé en quatre banques de mémoire. Le bloc SRAM 260 est à double port, ayant un port de lecture 440 et un port d'écriture 430, de sorte que dans n'importe quel cycle, le bloc SRAM 260 peut accepter une requête de lecture et une requête d'écriture. La section TAG (référence) 406 du bloc SRAM 260 doit avoir deux ports de lecture pour supporter les requêtes de lecture et d'écriture simultanées. Ainsi, l'adresse utilisée par le port de lecture 440 ainsi que l'adresse utilisée par le port d'écriture 430 peuvent être comparées à des références
cache pour réussir ou rater des conditions simultanément.
La section de référence 406 contient également un port d'écriture de sorte que comme la requête d'écriture au port d'écriture 430 est accomplie, les zones de référence
appropriées sont également changées.
Dépendant des contraintes du système global, le sous-système antémémoire 230 peut être utilisé avec des politiques de cache soit de réponse soit de surimpression. De plus, dans certains modes de réalisation, pour augmenter davantage la vitesse, la dimension de lignes de cache peut être rendue deux fois la largeur de données. Dans ces modes de réalisation, pour des buts de "conservation de dossier", on doit attribuer à chaque ligne de cache deux bits valides et deux bits modifiés, puisque chaque ligne de cache contient deux vecteurs. Le bloc SRAM 260 doit également effacer globalement tous les bits valides si un signal d'effacement global est reçu. Dans d'autres modes de réalisation, des signaux d'effacement individuels sont
supportés pour chaque banque dans le bloc SRAM 260.
La figure 6 est un schéma blocs d'un mode de réalisation d'une file d'attente de données 410. Puisque le sous-système antémémoire 230 est à la fois un système antémémoire et un commutateur pour le IOBUS 240, le FBUS 250, le processeur à tout usage 210 et le processeur de vecteurs 220, les bus et le processeur doivent être capables de communiquer soit à travers le cache soit directement si le cache est en train d'être utilisé par un autre dispositif. Les processeurs sont généralement plus rapides que les dispositifs sur les bus; de ce fait, les processeurs utiliseront généralement le cache sur des écritures et permettront au système de retour d'écriture de cache de placer des données au dispositif de bus approprié. De façon similaire, les processeurs requièrent généralement des informations du cache plutôt que des dispositifs directement. Si le cache ne contient pas les données requises, les processeurs reposent typiquement sur le sous-système antémémoire pour retirer les données requises dans le cache et produire les données aux processeurs. Cependant, lorsque le cache est occupé les processeurs peuvent accéder directement aux bus. Les données sont transférées du processeur à tout usage 210 au IOBUS 240 par un multiplexeur entree/sortie MUX IO 630. Des données du IOBUS 240 au processeur à tout usage 210 passent à travers le multiplexeur MUX 620 de lecture universelle. Des données sont transférées soit du bloc SRAM 260 soit de la ROM 207 au processeur à tout usage 210 à travers le multiplexeur MUX 650 de lecture de cache et le multiplexeur MUX 620 de lecture universelle. Des données sont transférées du processeur universel 210 au bloc SRAM 260 par le multiplexeur MUX 610 d'écriture de cache. Le multiplexeur MUX 650 de lecture de cache, le multiplexeur MUX 610 d'écriture de cache, le multiplexeur 630 IO (entrée/sortie) et le multiplexeur MUX 620 de lecture universelle peuvent être des multiplexeurs conventionnels et peuvent contenir des circuits de verrouillage internes ou des registres comme nécessaire pour des contraintes de temporisation. Les lignes de commande de sélection (non représentées) des multiplexeurs sont dictées par une commande de cache 280 (figure 4). Des données sont transférées du processeur universel 210 au FBUS 250 par le multiplexeur MUX 610 à écriture de cache et le multiplexeur MUX 640 du FBUS. Des données du FBUS 250 au processeur universel 210 sont analysées par un circuit ou mémoire tampon 660, le multiplexeur MUX 650 de lecture de cache et le multiplexeur MUX 620 de lecture universelle. Pour accomplir ces fonctions, la mémoire tampon 660 peut être une mémoire tampon, un circuit de verrouillage ou un
registre conventionnel.
Le processeur à tout usage 210 peut commander le processeur de vecteurs 220 par des lignes de commande 212 (figure 2). Un transfert de données direct entre le processeur à tout usage 210 et le processeur de vecteurs 220 n'est généralement pas requis mais peut être accompli par le bloc SRAM 260 ou n'importe quel autre dispositif puisque les deux processeurs partagent une topographie de
mémoire commune.
Des données de la ROM 270 et du bloc SRAM 260 au IOBUS 240 circulent à travers le multiplexeur de lecture de cache 650 et le multiplexeur d'entrée/sortie 630. Des données du IOBUS 240 au bloc SRAM 260 circulent à travers le multiplexeur d'écriture de cache 610. Des données du IOBUS 240 au FBUS 250 passent à travers le multiplexeur d'écriture de cache 610 et le multiplexeur FBUS 640. Des données pour le IOBUS 240 du FBUS 250 passent à travers la mémoire tampon 660, le multiplexeur de lecture de cache 650 et le multiplexeur d'entrée/sortie 630. Des données pour i'IOBUS 240 du processeur de vecteurs 220 passent à travers le multiplexeur d'écriture de cache 610 et le multiplexeur d'entrée/sortie 630. Des données du IOBUS 240 au processeur de vecteurs 220 passent à travers le multiplexeur de lecture de cache 650. Dans certains modes de réalisation de l'invention, la file d'attente directe pour des données du processeur de vecteurs 220 au IOBUS 240 est éliminée pour simplifier la conception de la file d'attente de données 410. Puisque la largeur de bande du processeur de vecteurs 220 est beaucoup plus grande que la largeur de bande du IOBUS 240, un trajet de communication direct du processeur de vecteurs 220 au IOBUS 240 devient très inefficace par rapport au temps de
traitement du processeur de vecteurs 220.
Des données pour le FBUS 250 au bloc SRAM 260 et la ROM 270 passent à travers le multiplexeur de lecture de cache 650 et le multiplexeur du FBUS 640. Des données du FBUS 250 au bloc SRAM 260 passent à travers la mémoire
tampon 660 et le multiplexeur d'écriture de cache 610.
Des données du FBUS 250 peuvent directement atteindre le processeur de vecteurs 220 par la mémoire tampon 660 et le multiplexeur de lecture de cache 650. Des données pour le FBUS 250 peuvent également venir directement du processeur de vecteurs 220 à travers le multiplexeur
d'écriture de cache 610 et le multiplexeur FBUS 640.
Des données du processeur de vecteurs 220 circulent au bloc SRAM 260 à travers le multiplexeur d'écriture de cache 610. Des données du bloc SRAM 260 et de la ROM 270 passent à travers le multiplexeur de lecture de cache 650
au processeur de vecteurs 220.
La figure 7 est un schéma blocs détaillé d'un second mode de réalisation de la file d'attente de données 410. Puisque la fonctionnalité du mode de réalisation de la figure 7 est similaire à la fonctionnalité du mode de réalisation de la figure 6, seulement les différences entre les modes de réalisation sont discutées en détail. Cependant, les organisations générales des éléments dans chaque mode de réalisation sont également décrites. En figure 7, le multiplexeur de lecture de cache 650 est remplacé par le multiplexeur de
lecture de cache 750 et le verrouilleur multiplexeur 751.
La mémoire tampon 660 est remplacée par le verrouilleur de lecture 760. Le multiplexeur FBUS 640 est remplacé par le multiplexeur FBUS 640, le verrouilleur de données d'écriture (WB) 741, le verrouilleur d'écriture de
mémoire 742 et le verrouilleur d'écriture de mémoire 743.
Les verrouilleurs dans le mode de réalisation de la figure 7 sont utilisés pour mettre en file d'attente la fil d'attente de données. Le multiplexeur d'écriture de cache 610 est remplacé par le multiplexeur d'écriture de cache 710, le verrouilleur de données d'écriture 712, un dispositif aligneur 713 et un verrouilleur d'écriture d'entrée/sortie 711. Le multiplexeur d'entrée/sortie 630 est remplacé par le verrouilleur de lecture d'entrée/sortie 731 et le verrouilleur de lecture d'entrée/sortie 732. Le multiplexeur de lecture universel 620 est remplacé par le verrouilleur d'écriture
d'entrée/sortie 721 et le micro antémémoire 722.
Le micro cache 722 couple l'antémémoire principal, le bloc SRAM 270 et la ROM 260 au processeur à tout usage 210. Le micro cache 722 est divisé en un micro cache d'instructions et un micro cache de données, dont chacun comprend une portion de référence 822 (figure 8), des comparateurs de référence et des bits valides. Le micro cache 722 fonctionne comme une mémoire tampon de préfecture. L'adresse d'une requête du processeur à tout usage 210 est tout d'abord comparée à la portion de référence 822 du micro cache 722. Si un manquement du micro cache se produit (c'est-à-dire aucun accord dans la référence de micro cache 822) l'adresse de la requête avec l'adresse et autres informations de commande est transmise à l'antémémoire principal. Pour simplifier le micro cache 722, des écritures de données du processeur à tout usage 210 qui accorde une référence dans le micro cache 722 invalident l'adresse de micro cache de sorte que les données écrites doivent être transmises au micro cache principal. De cette manière, une cohérence de caches peut être maintenue sans conceptions pour réécriture et sur écriture complexes sur le micro cache 722. La figure 8 représente un schéma blocs d'un mode de
réalisation d'une file d'attente d'adresses 420.
L'interface FBUS est composée d'une file d'attente
d'adresses à quatre entrées et d'un verrouilleur de pré-
écriture. L'interface FBUS 850 peut simultanément supporter une lecture en instance de l'antémémoire d'instructions 262, une lecture en instance de l'antémémoire d'instructions 292, une requête d'écriture
de l'antémémoire de données 294 et une requête de ré-
écriture de l'antémémoire de données 294. Les adresses pour les requêtes d'écriture sont transmises au multiplexeur d'adresses d'écriture 210 tandis que les adresses pour les requêtes de lecture sont transmises au multiplexeur d'adresses de lecture 820. Un contrôleur d'antémémoire 280 (figure 2) accomplit un arbitrage entre des requêtes du processeur à tout usage 210, du processeur de vecteurs 220, du IOBUS 240 et du FBUS 250 sur la base du dispositif ID de la requête. Le contrôleur d'antémémoire 280 configure alors les diverses multiplexeurs de la file d'attente de données 410 et de la file d'attente de données 420 pour maintenir les requêtes. Le schéma d'arbitrage peut être décidé sur la base d'une estimation de l'importance de chaque dispositif. De façon typique, on donne au processeur à tout usage 210 la priorité la plus élevée. Comme expliqué ci-dessus, le sous-système antémémoire 230 est capable d'opérations de lecture et d'écriture simultanées. De ce fait, des comparateurs séparés sont nécessaires pour les requêtes de lecture et d'écriture. Le comparateur 811 est utilisé pour comparer l'adresse d'écriture du multiplexeur d'adresses d'écriture 810 aux adresses reçues par le port de référence d'écriture 406-1 pour déterminer si l'adresse d'écriture de la requête actuelle se trouve dans l'antémémoire. Si l'adresse est dans l'antémémoire, l'antémémoire est remis à jour par les
nouvelles données à l'emplacement d'antémémoire d'accord.
Si l'adresse n'est pas dans l'antémémoire, l'adresse et les données sont écrites à l'antémémoire dans un emplacement d'antémémoire non utilisé o l'emplacement qui est le moins accédé récemment. Eventuellement, les données sont transmises au dispositif cartographié adressé direct correct en utilisant des techniques
d'antémémoire à ré-écriture ou surécriture.
Le comparateur 821 est utilisé pour comparer l'adresse de lecture de requête de lecture du multiplexeur d'adresses de lecture 820 et les adresses reçues par le port de référence de lecture 406-2. Si une référence concorde avec l'adresse de lecture, les données associées à la référence sont transmises au dispositif de
requête en utilisant la file d'attente de données 410.
Comme expliqué ci-dessus, si un protocole de transaction est utilisé, les données seront retournées à un
dispositif ID, une transaction ID et l'adresse requise.
Si aucune référence ne concorde avec l'adresse de lecture, le soussystème antémémoire 230 doit retirer les données requises du dispositif topographie à mémoire directe appropriée. Lorsque les données requises sont retirées, les données requises, le dispositif ID, la transaction ID et l'adresse sont transmises au dispositif de requête. Pendant que les données pour une première requête sont en train d'être retirées, le sous-système antémémoire 230 est capable de servir une seconde requête de lecture de sorte qu'un second dispositif exigeant
l'antémémoire n'est pas bloqué par le premier dispositif.
Les divers modes de réalisation de la structure de cette invention qui sont décrits ci-dessus sont seulement à titre d'illustration des principes de l'invention et ne sont pas destinés à limiter la portée de l'invention aux modes de réalisation particuliers décrits. Au vu de la
présente description, ceux de l'art peuvent définir dans
la portée de la présente invention d'autres mises en oeuvre des files d'attente de données, des commutateurs, des files d'attente d'adresses, des sous-systèmes antémémoire, des multiplexeurs, des verrouilleurs, des bus, des processeurs et utiliser ces caractéristiques alternatives pour créer un processeur de signaux numériques.

Claims (13)

REVENDICATIONS
1. Dispositif processeur intégré de signaux numériques, caractérisé en ce qu'il comprend: un processeur à tout usage (210); et un processeur de vecteurs (220) capable de fonctionner en parallèle avec le processeur à tout usage
(210).
2. Dispositif selon la revendication 1, caractérisé en ce que le processeur à tout usage (210) comprend; un jeu de registres scalaire; une unité de décodage d'instructions; et un noyau de traitement (200) qui traite un certain nombre de valeurs scalaires selon des instructions
décodées par l'unité de décodage d'instructions.
3. Dispositif selon la revendication 2, caractérisé en ce que le processeur de vecteurs (220) comprend: un jeu de registres de vecteurs; une seconde unité de décodage d'instructions et un second noyau de traitement qui traite un certain nombre de valeurs de vecteurs selon des instructions décodées
par la seconde unité de décodage d'instructions.
4. Dispositif selon la revendication 1, caractérisé en ce qu'il comprend de plus un sous-système antémémoire (230) couplé au processeur à tout usage (210) et au processeur de vecteurs (220), le sous-système antémémoire
(230) ayant un cache de mémoire.
5. Dispositif selon la revendication 4, caractérisé en ce que le soussystème antémémoire (230) comprend: un port de lecture d'antémémoire; et un port d'écriture d'antémémoire; et en ce que le sous- système antémémoire (230) supporte des accès simultanés au port de lecture
d'antémémoire et au port d'écriture d'antémémoire.
6. Dispositif selon la revendication 4, caractérisé en ce que le soussystème antémémoire (230) comprend: une file d'attente de données (410) couplée au processeur à tout usage (210) et au processeur de vecteurs (220); une file d'attente d'adresses (420) couplée au processeur à tout usage (210) et au processeur de vecteurs (220) et en ce que le cache de mémoire comprend un cache SRAM (260) couplé à la file d'attente de données (410) et à la file d'attente d'adresses (420) et un cache de ROM (270) couplé à la file d'attente de données (410)
et à la file d'attente d'adresses (420).
7. Dispositif selon la revendication 4, caractérisé en ce qu'il comprend de plus un premier bus couplé au sous-système antémémoire (230) et un second bus couplé au
sous-système antémémoire (230).
8. Dispositif selon la revendication 7, caractérisé en ce que le premier bus a une largeur de bande de premier bus supérieure à une largeur de bande de second
bus du second bus.
9. Dispositif selon la revendication 8, caractérisé en ce qu'il comprend de plus un processeur de flux de bits (245) couplé au second bus et une interface de bus
local couplée au premier bus.
10. Dispositif selon la revendication 9, caractérisé en ce que l'interface du bus local est couplée à un bus local (105) d'un processeur primaire
d'un système d'ordinateur.
11. Dispositif selon la revendication 9, caractérisé en ce que le sous-système antémémoire (230) peut être configuré pour fournir une pluralité de trajets de communication entre le processeur de vecteurs (220), le processeur à tout usage (210), le premier bus et le
second bus.
12. Dispositif selon la revendication 7, caractérisé en ce que le sous-système antémémoire (230)
est accédé par une première requête de cache.
13. Dispositif selon la revendication 12, caractérisé en ce que si la première requête de cache précitée exige à un certain nombre de cycles d'être accomplis, le sous-système antémémoire (230) est capable d'accepter une seconde requête de cache avant de finir
ladite première requête de cache.
FR9710434A 1996-08-19 1997-08-18 Dispositif processeur integre de signaux numeriques Expired - Lifetime FR2752466B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US69710296A 1996-08-19 1996-08-19

Publications (2)

Publication Number Publication Date
FR2752466A1 true FR2752466A1 (fr) 1998-02-20
FR2752466B1 FR2752466B1 (fr) 2005-01-07

Family

ID=24799807

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9710434A Expired - Lifetime FR2752466B1 (fr) 1996-08-19 1997-08-18 Dispositif processeur integre de signaux numeriques

Country Status (7)

Country Link
US (1) US6425054B1 (fr)
JP (1) JP3954163B2 (fr)
KR (1) KR100280285B1 (fr)
CN (1) CN1129078C (fr)
DE (1) DE19735981B4 (fr)
FR (1) FR2752466B1 (fr)
TW (1) TW346573B (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084297A2 (fr) * 2000-05-01 2001-11-08 Broadcom Corporation Procede et systeme permettant d'obtenir un processeur souple et efficace utilise dans un traitement graphique
WO2004015568A3 (fr) * 2002-08-07 2004-10-07 Pact Xpp Technologies Ag Procede et dispositif de traitement de donnees
US7693257B2 (en) 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US6804726B1 (en) * 1996-05-22 2004-10-12 Geovector Corporation Method and apparatus for controlling electrical devices in response to sensed conditions
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (fr) 1996-12-27 2011-06-22 Richter, Thomas Procédé pour le transfert dynamique automatique de processeurs à flux de données (dfp) ainsi que de modules à deux ou plusieurs structures cellulaires programmables bidimensionnelles ou multidimensionnelles (fpga, dpga ou analogues)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US5933855A (en) 1997-03-21 1999-08-03 Rubinstein; Richard Shared, reconfigurable memory architectures for digital signal processing
US6895452B1 (en) 1997-06-04 2005-05-17 Marger Johnson & Mccollom, P.C. Tightly coupled and scalable memory and execution unit architecture
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
AU7575398A (en) * 1998-05-15 1999-12-06 Richard Rubinstein Shared, reconfigurable cache memory execution subsystem
US6233389B1 (en) 1998-07-30 2001-05-15 Tivo, Inc. Multimedia time warping system
US7558472B2 (en) 2000-08-22 2009-07-07 Tivo Inc. Multimedia signal processing system
DE69917489T2 (de) 1998-11-09 2005-06-02 Broadcom Corp., Irvine Anzeigesystem zur mischung von graphischen daten und videodaten
EP1059781B1 (fr) 1999-05-06 2007-09-05 Siemens Aktiengesellschaft Dispositif de communication comportant des moyens de traitement en temps reel des données à transmettre
WO2000077652A2 (fr) 1999-06-10 2000-12-21 Pact Informationstechnologie Gmbh Partionnement de sequences dans des structures cellulaires
US6668299B1 (en) 1999-09-08 2003-12-23 Mellanox Technologies Ltd. Software interface between a parallel bus and a packet network
US6580767B1 (en) * 1999-10-22 2003-06-17 Motorola, Inc. Cache and caching method for conventional decoders
EP2226732A3 (fr) 2000-06-13 2016-04-06 PACT XPP Technologies AG Hiérarchie d'antémémoires pour un processeur multi-coeur
DE10029675A1 (de) * 2000-06-23 2002-01-31 Dialog 4 System Engineering Gm Elektronisches Audiogerät
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7003450B2 (en) * 2000-10-20 2006-02-21 Pts Corporation Methods and apparatus for efficient vocoder implementations
KR100771728B1 (ko) * 2000-12-09 2007-10-30 엘지엔시스(주) 자동은행거래단말기에서의 상호 스레드 통신방법
WO2005045692A2 (fr) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Dispositif et procede de traitement de donnees
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20030088407A1 (en) * 2001-04-02 2003-05-08 Yi Hu Codec
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
AU2003208266A1 (en) 2002-01-19 2003-07-30 Pact Xpp Technologies Ag Reconfigurable processor
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
DE10254255A1 (de) * 2002-11-20 2004-06-17 Werner Wirsum Verfahren zur Leistungsbesserung von Audioanwendungen auf Computern unter Einbeziehung sog. Grafikkarten in die Datenberechnung
JP4542308B2 (ja) * 2002-12-16 2010-09-15 株式会社ソニー・コンピュータエンタテインメント 信号処理用デバイス及び情報処理機器
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
KR100463205B1 (ko) * 2003-02-13 2004-12-23 삼성전자주식회사 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
CN1792097A (zh) 2003-05-19 2006-06-21 皇家飞利浦电子股份有限公司 具有低存储器带宽要求的视频处理设备
JP2005057738A (ja) * 2003-07-18 2005-03-03 Canon Inc 信号処理装置、信号処理方法及びプログラム
JP4699685B2 (ja) * 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
US7627039B2 (en) * 2003-09-05 2009-12-01 Realnetworks, Inc. Parallel video decoding
US6993598B2 (en) * 2003-10-09 2006-01-31 International Business Machines Corporation Method and apparatus for efficient sharing of DMA resource
WO2005050454A1 (fr) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. Memoire cache et procede de commande de celle-ci
US7136943B2 (en) * 2004-03-18 2006-11-14 International Business Machines Corporation Method and apparatus for managing context switches using a context switch history table
ITMI20040600A1 (it) * 2004-03-26 2004-06-26 Atmel Corp Sistema dsp su chip a doppio processore a virgola mobile nel dominio complesso
EP1728171A2 (fr) * 2004-03-26 2006-12-06 Atmel Corporation Systeme sur puce a processeur de signaux numeriques a virgule flottante comprenant un domaine complexe a processeur double
WO2007082730A1 (fr) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Procédé de définition de matériels
KR100882949B1 (ko) 2006-08-17 2009-02-10 한국전자통신연구원 화소 유사성에 따라 적응적인 이산 코사인 변환 계수스캐닝을 이용한 부호화/복호화 장치 및 그 방법
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US20100191913A1 (en) * 2009-01-26 2010-07-29 Agere Systems Inc. Reconfiguration of embedded memory having a multi-level cache
CN101567732B (zh) * 2009-06-05 2012-07-04 北京派瑞根科技开发有限公司 实现模拟多媒体广播内容过滤的方法
EP2339795B1 (fr) * 2009-12-07 2013-08-14 STMicroelectronics (Research & Development) Limited Interface de communication inter-puce pour un boitier multi-puce
EP2330514B1 (fr) 2009-12-07 2018-12-05 STMicroelectronics (Research & Development) Limited Paquet de circuits intégrés
EP2333673B1 (fr) * 2009-12-07 2014-04-16 STMicroelectronics (Research & Development) Limited Signal de balayage et transfert
EP2333830B1 (fr) 2009-12-07 2014-09-03 STMicroelectronics (Research & Development) Limited Un ensemble comprenant une première et une seconde matrice couplées par un bus multiplexé
EP2339475A1 (fr) * 2009-12-07 2011-06-29 STMicroelectronics (Research & Development) Limited Interface de communication inter-puce pour un boitier multi-puce
US8959501B2 (en) * 2010-12-14 2015-02-17 Microsoft Corporation Type and length abstraction for data types
US8521937B2 (en) * 2011-02-16 2013-08-27 Stmicroelectronics (Grenoble 2) Sas Method and apparatus for interfacing multiple dies with mapping to modify source identity
US8836709B2 (en) 2011-08-18 2014-09-16 International Business Machines Corporation Vector register file caching of context data structure for maintaining state data in a multithreaded image processing pipeline
CN102968379B (zh) * 2012-10-24 2015-05-06 无锡江南计算技术研究所 一种寄存器分配方法、系统及处理器
JP6555259B2 (ja) * 2014-06-19 2019-08-07 日本電気株式会社 情報処理装置、データ格納方法、及び、プログラム
US9818337B2 (en) * 2014-07-24 2017-11-14 Sct Technology, Ltd. LED display control circuit with PWM circuit for driving a plurality of LED channels
KR102446677B1 (ko) * 2015-11-26 2022-09-23 삼성전자주식회사 스토리지 컨트롤러의 동작 방법 및 상기 스토리지 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991010194A1 (fr) * 1989-12-29 1991-07-11 Supercomputer Systems Limited Partnership Architecture en grappes pour systeme multiprocesseur scalaire/vectoriel hautement parallele
US5530881A (en) * 1991-06-06 1996-06-25 Hitachi, Ltd. Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4349871A (en) * 1980-01-28 1982-09-14 Digital Equipment Corporation Duplicate tag store for cached multiprocessor system
US4300763A (en) * 1980-02-21 1981-11-17 Barr Samuel J Psychological game device
US4541046A (en) * 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
US4394540A (en) 1981-05-18 1983-07-19 Timex Corporation Remote meter reader and method for reading meters over non-dedicated telephone lines
JPS6467680A (en) 1987-09-09 1989-03-14 Hitachi Ltd Vector processor
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
JP2570845B2 (ja) * 1988-05-27 1997-01-16 セイコーエプソン株式会社 情報処理装置
US5040109A (en) 1988-07-20 1991-08-13 Digital Equipment Corporation Efficient protocol for communicating between asychronous devices
US6070003A (en) 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
JP2825906B2 (ja) 1990-02-01 1998-11-18 株式会社日立製作所 計算機システム
US5263144A (en) 1990-06-29 1993-11-16 Digital Equipment Corporation Method and apparatus for sharing data between processors in a computer system
US5666510A (en) 1991-05-08 1997-09-09 Hitachi, Ltd. Data processing device having an expandable address space
DE69227433T2 (de) 1991-11-19 1999-03-18 Fujitsu Ltd Speicherzugriffseinrichtung
US5930522A (en) * 1992-02-14 1999-07-27 Theseus Research, Inc. Invocation architecture for generally concurrent process resolution
US5669010A (en) 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5423051A (en) * 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
JP2765411B2 (ja) 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5502683A (en) 1993-04-20 1996-03-26 International Business Machines Corporation Dual ported memory with word line access control
US5546586A (en) 1993-05-06 1996-08-13 Apple Computer, Inc. Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
US5615343A (en) 1993-06-30 1997-03-25 Intel Corporation Method and apparatus for performing deferred transactions
US5644756A (en) 1995-04-07 1997-07-01 Motorola, Inc. Integrated circuit data processor with selectable routing of data accesses
US5822606A (en) 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5949439A (en) 1996-08-15 1999-09-07 Chromatic Research, Inc. Computing apparatus and operating method using software queues to improve graphics performance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991010194A1 (fr) * 1989-12-29 1991-07-11 Supercomputer Systems Limited Partnership Architecture en grappes pour systeme multiprocesseur scalaire/vectoriel hautement parallele
US5530881A (en) * 1991-06-06 1996-06-25 Hitachi, Ltd. Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BRANSTETTER R ET AL: "Ultra-reliable digital avionics (URDA) processor architecture", AEROSPACE AND ELECTRONICS CONFERENCE, 1994. NAECON 1994., PROCEEDINGS OF THE IEEE 1994 NATIONAL DAYTON, OH, USA 23-27 MAY 1994, NEW YORK, NY, USA,IEEE, 23 May 1994 (1994-05-23), pages 274 - 280, XP010122397, ISBN: 0-7803-1893-5 *
DILEEP BHANKARKAR ET AL: "VAX VECTOR ARCHITECTURE", PROCEEDINGS OF THE ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE. SEATTLE, MAY 28 - 31, 1990, LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. SYMP. 17, 28 May 1990 (1990-05-28), pages 204 - 215, XP000144782, ISBN: 0-8186-2047-1 *
WEBERPALS H: "ARCHITECTURAL APPROACH TO THE IBM 3090E VECTOR PERFORMANCE", PARALLEL COMPUTING, ELSEVIER PUBLISHERS, AMSTERDAM, NL, vol. 13, no. 1, 1990, pages 47 - 59, XP000103375, ISSN: 0167-8191 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084297A2 (fr) * 2000-05-01 2001-11-08 Broadcom Corporation Procede et systeme permettant d'obtenir un processeur souple et efficace utilise dans un traitement graphique
WO2001084297A3 (fr) * 2000-05-01 2002-06-13 Broadcom Corp Procede et systeme permettant d'obtenir un processeur souple et efficace utilise dans un traitement graphique
WO2004015568A3 (fr) * 2002-08-07 2004-10-07 Pact Xpp Technologies Ag Procede et dispositif de traitement de donnees
US7693257B2 (en) 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization

Also Published As

Publication number Publication date
KR19980018069A (ko) 1998-06-05
TW346573B (en) 1998-12-01
JPH1091596A (ja) 1998-04-10
US6425054B1 (en) 2002-07-23
DE19735981A1 (de) 1998-03-26
DE19735981B4 (de) 2007-02-22
KR100280285B1 (ko) 2001-02-01
CN1175037A (zh) 1998-03-04
CN1129078C (zh) 2003-11-26
FR2752466B1 (fr) 2005-01-07
JP3954163B2 (ja) 2007-08-08

Similar Documents

Publication Publication Date Title
FR2752466A1 (fr) Dispositif processeur integre de signaux numeriques
JP4426099B2 (ja) 共有メモリを有するマルチプロセッサ装置
Lehn et al. Evaluation of rapid context switching on a CSRC device
US6170049B1 (en) PC circuits, systems and methods
US6141744A (en) PC circuits, systems and methods
US6470380B1 (en) Signal processing device accessible as memory
FR2752630A1 (fr) Traitement de donnees multiples a une seule instruction dans un processeur de signaux multisupport
JP2001500686A (ja) メディア・コプロセッサにより共用ワークステーションメモリ上で実行される圧縮及び復元方式
FR2752965A1 (fr) Traitement de donnees multiples a une seule instruction utilisant des rangees multiples de registres vectoriels
FR2862147A1 (fr) Reconfiguration dynamique de liaisons de type pci-express
FR2752467A1 (fr) Appareil de memorisation permanente de donnees
CA2308328A1 (fr) Systeme de traitement de donnees d'echantillons de donnees logiquement adjacents, tels que des donnees d'images dans un systeme video
US20150006825A9 (en) Method and Apparatus for Memory Write Performance Optimization in Architectures with Out-of-Order Read/Request-for-Ownership Response
US7336284B2 (en) Two level cache memory architecture
US8464006B2 (en) Method and apparatus for data transmission between processors using memory remapping
FR2678400A1 (fr) Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation.
FR2752629A1 (fr) Traitement de donnees multiples a une seule instruction avec operations scalaires/vectorielles combinees
JPH07505972A (ja) 異なるバイト順序を有する要素間の通信を容易にする装置,システム及び方法
US6119191A (en) Performing PCI access cycles through PCI bridge hub routing
US7861007B2 (en) Method and apparatus for multimedia display in a mobile device
EP1249760A1 (fr) Dispositif de traitement de données par plusieurs processeurs
FR2796478A1 (fr) Systeme d'ordinateurs multiprocesseur
EP0274327B1 (fr) Système d'échanges d'informations entre une mémoire et des organes périphériques
AU766467B2 (en) Graphics processing system
JP3474347B2 (ja) マイクロコンピュータの命令解読部

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 20