FR2863072A1 - Dispositif et procede pour executer un traitement d'informations en utilisant une pluralite de processeurs - Google Patents

Dispositif et procede pour executer un traitement d'informations en utilisant une pluralite de processeurs Download PDF

Info

Publication number
FR2863072A1
FR2863072A1 FR0404015A FR0404015A FR2863072A1 FR 2863072 A1 FR2863072 A1 FR 2863072A1 FR 0404015 A FR0404015 A FR 0404015A FR 0404015 A FR0404015 A FR 0404015A FR 2863072 A1 FR2863072 A1 FR 2863072A1
Authority
FR
France
Prior art keywords
information
write
memory
address
target
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
FR0404015A
Other languages
English (en)
Other versions
FR2863072B1 (fr
Inventor
Nobuyuki Minowa
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of FR2863072A1 publication Critical patent/FR2863072A1/fr
Application granted granted Critical
Publication of FR2863072B1 publication Critical patent/FR2863072B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

Transfère d'informations entre processeurs à l'aide d'un procédé qui place une faible charge sur les processeurs côté réception (550). Le dispositif de traitement d'informations traite les informations en utilisant un des premiers processeurs (360) qui ont des mémoires locales (350), et des seconds processeurs (550) qui écrivent des informations d'écriture directement dans la mémoire locale que possède le premier processeur cible. Les seconds processeurs (550) mémorisent des cartes d'adresses dans lesquelles sont enregistrées des adresses de mémoire locale pour les premiers processeurs (360), acquièrent des adresses de mémoire locale à partir de ces cartes d'adresses, et écrivent des informations d'écriture dans les adresses de mémoire locale acquises.

Description

La présente invention concerne une technique pour effectuer un traitement
d'informations en utilisant une pluralité de processeurs, et concerne plus concrète-ment (par exemple) un dispositif de commande de mémoire
qui est installé dans un système de réseau redondant de disques indépendants bon marché (RAID).
Un premier type de dispositif destiné à effectuer un traitement d'informations en utilisant une pluralité de processeurs est (par exemple) un dispositif de commande de mémoire qui contrôle l'accès depuis un dispositif hôte à un dispositif mémoire qui a une pluralité de disques physiques disposés sous la forme d'un réseau. Par exemple, deux ou plus de deux adaptateurs de canal qui sont utilisés pour communiquer avec le dispositif hôte et deux ou plus de deux adaptateurs de disque qui sont utilisés pour communiquer avec le dispositif mémoire sont installés dans le dispositif de commande de mémoire. Un ou plusieurs microprocesseurs (par la suite appelés par l'abréviation "MP") sont installés dans chacun des adap- tateurs.
Les informations de contrôle sont échangées entres les microprocesseurs montés dans les adaptateurs de canal (appelés par la suite "MP de canal") et les micro-processeurs montés dans les adaptateurs de disque (par la suite appelés "MP de disque"). Par exemple, dans la technique décrite dans la Demande de Brevet Japonais Mise à l'Inspection Publique N 2001- 306 265 (par exemple, le paragraphe 44), l'échange d'informations de contrôle entre le microprocesseur de canal 17 et le microprocesseur de disque 21 est accompli via une mémoire partagée 32. En termes concrets, par exemple, lorsque des informations de contrôle sont envoyées par le microprocesseur de canal 17 ou le microprocesseur de disque 21, le microprocesseur de canal 17 écrit les informations de contrôle dans une ré- pion spécifiée de la mémoire partagée 32; sur ces entre- faites, le microprocesseur de disque 21 sonde périodique-ment cette région spécifiée de la mémoire partagée 32, et s'il y a des informations de contrôle dans cette région spécifiée, le microprocesseur de disque 21 acquiert les informations de contrôle à partir de cette région spécifiée.
Dans la technique classique décrite ci-dessus, l'échange d'informations de contrôle entre des microprocesseurs est accompli via une mémoire partagée, et le mi- croprocesseur du côté réception sonde périodiquement une région spécifiée de la mémoire partagée. Ce sondage de la mémoire partagée introduit une charge non-négligeable dans le microprocesseur côté réception. En outre, lorsque le nombre de microprocesseurs augmente, la répétition fréquente de la lecture de la mémoire partagée par la pluralité de microprocesseurs a tendance à provoquer un goulet d'étranglement des performances dans la mémoire partagée ou un goulet d'étranglement des performances dans le trajet de mémoire partagée; en résultat, il est possible que les performances du dispositif en totalité décroissent.
En conséquence, un but de la présente invention consiste à permettre la réception d'informations entre processeurs par un procédé qui introduit une légère charge dans le processeur côté réception.
Un autre but de la présente invention consiste à permettre la réception d'informations entre processeurs sans réduire les performances du dispositif en totalité.
D'autres buts de la présente invention vont mieux apparaître à partir de la lecture de la description qui va suivre.
Le dispositif de traitement d'informations selon un premier aspect de la présente invention comporte un ou plusieurs premiers processeurs qui ont une ou une pluralité de mémoires locales et un ou plusieurs seconds processeurs qui écrivent directement des informations d'écriture dans une mémoire locale cible qu'a un premier processeur cible sélectionné parmi les premiers processeurs, et/ou qui lisent directement des informations de lecture (informations qui font l'objet d'une lecture) à partir de la première mémoire locale cible mentionnée ci-dessus.
Ici, le terme "processeur" fait référence à un module qui exécute un traitement opérationnel; des exem- pies concrets de tels processeurs incluent des unités centrales de traitement (CPU) ou des microprocesseurs (MP).
De plus, les termes "mémoire locale" font référence à une mémoire qui peut être utilisée uniquement par les premiers processeurs; par exemple, de telles mémoires incluent des mémoires telles qu'une mémoire à accès direct (RAM) ou analogue utilisées par les CPU, des mémoires qui sont montées à l'intérieur ou l'extérieur des microprocesseurs (RAM ou mémoires caches séparées) et analogue.
En outre, les termes "informations d'écriture" font référence à (par exemple) des messages pour le premier processeur cible, ou des instructions de lecture de-mandant la lecture d'informations à partir de la mémoire locale de ce premier processeur.
Dans un premier mode préféré de réalisation de la présente invention, le dispositif de traitement d'in-formations comporte en outre des moyens de mémoire de carte d'adresses qui mémorisent une carte d'adresses sur laquelle sont enregistrées les adresses de mémoire locale pour chaque processeur parmi le ou les plusieurs premiers processeurs mentionnés cidessus, et chacun parmi le ou les plusieurs seconds processeurs mentionnés ci-dessus acquiert l'adresse de mémoire locale du premier proces- seur cible à partir de la carte d'adresses mentionnée ci-dessus, et écrit les informations d'écriture mention-nées ci-dessus dans l'adresse de mémoire locale acquise, et/ou lit les informations de lecture mentionnées ci-dessus à partir de l'adresse de première mémoire lo- cale acquise.
Dans un deuxième mode préféré de réalisation de la présente invention, on fournit en outre une ou une pluralité de secondes mémoires locales appartenant à chacun du ou des plusieurs seconds processeurs mentionnés ci-dessus, des premiers moyens de mémoire de carte d'adresses (par exemple, les seconds processeurs peuvent avoir ces moyens) qui mémorisent une première carte d'adresses sur laquelle sont enregistrées des adresses de première mémoire locale pour chacun du ou des plusieurs premiers processeurs mentionnés ci-dessus, et des seconds moyens de mémoire de carte d'adresses (par exemple, les premiers processeurs peuvent avoir ces moyens) qui mémorisent une seconde carte d'adresses sur laquelle sont enregistrées des adresses de seconde mémoire locale pour chacun du ou des plusieurs seconds processeurs mentionnés ci-dessus. Un second microprocesseur cible sélectionné parmi le ou les plusieurs seconds processeurs mentionnés ci-dessus acquiert une adresse d'écriture de première mémoire locale où l'écriture doit être effectuée dans la première mémoire locale cible (par exemple, une adresse de lecture de première mémoire locale qui indique l'emplacement dans la première mémoire locale cible où la lecture dans être effectuée est en outre acquise à partir de la première carte d'adresses), et écrit une instruc- tion de lecture spécifiée (par exemple, une instruction de lecture qui désigne l'adresse de lecture de première mémoire locale acquise) dans l'adresse d'écriture de première mémoire locale acquise. En réponse à l'instruction de lecture mentionnée ci-dessus qui est écrite dans l'adresse d'écriture de première mémoire locale, le pre- mier processeur cible mentionné ci-dessus acquiert l'adresse d'écriture de seconde mémoire locale du second processeur cible qui a envoyé l'instruction de lecture mentionnée ci-dessus à partir de la seconde carte d'adresses, et écrit des informations dans la première mémoire locale (par exemple, les informations dans l'adresse d'écriture de première mémoire locale mention-née ci-dessus identifiée à partir de l'instruction de lecture mentionnée ci-dessus) dans l'adresse d'écriture de seconde mémoire locale acquise.
Dans un troisième mode préféré de réalisation de la présente invention, le dispositif de traitement d'informations comporte un dispositif relais qui reçoit les informations d'écriture mentionnées ci-dessus du côté du second processeur mentionné ci-dessus, et transfère ces informations d'écriture au côté du premier processeur cible mentionné ci-dessus. Le dispositif relais mentionné ci-dessus comporte une mémoire relais; lors du transfert d'informations d'écriture mentionnées ci-dessus, l'une des deux opérations qui vont suivre est sélectivement effectuée: c'est-à-dire que le transfert mentionné ci-dessus est effectué après que les informations d'écriture aient été sélectivement mémorisées dans la mémoire relais, ou sinon le transfert est effectué sans mémoriser les informations d'écriture dans la mémoire mentionnée ci-dessus.
Dans un quatrième mode préféré de réalisation de la présente invention, le dispositif de traitement d'informations comporte en outre un ou une pluralité de dispositifs qui ont le ou les plusieurs premiers processeurs mentionnés ci-dessus. Le dispositif relais comporte en outre une partie ou une pluralité de parties de transmission qui sont connectées de sorte que ces parties de transmission peuvent communiquer avec le ou la pluralité de premiers dispositifs mentionnés ci-dessus, et qui transmettent respectivement les informations d'écriture reçues au ou à la pluralité de premiers dispositifs. Lors de la transmission d'informations d'écriture reçues par un certain second dispositif au premier dispositif cible qui a le premier processeur cible mentionné ci-dessus, si la partie de transmission cible qui doit transmettre ces informations d'écriture ne se trouve pas dans un état occupé, les informations d'écriture reçues sont transmises au premier dispositif cible à partir de la partie de transmission cible mentionnée ci-dessus sans être mémorisées dans la mémoire relais. Si la partie de transmission cible mentionnée ci-dessus se trouve dans un état occupé, les informations d'écriture sont temporairement mémorisées dans la mémoire relais, et ces informations d'écri- ture sont lues à partir de la mémoire relais et transmises au premier dispositif cible mentionné ci-dessus par la partie de transmission cible lorsque l'état occupé de la partie de transmission cible est libéré.
Ici, les termes "partie de transmission" peu- vent faire référence à toute partie qui peut transmettre les informations d'écriture reçues au premier dispositif cible mentionné ci-dessus, par exemple, un port ou un trajet de communication peut être conçu comme étant une telle partie de transmission.
Dans un cinquième mode préféré de réalisation de la présente invention, une ou plusieurs régions de mémorisation d'informations d'écriture correspondant respectivement à une ou plusieurs sources de transmission ou destinations de transmission des informations d'écriture sont fournies dans la mémoire relais dans le troisième mode préféré de réalisation mentionné ci-dessus, et lors de la mémorisation temporaire des informations d'écriture reçues dans la mémoire relais, le dispositif relais mémorise ces informations d'écriture dans la région de mémorisation d'informations d'écriture cible correspondant à la source de transmission ou la destination de transmission. Dans ce cas, si la quantité d'informations accumulées dans la région de mémorisation d'informations d'écriture cible mentionnée ci-dessus dépasse une première valeur de seuil, une notification de dépassement de la première valeur de seuil, qui indique que cette valeur de seuil a été dépassée, est transmise à un second dispositif spécifié, et le second dispositif qui reçoit la notification mentionnée ci-dessus indiquant le dépassement de la première valeur de seuil réduit la fréquence à la-quelle les informations d'écriture sont envoyées ou la quantité d'informations d'écriture qui sont envoyées à la mémoire locale cible mentionnée ci- dessus ou le premier processeur cible mentionné ci-dessus.
Ici, les termes "source de transmission" font référence au (par exemple) second processeur qui délivre en sortie les informations d'écriture, ou au second dis-positif dans lequel ce processeur est monté, et les ter-mes "destination de transmission" font référence (par exemple) à la mémoire locale qui est la destination de mémorisation des informations d'écriture, ou le premier processeur qui a cette mémoire locale.
Par exemple, des procédés qui peuvent être utilisés pour "réduire la fréquence à laquelle des informa- tions d'écriture sont envoyées ou la quantité d'informations d'écriture qui sont envoyées" incluent les deux procédés suivants: (1) le dispositif relais mentionné ci-dessus transmet un premier signal d'interruption au second pro- cesseur qui est la destination de transmission des informations d'écriture, ou à la totalité des seconds processeurs y compris ce second processeur, et le second processeur qui a reçu ce premier signal d'interruption ré-duit lui-même la fréquence à laquelle les informations d'écriture sont envoyées ou la quantité d'informations d'écriture qui sont envoyées au processeur cible mention-né ci-dessus.
(2) Le second processeur qui a reçu la notification mentionnée ci-dessus du dépassement de la première valeur de seuil ne réduit pas lui-même la fréquence à la-quelle les informations d'écriture sont envoyées ou la quantité d'informations d'écriture qui sont envoyées au premier processeur cible mentionné ci- dessus; au lieu de cela, les parties de commande de transmission d'informa- tions se trouvant dans les seconds dispositifs du montage du ou des plusieurs seconds processeurs mentionnés ci-dessus reçoivent les informations qui sont délivrées en sortie par les seconds processeurs, et lorsque ces in-formations d'écriture sont des informations dont la des- tination est la mémoire locale du premier processeur cible, la transmission des informations d'écriture au dis-positif relais est arrêtée ou interrompue. D'autre part, lorsque ces informations d'écriture ne sont pas des in-formations dont la destination est la mémoire locale du premier processeur cible, ces informations d'écriture sont transmises au dispositif relais.
Dans un sixième mode préféré de réalisation de la présente invention, une ou plusieurs régions de mémorisation d'informations d'écriture correspondant respec- tivement à une ou plusieurs sources de transmission ou destinations de transmission mentionnées ci-dessus sont fournies dans la mémoire relais dans le troisième mode préféré de réalisation mentionné ci-dessus. Lors de la mémorisation temporaire des informations d'écriture re- çues dans la mémoire relais, le dispositif relais mémorise ces informations d'écriture dans une région de mémorisation d'informations d'écriture cible correspondant à la source de transmission ou à la destination de transmission. Dans ce cas, si la quantité d'informations accu- mulées dans la région de mémorisation d'informations d'écriture cible mentionnée ci-dessus dépasse une deuxième valeur de seuil, une notification de dépassement de la deuxième valeur de seuil, qui indique que cette va-leur de seuil a été dépassée, est transmise à un second dispositif spécifié. Ce second dispositif exécute sélectivement l'opération d'un système d'écriture directe dans lequel les informations d'écriture mentionnées ci-dessus sont directement écrites dans la mémoire locale cible, et l'opération d'un système d'écriture indirecte qui est conçu de manière à ce que les informations d'écriture mentionnées cidessus soient mémorisées dans la mémoire relais, et de sorte que le premier processeur cible mentionné ci-dessus peut acquérir ces informations d'écriture dans la mémoire relais. Lorsque la notification men- tionnée ci-dessus de dépassement de la deuxième valeur de seuil n'est pas reçue, les informations d'écriture sont transmises par le système d'écriture directe mentionné ci-dessus (par exemple, des informations d'écriture incluant l'adresse de mémoire locale du premier processeur cible mentionné ci-dessus sont transmises), tandis que lorsque la notification mentionnée ci-dessus de dépasse-ment de la deuxième valeur de seuil est reçue, les informations d'écriture sont transmises par le système d'écriture indirecte mentionné ci-dessus (par exemple, des informations d'écriture qui incluent l'adresse de mémoire relais correspondant à la première région de mémorisation cible mentionnée cidessus dans la mémoire relais sont transmises).
Un septième mode préféré de réalisation de la présente invention est le cinquième mode préféré de réalisation mentionné ci-dessus, dans lequel si la quantité d'informations accumulées dans la région de mémorisation d'informations d'écriture cible mentionnée ci-dessus dé-passe une deuxième valeur de seuil qui est plus grande que la première valeur de seuil mentionnée ci-dessus, le dispositif relais transmet une notification de dépasse-ment de la deuxième valeur de seuil, qui indique que cette valeur de seuil a été dépassée, au second dispositif mentionné ci-dessus. Le second dispositif mentionné ci-dessus exécute sélectivement l'opération d'un système d'écriture directe dans laquelle les informations d'écriture sont directement écrites dans la mémoire locale cible, ou l'opération d'un système d'écriture indirecte qui est conçu de sorte que les informations d'écriture sont mémorisées dans la mémoire relais, et de sorte que le premier processeur cible mentionné ci-dessus peut acquérir ces informations d'écriture dans la mémoire relais. Lorsque la notification mentionnée ci-dessus de dépasse-ment de la deuxième valeur de seuil n'est pas reçue (même si la notification mentionnée ci- dessus de dépassement de la première valeur de seuil est reçue), les informations d'écriture sont transmises via le système d'écriture directe mentionné ci-dessus, tandis que lorsque la notification mentionnée ci- dessus de dépassement de la deuxième valeur de seuil est reçue, le système d'écriture directe mentionné ci-dessus est arrêté, et les informations d'écriture sont transmises via le système d'écriture in- directe mentionné ci-dessus.
Un huitième mode préféré de réalisation de la présente invention est le sixième mode préféré de réalisation mentionné ci-dessus, dans lequel après que le second dispositif qui a reçu la notification mentionnée ci- dessus de dépassement de la deuxième valeur de seuil ait sélectionné le système d'écriture indirecte mentionné ci-dessus, ce second dispositif interrompt le système d'écriture indirecte et sélectionne le système d'écriture directe mentionné ci-dessus dans au moins l'un des cas (1) et (2) suivants: (1) un cas dans lequel la quantité d'informa- tions dans la région de mémorisation d'informations cible mentionnée ci- dessus est inférieure ou égale à une troisième valeur de seuil qui est inférieure à la deuxième valeur de seuil mentionnée ci-dessus, et (2) un cas dans lequel une durée fixe s'est écoulée dans l'état où le système d'écriture indirecte mentionné ci- dessus a été sélectionné.
Dans un neuvième mode préféré de réalisation de la présente invention, le dispositif de traitement d'in-formations comporte un ou une pluralité de premiers dis- positifs qui ont le ou les plusieurs premiers processeurs mentionnés ci- dessus, un ou une pluralité de seconds dis-positifs qui ont le ou les plusieurs seconds processeurs mentionnés ci-dessus, et un dispositif relais qui relaie les informations d'écriture mentionnées ci-dessus à par- tir des seconds dispositifs mentionnés ci-dessus vers le premier dispositif mentionné ci-dessus qui a le premier processeur cible. Le dispositif relais mentionné ci-dessus a une ou une pluralité de parties de transmission qui transmettent respectivement des informations vers le ou la pluralité de premiers dispositifs mention-nés ci-dessus, et une ou une pluralité de parties de réception qui reçoivent respectivement des informations à partir du ou de la pluralité de seconds dispositifs. Chacune parmi la partie ou la pluralité de parties de trans- mission mentionnées ci-dessus et chacune parmi la partie ou la pluralité de parties de réception mentionnées ci-dessus fonctionnent indépendamment les unes des autres. Par exemple, un ou plusieurs dispositifs mémoire (par exemple, des mémoires volatiles ou non-volatiles) sont fournis entre la ou la pluralité de parties de transmission et la ou la pluralité de parties de réception, et l'opération indépendante mentionnée ci-dessus est rendue possible en mémorisant les informations qui sont échangées entre la partie ou la pluralité de parties de transmission mentionnées ci- dessus et la partie ou la pluralité de parties de réception du ou des plusieurs dispositifs mémoire mentionnés ci-dessus.
Dans un dixième mode préféré de réalisation de la présente invention, une ou plusieurs régions de mémo- risation locale correspondant respectivement au second dispositif ou aux plusieurs seconds dispositifs mention-nés ci-dessus sont fournies dans les mémoires locales de chacun du ou des plusieurs premiers dispositifs mention-nés ci-dessus. Chacun du ou des plusieurs seconds dispo- sitifs mentionnés ci-dessus mémorisent une carte d'adresses sur laquelle l'adresse de mémoire locale de la région de mémorisation locale mentionnée ci-dessus correspondant à ce second processeur est enregistrée pour chaque premier processeur, et lorsque les informations d'écriture sont écrites dans la mémoire locale du premier processeur cible, l'adresse de mémoire locale correspondant à ce premier processeur cible est acquise à partir de la carte d'adresses mentionnée ci-dessus, et les informations d'écriture sont écrites dans cette adresse de mémoire lo- cale acquise.
Dans un onzième mode préféré de réalisation de la présente invention, le dispositif de traitement d'in-formations mentionné ci-dessus comporte un dispositif relais qui reçoit les informations d'écriture mentionnées ci-dessus, incluant l'adresse de mémoire locale du premier processeur cible, du côté du second processeur mentionné ci-dessus, et transfère ces informations d'écriture vers le côté premier processeur cible mentionné ci-dessus. Chaque processeur parmi le ou les seconds pro- cesseurs mentionnés ci-dessus est connecté via le dispositif relais de manière à pouvoir communiquer respective-ment avec le ou les plusieurs premiers processeurs mentionnés ci-dessus via un ou plusieurs trajets logiques ou physiques. Le dispositif relais mémorise une ou plusieurs adresses de mémoire locale correspondant respectivement au ou aux plusieurs trajets mentionnés ci-dessus pour chaque second processeur, et lorsque les informations d'écriture reçues mentionnées ci- dessus sont transférées, le trajet cible, correspondant à l'adresse de mémoire lo- cale mentionnée ci-dessus contenue dans ces informations d'écriture, est spécifié, et les informations d'écriture sont transférées au côté premier processeur cible mentionné ci-dessus via le trajet cible spécifié.
Le dispositif de commande de mémoire selon un second aspect de la présente invention est un dispositif de commande de mémoire qui comporte une pluralité de microprocesseurs et un dispositif mémoire physique ou logique, et qui exécute une commande de mémoire de la mémorisation d'informations provenant de dispositifs hôtes dans le dispositif mémoire mentionné ci-dessus en utilisant la pluralité de microprocesseurs mentionnés ci-dessus. Ce dispositif de commande de mémoire comporte un ou plu-sieurs premiers microprocesseurs qui ont une ou une pluralité de premières mémoires locales (350), un ou plu- sieurs seconds microprocesseurs, et des premiers moyens de mémoire de carte d'adresses pour mémoriser une première carte d'adresses sur laquelle sont enregistrées les adresses de première mémoire locale pour chacun du ou des plusieurs premiers microprocesseurs mentionnés ci-dessus.
Chacun du ou des plusieurs seconds microprocesseurs mentionnés ci-dessus acquièrent une adresse d'écriture de première mémoire locale indiquant l'emplacement où l'écriture doit être effectuée dans la première mémoire locale cible mentionnée ci-dessus, et écrivent des infor- mations d'écriture dans cette adresse d'écriture de première mémoire locale acquise.
Dans un premier mode préféré de réalisation de la présente invention, le dispositif de commande de mé- moire comporte en outre un ou une pluralité de premiers dispositifs dans lesquels le ou les plusieurs premiers microprocesseurs mentionnés ci- dessus sont montés, un ou une pluralité de seconds dispositifs dans lesquels le ou les plusieurs seconds microprocesseurs mentionnés ci- dessus sont montés, et un dispositif relais qui relaie les communications entre le ou la pluralité de premiers dispositifs mentionnés ci-dessus et le ou la pluralité de seconds dispositifs mentionnés ci-dessus. Une ou plu-sieurs régions de mémorisation locale qui correspondent respectivement au ou aux plusieurs seconds microproces- Beurs mentionnés ci-dessus sont fournies dans les premières mémoires locales (350) mentionnées ci-dessus. Les adresses des premières mémoires locales (350) de la ou des plusieurs régions de mémorisation locale qui correspondent respectivement au ou aux plusieurs seconds micro- processeurs mentionnés ci-dessus sont enregistrées dans la première carte d'adresses mentionnée ci-dessus. Chacun du ou des plusieurs seconds microprocesseurs mentionnés ci-dessus est connecté via le dispositif relais de manière à pouvoir communiquer respectivement avec le ou les plusieurs premiers microprocesseurs mentionnés ci-dessus via un ou plusieurs trajets logiques ou physiques, et lors de la sortie des informations d'écriture mentionnées ci-dessus, les seconds microprocesseurs acquièrent l'adresse de première mémoire locale de la première ré- gion de mémorisation locale correspondant au premier processeur cible mentionné ci-dessus à partir de la première carte d'adresses mentionnée ci-dessus, et délivrent en sortie des informations d'écriture qui ont des premières informations de destination de transmission qui incluent l'adresse de première mémoire locale acquise mentionnée ci-dessus (par exemple des informations qui incluent uniquement l'adresse de mémoire locale, ou qui incluent également des informations de discrimination de microprocesseur de destination d'informations d'écriture). Le dispo- sitif relais mémorise un ou plusieurs ensembles de se- condes informations de destination de transmission qui correspondent respectivement au ou aux plusieurs trajets mentionnés ci-dessus (par exemple, des adresses de mémoire locale ou des informations de discrimination de mi- croprocesseur de destination correspondant à ces adresses), et lors du transfert des informations d'écriture reçues, le dispositif relais spécifie le trajet cible sur la base des premières et secondes informations de destination de transmission mentionnées ci-dessus, et transmet les informations d'écriture au premier dispositif cible mentionné ci- dessus via le trajet cible spécifié. Le premier dispositif cible écrit les informations d'écriture reçues depuis le dispositif relais dans l'adresse de première mémoire locale qui est incluse dans les informa- tions d'écriture.
Dans un deuxième mode préféré de réalisation de la présente invention, le dispositif relais mentionné ci-dessus comporte une mémoire relais, et lors du transfert des informations d'écriture mentionnées ci-dessus, exécute sélectivement une opération de ce transfert après que les informations d'écriture aient été temporairement mémorisées dans la mémoire relais, ou une opération de ce transfert sans mémoriser les informations d'écriture dans la mémoire relais. Un troisième mode préféré de réalisation de la présente invention est le
deuxième mode préféré de réalisation mentionné ci-dessus, dans lequel le dispositif relais mentionné ci-dessus comporte en outre une partie ou une pluralité de parties de transmission qui sont connec- tées de sorte que ces parties de transmission peuvent communiquer avec le ou la pluralité de premiers dispositifs mentionnés ci-dessus, et de manière à transmettre respectivement les informations d'écriture reçues au ou à la pluralité de premiers dispositifs mentionnés ci-dessus, et lors de la transmission des informations d'écriture reçues par un certain second dispositif au premier dispositif cible mentionné ci-dessus, si le trajet cible mentionné ci-dessus n'est pas dans un état occupé, les informations d'écriture reçues sont transmises au premier dispositif cible via ce trajet cible sans être mémorisées dans la mémoire relais, tandis que si le trajet cible se trouve dans un état occupé, les informations d'écriture sont temporairement mémorisées dans la mémoire relais, et lorsque l'état occupé du trajet cible est li- béré, les informations d'écriture sont lues à partir de la mémoire relais et transmises vers le premier dispositif cible via le trajet cible.
Un quatrième mode préféré de réalisation de la présente invention est le deuxième mode préféré de réali- sation mentionné ci-dessus, dans lequel une ou plusieurs régions de mémorisation d'informations d'écriture correspondant respectivement à la ou aux plusieurs sources de transmission ou destinations de transmission des informations d'écriture sont fournies dans la mémoire relais mentionnée ci-dessus. Lors de la mémorisation temporaire des informations d'écriture reçues dans la mémoire relais, le dispositif relais mentionné ci-dessus mémorise ces informations d'écriture dans une région de mémorisation d'informations d'écriture cible correspondant à la source de transmission ou destination de transmission; dans ce cas, si la quantité d'informations accumulées dans la région de mémorisation d'informations d'écriture cible dépasse la première valeur de seuil, une notification de dépassement de la première valeur de seuil, qui indique que cette valeur de seuil a été dépassée, est transmise à un second dispositif spécifié. Le second dis-positif qui a reçu cette notification de dépassement de la première valeur de seuil réduit la fréquence à la-quelle les informations d'écriture sont envoyées ou la quantité d'informations qui sont envoyées à la mémoire locale cible mentionnée ci-dessus ou au premier processeur cible mentionné ci-dessus.
Ici, les termes "source de transmission" font référence au (par exemple) second microprocesseur qui dé- livre en sortie les informations d'écriture, ou au second dispositif dans lequel ce microprocesseur est monté, et les termes "destination de transmission" font référence à la mémoire locale qui est la destination de mémorisation des informations d'écriture, ou au premier microproces- Beur qui a cette mémoire locale.
Un cinquième mode préféré de réalisation de la présente invention est le deuxième mode préféré de réalisation mentionné ci-dessus, dans lequel le dispositif relais mentionné ci-dessus comporte une partie ou une pluralité de parties de transmission qui transmettent respectivement des informations au ou à la pluralité de premiers dispositifs mentionnés cidessus, et une ou une pluralité de parties de réception qui reçoivent respectivement des informations à partir du ou de la pluralité de seconds dispositifs mentionnés ci-dessus, et chaque partie parmi la ou la pluralité de parties de transmission et la ou la pluralité de parties de réception mentionnées ci-dessus fonctionnent indépendamment les unes des autres.
Un sixième mode préféré de réalisation de la présente invention est le cinquième mode préféré de réalisation mentionné ci-dessus, dans lequel le dispositif relais mentionné ci-dessus comporte un tampon de réception qui est séparé de la mémoire relais mentionnée ci-dessus, et chacune parmi la ou la pluralité de parties de réception mentionnées ci-dessus mémorise temporaire-ment les informations d'écriture qui sont reçues à partir des seconds dispositifs mentionnés ci-dessus dans ce tampon de réception.
Le dispositif de commande de mémoire selon un troisième aspect de la présente invention est un dispositif de commande de mémoire qui comporte une pluralité de microprocesseurs et un dispositif mémoire physique ou logique, et qui commande la mémorisation d'informations provenant de dispositifs hôtes dans le dispositif mémoire mentionné ci-dessus en utilisant la pluralité de micro-processeurs mentionnés ci-dessus. Ce dispositif de commande de mémoire comporte un ou plusieurs premiers microprocesseurs qui ont une ou une pluralité de premières mémoires locales (350), un ou plusieurs seconds microprocesseurs qui ont une ou une pluralité de secondes mémoires locales, des premiers moyens de mémoire de carte d'adresses pour mémoriser une première carte d'adresses sur laquelle sont enregistrées des adresses de première mémoire locale pour chacun du ou des plusieurs premiers microprocesseurs mentionnés ci-dessus, et des seconds moyens de mémoire de carte d'adresses pour mémoriser une seconde carte d'adresses sur laquelle sont enregistrées des adresses de seconde mémoire locale pour chacun du ou des plusieurs seconds microprocesseurs mentionnés ci-dessus. Un second microprocesseur cible sélectionné parmi le ou les plusieurs seconds microprocesseurs mentionnés ci-dessus acquiert, à partir de la première carte d'adresses, une adresse d'écriture de première mémoire locale indiquant l'emplacement dans lequel l'écriture doit être effectuée dans une première mémoire locale cible qu'a un premier microprocesseur cible sélectionné parmi le ou les plusieurs premiers microprocesseurs men- tionnés ci-dessus, et écrit une instruction de lecture dans l'adresse d'écriture de première mémoire locale acquise. En réponse à l'instruction de lecture qui est écrite dans l'adresse d'écriture de première mémoire locale, le premier microprocesseur cible acquiert, à partir de la seconde carte d'adresses, l'adresse d'écriture de seconde mémoire locale du second microprocesseur cible qui a envoyé l'instruction de lecture mentionnée ci-dessus, et lit les informations de lecture à partir de la première mémoire locale, et écrit les informations lues dans l'adresse d'écriture en seconde mémoire locale acquise.
En outre, par exemple, les "informations d'écriture" ou "informations de lecture" ou "informations lues" mentionnées ci-dessus peuvent être des messages (en d'autres termes, des informations de commande) ayant une longueur de données fixe (ou une longueur de données variable) qui sont échangées entre les processeurs, ou peu-vent être des informations voulues par l'utilisateur (par exemple, des fichiers créés par des programmes d'applica- tion ou analogue) qui font l'objet d'une écriture ou d'une lecture désignée par l'utilisateur.
Dans le dispositif de traitement d'informations et le dispositif de commande de mémoire de la présente invention, les seconds processeurs écrivent des informa- tions d'écriture directement dans la mémoire locale du premier processeur cible, et/ou lisent des informations de lecture directement à partir de cette mémoire locale. Par exemple, dans le cas d'une écriture directe, le premier processeur cible peut acquérir des informations d'écriture qui sont délivrées en sortie par un second processeur en sondant sa propre mémoire locale. La durée pendant laquelle le premier processeur lit la mémoire locale est courte par comparaison à la durée pendant la-quelle une mémoire partagée est lue (par exemple, 1/10 fois ou moins). En conséquence, avec une faible charge, le premier processeur peut acquérir des informations d'écriture qui sont délivrées en sortie par un second processeur. En d'autres termes, la chute des performances des processeurs, de la mémoire partagée et des trajets de mémoire partagée qui est provoquée par la lecture pério- digue de la mémoire partagée comme dans les dispositifs classiques peut être évitée.
La présente invention va maintenant être mieux comprise à partir de la lecture de la description qui va suivre faite en référence aux dessins annexés, sur les-quels: - la figure 1 représente la construction d'un dispositif de commande de réseau de disques constituant un premier mode de réalisation de la présente invention, - la figure 2 représente un exemple de la carte d'adresses qui est mémorisée dans chaque microprocesseur 360 (et 550), - la figure 3 est un schéma fonctionnel qui représente en détail la fonction et la construction de l'adaptateur hôte 300, - la figure 4 est un schéma fonctionnel qui représente en détail la fonction et la construction de l'adaptateur relais 400, - la figure 5 est un schéma fonctionnel qui re- présente en détail la fonction et la construction de l'adaptateur de disque 500, - la figure 6 est un exemple de la construction des instructions qui sont envoyées au contrôleur de port 410 à partir du concentrateur hôte 310, - la figure 7 représente un exemple de la construction des informations d'état qui sont reçues par le concentrateur hôte 310 à partir du contrôleur de port 410, - la figure 8 représente un exemple de la cons- truction des instructions qui sont reçues par le concentrateur de disque 510 à partir du contrôleur de port 410, - la figure 9 représente une configuration de la partie de commande de sélection de port 440, - la figure 10 représente un exemple concret de la partie de commande de sélection de port 440, - la figure il représente le flux de l'échange de données effectué par les adaptateurs 300, 400 et 500 dans un cas où un message du système d'écriture directe en mémoire locale est transmis, et ce message n'est pas temporairement mémorisé dans la région de sous-tampon de la mémoire partagée 470, - la figure 12 représente le flux de l'échange de données effectué par les adaptateurs 300, 400, et 500 dans un cas où un message du système d'écriture directe en mémoire locale est transmis, et ce message est temporairement mémorisé dans la région de sous-tampon de la mémoire partagée 470, - la figure 13 représente le déroulement du traitement dans un cas où la partie de contrôle d'accès 316 commande la transmission d'instructions sur la base d'informations du tableau de. remplissage de tampon de mémoire partagée 315, - la figure 14 représente le déroulement du traitement dans un cas où un tampon plein est réinitiali- sé dans le tableau de remplissage de tampon de mémoire partagée 315, - la figure 15 représente un exemple de la construction de l'adaptateur de disque dans un deuxième mode de réalisation de la présente invention, - la figure 16 représente un exemple de la construction des instructions d'interruption de lecture, - la figure 17 représente un exemple de la constitution des données qui sont délivrées en sortie par l'adaptateur relais en réponse à une instruction d'interruption de lecture provenant de l'adaptateur du côté ré- ception, - la figure 18 représente le flux de l'échange d'instructions d'écriture directe dans un cas où des instructions d'écriture directe sont mémorisées dans une ré- gion de sous-tampon spécifiée de la mémoire partagée 470 dans le deuxième mode de réalisation, - la figure 19 représente un chronogramme de la transmission et de la réception d'instructions de la fi- Bure 18, la figure 20 représente un exemple de la carte d'adresses dans un troisième mode de réalisation de la présente invention, - la figure 21 représente le flux de l'échange de données qui est effectué lorsque des instructions de lecture du système d'écriture directe en mémoire locale ne sont pas temporairement mémorisées dans une région de sous-tampon de la mémoire partagée 470 dans le troisième mode de réalisation, - la figure 22 est un schéma qui représente le flux de l'échange de données qui est effectué lorsque des instructions de lecture du système d'écriture en mémoire locale sont transmises, et ces instructions de lecture sont temporairement mémorisées dans une région de sous-tampon de la mémoire partagée 470 dans le troisième mode de réalisation, - la figure 23 est un schéma qui représente un exemple d'une première variation de connexion de l'adaptateur hôte 300 et de l'adaptateur de disque 500, - la figure 24 est un schéma qui représente un exemple d'une seconde variation de connexion de l'adaptateur hôte 300 et de l'adaptateur de disque 500, et - la figure 25 est un schéma qui représente un exemple d'une troisième variation de connexion de l'adap- tateur hôte 300 et de l'adaptateur de disque 500.
Ci-dessous, on va décrire un dispositif de commande de réseau de disques dans lequel est utilisé un dispositif de traitement d'informations constituant un mode de réalisation de la présente invention en se reportant aux dessins annexés.
On va maintenant décrire le mode de réalisation 1.
La figure 1 représente la construction d'un dispositif de commande de réseau de disques constituant le premier mode de réalisation de la présente invention.
Le dispositif de commande de réseau de disques 100 représenté sur ce dessin est (par exemple) un réseau redondant de disques indépendants bon marché (RAID) ; un ou une pluralité d'ordinateurs hôtes 200 et une pluralité de groupes de disques physiques 9 sont connectés à ce dispositif 100.
L'ordinateur hôte (par la suite désigné d'une manière appropriée par l'abréviation "hôte") 200 est (par exemple) un ordinateur individuel, un poste de travail ou analogue, et est une machine informatique qui comporte une unité centrale de traitement (CPU), une mémoire et analogue. Diverses fonctions sont réalisées par l'exécution de divers types de programmes par la CPU de l'hôte 200. Par exemple, l'hôte 200 transmet des instructions d'écriture qui écrivent des données voulues dans les groupes de disques physiques 9 (par exemple, les dispositifs logiques ou des régions d'enregistrement logiques appelées unités logiques), et des instructions de lecture qui lisent des données voulues à partir des groupes de disques physiques 9, vers le dispositif de commande de réseau de disques 100 via un réseau de communications tel qu'un réseau local (LAN) ou analogue.
Les groupes de disques physiques 9 ont une pluralité de dispositifs mémoire de type disque 600 qui sont disposés sous la forme d'un réseau. Les régions de mémoire physiques ou les régions de mémoire logiques (par exemple, les dispositifs logiques ou les régions d'enregistrement logiques appelées unités logiques) sont disposées dans les groupes de disques physiques 9, et des don- nées provenant de l'ordinateur hôte 200 sont écrites dans les régions de mémoire respectives. De plus, divers types de dispositifs tels que des unités de disque dur, des unités de disquette, des dispositifs de mémoire à semi-conducteurs et analogue peuvent être utilisés en tant que dispositifs mémoire de type disque 600.
Le dispositif de commande de réseau de disques 100 est un dispositif qui est utilisé pour commander l'accès de l'ordinateur hôte 200 à la pluralité de groupes de disques physiques 9. En termes concrets, le dispo- sitif de commande de réseau de disques 100 reçoit des de-mandes de lecture provenant de l'ordinateur hôte 200, acquiert les données pour lesquelles une lecture est demandée depuis les groupes de disques physiques 9 (par exemple, à partir d'une région de mémoire logique spécifiée), et transfère ces données vers l'ordinateur hôte 200; de plus, le dispositif de commande de réseau de disques 100 reçoit des demandes d'écriture ainsi que des données d'écriture à partir de l'ordinateur hôte 200, et mémorise ces données d'écriture dans les groupes de disques physi- ques 9. Une pluralité d'adaptateurs hôtes 300 (ou un seul adaptateur hôte 300), et une pluralité d'adaptateurs de disque 500 (ou un seul adaptateur de disque 500), et un adaptateur relais 400 qui est connecté à la pluralité d'adaptateurs hôtes 300 et à la pluralité d'adaptateurs de disque 500, sont fournis dans le dispositif de commande de réseau de disques 100.
Chaque adaptateur hôte 300 est connecté à un ou une pluralité d'ordinateurs hôtes 200 via un réseau de communications tel qu'un réseau local ou analogue de sorte que ces adaptateurs hôtes 300 peuvent communiquer avec les ordinateurs hôtes 200; de plus, chaque adaptateur hôte 300 est connecté (par exemple, connecté en étoile) à l'adaptateur relais 400 via une interface de communications spécifiée de sorte que la communication est possible. Les adaptateurs hôtes respectifs 300 peu- vent être constitués de circuits matériels (ou de logiciels ou d'une combinaison de matériel et de logiciel) ; ces adaptateurs hôtes 300 commandent les communications entre ce dispositif de commande de réseau de disques 100 et le ou les ordinateurs hôtes 200 qui sont connectés à ce dispositif de commande de réseau de disques 100. Chaque adaptateur hôte 300 a une interface de communications utilisée pour effectuer des communications avec l'hôte connecté 200; de plus, chaque adaptateur hôte 300 a éga- lament une fonction de processeur d'instruction utilisée pour interpréter et traiter divers types d'instructions reçues depuis l'hôte 200. En termes concrets, chaque adaptateur hôte 300 comporte un ou une pluralité de microprocesseurs 360 (appelés par la suite "MP côté hôte"), une ou plusieurs mémoires locales 350 (par exemple, une mémoire locale; appelée par la suite la mémoire "LM côté hôte") dédiées à chaque microprocesseur côté hôte 360, et un concentrateur hôte 310 (en d'autres termes, par exemple, un adaptateur du microprocesseur côté hôte 360 pour l'adaptateur relais 400) qui connecte chaque microprocesseur côté hôte 360 à l'adaptateur relais 400 de sorte qu'une communication est possible.
Chaque adaptateur de disque 500 est connecté à un groupe de disques physiques 9 (ou une pluralité de groupes de disques physiques 9) via une interface de communications spécifiée (par exemple, un réseau local de mémorisation (SAN) ou analogue) de sorte qu'une communication est possible, et est connecté (par exemple, connecté en étoile) à l'adaptateur relais 400 via un ré- seau de communications spécifié de sorte qu'une communication est possible. Les adaptateurs de disque respectifs 500 peuvent être constitués de circuits matériels (ou de logiciel ou une combinaison de matériel et de logiciel) ; ces adaptateurs de disque 500 commandent les communica- tions entre ce dispositif de commande de réseau de dis- ques 100 et les groupes de disques physiques 9 qui sont connectés au dispositif de commande de réseau de disques 100. En termes concrets, chaque adaptateur de disque 500 comporte un ou une pluralité de microprocesseurs 550 (ap- pelés par la suite "MP côté disque"), une ou plusieurs mémoires locales (appelées par la suite "LM côté disque") 560 qui sont dédiées aux microprocesseurs côté disque 550 respectifs, et un concentrateur de disque (en d'autres termes, par exemple, un adaptateur des microprocesseurs côté disque 500 pour l'adaptateur relais 400) 510 qui est utilisé pour connecter les microprocesseurs côté disque respectifs 550 à l'adaptateur relais 400 de sorte qu'une communication est possible.
L'adaptateur relais 400 a un contrôleur de port 410 utilisé pour commander les communications entre la pluralité d'adaptateurs 300 et 500, et une mémoire partagée ("mémoire partagée" est par la suite appelée par l'abréviation "SM") 470 qui est partagée par la pluralité de microprocesseurs 360 et 550. La mémoire partagée 470 contient une région tampon dans laquelle des messages sont temporairement mémorisés dans le cas du système d'écriture directe en mémoire locale, et une région de cache dans laquelle des messages sont mémorisés dans le cas du système d'écriture indirecte en mémoire locale. De plus, des régions de sous-tampon correspondant à chacun des microprocesseurs 360 et 550 sont fournies dans au moins la région tampon (ou à la fois dans la région tampon et la région de cache). En conséquence, par exemple, lors de la mémorisation temporaire d'un message délivré en sortie par un certain microprocesseur côté hôte 360 du système d'écriture directe en mémoire locale dans la mémoire partagée 470, ce message est mémorisé dans la région de sous-tampon qui correspond au microprocesseur côté hôte 360 qui est la source de transmission du message.
En outre, la phrase "système d'écriture directe en mé- moire locale " mentionnée ci-dessus fait référence à un système dans lequel des microprocesseurs côté transmission de message 360 (ou 550) écrivent des messages directement dans les mémoires locales 560 (ou 350) des microprocesseurs côté réception 550 (ou 360) sans l'interposition de ces microprocesseurs côté réception 550 (ou 360). D'autre part, les termes "système d'écriture directe en mémoire locale " font référence essentiellement à un système à mémoire partagée dans lequel des microprocesseurs côté transmission 360 (ou 550) écrivent des messages dans la région de cache de la mémoire partagée 470, et les microprocesseurs côté réception 550 (ou 360) acquièrent ces messages en sondant cette région de cache, et écrivent les messages dans leurs propres mémoires locales 560 (ou 350).
Dans une telle construction, les microprocesseurs côté hôte 360 peuvent directement écrire des messages (informations de commande qui sont échangées entre microprocesseurs) dans des mémoires locales côté disque spécifiées ou voulues 560 via le contrôleur de port 410 de l'adaptateur relais 400 sans l'interposition des microprocesseurs côté réception 550. D'une manière similaire, les microprocesseurs côté réception 550 peuvent directement écrire des messages dans les mémoires locales côté hôte voulues 350 via le contrôleur de port 410 de l'adaptateur relais 400 sans l'interposition des micro-processeurs côté hôte 360. Un exemple d'un dispositif permettant de réaliser cela est la mémorisation d'une carte d'adresses sur laquelle l'adresse d'au moins une mémoire locale 350 ou 560 (appelée par la suite "adresse de LM") appartenant au moins à un autre microprocesseur 360 ou 550 est mémorisée dans chaque microprocesseur 360 ou 550. En résultat, chaque microprocesseur 360 ou 550 peut acquérir des adresses de mémoire locale voulues ou spécifiées à partir de cette carte d'adresses, et peut écrire des messages dans ces adresses de mémoire locale via le contrôleur de port 410 de l'adaptateur relais 400. Ce point sera décrit en termes concrets ci-dessous.
La figure 2 représente un exemple de la carte d'adresses mémorisée dans chaque microprocesseur 360 (et 550).
Divers types d'informations sont enregistrés sur la carte d'adresses 4 mémorisée dans chaque microprocesseur 360 (et 550), par exemple, un microprocesseur hôte 360 dont des informations de discrimination de microprocesseur (représentées par "MP N " sur les dessins) sont "00". Toutefois, des exemples des principaux types d'informations sont des informations d'adresse de mémoire partagée de transmission, des informations d'adresse de mémoire partagée de réception, d'autres informations d'adresse de mémoire locale de microprocesseur, et des informations d'adresse MP propres.
Les informations d'adresse de mémoire partagée de transmission sont des informations qui indiquent l'adresse de la mémoire partagée 470 dans laquelle des messages doivent être mémorisés lorsque des messages sont transmis à un autre microprocesseur 550 (ou 360) par un microprocesseur côté hôte 360 via le système d'écriture de mémoire locale directe. Par exemple, ces informations d'adresse de mémoire partagée de transmission incluent des informations de discrimination pour un autre microprocesseur spécifié unique 550 (ou 360) ou une pluralité d'autres microprocesseurs spécifiés 550 (ou 360), et une ou une pluralité de plages d'adresses de mémoire partagée (une ou une pluralité d'adresses de mémoire partagée) respectivement correspondant au ou à la pluralité d'autres microprocesseurs.
Les informations d'adresse de mémoire partagée de réception sont des informations qui indiquent l'adresse dans la mémoire partagée 470 qui doivent être lues lorsque des messages sont reçus depuis d'autres microprocesseurs 550 (ou 360) par le système d'écriture in-directe en mémoire locale. Par exemple, ces informations d'adresse de mémoire partagée de réception incluent des informations de discrimination pour un autre microprocesseur spécifié unique 550 (ou 360) ou une pluralité d'autres microprocesseurs spécifiés 550 (ou 360), et une ou une pluralité de plages d'adresses de mémoire partagée (une ou une pluralité d'adresses de mémoire partagée) correspondant respectivement au ou à la pluralité d'autres microprocesseurs.
Les informations d'adresse de mémoire locale pour d'autres microprocesseurs sont des informations qui incluent les adresses de mémoire locale respectives du ou de la pluralité d'autres microprocesseurs spécifiés (comme ceci est représenté sur les dessins, l'adresse de mémoire locale de microprocesseur propre peut également être incluse). Par exemple, en termes concrets, comme ce-ci est représenté sur la figure 2, des informations de discrimination (par exemple des noms d'adaptateur) d'un ou de plusieurs (par exemple huit) adaptateurs 300 et 500, des informations de discrimination pour un ou plu-sieurs (par exemple, 15 en excluant MP N "00") autres microprocesseurs 550 (ou 360) montés dans le ou les plu- sieurs adaptateurs 300 et 500, et des plages d'adresses de mémoire locale (une ou une pluralité d'adresses de mémoire locale qui permettent une écriture directe) pour une ou plusieurs mémoires locales 560 (ou 350) appartenant à un ou plusieurs autres microprocesseurs mentionnés ci- dessus 550 (ou 360), sont inclus dans les informations d'adresse de mémoire locale pour d'autres microprocesseurs.
Les informations d'adresse de mémoire locale de microprocesseur propres sont des plages d'adresses de mé- moire locale d'informations d'une ou de plusieurs mémoi- res locales 350 (ou 560) appartenant au microprocesseur en question. En termes concrets, par exemple, comme ceci est représenté sur le dessin, des plages d'adresses de mémoire locale (une ou une pluralité d'adresses de mé- moire locale) correspondant respectivement à un ou plu-sieurs microprocesseurs sources de transmission 360 ou 550 sont incluses dans les informations d'adresse de mémoire locale de microprocesseur propres d'un microprocesseur côté disque 550 (par exemple, MP N "08") qui est la destination de messages provenant du microprocesseur côté hôte 360 qui est MP N "00".
Par conséquent, une carte d'adresses 4 du type décrit ci-dessus est enregistrée dans l'espace d'adresses de programme de chaque microprocesseur 360 et 550. En ré- sultat, lorsqu'une instruction d'écriture est exécutée à l'adresse de mémoire locale d'un microprocesseur cible arbitraire 550 (ou 360) par le traitement du microprogramme d'un tel microprocesseur 360 (ou 550), un message est écrit dans la mémoire locale 560 (ou 350) du micro- processeur cible 550 (ou 360). D'une manière spécifique, le microprocesseur 360 (ou 550) mentionné ci-dessus peut directement écrire des messages dans une mémoire côté disque spécifiée ou voulue 560 via le contrôleur de port 410 de l'adaptateur relais 400 sans l'interposition du microprocesseur de destination 550 (ou 360). En termes concrets, par exemple, dans un cas où le microprocesseur côté hôte 360 qui est le MP N "00" envoie un message au microprocesseur côté disque 550 quiest le MP N "08", ce microprocesseur côté hôte 360 acquiert l'adresse de mé- moire locale correspondant au microprocesseur côté disque 550 qui est MP N "08" à partir de sa propre carte d'adresses 4, produit une instruction d'écriture directe (décrite ultérieurement) qui inclut cette adresse de mémoire locale et le message voulu, et transmet cette instruction d'écriture directe à l'adaptateur relais 400.
Par conséquent, cette instruction d'écriture directe est transférée à partir de l'adaptateur relais 400 à l'adaptateur de disque 500 qui a le microprocesseur côté disque 550 qui est le MP N "08". Lorsque le message contenu dans cette instruction d'écriture directe est mémorisé dans l'adresse de mémoire locale qui correspond au micro-processeur côté hôte 360 qui est la source de transmission (le microprocesseur qui est MP N "00") dans la mémoire de mémoire locale côté disque 560 du microprocesseur côté hôte 550 qui est MP N "08".
En outre, l'adresse de base représentée sur la figure est une adresse qui indique le décalage de la mémoire locale 560 (ou 350), et est une valeur établie spécifiée du concentrateur 510 (ou 310) de l'adaptateur 500 (ou 300) dans lequel le microprocesseur cible 550 (ou 360) est monté ; cette valeur est établie préalablement par le microprocesseur cible 550 (ou 360) en utilisant un microprogramme.
Ci-dessous, on va décrire les constructions et les fonctions de l'adaptateur hôte 300, de l'adaptateur relais 400 et de l'adaptateur de disque 500 en détail en utilisant un cas dans lequel un microprocesseur côté hôte 360 envoie un message à une mémoire locale côté disque voulue 560 à titre d'exemple.
La figure 3 est un schéma fonctionnel qui représente la fonction et la construction de l'adaptateur hôte 300 en détail. La figure 4 est un schéma fonctionnel qui représente la fonction et la construction de l'adaptateur relais 400 en détail. La figure 5 est un schéma fonctionnel qui représente la fonction et la construction de l'adaptateur de disque 500 en détail. Si les figures 3, 4 et 5 sont observées côte à côte, les connexions des adaptateurs 300, 400 et 500 seront comprises.
Comme ceci est représenté sur la figure 3, un ou plusieurs (par exemple deux) microprocesseurs côté hôte 360A et 360B, et une ou plusieurs (par exemple deux) mémoires locales côté hôte 350A et 350B qui correspondent respectivement au ou aux plusieurs microprocesseurs côté hôte 360A et 360B, sont montés dans l'adaptateur hôte 300. Dans l'adaptateur hôte 300, le ou les plusieurs microprocesseurs côté hôte 360A et 360B, les mémoires locales côté hôte 350A et 350B et un concentrateur hôte 310, sont connectés via un bus de processeur spécifié (par exemple, un bus PCI-X) 2 de sorte qu'une communication est possible. Une partie de commande de trajet de micro-processeur 311, une partie de contrôle d'accès 316, un ou plusieurs (par exemple deux) ports hôtes 200A et 200B qui correspondent respectivement au un ou plusieurs microprocesseurs côté hôte 360A et 360B, une partie de détermina- tion d'état 317, un tableau de valeurs de seuil de tampon de mémoire partagée 314, un tableau de remplissage de tampon de mémoire partagée 315, une partie de commande d'interruption 313 et une partie de commande de réinitialisation 312 sont fournis dans le concentrateur hôte 310.
La partie de commande de trajet de microprocesseur 311 reçoit des instructions (par la suite appelées "instructions d'écriture directe") qui incluent des adresses en mémoire locale et des messages, et des instructions (par la suite appelées "instructions d'écriture indirecte") qui incluent des adresses en mémoire partagée et des messages, à partir des microprocesseurs côté hôte 360A et 360B, et transmet ces instructions à la partie de contrôle d'accès 316. En outre, lorsque la partie de commande de trajet de microprocesseur 311 reçoit des ins- tructions de réinitialisation (décrites par la suite) en provenance des microprocesseurs côté hôte 360, la partie de commande de trajet de microprocesseur 360 envoie ces instructions de réinitialisation à la partie de commande de réinitialisation 312.
La partie de contrôle d'accès 316 transfère des instructions d'écriture reçues depuis la partie de commande de trajet de microprocesseur 311 vers le port hôte 200A ou 200B correspondant au microprocesseur côté hôte 360A ou 360E qui est la source de transmission. Dans ce cas, la partie de contrôle d'accès 316 contrôle si oui ou non les instructions reçues depuis la partie de commande de trajet de microprocesseur 311 sont transmises au port hôte 200A ou 200B sur la base d'informations écrites dans le tableau de valeurs de seuil de tampon de mémoire partagée 314 et le tableau de remplissage de tampon de mémoire partagée 315. En termes concrets, par exemple, la partie de contrôle d'accès 316 transmet des instructions d'écriture directe provenant du microprocesseur côté hôte 360A pour lequel "tampon plein" n'est pas enregistré dans le tableau de remplissage de tampon de mémoire partagée 315 au port hôte 200A, mais s'arrête sans transmettre au port hôte 200B d'instructions d'écriture directe à partir du microprocesseur côté hôte 360B pour lequel "tampon plein" est enregistré.
Une partie de commande de transmission 318 et une partie de commande de réception 319 sont contenues dans chaque port hôte 200A et 200B.
La partie de commande de transmission 318 convertit des instructions reçues depuis la partie de contrôle d'accès 316 dans un format spécifié, et transmet ces instructions au contrôleur de port 410 de l'adaptateur relais 400. Les instructions après la conversion de format sont comme représentées sur la figure 6. D'une ma- nière spécifique, les instructions qui sont envoyées au contrôleur de port 410 par la partie de commande de transmission 318 incluent les informations d'adresse, un type d'instruction, des données d'écriture et un contrôle de redondance cyclique (CRC). Par exemple, les informa- tions d'adresse sont une adresse de mémoire locale ou une adresse de mémoire partagée. De plus, par exemple, les types d'instruction incluent "écriture en mémoire partagée" qui indique qu'un message doit être écrit dans la mémoire partagée, "lecture de mémoire partagée" qui indi- que qu'un message doit être lu à partir de la mémoire partagée, et "écriture LM" qui indique qu'un message doit être directement écrit dans une mémoire locale (en outre, la longueur de données du message ou analogue peut égale-ment être incluse). Les données d'écriture sont un mes- sage qui est produit par le microprocesseur source de transmission 360 ou 550. Le contrôle de redondance cyclique indique un code de vérification de données pour ce format d'instruction.
La partie de commande de réception 319 reçoit des informations d'état à partir du contrôleur de port 410, et transfère ces informations vers la partie de détermination d'état 317. Par exemple, ces informations d'état sont comme représenté sur la figure 7. D'une manière spécifique, divers types d'informations sont inclus dans les informations d'état; toutefois, les exemples des principaux types d'informations incluent des informations concernant les microprocesseurs de destination, des informations indiquant "tampon plein" et des informations de "valeur de seuil de tampon dépassée". Par exemple, les informations concernant les microprocesseurs de destination sont des informations de discrimination du microprocesseur de destination 550 du message qui est la cause de la transmission de ces informations d'état. Les informations "tampon plein" sont des informations qui indiquent si oui ou non "tampon plein" (en d'autres termes, par exemple, un avertissement sérieux; décrit ultérieure- ment) a été généré dans la région de sous-tampon de la mémoire partagée 470 correspondant au microprocesseur de destination 550. Les informations "valeur de seuil de tampon dépassée" sont des informations indiquant si oui ou non le message "valeur de seuil de tampon dépassée" (en d'autres termes, par exemple, un avertissement lé- ger; décrit ultérieurement) a été généré dans la région de sous-tampon de la mémoire partagée 470 correspondant au microprocesseur de destination 550.
Dans le tableau de valeurs de seuil de tampon de mémoire partagée 314, on enregistre pour chacun des microprocesseurs 360 et 550 si oui ou non la quantité accumulée d'instructions d'écriture directe présentes dans la région de sous-tampon correspondante a dépassé une première valeur de seuil (en d'autres termes, si oui ou non le message "une valeur de seuil de tampon dépassée" a été généré). En termes concrets, par exemple, lorsque la première valeur de seuil n'a pas été dépassée dans la ré- gion de sous-tampon correspondant à un certain microprocesseur de destination 550, le bit correspondant à ce microprocesseur 550 dans le tableau de valeurs de seuil de tampon de mémoire partagée 314 est "invalidé", tandis que lorsque la première valeur de seuil a été dépassée dans cette région de sous-tampon, le bit correspondant à ce microprocesseur 550 devient "validé" par la partie de détermination d'état 317. Dans ce cas, la partie de commande d'interruption 313 et la partie de contrôle d'accès 316 sont notifiées de ce fait par le tableau de valeurs de seuil de tampon de mémoire partagée 314.
En outre, un bit représentatif de l'enregistre-ment de valeur de seuil est fourni dans le tableau de va-leurs de seuil de tampon de mémoire partagée 314. Ce bit représentatif d'enregistrement de valeur de seuil est "invalidé" si tous les bits correspondant respectivement aux microprocesseurs 360 et 550 sont invalidés; toute-fois, si le bit correspondant a au moins un seul micro-processeur 360 ou 550 est "validé", ce bit représentatif d'enregistrement de valeur de seuil est "validé".
Dans le tableau de remplissage de tampon de mémoire partagée 315, on enregistre pour chacun des micro-processeurs 360 et 550 si oui ou non la quantité accumulée d'instructions d'écriture directe présentes dans la région de sous-tampon a dépassé une deuxième valeur de seuil qui est supérieure à la première valeur de seuil (en d'autres termes, si oui ou non un "tampon plein" a été généré). En termes concrets, par exemple, lorsque la deuxième valeur de seuil n'a pas été dépassée dans la ré- pion de sous-tampon correspondant à un certain microprocesseur de destination 550, le bit correspondant à ce microprocesseur 550 dans le tableau de remplissage de tampon de mémoire partagée 315 est "invalidé", et lorsque la deuxième valeur de seuil est dépassée dans cette région de sous-tampon, le bit correspondant à ce microprocesseur 550 devient "validé" par la partie de détermination d'état 317. Dans ce cas, la partie de commande d'interruption 313 et la partie de contrôle d'accès 316 sont notifiées quant à cela par le tableau de remplissage de tampon de mémoire partagée 315.
Un bit représentatif d'enregistrement de valeur de seuil est fourni dans le tableau de remplissage de tampon de mémoire partagée 315. Si tous les bits correspondant respectivement aux microprocesseurs 360 et 550 sont "invalidés", le bit représentatif d'enregistrement de valeur de seuil est "invalidé" ; toutefois, si le bit correspondant à au moins un microprocesseur 360 ou 550 est "validé", le bit représentatif d'enregistrement de valeur de seuil est "validé".
La partie de commande d'état 317 met à jour le tableau de valeurs de seuil de tampon de mémoire partagée 314 et le tableau de remplissage de tampon de mémoire partagée 315 sur la base des informations de microprocesseur de destination, des informations "tampon plein" et des informations de "valeur de seuil de tampon dépassée" des informations d'état (voir figure 7) reçues depuis la partie de commande de réception 319. En termes concrets, par exemple, si les informations "tampon plein" indiquent "tampon plein", la partie de commande d'état 317 fait passer le bit du tableau de remplissage de tampon de mémoire partagée 315 pour le microprocesseur 550 indiqué par les informations de microprocesseur de destination de l'état "invalidé" à l'état "validé". D'une manière similaire, par exemple, si les informations "valeur de seuil de tampon dépassée" indiquent "valeur de seuil dépassée", la partie de détermination d'état 317 fait basculer le bit dans le tableau de valeurs de seuil de tampon de mémoire partagée 314 pour le microprocesseur 550 indiqué par les informations de microprocesseur de destination de l'état "invalidé" à l'état "validé".
La partie de commande d'interruption 313 vérifie si oui ou non un signal d'interruption est délivré en sortie par les microprocesseurs respectifs 360 sur la base d'informations de chacun des microprocesseurs 360 et 550 qui sont respectivement enregistrées dans les deux types de tableaux 314 et 315, et contrôle le type de signal d'interruption qui est délivré en sortie lorsqu'un tel signal d'interruption est délivré en sortie. En ter-mes concrets, par exemple, lorsque la partie de commande d'interruption 313 reçoit une notification depuis le tableau de valeurs de seuil de tampon de mémoire partagée 314 indiquant qu'une "valeur de seuil dépassée" a été générée pour un certain microprocesseur côté disque 550, la partie de commande d'interruption 313 transmet un signal d'interruption normal au microprocesseur source de transmission de message de l'adaptateur hôte 300 dans lequel cette partie de commande d'interruption 313 est montée (ou à tous les microprocesseurs 360A et/ou 360B). En outre, par exemple, lorsque la partie de commande d'inter- ruption 313 reçoit une notification depuis le tableau de remplissage de tampon de mémoire partagée 315 indiquant qu'un "tampon plein" a été généré pour un certain micro-processeur côté disque 550, la partie de commande d'interruption transmet un signal d'interruption d'anomalie au microprocesseur source de transmission de message de l'adaptateur hôte 300 dans lequel cette partie de commande d'interruption 313 est montée (ou à tous les micro-processeurs 360A et/ou 360B). De plus, le microprogramme du microprocesseur 360A ou 360B qui a reçu un signal d'interruption normal envoie à la partie de commande de réinitialisation 312 une instruction de réinitialisation indiquant "valeur de seuil dépassée" utilisée pour initialiser la "valeur de seuil dépassée" pour le microprocesseur côté disque mentionné ci-dessus 550. En outre, le microprogramme du microprocesseur 360 qui a reçu un signal d'interruption d'anomalie réduit la fréquence à la-quelle des messages destinés au microprocesseur côté dis-que mentionné ci-dessus 550 sont envoyés jusqu'à ce qu'un évènement spécifié se produise (par exemple, jusqu'à ce qu'une notification de libération "de tampon plein" soit reçue depuis le contrôleur de port 410), ou sinon commute à partir du système d'écriture directe en mémoire locale vers le système d'écriture indirecte en mémoire locale et envoie des messages destinés au microprocesseur côté dis- que mentionné ci-dessus 550 jusqu'à ce qu'un évènement spécifié apparaisse (par exemple, jusqu'à ce qu'une durée fixe se soit écoulée après l'exécution du système d'écriture indirecte en mémoire locale), et sur ce, le micro-programme mentionné ci-dessus envoie des messages à la destination mentionnée ci-dessus par le système d'écriture directe en mémoire locale d'une manière classique.
La partie de commande de réinitialisation 312 reçoit des instructions de réinitialisation de "valeur de seuil dépassée" depuis les microprocesseurs côté hôte 360 via la partie de commande de trajet de microprocesseur 311, et fait basculer les bits du tableau de valeurs de seuil de tampon de mémoire partagée 314 des microprocesseurs 550 (360) pour lesquels de telles instructions ont été reçues à partir de "validé" en "invalidé" (c'est-à-dire libère l'état "valeur de seuil dépassée" pour ces microprocesseurs 550). En outre, la partie de commande de réinitialisation 312 reçoit des instructions de réinitialisation "tampon plein" pour certains micro-processeurs 550 (ou 360) par un procédé qui sera décrit ultérieurement, et fait commuter les bits dans le tableau de remplissage de tampon de mémoire partagée 315 pour ces microprocesseurs 550 (ou 360) à partir de "validé" en "invalidé" (c'est-à-dire libère l'état "tampon plein" pour ces microprocesseurs 550 (ou 360)).
Ensuite, on va décrire l'adaptateur relais 400 en se reportant à la figure 4.
Comme décrit ci-dessus, un contrôleur de port 410 et une mémoire partagée 470 sont fournis dans l'adaptateur relais 400. Un ou plusieurs ensembles de ports cô- té hôte 420 auxquels un ou plusieurs adaptateurs hôtes 300 sont respectivement connectés, un ou plusieurs ensembles de ports côté disque 430 auxquels un ou plusieurs adaptateurs de disque 500 sont respectivement connectés, et une partie de commande de sélection de port 440, sont fournis dans le contrôleur de port 410. En outre, une partie de commande d'écriture directe en mémoire locale à distance 450 et une partie de commande de mémoire 460 sont fournies dans le contrôleur de port 410.
Un ou plusieurs (par exemple, deux) ports côté hôte 420A et 420B auxquels un ou plusieurs ports 200A et 200B des adaptateurs hôtes respectifs 300 sont respectivement connectés sont fournis dans l'ensemble de ports côté hôte 420. Les ports côté hôte 420A et 420B sont des interfaces de communications qui sont utilisées pour les communications avec les adaptateurs hôtes 300. Une partie de commande de réception 421 qui reçoit des instructions à format converti depuis les parties de commande de transmission 318 des ports hôtes de destination de connexion 200A et 200B, et une partie de commande de transmission 422 qui transmet des informations d'état préparées par un procédé décrit ultérieurement aux parties de commande de réception 319 des ports hôtes de destination de connexion 200A et 200B, sont fournies dans chacun des ports côté hôte 420A et 420B.
Un ou plusieurs (par exemple, deux) ports côté disque 430A et 430B qui sont respectivement connectés à un ou plusieurs ports de disque 520A et 520B des adaptateurs de disque respectifs 500 sont fournis dans l'ensemble de ports côté disque 430. Les ports côté disque 430A et 430B sont des interfaces de communications qui sont utilisées pour communiquer avec les adaptateurs de disque 500. Une partie de commande de transmission 432, qui transmet des instructions reçues depuis le port côté hôte 420A ou 420B via la partie de commande de sélection de port 440 à la partie de commande de réception du port de disque de destination de connexion 520A ou 520B, et une partie de commande de réception 431, qui reçoit des instructions à partir de la partie de commande de transmission du port de disque de destination de connexion 520A ou 520B, sont fournies dans chacun des ports côté disque 430A et 430B. Le format des instructions délivrées en sortie par la partie de commande de transmission est (par exemple) comme représenté sur la figure 8. D'une manière spécifique, ces instructions incluent des informations d'adresse (par exemple, une adresse de mémoire locale), le type d'instruction et les données d'écriture (c'est-à-dire, des messages au microprocesseur de destination) qui doivent être écrites dans la mémoire locale du microprocesseur de destination. De plus, par exemple, lorsque la partie de commande de transmission 432 inclut l'adresse de mémoire locale dans l'instruction qui est transmise, les N bits supérieurs de cette adresse de mémoire locale peuvent être exclus. Dans ce cas, par exemple, l'adresse de mémoire locale à partir de laquelle les N bits supérieurs ont été exclus est rétablie en l'adresse de mémoire locale correcte en utilisant l'adresse de base de la mémoire locale 560 du concentrateur de disque 510.
Par exemple, lorsque la partie de commande de sélection de port 440 reçoit une instruction d'écriture directe à partir de l'adaptateur hôte 300, la partie de commande de sélection de port 440 discrimine le port côté disque 430 via lequel cette instruction doit être envoyée de l'adresse de mémoire locale contenue dans l'instruc- tion. Dans ce cas, de plus, la partie de commande de sélection de port 440 détermine si oui ou non le port côté disque discriminé 430 est en cours d'utilisation (en ter-mes concrets, par exemple, si oui ou non le port côté disque 430A est actuellement engagé dans la transmission ou la réception d'une instruction différente) ; si ce port côté disque 430A n'est pas en cours d'utilisation, l'instruction d'écriture directe est transmise à l'adaptateur de disque 500 via ce port 430A, tandis que si le port 430A est en cours d'utilisation, l'adresse de mé- moire locale de l'instruction d'écriture directe est envoyée au décodeur d'adresses 451 afin de mémoriser l'instruction d'écriture directe temporairement dans la région de sous-tampon de la mémoire partagée 470, et l'adresse de mémoire locale et les données d'écriture de l'instruction d'écriture directe sont transmises en tant que don-nées à la partie de commande de mémoire 460. De plus, lorsque le port 430A qui était en cours d'utilisation n'est utilisé, la partie de commande de sélection de port 440 reçoit une demande de lecture en provenance du port 430A, et spécifie le port 430A qui a envoyé cette demande de lecture, de sorte que des informations de discrimination du microprocesseur de destination du message qui doit être lu (par exemple, le numéro du microprocesseur de destination) sont discriminées, et ces informations de discrimination sont envoyées au décodeur d'adresses 451.
La figure 9 représente une configuration de la partie de commande de sélection de port 440. La partie de commande de sélection de port 440 sera décrite en détail en se reportant à ce dessin.
La partie de commande de sélection de port 440 comporte un ou plusieurs tampons 601A à 601n, un tableau de gestion de ports 600, et une partie de commande de commutation de trajet 650.
Le ou les plusieurs tampons 601A à 601n sont des tampons qui correspondent respectivement au port ou aux plusieurs ports côté hôte 420A à 420n (ou à un ou plusieurs ports côté disque 430A à 430n). Dans chacun des tampons 601A à 601n, des instructions d'écriture directe qui sont reçues par les ports côté hôte (ou ports côté disque) correspondant à ces tampons sont temporairement mémorisées. En termes concrets, par exemple, les instructions d'écriture directe qui sont reçues par le port côté hôte 420A depuis l'adaptateur hôte 300, et les instructions d'écriture directe qui sont transférées vers le port côté hôte 420 depuis un certain port côté disque, sont mémorisées dans le tampon 601A.
Les informations de commande de port concernant les ports auxquels des instructions d'écriture directe reçues par les ports respectifs mentionnés ci-dessus doi- vent être transférées sont enregistrées pour chacun du ou des plusieurs ports côté hôte 420A à 420n et du ou des plusieurs ports côté disque 430A à 430n dans le tableau de gestion de ports 600. Par exemple, les informations de commande de port incluent une ou plusieurs plages d'adresses de mémoire locale de destination de mémorisa- tion (et des informations de discrimination de microprocesseur) correspondant respectivement aux informations de discrimination du ou des plusieurs ports 430A à 430n et 420A à 420n.
La partie de commande de commutation de trajet 650 est un circuit matériel qui est utilisé pour délivrer en sortie des instructions d'écriture directe reçues de-puis les ports respectifs 420A à 420n et 430A à 430n par des ports différents (celle-ci peut être également un lo- giciel ou une combinaison de matériel et de logiciel). Par exemple, la partie de commande de commutation de trajet 650 peut avoir un type quelconque de construction, aussi longtemps que cette partie de commande de commutation de trajet est capable d'effectuer les trois types de traitement (1) à (3) suivants: (1) Un traitement qui mémorise les instructions d'écriture directe reçues par les ports respectifs 420A à 420n et 430A à 430n dans les tampons 601A à 601n correspondant à ces ports.
(2) Un traitement qui lit les instructions d'écriture directe qui sont mémorisées dans les tampons, et délivre en sortie ces instructions d'écriture directe depuis les ports correspondant aux adresses de mémoire locale contenues dans ces instructions.
(3) Un traitement qui envoie les adresses de mémoire locale des instructions d'écriture directe au dé-codeur d'adresses 451 afin de mémoriser les instructions d'écriture directe temporairement dans les régions de sous-tampon de la mémoire partagée 470 si les ports de destination de sortie sont en cours d'utilisation, et qui transmet les adresses de mémoire locale et les données d'écriture des instructions d'écriture directe en tant que données à la partie de commande de mémoire 460. A titre d'exemple concret, par exemple, la construction re- présentée sur la figure 10 peut être utilisée. D'une ma- nière spécifique, la partie de commande de communication de trajet 650 peut comporter une ou plusieurs parties de commande de trajet 602A à 602n respectivement correspondant au port ou aux plusieurs ports côté disque 430A à 430n, et une partie de commande de trajet de mémoire partagée 603. Chacune de la ou des parties de commande de trajet de port 602A à 602n est un dispositif matériel (par exemple, un sélecteur) qui commande les communications entre le ou les plusieurs tampons 601A à 601n, et le port côté disque correspondant à cette partie de commande de trajet de port lui-même. La partie de commande de trajet de mémoire partagée 603 est un dispositif maté-riel (par exemple, un sélecteur) qui commande les communications entre le ou les plusieurs tampons 601A à 601n, et le décodeur d'adresses 451 et la partie de commande de mémoire 460.
Par exemple, dans le cas de la construction représentée sur la figure 10, le traitement suivant est exécuté.
Les informations de discrimination pour les parties de commande de trajet de port respectives 602A à 602n correspondant aux ports côté disque respectifs 430A à 430n, ainsi que les informations de discrimination pour la partie de commande de trajet de mémoire partagée 603, sont enregistrées dans le tableau de gestion de ports 600. En conséquence, en faisant référence à ce tableau 600, les ports côté hôte respectifs 420A à 420n peuvent discriminer les parties de commande de trajet de port 602A à 602n par lesquelles un arbitrage est possible sur la base des adresses de mémoire locale se trouvant dans les instructions d'écriture directe reçues; en outre, la partie de commande de trajet de mémoire partagée 603 peut être discriminée, et l'arbitrage à l'aide de cette partie de commande est possible.
Le port côté hôte 420B mémorise des instructions d'écriture directe reçues dans le tampon 601B, discrimine la partie de commande de trajet de port 602A qui est l'objet de l'arbitrage sur la base des adresses de mémoire locale se trouvant dans ces instructions et du tableau de gestion de ports 600, et arbitre à l'aide de cette partie de commande de trajet de port 602A.
En résultat de l'arbitrage, si la partie de commande de trajet de port 602A n'est pas en cours d'uti- lisation (par exemple, si cette partie de commande 602A se trouve dans un état dans lequel des instructions d'écriture directe peuvent être délivrées en sortie par la partie de commande 602A), la partie de commande de trajet de port 602A lit les instructions d'écriture di- recte qui se sont accumulées dans le tampon 601B, et transmet ces instructions au port côté disque 430A.
D'autre part, en résultat de l'arbitrage mentionné ci-dessus, si la partiede commande de trajet de port 602A est en cours d'utilisation, le port côté hôte 420B arbitre à l'aide de la partie de commande de trajet de mémoire partagée 603. En résultat, la partie de commande de trajet de mémoire partagée 603 lit les instructions d'écriture directe accumulées dans le tampon 601B, et transfère les adresses de mémoire locale et les don- nées d'écriture de ces commandes en tant que données à la partie de commande de mémoire 460; en outre, les adresses de mémoire locale dans ces instructions sont envoyées au décodeur d'adresses 451.
Les paragraphes cités ci-dessus ont concerné une description de la partie de commande de port 440. Dans la partie de commande de port 440, comme ceci a été décrit ci-dessus, des tampons sont interposés entre les ports côté hôte 420A à 420n et les ports côté disque 430A à 430n, et les instructions d'écriture directe reçues par les ports respectifs 420A à 420n et 430A à 430n sont tem- porairement accumulées dans ces tampons. En conséquence, si les ports respectifs 420A à 420n et 430A à 430n qui ont reçu des instructions d'écriture directe mémorisent temporairement ces instructions dans des tampons spéci- fiés, des instructions séparées suivantes peuvent être reçues même si les instructions mentionnées ci-dessus ne sont pas délivrées en sortie depuis les ports spécifiés désignés pour la sortie. En d'autres termes, les ports côté hôte 420A à 420n et les ports côté disque 430A à 430n peuvent fonctionner indépendamment.
On se reporte à nouveau à la figure 4.
La partie de commande d'écriture directe en mémoire locale à distance 450 commande la mémorisation d'instructions d'écriture directe dans les régions de sous-tampon de la mémoire partagée 470. La partie de commande d'écriture directe en mémoire locale à distance 450 comporte un tableau de pointeurs de pile 453, un décodeur d'adresses 451, une partie de contrôle d'adresse 456, une partie de détermination de valeur de seuil 455, une par- tie de détermination de "tampon plein 454, et une partie de génération d'état 452.
Les pointeurs de pile sont enregistrés dans le tableau de pointeurs de pile 453 pour chacun des micro-processeurs respectifs 550 (et/ou 360) qui sont les des- tinations des messages. Ces pointeurs de pile indiquent une ou plusieurs régions de sous-tampon correspondant respectivement à un ou plusieurs microprocesseurs dans la région tampon mentionnée ci-dessus (région dans laquelle sont mémorisées des instructions d'écriture directe) de la mémoire partagée 470. En termes concrets, par exemple, ces pointeurs de pile indiquent le décalage par rapport à l'adresse de base de la mémoire partagée 470. Les pointeurs de pile pour les microprocesseurs de destination respectifs 550 incluent des pointeurs d'écriture qui indiquent les positions d'écriture des instructions, et des pointeurs de lecture qui indiquent les positions de lecture des instructions. Lorsqu'une demande d'écriture pour un certain microprocesseur de destination 550 est reçue depuis le décodeur d'adresses 451, le tableau de poin- teurs de pile 453 augmente le pointeur d'écriture de ce microprocesseur 550 par une incrémentation de 1; lors-qu'une demande de lecture est reçue pour ce microprocesseur 550, le tableau de pointeurs de pile 453 diminue le pointeur de lecture et le pointeur d'écriture par une dé- crémentation de 1. Ensuite, le pointeur d'écriture ou le pointeur de lecture mis à jour, et les informations de discrimination pour le microprocesseur 550 qui a été l'objet d'une mise à jour de pointeur, sont transmis à la partie de contrôle d'adresse 456, la partie de détermination de "tampon plein" 454 et la partie de détermination de valeur de seuil 455. Dans le présent mode de réalisation, on peut déterminer d'après les valeurs des pointeurs d'écriture si oui ou non des données sont sur le point d'être en surdépassement dans les régions de sous- tampon respectives.
Le décodeur d'adresses 451 mémorise un tableau (non-représenté sur les figures) dans lequel un ou plu-sieurs ensembles d'informations de discrimination de microprocesseur correspondant respectivement à une ou plu- sieurs plages d'adresses de mémoire locale de destination de mémorisation sont enregistrées. Lorsqu'une adresse de mémoire locale est envoyée par la partie de commande de sélection de port 440, le décodeur d'adresses 451 discrimine le microprocesseur de destination de message 550 (ou 360) d'après cette adresse de mémoire locale et du tableau mentionné ci- dessus, sélectionne le pointeur de pile qui correspond au microprocesseur discriminé 550, et transmet une demande d'écriture pour ce microprocesseur 550 au tableau de pointeurs de pile 453. De plus, lorsque des informations de discrimination de microprocesseur de destination sont reçues depuis la partie de commande de sélection de port 440, le décodeur d'adresses 451 sélectionne le pointeur de pile correspondant au microprocesseur 550 qui a ces informations de discrimination, et transmet une demande de lecture pour ce microprocesseur 550 au tableau de pointeurs de pile 453.
La partie de contrôle d'adresse 456 a la fonction d'établir des adresses de mémoire partagée dans les régions de sous-tampon de la mémoire partagée 470.
Concrètement, par exemple, la partie de contrôle d'adresse 456 calcule des adresses d'écriture de mémoire partagée indiquant les emplacements dans la mémoire partagée 470 dans lesquels les données doivent être mémorisées ou des adresses de lecture de mémoire partagée indi- quant les emplacements dans la mémoire partagée 470 à partir desquels des données doivent être lues sur la base des valeurs des pointeurs d'écriture ou des pointeurs de lecture reçues depuis le tableau de pointeurs de pile 453 et de l'adresse de base de la mémoire partagée 470 qui est préalablement établie dans le contrôleur de port 410. La partie de contrôle d'adresse 456 envoie les adresses d'écriture de mémoire partagée calculées ou les adresses de lecture de mémoire partagée à la partie de commande de mémoire 460.
La partie de détermination de valeur de seuil 455 détermine si oui ou non les pointeurs de pile (pointeurs d'écriture) envoyés depuis le tableau de pointeurs de pile 453 ont dépassé la première valeur de seuil; si ces pointeurs ont dépassé la première valeur de seuil, une notification d'apparition d'une "valeur de seuil dé-passée", et des informations de discrimination du micro-processeur de destination 550 dans lequel cette "valeur de seuil dépassée" est apparue, sont transmises à la partie de génération d'état 452.
La partie de détermination de "tampon plein" 454 détermine si oui ou non les pointeurs de pile (pointeurs d'écriture) envoyés par le tableau de pointeurs de pile 453 ont dépassé une deuxième valeur de seuil qui est supérieure à la première valeur de seuil. Si ces pointeurs ont dépassé cette deuxième valeur de seuil, une notification d'apparition d'un "tampon plein", et des in-formations de discrimination du microprocesseur de destination 550 dans lequel ce "tampon plein" est apparu, sont transmises à la partie de génération d'état 452. En outre, cette deuxième valeur de seuil est une valeur de seuil qui est utilisée pour éviter que la quantité accumulée de données dans les régions de sous-tampon de la mémoire partagée 470 ne dépasse la capacité de mémorisa- tion de ces régions de tampon, et est une valeur qui est inférieure à la capacité de ces régions de tampon, mais proche de cette capacité. La première valeur de seuil est une valeur qui est inférieure à cette deuxième valeur de seuil d'une quantité spécifiée.
Lorsque la partie de génération d'état 452 reçoit une notification d'apparition d'un message "valeur de seuil dépassée" et les informations de discrimination du microprocesseur de destination dans lequel celui-ci est apparu depuis la partie de détermination de valeur de seuil 455, la partie de génération d'état 452 produit des informations d'état qui incluent ces informations de discrimination de microprocesseur de destination et un code qui indique l'apparition d'un message "valeur de seuil dépassée". En outre, lorsque la partie de génération d'état 452 reçoit une notification d'apparition d'un mes-sage "tampon plein" et les informations de discrimination du microprocesseur de destination dans lequel celui-ci est apparu à partir de la partie de détermination de "tampon plein" 454, la partie de génération d'état 452 produit des informations d'état qui incluent ces informa- tions de discrimination de microprocesseur de destination et un code qui indique l'apparition de "tampon plein". La partie de génération d'état 452 transmet les informations d'état ainsi produites à des microprocesseurs spécifiés 360 ou 550 (par exemple, tous les microprocesseurs 360 ou 550 ou le microprocesseur côté hôte 360 qui est la source de transmission du message) via la partie de commande de sélection de port 440 et des ports spécifiés 420 (et/ou 430). En termes concrets, par exemple, dans un cas où la partie de génération d'état 452 transmet ces informations d'état à la partie de commande de sélection de port 440, la partie de commande de sélection de port 440 délivre en sortie ces informations d'état depuis le port côté hôte qui a reçu l'instruction d'écriture directe qui a été la cause de la production des informations d'état. En résultat, ces informations d'état sont reçues par le port hôte qui délivre en sortie l'instruction d'écriture directe, et dans l'adaptateur hôte 300, le microprocesseur côté hôte 360A ou 360B auquel une interruption classique ou une interruption d'anomalie doit être envoyée est distingué de ce port hôte.
Lorsque la partie de commande de mémoire 460 reçoit une adresse d'écriture de mémoire partagée depuis la partie de contrôle d'adresse 456, la partie de com- mande de mémoire 460 mémorise les données reçues depuis la partie de commande de sélection de port 440, c'est-à-dire l'adresse de mémoire locale et le message, dans cette adresse d'écriture de mémoire partagée. En résultat, ce message et l'adresse de mémoire locale de ce message sont mémorisés dans la région de sous-tampon de la mémoire partagée 470 qui correspond au microprocesseur de destination 550 de ce message. Lorsque la partie de commande de mémoire 460 reçoit une adresse de lecture de mémoire partagée depuis la partie de contrôle d'adresse 456, la partie de commande de mémoire 460 lit les données qui se trouvent dans cette adresse de lecture de mémoire partagée (c'est-à-dire l'adresse de mémoire locale et le message défini qui est mémorisé dans la région de sous-tampon).
Ensuite, on va décrire en détail l'adaptateur de disque 500 en se reportant à la figure 5.
Dans l'adaptateur de disque 500, comme ceci est représenté sur la figure 5, un ou plusieurs (par exemple deux) microprocesseurs côté disque 550A et 550B, une ou plusieurs mémoires locales côté disque 560A et 650B, et un concentrateur de disque 510, sont connectés via un bus de processeur spécifié 6 (par exemple, un bus PCI-X) de sorte qu'une communication est possible. Les ports de disque 520A et 520B qui sont respectivement connectés aux ports côté disque 430A et 430B de l'adaptateur relais 400, une partie d'établissement d'adresse de base de mémoire locale 513, une partie de contrôle d'adresse de mémoire locale 514 et une partie de commande de trajet de microprocesseur 515 sont fournies dans le concentrateur de disque 510. Une partie de commande de réception 516 et une partie de commande de transmission 512 sont fournies dans chacun des ports de disque 520A et 520B.
La partie de commande de réception 516 reçoit des instructions dans le format représenté sur la figure 8 (c'est-à-dire, des instructions contenant une adresse de mémoire locale et un message) à partir des parties de commande de transmission 432 des ports côté disque du contrôleur de port 410, et envoie ces instructions aux parties de contrôle d'adresse de mémoire locale 514.
La partie d'établissement d'adresse de base de mémoire locale 513 est un dispositif mémoire (par exemple, une mémoire non-volatile) qui mémorise les adresses de base des mémoires locales respectives 560.
La partie de contrôle d'adresse de mémoire lo-35 cale 514 calcule des adresses de mémoire locale précises en utilisant les adresses de mémoire locale reçues depuis la partie de commande de réception 516 et les adresses de base mémorisées dans la partie d'établissement d'adresse de base de mémoire locale 513, et transfère ces adresses de mémoire locale et les messages reçus depuis la partie de commande de réception 516 à la partie de commande trajet de microprocesseur 515.
La partie de commande de trajet de microprocesseur 515 lit des messages reçus depuis la partie de contrôle d'adresse de mémoire locale 514 dans l'adresse de mémoire locale reçue depuis la partie de contrôle d'adresse de mémoire locale 514 via le bus de processeur 6.
La partie de commande de transmission 512 re- çoit les instructions qui sont délivrées en sortie depuis le microprocesseur côté disque 550A, et délivre en sortie ces instructions à l'adaptateur relais 400.
Les paragraphes cités ci-dessus ont concerné une description de l'adaptateur hôte 300, de l'adaptateur relais 400 et de l'adaptateur de disque 500.
En outre, dans la description citée ci-dessus, un cas dans lequel des messages pour les microprocesseurs côté disque 550 ont été envoyés par les microprocesseurs côté hôte 360 a été considéré à titre d'exemple; toutefois, du fait que l'on peut avoir également des cas dans lesquels les microprocesseurs côté disque 550 envoient des messages pour les microprocesseurs côté hôte 360, le concentrateur hôte 310 et le concentrateur de disque 510 ont à la fois la fonction et la construction du concen- trateur hôte mentionné ci-dessus 310 et la fonction et la construction du concentrateur de disque mentionné ci-dessus 510. D'une manière spécifique, par exemple, le concentrateur hôte 310 comporte une partie de contrôle d'adresse de mémoire locale 514 et analogue similaire aux parties du concentrateur de disque 510, et le concentra- teur de disque 510 comporte une partie de commande d'interruption 313 et analogue similaire aux parties du concentrateur hôte 310.
De plus, dans la description mentionnée
ci-dessus, un cas dans lequel les microprocesseurs côté hôte 360 ayant envoyé des messages aux microprocesseurs côté disque 550 a été pris en considération à titre d'exemple. Toutefois, les microprocesseurs côté hôte 360 peuvent également envoyer des messages aux microproces- seurs côté hôte 360 différents d'eux-mêmes; d'une manière similaire, les microprocesseurs côté disque 550 peuvent également envoyer des messages à des microprocesseurs côté disque 550 autres que eux mêmes. Dans de tels cas, de plus, les messages peuvent être échangés via le contrôleur de port 410 de l'adaptateur relais 400.
Le déroulement du traitement de données qui est effectué entre l'adaptateur hôte 300, l'adaptateur relais 400 et l'adaptateur de disque 500 mentionnés ci-dessus va maintenant être décrit ci-dessous.
Dans le présent mode de réalisation, lorsque les microprocesseurs respectifs 360 et 550 envoient des messages à d'autres microprocesseurs 550 et 360, ces mes-sages sont transmis comme une règle par le système d'écriture directe en mémoire locale (en d'autres termes, des instructions qui ont des adresses de mémoire locale, le type d'instruction "écriture LM" et des messages sont envoyés). Ci-dessous, le déroulement de l'échange de don-nées qui est effectué par les adaptateurs 300, 400 et 500 sera décrit en considérant le microprocesseur côté hôte 360A en tant que microprocesseur source de transmission de message, et le microprocesseur côté disque 550A en tant que microprocesseur de destination de message.
(1) Premier cas: un cas dans lequel des messages sont transmis par le système d'écriture directe en mémoire locale, et ces messages ne sont pas temporaire- ment mémorisés dans les régions de sous-tampon de la mémoire partagée 470.
Le déroulement de l'échange de données qui est effectué par les adaptateurs 300, 400 et 500 dans le pre- mier cas est représenté sur la figure 11. Le déroulement de ce premier cas sera décrit ci-dessous en se reportant à la figure 11, aux figures 3 à 5 et à la figure 9.
Le microprocesseur côté hôte 360A acquiert l'adresse de mémoire locale correspondant au microproces- Beur de destination, qui est l'adresse de mémoire locale de destination de mémorisation de message, d'après la carte d'adresses 4 qui est mémorisée par ce microprocesseur côté hôte 360A lui-même, et délivre en sortie une instruction d'écriture qui contient l'adresse de mémoire locale acquise et le message qui doit être écrit dans cette adresse au bus de microprocesseur 2 (étape Si). En conséquence, cette instruction d'écriture est transmise à la partie de commande de transmission 318 du port hôte 200A correspondant au microprocesseur 360A lui-même via la partie de commande de trajet de microprocesseur 311 et la partie de contrôle d'accès 316. La partie de commande de transmission 318 convertit cette instruction dans un format spécifié, et transmet l'instruction après la conversion de format (c'est-à-dire une instruction conte- nant une adresse de mémoire locale, le type d'instruction "écriture directe en LM" et un message) à la partie de commande de réception 421 appartenant au port côté hôte 420A qui est la destination de connexion du port hôte 200A (S2).
La partie de commande de réception 421 appartenant au port côté hôte 420A du contrôleur de port 410 mémorise temporairement l'instruction reçue depuis la partie de commande de transmission 318 du port hôte 200A dans un tampon spécifié 601A de la partie de commande de sélection de port 440. En outre, cette partie de commande de réception 421 discrimine lequel des ports côté disque 430A à 430n doit être utilisé sur la base de l'adresse de mémoire locale contenue dans cette instruction, et du tableau de gestion de ports 600, et transmet un signal de demande spécifié au port cible discriminé 430A (c'est-à-dire le port côté disque correspondant à l'adresse de mémoire locale de destination de mémorisation) (S3). Lorsque le port côté hôte 420A reçoit (en réponse à ce signal de demande) un signal (représenté par "non-occupé" sur les figures) à partir du port cible 430A (ou de la partie de commande de trajet de port 602A correspondant à ce port cible 430A) indiquant que le port cible 430 n'est pas en cours d'utilisation (S4), l'instruction dans le tampon 601A est lue et transférée via l'adaptateur de disque 500 via la partie de commande de transmission 432 du port cible 430A (S5, S6). De plus, la partie de commande de transmission 442 du port côté hôte 420A transmet une notification indiquant que ce transfert d'instruction a été achevé à la partie de commande de ré- ception 319 du port hôte de destination de connexion 200A (en résultat, le fait que le transfert de l'instruction de sortie a été achevé peut être confirmé dans l'adaptateur hôte 300) (S7).
La partie de commande de réception 516 du port de disque 520A qui a reçu l'instruction depuis l'adaptateur relais 400 envoie cette instruction (c'est-à-dire une instruction contenant l'adresse de mémoire locale et un message) à la partie de contrôle d'adresse de mémoire locale 514.
La partie de contrôle d'adresse de mémoire locale 514 calcule l'adresse de mémoire locale exacte en utilisant l'adresse de mémoire locale reçue depuis la partie de commande de réception 516 et l'adresse de base mémorisée par la partie d'établissement d'adresse de base de mémoire locale 513, et transfère cette adresse de mé- moire locale et le message reçus depuis la partie de commande de réception 516 à la partie de commande de trajet de microprocesseur 515.
La partie de commande de trajet de microproces- seur 515 écrit le message reçu depuis la partie de contrôle d'adresse de mémoire locale 514 dans l'adresse de mémoire locale (reçue depuis la partie de contrôle d'adresse de mémoire locale 514) via le bus de processeur 6 (S8).
Sur la base des "informations d'adresse de mémoire locale de microprocesseur" dans la carte d'adresses mémorisée par le microprocesseur côté disque 550 lui-même, le microprocesseur côté disque 500 sonde l'adresse de mémoire locale correspondant au microproces- seur source de transmission 360 dans sa propre mémoire locale 560 (c'est- à-dire qu'il lit périodiquement cette adresse de mémoire locale) (S9, S10) . Dans ce cas, s'il y a un message dans cette adresse de mémoire locale, le microprocesseur côté disque 550 acquiert le message à cette adresse de mémoire locale (S11, S12).
En résultat des séries de flux citées ci-dessus, les messages envoyés par les microprocesseurs côté hôte 360 sont directement écrits dans les mémoires locales côté disque 560, et ces messages directement écrits sont transmis aux microprocesseurs côté disque 550.
(2) Second cas: un cas dans lequel des messages sont transmis par le système d'écriture directe en mémoire locale, et ces messages sont temporairement mémo- risés dans les régions de sous-tampon de la mémoire partagée 470.
Le déroulement de l'échange de données qui est effectué par les adaptateurs 300, 400 et 500 dans ce second cas est représenté sur la figure 12. Le déroulement de ce second cas sera décrit ci-dessous en se reportant à la figure 12, aux figures 3 à 5 et à la figure 9.
Dans un flux similaire à celui du premier cas mentionné ci-dessus, la partie de commande de réception 421 du port côté hôte 420A reçoit une instruction d'écriture directe (S21, S22), mémorise temporairement cette instruction dans un tampon spécifié 601A, discrimine le port cible 430A sur la base de l'adresse de mémoire locale obtenue dans cette instruction et du tableau de ges- tion de ports 600, et transmet un signal de demande spécifié au port cible 430A (S23). Lorsque le port côté hôte 420A reçoit (en réponse à ce signal de demande) un signal (représenté par "occupé" sur les figures) depuis le port cible 430A indiquant que le port cible 430A est en cours d'utilisation (S24), la partie de commande de commutation de trajet 650 envoie l'adresse de mémoire locale de l'instruction reçue au décodeur d'adresses 451, et transmet le message et l'adresse de mémoire locale contenus dans l'instruction reçue à la partie de commande de mémoire 460 en tant que données a (S25). Par conséquent, le port côté hôte 420A envoie une notification de fin du transfert d'instruction à la partie de commande de réception 319 du port hôte 200A (S26).
Lorsque l'adresse de mémoire locale est envoyée au décodeur d'adresses 451 par la partie de commande de sélection de port 440, le décodeur d'adresses 451 discrimine le microprocesseur de destination 550 du message de cette adresse de mémoire locale, sélectionne le pointeur de pile correspondant au microprocesseur discriminé 550, et transmet une demande d'écriture pour ce microprocesseur 550 au tableau de pointeurs de pile 453.
Lorsque le tableau de pointeurs de pile 453 reçoit une demande d'écriture pour un certain microprocesseur de destination 550 depuis le décodeur d'adresses 451, le tableau de pointeurs de pile 453 augmente le pointeur d'écriture de ce microprocesseur 550 par une incrémentation de un, et transmet la valeur mise à jour du pointeur d'écriture et les informations de discrimination pour le microprocesseur 550 qui a fait l'objet d'une mise à jour de pointeur à la partie de contrôle d'adresse 456, la partie de détermination de "tampon plein" 454 et à la partie de détermination de valeur de seuil 455.
Sur la base de la valeur du pointeur d'écriture qui est reçue depuis le tableau de pointeurs de pile 453 et de l'adresse de base de la mémoire partagée 470 qui est établie préalablement dans le contrôleur de port 410, la partie de contrôle d'adresse 456 calcule l'adresse d'écriture de mémoire partagée qui indique l'emplacement dans la mémoire partagée 470 dans laquelle des données doivent être mémorisées. La partie de contrôle d'adresse 456 envoie l'adresse d'écriture de mémoire partagée cal-culée à la partie de commande de mémoire 460.
Lorsque la partie de commande de mémoire 460 reçoit une telle adresse d'écriture de mémoire partagée depuis la partie de contrôle d'adresse 456, la partie de commande de mémoire 460 mémorise les données a reçues depuis la partie de commande de sélection de port 440, c'est-à-dire l'adresse de mémoire locale et le message, dans cette adresse d'écriture de mémoire partagée.
Par conséquent, lorsque le port cible 430A n'est plus en cours d'utilisation, une demande de lecture des données a qui contiennent le message mémorisé dans la région de sous-tampon de la mémoire partagée 470 (c'est-à-dire l'instruction représentée sur la figure 11) est automatiquement envoyée à la partie de commande de sélection de port 440, ou est envoyée en réponse à une interrogation périodique provenant de la partie de commande de sélection de port 440.
La partie de commande de commutation de trajet 650 de la partie de commande de sélection de port 440 s'assure des informations de discrimination de microprocesseur pour le microprocesseur côté disque de destination 550 correspondant à ce port 430A du port 430A qui a envoyé la demande de lecture et le tableau de gestion de ports 600, et envoie ces informations de discrimination de microprocesseur au décodeur d'adresses 451.
Lorsque le décodeur d'adresses 451 reçoit de telles informations de discrimination de microprocesseur depuis la partie de commande de sélection de port 440, le décodeur d'adresses 451 sélectionne le pointeur de pile qui correspond au microprocesseur 550 qui a ces informations de discrimination, et transmet une demande de lecture pour ce microprocesseur 550 au tableau de pointeurs de pile 453.
Lorsque le tableau de pointeurs de pile 453 reçoit la demande de lecture pour le microprocesseur côté entrée de transmission 550, le tableau de pointeurs de pile 453 diminue le pointeur de lecture et le pointeur d'écriture par une décrémentation de un, et transmet la valeur de pointeur mise à jour et les informations de discrimination pour le microprocesseur 550 qui a fait l'objet d'une mise à jour de pointeur à la partie de contrôle d'adresse 456, à la partie de détermination de "tampon plein" 454 et à la partie de détermination de va- leur de seuil 455.
Sur la base de la valeur du pointeur de lecture reçue depuis le tableau de pointeurs de pile 453 et de l'adresse de base de la mémoire partagée 470 qui est établie préalablement dans le contrôleur de port 410, la partie de contrôle d'adresse 456 calcule l'adresse de lecture de mémoire partagée qui indique l'emplacement dans la mémoire partagée 470 à partir de laquelle des données doivent être lues. La partie de contrôle d'adresse 456 envoie l'adresse de lecture de mémoire par- tagée calculée à la partie de commande de mémoire 460 (S27).
Lorsque la partie de commande de mémoire 460 reçoit cette adresse de lecture de mémoire partagée de- puis la partie de contrôle d'adresse 456, la partie de commande de mémoire 460 lit les données a (c'est-à-dire l'ensemble constitué de l'adresse de mémoire locale et du message mémorisé dans la région de sous- tampon) qui sont présentes dans cette adresse de lecture de mémoire parta- gée (S28), et transfère ces données au port cible 430A qui a envoyé la demande de lecture mentionnée ci-dessus via la partie de commande de sélection de port 440. En résultat, ces données asont converties dans un format spécifié (par exemple, elles sont converties en une ins- truction qui contient une adresse de mémoire locale, "écriture en mémoire locale" en tant que type d'instruction, et des données d'écriture) par la partie de commande de transmission 432 du port cible 430A, et sont transmises à la partie de commande de réception 516 du port de disque 520A (S29, S30).
Par conséquent, dans un déroulement similaire à celui du cas 1 mentionné ci-dessus, le message adressé au microprocesseur côté disque 550A est écrit dans la mémoire locale 560A de ce microprocesseur 550A sans l'interposition de ce microprocesseur 550A, et le microprocesseur 550A peut acquérir le message qui lui est adressé en sondant sa propre mémoire locale 560A (S31 à S34).
En outre, dans ce flux, à chaque fois que la valeur du pointeur d'écriture du tableau de pointeurs de pile 453 est mise à jour, la valeur mise à jour du pointeur d'écriture est envoyée à la partie de détermination de valeur de seuil 455 et à la partie de détermination de "tampon plein" 454.
La partie de détermination de valeur de seuil 455 détermine si oui ou non la valeur du pointeur d'écri- ture envoyée depuis le tableau de pointeurs de pile 453 a dépassé la première valeur de seuil. Si cette valeur a dépassé la première valeur de seuil, la partie de détermination de valeur de seuil 455 transmet une indication indiquant "une valeur de seuil dépassée" est apparue, et des informations de discrimination pour le microprocesseur de destination 550A dans lequel celui-ci est apparu, à la partie de génération d'état 452.
La partie de détermination de "tampon plein" 454 détermine si oui ou non le pointeur d'écriture envoyé depuis le tableau de pointeurs de pile 453 a dépassé une deuxième valeur de seuil qui est supérieure à la première valeur de seuil. Si cette valeur a dépassé cette deuxième valeur de seuil, la partie de détermination de "tampon plein" transmet une indication désignant que "tampon plein" est apparu, et des informations de discrimination pour le microprocesseur 550A dans lequel celui-ci est apparu, à la partie de génération d'état 452.
Lorsque la partie de génération d'état 452 re- çoit une notification d'apparition d'un message "valeur de seuil dépassée" et les informations de discrimination du microprocesseur 550A dans lequel celui-ci est apparu, depuis la partie de détermination de valeur de seuil 455, la partie de génération d'état 452 produit des informa- tions d'état qui incluent les informations de discrimination de microprocesseur et un code qui indique l'apparition d'un message "valeur de seuil dépassée". En outre, lorsque la partie de génération d'état 452 reçoit une notification d'apparition d'un message "tampon plein" et les informations de discrimination du microprocesseur 550A dans lequel celui-ci est apparu, à partir de la partie de détermination de "tampon plein" 454, la partie de génération d'état 452 produit des informations d'état qui incluent les informations de discrimination de micropro- cesseur et un code qui indique l'apparition de "tampon plein". La partie de génération d'état 452 transmet les informations d'état ainsi produites à des microprocesseurs spécifiés 360 ou 550 (par exemple, à tous les microprocesseurs côté hôte 360 ou au microprocesseur côté hôte 360A qui est la source de transmission du message) via la partie de commande de sélection de port 440 et des ports spécifiés 420 (et/ou 430).
La partie de commande de réception 319 du port qui a reçu les informations d'état, par exemple le port hôte 200A, transfère les informations d'état reçues vers la partie de détermination d'état 317.
Sur la base des informations de microprocesseur de destination, des informations "tampon plein" et des informations de "valeur de seuil dépassée" dans les in- formations d'état reçues depuis la partie de commande de réception 319, la partie de détermination d'état 317 met à jour le tableau de valeurs de seuil de tampon de mémoire partagée 314 et le tableau de remplissage de tampon de mémoire partagée 315. En termes concrets, par exemple, si les informations "tampon plein" indiquent "tampon plein", la partie de détermination d'état 317 fait passer le bit du tableau de remplissage de tampon de mémoire partagée 315 pour le microprocesseur 550A indiqué par les informations de microprocesseur de destination de "inva- lidé" en "validé". D'une manière similaire, par exemple, si les informations "valeur de seuil de tampon dépassée" indiquent "valeur de seuil de tampon dépassée", la partie de détermination d'état 317 fait basculer le bit dans le tableau de valeurs de seuil de tampon de mémoire partagée 314 pour le microprocesseur 550A indiqué par les informations de microprocesseur de destination de "invalidé" en "validé".
Lorsque le bit dans le tableau de valeurs de seuil de tampon de mémoire partagée 314 correspondant à un certain microprocesseur 550A devient "validé", le ta- bleau de valeurs de seuil de tampon de mémoire partagée 314 notifie à la partie de commande d'interruption 313 et à la partie de contrôle d'accès 316 ce fait.
En outre, lorsque le bit dans le tableau de remplissage de tampon de mémoire partagée 315 correspondant à un certain microprocesseur 550A devient "validé", le tableau de remplissage de tampon de mémoire partagée 315 notifie à la partie de commande d'interruption 313 et à la partie de contrôle d'accès 316 ce fait.
Lorsque la partie de commande d'interruption 313 reçoit une notification depuis le tableau de valeurs de seuil de tampon de mémoire partagée 314 indiquant qu'une "valeur de seuil dépassée" est apparue pour un certain microprocesseur côté disque 550A, la partie de commande d'interruption 313 transmet un signal d'interruption normale à tous les microprocesseurs 360 (ou seulement au microprocesseur 360A qui est la source de transmission du message) situés dans l'adaptateur hôte 300 dans lequel cette partie de commande d'interruption 313 est montée. En outre, lorsque la partie de commande d'interruption 313 reçoit une notification depuis le tableau de remplissage de tampon de mémoire partagée 315 indiquant qu'un "tampon plein" est apparu pour un certain microprocesseur côté disque 550A, la partie de commande d'interruption 313 transmet un signal d'interruption d'anomalie à tous les microprocesseurs 360 (ou uniquement au microprocesseur 360A qui est la source de transmission du message) situés dans l'adaptateur hôte 300 dans lequel est montée cette partie de commande d'interruption 313.
Le microprogramme du microprocesseur 360A qui a reçu un signal d'interruption normale envoie à la partie de commande de réinitialisation 312 une instruction de réinitialisation "valeur de seuil dépassée" qui est utilisée pour réinitialiser la "valeur de seuil dépassée" pour les microprocesseurs côté disque mentionnés ci-dessus 550. Dans ce cas, en réponse à cette instruction de réinitialisation de "valeur de seuil dépassée", la partie de commande de réinitialisation 312 commute le bit dans le tableau de valeurs de seuil de tampon de mé- moire partagée 314 pour le microprocesseur 550 pour le-quel cette instruction a été reçue à partir de "validé" en "invalidé" (c'est-à-dire que la partie de commande de réinitialisation 312 libère l'état "valeur de seuil dé-passée" pour ce microprocesseur 550). Le tableau de va- leurs de seuil de tampon de mémoire partagée 314 envoie une indication indiquant que le bit a été réinitialisé de "validé" en "invalidé", et des informations de discrimination de microprocesseur pour le microprocesseur qui a fait l'objet de cette réinitialisation, à la partie de contrôle d'accès 316. En résultat, même si des messages sont transmis par les microprocesseurs respectifs 360 au microprocesseur de destination 550A dans lequel un mes-sage "valeur de seuil dépassée" est apparu, ces messages sont transmis à l'adaptateur relais via la partie de contrôle d'accès 316. De plus, le système peut également être conçu de sorte que le microprocesseur 360A reçoit un signal d'interruption normale, la quantité de messages envoyés pour le microprocesseur 550A dans lequel un mes-sage "valeur de seuil dépassée" est apparu, ou la fré- quence à laquelle ces messages sont envoyés, est réduite.
Le microprogramme du microprocesseur 360 qui a reçu un signal d'interruption d'anomalie réduit la fréquence à laquelle les messages sont envoyés au microprocesseur côté disque mentionné ci-dessus 550A, ou la quan- tité de tels messages qui sont envoyés, jusqu'à ce qu'un évènement spécifié apparaisse (par exemple, jusqu'à ce qu'une notification de libération du "tampon plein" soit reçue depuis le contrôleur de port 410) ; en variante, le microprogramme passe du système d'écriture directe en mé- moire locale au système d'écriture indirecte en mémoire locale, et envoie les messages destinés au microprocesseur côté disque 550A mentionné ci-dessus, et envoie en-suite les messages à cette destination par le système d'écriture locale en mémoire directe d'une manière clas- sique après l'apparition d'un évènement spécifié (le microprogramme peut également envoyer des messages par le système d'écriture directe en mémoire locale selon la manière classique, et la partie de contrôle d'accès 316 peut empêcher ces messages de passer à travers l'adapta- teur relais 400).
De plus, lorsque "tampon plein" est enregistré dans le tableau de remplissage de tampon de mémoire partagée 315, ce message "tampon plein" est libéré (par exemple) par le procédé suivant.
D'une manière spécifique, lorsque la valeur du pointeur d'écriture mis à jour reçue depuis le tableau de pointeurs de pile 453 atteint une troisième valeur de seuil qui est inférieure d'une quantité spécifiée à la deuxième valeur de seuil utilisée en tant que référence pour "tampon plein", la partie de détermination de "tampon plein" 454 notifie à la partie de génération d'état 452 ce fait, et la partie de génération d'état 452 transmet des informations d'état qui incluent un code qui indique libération de "tampon plein" et des informations de discrimination pour le microprocesseur qui fait l'objet de cette libération de "tampon plein". Ces informations d'état sont reçues par la partie de détermination d'état 317 du concentrateur hôte 310 via un trajet spécifié, et la partie de détermination d'état 317 notifie à la partie de commande de réinitialisation 312 le contenu de ces in- formations d'état. La partie de commande de réinitialisation 312 spécifie des informations de discrimination pour le microprocesseur qui fait l'objet d'une libération de "tampon plein" à partir du contenu de la notification mentionnée ci-dessus, et libère le "tampon plein" pour ce microprocesseur en réinitialisant le bit dans le tableau de remplissage de tampon de mémoire partagée 315 pour ce microprocesseur par un changement à partir de "validé" en "invalidé". Le tableau de remplissage de tampon de mé- moire partagée 315 envoie une notification indiquant que le bit a été changé de "validé" en "invalidé", et des in-formations de discrimination pour le microprocesseur qui a fait l'objet de cette réinitialisation, à la partie de contrôle d'accès 316. En résultat, par exemple, dans un cas où des messages destinés au microprocesseur 550 dans lequel "tampon plein" est apparu ont été arrêtés dans la partie de contrôle d'accès 316, cette arrêt est libéré, de sorte que les messages destinés à ce microprocesseur 550 sont transmis à l'adaptateur relais via la partie de contrôle d'accès 316.
De plus, lorsque le "tampon plein" mentionné ci-dessus" est réinitialisé par le tableau de remplissage de tampon de mémoire partagée 315, la partie de commande d'interruption 313 peut être notifiée de ce fait, et des signaux d'interruption d'un type correspondant à la réinitialisation de "tampon plein" peuvent être transmis aux microprocesseurs côté hôte respectifs 360 par la partie de commande d'interruption 313. Dans ce cas, si les microprocesseurs côté hôte 360 qui reçoivent ce signal d'interruption ont reçu des messages destinés au micro-processeur 550 dans lequel "tampon plein" mentionné ci-dessus s'est produit conformément au système d'écriture indirecte en mémoire locale (c'est-à-dire le système de mémoire partagée), cette transmission peut être arrê- tée, et le système peut revenir à la transmission de mes-sages à ce microprocesseur 550 conformément au système d'écriture directe en mémoire locale.
On va maintenant décrire ci-dessous des exemples concrets de ces cas.
La figure 13 représente le flux de traitement dans un cas où la partie de contrôle d'accès 316 contrôle la transmission d'instructions sur la base d'informations du tableau de remplissage de tampon de mémoire partagée 315.
La partie de contrôle d'accès 316 de l'adaptateur hôte 300 fait référence au bit représentatif d'enregistrement de valeur de seuil dans le tableau de remplis-sage de tampon de mémoire partagée 315, et détermine si ce bit est "validé" ou "invalidé" (S51).
Si le bit représentatif d'enregistrement de va-leur de seuil est "invalidé" en résultat de l'étape S51 (NON dans S51), ceci signifie qu'aucun "tampon plein" ne s'est produit pour aucun microprocesseur de destination, et que "tampon plein" ne va pas se produire quelle que soit la région de sous-tampon de la mémoire partagée 470 dans laquelle des instructions d'écriture directe sont accumulées. En conséquence, la partie de contrôle d'accès 316 conçoit le système de sorte que les instructions d'écriture directe sont transmises.
D'autre part, si le bit représentatif d'enregistrement de valeur de seuil est "validé" en résultat de S51 (OUI dans S51), ceci signifie que "tampon plein" s'est produit pour au moins un microprocesseur de desti- nation; en conséquence, la partie de contrôle d'accès 316 détermine si le bit correspondant au microprocesseur de destination d'instruction est "invalidé" ou "validé" dans le tableau de remplissage de tampon de mémoire partagée 315 (S53). Si ce bit est "invalidé" en résultat de S53, la partie de contrôle d'accès 316 conçoit le système de sorte que les instructions d'écriture directe sont transmises (S52) ; d'autre part, si ce bit est "validé", la partie de contrôle d'accès 316 conçoit le système de sorte que des instructions d'écriture directe sont trans- mises (par exemple, pour le microprocesseur source de transmission d'instruction 360A, des instructions indirectes dans lesquelles l'adresse de mémoire locale de l'instruction est changée en adresse de mémoire partagée sont transmises) (S54).
La figure 14 représente le déroulement du traitement dans un cas où le "tampon plein" est réinitialisé par le tableau de remplissage de tampon de mémoire partagée 315.
* La partie de détermination de "tampon plein" 454 de l'adaptateur relais 400 lit périodiquement les pointeurs d'écriture des microprocesseurs dans un état de "tampon plein" (S61).
Si l'on trouve en résultat de l'étape S61 que le pointeur d'écriture n'est pas supérieur ou égal à une troisième valeur de seuil qui est inférieure d'une quantité spécifiée à la deuxième valeur de seuil utilisée en tant que référence pour "tampon plein" (NON dans l'étape S61), la partie de détermination de "tampon plein" 454 notifie à la partie de génération d'état 452 la libéra- tion de "tampon plein". En résultat, le traitement mentionné ci-dessus est effectué de sorte que le bit qui était "validé" du fait que "tampon plein" devient "invalidé" dans le tableau de remplissage de tampon de mémoire partagée 315 de l'adaptateur hôte 300 (S62).
D'autre part, même si le pointeur d'écriture qui est lu s'avère être supérieur ou égal à la troisième valeur de seuil mentionnée ci-dessus en résultat de l'étape S61, lorsqu'une durée fixe s'est écoulée depuis l'apparition de "tampon plein" (OUI dans S63), la partie de détermination de "tampon plein" 454 notifie à la partie de génération d'état 452 la libération de "tampon plein" ; en résultat, le bit qui était "validé" du fait de "tampon plein" est basculé en "invalidé" (S62).
Par conséquent, dans le premier mode de réali- sation mentionné ci-dessus, des messages envoyés par un microprocesseur côté transmission sont directement écrits dans la mémoire locale d'un microprocesseur côté réception sans l'interposition de ce microprocesseur côté réception. Le microprocesseur côté réception acquiert les messages qui sont adressés en sondant sa propre mémoire locale. La durée requise pour lire la mémoire locale est courte par comparaison à la durée requise pour lire la mémoire partagée 470 (par exemple, environ 1/10 ou moins). En conséquence, le microprocesseur côté réception peut acquérir des messages délivrés en sortie par le microprocesseur côté transmission avec une faible charge.
En termes concrets, par exemple, si la fréquence à laquelle la mémoire partagée des microprocesseurs respectifs est sondée est établie à une fois toutes les 5 s, le nombre de trajets de la mémoire commune est égal à 32, alors, s'il y a 32 microprocesseurs, la charge imposée aux microprocesseurs respectifs et à la mémoire commune est importante, conduisant ainsi à une chute des performances du système. Dans ce cas, le temps d'accès au trajet (partie individuelle) entre les microprocesseurs respectifs et la partie de commande de mémoire commune est égal à 800 ns, et le temps d'accès entre la partie de commande de mémoire commune et la mémoire commune (partie commune) est égal à 200 ns; en conséquence, le temps né- cessaire pour la saturation des trajets individuels est égal à 800 ns + 200 ns x 32 MP = 7200 ns. Si les micro-processeurs respectifs sondent la mémoire commune à des intervalles de 7200 ns ou moins, les trajets deviennent saturés, ce qui fait que le temps d'accès est fortement rallongé, provoquant ainsi une grande détérioration des performances du système.
Dans le premier mode de réalisation mentionné ci-dessus, cette charge est allégée, ce qui fait qu'un dispositif de commande de réseau de disques 100 ayant une vitesse de traitement élevée peut être fourni.
De plus, dans le premier mode de réalisation mentionné ci-dessus, l'adaptateur de disque 400 comporte une mémoire partagée 470, et une région tampon est four-nie dans cette mémoire partagée 470. En fonction des conditions d'utilisation du port correspondant à l'adaptateur côté réception, des messages envoyés par le système d'écriture directe en mémoire locale sont transférés vers cet adaptateur sans être mémorisés dans la région tampon mentionnée ci-dessus, ou sont transférés après avoir été temporairement mémorisés dans cette région tampon. D'une manière spécifique, lorsque les messages qui font l'objet de transmission sont des messages qui sont envoyés par le système d'écriture directe en mémoire locale, un premier mode de transfert dans lequel les messa- ges sont transférés vers l'adaptateur côté réception via la région tampon de la mémoire partagée 470, ou un second mode de transfert dans lequel les messages sont directe-ment transférés sans passer par cette région tampon, est sélectivement exécuté conformément aux conditions d'uti- lisation du port correspondant à l'adaptateur côté réception. En résultat, l'efficacité de transfert des messages entre les microprocesseurs côté transmission (par exemple, les microprocesseurs côté hôte 360) et les microprocesseurs côté réception (par exemple, les microproces- seurs côté disque 550) est améliorée.
En outre, dans le premier mode de réalisation mentionné ci-dessus, lorsque des messages sont transférés via l'adaptateur relais 400, les ports côté hôte 420 et les ports côté disque 430 peuvent fonctionner indépendamment. Par exemple, même si un message qui doit être transmis via un certain port côté disque cible 430 est reçu par un certain port côté hôte 420, il n'est pas nécessaire que ce port côté disque cible 430 maintienne un état de communication en ce qui concerne le concentrateur de disque 510. En résultat, l'efficacité de transfert des messages entre les microprocesseurs côté transmission (par exemple les microprocesseurs côté hôte 360) et les microprocesseurs côté réception (par exemple les microprocesseurs côté disque 550) est améliorée.
En outre, dans le premier mode de réalisation, plusieurs modifications telles que celles décrites ci-dessous sont concevables.
Par exemple, les microprocesseurs respectifs 360 peuvent également transmettre des instructions qui contiennent à la fois une adresse de mémoire partagée et une adresse de mémoire locale à la partie de contrôle d'accès 316. Dans ce cas, le système peut être conçu de sorte que si la partie de contrôle d'accès 316 sélectionne le système d'écriture directe en mémoire locale sur la base des informations dans les tableaux respectifs 314 et 315, de nouvelles instructions dans lesquelles les adresses de mémoire partagée sont supprimées des instructions reçues sont produites et délivrées en sortie, tan-dis que si le système d'écriture indirecte en mémoire lo- cale est sélectionné, des instructions dans lesquelles les adresses de mémoire locale sont supprimées des instructions reçues mentionnées ci- dessus (ou sont autorisées à rester sans être supprimées) sont délivrées en sortie.
En outre, par exemple, chacun des ports côté hôte 420A à 420n et des ports côté disque 430A à 430n peut être amené à correspondre à des informations de discrimination de microprocesseur de destination à la place, ou en plus, des plages d'adresses de mémoire locale, et cette relation de correspondance peut être enregistrée dans le tableau de gestion de ports 600. De plus, des in-formations de discrimination de microprocesseur de destination qui peuvent être confirmées à partir des cartes d'adresses 4 mémorisées dans les microprocesseurs respec- tifs peuvent être incluses dans les instructions d'écri- ture directe et les instructions d'écriture indirecte. D'une manière spécifique, dans l'adaptateur relais 400, lorsque des instructions reçues sont transférées, le port désigné pour la sortie peut être sélectionné d'après les informations de discrimination de microprocesseur de destination contenues dans les instructions.
En outre, par exemple, un ou plusieurs ports des adaptateurs respectifs 300, 400 et/ou 500 peuvent être physiquement séparés, ou peuvent être logiquement séparés même s'ils ne sont pas physiquement séparés. D'une manière similaire, la partie de commande de transmission et la partie de commande de réception situées dans le même port peuvent être physiquement séparées, ou peuvent être logiquement séparées même si elles ne sont pas physiquement séparées.
On va maintenant décrire le mode de réalisation 2.
Dans le premier mode de réalisation mentionné ci-dessus, un transfert d'instruction est effectué en utilisant un système maître de partie relais dans lequel l'adaptateur relais qui transfère les instructions est le maître, et l'adaptateur côté réception (par exemple, l'adaptateur de disque 500) qui reçoit les instructions est l'esclave. Cependant, dans le deuxième mode de réali- sation qui sera décrit ci-dessous, un transfert d'instruction est effectué par un système maître côté réception dans lequel l'adaptateur relais est l'esclave, et l'adaptateur côté réception est le maître. Ceci sera décrit en détail ci-dessous.
La figure 15 représente un exemple de la construction de l'adaptateur de disque dans ce deuxième mode de réalisation de la présente invention. De plus, sur ce dessin, les parties qui ont la même fonction que dans l'adaptateur de disque 500 représenté sur la figure 5 ont les mêmes références numériques. De plus, dans la des- cription qui va suivre, la description des parties qui se dédoublent dans le premier mode de réalisation sera écourtée ou omise.
Une partie de commande d'interruption de trajet 903 qui reçoit des signaux d'interruption de trajet de-puis l'adaptateur relais est fournie dans les ports de disque respectifs 901A et 901B de l'adaptateur de disque 900 dans ce deuxième mode de réalisation.
Lorsque la partie de commande d'interruption de trajet 903 détecte la descente (ou la montée) d'un signal d'interruption de trajet, la partie de commande d'interruption de trajet 903 notifie à la partie de commande de transmission 904 du même port 901A ou 901B qu'il y une interruption de trajet (en d'autres termes, qu'il y a une instruction d'écriture directe).
Lorsque la partie de commande de transmission 904 reçoit une notification d'interruption de trajet, la partie de commande de transmission 904 transmet une instruction d'interruption de lecture du type représenté sur la figure 16, c'est-à-dire une instruction qui contient une adresse d'interruption (représentée par "adresse INT" sur les figures), et qui contient "lecture de mémoire commune" en tant que type d'instruction, à l'adaptateur relais 400. En résultat, la partie de commande de récep- tion 516 reçoit des données du type représenté sur la figure 17, c'est-à- dire des données qui incluent l'adresse de mémoire locale et des données d'écriture, depuis l'adaptateur relais 400. De plus, l'adresse INT peut être une adresse quelconque qui donne la possibilité de calcu- ler l'emplacement de mémorisation de données mémorisées dans les régions de sous-tampon de la mémoire partagée 470 ou de données mémorisées dans le tampon de la partie de commande de sélection de port 440 (par exemple, cette adresse peut être une adresse qui est individuellement affectée aux ports respectifs).
La figure 18 représente le flux de l'échange d'instructions dans un cas où des instructions d'écriture directe sont mémorisées dans une région de sous-tampon spécifiée de la mémoire partagée 470 dans le deuxième mode de réalisation. La figure 19 représente un chrono-gramme de la transmission et de la réception des instructions dans ce cas.
Lorsqu'un certain port côté hôte 420A de l'adaptateur relais reçoit une instruction d'écriture di- recte (une instruction contenant une adresse de mémoire locale, le type d'instruction "écriture en mémoire locale" et des données d'écriture) (S71, S72), le port cible 430A est discriminé sur la base de l'adresse de mémoire locale contenue dans cette instruction et du ta- bleau de gestion de ports 600, et un signal de demande spécifié est transmis à ce port cible 430A (S73). De plus, à l'intérieur du contrôleur de port 410, l'adresse de mémoire partagée est calculée sur la base de l'adresse de mémoire locale se trouvant dans l'instruction d'écri- ture directe reçue, et cette adresse de mémoire partagée et des données a (adresse de mémoire locale et données d'écriture) sont délivrées en entrée à la partie de commande de mémoire 460 (S74). Les données a sont mémorisées dans une région de sous-tampon spécifiée de la mémoire partagée 470 par la partie de commande de mémoire 460.
En outre, le port côté hôte 420A transmet au port hôte de destination de connexion 200A des informations d'état indiquant qu'une instruction d'écriture directe a été reçue (S75).
En réponse au signal de demande provenant du port côté hôte 420A, le port cible 430A provoque la montée d'un signal d'interruption de trajet dans la partie de commande d'interruption de trajet 903 du port de dis-que de destination de connexion 901A (S76). Ensuite, après que les données a mentionnées ci-dessus aient été mémorisées dans la mémoire partagée 470, le port cible 430A provoque la descente de ce signal d'interruption de trajet. Lorsque la partie de commande d'interruption de trajet 903 détecte la
descente du signal d'interruption de trajet, la partie de commande d'interruption de trajet notifie à la partie de commande de transmission 904 qu'une interruption de trajet a lieu.
Après avoir notifié qu'une interruption de tra- jet s'est produite, la partie de commande de transmission 904 transmet l'instruction d'interruption de lecture mentionnée ci-dessus (une instruction contenant une adresse INT et le type d'instruction "lecture de mémoire commune") au port cible 430A (S77). En résultat, l'adresse de mémoire partagée est entièrement distinguée de l'adresse INT dans l'instruction d'interruption de lecture (par exemple, une adresse de mémoire partagée spécifiée est distinguée dans un tableau dans lequel une ou plusieurs adresses INT et une ou plusieurs adresses de mémoire partagée sont amenées à correspondre), et les données a sont lues à partir de l'adresse de mémoire partagée distinguée (S78, S79). Ensuite, les données a qui ont été lues sont transmises à l'adaptateur de disque 900 (S80). De plus, les données d'écriture dans les données a sont directement écrites dans l'adresse de mémoire locale des données a (S81), et le microprocesseur de destination 550A peut acquérir les données d'écriture écrites en sondant une adresse de mémoire locale spécifiée dans sa propre mémoire locale 560 (S82 à S85).
Les paragraphes mentionnés ci-dessus ont concerné une description d'un deuxième mode de réalisation. En outre, dans ce deuxième mode de réalisation, les instructions d'écriture directe peuvent toujours être transférées vers le microprocesseur de destination après être temporairement mémorisées dans une région de sous-tampon de la mémoire partagée 470, ou peuvent être transférées vers le microprocesseur de destination sans être mémorisées de cette manière. Dans le premier cas, par exemple, le transfert peut être effectué selon le dé- roulement décrit ci-dessous. D'une manière spécifique, après que l'instruction d'écriture directe ait été reçue dans l'adaptateur relais 400, le port cible 430A provoque la montée d'un signal d'interruption de trajet dans la partie de commande d'interruption de trajet 903 du port de disque de destination de connexion 901A; ensuite, après qu'une durée spécifiée se soit écoulée à partir de cet instant, le signal d'interruption de trajet est amené à descendre. Dans ce cas, la partie de commande de transmission 904 peut transmettre l'instruction d'interruption de lecture mentionnée ci-dessus au port cible 430A, et en réponse à celle-ci, la partie de commande de réception 516 peut recevoir l'instruction d'écriture directe qui est lue à partir du tampon spécifié de la partie de commande de sélection de port 440.
De plus, par exemple, l'adaptateur de disque a été représenté sur la figure 15. Toutefois, il peut également exister des cas dans lesquels les messages sont transférés depuis l'adaptateur de disque vers l'adaptateur hôte; en conséquence, les ports respectifs de l'adaptateur hôte peuvent également être conçus de la même manière que les ports respectifs de l'adaptateur de disque représenté sur la figure 15.
On va maintenant décrire un troisième mode de réalisation de la présente invention.
Dans ce troisième mode de réalisation, les microprocesseurs respectifs (par exemple, le microprocesseur hôte 360A) mémorisent des instructions de lecture envoyées par le système d'écriture directe en mémoire locale ou le système d'écriture indirecte en mémoire locale dans les mémoires locales de destination de mémorisation voulues (par exemple, la mémoire locale côté disque 550A), ce qui fait que les messages qui sont lus à partir de ces mémoires locales sont reçus.
Ce troisième mode de réalisation est un exemple d'application du premier mode de réalisation mentionné ci-dessus. D'une manière spécifique, lorsque les micro-processeurs du côté transmission d'instruction des instructions de lecture écrivent ces instructions de lecture dans les mémoires locales côté réception d'instruction des microprocesseurs côté réception d'instruction par le système d'écriture directe en mémoire locale ou le système d'écriture indirecte en mémoire locale, les micro- processeurs côté réception d'instruction acquièrent des messages destinés aux microprocesseurs côté transmission d'instruction à partir des mémoires locales côté réception d'instruction en réponse à ces instructions de lecture, et mémorisent ces messages dans les mémoires locales côté transmission d'instruction des microprocesseurs côté transmission d'instruction à l'aide du système d'écriture directe en mémoire locale ou le système d'écriture indirecte en mémoire locale. Par conséquent, les microprocesseurs côté transmission d'instruction acquièrent les messages en sondant les mémoires locales côté transmission d'instruction. En résultat, les micropro- cesseurs côté transmission d'instruction acquièrent les messages à partir des mémoires locales côté réception d'instruction.
D'une manière spécifique, dans le premier mode de réalisation, les microprocesseurs source de transmis- sion de message envoient activement des messages à des mémoires locales de destination de mémorisation spécifiées sans recevoir d'instructions de lecture. Dans le cas du troisième mode de réalisation, toutefois, les microprocesseurs source de transmission de message mémori- sent les messages dans leurs propres mémoires locales, lisent ces messages à partir de leurs propres mémoires locales en réponse à des instructions de lecture reçues depuis d'autres microprocesseurs, et transmettent ces messages aux mémoires locales des autres microprocesseurs qui sont les sources de transmission des instructions.
Ce troisième mode de réalisation sera décrit en détail ci-dessous. En outre, dans la description qui va suivre, la description des parties qui se dédoublent dans le premier mode de réalisation est écourtée ou omise.
La figure 20 représente un exemple de la carte d'adresses qui est mémorisée dans chaque microprocesseur 360 (ou 550) dans le troisième mode de réalisation.
Divers types d'informations sont enregistrés dans la carte d'adresses 12 qui est mémorisée dans chaque microprocesseur 360 (ou 550), par exemple, dans le micro-processeur hôte 360 dont les informations de discrimination de microprocesseur (indiqué par "MP N " sur la figure) sont "00". Toutefois, des exemples des types principaux d'informations dans ce cas incluent des informa- tions d'adresse de lecture/écriture de de mémoire locale de microprocesseur propres, d'autres informations d'adresse d'écriture en mémoire locale de microprocesseur et d'autres informations d'adresse de lecture de mémoire locale de microprocesseur, en plus des informations d'adresse de mémoire partagée de transmission et les in-formations d'adresse de mémoire partagée de réception décrites dans le premier mode de réalisation.
Les informations d'adresse de lecture/écriture de mémoire locale comportent des plages d'adresses de mé- moire locale dans une ou plusieurs mémoires locales 350 (ou 560) du microprocesseur en question. Ces informations incluent des plages d'adresses de mémoire locale (une ou une pluralité d'adresses de mémoire locale) dans lesquelles des instructions de lecture se rapportant au micro- processeur 360 en question sont mémorisées, et des plages d'adresses d'écriture de mémoire locale (une ou une pluralité d'adresses de mémoire locale) qui sont les destinations de mémorisation de messages se rapportant à d'autres microprocesseurs 550. Les plages d'adresses de lec- ture de mémoire locale et les plages d'adresses d'écriture de mémoire locale sont toutes deux prévues pour chacun des autres microprocesseurs (et/ou chacune des autres mémoires locales) (par exemple, ces plages d'adresses sont amenées à correspondre au numéro de microprocesseur de chacun des autres microprocesseurs). D'une manière spécifique, chacune de la ou des plusieurs plages d'adresses d'écriture de mémoire locale correspondant respectivement à un ou plusieurs autres microprocesseurs est (pour l'autre microprocesseur correspondant) une plage d'adresses de lecture de mémoire locale qui est une destination de lecture des messages de cet autre micro-processeur. D'une manière spécifique, chacune de la ou des plusieurs plages d'adresses d'écriture de mémoire locale correspondant respectivement à un ou plusieurs au- tres microprocesseurs est (pour l'autre microprocesseur correspondant) une plage d'adresses d'écriture de mémoire locale qui est une destination de mémorisation d'instructions de lecture envoyées par cet autre microprocesseur. De plus, chacune de la ou des plusieurs plages d'adresses d'écriture de mémoire locale correspondant respectivement à un ou plusieurs autres microprocesseurs est (pour l'autre microprocesseur correspondant) une plage d'adresses de lecture de mémoire locale qui est une destination de lecture de messages de cet autre microprocesseur.
Les informations d'adresse d'écriture en mémoire locale de microprocesseur comportent des plages d'adresses de mémoire locale dans d'autres mémoires locales d'autres microprocesseurs; ces informations indiquent des plages d'adresses d'écriture de mémoire locale (une ou une pluralité d'adresses de mémoire locale) qui sont des destinations de mémorisation d'instructions de lecture envoyées par le microprocesseur 360 en question. Comme ceci est représenté sur la figure, ces plages d'adresses d'écriture de mémoire locale sont prévues pour chacun des autres microprocesseurs (par exemple, ces plages d'adresses sont amenées à correspondre au numéro de microprocesseur de chacun des autres microprocesseurs). D'une manière spécifique,. chacune de la ou des plusieurs plages d'adresses d'écriture de mémoire locale correspon- dant respectivement à un ou plusieurs autres microprocesseurs est (pour l'autre microprocesseur correspondant) une plage d'adresses de lecture de mémoire locale qui est une destination de lecture destinée à être sondée par les autres microprocesseurs.
Les informations d'adresse de lecture de mémoire locale de microprocesseur comportent des plages d'adresses de mémoire locale dans d'autres mémoires locales d'autres microprocesseurs; ces informations indiquent des plages d'adresses de lecture de mémoire locale (une ou une pluralité d'adresses de mémoire locale) qui sont des destinations de lecture pour le microprocesseur 360 en question. Comme représenté sur la figure, ces plages d'adresses de lecture de mémoire locale sont prévues pour chacun des autres microprocesseurs (par exemple, ces plages d'adresses sont amenées à correspondre au numéro de microprocesseur de chacun des autres microprocesseurs). D'une manière spécifique, chacune de la ou des plusieurs plages d'adresses de lecture de mémoire locale correspondant respectivement à un ou plusieurs autres mi- croprocesseurs est (pour l'autre microprocesseur correspondant) une plage d'adresses d'écriture de mémoire locale qui est une destination de mémorisation de messages du microprocesseur mentionné ci-dessus en question provenant des autres microprocesseurs.
Par conséquent, la carte d'adresses 12 mention-née ci-dessus est enregistrée dans l'espace d'adresses de programme de chaque microprocesseur 360 ou 550. En résultat, les instructions de lecture, dans lesquelles sont désignées des adresses de lecture de mémoire locale arbitraires, sont écrites dans des adresses d'écriture de mémoire locale arbitraires, dans les adresses d'écriture de mémoire locale de microprocesseurs cibles arbitraires 550 (ou 360), par les microprogrammes des microprocesseurs 360 (ou 550).
Ci-dessous, le déroulement qui se produit lors-que des messages sont lus par le système d'écriture directe en mémoire locale dans le troisième mode de réalisation sera décrit en utilisant un cas dans lequel le microprocesseur côté transmission d'instruction est le microprocesseur côté hôte 360A et le microprocesseur côté réception d'instruction est le microprocesseur côté dis-que 550A à titre d'exemple, cette description étant divisée en deux cas représentés ci-dessous.
(1) Premier cas: un cas dans lequel des instructions de lecture envoyées par le système d'écriture directe en mémoire locale sont temporairement mémorisées dans les régions de sous-tampon de la mémoire partagée 470.
Le déroulement de l'échange de données qui est effectué par les adaptateurs 300, 400 et 500 dans ce premier cas est représenté sur la figure 21.
Le microprocesseur côté hôte 360A acquiert l'adresse de lecture de mémoire locale (adresse indiquant l'emplacement à partir duquel les données doivent être lues) et l'adresse d'écriture de mémoire locale (destination de mémorisation des instructions de lecture) correspondant au microprocesseur partenaire voulu 550A d'après la carte d'adresses 12 mémorisée dans ce microprocesseur côté hôte 360A lui-même, et délivre en sortie au bus de microprocesseur 2 des instructions de lecture qui désignent l'adresse de lecture de mémoire locale acquise et les instructions de lecture qui contiennent l'adresse d'écriture de mémoire locale acquise. En conséquence, ces instructions de lecture sont transmises à la partie de commande de transmission 318 du port hôte 200A correspondant au microprocesseur 360A en question via la partie de commande de trajet de microprocesseur 311 et la partie de contrôle d'accès 316. La partie de commande de transmis- Sion 318 convertit ces instructions de lecture dans un format spécifié, et transmet des groupes d'instructions dont le format a ainsi été converti (c'est-à-dire les instructions de lecture mentionnées ci-dessus indiquant l'adresse d'écriture de mémoire locale et le type d'ins- truction "écriture directe en mémoire locale") à la partie de commande de réception 421 du port côté hôte 420A qui est la destination de connexion du port hôte 200A (S102).
La partie de commande de réception 421 du port côté hôte 420A du contrôleur de port 410 mémorise temporairement les groupes d'instructions reçus depuis la partie de commande de transmission 318 du port hôte 200A dans un tampon spécifié 601A de la partie de commande de sélection de port 440. En outre, cette partie de commande de réception 421 discrimine lequel des ports côté disque 430A à 430n doit être utilisé sur la base des adresses d'écriture de mémoire locale contenues dans ces groupes d'instructions et du tableau de gestion de ports 600, et transmet un signal de demande spécifié au port cible dis- criminé 430A (c'est-à-dire au port côté disque correspondant à l'adresse de mémoire locale de destination de mémorisation) (S103). En réponse à ce signal de demande, lorsque le port côté hôte 420A reçoit un signal indiquant que le port cible 430A (ou la partie de commande de tra- jet 602A correspondant à ce port cible 430A) n'est pas en cours d'utilisation (représenté par "non-occupé" sur la figure) (S104), c'est-à- dire lorsque le port cible 430A n'est pas en cours d'utilisation, les groupes d'instructions dans le tampon 601A sont lus et transférés vers l'adaptateur de disque 500 via la partie de commande de transmission 432 du port cible 430A (S105, S106). En outre, la partie de commande de transmission 442 du port côté hôte 420A transmet une notification indiquant que le transfert des groupes d'instructions a été achevé à la partie de commande de réception 319 du port hôte de destination de connexion 200A (en résultat, il peut être confirmé dans l'adaptateur hôte 300 que le transfert des groupes d'instructions de sortie a été achevé) (S107).
La partie de commande de réception 51 du port de disque 520A qui reçoit les groupes d'instructions de-puis l'adaptateur relais 400 envoie ces groupes d'instructions (c'est-à-dire les adresses d'écriture de mémoire locale et les instructions de lecture) à la partie de contrôle d'adresse de mémoire locale 514.
La partie de contrôle d'adresse de mémoire locale 514 calcule les adresses de mémoire locale précises en utilisant les adresses d'écriture de mémoire locale reçues depuis la partie de commande de réception 516 et l'adresse de base mémorisée par la partie d'établissement d'adresse de base de mémoire locale 513, et transfère ces adresses d'écriture de mémoire locale et les instructions de lecture reçues depuis la partie de commande de réception 516 à la partie de commande de trajet de microprocesseur 515.
La partie de commande de trajet de microprocesseur 515 écrit les instructions de lecture reçues depuis la partie de contrôle d'adresse de mémoire locale 514 dans l'adresse d'écriture de mémoire locale reçue depuis la partie de contrôle d'adresse de mémoire locale 514 (en d'autres termes, l'adresse de lecture de mémoire locale correspondant au microprocesseur source de transmission 360 dans la mémoire locale 560A dans les informations d'adresse de lecture/écriture de mémoire locale de micro-processeur propres mentionnées ci-dessus de la carte d'adresses mémorisée par le microprocesseur côté disque 550A) via le bus de processeur 6 (S108).
Par exemple, le microprocesseur côté disque 550A écrit des messages pour le microprocesseur source de transmission 360 dans l'adresse d'écriture de mémoire lo- cale correspondant aux propres informations d'adresse d'écriture de microprocesseur parmi les informations d'adresse d'écriture de microprocesseur propres dans sa propre mémoire locale 560A.
Sur la base des informations d'adresse de lec- ture/écriture de mémoire locale de microprocesseur propres de la carte d'adresses mémorisée par le microprocesseur côté disque 550A lui-même, le microprocesseur côté disque 550A sonde l'adresse de lecture de mémoire locale correspondant au microprocesseur côté transmission 360 dans sa propre mémoire locale 560A (c'est-à-dire qu'il lit périodiquement cette adresse de lecture de mémoire locale). Dans ce cas, si une instruction de lecture se trouve dans cette adresse de lecture de mémoire locale, le microprocesseur côté disque 550 acquiert le message à partir de l'adresse de lecture de mémoire locale désignée dans cette instruction de lecture, et transmet ce message au microprocesseur côté hôte 360A qui est la source de transmission d'instruction de lecture grâce au système d'écriture directe en mémoire locale ou au système d'écriture indirecte en mémoire locale (en résultat de la construction de la carte d'adresses, le message qui est acquis et transmis ici est toujours un message pour le microprocesseur qui est la source de transmission de l'instruction de lecture). De plus, une description du type de flux par lequel ce message est mémorisé dans la mémoire locale côté hôte 350A a été omise; toutefois, ceci sera compris d'après la description du premier mode de réalisation.
(2) Second cas: un cas dans lequel des ins- tructions de lecture sont transmises par le système d'écriture directe en mémoire locale, et ces instructions de lecture sont temporairement mémorisées dans une région de sous-tampon de la mémoire partagée 470.
Le déroulement de l'échange de données qui est effectué par les adaptateurs 300, 400 et 500 dans ce second est représenté sur la figure 22.
La partie de commande de réception 421 du port côté hôte 420A reçoit les groupes d'instructions mention-nés ci-dessus (adresses d'écriture de mémoire locale et instructions de lecture) dans un flux similaire à celui du premier cas mentionné ci-dessus (S121, S122), mémorise temporairement ces groupes d'instructions dans un tampon spécifié 601A, discrimine le port cible 430A sur la base des adresses de mémoire locale contenues dans ces ins- tructions et du tableau de gestion de ports 60, et transmet un signal de demande spécifié au port cible 430A (S123). En réponse à ce signal de demande, lorsque le port côté hôte 420A reçoit un signal depuis le port cible 430A indiquant que le port cible 430A est en cours d'utilisation (représenté par "occupé" sur la figure) (S124), c'est-à-dire lorsque le port cible 430 est en cours d'utilisation, la partie de commande de commutation de trajet 650 notifie au décodeur d'adresses 451 les adresses d'écriture de mémoire locale des instructions reçues, et transmet les adresses d'écriture de mémoire locale et les instructions de lecture contenues dans les groupes d'instructions reçus à la partie de commande de mémoire 460 sous la forme de données a (S125). Par conséquent, le port côté hôte 420A transmet une notification indiquant que le transfert des groupes d'instructions a été achevé à la partie de commande de réception 319 du port hôte 200A (S126).
Lorsque le décodeur d'adresse 451 est notifié d'une adresse d'écriture de mémoire locale par la partie de commande de sélection de port 440, le décodeur d'adresse 451 discrimine le microprocesseur de destination 550A de l'instruction de lecture à partir de cette adresse d'écriture de mémoire locale, sélectionne le pointeur de pile correspondant au microprocesseur discri- miné 550A, et transmet une demande d'écriture pour ce microprocesseur 550A au tableau de pointeurs de pile 453.
Lorsque le tableau de pointeurs de pile 453 reçoit une demande d'écriture pour un certain microprocesseur de destination 550A depuis le décodeur d'adresse 451, le tableau de pointeurs de pile 453 augmente le pointeur d'écriture pour ce microprocesseur 550A par une incrémentation de un, et transmet la valeur mise à jour du pointeur de pile et les informations de discrimination pour le microprocesseur 550A qui a fait l'objet d'une mise à jour de pointeur à la partie de contrôle d'adresse 456, à la partie de détermination de "tampon plein" 454 et à la partie de détermination de valeur de seuil 455.
Sur la base de la valeur du pointeur d'écriture reçue depuis le tableau de pointeurs de pile 453 et de l'adresse de base de la mémoire partagée 470 qui est établie préalablement dans le contrôleur de port 410, la partie de contrôle d'adresse 456 calcule l'adresse d'écriture de mémoire partagée qui indique l'emplacement dans la mémoire partagée 470 où des données doivent être mémorisées. La partie de contrôle d'adresse 456 notifie à la partie de commande de mémoire 460 l'adresse d'écriture de mémoire partagée calculée.
Lorsque la partie de commande de mémoire 460 reçoit une adresse d'écriture de mémoire partagée depuis la partie de contrôle d'adresse 456, la partie de com- mande de mémoire 460 mémorise les données a reçues depuis la partie de commande de sélection de port 440, c'est-à-dire l'adresse d'écriture de mémoire locale et l'instruction de lecturè, dans cette adresse d'écriture de mémoire partagée.
Par conséquent, lorsque le port cible 430A n'est plus utilisé, le port cible 430A envoie automatiquement une demande de lecture relative aux données a contenant le message mémorisé dans la région de sous-tampon de la mémoire partagée 470 à la partie de commande de sélection de port 440 (en d'autres termes, envoie l'instruction représentée sur la figure 11), ou envoie une telle demande de lecture en réponse à une interrogation périodique provenant de la partie de commande de sélection de port 440.
La partie de commande de commutation de trajet 650 de la partie de commande de sélection de port 440 confirme les informations de discrimination de microprocesseur pour le microprocesseur côté disque de destina- tion 550A correspondant à ce port 430A provenant du port 430A qui a envoyé la demande de lecture et le tableau de gestion de ports 600, et envoie ces informations de discrimination de microprocesseur au décodeur d'adresse 451.
Lorsque le décodeur d'adresse 451 reçoit ces informations de discrimination de microprocesseur depuis la partie de commande de sélection de port 440, le décodeur d'adresse sélectionne le pointeur de pile correspondant au microprocesseur 550A qui a ces informations de discrimination, et transmet une demande de lecture pour ce microprocesseur 550A au tableau de pointeurs de pile 453.
Lorsque le tableau de pointeurs de pile 453 reçoit une demande de lecture pour ce microprocesseur 550A, le tableau de pointeurs de pile 453 diminue le pointeur de lecture et le pointeur d'écriture en effectuant une décrémentation de un, et transmet la valeur mise à jour du pointeur et les informations de discrimination pour le microprocesseur 550A qui a fait l'objet d'une mise à jour de pointeur à la partie de contrôle d'adresse 456, à la partie de détermination de "tampon plein" 454 et à la partie de détermination de valeur de seuil 455.
Sur la base de la valeur du pointeur de lecture reçue depuis le tableau de pointeurs de pile 453 et de l'adresse de base de la mémoire partagée 470 qui est éta- blie préalablement dans le contrôleur de port 410, la partie de contrôle d'adresse 456 calcule l'adresse de lecture de mémoire partagée qui indique l'emplacement dans la mémoire partagée 470 où des données doivent être lues. La partie de contrôle d'adresse 456 notifie à la partie de commande de mémoire 460 l'adresse de lecture de mémoire partagée calculée (S127).
Lorsque la partie de commande de mémoire 460 reçoit une adresse de lecture de mémoire partagée depuis la partie de contrôle d'adresse 456, la partie de corn- mande de mémoire 460 lit les données a qui se trouvent dans cette adresse de lecture de mémoire partagée (c'est-à-dire l'ensemble constitué de l'adresse d'écriture de mémoire locale et du message qui est mémorisé dans la région de sous-tampon) (S128), et transfère ces données a au port cible 430A qui a envoyé la demande de lecture mentionnée ci-dessus via la partie de commande de sélection de port 440. En résultat, ces données a sont converties dans un format spécifié par la partie de commande de transmission 432 du port cible 430A (par exem- pie, elles sont converties en groupes d'instructions contenant des adresses d'écriture de mémoire locale et des instructions de lecture), et sont transmises à la partie de commande de réception 516 du port de disque 520A (S129).
Par conséquent, dans un déroulement similaire à celui du cas 1 mentionné ci-dessus, les instructions de lecture destinées au microprocesseur côté disque 550A sont écrites dans la mémoire de mémoire locale 560A de ce microprocesseur 550A sans l'interposition de ce microprocesseur 550A (S130), et le microprocesseur 550A peut acquérir des instructions de lecture qui lui sont adressées en sondant sa propre mémoire locale 560A. Par conséquent, en outre, dans un déroulement similaire à celui du premier cas mentionné ci-dessus, les messages dans les adresses de lecture de mémoire locale discriminés de ces instructions de lecture sont mémorisés dans la mémoire locale 350A du microprocesseur source de transmission 360A des instructions de lecture.
Les paragraphes mentionnés ci-dessus ont concerné une description d'un troisième mode de réalisation de la présente invention.
De plus, dans ce troisième mode de réalisation, lorsqu'il n'y pas de message dans l'adresse de lecture de mémoire locale (dans la mémoire locale côté réception d'instruction) distingué dans l'instruction de lecture envoyée par le microprocesseur côté transmission d'instruction, un message peut être mémorisé dans cette adresse de lecture de mémoire locale, et peut alors être immédiatement lu et transmis à la mémoire locale côté transmission d'instruction.
En outre, bien qu'une description se rapportant à ces faits ait été omise, le contrôle du tableau de va-leurs de seuil de tampon de mémoire partagée 314 et du tableau de remplissage de tampon de mémoire partagée 315 peut également être d'une manière similaire effectué lorsque les instructionsde lecture sont mémorisées dans la mémoire partagée 470. D'une manière spécifique, dans ce troisième mode de réalisation également, des informations d'état spécifiées peuvent être envoyées à l'adapta- teur côté transmission d'instruction sur la base de tels résultats de contrôle, et un traitement tel qu'une limitation de la fréquence à laquelle les instructions de lecture sont envoyées, une limitation de la quantité d'instructions de lecture envoyées ou analogue peut être exécuté dans l'adaptateur côté transmission d'instruction sur la base de ces informations d'état.
En outre, dans le troisième mode de réalisation, par exemple, la carte d'adresses 12 peut être conçue de sorte que le microprocesseur qui mémorise cette carte d'adresses 12 peut distinguer lesquelles de ses propres adresses d'écriture de mémoire locale contiennent des messages mémorisés qui doivent être renvoyés lorsque des instructions de lecture sont mémorisées et dans les- quelles de ses propres adresses de lecture de mémoire locale. Dans ce cas, les adresses de lecture de mémoire locale peuvent être contenues dans les instructions de lecture.
En outre, dans le troisième mode de réalisa- tion, la mémorisation d'instructions de lecture dans les mémoires locales côté réception d'instruction provenant de microprocesseurs côté transmission d'instruction et/ou la mémorisation d'informations de lecture pour les micro-processeurs côté transmission d'instruction (informations d'écriture ou destinations de transmission d'instruction) qui sont lues à partir des mémoires locales côté réception d'instruction peuvent être effectuées par le système maître de la partie relais mentionné ci-dessus, ou peu-vent être effectuées par le système maître du côté récep- tion décrit dans le deuxième mode de réalisation.
Plusieurs modes préférés de réalisation de la présente invention ont été décrits ci-dessus. Toutefois, ces modes de réalisation sont simplement des exemples utilisés pour illustrer la présente invention; la portée de la présente invention n'est pas limitée à ces modes de réalisation seuls. La présente invention peut également être mise en oeuvre dans divers autres aspects.
Par exemple, dans les premier à troisième modes de réalisation, les données qui font l'objet d'une écri- ture délivrées en sortie par l'ordinateur hôte 200 (par exemple, des fichiers de données désignés par l'utilisateur) sont écrites dans des régions de mémoire physiques ou logiques dans les groupes de disques physiques 9 via l'adaptateur hôte 300, l'adaptateur relais 400 et l'adap- tateur de disque 500, et les données qui font l'objet d'une lecture, qui sont lues à partir de ces régions de mémoire, sont transmises à l'ordinateur hôte 200 via l'adaptateur de disque 500, l'adaptateur relais 400 et l'adaptateur hôte 300 (en termes strictes, via la mémoire partagée 470 ou une mémoire séparée (par exemple, une mémoire cache) qui est fournie entre l'adaptateur de disque 500 et l'adaptateur hôte 300). Toutefois, les informations qui sont directement écrites dans les mémoires locales ne sont pas limitées aux messages mentionnés ci-dessus qui sont transférés entre les microprocesseurs; de telles informations peuvent également être les données mentionnées ci-dessus qui font l'objet d'une écriture ou les données qui font l'objet d'une lecture. Dans de tels cas, la taille des données qui font l'objet d'une écriture ou des données qui font l'objet d'une lecture varie d'une manière classique en fonction des don-nées spécifiques impliquées; cependant, lorsque de tel- les données sont transférées entre microprocesseurs, ces données peuvent être transférées après avoir été divisées en unités d'une taille spécifiée (lorsque la quantité de données est inférieure à cette taille spécifiée, les don-nées peuvent être ajustées à la taille spécifiée en ajoutant des données factices). De plus, dans ce cas, par exemple, en ce qui concerne le système d'écriture directe en mémoire locale, les données qui font l'objet d'une écriture ou les données qui font l'objet d'une lecture peuvent être transférées sans passer par la mémoire séparée mentionnée ci-dessus (par exemple, une mémoire cache), tandis que dans le cas du système d'écriture indi- recte en mémoire locale, les données qui font l'objet d'une écriture ou les données qui font l'objet d'une lecture peuvent être temporairement mémorisées dans la mémoire séparée mentionnée ci-dessus (par exemple, une mémoire cache) et ensuite transférées.
De plus, par exemple, diverses variations de connexion sont concevables en termes de la manière par laquelle l'adaptateur hôte 300 et l'adaptateur de disque 500 mentionnés ci-dessus sont connectés. Par exemple, dans une première variation de connexion, les adaptateurs 300 et 500 dans des modules séparés (par exemple, des dispositifs de commande de réseau de disques) 1000, 910 et 920 sont connectés via l'adaptateur relais 400, comme représenté sur la figure 23. De plus, par exemple, dans une deuxième variation de connexion, une pluralité de mo- dules séparés qui ont n adaptateurs 300 ou 500 sont connectés via le dispositif relais 960 de sorte qu'une communication est possible, comme représenté sur la figure 24. De plus, par exemple, dans une troisième variation de connexion, comme représenté sur la figure 25, un premier module (par exemple, un dispositif de commande de réseau de disques) qui a un ou plusieurs adaptateurs hôte 300 et un adaptateur relais 400 et des seconds modules (par exemple, des dispositifs de commande de réseau de disques) qui ont un ou plusieurs adaptateurs de disques 500 et un adaptateur relais 400 sont fournis, et la pluralité d'adaptateurs relais 400 montés respectivement dans la pluralité de modules sont connectés les uns aux autres.
En outre, par exemple, dans le dispositif de commande de réseau de disques 100, le système peut être conçu de sorte qu'un premier mode dans lequel les micro-processeurs respectifs transmettent activement des informations d'écriture (par exemple, des messages, des don-nées qui font l'objet d'une lecture ou des données qui font l'objet d'une écriture) à d'autres microprocesseurs comme dans le premier mode de réalisation, et un second mode dans lequel les microprocesseurs respectifs transmettent des informations d'écriture en réponse à des instructions de lecture provenant d'autres microprocesseurs comme dans le troisième mode de réalisation, sont sélectivement exécutés. Lequel de ces deux modes est en cours d'utilisation peut être défini à un instant spécifié, soit manuellement soit automatiquement.

