Brevet FR2770007A1 — publié le 19990423

ARRIÈRE-PLAN DE L'INVENTION 1. Domaine de l'invention La présente invention concerne une allocation de mémoire pour un traitement audio temps réel. En particulier, la présente invention concerne une commutation de groupes de DRAM (mémoire vive dynamique) pour un stockage de données audio temps réel. 2. Description de l'art antérieur Le traitement de signal audio temps réel nécessite un temps d'accès rapide. Dans un système audio typique, il y a un processeur à usage général et un processeur de signal numérique (DSP) spécialisé. Le processeur à usage général ou processeur hôte est une quelconque unité centrale de traitement (CPU) à usage général telle que celles dans un ordinateur personnel (PC). Le processeur hôte réalise habituellement un stockage de données, un interfaçage utilisateur, une commande de réseau et toute autre commande à usage général ainsi que des fonctions auxiliaires. Le processeur hôte réalise également un interfaçage sur des dispositifs périphériques tels qu'une communication série, des contrôleurs de disque (par exemple un contrôleur de disque dur). Le DSP réalise habituellement des fonctions de traitement de signal afin de traiter des données audio en temps réel telles qu'un filtrage numérique. De multiples groupes de mémoire séparés peuvent être accédés à la fois par le processeur hôte et par d'autres dispositifs à accès mémoire direct (DMA) tels qu'un contrôleur SCSI. Un traitement de signal audio temps réel met en jeu habituellement trois modes de fonctionnement de base enregistrement, lecture et édition. Pendant le mode enregistrement, les données audio sont envoyées depuis des canaux d'entrée audio et sont stockées dans des mémoires à accès aléatoire ou mémoires vives (RAM) par le DSP. Les données audio sont ensuite transférées à un dispositif de stockage tel qu'une unité de disque dur via le contrôleur SCSI. Pendant le mode lecture, les données audio stockées dans l'unité de disque dur sont tout d'abord transférées à une mémoire vive (RAM) via le contrôleur SCSI. Le DSP accède à la RAM afin de traiter les données audio et de les émettre en sortie sur les canaux de sortie audio appropriés. La RAM est typiquement organisée en tant que multiples groupes de mémoire qui peuvent être accédés à la fois par le DSP et par le contrôleur SCSI. Les techniques traditionnelles mettent en jeu le transfert de données pour remplir un groupe de mémoire avant de passer au groupe de mémoire suivant. Cependant, si un groupe de mémoire est occupé pour recevoir des données, il ne peut pas être accédé immédiatement par le DSP, ce qui conduit à un retard de traitement. Par conséquent, il existe un besoin pour proposer un appareil et un procédé permettant une allocation mémoire efficace pour un traitement de signal audio temps réel. RESUME DE L'INVENTION La présente invention décrit un procédé permettant d'allouer des données audio temps réel provenant de N canaux audio dans un système comportant un premier processeur et un second processeur. Le procédé comprend les étapes de (1) constitution de P groupes de mémoire o chaque groupe de mémoire peut être accédé par les premier et second processeurs et de (2) stockage de P sous-jeux des données audio dans respectivement les P groupes de mémoire o les P sous-jeux correspondent à P groupes différents de canaux audio. BREVE DESCRIPTION DES DESSINS Les caractéristiques et avantages de la présente invention apparaîtront au vu de la description détaillée qui suit de la présente invention et des dessins annexés parmi lesquels: la figure 1 est un schéma fonctionnel qui représente un mode de réalisation d'un système de lecteur/enregistreur audio qui fonctionne conformément aux enseignements de la présente invention; la figure 2 est un schéma qui représente un mode de réalisation d'une boîte intégrée du système de lecteur/enregistreur audio; la figure 3 est un schéma qui représente un mode de réalisation de groupes de mémoire; la figure 4 est un schéma de cadencement qui représente l'échantillonnage d'un signal audio; la figure 5 est un schéma qui représente un mode de réalisation de l'allocation de données audio échantillonnées stockées dans les groupes de mémoire; et la figure 6 est un organigramme qui représente un processus de lecture des échantillons audio à partir d'une mémoire de masse. DESCRIPTION DE LA PRÉSENTE INVENTION La présente invention décrit un procédé pour une allocation mémoire efficiente afin de réduire le temps d'attente mémoire dans un système de traitement de signal audio temps réel. La mémoire est divisée selon des groupes de mémoire séparés pour des accès indépendants par le processeur hôte et par le processeur de signal numérique (DSP). Les échantillons audio sont stockés dans les groupes de mémoire d'une façon entrelacée afin de distribuer l'accès mémoire sur de multiples groupes de mémoire. Cette allocation mémoire permet à un contrôleur d'interface système de petit ordinateur (SCSI) et au DSP un accès équivalent aux groupes de mémoire. Dans la description qui suit, dans le contexte de l'explication, de nombreux détails sont mis en exergue afin d'assurer une meilleure compréhension de la présente invention. Cependant, il apparaîtra à l'homme de l'art que ces détails spécifiques ne sont pas requis afin de mettre en oeuvre la présente invention. Dans d'autres cas, des structures et circuits électriques bien connus sont représentés sous forme de schéma fonctionnel afin de ne pas obscurcir de façon non nécessaire la présente invention. Par report à la figure 1, un schéma fonctionnel qui représente un mode de réalisation d'un système de lecteur/enregistreur audio 100 qui fonctionne conformément aux enseignements de la présente invention est représenté. Le système 100 comprend des boîtes intégrées (EBX) EBX1 à EBXN 1101 à 11ON ("N" étant un nombre entier positif), K ordinateurs client à distance (RCC) 120, à 120K ("K" étant un nombre entier positif), un canal de réseau 115, des canaux d'entrée/sortie standards de Audio Engineering Society (AES) 125 et une horloge de synchronisation 130. Chacune des EBX 1101 à 11ON est un système de traitement de signal audio avec une mémoire de masse. Selon un mode de réalisation, chaque EBX inclut un système d'ordinateur personnel (PC) et un ou plusieurs processeurs de signal numérique (DSP). D'autres configurations qui assurent des fonctionnalités similaires sont également envisagées. Des données échantillonnées audio sont stockées dans de multiples groupes de mémoire vive dynamique (DRAM). Ces groupes de DRAM sont accessibles par à la fois le processeur hôte du PC et le DSP. Les détails de l'architecture des EBX feront l'objet d'une discussion ultérieure. Chacun des RCC 1201 à 120K constitue une interface utilisateur graphique (GUI) pour des utilisateurs qui envoient une information de commande et de contrôle aux EBX 1101 à 110N sur le canal de réseau 115. Chaque RCC présente deux modes de communication avec les EBX: adressage individuel et diffusion. Selon l'adressage individuel, le RCC délivre l'information de commande/contrôle à la EBX spécifiée. L'adresse individuelle de la destination est codée en tant que partie de l'information de commande/contrôle. Les canaux I/O (entrée/sortie) d'AES 125 sont constitués par 16 canaux I/O audio pour une EBX conformément au standard AES. Le standard est AES 3-1992 et il est disponible auprès de Audio Engineering Society, Inc., New York. L'horloge de synchronisation 130 produit un signal de cadencement maître pour synchroniser toutes les activités temps réel des EBX 1101 à 11 0N Par report à la figure 2, un schéma fonctionnel qui représente un mode de réalisation de l'EBX 110 est représenté. L'EBX 110 comprend un ou plusieurs processeurs 2054 à 205M ("M" étant un nombre entier positif) et un élément de mémoire principale 230 (par exemple une mémoire vive dynamique "DRAM", une mémoire vive statique "SRAM" etc...) couplés ensemble au moyen d'un jeu de puces 220. En général, le jeu de puces 220 fonctionne en tant qu'interface entre un bus hôte 210 et un bus périphérique 235. Les processeurs 205, à 205M sont n'importe quels microprocesseurs. Selon ce mode de réalisation, les processeurs 2054 à 205M sont les microprocesseurs Pentium (marque déposée) ou Pentium Pro (marque déposée) fabriqués par Intel Corporation à Santa Clara, Californie. Le jeu de puces 220 inclut typiquement un contrôleur de DRAM cache (CDC), un contrôleur de bus périphérique et une unité de voie de données (DPU). Le pont d'interconnexion de composants périphériques (PCI) (ce pont est appelé BP) assure un jeu de transpositions de transactions de bus hôte à PCI et PCI à hôte. Le bus hôte 210 est un bus qui peut supporter des transactions sur un certains nombre de processeurs connectés. Le bus hôte 210 peut être appelé bus parallèle ou bus multiprocesseur du fait qu'il supporte des opérations parallèles et de multiples processeurs. Il est envisagé que le bus hôte 210 fonctionne en pipeline afin d'augmenter l'efficacité. Cependant, ces caractéristiques ne doivent pas être envisagées comme limitant les enseignements de la présente invention. La présente invention peut être utilisée même s'il y a seulement un seul processeur connecté au bus hôte 210 ou si le bus hôte 210 est un bus uniprocesseur. Le bus périphérique 235 constitue une voie de communication entre les processeurs 205, à 205M OU un élément de mémoire 230 et une pluralité de dispositifs périphériques 2504 à 250p ("P" étant un nombre entier positif). Ces dispositifs périphériques 2501 à 250p peuvent inclure des dispositifs I/O tels qu'un contrôleur de disque 2501, une carte de réseau local (LAN) 2502. Selon un mode de réalisation, le contrôleur de disque 250, est un contrôleur d'interface système de petit ordinateur (SCSI)-2 qui est interfacé sur un certain nombre de dispositifs de mémoire de masse tels qu'une unité de lecture/écriture optique 252 et qu'une unité de disque dur 254 par l'intermédiaire du bus SCSI-2. Le sous-système de traitement de signal (SPS) 270 qui inclut des processeurs de signal numérique (DSP), de multiples groupes de mémoire vive dynamique (DRAM) et de multiples circuits d'interface de bus PCI est pertinent pour la présente invention. Le SPS 270 comporte une interface sur le dispositif de communication d'entrée/sortie 272 qui est connectée à l'interface de canal I/O d'AES 274. Le bus périphérique 235 peut inclure un bus d'interconnexion de composants périphériques (PCI) ou n'importe quel autre type d'architecture de bus. Le bus d'extension 255 constitue une voie de communication entre le bus périphérique 235 et une pluralité de dispositifs périphériques d'extension 2601-260L ("L" étant un nombre entier positif). Le bus d'extension 255 peut inclure un bus ISA (Industry Standard Architecture) ou un bus EISA (Extended Industry Standard Architecture). Le pont PCI à ISA/EISA 240 constitue la voie de communication entre le bus périphérique ou PCI 235 et le bus d'extension ou ISA/EISA 255. Le terme processeur PCI se réfère à un processeur qui peut réaliser une commande du bus PCI pour des transferts de données. Un symbole # après un nom de signal indique un signal actif de niveau bas. L'absence de ce symbole indique un signal actif de niveau haut. La notation Ox se réfère à une notation hexadécimale. Le SPS 270 inclut un ou plusieurs processeurs de signal numérique (DSP) et un certain nombre de groupe de mémoire. Le SPS 270 inclut un système de mémoire 300 qui fonctionne conformément aux enseignements de la présente invention. Par report à la figure 3, un schéma fonctionnel qui représente un mode de réalisation du système de mémoire 300 est représenté. Le système de mémoire 300 comprend deux multiplexeurs 2 à 1 MUX0 310 et MUX1 311 et deux groupes de mémoire DRAM BANK0 et DRAM BANK1 320 et 321. Comme il sera expliqué ultérieurement, un système comportant N groupes de mémoire peut être utilisé avec N multiplexeurs 2 à 1. Le MUX0 310 et le MUX1 311 sont des multiplexeurs 2 à 1 connectés respectivement au bus DSP et au bus PCI (pour un accès SCSI) ainsi qu'à la DRAM BANK0 320 et qu'à la DRAM BANK1. Chacun des MUX0 310 et MUX1 311 est constitué conceptuellement de deux multiplexeurs: un multiplexeur d'adresse (unidirectionnel) et un multiplexeur de données (bidirectionnel). Par souci de clarté, seulement un multiplexeur est représenté et la direction est représentée comme étant bidirectionnelle. Selon le présent mode de réalisation, les multiplexeurs sont réalisés par les commutateurs bidirectionnels numéro QS3257 ou par des dispositifs similaires fabriqués par Quality Semiconductor (Santa Clara, Californie). Les MUX0 310 et MUX1 311 sont respectivement commandés par les signaux SEL0 et SEL1. Lorsque SEL0 et SEL1 sont à un premier niveau logique (par exemple le niveau bas), le transfert de données s'effectue entre le groupe de DRAM sélectionné et le bus PCI (contrôleur SCSI). Lorsque SEL0 et SEL1 sont à un second niveau logique (par exemple un niveau logique haut), le transfert de données s'effectue entre le groupe de DRAM sélectionné et le bus DSP. Les DRAM BANK0 320 et DRAM BANK1 321 sont deux groupes de mémoire vive dynamique (DRAM) qui fonctionnent séparément et de manière indépendante. Comme il est bien connu de l'homme de l'art, d'autres types de mémoire tels qu'une RAM statique peuvent également être utilisés. Selon un mode de réalisation, chaque groupe de DRAM est organisé en tant que 4Mx32 ou 16 méga-octets. En commandant les signaux SEL0 et SEL1, les deux groupes de DRAM peuvent être accédés simultanément par deux processeurs différents. Par exemple, le contrôleur SCSI peut accéder à la DRAM BANK0 320 pour stocker des données. tandis que le DSP est en train de lire des données depuis la DRAM BANK1 321. Par report à la figure 4, un schéma de cadencement 400 qui illustre l'échantillonnage de signaux audio est représenté. Le schéma de cadencement 400 est constitué par une horloge audio 410, une horloge (CLK) 420 et des données échantillonnées audio 430. L'horloge audio 410 est une horloge qui correspond à la fréquence d'échantillonnage audio de 48 kHz qui conduit à une période d'échantillonnage d'approximativement 20 microsecondes. Selon un mode de réalisation, pendant chaque période d'échantillonnage, 16 échantillons provenant de 16 canaux audio sont reçus depuis les ports d'entrée AES série et sont stockés dans les groupes de DRAM dans le mode enregistrement. Pendant la même période d'échantillonnage, la lecture de l'information audio numérique est réalisée en lisant les données stockées dans les groupes de DRAM et en les envoyant sur les ports de sortie d'AES série. La CLK 420 indique la séparation de 16 canaux pendant chaque période d'horloge audio. Les données échantillonnées audio 430 représentent la série de données audio échantillonnées. Chacune des données audio échantillonnées correspond à un échantillon audio pour chaque canal. Le nombre d'échantillons obtenus à chaque intervalle temporel dépend du nombre de canaux sélectionnés. Selon un mode de réalisation, le nombre de canaux sélectionnés est de 16. Pour le mode de réalisation représenté sur la figure 4, pendant l'intervalle temporel T1, 16 échantillons provenant de 16 canaux à raison d'un depuis chaque canal sont obtenus. Ensuite, les 16 échantillons suivants provenant de 16 canaux sont obtenus pendant l'intervalle temporel T2. Par report à la figure 5, un schéma qui représente l'allocation de données échantillonnées audio dans les deux groupes de mémoire est représenté. La DRAM BANK0 est configurée pour stocker des données échantillonnées audio provenant de canaux 0, 2, 4,...14 (les canaux pairs). La DRAM BANK1 est configurée pour stocker des données échantillonnées audio provenant des canaux 1, 3, 5,...15 (les canaux impairs). Ce schéma d'allocation peut être étendu à plus de deux groupes de mémoire. L'objet est de distribuer également le stockage de tous les canaux audio sur la totalité des groupes de mémoire de telle sorte que l'accès de l'ensemble des 16 canaux ne soit pas concentré dans un seul groupe de mémoire ou dans seulement quelques groupes de mémoire. Moyennant cette allocation équivalente, il y a moins de risque que le contrôleur SCSI et le DSP n'accèdent au même groupe de mémoire en même temps. Même s'ils le font, un processeur n'a pas à attendre trop longtemps son tour pour accéder à la mémoire. Le résultat est que des données échantillonnées audio sont écrites dans ou lues à partir des groupes de mémoire à un débit plus rapide pour faire face à un traitement temps réel. Par exemple, s'il y a P groupes de mémoire, la DRAM BANK0 stocke des données échantillonnées provenant des canaux canal 0, canal P, canal 2P, canal 3P, etc... La DRAM BANK1 stocke des données échantillonnées provenant des canaux canal 1, canal P+1, canal 2P+1, canal 3P+1 etc... La DRAM BANKP stocke des données échantillonnées provenant des canaux canal P-i, canal 2P-1, canal 3P- 1, etc... En général, chaque groupe de DRAM doit stocker un sous-jeu de données audio qui correspond à un groupe différent de canaux audio. Par report à la figure 6, un organigramme qui représente le processus S600 afin de lire les échantillons audio à partir d'une mémoire de masse et afin de lire les donnés audio est représenté. Selon ce mode de réalisation, deux groupes de mémoire (DRAM BANK0 et DRAM BANK1) sont utilisés. L'enregistrement est réalisé en utilisant le même procédé d'allocation mémoire. En partant d'un état DEBUT, le processus S600 entre dans une étape S610. Au niveau de l'étape S610, le processeur hôte détermine I'emplacement des données audio qui seront utilisées pour demander en instruction au contrôleur SCSI de lire les données échantillonnées audio à partir du disque dur ou d'autres dispositifs de mémoire de masse. Le processus S600 entre ensuite au niveau de l'étape décisionnelle S620 pour déterminer si le numéro de canal est pair ou impair. S'il est déterminé que le numéro est pair, le processus S600 entre au niveau de l'étape S630 pour sélectionner et allouer un bloc de mémoire dans la DRAM BANK0 pour stocker les données échantillonnées. Ensuite, le processus S600 entre au niveau de l'étape S640 pour écrire les données échantillonnées audio dans la DRAM BANK0. Le processus est alors terminé. S'il est déterminé que le numéro de canal est impair, le processus S600 entre au niveau de l'étape S631 pour sélectionner la DRAM BANK1 pour stocker les données échantillonnées. Puis au niveau d'une étape S641, les données échantillonnées audio sont écrites dans la DRAM BANK1. Le processus est alors terminé. Bien que la présente invention ait été décrite par report à des modes de réalisation illustratifs, cette description n'est pas destinée à être considérée dans un sens limitatif. Diverses modifications des modes de réalisation illustratifs ainsi que d'autres modes de réalisation de l'invention qui apparaîtront à l'homme de l'art concerné par la présente invention sont considérés comme tombant dans l'esprit et le cadre de l'invention. REVENDICATIONS 1. Procédé d'allocation de données audio temps réel provenant de N canaux audio dans un système comportant un premier processeur et un second processeur, le procédé étant caractérisé en ce qu'il comprend les étapes de: constitution de P groupes de mémoire, chaque groupe de mémoire pouvant être accédé par les premier et second processeurs et stockage de P sous-jeux desdites données audio dans respectivement P groupes de mémoire, les P sous-jeux correspondant à P groupes différents de canaux audio. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre, avant l'étape de stockage, une étape de sélection desdits groupes de mémoire pour un accès au moyen de l'un des premier et second processeurs. 3. Procédé selon la revendication 1, caractérisé en ce que P est égal à 2. 4. Procédé selon la revendication 3, caractérisé en ce qu'un sous-jeu desdites données audio correspond à des canaux audio de numéros pairs et un autre sous-jeu desdites données audio correspond à des canaux audio de numéros impairs. 5. Système comportant des premier et second bus (210, 235) pour traiter des données audio temps réel provenant de N canaux audio, le système étant caractérisé en ce qu'il comprend: un premier processeur et un second processeur couplés respectivement auxdits premier et second bus; et P groupes de mémoire (320, 321) couplés auxdits premier et second bus pour stocker lesdites données audio, lesdits P groupes de mémoire pouvant être accédés par lesdits premier et second processeurs, lesdits P groupes de mémoire stockant respectivement P sous-jeux desdites données audio, lesdits P sous-jeux correspondant à P groupes différents de canaux audio. 6. Système selon la revendication 5, caractérisé en ce qu'il comprend en outre P sélecteurs couplés auxdits premier et second bus (210, 235) pour sélectionner lesdits groupes de mémoire (320, 321) pour un accès par l'un desdits premier et second processeurs. 7. Système selon la revendication 6, caractérisé en ce que les P sélecteurs incluent P multiplexeurs d'adresse (310, 311) et P émetteurs-récepteurs de données. 8. Système selon la revendication 5, caractérisé en ce qu'un sous-jeu desdites données audio correspond à des canaux audio de numéros pairs et un autre sous-jeu desdites données audio correspond à des canaux audio de numéros impairs. 9. Système selon la revendication 5, caractérisé en ce que les P groupes de mémoire incluent des mémoires vives dynamiques.