FR 2692381 A1 19931217 FR 9207208 A 19920615 41- SYSTEME DE TRANSMISSION DE DONNEES ENTRE UN BUS D'ORDINATEUR ET UNE MEHOIRE DE MASSE. La présente invention concerne un système de transmission de données entre un bus d'ordinateur et une mémoire de masse Elle est plus particulièrement applicable à une mémoire de masse comportant une pluralité de mémoires à disques et/ou dérouleurs de bandes magnétiques, ces unités étant reliées entre elles par une liaison spécifique normalisée à laquelle le système est relié physiquement. Les liaisons de transmission utilisées pour les mémoires de masse comportant des mémoires à disques ou des dérouleurs de bandes sont les liaisons de type SCSI, normalisées aussi15 bien à l'ANSI qu'à 1 'I S O (ces deux sigles signifient respectivement American National Standard Institute et International standard organisation>. Le support physique de transmission de la liaison est constitué par un bus supportant deux types de mémoires, à savoir, d' u part les mémoires à disques magnétiques et d'autre part, aes dérouleurs de bandes magnétiques. Sur un même bus de type SCSI, on peut connecter, selon la norme, jusqu'à 6 unités périphériques, que ce soient des mémoires à disques ou des dérouleurs de bandes. Une autre caractéristique de la norme SCSI est la suivante: lorsque une unité périphérique a reçu des30 commandes d'exécution de la part du système de transmission, consistant soit à inscrire des données sur les supports d'enregistrement magnétique qu'elles contiennent, soit à les lire, ces unités peuvent se déconnecter du canal physique auquel elles sont reliées et35 effectuer leur travail indépendamment de toute liaison avec l'extérieur. Sur un bus de type SCSI, les messages d'informations sont 2 constitués d'une pluralité de trames constituées chacune de données utiles encadrées dans le temps par des caractères de commande et par des messages d'état communément appelés status placés respectivement en tête et queue de trame.5 Par ailleurs, on sait que l'ensemble des éléments constitutifs fonctionnels d'un ordinateur, qu'il s'agisse des processeurs, des mémoires, ou encore des contrôleurs d'entrée/sortie de périphériques sont disposés sur un10 ensemble de cartes à dimensions normalisées Ces dernières sont reliées à un même bus de type généralement parallèle assurant les communications entre les différents processeurs et le transport de données entre les cartes, ainsi que l'alimentation électrique de ces dernières.15 L'un des bus les plus couramment utilisé est le multibus II (marque déposée par la Société INTEL), dont l'architecture est structurée autour d'un bus principal de type parallèle, communément appelé PSB (ce qui signifie Parallel system20 Bus) et normalisé suivant la norme IEEE 1296 (Institute of Electrical and Electronic Engineers). Ainsi qu'on peut le voir à la figure 1, un tel bus d'ordinateur PSB est relié, à deux liaisons de type SCSI,25 symbolisées par les deux bus BD 1 et BD 2, au moyen d'un dispositif passerelle de connexion, ou encore système de transmission de données, dont la fonction est d'adapter les conditions de transmission des informations sur PSB, aux conditions de transmission sur les deux bus BD 1-BD 2 de30 liaison SCSI En effet, les modes de transmission des données, d'une part sur PSB et d'autre part sur les deux bus BD 1 ou BD 2 sont totalement différents, aussi bien en ce qui concerne le débit de transmission des informations, qu'en ce qui concerne les protocoles de transmission35 utilisés, les codes d'écriture, les informations, le format, les caractères de commande, etc. La figure 1 montre deux systèmes de transmission de données 3 MSP 1, MSP 2 Le premier d'entre eux, MS Pl est connecté à PSB d'une part et d'autre part aux deux bus BD 1 et BD 2. Par ailleurs, le second système de transmission de données MSP 2 est connecté seulement au bus BD 2 Dans l'exemple de réalisation montré à la figure 1, 6 unités de stockage de données sont connectées au bus BD 1, à savoir les 5 unités de mémoire à disques D 1 à D 5 et le dérouleur T 6 Le bus BD 2 est connecté aux 5 mémoires à disques D 7 à D 1 l et au10 dérouleur de bandes D 12 Le bus BD 1 n'étant connecté qu'au seul système de transmission de données MSP 1, il comporte en son extrémité un bouchon terminateur TER, voisin du dérouleur de bande T 6 à la figure 1. Il va de soi que le bus PSB est connecté à un ordinateur ORD. La structure physique générale d'un système de transmission de donnée (ou dispositif passerelle de connexion) qui est20 rappelée à la figure 2 est décrite plus en détail, ainsi que ses divers modes de réalisation et de fonctionnement dans l'une et l'autre des demandes de brevet NO 91 08908 déposée le 15 07 91 par la demanderesse sous le titre "dispositif universel de couplage d'un bus d'ordinateur à un contrôleur d'un groupe de périphériques", et N O 91 08907 déposée le même jour par la même compagnie sous le titre "système d'exploitation pour dispositif universel de couplage d'un bus d'ordinateur à une liaison spécifique d'un réseau".30 Un tel système de transmission de données MSP se compose de deux parties à savoir d'une part un dispositif universel de couplage GPU (sigle anglais de General Purpose Unit) et d'un dispositif adaptateur DEA.35 Le dispositif GPU est relié à PSB par un coprocesseur MPC, par exemple VL 82 c 389 fabriqué par la Société INTEL, lequel communique par mode message avec l'ordinateur ORD, ce mode étant défini dans la norme précitée IEEE 1296. Le dispositif DEA est relié physiquement au deux bus BD 1 et BD 2 auxquels sont connectés respectivement les différentes5 unités de stockage indiquées à la figure 1 L'ensemble des disques Dl à D 5 et le dérouleur de bande D 6 forme le système de mémoire de masse SCSI 1, alors que les autres disques D 7 à Dîl et le dérouleur de bandes D 12 forment le système de mémoire de masse SCSI 2.10 Le dispositif GPU comprend les différents éléments constitutifs essentiels suivants: le coprocesseur MPC déjà cité, le microprocesseur CPU constituant de fait l'unité centrale du dispositif GPU, muni d'un bus interne BI pour le transport des commandes et des instructions destinées aux différentes unités de stockage composant les systèmes20 SCS Ii et SCSI 2, et d'autre part d'un bus d'adresse BAD transportant les adresses relatives à ces différentes commandes Ce microprocesseur est associé respectivement à une mémoire programmable effaçable EPROM, une mémoire vive SRAM et un gestionnaire d'interruption à savoir MFP Tous25 ces éléments EPROM, SRAM, MFP sont tous connectés au bus interne BI et au bus d'adresse BAD, la mémoire de type vidéo-RAM à double port désignée par VRAM, le contrôleur d'accès direct mémoire DMAC, connecté d'une part au bus B 2 reliant ce contrôleur à la mémoire VRAM et d'autre part au bus B 3 le reliant au coprocesseur MPC, le bus Bl qui relie la mémoire VRAM au dispositif adaptateur DEA dont les éléments constitutifs seront décrits par la suite. Le microprocesseur CPU est, dans l'exemple de réalisation décrit ici, de type 68020 fabriqué par la Firme MOTOROLA. Le bus interne BI est un bus non multiplexé de 32 bits, alors que le bus BAD est sur 32 bits d'adresse.5 La mémoire morte effaçable EPROM a par exemple une capacité de 128 ou 256 Kilo-octets et elle contient les programmes d'auto-tests et d'initialisation de GPU. Le système d'exploitation du microprocesseur CPU (operating System) désigné par GPOS (sigle anglais de General Purpose Operating system) est contenu dans la mémoire statique SRAM et est chargé à l'initialisation du dispositif de couplage GPU La capacité de cette mémoire est 512 Kilo-octets ou 115 Méga-octets par exemple Il est décrit dans la demande 91 08907 précitée. On voit à la figure 2 que le contrôleur d'accès direct DMAC est connecté en série d'une part entre la mémoire VRAM et20 le coprocesseur MPC et d'autre part entre ce dernier et le bus BI du microprocesseur CPU. Une description détaillée de la structure et du fonctionnement du contrôleur DIAC est donnée dans la25 demande de brevet français 91 15814 déposée le 19 12 91 par la compagnie demanderesse sous le titre "Contrôleur de transfert multiple de données entre une pluralité de mémoires et un bus d'ordinateur". Le système d'exploitation ici désigné par GPOS organise le fonctionnement d'ensemble du microprocesseur et par conséquent supervise le transfert des trames provenant de l'ordinateur ORD (ou de l'un ou l'autre des systèmes SCSI 1, SCSI 2) depuis le bus PSB jusqu'à la mémoire VRAM et35 réciproquement Par ailleurs, le programme d'adaptation des protocoles utilisés d'une part entre l'ordinateur ORD et le dispositif de couplage via le bus PSB, et d'autre part sur la liaison de type SCSI est contenue par exemple dans la 6 mémoire SRAM. Le microprocesseur CPU est donc le cerveau du dispositif de couplage GPU: il initialise le transfert des données,5 réalise l'adaptation des protocoles, met en oeuvre son système d'exploitation et transfère les données entre DEA et l'ordinateur ORD et réciproquement tout en dialoguant avec DEA avec lequel il échange des commandes et des status par exemple de la manière qui sera décrite plus loin.10 La description détaillée du rôle et du fonctionnement des autres éléments du dispositif de couplage est effectuée dans les trois demandes de brevet précitées. Les éléments constitutifs essentiels du système d'exploitation GPOS du dispositif universel de couplage GPU sont rappelés à la figure 3. Le système d'exploitation GPOS est constitué du noyau central NY assurant les fonctions de base du système entouré d'une pluralité de gestionnaires assurant chacun une fonction spécifique Ces gestionnaires sont le gestionnaire d'application GA, le serveur d'intercommunication SA, le gestionnaire d'incidents GI, le25 starter ST, le gestionnaire de commande GC, le gestionnaire d'accès à terminal GAT, le metteur au point interactif IOMX. Autour de ce système d'exploitation gravitent des applications qui lui sont de fait associées, chacune de celles-ci communiquant et dialoguant avec le noyau central NY et tout ou partie des gestionnaires entourant ce dernier Les applications sont autonomes et indépendantes entre elles Dans le système de transmission de données35 selon l'invention, ces applications sont au nombre de deux et désignées par Al et A 2. Dans l'exemple de réalisation de l'invention décrit ici, 7 l'application Ai est relative au système de mémoire de masse SCSI 1, alors que l'application A 2 est relative au système de mémoire de masse SCSI 2 Le rôle de chaque application consiste d'une part à effectuer le transfert5 des données dans les deux sens entre la mémoire VRAM et chacune des mémoires à disques et dérouleurs de bandes appartenant à SCS Il ou SCSI 2 o ces données doivent être écrites ou lues et d'autre part à transférer les commandes d'écriture ou de lecture relative à ces mêmes données vers ces mêmes mémoires à disques et dérouleurs. Les éléments essentiels du système d'exploitation GPOS sont le noyau NY, le gestionnaire d'application GA et le serveur d'intercommunication SA Les autres gestionnaires ne seront15 pas décrits davantage ici Leurs rôles est plus abondamment décrit dans la demande de brevet 91 08907 précitée. Le noyau NY effectue la gestion de base du système en gérant et organisant en temps réel le travail des deux20 applications Ai et A 2, lorsque l'une et/ou l'autre est en train de tourner. Il répond aux demandes des gestionnaires qui l'entourent quand ceux-ci lui demande un service, mais ne prend aucune25 initiative Il gère également l'activation des processus composant chacune des applications Ai et A 2. Le gestionnaire GA surveille et définit l'état dans lequel doit se trouver l'un ou l'autre des applications Ai, A 2.30 Ces états sont au nombre de cinq et désignés par E O à E 5. L'état E O signifie que le service offert par l'application n'est pas disponible. L'état E 1 est l'état par lequel on lance l'application, et est en particulier celui o on effectue les opérations d'initialisation de tous les processus constituant 8 l'application et de toutes les tables qui lui correspondent. L' état E 2 est le plus fréquent et est celui dans lequel l'application est en train de tourner. L'état E 3 est l'état o l'application est en train de se terminer ou encore en train d'avorter. L'état E 5 est l'état pour lequel l'application est interrompue pour une faute ou une erreur. De plus amples détails sur chacun de ces états sont donnés dans la demande 91 08907 précitée.15 Le serveur d'intercommunication pour applications SA permet à chacune d'entre elles de communiquer avec une autre quand cela s'avère nécessaire Ainsi qu'il a été dit plus haut, chacune des applications étant autonome et indépendante par20 rapport aux autres, elles ne peuvent communiquer entre elles, que par l'intermédiaire de ce serveur SA. les différents éléments de GPOS communiquent entre eux et avec Ai et A 2 par des appels moniteur symbolisés par les25 flèches F Ai (entre NY et Al-A 2), FG 1-FG 2 (entre NY et GA- SA) Fi-F 2 (entre GA et Al-A 2) F 51-F 52 (entre SA et Al-A 2), ces appels étant également plus amplement décrits dans la demande 91 08907 précitée. La présente invention définit le rôle et le fonctionnement de l'une ou l'autre des applications Ai et A 2 dans le cadre du système de transmission de données auxquelles, de par leur association avec le système d'exploitation GPOS, elles appartiennent.35 Selon l'invention, le système de transmission de données entre un bus d'ordinateur et une mémoire de masse comportant une pluralité d'unité de stockage de données 9 reliées entre elles par une liaison spécifique à laquelle le système est relié physiquement comprenant: un microprocesseur central relié à au moins une mémoire contenant un système d'exploitation destiné à être exécuté par celui-ci, des moyens de transfert de trames depuis le bus d'ordinateur vers la liaison et réciproquement, dont le travail est organisé et géré par le microprocesseur, comprenant une mémoire de stockage de données disposée entre le bus et la liaison, caractérisé en ce que, il comporte au moins un microprocesseur d'entrée/sortie esclave du processeur central relié d'une part à la dite mémoire et d'autre part à la dite liaison, l'application comprenant: un processus d'initialisation de l'ensemble de l'application, une pluralité de processus d'adaptation distincts et indépendants les uns des autres dont chacun est associé à une unité de stockage d'un type déterminé,25 au moins un processus gestionnaire de tâches, les différents processus communiquant entre eux par sémaphore à message, chacun des processus d'adaptation réalisant la transformation et l'adaptation des commandes provenant de30 l'ordinateur (ORD) destinées à l'unité de stockage correspondante en commandes conformes au protocole utilisé sur la liaison spécifique, le processus gestionnaire autorisant le microprocesseur d'entrée/sortie à transférer physiquement les commandes et les données des trames35 correspondant à celles-ci depuis la mémoire vers la liaison et réciproquement, dès que le processus d'adaptation correspondant à terminé la dite adaptation. D'autres caractéristiques et avantages de la présente invention apparaîtront dans la description suivante donnée à titre d'exemple non limitatif et en se référant aux dessins annexés. Sur ces dessins: la Figure 1 montre comment est relié un ordinateur aux différentes mémoires à disques et dérouleurs de bandes connectés à la liaison de type SCSI, par l'intermédiaire du système de transmission de données selon l'invention, la Figure 2 montre les différents éléments structurels d'un système de transmission de données entre un bus d'ordinateur et un réseau par exemple de type SCSI, dont le dispositif universel de couplage est décrit dans la demande 91 08908 précitée. la Figure 3 rappelle la constitution du système d'exploitation du système de transmission de données selon l'invention telle qu'elle est décrite dans la demande 91 08907 précitée. la Figure 4 montre quelle est la structure de l'application mise en oeuvre dans le système de transmission de données selon l'invention. la Figure 5 montre comment sont réparties les informations et les commandes dans les mémoires vidéo-RAM et SRAM du dispositif universel de couplage appartenant au système de transmission de données selon l'invention. la Ficgure 6 montre comment est structuré un élément définissant les différentes composantes relatives à une commande à exécuter par l'une des unités de stockage du réseau SCSI, élément mémorisé dans la mémoire SRAM. la Figure 7 montre comment S 'échangent les commandes il entre les différents processus appartenant à l'application du système de transmission de données selon l'invention, la Figure 8 est un organigramme définissant les principales opérations mises en oeuvre par l'application appartenant au système de transmission de données selon l'invention, On se reporte à la figure 2 et on considère le dispositif adaptateur DEA qui est disposé entre le dispositif universel de couplage GPU et l'un et l'autre des deux bus BD 1 et BD 2. Le dispositif adaptateur DEA comprend un premier et un second microprocesseur d'entrée/sortie, à savoir CTRI et CTR 2 qu'on peut également considérer comme des contrôleurs de bus SCSI Chacun de ces microprocesseurs d'entrée/sortie est connecté d'une part au bus de données Bl et d'autre part au bus d'adresse BAD Par ailleurs, chacun de ces deux20 microprocesseurs est physiquement relié respectivement à BD 1 et BD 2 par l'intermédiaire des interfaces IF 1 et IF 2 dont le rôle est d'adapter le niveau des signaux électriques délivrés par les microprocesseurs CTR 1 et CTR 2, au niveau des signaux électriques utilisés sur les bus BD 1 et BD 2 tels qu'ils sont définis par la norme SCSI Par ailleurs, les deux interfaces physiques IF 1 et IF 2 ont des rôles de régénération des signaux provenant soit de CTR 1 et CTR 2, soit de BD 1 et BD 2 avant de les transmettre vers les deux premiers ou vers les deux seconds.30 Les deux microprocesseurs d'entrée/sortie sont, dans l'exemple de réalisation décrits ici, des microprocesseurs de type NCR 53 C 700 fabriqués par la firme NCR Ils exécutent un code qui leur est propre, appelé code SCRIPT.35 Celui-ci est un programme spécifique d'entrée/sortie réalisé dans un langage SCRIPT conçu par la Société NCR, pour la gestion des entrées/sorties conforme à la norme 12 SCSI. Ce code est inscrit en mémoire SRAM, à l'initialisation du système MS Pl (MSP 2) et est ensuite réécrit en mémoire VRAM5 par GPOS (ce code étant alors considéré par ce dernier comme des données utiles) autant de fois qu'il y a d'unités de stockage de données (mémoires à disques ou dérouleurs de bandes) associées aux bus BDî et BD 2 Le code SCRIPT est en fait constitué d'une suite de commandes compréhensibles10 uniquement par CT Ri et CTR 2 et qui permettent l'envoi de commandes à exécuter par toute unité de stockage déterminée et des données correspondantes, le transfert physique de ces commandes et données étant effectué, conformément au protocole SCSI par CTRî et CTR 2 Ceux- ci, de fait, sont15 esclaves du microprocesseur central CPU, lorsque ce dernier met en oeuvre Al ou A 2 Dès que l'une ou l'autre de ces deux applications leur donne l'ordre de travailler, ils exécutent alors leur tâche de manière autonome. Leur fonction est alors d'aller chercher les commandes et les données qui se situent dans la mémoire vidéo-RAM pour les envoyer vers les unités de mémoires à disques ou dérouleurs de bandes connectés à l'un ou l'autre des deux bus BDI et BD 2 et réciproquement.25 On considère à nouveau la figure 3 Ainsi qu'il a été dit plus haut, chacune des applications Al et A 2 est chargée de transmettre l'ensemble des commandes constituant un programme d'exécution des commandes devant être effectuées30 par chacune des unités de mémoires à disques ou dérouleurs de bandes appartenant à l'un ou l'autre des deux systèmes SCSII et SCSI 2 Un programme d'exécution de commandes est désigné sous le sigle CP, ce qui signifie Channel Program, en anglais.35 Un tel programme d'exécution de commande est composé d'une entête ('header", en anglais) suivi d'une pluralité de commandes élémentaires qui sont désignées sous le sigle 13 CCE, ce qui signifie Channel Comment entry, en anglais. Une telle CCE peut signifier: il faut lire les données dans telle ou telle unité de mémoire de masse, ou bien il5 faut écrire des données dans celle-ci, tout en définissant le secteur de la mémoire o ces données doivent être lues ou écrites, etc Autrement dit, un programme d'exécution de commandes ou Channel Programm CP est constitué de l'ensemble des commandes CCE destinées à un type d'accès particulier à une unité de mémoire donnée Ainsi, si l'application Ai (ou A 2) est associée à N unités de stockage de données (mémoires à disques ou dérouleurs), à chacune de ces unités15 correspondent m accès possibles, un Channel Programm correspondant à chacun de ces accès Si l'on définit un Channel Program relatif à une unité de mémoire à disque par exemple, il y aura m "channel Programm", ou encore m C Pj ou j = 1,2,3,m A chacun de ces Channel Programm C Pj20 correspond p commandes CCE. On considère la figure 4 qui montre la structure interne de l'une ou l'autre des applications Ai et A 2 Ces deux applications ont un processus d'initialisation commun, à25 savoir Po. La première application Ai traite les problèmes relatifs à deux canaux physiques virtuels PC 1 et PC 2, alors que l'application A 2 traite les problèmes relatifs à deux30 autres canaux physiques virtuels PC 3 et PC 4 Les canaux PC 1 et PC 2 concernent respectivement les mémoires à disques Dl à D 5 et le dérouleur de bandes D 6 Les deux canaux PC 3 et PC 4 concernent respectivement les mémoires à disques D 7 à Dil et le dérouleur de bandes D 12 Les deux canaux PC 1 et35 PC 2 sont ceux du bus BD 1 associé à SCS Il alors que les deux canaux PC 3 et PC 4 sont ceux du bus BD 2. L'ordinateur ORD voit quatre canaux physiques différents 14 PCî à PC 4, alors que MSPî (ou MSP 2) ignore leur existence et considère qu'il y a quatre canaux virtuels. A un même canal physique virtuel correspond un ou plusieurs processus associés chacun à une unité de stockage de données déterminée, que ce soit une mémoire à disques ou un dérouleur de bandes Ainsi, le canal PCî est associé à cinq processus, encore appelés canaux logiques, Pl à P 5 associés respectivement aux mémoires à disques Dl à D 5 Le canal PC 210 est associé à un seul processus ou canal logique, à savoir P 6 associé au dérouleur de bandes T 6 De même le canal PC 3 est associé aux cinq processus P 7 à Pll eux-mêmes associés aux mémoires à disques D 7 à Dll alors que le canal PC 4 est associé au processus P 12 lui-même associé au dérouleur de15 bandes T 12. Il est clair que les processus Pl à P 5 et P 6 appartiennent à l'application Al, tandis que les processus P 7 à Pll et P 12 appartiennent à l'application A 2. Tous les processus précédemment cités sont indépendants et autonomes les uns vis à vis des autres. L'application Al (A 2) comporte également un processus D Ri de gestion des tâches qui sont accomplies par les mémoires à disques et dérouleurs de bandes connectés au bus BD 1. Elle comprend également une procédure d'interruption I Ti (IT 2) destinée à gérer chacune des interruptions émises par CTRî (CTR 2) définies en des endroits spécifiques de son code SCRIPT Elle peut également être mise en oeuvre dès qu'une erreur relative à l'exécution du protocole SCSI est détectée par CT Ri (CTR 2), lorsque les unités de stockage connectées à BDI (BD 2) sont en train de traiter des commandes qui leur ont été envoyées par le système de35 traitement de données selon l'invention. De même, l'application A 2 comprend le processus de gestion de tâches DR 2, et la procédure d'interruption IT 2, ce processus et cette procédure traitant les événements qui surviennent sur le bus BD 2. Ainsi qu'on peut mieux le voir à la figure 7, le système d'exploitation GPOS ( par l'intermédiaire soit de son noyau NY, soit par son serveur SA) transmet une pluralité de programmes de commandes C Pj comprenant chacun une pluralité de commandes CCE Pour chaque programmme C Pj, les commandes sont transmises au processus qui doit les traiter, (par10 exemple l'un des processus Pl à P 5 ou P 6) par l'intermédiaire de l'un des sémaphores à messages SM 1 à SM 6 (chacun de ceux-ci est associée à un processus) On dit également que ces commandes sont postées dans ce sémaphore. Après avoir été postées dans celui-ci, le processus qui doit les traiter vient les y chercher, les interprète et effectue leur transformation de manière à ce qu'elle soient conformes à la norme SCSI On peut donc dire que chacun des processus Pl à P 6 (il est bien évident qu'il en serait de même pour les processus P 7 à P 12) assure la transformation20 des commandes CCE qui lui sont envoyées par le système d'exploitation GPOS ( et qui proviennent donc de l'ordinateur ORD) en commandes conforme aux protocoles écrites dans le langage SCSI connu de chacune des unités de stockage de données connectées au bus BD 1 Cette transformation est effectuée en mémoire VRAN qui contient des tables de correspondance entre commandes CCE et commandes SCSI. Une fois cette transformation des commandes en langage SCSI effectuée par le processus, celui-ci les transmet au gestionnaire DRI en les postant dans un sémaphore à messages associé à ce dernier, à savoir SMD 1 Le gestionnaire DR 1 met à jour le code SCRIPT de l'unité de stockage qu'on cherche à faire travailler, en mémoire VRAM, ceci étant possible du fait que, dans le sémaphore, sont contenus le numéro d'identification de l'unité de stockage et le pointeur de la table SCRIPT correspondante en VRAM (voir plus loin). On se réfère désormais à la figure 6 Celle-ci montre dans sa partie gauche une liste LS comprenant, dans l'exemple de réalisation décrit ici, 30 éléments El à E 30 définissant5 chacun une tâche exécutée par CTRI (CTR 2) correspondant à la transmission de données et des commandes correspondantes vers ou depuis une unité de stockage déterminée Bien entendu, avant que cette tâche ne soit à exécuter, cet élément est vide Ces 30 éléments El à E 30 sont chaînés entre eux Cette liste LS est située dans la mémoire SRAM. A tout moment, cette liste comprend des éléments libres et des éléments actifs lesquels contiennent des informations correspondant à une tâche précise devant être exécutée par CTR 1 (CTR 2).15 A cette liste LS correspond une pluralité de pointeurs permettant de localiser chacun des éléments d'une liste qu'ils soient libres ou actifs Il existe donc pour chaque élément libre de la liste un pointeur de début et un pointeur de fin, par exemple les pointeurs PL 1 et PL 2 de l'élément El supposé libre à la figure 6 De même, pour tout élément actif, il existe un pointeur de début et un pointeur de fin, par exemple, les pointeurs PL 2 et PL 3 pour l'élément E 2 supposé actif à la figure 6 De même,25 l'élément actif Ek comprend les pointeurs P Lk et P Lk+l. Tous lespointeurs des éléments actifs sont chaînés entre eux En outre la liste LS comprend un pointeur qui correspond au début de l'élément actif en train de travailler, ce qui signifie que les commandes qui y sont30 définies sont exécutées par CTR 1 (CTR 2) Ainsi, par exemple, si l'élément Ek est en train de travailler, le pointeur correspondant définissant l'élément actif travaillant est bien évidemment le pointeur P Lk. Chaque élément d'une liste comprend 11 lignes Ll à Lil, chaque ligne comportant 4 octets 1, 2, 3, 4 Ceci est visible sur la partie droite de la figure 6. 17 Le détail de la composition de chacune des lignes Li à Lll est le suivant: La ligne Li donne, pour chaque octet, les informations suivantes: 1 indique si l'élément considéré est ou non actif Ici un élément non actif correspond à un octet de valeur nulle, alors qu'un élément actif correspond à un octet ayant la valeur 1. l'octet 02 indique l'adresse du périphérique sur le bus B Di (BD 2) Outre les 6 périphériques qui peuvent être connectés sur le bus BD 1, on peut connecter les deux gestionnaires de tâches DR 1 et DR 2 Il y a donc 8 adresses possibles pour un bus de type SCSI déterminé L'octet 02 indiquera une15 adresse comprise entre 2 et 7 (les adresses O et 1 sont réservées à DR 1 et DR 2). L'octet 03 indique l'état de la commande SCSI en train d'être exécutée par CTR 1 correspondant à l'élément20 considéré Cette commande peut être en attente, active, traitée, lancée, terminée, avortée ou en erreur. L'octet O 4 n'est pas utilisé. La ligne L 2 indique la valeur du pointeur sur l'élément actif qui précède immédiatement l'élément en train de travailler (on rappelle que tous les éléments actifs sont chaînés les uns aux autres). La ligne L 3 indique la valeur du pointeur sur l'élément actif suivant immédiatement celui qui est en train de travailler. La ligne L 4 définit pour chacun de ses octets 1 à 04 un certain nombre d'informations. L'octet 1 indique le code de la commande ( s'il s'agit d'une commande d'écriture, de lecture, de sauvetage, 18 etc >. L'octet 02 indique s'il s'agit d'un message simple A savoir, avorter la commande en cours ou remise à l'état5 initial de l'unité de stockage. L'octet 03 indique s'il s'agit d'un message étendu: il peut s'agir par exemple de la négociation de la vitesse de transfert sur le bus BD 1. 10 Les messages simples ou étendus dont il est question dans 02 et 03 sont définis par la norme SCSI. L'octet 04 indique si une erreur a été détecté par le gestionnaire de tâches correspondant DR 1 ou DR 2 (il y a dans l'exemple de réalisation décrit ici, 10 erreurs recensées possibles). La ligne L 5 indique la valeur du pointeur sur la table correspondant à l'unité de stockage de données à laquelle est destinée la commande, table se trouvant en mémoire SRAM (cette table sera définie plus loin, en relation avec la figure 5). La ligne L 6 indique la valeur du pointeur de la table correspondant à l'unité de stockage de données en train de travailler, table se trouvant en mémoire VRAM (cette table est également définie plus loin en relation avec la figure 5). La ligne L 7 indique la valeur du pointeur sur la commande à exécuter par le microprocesseur CTR 1 C'est la commande que ce microprocesseur doit envoyer à l'unité de stockage, cette commande se trouvant définie dans la mémoire VRAM:35 c'est le processus Pl à P 6 associé à l'unité de stockage devant exécuter la commande, qui construit et place cette commande en mémoire VRAM. La ligne L 8 indique l'adresse en mémoire VRAM, à laquelle le microprocesseur CTR 1 doit aller chercher ses instructions pour exécuter le code SCRIPT lui permettant d'aller chercher la commande et les données5 correspondantes. La ligne L 9 indique l'heure du début de la commande à exécuter. La ligne Llo indique l'heure de fin de l'exécution de la commande, si celle-ci a été exécutée. La ligne Lil définit la dernière interruption reçue pour cette commande (interruption faite par le microprocesseur CTRî). On considère la figure 5 qui montre quelles sont les différentes données qui sont nécessaires pour que l'une ou l'autre des applications Ai ou A 2 puissent tourner, ainsi20 que la façon dont elles sont localisées soit dans VRAM soit dans SRAM. La mémoire VRAM comprend une pluralité de zones mémoire, souvent désignées sous le nom de buffer, selon la25 terminologie anglo-saxonne, o doivent être stockées les données destinées à être transférées vers les unités de stockage de la mémoire de masse SCSIî ou provenant de celles-ci Ainsi, aux unités de stockage de données Di à D 5 et T 6 correspondent les buffers BPî à BP 6 De même, aux30 mémoires à disques D 7 à Dil et au dérouleur de bande T 12 correspondent les buffers BP 7 à BP 12. Le code SCRIPT des contrôleurs CTR 1 et CTR 2 est inscrit dans la mémoire VRAM autant de fois qu'il y a d'unités de35 stockage de données Ainsi, il y a donc 12 zones mémoire de VRAM réservées à ce code SCRIPT Ces zones mémoire sont respectivement désignées par S Pl à SP 12, les zones S Pl à SP 6 correspondant à la mémoire de masse SCSI 1, alors que les zones SP 7 à SP 12 correspondent à la mémoire de masse SCSI 2. On rappelle que le code SCRIPT est également inscrit, une seule fois, dans la mémoire SRAM, dans une zone spéciale de celle-ci, désignée par SP. A chacun des processus Pl à P 6 d'une part, P 7 à P 12 d'autre part correspondent des tables respectivement T Pl à TP 6, TP 710 à TP 12 Ces tables comprennent un certain nombre d'informations permettant au gestionnaire de tâches de travailler Ces informations sont par exemple l'adresse du buffer o sont stockées les données à transmettre soit vers l'ordinateur ORD, soit vers l'unité de stockage de données15 correspondante Ainsi, dans la table T Pl est indiquée l'adresse du buffer B Pl o sont stockées les données destinées à la mémoire à disques Dl, quand celle-ci doit travailler Par ailleurs, cette table T Pl comprend la longueur des informations à transmettre, ainsi que des20 paramètres spécifiques à certaines commandes. La table correspondant à l'unité de stockage de données qui est en train de travailler, supposée ici être par exemple TP 1, est recopiée dans la mémoire SRAM, dans la table TP25 ainsi qu'on peut le voir en haut de la figure 5 à gauche. Cette recopie a lieu pour permettre à CTR 1 (CTR 2) sa mise à jour lors de chaque opération d'entrée/sortie En effet, par construction CTRî (CTR 2) ne peut accéder à la mémoire SRAM Cette table est, par ailleurs, utilisée pour l'envoi30 de paramètres spéciaux par CTR 1 relatifs à des commandes spécifiques propres au protocole SCSI (par exemple, lors de l'initialisation de l'unité de stockage correspondant à TP 1) A la fin de toute opération d'entrée/sortie, la table mise à jour, est recopiée en SRAM, ce qui permet à Pl35 d'avoir un compte-rendu de l'opération d'entrée/sortie Il est en effet important d'éviter que Pl n'aille chercher celui-ci en VRAM, ce qui interromprait le travail de CTR 1 et le perturberait: CPU doit éviter d'aller travailler en 21 VRAM, car cela ralentit le transfert des données vers BD 1. Par ailleurs, sont inscrites en mémoire SRAM des tables T Gl et TG 2 associées respectivement aux gestionnaires de tâche5 D Rl et DR 2 Ces tables comprennent les adresses des différentes tables T Pl à TP 12 correspondant aux différentes unités de stockage en train de travailler. On se reporte désormais aux figures 5 à 8 permettant de comprendre la succession des opérations définissant le fonctionnement d'une application Al ou A 2 On suppose, par exemple, qu'il s'agit d'écrire des informations dans un secteur déterminé d'un disque déterminé de la mémoire à disque DI Le processus de l'application Al qui va être mis15 en oeuvre est donc le processus Pl, le gestionnaire de tâche étant D Ri et la procédure d'interruption IT 1. Il convient de préciser que, à chacun des processus Pl à P 6 correspondent respectivement les sémaphores SM 1 à SM 6 et20 qu'au gestionnaire DR 1 correspond le sémaphore SMD 1 Chacun des processus Pl à P 6 et DR 1 peut aller écrire (symbole W à la figure 7) dans les sémaphores associés (SM 1 à SM 6 et SMD 1) aux autres mais ne peut que lire son propre sémaphore associé (symbole R à la figure 7).25 On suppose bien entendu que la carte portant tous les éléments de MSP 1, a été initialisée et que le système d'exploitation GPOS est en train de tourner, l'application Al étant également en train de tourner Ce qui signifie que30 le processus Po a effectué son travail d'initialisation et que l'application se trouve dans l'état E 2. On suppose également que le bus BDI et l'ensemble des unités de stockage de données ont été initialisés, en35 particulier la mémoire à disques Dl On cherche donc à faire exécuter une série de commandes CCE d'un programme de commandes (CP) relatives à l'écriture d'un bloc de données dans un secteur déterminé de la mémoire à disques Dl. La succession des opérations est alors la suivante, la figure 8 A étant relative aux opérations accomplies par Pl et la figure 8 B à celles accomplies par DRI. opération O Pl: on suppose donc que le processus P( a initialisé tous les processus Pl à P 6, ainsi que le gestionnaire de tâches DRI et la procédure d'interruption ITI Une fois ceci effectué, le processus Pl initialise10 l'ensemble de ses tables, y compris la table TPI Le gestionnaire de tâches DR 1 initialise sa table TGI. Opération OP 2 Le processus Pl va voir s'il y a bien une unité de stockage de donnée là o on lui a dit d'aller travailler Pl va ensuite regarder de quel type d'unité il s'agit Une fois que ceci est effectué, il va réinitialiser celle-ci Le processus Pl et le gestionnaire de tâches DR 1 se mettent dans la position "attente sur sémaphore", Pl sur SMI, DR 1 sur le sémaphore SMD 1.20 On suppose donc que l'ordinateur ORD a envoyé via le bus PSB un programme d'exécution de commande (Channel Programm) au système d'exploitation GPOS: en fait, c'est ce dernier qui sur une interruption qui lui est envoyée par le système25 d'exploitation de l'ordinateur ORD, va chercher dans la mémoire centrale de ce dernier, les informations nécessaires pour l'exécution d'une commande d'entrée/sortie GPOS va alors transférer les données utiles dans la mémoire VRAM et les inscrire dans le buffer30 BP 1, alors que le Channel Programm, muni de toutes ses commandes CCE va être inscrit dans la mémoire SRAM. On passe ensuite à l'opération OP 3 Opération OP 3 Le système d'exploitation GPOS met un message dans le sémaphore SMî, dès qu'il reçoit l'information d'entête (header) du programme d'exécution de commandes Ce message est destiné à Pi. 23 On passe à OP 4. OP 4: Ce dernier va alors chercher les CCE nécessaires, en mémoire SRAM (GPOS lui a indiqué o il faut aller chercher ces commandes CCE en mémoire SRAM, lors du postage du message dans SMO), afin de reconstruire selon la norme SCSI, un ensemble de commandes compréhensibles par l'unité de stockage de données Dl Pl effectue donc à ce moment là la transformation du protocole utilisé entre ORD et GPOS10 pour la transmission des commandes, en protocole SCSI Pl va alors mettre à jour en mémoire VRAM la table T Pl correspondant à cette unité de stockage de données, et inscrire d'une part l'adresse o les informations doivent être écrites sur le disque choisi à cet effet, ainsi que leur longueur Il met également à jour l'adresse du buffer de données en mémoire VRAM o sont provisoirement stockées celles-ci avant leur transfert vers la mémoire à disques Dl. Opération OP 5: le processus Pl met alors un message dans le sémaphore SMD 1 dans lequel il met le numéro de l'unité de mémoire à disques o l'on désire effectuer le transfert de données et également l'adresse en mémoire VRAM o se trouve la commande Tout processus tel que Pl n'envoie,25 vers DR 1 et son unité de stockage associée, qu'une seule commande à la fois même s'il y a besoin d'effectuer plusieurs commandes correspondant à un même channel Program CP Ces commandes sont donc envoyées les unes après les autres Le processus Pl met également dans le sémaphore SMI30 l'adresse de la table TP 1 Pl est alors en l'état d'attente sur le sémaphore SM 1 GPOS donne la main à DR 1 (fig 8 B). On passe en OP 6. OP 6: A la fin de cette opération OP 5, Pl vérifie si l'on ne reçoit pas dans le sémaphore SM 1 une interruption de la part de la procédure d'interruption IT 1 Si cela est le cas, on passe à l'opération OP 11 (voir plus loin), si cela 24 n'est pas le cas, on passe à l'opération OP 7. OP 7: Pendant ce temps, le gestionnaire de tâches DRI analyse le message contenu dans SMD 1 et met alors à jour le code SCRIPT de l'unité de stockage de données considérée, à savoir ici Di (adresse de buffer, longueur) En fait, dans le message posté dans SMD 1, est contenu le pointeur de la table T Pl dans la mémoire SRAM Ce dernier permet d'obtenir10 le pointeur de la table équivalente dans la mémoire VRAM et le pointeur sur la commande à exécuter. On passe alors à l'opération suivante OP 8. Opération OP 8 Dès que la mise à jour précédente est faite, le gestionnaire de tâches DR 1 remplit l'élément de LS correspondant contenant les informations sur la commande à exécuter Dès que ceci est fait, l'opération de transfert des données contenues en mémoire VRAM vers la mémoire à disques Dl peut commencer. OP 9: on s'assure alors que le contrôleur CTR 1 ne fait rien Si cela est le cas, on passe à l'opération OP 1 O sinon on passe à l'opération OP 11.25 Opération OP 11: le contrôleur CTRI exécute son code SCRIPT (en SP 1) ce qui lui permet de faire son travail de transfert de données, à partir de l'adresse de départ du code SCRIPT donnée par le gestionnaire de tâches D Ri Ce30 dernier met alors à jour le pointeur sur l'élément actif et, se remet en attente sur le sémaphore SMDî (OP 2) alors que le contrôleur CTR 1 continue à tourner et à gérer les différentes phases prévues par la norme SCSI pour transférer les données sur le bus BD 1 vers la mémoire à35 disques Dl CTR 1 continue à tourner jusqu'à ce qu'il trouve une instruction d'interruption dans le code SCRIPT en SP 1. A ce moment là, le système d'exploitation GPOS branche directement la procédure d'interruption IT 1 qui gère le contrôleur CTRI Trois cas sont alors possibles: A) Cas simple: Dans ce cas, le contrôleur CTR 1, le bus B Di étant libre, exécute la commande qu'on lui a demandé d'exécuter et génère une interruption, signifiant fin d'entrée/sortie lorsque son travail est terminé Cette interruption signifie que tout s'est exécuté sans erreur: les données10 contenues dans le buffer BPî ont été transférées sur le disque et y ont été écrites: la procédure d'interruption qui se met en route est telle qu' on lit d'abord dans le contrôleur CTRî la valeur de l'interruption, c'est à dire sa nature: la procédure voyant qu'il s'agit d'une fin15 d'entrée/sortie met à jour le status dans l'élément actif de la liste (octet 03 de la ligne Li) et modifie la ligne Lll En Li, le champ est mis à O (octet Qi) et le pointeur élément actif passe à 0 Alors la procédure d'interruption I Ti envoie un message à Pl, via SMI indiquant que tout est fini et s'est bien passé Parallèlement cette même procédure I Ti s'arrête en envoyant un message à GPOS via SM 1 En réponse à ce message, Pl voyant qu'il ne s'agit pas d'un message de GPOS, passe à l'opération OP 13. P 13: Pl envoie à ORD un compte-rendu d'entrée/sortie et transfère les données vers ORD, avec l'appui de GPOS Pl retourne en "attente sur sémaphore SM 1 i" (OP 2) B) Cas complexe Ce cas concerne les circonstances o l'unité de mémoire à disques s'est déconnectée volontairement du bus BD 1, pour effectuer les opérations d'écrire ou de lecture qu'on lui a demandé On rappelle que cette façon de procéder est35 définie par la norme SCSI Lorsque la mémoire à disques Dl se déconnecte, elle envoie une interruption sur le bus BDî qui réveille la procédure d'interruption IT 1 Celle-ci lit qu'il y a déconnexion et met alors à jour l'élément actif (ligne Ll, status modifié) et l'adresse de départ du code SCRIPT L'interruption envoyée par la mémoire à disques Dl signifie: "il y a déconnexion de Dl" La procédure IT 1 regarde alors dans la liste LS s'il y a d'autres commandes5 à exécuter par le contrôleur CTR 1 S'il n'y a pas de commande à exécuter, on remet le contrôleur CTR 1 en attente de reconnexion Si la réponse à la question précédente est oui, cela signifie qu'il y a une autre commande à effectuer pour un autre processus (P 2 à P 6), (cette commande est10 effectuée par la procédure d'interruption IT 1) On met à jour le pointeur élément actif sur une nouvelle commande à exécuter par le contrôleur CTR 1: on prend une nouvelle adresse de code SCRIPT et CTR 1 part pour l'exécution de celle-ci, et IT 1 se termine.15 Au cas o la mémoire à disques Dl se reconnecte, CTR 1 reprend l'exécution de son code et on est ramené au début du cas simple A. Il existe en outre un troisième et quatrième cas qui sont appelés respectivement cas intermédiaire et cas particulier. C) Cas intermédiaire: C'est le cas o le contrôleur CTR 1 est en attente de resélection de la part de la mémoire à disques Dl Dans ce cas, on suppose qu'une autre commande correspondant à un autre processus P 2, par exemple, peut être exécutée par30 l'unité de stockage de données correspondant à ce processus Ce dernier exécute alors les opérations OP 3 à OP 5 Pour le processus Pl, cela correspond à l'opération OP 1 O o on fait avorter le code SCRIPT qui est arrêté sur une instruction d'attente de reconnexion (instruction35 interne au code SCRIPT) DR 1 exécute les opérations OP 6 à OP 9 CTR 1 étant actif, on passe en OP 10 o on vérifie qu'il est en "attente de resélection": si la réponse est oui (Symbole Y), on avorte le code SCRIPT, et on repasse en 27 OP 2 Si la réponse est non (symbole N), on repasse directement en OP 2 Lors de l'avortement du code SCRIPT (OP 10), la procédure IT 1 est réveillée et le processus P 2 effectue la commande qui lui est demandée (voir fin cas complexe). D) Cas particulier: La procédure IT 1 est réveillée par un incident détecté par CTR 1 Elle construit alors un message pour DR 1 contenant un compte rendu de l'incident, et se termine par cet envoi. DR 1 est réveillé par ce message et accomplit l'opération OP 6 puis O P 14.15 OP 14: DR 1 met à jour ces tables et la liste LS et envoie un message au processus concerné (P 1,P 2) et repasse en OP 2. REVENDICATIONS: 1 Système de transmission de données (MSP 1, MSP 2) entre un bus d'ordinateur (PSB) et une mémoire de masse (SCSI 1, SCSI 2) comportant une pluralité d'unités de stockage de données (D 1 à D 5, T 6, D 7 à Dll, T 12) reliées entre elles par une liaison spécifique (BD 1,BD 2) à laquelle le système est physiquement relié, comprenant:10 un microprocesseur central (CPU) relié à au moins une mémoire (SRAM) contenant un système d'exploitation (GPOS) destiné à être exécuté par celui-ci, des moyens de transfert des trames (MPC, B 2, B 3, VRAM, B 1, DMAC, CTR 1, CTR 2) depuis le bus d'ordinateur vers la liaison et réciproquement, dont le travail est organisé et géré par le microprocesseur, comprenant une mémoire (VRAM) de stockage de données disposée entre le bus et la liaison.20 le système d'exploitation (GPOS) étant associé à au moins une application (A 1, A 2) spécifique de la transmission de données entre le bus (PSB) et la dite liaison (BD 1, BD 2), caractérisé en ce que, il comporte au moins un microprocesseur d'entrée/sortie (CT Ri,CTR 2), esclave du processeur central (CPU), relié d'une part à la dite mémoire et d'autre part à la dite liaison,30 l'application comprenant: un processus d'initialisation (PO) de l'ensemble de l'application, une pluralité de processus d'adaptation distincts et indépendants les uns des autres (Pl à P 6, P 7 à P 12) dont chacun est associé à une unité de stockage d'un type déterminé, au moins un processus gestionnaire de tâches (DR 1, DR 2) - Les différents processus communiquant entre eux par sémaphore à message, chacun des processus d'adaptation réalisant la transformation et l'adaptation des commandes provenant de l'ordinateur (ORD) destinées à l'unité de stockage correspondante en commandes conformes au protocole10 utilisé sur la liaison spécifique, le processus gestionnaire autorisant le microprocesseur d'entrée/sortie à transférer physiquement les commandes et les données des trames correspondant à celles-ci depuis la mémoire vers la liaison et réciproquement, dès que le processus15 d'adaptation correspondant a terminé la dite adaptation. 2 Système de transmission de données selon la revendication 1, caractérisé en ce que les processus d'adaptation (Pl à P 6, P 7 à P 12) et le processus20 gestionnaire (DR 1, DR 2) sont associés chacun à au moins un sémaphore à message (SM 1 à SM 6, SMD 1), chacun de ces processus pouvant lire dans son sémaphore associé et écrire dans les autres. 3 Système selon l'une quelconque des revendications 1,2 caractérisé en ce que un programme d'entrée/sortie de données vers ou depuis la liaison est associé au microprocesseur d'entrée/sortie, et est inscrit d'une part dans une zone spéciale (SP) de la mémoire (SRAM) reliée au30 microprocesseur central, et d'autre part dans la dite mémoire de stockage, autant de fois qu'il y a de processus d'adaptation, dans des premières zones mémoire réservées à cet effet (S Pl à SP 12). 4 Système selon l'une quelconque des revendications 1,2,3 caractérisé en ce que la mémoire de stockage (VRAM) comprend des secondes zones mémoire (B Pl à BP 12) affectées chacune au stockage des données destinées à chacune des différentes unités de stockage, et des tables (T Pl à TP 12) associées chacune à l'une déterminée de celles-ci comprenant l'adresse de la seconde zone mémoire associée à5 la même unité et la longueur des données utiles qui y sont mémorisées. Système suivant la revendication 4 caractérisé en ce que le contenu de la table correspondant à l'unité de stockage en train de travailler est recopié dans une table (TP) correspondante dans la mémoire (SRAM) associée au microprocesseur central (CPU). 6 Système selon l'une quelconque des revendications 1 à 5, caractérisé en ce que la mémoire associée au microprocesseur central comprend une liste (LS) comprenant une pluralité d'éléments (El à E 30) définissant chacun une tâche exécutée par le microprocesseur d'entrée/sortie correspondant à la transmission de données et des commandes20 correspondantes vers ou depuis une unité de stockage déterminée. 7 Système suivant la revendication 2 caractérisé en ce qu'il comprend, en outre au moins une procédure d'interruption (IT 1, IT 2) destinée à gérer chacune des interruptions générées par le microprocesseur (CTR 1, CTR 2) d'entrée/sortie définies en des endroits spécifiques de son programme d'entrée/sortie (S Pl à SP 12).