Claims (21)

REVENDICATIONS
1. Dispositif de traitement d'informations qui traite des informations en utilisant une pluralité de processeurs, caractérisé en ce qu'il comporte: un ou plusieurs premiers processeurs (360) qui ont une ou une pluralité de premières mémoires locales (350), et un ou plusieurs seconds processeurs (550) qui écrivent directement des informations d'écriture dans une première mémoire locale cible qu'a un premier processeur cible sélectionné parmi les premiers processeurs (360), et/ou qui lisent directement des informations de lecture à partir de la première mémoire locale cible.
2. Dispositif de traitement d'informations se- lon la revendication 1, caractérisé en ce qu'il comporte en outre des moyens de mémoire de carte d'adresses pour mémoriser une première carte d'adresses sur laquelle sont enregistrées les adresses de première mémoire locale pour chacun du ou des plusieurs premiers processeurs (360), où chacun du ou des plusieurs seconds processeurs (550) acquiert l'adresse de première mémoire locale du premier processeur cible à partir de la première carte d'adresses, écrit des informations d'écriture dans l'adresse de première mémoire locale acquise, et/ou lit des informa- tions de lecture à partir de l'adresse de première mé- moire locale acquise.
3. Dispositif de traitement d'informations selon la revendication 1, caractérisé en ce qu'il comporte en outre: une ou une pluralité de secondes mémoires locales (560) appartenant à chacun du ou des plusieurs seconds processeurs (550), des premiers moyens de mémoire de carte d'adresses pour mémoriser une première carte d'adresses sur laquelle sont enregistrées les adresses de première mémoire locale pour chacun du ou des plusieurs premiers processeurs (360), et des seconds moyens de mémoire de carte d'adresses pour mémoriser une seconde carte d'adresses sur laquelle sont enregistrées des adresses de seconde mémoire locale pour chacun du ou des plusieurs seconds processeurs (550), dans lequel un second microprocesseur cible sélectionné parmi le ou les plusieurs seconds processeurs (550) acquiert une adresse d'écriture de première mémoire locale, indiquant l'emplacement où l'écriture doit être effectuée dans la première mémoire locale cible, à partir de la première carte d'adresses, et écrit des informations d'écriture dans l'adresse de première mémoire lo- cale acquise, lorsque les informations d'écriture qui ont été écrites dans l'adresse d'écriture de première mémoire locale sont une instruction de lecture, le premier processeur cible, en réponse à l'instruction de lecture, ac- quiert l'adresse d'écriture de seconde mémoire locale, concernant le second processeur cible qui a envoyé l'instruction de lecture, à partir de la seconde carte d'adresses, lit les informations dans la première mémoire locale, et écrit les informations dans l'adresse d'écri- ture de seconde mémoire locale acquise.
4. Dispositif de traitement d'informations selon la revendication 1, caractérisé en ce qu'il comporte un dispositif relais qui reçoit les informations d'écriture à partir du côté des seconds processeurs et transfère les informations d'écriture au côté des premiers processeurs, dans lequel le dispositif relais comporte une mémoire relais, et lors du transfert des informations d'écriture, le dispositif relais exécute sélectivement une opération de transfert après que les informations d'écriture aient été temporairement mémorisées dans la mémoire relais, et une opération de transfert sans mémoriser les informations d'écriture dans la mémoire relais.
5. Dispositif de traitement d'informations selon la revendication 4, caractérisé en ce qu'il comporte un ou une pluralité de premiers dispositifs qui ont le ou les plusieurs premiers processeurs (360), dans lequel le dispositif relais comporte en outre une ou une pluralité de parties de transmission qui sont respectivement connectées au ou à la pluralité de premiers dispositifs, et qui transmettent respectivement les informations d'écriture reçues au ou à la pluralité de premiers dispositifs, et dans lequel, lorsque des informations d'écriture reçues depuis un certain second dispositif sont destinées à être transmises au premier dispositif cible qui a le premier processeur cible, si la partie de transmission cible qui doit transmettre ces informations d'écriture ne se trouve pas dans un état occupé, les informations d'écriture reçues sont transmises au premier dispositif cible par la partie de transmission cible sans être mémorisées dans la mémoire relais, tandis que si la partie de transmission cible se trouve dans un état occupé, les informations d'écriture sont temporairement mémorisées dans la mémoire relais, et ces informations d'écriture sont lues à partir de la mémoire relais et transmi- ses au premier dispositif cible par la partie de transmission cible lorsque l'état occupé de la partie de transmission cible est libéré.
6. Dispositif de traitement d'informations selon la revendication 4, caractérisé en ce qu'une ou plu- sieurs régions de mémorisation d'informations d'écriture correspondant respectivement à une ou plusieurs sources de transmission ou destinations de transmission des in-formations d'écriture sont fournies dans la mémoire relais, et lors de la mémorisation temporaire des informa- tions d'écriture reçues dans la mémoire relais, le dispo- sitif relais mémorise ces informations d'écriture dans la région de mémorisation d'informations d'écriture cible correspondant à la source de transmission ou à la destination de transmission, et dans de tels cas, en outre, si la quantité d'informations accumulées dans la région de mémorisation d'informations d'écriture cible dépasse une première valeur de seuil, une notification de dépassement de la première valeur de seuil, qui indique que cette va-leur de seuil a été dépassée, est transmise à un second dispositif spécifié, et le second dispositif qui reçoit la notification de dépassement de la première valeur de seuil réduit la fréquence à laquelle les informations d'écriture sont envoyées ou la quantité d'informations d'écriture qui sont envoyées à la mémoire locale cible ou au premier processeur cible.
7. Dispositif de traitement d'informations selon la revendication 4, caractérisé en ce qu'une ou plu-sieurs régions de mémorisation d'informations d'écriture correspondant respectivement à la ou aux plusieurs sour- ces de transmission ou destinations de transmission sont fournies dans la mémoire relais, et lors de la mémorisation temporaire des informations d'écriture reçues dans la mémoire relais, le dispositif relais mémorise ces in-formations d'écriture dans une région de mémorisation d'informations d'écriture cible correspondant à la source de transmission ou à la destination de transmission, et dans de tels cas, en outre, si la quantité d'informations accumulées dans la région de mémorisation d'informations d'écriture cible dépasse une deuxième valeur de seuil, une notification de dépassement de la deuxième valeur de seuil, qui indique que cette valeur de seuil a été dépassée, est transmise à un second dispositif spécifié, ce second dispositif exécute sélectivement l'opération d'un système d'écriture directe dans laquelle les informations d'écriture sont directement écrites dans la mémoire lo- cale cible, ou l'opération d'un système d'écriture indirecte qui est conçue de sorte que les informations d'écriture sont mémorisées dans la mémoire relais, et de sorte que le premier processeur cible peut acquérir ces informations d'écriture à partir de la mémoire relais, et lorsque la notification de dépassement de la deuxième va-leur de seuil n'est pas reçue, les informations d'écriture sont transmises par le système d'écriture directe, tandis que lorsque la notification de dépassement de la deuxième valeur de seuil est reçue, les informations d'écriture sont transmises par le système d'écriture in-directe
8. Dispositif de traitement d'informations selon la revendication 6, caractérisé en ce que si la quan- tité d'informations accumulées dans la région de mémorisation d'informations d'écriture cible dépasse la deuxième valeur de seuil qui est supérieure à la première valeur de seuil, le dispositif relais transmet une notification de dépassement de la deuxième valeur de seuil, qui indique que cette valeur de seuil a été dépassée, au second dispositif, le second dispositif exécute sélectivement l'opération d'un système d'écriture directe dans laquelle les informations d'écriture sont directement écrites dans la mémoire locale cible, ou l'opération d'un système d'écriture indirecte qui est conçue de sorte que les informations d'écriture sont mémorisées dans la mémoire relais, et de sorte que le premier processeur cible peut acquérir ces informations d'écriture à partir de la mémoire relais, et lorsque la notification de dépassement de la deuxième valeur de seuil n'est pas reçue, même si la notification de dépassement de la première valeur de seuil est reçue, les informations d'écriture sont transmises par le système d'écriture directe, tandis que lors-que la notification de dépassement de la deuxième valeur de seuil est reçue, le système d'écriture directe est in- terrompu, et les informations d'écriture sont transmises par le système d'écriture indirecte.
9. Dispositif de traitement d'informations selon la revendication 7, caractérisé en ce que, après que le second dispositif qui a reçu la notification de dépassement de la deuxième valeur de seuil ait sélectionné le système d'écriture indirecte, ce second dispositif inter- rompt le système d'écriture indirecte et sélectionne le système d'écriture directe dans au moins l'un des cas (1) et (2) suivants: (1) un cas dans lequel la quantité d'informations dans la région de mémorisation d'informations cible est inférieure ou égale à une troisième valeur de seuil qui est inférieure à la deuxième valeur de seuil, et (2) un cas dans lequel une durée fixe s'est écoulée dans l'état dans lequel le système d'écriture in-directe était sélectionné.
10. Dispositif de traitement d'informations selon la revendication 1, caractérisé en ce qu'il corn- porte: un ou une pluralité de premiers dispositifs qui ont le ou les plusieurs premiers processeurs (360), un ou une pluralité de seconds dispositifs qui ont le ou les plusieurs seconds processeurs (550), et un dispositif relais qui relaie les informations d'écriture à partir des seconds dispositifs vers le premier dispositif qui a le premier processeur cible, dans lequel le dispositif relais a une ou une pluralité de parties de transmission qui transmettent respectivement des informations vers le ou la pluralité de premiers dispositifs, et une ou une pluralité de parties de réception qui reçoivent respectivement des informations depuis le ou la pluralité de seconds dispositifs, et chacune parmi la ou la pluralité de parties de trans- mission et chacune parmi la ou la pluralité de parties de réception fonctionnent indépendamment les unes des autres.
11. Dispositif de traitement d'informations selon la revendication 1, caractérisé en ce qu'une ou plu- sieurs régions de mémorisation locale correspondant respectivement au ou aux plusieurs seconds processeurs (550) sont fournies dans les mémoires locales (350) de chacun du ou des plusieurs premiers processeurs (360) , chacun du ou des plusieurs seconds processeurs (550) mémorisent une carte d'adresses sur laquelle l'adresse de mémoire locale de la région de mémorisation locale correspondant à ce second processeur est enregistrée pour chaque premier processeur, et lorsque les informations d'écriture sont écrites dans la mémoire locale du premier processeur cible, l'adresse de mémoire locale correspondant à ce premier processeur cible est acquise à partir de la carte d'adresses, et les informations d'écriture sont écrites dans cette adresse de mémoire locale acquise.
12. Dispositif de traitement d'informations se- lon la revendication 1, caractérisé en ce qu'il comporte un dispositif relais qui reçoit les informations d'écriture incluant l'adresse de mémoire locale du premier processeur cible depuis le côté du second processeur, et transfère ces informations d'écriture au côté du premier processeur cible, dans lequel chacun du ou des plusieurs seconds processeurs (550) est connecté via le dispositif relais de manière à pouvoir communiquer respectivement avec le ou les plusieurs premiers processeurs (360) par un ou plusieurs trajets logiques ou physiques, le dispo- sitif relais mémorise une ou plusieurs adresses de mémoire locale correspondant respectivement à un ou plu-sieurs trajets pour chaque second processeur, et lors du transfert des informations d'écriture reçues, le trajet cible correspondant à l'adresse de mémoire locale conte- nue dans ces informations d'écriture est spécifié, et les informations d'écriture sont transférées au côté premier processeur cible via le trajet cible spécifié.
13. Dispositif de commande de mémoire qui comporte une pluralité de microprocesseurs et un dispositif de mémoire physique ou logique, et qui effectue la commande de mémoire de la mémorisation d'informations provenant de dispositifs hôtes dans le dispositif de mémoire en utilisant la pluralité de microprocesseurs, caractérisé en ce qu'il comporte: un ou plusieurs premiers microprocesseurs (360) qui ont une ou une pluralité de premières mémoires locales (350), un ou plusieurs seconds microprocesseurs (550), et une première partie de mémoire de carte d'adresses qui mémorise une première carte d'adresses sur laquelle sont enregistrées les adresses de première mémoire locale pour chacun du ou des plusieurs premiers microprocesseurs (360), dans lequel chacun du ou des plusieurs seconds microprocesseurs (550) acquiert, à partir de la première carte d'adresses, une adresse d'écriture de première mémoire locale indiquant l'emplacement où l'écriture doit être effectuée dans une première mémoire locale cible qu'a un premier microprocesseur cible sélectionné parmi les premiers microprocesseurs (360), et écrit des informations d'écriture dans l'adresse d'écriture de première mémoire locale acquise.
14. Dispositif de commande de mémoire selon la revendication 13, caractérisé en ce qu'il comporte: un ou une pluralité de premiers dispositifs dans lesquels le ou les plusieurs premiers microprocesseurs (360) sont montés, un ou une pluralité de seconds dispositifs dans lesquels le ou les plusieurs seconds microprocesseurs (550) sont montés, et un dispositif relais qui relaie les communica- tions entre le ou la pluralité de premiers dispositifs et le ou la pluralité de seconds dispositifs dans lequel une ou plusieurs régions de mémorisation locale qui correspondent respectivement à un ou plusieurs seconds microprocesseurs (550) sont fournies dans les premières mémoires locales (350), des adresses de première mémoire locale de la ou des plusieurs régions de mémorisation locale qui correspondent respectivement à un ou plusieurs premiers microprocesseurs (360) sont enregistrées dans la première carte d'adresses, chacun du ou des plusieurs seconds microprocesseurs (550) peuvent être connectés via le dispositif relais de manière à pouvoir communiquer respective-ment avec le ou les plusieurs premiers microprocesseurs (360) par un ou plusieurs trajets logiques ou physiques, et en outre, lors de la sortie des informations d'écriture, les seconds microprocesseurs acquièrent l'adresse de première mémoire locale de la première région de mémorisation locale correspondant au premier processeur cible à partir de la première carte d'adresses, et délivrent en sortie des informations d'écriture qui ont des premières informations de destination de transmission incluant l'adresse de première mémoire locale acquise, le dispositif relais mémorise un ou plusieurs ensembles de secondes informations de destination de transmission qui corres- pondent respectivement à un ou plusieurs trajets, et lors du transfert des informations d'écriture reçues, le dis-positif relais spécifie le trajet cible sur la base des premières et secondes informations de destination de transmission, et transmet les informations d'écriture au premier dispositif cible via le trajet cible spécifié, et le premier dispositif cible écrit les informations d'écriture reçues depuis le dispositif relais dans l'adresse de première mémoire locale qui est incluse dans les informations d'écriture.
15. Dispositif de commande de mémoire selon la revendication 14, caractérisé en ce que le dispositif relais comporte une mémoire relais, et lors du transfert des informations d'écriture, le dispositif relais exécute sélectivement une opération de ce transfert après que les informations d'écriture aient été temporairement mémorisées dans la mémoire relais, et une opération de ce transfert sans mémoriser les informations d'écriture dans la mémoire relais.
16. Dispositif de commande de mémoire selon la revendication 14, caractérisé en ce que le dispositif relais est connecté par voie de communication à un ou plu-sieurs premiers dispositifs, comporte en outre une ou une pluralité de parties de transmission qui transmettent respectivement les informations d'écriture reçues à un ou à une pluralité de premiers dispositifs, et lors du transfert d'informations d'écriture reçues depuis un certain second dispositif vers le premier dispositif cible, si le trajet cible n'est pas dans un état occupé, les in-formations d'écriture reçues sont transmises au premier dispositif cible via ce trajet cible sans être mémorisées dans la mémoire relais, tandis que si le trajet cible se trouve dans un état occupé, les informations d'écriture sont temporairement mémorisées dans la mémoire relais, et lorsque l'état occupé du trajet cible est libéré, les in- formations d'écriture sont lues à partir de la mémoire relais et transmises au premier dispositif cible via le trajet cible.
17. Dispositif de commande de mémoire selon la revendication 15, caractérisé en ce qu'une ou plusieurs régions de mémorisation d'informations d'écriture corres- pondant respectivement à une ou plusieurs sources de transmission ou destinations de transmission des informations d'écriture sont fournies dans la mémoire relais, et lorsque les informations d'écriture reçues sont temporai- rement mémorisées dans la mémoire relais, le dispositif relais mémorise ces informations d'écriture dans une région de mémorisation d'informations d'écriture cible correspondant à la source de transmission ou à la destination de transmission, et dans de tels cas, de plus, si la quantité d'informations accumulées dans la région de mémorisation d'informations d'écriture cible dépasse la première valeur de seuil, une notification de dépassement de la première valeur de seuil, qui indique que cette va-leur de seuil a été dépassée, est transmise à un second dispositif spécifié, et le second dispositif qui a reçu cette notification indiquant que la première valeur de seuil a été dépassée réduit la fréquence à laquelle les informations d'écriture sont envoyées ou la quantité d'informations d'écriture qui sont envoyées à la mémoire locale cible ou au premier microprocesseur cible.
18. Dispositif de commande de mémoire selon la revendication 14, caractérisé en ce que le dispositif relais comporte une ou une pluralité de parties de transmission qui transmettent respectivement des informations au ou à la pluralité de premiers dispositifs, et une ou une pluralité de parties de réception qui reçoivent respectivement des informations depuis le ou la pluralité de seconds dispositifs, chacune parmi la ou la pluralité de parties de transmission et chacune parmi la ou la plura- lité de parties de réception fonctionnent indépendamment les unes des autres.
19. Dispositif de commande de mémoire selon la revendication 18, caractérisé en ce que le dispositif relais comporte un tampon de réception qui est séparé de la mémoire relais, chacune parmi la ou la pluralité de par- ties de réception mémorise une fois les informations d'écriture reçues depuis les seconds dispositifs dans ce tampon de réception.
20. Dispositif de commande de mémoire qui corn- porte une pluralité de microprocesseurs et un dispositif de mémoire physique ou logique, et qui commande la mémorisation d'informations provenant de dispositifs hôtes dans le dispositif de mémoire en utilisant la pluralité de microprocesseurs selon la revendication 13, ce dispo- sitif de commande de mémoire étant caractérisé en ce qu'il comporte: un ou plusieurs premiers microprocesseurs (360) qui ont une ou une pluralité de premières mémoires locales (350), un ou plusieurs seconds microprocesseurs (550) qui ont une ou une pluralité de secondes mémoires locales (560), des premiers moyens de mémoire de carte d'adresses pour mémoriser une première carte d'adresses sur laquelle sont enregistrées des adresses de première mémoire locale pour chacun du ou des plusieurs premiers microprocesseurs (360), et des seconds moyens de mémoire de carte d'adresses pour mémoriser une seconde carte d'adresses sur la- quelle sont enregistrées des adresses de seconde mémoire locale pour chacun du ou des plusieurs seconds microprocesseurs (550), dans lequel un second microprocesseur cible sélectionné parmi les seconds microprocesseurs (550) ac- quiert, à partir de la première carte d'adresses, une adresse d'écriture de première mémoire locale indiquant l'emplacement où l'écriture doit être effectuée dans une première mémoire locale cible que possède un premier processeur cible sélectionné parmi les premiers microproces- seurs (360), et écrit une instruction de lecture dans l'adresse d'écriture de première mémoire locale acquise, et dans lequel en réponse à l'instruction de lecture qui est écrite dans l'adresse d'écriture de première mémoire locale, le premier microprocesseur cible acquiert, à partir de la seconde carte d'adresses, l'adresse d'écriture de seconde mémoire locale du second microprocesseur cible qui a envoyé l'instruction de lecture, lit des informations de lecture dans la première mémoire locale, et écrit les informations de lecture dans l'adresse d'écriture de seconde mémoire locale acquise.
21. Procédé de traitement d'informations qui traite des informations en utilisant une pluralité de processeurs pour la mise en oeuvre du dispositif selon la revendication 1, caractérisé en ce qu'il comporte les étapes dans lesquelles: chacun du ou des plusieurs seconds microprocesseurs (550) acquiert une adresse de mémoire locale d'un premier processeur cible à partir d'une carte d'adresses sur laquelle sont enregistrées des adresses de mémoire locale pour chacun du ou des plusieurs premiers processeurs (360) ayant une ou une pluralité de mémoires locales (350), et chacun du ou des plusieurs seconds processeurs écrit des informations d'écriture dans l'adresse de mé- moire locale acquise, et/ou lit des informations de lec- ture à partir de l'adresse de mémoire locale acquise.
FR0404015A 2003-11-27 2004-04-16 Dispositif et procede pour executer un traitement d'informations en utilisant une pluralite de processeurs Expired - Fee Related FR2863072B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003396786A JP4376040B2 (ja) 2003-11-27 2003-11-27 複数のプロセッサを用いて情報処理を行う装置及び方法

Publications (2)

Publication Number Publication Date
FR2863072A1 true FR2863072A1 (fr) 2005-06-03
FR2863072B1 FR2863072B1 (fr) 2006-05-26

Family

ID=32291117

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0404015A Expired - Fee Related FR2863072B1 (fr) 2003-11-27 2004-04-16 Dispositif et procede pour executer un traitement d'informations en utilisant une pluralite de processeurs

Country Status (5)

Country Link
US (1) US7111119B2 (fr)
JP (1) JP4376040B2 (fr)
DE (1) DE102004013126A1 (fr)
FR (1) FR2863072B1 (fr)
GB (1) GB2408600B (fr)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577157B2 (en) * 2003-12-12 2009-08-18 Intel Corporation Facilitating transmission of a packet in accordance with a number of transmit buffers to be associated with the packet
US7958292B2 (en) * 2004-06-23 2011-06-07 Marvell World Trade Ltd. Disk drive system on chip with integrated buffer memory and support for host memory access
TWI272533B (en) * 2005-06-17 2007-02-01 Lite On Technology Corp A data stream buffer
JP4896500B2 (ja) 2005-11-14 2012-03-14 株式会社日立製作所 機器停止を伴う仮想ボリューム制御方法
US7444528B2 (en) * 2005-12-06 2008-10-28 Intel Corporation Component reliability budgeting system
JP2007200169A (ja) * 2006-01-30 2007-08-09 Hitachi Ltd ストレージシステム及び記憶制御方法
JP4909779B2 (ja) * 2006-04-17 2012-04-04 パナソニック株式会社 画像データ転送方法、画像処理装置、及び撮像システム
JP5186779B2 (ja) * 2007-03-01 2013-04-24 日本電気株式会社 コンピュータシステム、ホストコンピュータ
JP5106913B2 (ja) 2007-04-23 2012-12-26 株式会社日立製作所 ストレージシステム、ストレージシステム管理方法、及び計算機システム
JP4427567B2 (ja) * 2007-07-03 2010-03-10 株式会社東芝 無線通信装置及び無線通信方法
JP4639223B2 (ja) * 2007-12-27 2011-02-23 株式会社日立製作所 ストレージサブシステム
US9106592B1 (en) * 2008-05-18 2015-08-11 Western Digital Technologies, Inc. Controller and method for controlling a buffered data transfer device
JP4542173B2 (ja) * 2008-05-21 2010-09-08 富士通株式会社 ストレージ装置、ディスクコントローラ、及びコマンド発行制御方法
SG158779A1 (en) * 2008-08-01 2010-02-26 Accusys Inc Storage system for industrial devices
US9032101B1 (en) * 2008-12-10 2015-05-12 Nvidia Corporation Chipset support for binding and migrating hardware devices among heterogeneous processing units
US9015446B2 (en) * 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
JP5448496B2 (ja) * 2009-02-19 2014-03-19 キヤノン株式会社 情報処理装置及びその制御方法
TW201216068A (en) * 2010-10-07 2012-04-16 Hon Hai Prec Ind Co Ltd System and method for accessing data of a USB storage with two interfaces
JP5730733B2 (ja) * 2011-09-28 2015-06-10 京セラドキュメントソリューションズ株式会社 情報処理装置及び情報処理方法
CN103685419A (zh) * 2012-09-21 2014-03-26 中兴通讯股份有限公司 业务处理方法及装置
US9134920B2 (en) 2013-07-17 2015-09-15 Hitachi, Ltd. Storage apparatus and command control method
US9578401B2 (en) * 2013-07-24 2017-02-21 Commscope Technologies Llc Systems and methods for detecting component rotation within a communication assembly
JP5699200B2 (ja) * 2013-12-04 2015-04-08 株式会社日立製作所 ストレージシステム、ストレージシステム管理方法、及び計算機システム
US9709757B2 (en) * 2014-10-17 2017-07-18 Commscope Technologies Llc Systems and methods for port mapping
US10015048B2 (en) 2014-12-27 2018-07-03 Intel Corporation Programmable protocol parser for NIC classification and queue assignments
US9826071B2 (en) 2015-08-26 2017-11-21 Barefoot Networks, Inc. Configuring a switch for extracting packet header fields
US9825862B2 (en) 2015-08-26 2017-11-21 Barefoot Networks, Inc. Packet header field extraction
US9912774B2 (en) 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
US10063407B1 (en) 2016-02-08 2018-08-28 Barefoot Networks, Inc. Identifying and marking failed egress links in data plane
JP6821313B2 (ja) * 2016-03-22 2021-01-27 キヤノン株式会社 データ処理システム及びデータ処理方法
JP6725662B2 (ja) * 2016-07-28 2020-07-22 株式会社日立製作所 計算機システムおよび処理方法
US11223520B1 (en) 2017-01-31 2022-01-11 Intel Corporation Remote control plane directing data plane configurator
US10694006B1 (en) 2017-04-23 2020-06-23 Barefoot Networks, Inc. Generation of descriptive data for packet fields
US10601732B1 (en) 2017-07-23 2020-03-24 Barefoot Networks, Inc. Configurable packet processing pipeline for handling non-packet data
US10594630B1 (en) 2017-09-28 2020-03-17 Barefoot Networks, Inc. Expansion of packet data within processing pipeline
WO2019075503A1 (fr) * 2017-10-17 2019-04-25 Geka Solutions Pty Ltd Système de lutte contre les nuisibles
US11068581B1 (en) * 2018-01-26 2021-07-20 EMC IP Holding Company LLC Techniques for establishing host connectivity
US12504586B2 (en) * 2018-08-03 2025-12-23 Ppc Broadband, Inc. Fiber optical connectors
US10901647B2 (en) * 2019-03-19 2021-01-26 Intel Corporation Distributed copy engine
US11435534B2 (en) * 2019-06-11 2022-09-06 Clearfield, Inc. Flexible optical fiber connectors and assemblies
CN110309098A (zh) * 2019-06-27 2019-10-08 上海金卓网络科技有限公司 一种处理器间的交互控制方法、装置、设备及存储介质
JP7484633B2 (ja) * 2020-09-30 2024-05-16 株式会社デンソー 共用ストレージ管理装置及び共用ストレージ管理方法
US12436705B2 (en) 2021-06-25 2025-10-07 Intel Corporation Dynamically scalable and partitioned copy engine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60258669A (ja) * 1984-06-06 1985-12-20 Meisei Electric Co Ltd プロセツサ間の通信制御方式
JPS6362068A (ja) * 1986-09-03 1988-03-18 Nec Corp プロセツサ間のインタフエ−ス回路
JPS63148364A (ja) * 1986-12-12 1988-06-21 Oki Electric Ind Co Ltd 共有メモリアクセス方式
GB2233480A (en) * 1989-06-22 1991-01-09 Int Computers Ltd Multiprocessor data processing system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US188085A (en) * 1877-03-06 Improvement in bed-slats
DE3889550T2 (de) * 1987-01-12 1994-09-01 Fujitsu Ltd Datenübertragungspufferschaltungen für Datenaustausch.
US5710932A (en) * 1987-07-28 1998-01-20 Hitachi, Ltd. Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
DE68928173T2 (de) 1988-01-29 1998-02-05 Hitachi Ltd Parallelrechner bestehend aus Prozessorelementen mit einem lokalen Speicher und einem verbesserten Datentransfermechanismus
US5390299A (en) * 1991-12-27 1995-02-14 Digital Equipment Corporation System for using three different methods to report buffer memory occupancy information regarding fullness-related and/or packet discard-related information
JP3810449B2 (ja) 1994-07-20 2006-08-16 富士通株式会社 キュー装置
US5983278A (en) * 1996-04-19 1999-11-09 Lucent Technologies Inc. Low-loss, fair bandwidth allocation flow control in a packet switch
US6219728B1 (en) * 1996-04-22 2001-04-17 Nortel Networks Limited Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US6026474A (en) * 1996-11-22 2000-02-15 Mangosoft Corporation Shared client-side web caching using globally addressable memory
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6275896B1 (en) * 1996-11-27 2001-08-14 Sony Corporation Data transfer apparatus and method of the same and data input and output controlling apparatus and method of same
US6124878A (en) * 1996-12-20 2000-09-26 Time Warner Cable, A Division Of Time Warner Enterainment Company, L.P. Optimum bandwidth utilization in a shared cable system data channel
EP0908825B1 (fr) 1997-10-10 2002-09-04 Bull S.A. Un système de traitement de données avec architecture cc-NUMA (cache coherent, non-uniform memory access) et antémémoire pour access à distance incorporée dans mémoire locale
US6260120B1 (en) * 1998-06-29 2001-07-10 Emc Corporation Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement
JP4053208B2 (ja) 2000-04-27 2008-02-27 株式会社日立製作所 ディスクアレイ制御装置
US6651130B1 (en) 2000-04-28 2003-11-18 Emc Corporation Data storage system having separate data transfer section and message network with bus arbitration
US6715007B1 (en) * 2000-07-13 2004-03-30 General Dynamics Decision Systems, Inc. Method of regulating a flow of data in a communication system and apparatus therefor
US6851000B2 (en) * 2000-10-03 2005-02-01 Broadcom Corporation Switch having flow control management
GB2394100B (en) 2001-08-10 2005-06-29 Sun Microsystems Inc Computer system storage
US7251698B2 (en) * 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60258669A (ja) * 1984-06-06 1985-12-20 Meisei Electric Co Ltd プロセツサ間の通信制御方式
JPS6362068A (ja) * 1986-09-03 1988-03-18 Nec Corp プロセツサ間のインタフエ−ス回路
JPS63148364A (ja) * 1986-12-12 1988-06-21 Oki Electric Ind Co Ltd 共有メモリアクセス方式
GB2233480A (en) * 1989-06-22 1991-01-09 Int Computers Ltd Multiprocessor data processing system

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
PATENT ABSTRACTS OF JAPAN vol. 010, no. 140 (P - 458) 23 May 1986 (1986-05-23) *
PATENT ABSTRACTS OF JAPAN vol. 012, no. 284 (P - 740) 4 August 1988 (1988-08-04) *
PATENT ABSTRACTS OF JAPAN vol. 012, no. 411 (P - 779) 31 October 1988 (1988-10-31) *

Also Published As

Publication number Publication date
GB2408600A (en) 2005-06-01
US20050120173A1 (en) 2005-06-02
DE102004013126A1 (de) 2005-07-07
JP2005157830A (ja) 2005-06-16
US7111119B2 (en) 2006-09-19
FR2863072B1 (fr) 2006-05-26
JP4376040B2 (ja) 2009-12-02
GB0407066D0 (en) 2004-05-05
GB2408600B (en) 2005-10-19

Similar Documents

Publication Publication Date Title
FR2863072A1 (fr) Dispositif et procede pour executer un traitement d'informations en utilisant une pluralite de processeurs
US11929931B2 (en) Packet buffer spill-over in network devices
US8271652B2 (en) Load-derived probability-based domain name service in a network storage cluster
US20150039783A1 (en) Streaming method and system for fibre channel network devices
US8261282B1 (en) System and method for virtual machine host load protection
US9537665B2 (en) Method, apparatus, and system for enabling platform power states
US8266344B1 (en) Recycling buffer pointers using a prefetch buffer
JP2010081641A (ja) デジタルデータネットワークにおけるメッセージフローを調整するシステムおよび方法
FR2664719A1 (fr) Dispositif de controle pour une memoire tampon a partitionnement reconfigurable.
US12155584B2 (en) Store and forward logging in a content delivery network
CN107547689A (zh) 一种运营商级的网络地址转换cgn方法和装置
CN1604550B (zh) 维持两个网络实体之间的链路的方法和系统
US20250362949A1 (en) High throughput ingress datapath for a virtual machine
FR2863734A1 (fr) Systeme de reseau de disques et convertisseur d'interface
US7219203B2 (en) Reading data from a multiplicity of disks in a data storage system
EP3557433B1 (fr) Procédé de gestion du routage de transactions entre au moins un équipement source et au moins un équipement cible, par exemple une mémoire multiports, et système sur puce correspondant
US8006006B2 (en) System and method for aggregating transmit completion interrupts
CN110471627B (zh) 一种共享存储的方法、系统及装置
CN101442387B (zh) 一种数据反压的处理方法和装置
EP1542131B1 (fr) Procédé de gestion d'un dispositif de mémorisation de données organisées en file d'attente, et dispositif associé
FR3003055A1 (fr) Procede de controle de bande passante pour systeme sur puce
JP4474356B2 (ja) コンピュータシステムおよびストレージ仮想化装置
CN109614354B (zh) 接口分配方法、板卡、设备及存储介质
CN100586101C (zh) 在作为目的地的第二层交换机之间切换
CA1073546A (fr) Systeme d'articulation et de gestion pour central de telecommunications

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20091231