JP2005157830A - 複数のプロセッサを用いて情報処理を行う装置及び方法 - Google Patents

複数のプロセッサを用いて情報処理を行う装置及び方法 Download PDF

Info

Publication number
JP2005157830A
JP2005157830A JP2003396786A JP2003396786A JP2005157830A JP 2005157830 A JP2005157830 A JP 2005157830A JP 2003396786 A JP2003396786 A JP 2003396786A JP 2003396786 A JP2003396786 A JP 2003396786A JP 2005157830 A JP2005157830 A JP 2005157830A
Authority
JP
Japan
Prior art keywords
write
information
address
target
local memory
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
JP2003396786A
Other languages
English (en)
Other versions
JP4376040B2 (ja
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
Priority to JP2003396786A priority Critical patent/JP4376040B2/ja
Priority to US10/767,074 priority patent/US7111119B2/en
Priority to DE102004013126A priority patent/DE102004013126A1/de
Priority to GB0407066A priority patent/GB2408600B/en
Priority to FR0404015A priority patent/FR2863072B1/fr
Publication of JP2005157830A publication Critical patent/JP2005157830A/ja
Application granted granted Critical
Publication of JP4376040B2 publication Critical patent/JP4376040B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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 (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 受信側プロセッサにとって負担が少ない方法で、プロセッサ間での情報の授受が行えるようにする。
【解決手段】 情報処理装置(100)は、複数のプロセッサを用いて情報を処理する装置であって、1又は複数のローカルメモリ(560)を有する1以上の第1プロセッサ(550)と、ターゲットの第1プロセッサ(550)が有するローカルメモリ(560)にライト情報を直接ライトする1以上の第2プロセッサ(360)とを備える。第2プロセッサ(360)は、第1プロセッサ(550)についてのローカルメモリアドレスが記録されたアドレスマップを記憶しており、そのアドレスマップからローカルメモリアドレスを取得し、その取得したローカルメモリアドレスにライト情報をライトする。
【選択図】図1

Description

本発明は、複数のプロセッサを用いて情報処理を行うための技術に関し、具体的には、例えば、RAID(Redundant Array of Independent Inexpensive Disks)システムに備えられる記憶制御装置に関する。
複数のプロセッサを用いて情報処理を行う装置の一つに、例えば、アレイ状に配列された複数の物理ディスクを有する記憶装置に対するホスト装置からのアクセスを制御する記憶制御装置がある。記憶制御装置には、例えば、ホスト装置と通信するための2以上のチャネルアダプタと、記憶装置と通信するための2以上のディスクアダプタとが備えられており、各アダプタには、1又は複数のマイクロプロセッサ(以下、「MP」と略記する)が備えられている。
チャネルアダプタに搭載されているMP(以下、「チャネルMP」と言う)と、ディスクアダプタに搭載されているMP(以下、「ディスクMP」と言う)との間では制御情報がやり取りされる。例えば特許文献1に開示の技術によれば、チャネルMP17とディスクMP21との間での制御情報のやり取りは、共有メモリ32を介して行われる。具体的には、例えば、チャネルMP17がディスクMP21に制御情報を送る場合、チャネルMP17が、共有メモリ32の所定の領域に制御情報をライトし、一方、ディスクMP21が、共有メモリ32の所定領域を定期的にポーリングし、その所定領域に制御情報があれば、その所定領域から制御情報を取得する。
特開2001-306265(例えば段落44)
上述した従来技術によれば、MP間での制御情報のやり取りは、共有メモリを介して行われており、受信側のMPが、共有メモリの所定領域を定期的にポーリングする。共有メモリをポーリングすることは、受信側MPにとって少なからず負担となる。また、共有メモリを複数MPが頻繁にリードを繰り返すことは、MP数が多くなるほど、共有メモリの性能ボトルネック、共有メモリパスの性能ボトルネックが発生しやすく、それ故、装置全体の性能を低下させてしまう可能性がある。
従って、本発明の目的は、受信側プロセッサにとって負担が少ない方法で、プロセッサ間での情報の授受が行えるようにすることにある。
本発明の別の目的は、装置全体の性能を低下させること無く、プロセッサ間での情報の授受が行えるようにすることにある。
本発明の他の目的は、後述の説明から明らかになるであろう。
本発明の第1の側面に従う情報処理装置は、1又は複数のローカルメモリを有する1以上の第1プロセッサと、ターゲットの第1プロセッサが有するローカルメモリにライト情報を直接ライトする、及び/又は、前記ターゲット第1ローカルメモリからリード情報(リード対象の情報)を直接リードする1以上の第2プロセッサとを備える。
ここで、「プロセッサ」とは、例えば、演算処理を行うモジュール、具体例としては、CPU(Central Processing Unit)或いはMP(Micro Processor)がある。
また、「ローカルメモリ」とは、第1プロセッサのみが使用可能なメモリであって、例えば、CPUが利用するRAM等のメモリ、或いは、MPの内部又は外部に搭載されたメモリ(RAM或いはそれとは別のキャッシュメモリ)等がある。
また、「ライト情報」は、例えば、ターゲット第1プロセッサに対するメッセージ、又は、その第1プロセッサのローカルメモリから情報をリードすることを要求するリードコマンドである。
この発明の第1の好適な実施形態では、前記1以上の第1プロセッサの各々についてのローカルメモリアドレスが記録されたアドレスマップを記憶するアドレスマップ記憶手段を更に備え、前記1以上の第2プロセッサの各々が、前記アドレスマップから前記ターゲット第1プロセッサのローカルメモリアドレスを取得し、前記取得したローカルメモリアドレスに前記ライト情報をライトする、及び/又は、前記取得した第1ローカルメモリアドレスから前記リード情報をリードする。
この発明の第2の好適な実施形態では、前記1以上の第2プロセッサの各々が持つ1又は複数の第2ローカルメモリと、前記1以上の第1プロセッサの各々についての第1ローカルメモリアドレスが記録された第1アドレスマップを記憶する第1アドレスマップ記憶手段(これは、例えば、第2プロセッサが有しても良い)と、前記1以上の第2プロセッサの各々についての第2ローカルメモリアドレスが記録された第2アドレスマップを記憶する第2アドレスマップ記憶手段(これは、例えば、第1プロセッサが有しても良い)とが更に備えられる。前記1以上の第2プロセッサの各々が、前記ターゲット第1ローカルメモリのどこにライトするかの第1ローカルメモリライトアドレスを取得し(例えば、更に、前記ターゲット第1ローカルメモリのどこからリードするかの第1ローカルメモリリードアドレスを前記第1アドレスマップから取得し)、前記取得した第1ローカルメモリライトアドレスに所定のリードコマンド(例えば、前記取得した第1ローカルメモリリードアドレスを指定するリードコマンド)をライトする。前記ターゲット第1プロセッサが、前記第1ローカルメモリライトアドレスにライトされた前記リードコマンドに応答して、前記リードコマンドの発行元のターゲット第2プロセッサの第2ローカルメモリライトアドレスを前記第2アドレスマップから取得し、前記取得した第2ローカルメモリライトアドレスに、前記第1ローカルメモリ内の情報(例えば、前記リードコマンドから識別される前記第1ローカルメモリリードアドレス内の情報)をライトする。
この発明の第3の好適な実施形態では、情報処理装置が、記第2プロセッサ側から前記ライト情報を受けて前記ターゲット第1プロセッサ側に転送する中継デバイスを備える。前記中継デバイスは、中継メモリを備え、前記ライト情報の転送を行う場合、該ライト情報を前記中継メモリに一時的に格納してから前記転送を行うことと、該ライト情報を前記中継メモリに格納せずに前記転送を行うこととを選択的に実行する。
この発明の第4の好適な実施形態では、情報処理装置が、前記1以上の第1プロセッサを有する1又は複数の第1デバイスを備える。前記中継デバイスは、前記1又は複数の第1デバイスに通信可能に接続され、前記受信したライト情報を前記1又は複数の第1デバイスにそれぞれ送信する1又は複数の送信部を更に備え、或る第2デバイスから受信したライト情報を、前記ターゲット第1プロセッサを有するターゲット第1デバイスに送信する場合、そのライト情報を送信するターゲット送信部がビジー状態でなければ、前記受信したライト情報を前記中継メモリに格納せずに前記ターゲット送信部から前記ターゲット第1デバイスに送信し、前記ターゲット送信部がビジー状態であれば、前記ライト情報を前記中継メモリに一時的に格納し、前記ターゲット送信部のビジー状態が解除された場合に、前記中継メモリからライト情報を読み出して前記ターゲット送信部から前記ターゲット第1デバイスに送信する。
ここで、「送信部」とは、受信したライト情報を前記ターゲット第1デバイスに送信することができるものならどのようなものでも良く、例えば、通信ポート或いはパスが考えられる。
この発明の第5の好適な実施形態では、前記第3の好適な実施形態において、前記中継メモリには、ライト情報の1以上の送信元又は送信先にそれぞれ対応した1以上のライト情報格納領域が用意されており、前記中継デバイスは、受信した前記ライト情報を前記中継メモリに一時的に格納する場合、そのライト情報を、それの送信元又は送信先に対応したターゲットライト情報格納領域に格納し、その場合に、前記ターゲットライト情報格納領域に蓄積された情報量が第1の閾値を超えたならば、その旨を表す第1閾値超過通知を所定の第2デバイスに送信する。前記第1閾値超過通知を受けた第2デバイスは、前記ターゲットローカルメモリ又は前記ターゲット第1プロセッサに対するライト情報の発行頻度又は情報量を減らす。
ここで、「送信元」とは、例えば、ライト情報を出力する第2プロセッサ又はそれを搭載した第2デバイスであり、「送信先」とは、例えば、ライト情報の格納先となるローカルメモリ又はそれを有する第1プロセッサである。
「ライト情報の発行頻度又は情報量を減らす」方法として、例えば、以下の2つの方法がある。
(1)前記中継デバイスが、前記ライト情報送信元の第2プロセッサ、又はそれを含む全ての第2プロセッサに対して所定の第1割り込み信号を送信し、その第1割込み信号を受けた第2プロセッサそれ自身が、前記ターゲット第1プロセッサに対するライト情報の発行頻度又は情報量を減らす。
(2)前記第1閾値超過通知を受けた第2プロセッサそれ自身は、前記ターゲット第1プロセッサに対するライト情報の発行頻度又は情報量を減らさず、前記1以上の第2プロセッサを搭載した第2デバイスにおける情報送信制御部が、第2プロセッサから出力されたライト情報を受け、そのライト情報が、前記ターゲット第1プロセッサのローカルメモリを宛先とするものであれば、そのライト情報を前記中継デバイスに送信することを中止或いは中断し、一方、そのライト情報が、前記ターゲット第1プロセッサのローカルメモリを宛先とするものでなければ、そのライト情報を前記中継デバイスに送信する。
この発明の第6の好適な実施形態では、前記第3の好適な実施形態において、前記中継メモリには、前記1以上の送信元又は送信先にそれぞれ対応した1以上のライト情報格納領域が用意されており、
前記中継デバイスは、受信した前記ライト情報を前記中継メモリに一時的に格納する場合、該ライト情報を、それの送信元又は送信先に対応したターゲットライト情報格納領域に格納し、その場合に、前記ターゲットライト情報格納領域に蓄積された情報量が第2の閾値を超えたならば、その旨を表す第2閾値超過通知を所定の第2デバイスに送信する。前記第2デバイスは、前記ライト情報を前記ターゲットローカルメモリに直接ライトする直接ライト方式と、前記ライト情報を前記中継メモリに格納し前記ターゲット第1プロセッサが前記中継メモリから前記ライト情報を取得できるようにする間接ライト方式とを選択的に実行するようになっており、前記第2閾値超過通知を受けない場合は、前記直接ライト方式で前記ライト情報を送信し(例えば、前記ターゲット第1プロセッサのローカルメモリアドレスを含んだライト情報を送信し)、前記第2閾値超過通知を受けた場合は、前記間接ライト方式で前記ライト情を送信する(例えば、前記中継メモリにおける前記ターゲット第1格納領域に対応した中継メモリアドレスを含んだライト情報を送信する)。
この発明の第7の好適な実施形態では、前記第5の好適な実施形態において、前記中継デバイスは、前記ターゲットライト情報格納領域に蓄積された情報量が、前記第1の閾値よりも大きい第2の閾値を超えたならば、その旨を表す第2閾値超過通知を前記第2デバイスに送信する。前記第2デバイスは、前記ライト情報を前記ターゲットローカルメモリに直接ライトする直接ライト方式と、前記ライト情報を前記中継メモリに格納し前記ターゲット第1プロセッサが前記中継メモリから前記ライト情報を取得できるようにする間接ライト方式とを選択的に実行するようになっており、前記第1閾値超過通知を受けても前記第2閾値超過通知を受けない場合は、前記直接ライト方式で前記ライト情報を送信し、前記第2閾値超過通知を受けた場合は、前記直接ライト方式を止めて前記間接ライト方式で前記ライト情報を送信する。
この発明の第8の好適な実施形態では、前記第6の好適な実施形態において、前記第2閾値超過通知を受けた第2デバイスが前記間接ライト方式を選択した後、以下の(1)及び(2)の場合、
(1)前記ターゲットライト情報格納領域の情報量が前記第2の閾値よりも小さい第3の閾値以下になった場合、
(2)前記間接ライト方式が選択されている状態が一定時間経過した場合
の少なくとも1つの場合に、該第2デバイスは前記間接ライト方式を止めて前記直接ライト方式を選択する。
この発明の第9の好適な実施形態では、情報処理装置は、前記1以上の第1プロセッサを有する1又は複数の第1デバイスと、前記1以上の第2プロセッサを有する1又は複数の第2デバイスと、前記第2デバイスから前記ターゲット第1プロセッサを有する前記第1デバイスに前記ライト情報を中継する中継デバイスとを備える。前記中継デバイスは、前記1又は複数の第1デバイスにそれぞれ情報を送信する1又は複数の送信部と、前記1又は複数の第2デバイスからそれぞれ情報を受信する1又は複数の受信部とを備える。前記1又は複数の送信部の各々と、前記1又は複数の受信部の各々とは、互いに独立して動作する。例えば、1又は複数の送信部と1又は複数の受信部との間に、1以上の記憶デバイス(例えば揮発性又は不揮発性メモリ)が用意され、1又は複数の送信部と1又は複数の受信部との間でやり取りされる情報が前記1以上の記憶デバイスに格納されることにより、上記互いに独立した動作が可能となる。
この発明の第10の好適な実施形態では、前記1以上の第1プロセッサの各々のローカルメモリには、前記1以上の第2プロセッサにそれぞれ対応した1以上のローカル格納領域が用意されている。前記1以上の第2プロセッサの各々は、その第2プロセッサに対応した前記ローカル格納領域のローカルメモリアドレスが各第1プロセッサ毎に記録されたアドレスマップを記憶しており、前記ライト情報をターゲットの第1プロセッサのローカルメモリに書き込む場合、前記アドレスマップから前記ターゲット第1プロセッサに対応したローカルメモリアドレスを取得し、前記取得したローカルメモリアドレスに前記ライト情報をライトする。
この発明の第11の好適な実施形態では、情報処理装置は、前記ターゲット第1プロセッサのローカルメモリアドレスを含んだ前記ライト情報を前記第2プロセッサ側から受信して前記ターゲット第1プロセッサ側に転送する中継デバイスを備える。前記1以上の第2プロセッサの各々は、前記中継デバイスを介して、論理的な又は物理的な1以上のパスでそれぞれ前記1以上の第1プロセッサと通信可能に接続されている。前記中継デバイスは、前記1以上のパスにそれぞれ対応付けられた1以上のローカルメモリアドレスを各第2プロセッサ毎に記憶しており、前記受信したライト情報の転送を行う場合、そのライト情報に含まれている前記ローカルメモリアドレスに対応したターゲットパスを特定し、特定されたターゲットパスを介して前記ライト情報を前記ターゲット第1プロセッサ側に転送する。
本発明の第2の側面に従う記憶制御装置は、複数のマイクロプロセッサと物理的又は論理的な記憶装置とを備え、前記複数のマイクロプロセッサを用いて、上位装置からの情報を前記記憶装置に記憶させることの記憶制御を行う記憶制御装置であって、1又は複数の第1ローカルメモリを有する1以上の第1マイクロプロセッサと、1以上の第2マイクロプロセッサと、前記1以上の第1マイクロプロセッサの各々についての第1ローカルメモリアドレスが記録された第1アドレスマップを記憶する第1アドレスマップ記憶手段とを備える。前記1以上の第2マイクロプロセッサの各々が、前記ターゲット第1ローカルメモリのどこにライトするかの第1ローカルメモリライトアドレスを取得し、前記取得した第1ローカルメモリライトアドレスにライト情報をライトする。
この発明の第1の好適な実施形態では、前記1以上の第1マイクロプロセッサを搭載した1又は複数の第1デバイスと、前記1以上の第2マイクロプロセッサを搭載した1又は複数の第2デバイスと、前記1又は複数の第1デバイスと前記1又は複数の第2デバイスと間の通信を中継する中継デバイスとが更に備えられる。前記第1ローカルメモリには、前記1以上の第2マイクロプロセッサにそれぞれ対応した1以上のローカル格納領域が用意されている。前記第1アドレスマップには、前記1以上の第1マイクロプロセッサにそれぞれ対応した1以上のローカル格納領域の第1ローカルメモリアドレスが記録されている。前記1以上の第2マイクロプロセッサの各々は、前記中継デバイスを介して、論理的な又は物理的な1以上のパスでそれぞれ前記1以上の第1マイクロプロセッサと通信可能に接続されていて、前記ライト情報を出力する際、前記第1アドレスマップから前記ターゲット第1プロセッサに対応した第1ローカル格納領域の第1ローカルメモリアドレスを取得して、前記取得した第1ローカルメモリアドレスを含んだ第1送信先情報(例えば、ローカルメモリアドレスのみ、或いは更にライト情報の宛先マイクロプロセッサ識別情報を含んだ情報)を有するライト情報を出力する。前記中継デバイスは、前記1以上のパスにそれぞれ対応付けられた1以上の第2送信先情報(例えばローカルメモリアドレス又はそれに対応付けられた宛先マイクロプロセッサ識別情報)を記憶しており、前記受信したライト情報の転送を行う場合、前記第1と第2の送信先情報に基づいてターゲットパスを特定し、特定されたターゲットパスを介して前記ライト情報を前記ターゲット第1デバイスに転送する。前記ターゲット第1デバイスは、前記中継デバイスから受信したライト情報を、そのライト情報に含まれている前記第1ローカルメモリアドレスに書き込む。
この発明の第2の好適な実施形態では、前記中継デバイスは、中継メモリを備え、前記ライト情報の転送を行う場合、そのライト情報を前記中継メモリに一時的に格納してから前記転送を行うことと、そのライト情報を前記中継メモリに格納せずに前記転送を行うこととを選択的に実行する。
この発明の第3の好適な実施形態では、第2の好適な実施形態において、前記中継デバイスは、前記1又は複数の第1デバイスに通信可能に接続され、前記受信したライト情報を前記1又は複数の第1デバイスにそれぞれ送信する1又は複数の送信部を更に備え、或る第2デバイスから受信したライト情報を、前記ターゲット第1デバイスに送信する場合、前記ターゲットパスがビジー状態でなければ、前記受信したライト情報を前記中継メモリに格納せずに前記ターゲットパスを介して前記ターゲット第1デバイスに送信し、前記ターゲットパスがビジー状態であれば、前記ライト情報を前記中継メモリに一時的に格納し、前記ターゲットパスのビジー状態が解除された場合に、前記中継メモリからライト情報を読み出して前記ターゲットパスを介して前記ターゲット第1デバイスに送信する。
この発明の第4の好適な実施形態では、第2の好適な実施形態において、前記中継メモリには、ライト情報の1以上の送信元又は送信先にそれぞれ対応した1以上のライト情報格納領域が用意されている。前記中継デバイスは、受信した前記ライト情報を前記中継メモリに一時的に格納する場合、そのライト情報を、それの送信元又は送信先に対応したターゲットライト情報格納領域に格納し、その場合に、前記ターゲットライト情報格納領域に蓄積された情報量が第1の閾値を超えたならば、その旨を表す第1閾値超過通知を所定の第2デバイスに送信する。前記第1閾値超過通知を受けた第2デバイスは、前記ターゲットローカルメモリ又は前記ターゲット第1マイクロプロセッサに対するライト情報の発行頻度又は情報量を減らす。
ここで、「送信元」とは、例えば、ライト情報を出力する第2マイクロプロセッサ又はそれを搭載した第2デバイスであり、「送信先」とは、例えば、ライト情報の格納先となるローカルメモリ又はそれを有する第1マイクロプロセッサである。
この発明の第5の好適な実施形態では、第2の好適な実施形態において、前記中継デバイスは、前記1又は複数の第1デバイスにそれぞれ情報を送信する1又は複数の送信部と、前記1又は複数の第2デバイスからそれぞれ情報を受信する1又は複数の受信部とを備え、前記1又は複数の送信部の各々と、前記1又は複数の受信部の各々とが互いに独立して動作する。
この発明の第6の好適な実施形態では、第5の好適な実施形態において、前記中継デバイスは、前記中継メモリとは別の受信バッファを備えており、前記1又は複数の受信部の各々は、前記第2デバイスから受信したライト情報を一旦前記受信バッファに格納する。
本発明の第3の側面に従う記憶制御装置は、複数のマイクロプロセッサと物理的又は論理的な記憶装置とを備え、前記複数のマイクロプロセッサを用いて、上位装置からの情報を前記記憶装置に記憶させることの記憶制御を行う記憶制御装置であって、1又は複数の第1ローカルメモリを有する1以上の第1マイクロプロセッサと、1又は複数の第2ローカルメモリを有する1以上の第2マイクロプロセッサと、前記1以上の第1マイクロプロセッサの各々についての第1ローカルメモリアドレスが記録された第1アドレスマップを記憶する第1アドレスマップ記憶手段と、前記1以上の第2マイクロプロセッサの各々についての第2ローカルメモリアドレスが記録された第2アドレスマップを記憶する第2アドレスマップ記憶手段とを備える。前記1以上の第2マイクロプロセッサの各々が、ターゲット第1ローカルメモリのどこにライトするかの第1ローカルメモリライトアドレスを前記第1アドレスマップから取得し、前記取得した第1ローカルメモリライトアドレスにリードコマンドをライトする。前記ターゲット第1マイクロプロセッサが、前記第1ローカルメモリライトアドレスにライトされた前記リードコマンドに応答して、前記リードコマンドの発行元のターゲット第2マイクロプロセッサの第2ローカルメモリライトアドレスを前記第2アドレスマップから取得し、前記取得した第2ローカルメモリライトアドレスに、前記第1ローカルメモリ内のリード情報を読み出してライトする。
なお、上述した「ライト情報」又は「リード情報」は、例えば、プロセッサ間でやり取りされるデータ固定長(又はデータ可変長の)メッセージ(換言すれば制御情報)であっても良いし、ユーザに指定された書き込み対象又は読み出し対象のユーザ所望情報(例えば、アプリケーションソフト等によって作成されたファイル)であっても良い。
本発明に従う情報処理装置及び記憶制御装置によれば、第2プロセッサが、ターゲットの第1プロセッサが有するローカルメモリにライト情報を直接ライトする、及び/又は、そのローカルメモリからリード情報を直接リードする。例えば、直接ライトの場合、ターゲット第1プロセッサは、自分が持つローカルメモリをポーリングすることで、第2プロセッサから出力されたライト情報を取得することができる。第1プロセッサがローカルメモリをリードする時間長は、共有メモリをリードする時間長に比べて短い(例えば10分の1以下程度である)。このため、第1プロセッサは、負担少なく、第2プロセッサから出力されたライト情報を取得することができる。換言すれば、従来のような共有メモリの定期リードによるプロセッサ、共有メモリ及び共有メモリパスの性能の低下を防止することができる。
以下、図面を参照して、本発明の一実施形態に係る情報処理装置が適用されたディスクアレイ制御装置について説明する。
図1は、本発明の第一実施例に係るディスクアレイ制御装置の構成を示す。
この図に示すディスクアレイ制御装置100は、例えば、RAID(Redundant Array of Independent Inexpensive Disks)装置であり、この装置100には、1又は複数のホストコンピュータ200と、複数の物理ディスク群9とが接続される。
ホストコンピュータ(以下、適宜「ホスト」と略記)200は、例えば、パーソナルコンピュータやワークステーション等であり、CPU(Central Processing Unit)やメモリ等を備えたコンピュータマシンである。ホスト200のCPUが各種プログラムを実行することにより、種々の機能が実現される。ホスト200は、例えば、LAN等の通信ネットワークを介して、ディスクアレイ制御装置100に対し、所望のデータを物理ディスク群9(例えば論理デバイス又は論理ユニットと呼ばれる論理記録領域)にライトするライトコマンドや、所望のデータを物理ディスク群9からリードするリードコマンドをディスクアレイ制御装置100に送信する。
物理ディスク群9は、アレイ状に配設された複数のディスク型記憶装置600を有する。物理ディスク群9上には、物理的な記憶領域又は論理的な記憶領域(例えば論理デバイス又は論理ユニットと呼ばれる論理記録領域)が設けられ、各記憶領域に、ホストコンピュータ200からのデータがライトされる。なお、ディスク型記憶装置600としては、例えば、ハードディスク装置、フレキシブルディスク装置、半導体記憶装置等の種々のデバイスを用いることができる。
ディスクアレイ制御装置100は、ホストコンピュータ200の複数の物理ディスク群9に対するアクセスを制御するための装置である。具体的には、ディスクアレイ制御装置100は、ホストコンピュータ200からリード要求を受けて、リード要求されたデータを物理ディスク群9(例えば所定の論理記憶領域)から取得してそれをホストコンピュータ200に転送したり、ホストコンピュータ200からライトデータと共にライト要求を受けて、そのライトデータを物理ディスク群9に格納したりする。ディスクアレイ制御装置100には、複数(又は1つ)のホストアダプタ300と、複数(又は1つ)のディスクアダプタ500と、複数のホストアダプタ300と複数のディスクアダプタ500とに接続される中継アダプタ400とが備えられる。
各ホストアダプタ300には、1又は複数台のホストコンピュータ200とLAN等の通信ネットワークを介して通信可能に接続され、且つ、中継アダプタ400に所定の通信インターフェースを介して通信可能に接続される(例えばスター接続される)。各ホストアダプタ300は、ハードウェア回路(又は、ソフトウェア或いはそれらの組み合わせ)で構成することができ、このディスクアレイ制御装置100とそれに接続されているホストコンピュータ200との間の通信を制御する。各ホストアダプタ300は、接続されているホスト200と通信を行うための通信インターフェースを有し、また、ホスト200から受信した各種コマンドを解釈して処理するためのコマンドプロセッサ機能も有する。具体的には、各ホストアダプタ300は、1又は複数のマイクロプロセッサ(以下、「ホスト側MP」と言う)360と、各ホスト側MP360に専用の1以上(例えば1つの)のローカルメモリ(以下、「ホスト側LM」と言う)350と、各ホスト側MP360と中継アダプタ400とを通信可能に接続するためのホストハブ(換言すれば、例えば、ホスト側MP360の中継アダプタ400に対するアダプタ)310とを備える。
各ディスクアダプタ500には、1台(又は複数台)の物理ディスク群9と所定の通信インターフェース(例えばSAN(Storage Area Network)等の通信ネットワーク)を介して通信可能に接続され、且つ、中継アダプタ400に所定の通信インターフェースを介して通信可能に接続される(例えばスター接続される)。各ディスクアダプタ500は、ハードウェア回路(又は、ソフトウェア或いはそれらの組み合わせ)で構成することができ、このディスクアレイ制御装置100とそれに接続されている物理ディスク群9との間の通信を制御する。具体的には、各ディスクアダプタ500は、1又は複数のマイクロプロセッサ(以下、「ディスク側MP」と言う)550と、各ディスク側MP550に専用の1以上のローカルメモリ(以下、「ディスク側LM」と言う)560と、各ディスク側MP550と中継アダプタ400とを通信可能に接続するためのディスクハブ(換言すれば、例えば、ディスク側MP550の中継アダプタ400に対するアダプタ)510とを備える。
中継アダプタ400は、複数のアダプタ300、500間の通信を制御するためのポートコントローラ410と、複数のMP360、550間で共有可能な共有メモリ(以下、Shared Memoryを略して「SM」と言う)470とを備える。SM470には、直接LMライト方式のときにメッセージが一時的に格納されるバッファ領域と、間接LMライト方式のときにメッセージが格納されるキャッシュ領域とが含まれている。なお、バッファ領域及びキャッシュ領域のうち少なくともバッファ領域には、各MP360及び550毎に対応したサブバッファ領域が用意されている。このため、例えば、或るホスト側MP360が直接LMライト方式で出力したメッセージが一時的にSM470に格納される場合、メッセージ送信元のホスト側MP360に対応したサブバッファ領域にメッセージが格納される。なお、上述した「直接LMライト方式」とは、メッセージの送信側MP360(又は550)が、受信側MP550(又は360)の介在無しに、そのMP550(又は360)が有するLM560(350)にメッセージをライトする方式を言う。一方、「間接LMライト方式」とは、実質的には共有メモリ方式のことであり、送信側MP360(又は550)がSM470のキャッシュ領域にメッセージをライトし、受信側MP550(又は360)がそのキャッシュ領域をポーリングすることにより、その受信側MP550(又は360)がメッセージを取得し自分のLM560(350)にライトする方式を言う。
以上のような構成の下で、ホスト側MP360が、ディスク側MP550の介在無しで、中継アダプタ400のポートコントローラ410を経由して、所定の又は所望のディスク側LM560にメッセージ(MP間でやり取りされる制御情報)を直接書き込むことができる。同様に、ディスク側MP550が、ホスト側MP360の介在無しで、中継アダプタ400のポートコントローラ410を経由して、所望のホスト側LM350にメッセージを直接書き込むことができる。これを可能とした一つの工夫として、各MP360、550に、少なくとも1つの他のMP360又は550が有する少なくとも1つのLM350又は560のアドレス(以下、「LMアドレス」と言う)が記録されたアドレスマップが格納されていることが挙げられる。それにより、各MP360、550は、そのアドレスマップから、所望の又は所定のLMアドレスを取得し、そのLMアドレスに、中継アダプタ400のポートコントローラ410を介してメッセージを書き込むことができる。以下、この点について具体的に説明する。
図2は、各MP360(及び550)に格納されているアドレスマップの一例を示す。
各MP360(及び550)、例えば、MP識別情報(「MP#」と図示)が「00」であるホストMP360に格納されているアドレスマップ4には、種々の情報が記録されているが、主要な情報の例として、送信時SMアドレス情報、受信時SMアドレス情報、他MPのLMアドレス情報、及び自MPのLMアドレス情報がある。
送信時SMアドレス情報は、ホスト側MP360が間接LMライト方式で他のMP550(又は360)にメッセージを送信する場合に、SM470のどのアドレスにメッセージを格納すべきかを示す情報である。送信時SMアドレス情報は、例えば、所定の1又は複数の他MP550(又は360)の識別情報と、それら1又は複数の他MPにそれぞれ対応した1又は複数のSMアドレス範囲(1又は複数のSMアドレス)を含んでいる。
受信時SMアドレス情報は、他MP550(又は360)から間接LMライト方式でメッセージを受信する場合に、SM470のどのアドレスをリードすべきかを示す情報である。受信時SMアドレス情報は、例えば、所定の1又は複数の他MP550(又は360)の識別情報と、それら1又は複数の他MPにそれぞれ対応した1又は複数のSMアドレス範囲(1又は複数のSMアドレス)を含んでいる。
他MPのLMアドレス情報は、所定の1又は複数の他MPがそれぞれ有するLMのアドレスを含んだ情報(図示のように、自MPのLMアドレスが含まれていても良い)である。具体的には、例えば、他MPのLMアドレス情報には、図2に示すように、1以上(例えば8個)のアダプタ300及び500の識別情報(例えばアダプタ名)と、1以上のアダプタ300、500に搭載されている1以上(例えばMP#「00」を除いた15個)の他MP550(又は360)の識別情報と、それら1以上の他MP550(又は360)が有する1以上のLM560(又は350)のLMアドレス範囲(直接ライトすることが可能な1又は複数のLMアドレス)とが含まれている。
自MPのLMアドレス情報は、自分が有する1以上のLM350(又は560)のLMアドレス範囲(1又は複数のLMアドレス)を含んだ情報である。具体的には、例えば、図示のように、MP#「00」のホスト側MP360のメッセージの宛先となるディスク側MP550(例えばMP#「08」)の自MPのLMアドレス情報には、1以上の送信元MP360又は550にそれぞれ対応したLMアドレス範囲(1又は複数のLMアドレス)が含まれている。
以上のように、各MP360、550のプログラムアドレス空間に、上記のようなアドレスマップ4を記録しておく。これにより、そのMP360(又は550)のマイクロプログラムの処理によって、任意のターゲットMP550(又は360)のLMアドレスにライト命令を実行すると、ターゲットMP550(又は360)のLM560(又は350)にメッセージが書き込まれる。すなわち、MP360(又は550)は、宛先MP550(又は360)の介在無しで、中継アダプタ400のポートコントローラ410を経由して、所定の又は所望のディスク側LM560にメッセージを直接書き込むことができる。具体的には、例えば、MP#「00」のホスト側MP360がMP#「08」のディスク側MP550にメッセージを発行する場合、そのホスト側MP360は、自分が有するアドレスマップ4から、MP#「08」のディスク側MP550に対応したLMアドレスを取得し、そのLMアドレスと所望メッセージとを含んだ後述の直接ライトコマンドを生成して、中継アダプタ400に送信する。すると、その直接ライトコマンドは、中継アダプタ400から、MP#「08」のディスク側MP550を有するディスクアダプタ500に転送される。そして、その直接ライトコマンドに含まれるメッセージは、MP#「08」のディスク側MP550のディスク側LM560の、送信元ホスト側MP360(MP#「00」のMP)に対応したLMアドレスに格納される。
なお、図示のベースアドレスは、LM560(又は350)のオフセットを示したもので、ターゲットMP550(又は360)が搭載されているアダプタ500(又は300)のハブ510(又は310)の所与の設定値で、あらかじめターゲットMP550(又は360)がマイクロプログラムにより設定しておくものである。
以下、ホスト側MP360が所望のディスク側LM560に対するメッセージを発行する場合を例に、ホストアダプタ300、中継アダプタ400及びディスクアダプタ500の構成及び機能について詳細に説明する。
図3は、ホストアダプタ300の機能及び構成を詳細に示すブロック図である。図4は、中継アダプタ400の機能及び構成を詳細に示すブロック図である。図5は、ディスクアダプタ500の機能及び構成を詳細に示すブロック図である。図3、4及び5を横に並べて見ることで、アダプタ300、400及び500の繋がりが分かるようになっている。
図3に示すように、ホストアダプタ300には、1以上(例えば2つ)のホスト側MP360A、360Bと、それら1以上のホスト側MP360A、360Bにそれぞれ対応した1以上(例えば2つ)のホスト側LM350A、350Bが搭載されている。ホストアダプタ300では、所定のプロセッサバス(例えばPCI−Xバス)2を介して、1以上のホスト側MP360A、360B、ホスト側LM350A、350B、及びホストハブ310が通信可能に接続されている。ホストハブ310には、MPパス制御部311、アクセス制御部316、1以上のホスト側MP360A、360Bにそれぞれ対応した1以上(例えば2つ)のホストポート200A、200B、ステータス判定部317、SMバッファ閾値テーブル314、SMバッファフルテーブル315、割込み制御部313及びリセット制御部312が備えられている。
MPパス制御部311は、LMアドレス及びメッセージを含むコマンド(以下、「直接ライトコマンド」と言う)やSMアドレス及びメッセージを含むコマンド(以下、「間接ライトコマンド」と言う)をホスト側MP360A、360Bから受信し、そのコマンドをアクセス制御部316に送信する。また、MPパス制御部311は、後述するリセット命令をホスト側MP360から受信した場合、そのリセット命令をリセット制御部312に通知する。
アクセス制御部316は、MPパス制御部311から受信したライトコマンドを、その送信元のホスト側MP360A又は360Bに対応したホストポート200A又は200Bに転送する。その際、アクセス制御部316は、SMバッファ閾値テーブル314及びSMバッファフルテーブル315に書かれている情報に基づいて、MPパス制御部311から受けたコマンドをホストポート200A又は200Bに送るか否かを制御する。具体的には、例えば、アクセス制御部316は、SMバッファフルテーブル315にバッファフルが記録されていないホスト側MP360Aからの直接ライトコマンドはホストポート360Aに送信するが、バッファフルが記録されているホスト側MP360Bからの直接ライトコマンドはホストポート360Bに送信せずに止める。
各ホストポート200A、200Bには、送信制御部318と受信制御部319とが含まれている。
送信制御部318は、アクセス制御部316から受信したコマンドを所定のフォーマットに変換して中継アダプタ400のポートコントローラ410に送信する。フォーマット変換後のコマンドは、図6に示す通りである。すなわち、送信制御部318からポートコントローラ410に送られるコマンドは、アドレス情報、コマンド種別、ライトデータ及びCRCを含んでいる。アドレス情報は、例えば、LMアドレス又はSMアドレスである。コマンド種別には、例えば、共有メモリにメッセージをライトすることを意味する「共有メモリライト」、共有メモリからメッセージをリードすることを意味する「共有メモリリード」、及び、メッセージを直接LMにライトすることを意味する「LMライト」がある(更に、メッセージのデータ長などが含まれていても良い)。ライトデータは、送信元MP360又は550で生成されたメッセージである。CRCは、このコマンドフォーマットのデータ保証コードを示す。
受信制御部319は、ポートコントローラ410からステータス情報を受信し、ステータス判定部317に渡す。ステータス情報は、例えば図7に示す通りである。すなわち、ステータス情報には、種々の情報が含まれているが、主要な情報の例として、宛先MP情報、バッファフル情報及びバッファ閾値オーバー情報がある。宛先MP情報は、例えば、このステータス情報が送信される起因となったメッセージの宛先のMP550の識別情報である。バッファフル情報は、宛先MP550に対応したSM470上のサブバッファ領域で後述するバッファフル(換言すれば、例えば重度の警告)が発生したか否かを表す情報である。バッファ閾値オーバー情報は、宛先MP550に対応したSM470上でのサブバッファ領域で後述するバッファ閾値オーバー(換言すれば、例えば軽度の警告)が発生したか否かを表す情報である。
SMバッファ閾値テーブル314には、全てのMP360、550の各々について、それに対応するサブバッファ領域に存在する直接ライトコマンドの蓄積量が第1閾値を超えたか否か(換言すれば、バッファ閾値オーバーが発生したか否か)が記録される。具体的には、例えば、或る宛先MP550に対応したサブバッファ領域で第1閾値を超えていない場合には、SMバッファ閾値テーブル314における、そのMP550に対応したビットはオフになっており、そのサブバッファ領域で第1閾値を超えた場合には、ステータス判定部317によって、そのMP550に対応したビットはオンにされる。このとき、その旨がSMバッファ閾値テーブル314から割り込み制御部313及びアクセス制御部316に通知される。
また、SMバッファ閾値テーブル314には、閾値登録代表ビットが備えられる。閾値登録代表ビットは、全てのMP360及び550にそれぞれ対応した全てのビットがオフであれば、オフであるが、少なくとも1つのMP360又は550に対応したビットがオンになればオンになる。
SMバッファフルテーブル315には、全てのMP360、550の各々について、それに対応するサブバッファ領域に存在する直接ライトコマンドの蓄積量が第1閾値よりも大きい第2閾値を超えたか否か(換言すれば、バッファフルが発生したか否か)が記録される。具体的には、例えば、或る宛先MP550に対応したサブバッファ領域で第2閾値を超えていない場合には、SMバッファフルテーブル315における、そのMP550に対応したビットはオフになっており、そのサブバッファ領域で第2閾値を超えた場合には、ステータス判定部317によって、そのMP550に対応したビットはオンにされる。このとき、その旨がSMバッファフルテーブル315から割り込み制御部313及びアクセス制御部316に通知される。
SMバッファフルテーブル315には、閾値登録代表ビットが備えられる。閾値登録代表ビットは、全てのMP360及び550にそれぞれ対応した全てのビットがオフであれば、オフであるが、少なくとも1つのMP360又は550に対応したビットがオンになればオンになる。
ステータス制御部317は、受信制御部319から受けたステータス情報(図7参照)の宛先MP情報、バッファフル情報及びバッファ閾値オーバー情報に基づいて、SMバッファ閾値テーブル314及びSMバッファフルテーブル315を更新する。具体的には、例えば、ステータス判定部317は、バッファフル情報がバッファフルを示していれば、宛先MP情報が示すMP550についてのSMバッファフルテーブル315上のビットをオフからオフにする。同様に、例えば、ステータス判定部317は、バッファ閾値オーバー情報が閾値オーバーを示していれば、宛先MP情報が示すMP550についてのSMバッファ閾値テーブル314上のビットをオフからオフにする。
割込み制御部313は、2種類のテーブル314及び315にそれぞれ記録されている各MP360,550毎の情報に基づいて、各MP360に割り込み信号を出力するか否か、出力するのであればどのような割り込み信号を出力するかを制御する。具体的には、例えば、割込み制御部313は、或るディスク側MP550について閾値オーバーが発生した旨の通知をSMバッファ閾値テーブル314から受けた場合、この割込み制御部313が搭載されているホストアダプタ300上にあるメッセージ送信元MP(又は、全てのMP)360A及び/又は360Bに正常割込み信号を送信する。また、例えば、割込み制御部313は、或るディスク側MP550についてバッファフルが発生した旨の通知をSMバッファフルテーブル315から受けた場合、この割込み制御部13が搭載されているホストアダプタ300上にあるメッセージ送信元MP(又は、全てのMP)360A及び/又は360Bに障害割込み信号を送信する。なお、正常割込み信号を受けたMP360A又は360Bのマイクロプログラムは、上記ディスク側MP550についての閾値オーバーをリセットするための閾値オーバーリセット命令をリセット制御部312に発行する。また、障害割込み信号を受けたMP360のマイクロプログラムは、所定のイベントが発生するまで(例えば、バッファフルが解除された旨の通知をポートコントローラ410から受けるまで)、上記ディスク側MP550を宛先としたメッセージの発行頻度を減らすか、或いは、直接LMライト方式から間接LMライト方式に切り替えて上記ディスク側MP550を宛先とするメッセージを発行し、所定のイベントが発生したら(例えば間接LMライト方式を実行してから一定時間が経過したら)、通常通りに直接LMライト方式でその宛先にメッセージを発行する。
リセット制御部312は、ホスト側MP360からMPパス制御部311を介して閾値オーバーリセット命令を受け、命令されたMP550(又は360)についてのSMバッファ閾値テーブル314のビットをオンからオフにする(すなわち、そのMP550についての閾値オーバー状態を解除する)。また、リセット制御部312は、後述する方法によって、或るMP550(又は360)についてのバッファフルリセット命令を受け、そのMP550(又は360)についてのSMバッファフルテーブル315のビットをオンからオフにする(すなわち、そのMP550(又は360)についてのバッファフル状態を解除する)。
さて、次に、図4を参照して中継アダプタ400について説明する。
中継アダプタ400には、前述したように、ポートコントローラ410とSM470とが備えられる。ポートコントローラ410には、1以上のホストアダプタ300がそれぞれ接続される1以上のホスト側ポートセット420と、1以上のディスクアダプタ500がそれぞれ接続される1以上のディスク側ポートセット430と、ポート選択制御部440とが備えられる。また、ポートコントローラ410には、リモート直接LMライト制御部450と、メモリ制御部460とが備えられる。
ホスト側ポートセット420には、各ホストアダプタ300の1以上のポート200A、200Bにそれぞれ接続される1以上(例えば2つ)のホスト側ポート420A、420Bが備えられる。ホスト側ポート420A、420Bは、ホストアダプタ300と通信するための通信インターフェースである。ホスト側ポート420A、420Bには、接続先ホストポート200A、200Bの送信制御部318からフォーマット変換されたコマンドを受信する受信制御部421と、後述する方法で作成されたステータス情報を接続先ホストポート200A、200Bの受信制御部319に送信する送信制御部422とが備えられる。
ディスク側ポートセット430には、各ディスクアダプタ500の1以上のディスクポート520A、520Bにそれぞれ接続される1以上(例えば2つ)のディスク側ポート430A、430Bが備えられる。ディスク側ポート430A、430Bは、ディスクアダプタ500と通信するための通信インターフェースである。ディスク側ポート430A、430Bには、ホスト側ポート420A又は420Bからポート選択制御部440を介して受信したコマンドを接続先ディスクポート520A、520Bの受信制御部に送信する等を行う送信制御部432と、接続先ディスクポート520A、520Bの送信制御部からコマンドを受信する受信制御部とが備えられる。その送信制御部が出力するコマンドのフォーマットは、例えば図8に示すようになっている。すなわち、そのコマンドは、アドレス情報(例えばLMアドレス)と、コマンド種別と、宛先MPのLMにライトすべきライトデータ(すなわち宛先MPへのメッセージ)とが含まれている。なお、例えば、送信制御部432は、送信するコマンドにLMアドレスを含める際、そのLMアドレスの上位Nビットを取り除いても良い。その場合、例えば、上位Nビットが除かれたLMアドレスは、ディスクハブ510において、LM560のベースアドレスを使用して正確なLMアドレスに復元される。
ポート選択制御部440は、例えば、ホストアダプタ300から直接ライトコマンドを受信したとき、そのコマンドに含まれているLMアドレスから、そのコマンドをどのディスク側ポート430を介して送信すれば良いのかを識別する。そして、その際、ポート選択制御部440は、識別されたディスク側ポート430が使用中か否か(具体的には、例えば、ディスク側ポート430Aが別のコマンドを送信中である又は受信であるか否か)を判断し、使用中でなければ、直接ライトコマンドをそのポート430Aを介してディスクアダプタ500に送信し、使用中であれば、直接ライトコマンドをSM470上のサブバッファ領域に一時保存するために、直接ライトコマンドのLMアドレスをアドレスデコーダ451に通知し、且つ、直接ライトコマンド内のLMアドレス及びライトデータをデータとしてメモリ制御部460に送信する。また、ポート選択制御部440は、使用中であったポート430Aが未使用になった場合に、ポート430Aからリード要求を受け、リード要求元のポート430Aを特定することで、リードすべきメッセージの宛先MPの識別情報(例えば宛先MPの番号)を識別し、その識別情報をアドレスデコーダ451に通知する。
図9は、ポート選択制御部440の概要を示す。この図を参照して、ポート選択制御部440を詳細に説明する。
ポート選択制御部440は、1以上のバッファ601A〜601nと、ポート管理テーブル600と、パス切替制御部650とを備える。
1以上のバッファ601A〜601nは、1以上のホスト側ポート420A〜420n(又は1以上のディスク側ポート430A〜430n)にそれぞれ対応したバッファである。各バッファ601A〜601nには、そのバッファに対応したホスト側ポート(又はディスク側ポート)が受信した直接ライトコマンドが一時的に格納される。具体的には、例えば、バッファ601Aには、ホスト側ポート420Aがホストアダプタ300から受信した直接ライトコマンド、及び、或るディスク側ポートからホスト側ポート420Aに転送される直接ライトコマンドが格納される。
ポート管理テーブル600には、1以上のホスト側ポート420A〜420n及び1以上のディスク側ポート430A〜430nの各々毎に、そのポートが受信した直接ライトコマンドをどのポートに転送するのかに関するポート制御情報が登録されている。ポート制御情報は、例えば、1以上のポート430A〜430n及び420A〜420nの識別情報にそれぞれ対応した1以上の格納先LMアドレス範囲(及びMP識別情報)を含んでいる。
パス切替制御部650は、各ポート420A〜420n及び430A〜430nから受信した直接ライトコマンドを別のポートから出力するためのハードウェア回路である(ソフトウェア又はそれらの組合せであっても良い)。パス切替制御部650は、例えば以下の(1)〜(3)の処理、
(1)各ポート420A〜420n及び430A〜430nから受信された直接ライトコマンドを、そのポートに対応したバッファ601A〜601nに格納する処理、
(2)そのバッファに格納された直接ライトコマンドを読出し、そのコマンドに含まれているLMアドレスに対応したポートから出力する処理、
(3)出力先ポートが使用中であれば、直接ライトコマンドをSM470上のサブバッファ領域に一時保存するために、直接ライトコマンドのLMアドレスをアドレスデコーダ451に通知し、且つ、直接ライトコマンド内のLMアドレス及びライトデータをデータとしてメモリ制御部460に送信する処理、
を行えるのであればどのような構成であっても良い。具体例として、例えば、図10に示すような構成を採用しても良い。すなわち、パス切替制御部650は、1以上のディスク側ポート430A〜430nにそれぞれ対応した1以上のポートパス制御部602A〜602nと、SMパス制御部603とを備えても良い。1以上のポートパス制御部602A〜602nの各々は、1以上のバッファ601A〜601nと、自分に対応したディスク側ポートとの間の通信を制御するハードウェア機器(例えばセレクタ)である。SMパス制御部603は、1以上のバッファ601A〜601nと、アドレスデコーダ451及びメモリ制御部460との間の通信を制御するハードウェア機器(例えばセレクタ)である。
図10に示した構成では、例えば以下の処理が行われる。
ポート管理テーブル600には、各ディスク側ポート430A〜430nに対応した各ポートパス制御部602A〜602nの識別情報や、SMパス制御部603の識別情報が記録されており、それ故、各ホスト側ポート420A〜420nが、このテーブル600を参照することにより、受信した直接ライトコマンド中のLMアドレスに基づきどのポートパス制御部602A〜602nとアービトレイトすれば良いかを識別したり、SMパス制御部603を識別してそれとアービトレイトしたりすることができるようになっている。
ホスト側ポート420Bは、受信した直接ライトコマンドをバッファ601Bに格納し、且つ、そのコマンド中のLMアドレスと、ポート管理テーブル600とに基づいて、アービトレイト先となるポートパス制御部602Aを識別し、そのポートパス制御部602Aとアービトレイトする。
アービトレイションの結果、ポートパス制御部602Aが使用中でなければ(例えば、その制御部602Aから直接ライトコマンドを出力することができる状態であれば)、ポートパス制御部602Aが、バッファ601Bに蓄積された直接ライトコマンドを読み出し、それをディスク側ポート430Aに送信する。
一方、上記アービトレイションの結果、ポートパス制御部602Aが使用中であれば、ホスト側ポート420Bは、SMパス制御部603とアービトレイトする。その結果、SMパス制御部603が、バッファ601Bに蓄積された直接ライトコマンドを読み出し、そのコマンド内のLMアドレス及びライトデータをデータとしてメモリ制御部460へ転送し、且つ、そのコマンド内のLMアドレスをアドレスデコーダ451に通知する。
以上が、ポート制御部440についての説明である。上述の通り、ポート制御部440には、ホスト側ポート420A〜420nとディスク側ポート430A〜430nとの間にバッファが介在し、各ポート420A〜420n及び430A〜430nが受信した直接ライトコマンドは一旦バッファに蓄積される。それにより、直接ライトコマンドを受信した各ポート420A〜420n及び430A〜430nは、そのコマンドを所定のバッファに格納してしまいさえすれば、そのコマンドが所定の出力先ポートから出力されなくても、次に別のコマンドを受けることができる。換言すれば、ホスト側ポート420A〜420nとディスク側ポート430A〜430nは独立して動作することができる。
再び図4を参照する。
リモート直接LMライト制御部450は、直接ライトコマンドをSM470上のサブバッファ領域に格納することを制御するものである。リモート直接LMライト制御部450は、スタックポインタテーブル453と、アドレスデコーダ451と、アドレス制御部456と、閾値判定部455と、バッファフル判定部454と、ステータス生成部452とを備える。
スタックポインタテーブル453には、メッセージの宛先となる各MP550(及び/又は360)毎にスタックポインタが登録されている。そのスタックポインタは、SM470上の上記バッファ領域(直接ライトコマンドが格納される領域)における、1以上のMPにそれぞれ対応した1以上のサブバッファ領域を指し示すものであって、具体的には、例えば、SM470のベースアドレスからのオフセットを示す。各宛先MP550のスタックポインタには、コマンドのライト位置を示すライトポインタと、コマンドのリード位置を示すリードポインタとがある。スタックポインタテーブル453は、アドレスデコーダ451から或る宛先MP550についてライト要求を受けたときは、そのMP550のライトポインタを1インクリメントし、そのMP550についてリード要求を受けたときは、リードポインタ及びライトポインタを1デクリメントし、更新後のライトポインタ又はリードポインタと、ポインタの更新対象となったMP550の識別情報とを、アドレス制御部456、バッファフル判定部454及び閾値判定部455に送信する。この実施例では、各サブバッファ領域においてデータが溢れそうか否かは、ライトポインタの値から判別することができる。
アドレスデコーダ451は、1以上の格納先LMアドレス範囲にそれぞれ対応した1以上のMP識別情報が記録された図示しないテーブルを記憶している。アドレスデコーダ451は、ポート選択制御部440からLMアドレスが通知された場合、そのLMアドレスと上記テーブルからメッセージの宛先MP550(又は360)を識別し、識別されたMP550に対応するスタックポインタを選択し、スタックポインタテーブル453に対し、そのMP550についてのライト要求を送信する。また、アドレスデコーダ451は、ポート選択制御部440から宛先MPの識別情報を受けたときは、その識別情報を持つMP550に対応するスタックポインタを選択し、スタックポインタテーブル453に対し、そのMP550についてのリード要求を送信する。
アドレス制御部456は、SM470上のサブバッファ領域に対するSMアドレスを設定する機能を持つ。具体的には、例えば、アドレス制御部456は、スタックポインタテーブル453から受けるライトポインタ又はリードポインタの値と、ポートコントローラ410内に予め設定されているSM470のベースアドレスとに基づいて、SM470のどこにデータを格納すべきかを示すSMライトアドレス、又は、SM470のどこからデータをリードすべきかを示すSMリードアドレスを算出する。アドレス制御部456は、算出されたSMライトアドレス又はSMリードアドレスをメモリ制御部460に通知する。
閾値判定部455は、スタックポインタテーブル453から通知されたスタックポインタ(ライトポインタ)が第1閾値を超えたか否かを判定し、超えていれば、閾値オーバーが発生した旨と、それが発生した宛先MP550の識別情報とをステータス生成部452に送信する。
バッファフル判定部454は、スタックポインタテーブル453から通知されたスタックポインタ(ライトポインタ)が第1閾値よりも大きい第2閾値を超えたか否かを判定し、超えていれば、バッファフルが発生した旨と、それが発生した宛先MP550の識別情報とをステータス生成部452に送信する。なお、その第2閾値は、SM470上のサブバッファ領域でのデータの蓄積量がそのバッファ領域の記憶容量を超えないようにするための閾値であって、そのバッファ領域の容量以下でその容量に近い値となっており、第1閾値は、その値よりも所定値だけ小さい値となっている。
ステータス生成部452は、閾値判定部455から閾値オーバー発生の通知及びそれが発生した宛先MPの識別情報を受けた場合、その宛先MP識別情報と閾値オーバーの発生を示すコードとを含んだステータス情報を生成する。また、ステータス生成部452は、バッファフル判定部454からバッファフル発生の通知及びそれが発生した宛先MPの識別情報を受けた場合、その宛先MP識別情報とバッファフルの発生を示すコードとを含んだステータス情報を生成する。ステータス生成部452は、生成したステータス情報を、ポート選択制御部440及び所定のポート420(及び/又は430)を介して、所定のMP360、550(例えば、全てのMP360、550又はメッセージの送信元のホスト側MP360)に送信する。具体的には、例えば、ステータス生成部452がステータス情報をポート選択制御部440に送信した場合、ポート選択制御部440は、そのステータス情報を、そのステータス情報が生成される起因となった直接ライトコマンドを受信したホスト側ポートから出力する。それにより、そのステータス情報は、その直接ライトコマンドを出力したホストポートが受信し、ホストアダプタ300では、そのホストポートから、どのホスト側MP360A、360Bに対して正常割込み或いは障害割込みを発行すれば良いかが識別される。
メモリ制御部460は、アドレス制御部456からSMライトアドレスを受けた場合、そのSMライトアドレスに、ポート選択制御部440から受けたデータ、すなわち、LMアドレス及びメッセージを格納する。これにより、そのメッセージの宛先MP550に対応したSM470上のサブバッファ領域に、そのメッセージ及びそれのLMアドレスが格納される。メモリ制御部460は、アドレス制御部456からSMリードアドレスを受けた場合、そのSMリードアドレスにあるデータ(換言すれば、サブバッファ領域に格納されているLMアドレス及びメッセージのセット)を読み出す。
さて、次に、図5を参照してディスクアダプタ500について詳細に説明する。
図5に示すように、ディスクアダプタ500では、所定のプロセッサバス(例えばPCI−Xバス)6を介して、1以上(例えば2つ)のディスク側MP550A、550B、1以上のディスク側LM560A、560B、及びディスクハブ510が通信可能に接続されている。ディスクハブ510には、中継アダプタ400のディスク側ポート430A、430にそれぞれ接続されるディスクポート520A、520Bと、LMベースアドレス設定部513と、LMアドレス制御部514と、MPパス制御部515とが備えられる。各ディスクポート520A、520Bには、受信制御部516と送信制御部512とが備えられている。
受信制御部516は、ポートコントローラ410のディスク側ポートの送信制御部432から、図8に示したフォーマットのコマンド(すなわち、LMアドレス及びメッセージを含んだコマンド)を受信し、それをLMアドレス制御部514に送る。
LMベースアドレス設定部513は、各LM560のベースアドレスを記憶している記憶装置(例えば不揮発性のメモリ)である。
LMアドレス制御部514は、受信制御部516から受けたLMアドレスと、LMベースアドレス設定部513が記憶しているベースアドレスとを用いて正確なLMアドレスを算出し、そのLMアドレスと、受信制御部516から受けたメッセージとをMPパス制御部515に渡す。
MPパス制御部515は、プロセッサバス6を介して、LMアドレス制御部514から受けたLMアドレスに、そのLMアドレス制御部514から受けたメッセージを書き込む。
送信制御部512は、ディスク側MP550Aから出力されたコマンドを受けて中継アダプタ400に出力する。
以上が、ホストアダプタ300、中継アダプタ400及びディスクアダプタ500についての説明である。
なお、上述の説明では、ホスト側MP360がディスク側MP510に対するメッセージを発行する場合を例にとっているが、ディスク側MP510がホスト側MP360に対するメッセージを発行する場合もあるので、ホストハブ310とディスクハブ510は、上述したホストハブ310の機能及び構成と、上述したディスクハブ510の機能及び構成との両方を備えている。すなわち、例えば、ホストハブ310は、ディスクハブ510と同様のLMアドレス制御部514等を備えているし、ディスクハブ510は、ホストハブ310と同様の割込み制御部313等を備えている。
また、上述の説明では、ホスト側MP360がディスク側MP510に対するメッセージを発行する場合を例にとっているが、ホスト側MP360は、自分以外のホスト側MP360にメッセージを発行しても良いし、同様に、ディスク側MP550は、自分以外のディスク側MP550にメッセージを発行してもよい。なお、その場合、メッセージは、中継アダプタ400のポートコントローラ410を介してやり取りされても良い。
以下、上述したホストアダプタ300、中継アダプタ400及びディスクアダプタ500の間で行われるデータ処理の流れを説明する。
本実施例では、各MP360、550は、他のMP550、360に対するメッセージを発行する場合、原則として、直接LMライト方式のメッセージを送信する(換言すれば、LMアドレス、コマンド種別「LMライト」及びメッセージを有するコマンドを発行する)。以下、メッセージの送信元MPをホスト側MP360Aとし、メッセージの宛先MPをディスク側MP550Aとして、アダプタ300、400及び500が行うデータのやり取りの流れを説明する。
(1)第1ケース:直接LMライト方式のメッセージが送信される場合であって、そのメッセージがSM470のサブバッファ領域に一時格納されることが無い場合。
この第1ケースにおいてアダプタ300、400及び500が行うデータのやり取りの流れを図11に示す。以下、この第1ケースについての流れについて、図11、図3〜図5及び図9を参照して説明する。
ホスト側MP360Aは、自分が記憶するアドレスマップ4から、メッセージの格納先LMアドレスであって、宛先MPに対応したLMアドレスを取得し、取得したLMアドレスと、そのLMアドレスにライトすべきメッセージとを含んだライト命令をMPバス2に出力する(ステップS1)。すると、そのライト命令は、MPパス制御部311及びアクセス制御部316を介して、自MP360Aに対応したホストポート200Aの送信制御部318に送信される。送信制御部318は、そのコマンドを所定のフォーマットに変換し、フォーマット変換後のコマンド(すなわち、LMアドレス、コマンド種別「直接LMライト」及びメッセージを含んだコマンド)を、ホストポート200Aの接続先のホスト側ポート420Aが有する受信制御部421に送信する(S2)。
ポートコントローラ410のホスト側ポート420Aが有する受信制御部421は、ホストポート200Aの送信制御部318から受信したコマンドを、ポート選択制御部440内の所定バッファ601Aに一時格納する。また、その受信制御部421は、そのコマンドに含まれているLMアドレスとポート管理テーブル600とに基づいて、どのディスク側ポート430A〜430nを使用するべきかを識別し、識別されたターゲットポート430A(つまり、格納先LMアドレスに対応したディスク側ポート)に対して、所定のリクエスト信号を送信する(S3)。ホスト側ポート420Aが、そのリクエスト信号に応答して、ターゲットポート430A(又はそれに対応したポートパス制御部602A)から使用中で無い旨を表す信号(「not busy」と図示)を受けた場合(S4)、すなわち、ターゲットポート430が未使用である場合、バッファ601A内のコマンドが読み出されてターゲットポート430Aの送信制御部432を介してディスクアダプタ500に転送される(S5、S6)。また、ホスト側ポート420Aの送信制御部442は、コマンドの転送が完了したことを表す通知を、接続先ホストポート200Aの受信制御部319に送信する(それにより、ホストアダプタ300において、出力したコマンドの転送が終了したことを認識することができる)(S7)。
中継アダプタ400からコマンドを受けたディスクポート520Aの受信制御部516は、そのコマンド(すなわち、LMアドレス及びメッセージを含んだコマンド)をLMアドレス制御部514に送る。
LMアドレス制御部514は、受信制御部516から受けたLMアドレスと、LMベースアドレス設定部513が記憶しているベースアドレスとを用いて正確なLMアドレスを算出し、そのLMアドレスと、受信制御部516から受けたメッセージとをMPパス制御部515に渡す。
MPパス制御部515は、プロセッサバス6を介して、LMアドレス制御部514から受けたLMアドレスに、そのLMアドレス制御部514から受けたメッセージを書き込む(S8)。
ディスク側MP550は、自分が記憶しているアドレスマップの自MPのLMアドレス情報に基づいて、自分が有するLM560のうち送信元MP360に対応したLMアドレスをポーリングする(すなわち、そのLMアドレスを定期的にリードする)(S9、S10)。その場合、そのLMアドレスにメッセージがあれば、ディスク側MP550は、そのLMアドレスからメッセージを取得する(S11、S12)。
以上の一連の流れにより、ホスト側MP360が発行したメッセージがディスク側LM560に直接ライトされ、直接ライトされたメッセージがディスク側MP550に伝えられる。
(2)第2ケース:直接LMライト方式のメッセージが送信される場合であって、そのメッセージがSM470のサブバッファ領域に一時格納される場合。
この第2ケースにおいてアダプタ300、400及び500が行うデータのやり取りの流れを図12に示す。以下、この第2ケースについての流れについて、図12、図3〜図5及び図9を参照して説明する。
ホスト側ポート420Aの受信制御部421は、上記第1ケースと同様の流れで直接ライトコマンドを受信して(S21、S22)、所定バッファ601Aに一時格納し、そのコマンドに含まれているLMアドレスとポート管理テーブル600とに基づいてターゲットポート430Aを識別し、そのターゲットポート430Aに対して所定のリクエスト信号を送信する(S23)。ホスト側ポート420Aは、そのリクエスト信号に応答して、ターゲットポート430Aから使用中である旨を表す信号(「busy」と図示)を受けた場合(S24)、すなわち、ターゲットポート430が使用中である場合、パス切替制御部650が、受信したコマンド中のLMアドレスをアドレスデコーダ451に通知し、且つ、受信したコマンドに含まれているメッセージ及びLMアドレスをデータαとしてメモリ制御部460に送信する(S25)。その後、ホスト側ポート420Aは、コマンドの転送が完了したことを表す通知を、ホストポート200Aの受信制御部319に送信する(S26)。
アドレスデコーダ451は、ポート選択制御部440からLMアドレスが通知された場合、そのLMアドレスからメッセージの宛先MP550を識別して、識別されたMP550に対応するスタックポインタを選択し、スタックポインタテーブル453に対し、そのMP550についてのライト要求を送信する。
スタックポインタテーブル453は、アドレスデコーダ451から或る宛先MP550についてライト要求を受けたときは、そのMP550のライトポインタを1インクリメントし、更新後のライトポインタの値と、ポインタの更新対象となったMP550の識別情報とを、アドレス制御部456、バッファフル判定部454及び閾値判定部455に送信する。
アドレス制御部456は、スタックポインタテーブル453から受けるライトポインタの値と、ポートコントローラ410内に予め設定されているSM470のベースアドレスとに基づいて、SM470のどこにデータを格納すべきかを示すSMライトアドレスを算出する。アドレス制御部456は、算出されたSMライトアドレスをメモリ制御部460に通知する。
メモリ制御部460は、アドレス制御部456からSMライトアドレスを受けた場合、そのSMライトアドレスに、ポート選択制御部440から受けたデータα、すなわち、LMアドレス及びメッセージを格納する。
その後、ターゲットポート430Aは、未使用中になると、ポート選択制御部440に対して、SM470上のサブバッファ領域に格納されたメッセージを含むデータαのリード要求(換言すれば、図11に示したコマンドの発行)を、自発的に行うか、或いは、ポート選択制御部440からの定期的な問い合わせに応答して行う。
ポート選択制御部440のパス切替制御部650は、そのリード要求の発行元のポート430Aとポート管理テーブル600から、そのポート430Aに対応した宛先ディスク側MP550のMP識別情報を把握し、そのMP識別情報をアドレスデコーダ451に通知する。
アドレスデコーダ451は、ポート選択制御部440からMP識別情報を受けたときは、その識別情報を持つMP550に対応するスタックポインタを選択し、スタックポインタテーブル453に対し、そのMP550についてのリード要求を送信する。
スタックポインタテーブル453は、そのMP550についてリード要求を受けたときは、リードポインタ及びライトポインタを1デクリメントし、更新後のポインタの値と、ポインタの更新対象となったMP550の識別情報とを、アドレス制御部456、バッファフル判定部454及び閾値判定部455に送信する。
アドレス制御部456は、スタックポインタテーブル453から受けたリードポインタの値と、ポートコントローラ410内に予め設定されているSM470のベースアドレスとに基づいて、SM470のどこからデータをリードすべきかを示すSMリードアドレスを算出する。アドレス制御部456は、算出されたSMリードアドレスをメモリ制御部460に通知する(S27)。
メモリ制御部460は、アドレス制御部456からSMリードアドレスを受けた場合、そのSMリードアドレスにあるデータα(すなわち、サブバッファ領域に格納されているLMアドレス及びメッセージのセット)を読み出し(S28)、それを、ポート選択制御部440を介して、上記リード要求の発行元のターゲットポート430Aに渡す。それにより、そのデータαが、ターゲットポート430Aの送信制御部432によって、所定フォーマットに変換されて(例えば、LMアドレス、コマンド種別として「LMライト」、及びライトデータを含んだコマンドに変換されて)、ディスクポート520Aの受信制御部516に送信される(S29、S30)。
その後、上記ケース1と同様の流れで、ディスク側MP550A宛のメッセージが、そのMP550Aを介在することなく、そのMP550AのLM560Aにライトされ、MP550Aの自分のLM560Aに対するポーリングにより、MP550Aは、自分宛のメッセージを取得することができる(S31〜S34)。
なお、この流れでは、スタックポインタテーブル453のライトポインタの値が更新される都度に、更新後のライトポインタの値が閾値判定部455及びバッファフル判定部454に通知される。
閾値判定部455は、スタックポインタテーブル453から通知されたライトポインタが第1閾値を超えたか否かを判定し、超えていれば、閾値オーバーが発生した旨と、それが発生した宛先MP550Aの識別情報とをステータス生成部452に送信する。
バッファフル判定部454は、スタックポインタテーブル453から通知されたライトポインタが第1閾値よりも大きい第2閾値を超えたか否かを判定し、超えていれば、バッファフルが発生した旨と、それが発生したMP550Aの識別情報とをステータス生成部452に送信する。
ステータス生成部452は、閾値判定部455から閾値オーバー発生の通知及びそれが発生したMP550Aの識別情報を受けた場合、そのMP識別情報と閾値オーバーの発生を示すコードとを含んだステータス情報を生成する。また、ステータス生成部452は、バッファフル判定部454からバッファフル発生の通知及びそれが発生したMP550Aの識別情報を受けた場合、そのMP識別情報とバッファフルの発生を示すコードとを含んだステータス情報を生成する。ステータス生成部452は、生成したステータス情報を、ポート選択制御部440及び所定のポート420(及び/又は430)を介して、所定のMP360、550(例えば、全てのホスト側MP360又はメッセージの送信元のホスト側MP360A)に送信する。
ステータス情報を受けたポート、例えばホストポート200Aの受信制御部319は、受信したステータス情報をステータス判定部317に渡す。
ステータス判定部317は、受信制御部319から受けたステータス情報の宛先MP情報、バッファフル情報及びバッファ閾値オーバー情報に基づいて、SMバッファ閾値テーブル314及びSMバッファフルテーブル315を更新する。具体的には、例えば、ステータス判定部317は、バッファフル情報がバッファフルを示していれば、宛先MP情報が示すMP550AについてのSMバッファフルテーブル315上のビットをオフからオフにする。同様に、例えば、ステータス判定部317は、バッファ閾値オーバー情報が閾値オーバーを示していれば、宛先MP情報が示すMP550AについてのSMバッファ閾値テーブル314上のビットをオフからオフにする。
SMバッファ閾値テーブル314は、或るMP550Aに対応したビットがオンにされた場合、その旨を割り込み制御部313及びアクセス制御部316に通知する。
また、SMバッファフルテーブル315は、或るMP550Aに対応したビットがオンにされた場合、その旨を割り込み制御部313及びアクセス制御部316に通知する。
割込み制御部313は、或るディスク側MP550Aについて閾値オーバーが発生した旨の通知をSMバッファ閾値テーブル314から受けた場合、この割込み制御部13が搭載されているホストアダプタ300上にある全てのMP360(又は、メッセージの送信元MP360Aのみ)に正常割込み信号を送信する。また、割込み制御部313は、或るディスク側MP550Aについてバッファフルが発生した旨の通知をSMバッファフルテーブル315から受けた場合、この割込み制御部13が搭載されているホストアダプタ300上にある全てのMP360(又は、メッセージの送信元MP360Aのみ)に障害割込み信号を送信する。
正常割込み信号を受けたMP360Aのマイクロプログラムは、上記ディスク側MP550についての閾値オーバーをリセットするための閾値オーバーリセット命令をリセット制御部312に発行する。その場合、リセット制御部312は、その閾値オーバーリセット命令に応答して、命令されたMP550についてのSMバッファ閾値テーブル314のビットをオンからオフにする(すなわち、そのMP550についての閾値オーバー状態を解除する)。SMバッファ閾値テーブル314は、ビットがオンからオフにリセットされた旨とそのリセットの対象となったMP識別情報を、アクセス制御部316に通知する。これにより、閾値オーバーが発生した宛先MP550Aに対して各MP360からメッセージが送信されても、アクセス制御部316を介して中継アダプタにそのメッセージが送信される。なお、MP360Aは、正常割込み信号を受けた場合は、閾値オーバーが発生したMP550Aを宛先とするメッセージの発行量又は発行頻度を減らすようにしても良い。
障害割込み信号を受けたMP360のマイクロプログラムは、所定のイベントが発生するまで(例えば、バッファフルが解除された旨の通知をポートコントローラ410から受けるまで)、上記ディスク側MP550Aを宛先としたメッセージの発行頻度又は発行量を減らすか、或いは、直接LMライト方式から間接LMライト方式に切り替えて上記ディスク側MP550Aを宛先とするメッセージを発行し、所定のイベントが発生したら、通常通りに直接LMライト方式でその宛先にメッセージを発行する(マクロプログラムは、通常通りに直接LMライト方式のメッセージを発行し、アクセス制御部316が、そのメッセージを中継アダプタ400側へスルーすることを止めても良い)。
なお、バッファフルがSMバッファフルテーブル315に登録された場合、そのバッファフルは例えば以下の方法で解除される。
すなわち、バッファフル判定部454が、スタックポインタテーブル453から受けた更新後のライトポインタの値が、バッファフルの基準となる第2閾値よりも所定値小さい第3閾値に達した場合に、その旨をステータス生成部452に通知し、ステータス生成部452が、バッファフル解除を表すコードとバッファフル解除対象のMPの識別情報とを含んだステータス情報を送信する。そのステータス情報は、所定のルートを経由してホストハブ310のステータス判定部317が受信し、ステータス判定部317が、そのステータス情報の内容をリセット制御部312に通知する。リセット制御部312は、通知された内容から、バッファフル解除対象のMPの識別情報を特定し、そのMPについてのSMバッファフルテーブル315のビットをオンからオフにリセットすることで、そのMPについてのバッファフルを解除する。SMバッファフルテーブル315は、ビットがオンからオフにリセットされた旨とそのリセットの対象となったMP識別情報を、アクセス制御部316に通知する。これにより、例えば、バッファフルが発生したMP550を宛先としたメッセージがアクセス制御部316において止められていた場合に、それが解消されて、そのMP550を宛先とするメッセージがアクセス制御部316を介して中継アダプタに送信されるようになる。
また、SMバッファフルテーブル315でバッファフルがリセットされた場合、その旨が割込み制御部313に通知され、割込み制御部313から、バッファフルのリセットに対応した種類の割込み信号が各ホスト側MP360に送信されても良い。その場合、その割込み信号を受けたホスト側MP360は、バッファフルが発生したMP550を宛先とするメッセージを間接LMライト方式(つまり共有メモリ方式)に従って送信していたならば、それを止めて、そのMP550に対して直接LMライト方式に従ってメッセージを送信することに戻しても良い。
以下、これらについての具体例を説明する。
図13は、アクセス制御部316がSMバッファフルテーブル315の情報に基づいてコマンドの送信を制御する場合の処理流れを示す。
ホストアダプタ300上のアクセス制御部316は、SMバッファフルテーブル315の閾値登録代表ビットを参照し、それがオンかオフであるかを判定する(S51)。
S51の結果、閾値登録代表ビットがオフであれば(S51でY)、どの宛先MPについてもバッファフルが生じておらず、直接ライトコマンドがSM470上のどのサブバッファ領域に蓄積されてもバッファフルが生じないことを意味するので、アクセス制御部316は、直接ライトコマンドが送信されるようにする。
一方、S51の結果、閾値登録代表ビットがオンであれば(S51でN)、少なくとも1つの宛先MPについてバッファフルが生じていることを意味するので、アクセス制御部316は、SMバッファフルテーブル315において、コマンドの宛先MPに対応したビットがオンかオフかを判定する(S53)。S53の結果、アクセス制御部316は、そのビットがオフであれば、直接ライトコマンドが送信されるようにし(S52)、一方、そのビットがオンであれば、間接ライトコマンドが送信されるようにする(例えば、コマンド送信元MP360Aに対して、そのコマンドのLMアドレスをSMアドレスに代えた間接コマンドを送信させる)(S54)。
図14は、SMバッファフルテーブル315でバッファフルがリセットされる場合の処理流れを示す。
中継アダプタ400のバッファフル判定部454が、定期的に、バッファフルになったMPのライトポインタをリードする(S61)。
S61の結果、そのライトポインタが、バッファフルの基準となる第2閾値よりも所定値小さい第3閾値以上でなければ(S61でN)、バッファフル判定部454は、バッファフルの解除の旨をステータス生成部452に通知する。それにより、上述した処理が行われて、ホストアダプタ300上のSMバッファフルテーブル315において、バッファフルのためオンであったビットがオフにされる(S62)。
また、S61の結果、リードされたライトポインタが上記第3閾値以上であっても、バッファフルが発生してから一定時間長経過した場合には(S63でY)、バッファフル判定部454は、バッファフルの解除の旨をステータス生成部452に通知し、それにより、バッファフルのためオンであったビットがオフにされる(S62)。
以上、上述した第1実施例によれば、送信側MPが発行したメッセージが、受信側MPを介在することなくそのMPが有するLMに直接ライトされる。受信側MPは、自分が持つLMをポーリングすることで、自分宛のメッセージを取得する。LMをリードする時間長は、SM470をリードする時間長に比べて短い(例えば10分の1以下程度である)。このため、受信側MPは、負担少なく、送信側MPから出力されたメッセージを取得することができる。
具体的には、例えば、各MPの共有メモリへのポーリングの頻度を「5μsec」に1回とし、共有メモリのパス数を「32」とすると、「32」個のMPがあると、MPや共有メモリにとって負担大となり、システムの性能の低下につながる。このとき、各MPと共有メモリ制御部間のパス(個別部)アクセス時間は800nsec、共有メモリ制御部と共有メモリ(共通部)のアクセス時間は200nsec、従って、個別パスが飽和するには、800nsec+200nsec×32MP=7200nsecとなる。7200nsec以内の間隔で各MPが共有メモリをポーリングするとパスが飽和してしまい、アクセス時間は、急激に長くなりシステム性能を大幅に劣化させる。
上述した第1実施例によれば、このような負担を軽減し、処理速度の高いディスクアレイ制御装置100を提供することが図れる。
また、上述した第1実施例によれば、中継アダプタ400は、SM470を備え、そのSM470には、バッファ領域が用意される。直接LMライト方式のメッセージは、受信側アダプタに対応したポートの使用状況に応じて、そのバッファ領域に格納せずにそのアダプタに転送されたり、そのバッファ領域に一時的に格納されてから転送されたりする。すなわち、送信対象のメッセージが直接LMライト方式のメッセージの場合は、受信側アダプタに対応したポートの使用状況に応じて、SM470のバッファ領域を経由して受信側アダプタに転送される第1転送モードと、そのバッファ領域を経由せずにダイレクトに転送される第2転送モードとが選択的に行われる。これにより、送信側MP(例えばホスト側MP360)と受信側MP(例えばディスク側MP550)との間のメッセージの転送効率の向上が図れる。
また、上述した第1実施例によれば、中継アダプタ400を介してメッセージを転送する際に、ホスト側ポート420とディスク側ポート430は独立して動作することが可能である。例えば、或るターゲットディスク側ポート430を経由すべきメッセージを或るホスト側ポート420が受信中であっても、そのターゲットディスク側ポート430は、ディスクハブ510に対して通信状態を維持する必要は無い。これにより、送信側MP(例えばホスト側MP360)と受信側MP(例えばディスク側MP550)との間のメッセージの転送効率の向上が図れる。
なお、第1実施例では、下記のような幾つかの変形例が考えられる。
例えば、各MP360は、アクセス制御部316に対し、SMアドレスとLMアドレスの双方を含んだコマンドを送信しても良い。その場合、アドレス制御部316は、各テーブル314、315の情報に基づき、直接LMライト方式を選択する場合は、受信したコマンドからSMアドレスを削除した新たなコマンドを生成して出力し、一方、間接LMライト方式を選択する場合は、上記受信したコマンドからLMアドレスを削除した(或いは削除せずにそのまま残した)コマンドを出力するようにしても良い。
また、例えば、ホスト側ポート420A〜420n及びディスク側ポート430A〜430nの各々は、LMアドレス範囲に代えて又は加えて、宛先MP識別情報に対応付けられ、その対応関係がポート管理テーブル600に登録されても良い。また、直接ライトコマンド及び間接ライトコマンドには、各MPが記憶するアドレスマップ4から把握可能な宛先MP識別情報が含まれても良い。すなわち、中継アダプタ400では、受信したコマンドを転送する際、そのコマンドに含まれている宛先MP識別情報から、出力先のポートが選択されても良い。
また、例えば、各アダプタ300、400及び/又は500上にある1以上のポートは、物理的に分離していても良いし、物理的には分離していなくても論理的に分離していても良い。同様に、同一ポート内にある送信制御部及び受信制御部も、物理的に分離していても良いし、物理的には分離していなくても論理的に分離していても良い。
上述した第1実施例では、コマンドを転送する中継アダプタがマスタ、そのコマンドを受ける受信側アダプタ(例えばディスクアダプタ500)がスレーブとなる中継部マスタ方式でコマンド転送が行われるが、これから説明する第2実施例では、中継アダプタがスレーブ、受信側アダプタがマスタとなる受信側マスタ方式でコマンド転送が行われる。以下、詳述する。
図15は、本発明の第2実施例におけるディスクアダプタの構成例である。なお、この図において、図5に示したディスクアダプタ500と同様の機能を有するものについては同一の参照番号を付す。また、以下の説明では、第1実施例と重複した部分については、説明を簡略或いは省略する。
この第2実施例に係るディスクアダプタ900の各ディスクポート901A、901Bには、中継アダプタからパス割込み信号を受けるパス割込制御部903が備えられる。
パス割込制御部903は、パス割込み信号の立ち下がり(或いは立ち上がり)を検出した場合に、同一ポート901A又は901B内の送信制御部904に、パス割込み有り(換言すれば、直接ライトコマンド有り)を通知する。
送信制御部904は、パス割込み有りを受けた場合、中継アダプタ400に、図16に例示するようなリード割込みコマンド、すなわち、割込みアドレス(「INTアドレス」と図示)とコマンド種別として「共有メモリリード」とを含んだコマンドを送信する。それにより、受信制御部516が、中継アダプタ400から、図17に示すようなデータ、すなわち、LMアドレスとライトデータとを含んだデータを受信する。なお、INTアドレスは、SM470のサブバッファ領域に格納されたデータ又はポート選択制御部440のバッファ内に格納されたデータの格納場所を割出すことができるものであれば、どのようなものでも良い(例えば、各ポートに固有に割り当てられたアドレスであっても良い)。
図18は、第2実施例において、SM470上の所定サブバッファ領域に直接ライトコマンドが格納される場合の、直接ライトコマンドのやり取りの流れを示す。図19は、その場合のコマンド送受信のタイミングチャートを示す。
中継アダプタの或るホスト側ポート420Aが、直接ライトコマンド(LMアドレス、コマンド種別「LMライト」、ライトデータを含んだコマンド)を受信したら(S71、S72)、そのコマンドに含まれているLMアドレスとポート管理テーブル600とに基づいてターゲットポート430Aを識別し、そのターゲットポート430Aに対して所定のリクエスト信号を送信する(S73)。また、ポートコントローラ410内では、受信した直接ライトコマンド内のLMアドレスに基づいてSMアドレスが算出され、そのSMアドレスと、データα(LMアドレス及びライトデータ)とがメモリ制御部460に取込まれ(S74)、メモリ制御部460によって、データαがSM470上の所定サブバッファ領域に格納される。
また、ホスト側ポート420Aは、直接ライトコマンドを受信した旨のステータスを接続先ホストポート200Aに送信する(S75)。
ターゲットポート430Aは、ホスト側ポート420Aからのリクエスト信号に応答して、接続先ディスクポート901Aのパス割込制御部903へのパス割込み信号を立ち上げる(S76)。そして、ターゲットポート430Aは、上記データαがSM470に格納された後、そのパス割込み信号を立ち下げる。
パス割込制御部903は、パス割込み信号の立下りを検出したら、パス割込み有りを送信制御部904に通知する。
パス割込み有りが通知された送信制御部904は、上述したリード割込みコマンド(INTアドレスとコマンド種別「共有メモリリード」とを含んだコマンド)を、ターゲットポート430Aに送信する(S77)。その結果、リード割込みコマンド内のINTアドレスから一意にSMアドレスが識別され(例えば1以上のINTアドレスと1以上のSMアドレスとが対応付けられたテーブルから所定SMアドレスが識別され)、識別されたSMアドレスからデータαが読み出され(S78、S79)、読み出されたデータαが、ディスクアダプタ900に送信される(S80)。そして、そのデータα内のLMアドレスに、そのデータα内のライトデータが直接ライトされ(S81)、宛先MP550Aが自分のLM560の所定LMアドレスをポーリングすることにより、そのライトされたライトデータを取得することができる(S82〜S85)。
以上が、第2実施例についての説明である。なお、この第2実施例では、直接ライトコマンドは、必ずSM470のサブバッファ領域に一旦格納されてから宛先MP側に転送されても良いし、格納されずに宛先MP側に転送されても良い。後者の場合は、例えば以下の流れで転送が行われても良い。すなわち、中継アダプタ400において直接ライトコマンドの受信後、ターゲットポート430Aが、接続先ディスクポート901Aのパス割込制御部903へのパス割込み信号を立ち上げ、その時点から所定時間経過後、そのパス割込み信号を立ち下げる。その場合、送信制御部904が、上述したリード割込みコマンドを、ターゲットポート430Aに送信し、それに応答して、受信制御部516が、ポート選択制御部440内の所定バッファから読み出された直接ライトコマンドを受信しても良い。
また、例えば、図15では、ディスクアダプタを示したが、メッセージは、ディスクアダプタからホストアダプタに転送される場合もあるので、ホストアダプタの各ポートも図15に示したディスクアダプタの各ポートと同様の構成になっていても良い。
次に、本発明の第3実施例について説明する。
この第3実施例では、各MP(例えばホストMP360A)は、直接LMライト方式や間接LMライト方式でリードコマンドを所望格納先LM(例えばディスク側LM550A)に格納することで、そのLMからリードされたメッセージを受ける。
この第3実施例は、上述した第1実施例の応用例である。すなわち、リードコマンドのコマンド送信側MPが、直接LMライト方式又は間接LMライト方式でコマンド受信側MPのコマンド受信側LMにそのリードコマンドをライトすると、コマンド受信側MPが、そのリードコマンドに応答して、コマンド受信側LMから、コマンド送信側MPを宛先とするメッセージを取得し、そのメッセージを、直接LMライト方式又は間接LMライト方式で、コマンド送信側MPのコマンド送信側LMに格納する。、その後、コマンド送信側MPが、そのコマンド送信側LMをポーリングしてメッセージを取得する。これにより、コマンド送信側MPが、コマンド受信側LMからメッセージを取得したことになる。
すなわち、第1実施例では、メッセージ送信元MPは、リードコマンドを受けることなく能動的にメッセージを所定格納先LMに発行するが、第3実施例では、自LMにメッセージを格納しておき、他MPからリードコマンドを受けたときに、それに応答して、自LMからメッセージを読み出し、それを、そのコマンド送信元の他MPのLMに送信する。
以下、この第3実施例について詳細に説明する。なお、以下の説明において、第1実施例と重複する部分については説明を省略又は簡略する。
図20は、第3実施例において、各MP360(及び550)に格納されているアドレスマップの一例を示す。
各MP360(及び550)、例えば、MP識別情報(「MP#」と図示)が「00」であるホストMP360に格納されているアドレスマップ12には、種々の情報が記録されているが、主要な情報の例として、第1実施例で説明した送信時SMアドレス情報及び受信時SMアドレス情報の他に、自MPのLMリード/ライトアドレス情報、他MPのLMライトアドレス情報及び他MPのLMリードアドレス情報がある。
自MPのLMリード/ライトアドレス情報は、自分が有する1以上のLM350(又は560)におけるLMアドレス範囲であって、自MP360に対するリードコマンドが格納されるLMリードアドレス範囲(1又は複数のLMアドレス)と、他MP550に対するメッセージの格納先となるLMライトアドレス範囲(1又は複数のLMアドレス)とを含んだ情報である。LMリードアドレス範囲もLMライトアドレス範囲も、各他MP毎(及び/又は各他LM毎)に用意される(例えば、各他MPのMP#に対応付けられている)。すなわち、1以上の他MPにそれぞれ対応した1以上のLMリードアドレス範囲の各々は、それに対応した他MPにとっては、その他MPが発行するリードコマンドの格納先LMライトアドレス範囲である。また、1以上の他MPにそれぞれ対応した1以上のLMライトアドレス範囲の各々は、それに対応した他MPにとっては、その他MPのメッセージのリード先となるLMリードアドレス範囲である。
他MPのLMライトアドレス情報は、他MPが有する他LMにおけるLMアドレス範囲であって、自MP360が発行したリードコマンドの格納先LMライトアドレス範囲(1又は複数のLMアドレス)を表す情報である。このLMライトアドレス範囲は、図示のように、各他MP毎に用意される(例えば、各他MPのMP#に対応付けられている)。すなわち、1以上の他MPにそれぞれ対応した1以上のLMライトアドレス範囲の各々は、それに対応した他MPにとっては、その他MPのポーリングによるリード先となるLMリードアドレス範囲である。
他MPのLMリードアドレス情報は、他MPが有する他LMにおけるLMアドレス範囲であって、自MP360のリード先であるLMリードアドレス範囲(1又は複数のLMアドレス)を表す情報である。このLMリードアドレス範囲は、図示のように、各他MP毎に用意される(例えば、各他MPのMP#に対応付けられている)。すなわち、1以上の他MPにそれぞれ対応した1以上のLMリードアドレス範囲の各々は、それに対応した他MPにとっては、その他MPの上記自MPに対するメッセージの格納先となるLMライトアドレス範囲である。
以上のように、各MP360、550のプログラムアドレス空間に、上記のようなアドレスマップ12を記録しておく。これにより、そのMP360(又は550)のマイクロプログラムの処理によって、任意のターゲットMP550(又は360)のLMライトアドレスに、任意のLMリードアドレスを指定したリードコマンドが任意のLMライトアドレスにライトされる。
以下、この第3実施例において、コマンド送信側MPがホスト側MP360A、コマンド受信側MPがディスク側MP550Aである場合を例に採り、直接LMリード方式でメッセージが読み出される場合の流れについて、以下の2つのケースに場合分けして説明する。
(1)第1ケース:直接LMライト方式のリードコマンドがSM470のサブバッファ領域に一時格納されることが無い場合。
この第1ケースにおいてアダプタ300、400及び500が行うデータのやり取りの流れを図21に示す。
ホスト側MP360Aは、自分が記憶するアドレスマップ12から、所望相手MP550Aに対応したLMリードアドレス(どこからデータを読むかを示すアドレス)及びLMライトアドレス(リードコマンドの格納先)を取得して、取得したLMリードアドレスを指定するリードコマンドと、取得したLMライトアドレスとを含んだリード命令をMPバス2に出力する。すると、そのリード命令は、MPパス制御部311及びアクセス制御部316を介して、自MP360Aに対応したホストポート200Aの送信制御部318に送信される。送信制御部318は、そのリード命令を所定のフォーマットに変換し、フォーマット変換後のコマンド群(すなわち、LMライトアドレスと、コマンド種別「直接LMリード」を表す上記リードコマンド)を、ホストポート200Aの接続先のホスト側ポート420Aが有する受信制御部421に送信する(S102)。
ポートコントローラ410のホスト側ポート420Aが有する受信制御部421は、ホストポート200Aの送信制御部318から受信したコマンド群を、ポート選択制御部440内の所定バッファ601Aに一時格納する。また、その受信制御部421は、そのコマンド群に含まれているLMライトアドレスとポート管理テーブル600とに基づいて、どのディスク側ポート430A〜430nを使用するべきかを識別し、識別されたターゲットポート430A(つまり、格納先LMアドレスに対応したディスク側ポート)に対して、所定のリクエスト信号を送信する(S103)。ホスト側ポート420Aが、そのリクエスト信号に応答して、ターゲットポート430A(又はそれに対応したポートパス制御部602A)から使用中で無い旨を表す信号(「not busy」と図示)を受けた場合(S104)、すなわち、ターゲットポート430が未使用である場合、バッファ601A内のコマンド群が読み出されてターゲットポート430Aの送信制御部432を介してディスクアダプタ500に転送される(S105、S106)。また、ホスト側ポート420Aの送信制御部442は、コマンド群の転送が完了したことを表す通知を、接続先ホストポート200Aの受信制御部319に送信する(それにより、ホストアダプタ300において、出力したコマンド群の転送が終了したことを認識することができる)(S107)。
中継アダプタ400からコマンド群を受けたディスクポート520Aの受信制御部516は、そのコマンド群(すなわち、LMライトアドレス及びリードコマンド)をLMアドレス制御部514に送る。
LMアドレス制御部514は、受信制御部516から受けたLMライトアドレスと、LMベースアドレス設定部513が記憶しているベースアドレスとを用いて正確なLMアドレスを算出し、そのLMライトアドレスと、受信制御部516から受けたリードコマンドとをMPパス制御部515に渡す。
MPパス制御部515は、プロセッサバス6を介して、LMアドレス制御部514から受けたLMライトアドレス(換言すれば、ディスク側MP550Aが記憶しているアドレスマップの自MPのLMリード/ライトアドレス情報における、LM560Aのうち送信元MP360に対応したLMリードアドレス)に、そのLMアドレス制御部514から受けたリードコマンドを書き込む(S108)。
ディスク側MP550Aは、例えば、自LM560Aにおける自MPライトアドレス情報のうち、送信元MP360に対応したLMライトアドレスに、送信元MP360に対するメッセージを書き込んでおく。
ディスク側MP550Aは、自分が記憶しているアドレスマップの自MPのLMリード/ライトアドレス情報に基づいて、自分が有する自LM560Aのうち送信元MP360に対応したLMリードアドレスをポーリングする(すなわち、そのLMリードアドレスを定期的にリードする)。その場合、そのLMリードアドレスにリードコマンドがあれば、ディスク側MP550は、そのリードコマンドに指定されるLMリードアドレスからメッセージを取得し、そのメッセージを、直接LMライト方式又は間接LMライト方式で、リードコマンド送信元であるホスト側MP360Aに送信する(ここで取得され送信されるメッセージは、アドレスマップの構成により、必ず、リードコマンドの送信元MPに対するメッセージになっている)。なお、そのメッセージがどのような流れでホスト側LM350Aに格納されるのかということについては説明を省略するが、それについては、第1実施例の説明から理解することができる。
(2)第2ケース:直接LMライト方式のリードコマンドが送信される場合であって、そのリードコマンドがSM470のサブバッファ領域に一時格納される場合。
この第2ケースにおいてアダプタ300、400及び500が行うデータのやり取りの流れを図22に示す。
ホスト側ポート420Aの受信制御部421は、上記第1ケースと同様の流れで上記コマンド群(LMライトアドレス及びリードコマンド)を受信して(S121、S122)、所定バッファ601Aに一時格納し、そのコマンドに含まれているLMアドレスとポート管理テーブル600とに基づいてターゲットポート430Aを識別し、そのターゲットポート430Aに対して所定のリクエスト信号を送信する(S123)。ホスト側ポート420Aは、そのリクエスト信号に応答して、ターゲットポート430Aから使用中である旨を表す信号(「busy」と図示)を受けた場合(S124)、すなわち、ターゲットポート430が使用中である場合、パス切替制御部650が、受信したコマンド中のLMライトアドレスをアドレスデコーダ451に通知し、且つ、受信したコマンド群に含まれているLMライトアドレス及びリードコマンドをデータαとしてメモリ制御部460に送信する(S125)。その後、ホスト側ポート420Aは、コマンド群の転送が完了したことを表す通知を、ホストポート200Aの受信制御部319に送信する(S126)。
アドレスデコーダ451は、ポート選択制御部440からLMライトアドレスが通知された場合、そのLMライトアドレスからリードコマンドの宛先MP550Aを識別して、識別されたMP550Aに対応するスタックポインタを選択し、スタックポインタテーブル453に対し、そのMP550Aについてのライト要求を送信する。
スタックポインタテーブル453は、アドレスデコーダ451から或る宛先MP550Aについてライト要求を受けたときは、そのMP550Aのライトポインタを1インクリメントし、更新後のライトポインタの値と、ポインタの更新対象となったMP550の識別情報とを、アドレス制御部456、バッファフル判定部454及び閾値判定部455に送信する。
アドレス制御部456は、スタックポインタテーブル453から受けるライトポインタの値と、ポートコントローラ410内に予め設定されているSM470のベースアドレスとに基づいて、SM470のどこにデータを格納すべきかを示すSMライトアドレスを算出する。アドレス制御部456は、算出されたSMライトアドレスをメモリ制御部460に通知する。
メモリ制御部460は、アドレス制御部456からSMライトアドレスを受けた場合、そのSMライトアドレスに、ポート選択制御部440から受けたデータα、すなわち、LMライトアドレス及びリードコマンドを格納する。
その後、ターゲットポート430Aは、未使用中になると、ポート選択制御部440に対して、SM470上のサブバッファ領域に格納されたメッセージを含むデータαのリード要求(換言すれば、図11に示したコマンドの発行)を、自発的に行うか、或いは、ポート選択制御部440からの定期的な問い合わせに応答して行う。
ポート選択制御部440のパス切替制御部650は、そのリード要求の発行元のポート430Aとポート管理テーブル600から、そのポート430Aに対応した宛先ディスク側MP550AのMP識別情報を把握し、そのMP識別情報をアドレスデコーダ451に通知する。
アドレスデコーダ451は、ポート選択制御部440からMP識別情報を受けたときは、その識別情報を持つMP550Aに対応するスタックポインタを選択し、スタックポインタテーブル453に対し、そのMP550についてのリード要求を送信する。
スタックポインタテーブル453は、そのMP550Aについてリード要求を受けたときは、リードポインタ及びライトポインタを1デクリメントし、更新後のポインタの値と、ポインタの更新対象となったMP550Aの識別情報とを、アドレス制御部456、バッファフル判定部454及び閾値判定部455に送信する。
アドレス制御部456は、スタックポインタテーブル453から受けたリードポインタの値と、ポートコントローラ410内に予め設定されているSM470のベースアドレスとに基づいて、SM470のどこからデータをリードすべきかを示すSMリードアドレスを算出する。アドレス制御部456は、算出されたSMリードアドレスをメモリ制御部460に通知する(S127)。
メモリ制御部460は、アドレス制御部456からSMリードアドレスを受けた場合、そのSMリードアドレスにあるデータα(すなわち、サブバッファ領域に格納されているLMライトアドレス及びメッセージのセット)を読み出し(S128)、それを、ポート選択制御部440を介して、上記リード要求の発行元のターゲットポート430Aに渡す。それにより、そのデータαが、ターゲットポート430Aの送信制御部432によって、所定フォーマットに変換されて(例えば、LMライトアドレス及びリードコマンドを含んだコマンド群に変換されて)、ディスクポート520Aの受信制御部516に送信される(S129)。
その後、上記ケース1と同様の流れで、ディスク側MP550A宛のリードコマンドが、そのMP550Aを介在することなく、そのMP550AのLM560Aにライトされ(S130)、MP550Aの自分のLM560Aに対するポーリングにより、MP550Aは、自分宛のリードコマンドを取得することができる。なお、その後は、上記第1ケースと同様の流れで、そのリードコマンドから認識されるLMリードアドレス内のメッセージが、リードコマンドの送信元MP360AのLM350Aに格納される。
以上が、本発明の第3実施例についての説明である。
なお、この第3実施例において、もし、コマンド受信側LMにおいて、コマンド送信側MPから発行されたリードコマンドから認識されるLMリードアドレスにメッセージが存在しない場合には、そのLMリードアドレスにメッセージが格納された後、直ちにメッセージが読み出されてコマンド送信側LMに向けて送信されても良い。
また、説明は省略したが、SMバッファ閾値テーブル314やSMバッファフルテーブル315に対する監視は、リードコマンドがSM470に格納された場合にも同様に行なわれても良い。すなわち、この第3の実施例でも、その監視結果に基づいて所定のステータスがコマンド送信側アダプタに発行され、そのステータスに基づいて、コマンド送信側アダプタにおいて、リードコマンドの発行頻度や発行量が制限される等の処理を行うことが可能である。
また、第3実施例において、例えば、アドレスマップ12は、どの自LMリードアドレスにリードコマンドが格納されたときにはどの自LMライトアドレスに格納したメッセージを返信するかを、そのアドレスマップ12を記憶するMPが認識することができるように作られていても良い。その場合は、リードコマンドに、LMリードアドレスは含まれなくても良い。
また、第3実施例において、コマンド送信側MPからコマンド受信側LMにリードコマンドが格納されること、及び/又は、コマンド受信側LMから読み出された、コマンド送信側MPにとってのリード情報(コマンド送信先にとってはライト情報)がコマンド送信側LMに格納されることは、上述した中継部マスタ方式で行われても良いし、第2実施例で説明した受信側マスタ方式で行われても良い。
以上、本発明の好適な幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、第1〜3実施例では、ホストコンピュータ200が出力したライト対象データ(例えば、ユーザに指定されたデータファイル)が、ホストアダプタ300、中継アダプタ400及びディスクアダプタ500を介して、物理ディスク群9上の物理的又は論理的な記憶領域に書き込まれたり、その記憶領域からリードされたリード対象データが、ディスクアダプタ500、中継アダプタ400及びホストアダプタ300を介して(厳密には、SM470、又は、ディスクアダプタ500とホストアダプタ300との間に備えられる別のメモリ(例えばキャッシュメモリ)を介して)、ホストコンピュータ200に送信されたりするが、LMに直接ライトされる情報は、MP間で受け渡しされる上記メッセージに限らず、上記ライト対象データやリード対象データであっても良い。その場合、通常、そのライト対象データやリード対象データのデータサイズはデータ毎に異なるが、MP間で受け渡しされる際には、所定サイズ毎に分割されてから受け渡しされても良い(所定サイズに満たない場合には、ダミーデータを追加して所定サイズにされても良い)。また、その際、例えば、直接LMライト方式として、上記別のメモリ(例えばキャッシュメモリ)を介さずにライト対象データ又はリード対象データが受け渡しされても良いし、関節LMライト方式として、上記別のメモリ(例えばキャッシュメモリ)に一時ライト対象データ又はリード対象データを格納した上で、ライト対象データ又はリード対象データが受け渡しされても良い。
また、例えば、上述したホストアダプタ300とディスクアダプタ500とをどのように接続するかには種々の接続バリエーションが考えられる。例えば、第1の接続バリエーションでは、図23に示すように、分離したモジュール(例えばディスクアレイ制御装置)1000、910、920にあるアダプタ300と500とが、中継アダプタ400を介して接続される。また、例えば、第2の接続バリエーションでは、図24に示すように、n枚のアダプタ300又は500を有する分離した複数のモジュールが、中継装置960を介して通信可能に接続される。また、例えば、第3の接続バリエーションでは、図25に示すように、1以上のホストアダプタ300と中継アダプタ400とを有する第1モジュール(例えばディスクアレイ制御装置)と、1以上のディスクアダプタ500と中継アダプタ400とを有する第2モジュール(例えばディスクアレイ制御装置)とがあり、複数のモジュールにそれぞれ搭載の複数の中継アダプタ400同士が接続される。
また、例えば、ディスクアレイ装置100では、第1実施例のように、各MPが能動的に他MPにライト情報(例えば、メッセージ、リード対象データ又はライト対象データ)を送信する第1モードと、第3実施例のように、各MPが他MPからのリードコマンドに応答してライト情報を送信する第2モードとが選択的に行われるようにしても良い。それら2種類のモードのうちのいずれを採用するかは、手動で又は自動で、所定タイミングに設定されても良い。
本発明の第一実施例に係るディスクアレイ制御装置の構成を示す。 各MP360(及び550)に格納されているアドレスマップの一例を示す。 ホストアダプタ300の機能及び構成を詳細に示すブロック図である。 中継アダプタ400の機能及び構成を詳細に示すブロック図である。 ディスクアダプタ500の機能及び構成を詳細に示すブロック図である。 ホストハブ310からポートコントローラ410に送られるコマンドの構成例を示す。 ポートコントローラ410からホストハブ310が受信するステータス情報の構成例を示す。 ポートコントローラ410からディスクハブ510が受信するコマンドの構成例を示す。 ポート選択制御部440の概要を示す。 ポート選択制御部440の具体例を示す。 直接LMライト方式のメッセージが送信される場合であって、そのメッセージがSM470のサブバッファ領域に一時格納されることが無い場合に、アダプタ300、400及び500が行うデータのやり取りの流れを示す。 直接LMライト方式のメッセージが送信される場合であって、そのメッセージがSM470のサブバッファ領域に一時格納される場合に、アダプタ300、400及び500が行うデータのやり取りの流れを示す。 アクセス制御部316がSMバッファフルテーブル315の情報に基づいてコマンドの送信を制御する場合の処理流れを示す。 SMバッファフルテーブル315でバッファフルがリセットされる場合の処理流れを示す。 本発明の第2実施例におけるディスクアダプタの構成例である。 リード割込みコマンドの構成例を示す。 受信側アダプタからのリード割込みコマンドに応答して中継アダプタから出力されるデータの構成例を示す。 第2実施例において、SM470上の所定サブバッファ領域に直接ライトコマンドが格納される場合の、直接ライトコマンドのやり取りの流れを示す。 図18におけるコマンド送受信のタイミングチャートを示す。 本発明の第3実施例におけるアドレスマップの一例。 第3実施例において、直接LMライト方式のリードコマンドがSM470のサブバッファ領域に一時格納されることが無い場合に行なわれるデータのやり取りの流れを示す。 第3実施例において、直接LMライト方式のリードコマンドが送信される場合であって、そのリードコマンドがSM470のサブバッファ領域に一時格納される場合に行なわれるデータのやり取りの流れを示す図。 ホストアダプタ300とディスクアダプタ500の第1の接続バリエーションの一例を示す図。 ホストアダプタ300とディスクアダプタ500の第2の接続バリエーションの一例を示す図。 ホストアダプタ300とディスクアダプタ500の第3の接続バリエーションの一例を示す図。
符号の説明
100 ディスクアレイ制御装置
200 ホストコンピュータ
600 磁気ディスク装置
300 ホストアダプタ
360 ホスト側マイクロプロセッサ
350 ホスト側ローカルメモリ
310 ホストハブ
500 ディスクアダプタ
550 ディスク側マイクロプロセッサ
560 ディスク側ローカルメモリ
510 ディスクハブ
400 中継アダプタ
410 ポートコントローラ
470 共有メモリ

Claims (21)

  1. 複数のプロセッサを用いて情報を処理する装置において、
    1又は複数の第1ローカルメモリを有する1以上の第1プロセッサと、
    ターゲットの第1プロセッサが有するターゲット第1ローカルメモリにライト情報を直接ライトする、及び/又は、前記ターゲット第1ローカルメモリからリード情報を直接リードする1以上の第2プロセッサと
    を備える情報処理装置。
  2. 前記1以上の第1プロセッサの各々についての第1ローカルメモリアドレスが記録された第1アドレスマップを記憶する第1アドレスマップ記憶手段を更に備え、
    前記1以上の第2プロセッサの各々が、前記第1アドレスマップから前記ターゲット第1プロセッサの第1ローカルメモリアドレスを取得し、前記取得した第1ローカルメモリアドレスに前記ライト情報をライトする、及び/又は、前記取得した第1ローカルメモリアドレスから前記リード情報をリードする、
    請求項1記載の情報処理装置。
  3. 前記1以上の第2プロセッサの各々が持つ1又は複数の第2ローカルメモリと、
    前記1以上の第1プロセッサの各々についての第1ローカルメモリアドレスが記録された第1アドレスマップを記憶する第1アドレスマップ記憶手段と、
    前記1以上の第2プロセッサの各々についての第2ローカルメモリアドレスが記録された第2アドレスマップを記憶する第2アドレスマップ記憶手段と
    を更に備え、
    前記1以上の第2プロセッサの各々が、前記ターゲット第1ローカルメモリのどこにライトするかの第1ローカルメモリライトアドレスを前記第1アドレスマップから取得し、前記取得した第1ローカルメモリライトアドレスにライト情報をライトし、
    前記ターゲット第1プロセッサが、前記第1ローカルメモリライトアドレスにライトされた前記ライト情報がリードコマンドの場合、前記リードコマンドに応答して、前記リードコマンドの発行元のターゲット第2プロセッサの第2ローカルメモリライトアドレスを前記第2アドレスマップから取得し、前記取得した第2ローカルメモリライトアドレスに、前記第1ローカルメモリ内の情報を読み出してライトする、
    請求項1記載の情報処理装置。
  4. 前記第2プロセッサ側から前記ライト情報を受けて前記ターゲット第1プロセッサ側に転送する中継デバイスを備え、
    前記中継デバイスは、中継メモリを備え、前記ライト情報の転送を行う場合、該ライト情報を前記中継メモリに一時的に格納してから前記転送を行うことと、該ライト情報を前記中継メモリに格納せずに前記転送を行うこととを選択的に実行する、
    請求項1記載の情報処理装置。
  5. 前記1以上の第1プロセッサを有する1又は複数の第1デバイスを備え、
    前記中継デバイスは、前記1又は複数の第1デバイスに接続され、前記受信したライト情報を、前記1又は複数の第1デバイスにそれぞれ送信する1又は複数の送信部を更に備え、或る第2デバイスから受信したライト情報を、前記ターゲット第1プロセッサを有するターゲット第1デバイスに送信する場合、そのライト情報を送信するターゲット送信部がビジー状態でなければ、前記受信したライト情報を前記中継メモリに格納せずに前記ターゲット送信部から前記ターゲット第1デバイスに送信し、前記ターゲット送信部がビジー状態であれば、前記ライト情報を前記中継メモリに一時的に格納し、前記ターゲット送信部のビジー状態が解除された場合に、前記中継メモリからライト情報を読み出して前記ターゲット送信部から前記ターゲット第1デバイスに送信する、
    請求項4記載の情報処理装置。
  6. 前記中継メモリには、1以上の送信元又は送信先にそれぞれ対応した1以上のライト情報格納領域が用意されており、
    前記中継デバイスは、受信した前記ライト情報を前記中継メモリに一時的に格納する場合、そのライト情報を、それの送信元又は送信先に対応したターゲットライト情報格納領域に格納し、その場合に、前記ターゲットライト情報格納領域に蓄積された情報量が第1の閾値を超えたならば、その旨を表す第1閾値超過通知を所定の第2デバイスに送信し、
    前記第1閾値超過通知を受けた第2デバイスは、前記ターゲットローカルメモリ又は前記ターゲット第1プロセッサに対するライト情報の発行頻度又は情報量を減らす、
    請求項4記載の情報処理装置。
  7. 前記中継メモリには、1以上の送信元又は送信先にそれぞれ対応した1以上のライト情報格納領域が用意されており、
    前記中継デバイスは、受信した前記ライト情報を前記中継メモリに一時的に格納する場合、該ライト情報を、それの送信元又は送信先に対応したターゲットライト情報格納領域に格納し、その場合に、前記ターゲットライト情報格納領域に蓄積された情報量が第2の閾値を超えたならば、その旨を表す第2閾値超過通知を所定の第2デバイスに送信し、
    前記第2デバイスは、前記ライト情報を前記ターゲットローカルメモリに直接ライトする直接ライト方式と、前記ライト情報を前記中継メモリに格納し前記ターゲット第1プロセッサが前記中継メモリから前記ライト情報を取得できるようにする間接ライト方式とを選択的に実行するようになっており、前記第2閾値超過通知を受けない場合は、前記直接ライト方式で前記ライト情報を送信し、前記第2閾値超過通知を受けた場合は、前記間接ライト方式で前記ライト情報を送信する、
    請求項4記載の情報処理装置。
  8. 前記中継デバイスは、前記ターゲットライト情報格納領域に蓄積された情報量が、前記第1の閾値よりも大きい第2の閾値を超えたならば、その旨を表す第2閾値超過通知を前記第2デバイスに送信し、
    前記第2デバイスは、前記ライト情報を前記ターゲットローカルメモリに直接ライトする直接ライト方式と、前記ライト情報を前記中継メモリに格納し前記ターゲット第1プロセッサが前記中継メモリから前記ライト情報を取得できるようにする間接ライト方式とを選択的に実行するようになっており、前記第1閾値超過通知を受けても前記第2閾値超過通知を受けない場合は、前記直接ライト方式で前記ライト情報を送信し、前記第2閾値超過通知を受けた場合は、前記直接ライト方式を止めて前記間接ライト方式で前記ライト情報を送信する、
    請求項6記載の情報処理装置。
  9. 前記第2閾値超過通知を受けた第2デバイスが前記間接ライト方式を選択した後、以下の(1)及び(2)の場合、
    (1)前記ターゲットライト情報格納領域の情報量が前記第2の閾値よりも小さい第3の閾値以下になった場合、
    (2)前記間接ライト方式が選択されている状態が一定時間経過した場合
    の少なくとも1つの場合に、該第2デバイスは前記間接ライト方式を止めて前記直接ライト方式を選択する、
    請求項7記載の情報処理装置。
  10. 前記1以上の第1プロセッサを有する1又は複数の第1デバイスと、
    前記1以上の第2プロセッサを有する1又は複数の第2デバイスと、
    前記第2デバイスから前記ターゲット第1プロセッサを有する前記第1デバイスに前記ライト情報を中継する中継デバイスと
    を備え、
    前記中継デバイスは、
    前記1又は複数の第1デバイスにそれぞれ情報を送信する1又は複数の送信部と、
    前記1又は複数の第2デバイスからそれぞれ情報を受信する1又は複数の受信部と
    を備え、前記1又は複数の送信部の各々と、前記1又は複数の受信部の各々とが互いに独立して動作する、
    請求項1記載の情報処理装置。
  11. 前記1以上の第1プロセッサの各々のローカルメモリには、前記1以上の第2プロセッサにそれぞれ対応した1以上のローカル格納領域が用意されており、
    前記1以上の第2プロセッサの各々は、その第2プロセッサに対応した前記ローカル格納領域のローカルメモリアドレスが各第1プロセッサ毎に記録されたアドレスマップを記憶しており、前記ライト情報をターゲットの第1プロセッサのローカルメモリに書き込む場合、前記アドレスマップから前記ターゲット第1プロセッサに対応したローカルメモリアドレスを取得し、前記取得したローカルメモリアドレスに前記ライト情報をライトする、
    請求項1記載の情報処理装置。
  12. 前記ターゲット第1プロセッサのローカルメモリアドレスを有する前記ライト情報を前記第2プロセッサ側から受信して前記ターゲット第1プロセッサ側に転送する中継デバイスを備え、
    前記1以上の第2プロセッサの各々は、前記中継デバイスを介して、論理的な又は物理的な1以上のパスでそれぞれ前記1以上の第1プロセッサと通信可能に接続されており、
    前記中継デバイスは、前記1以上のパスにそれぞれ対応付けられた1以上のローカルメモリアドレスを各第2プロセッサ毎に記憶しており、前記受信したライト情報の転送を行う場合、そのライト情報に含まれている前記ローカルメモリアドレスに対応したターゲットパスを特定し、特定されたターゲットパスを介して前記ライト情報を前記ターゲット第1プロセッサ側に転送する、
    請求項1記載の情報処理装置。
  13. 複数のマイクロプロセッサと物理的又は論理的な記憶装置とを備え、前記複数のマイクロプロセッサを用いて、上位装置からの情報を前記記憶装置に記憶させることの記憶制御を行う記憶制御装置において、
    1又は複数の第1ローカルメモリを有する1以上の第1マイクロプロセッサと、
    1以上の第2マイクロプロセッサと、
    前記1以上の第1マイクロプロセッサの各々についての第1ローカルメモリアドレスが記録された第1アドレスマップを記憶する第1アドレスマップ記憶部と
    を備え、
    前記1以上の第2マイクロプロセッサの各々が、ターゲット第1ローカルメモリのどこにライトするかの第1ローカルメモリライトアドレスを前記第1アドレスマップから取得し、前記取得した第1ローカルメモリライトアドレスにライト情報をライトする、
    記憶制御装置。
  14. 前記1以上の第1マイクロプロセッサを搭載した1又は複数の第1デバイスと、
    前記1以上の第2マイクロプロセッサを搭載した1又は複数の第2デバイスと、
    前記1又は複数の第1デバイスと前記1又は複数の第2デバイスと間の通信を中継する中継デバイスと
    を備え、
    前記第1ローカルメモリには、前記1以上の第2マイクロプロセッサにそれぞれ対応した1以上のローカル格納領域が用意されており、
    前記第1アドレスマップには、前記1以上の第1マイクロプロセッサにそれぞれ対応した1以上のローカル格納領域の第1ローカルメモリアドレスが記録されており、
    前記1以上の第2マイクロプロセッサの各々は、前記中継デバイスを介して、論理的な又は物理的な1以上のパスでそれぞれ前記1以上の第1マイクロプロセッサと接続可能であり、前記ライト情報を出力する際、前記第1アドレスマップから前記ターゲット第1プロセッサに対応した第1ローカル格納領域の第1ローカルメモリアドレスを取得して、前記取得した第1ローカルメモリアドレスを含んだ第1送信先情報を有するライト情報を出力し、
    前記中継デバイスは、前記1以上のパスにそれぞれ対応付けられた1以上の第2送信先情報を記憶しており、前記受信したライト情報の転送を行う場合、前記第1と第2の送信先情報に基づいてターゲットパスを特定し、特定されたターゲットパスを介して前記ライト情報を前記ターゲット第1デバイスに転送し、
    前記ターゲット第1デバイスは、前記中継デバイスから受信したライト情報を、そのライト情報に含まれている前記第1ローカルメモリアドレスに書き込む、
    請求項13記載の記憶制御装置。
  15. 前記中継デバイスは、中継メモリを備え、前記ライト情報の転送を行う場合、そのライト情報を前記中継メモリに一時的に格納してから前記転送を行うことと、そのライト情報を前記中継メモリに格納せずに前記転送を行うこととを選択的に実行する、
    請求項14記載の記憶制御装置。
  16. 前記中継デバイスは、前記1又は複数の第1デバイスに通信可能に接続され、前記受信したライト情報を前記1又は複数の第1デバイスにそれぞれ送信する1又は複数の送信部を更に備え、或る第2デバイスから受信したライト情報を、前記ターゲット第1デバイスに送信する場合、前記ターゲットパスがビジー状態でなければ、前記受信したライト情報を前記中継メモリに格納せずに前記ターゲットパスを介して前記ターゲット第1デバイスに送信し、前記ターゲットパスがビジー状態であれば、前記ライト情報を前記中継メモリに一時的に格納し、前記ターゲットパスのビジー状態が解除された場合に、前記中継メモリからライト情報を読み出して前記ターゲットパスを介して前記ターゲット第1デバイスに送信する、
    請求項14記載の記憶制御装置。
  17. 前記中継メモリには、ライト情報の1以上の送信元又は送信先にそれぞれ対応した1以上のライト情報格納領域が用意されており、
    前記中継デバイスは、受信した前記ライト情報を前記中継メモリに一時的に格納する場合、そのライト情報を、それの送信元又は送信先に対応したターゲットライト情報格納領域に格納し、その場合に、前記ターゲットライト情報格納領域に蓄積された情報量が第1の閾値を超えたならば、その旨を表す第1閾値超過通知を所定の第2デバイスに送信し、
    前記第1閾値超過通知を受けた第2デバイスは、前記ターゲットローカルメモリ又は前記ターゲット第1マイクロプロセッサに対するライト情報の発行頻度又は情報量を減らす、
    請求項15記載の記憶制御装置。
  18. 前記中継デバイスは、
    前記1又は複数の第1デバイスにそれぞれ情報を送信する1又は複数の送信部と、
    前記1又は複数の第2デバイスからそれぞれ情報を受信する1又は複数の受信部と
    を備え、前記1又は複数の送信部の各々と、前記1又は複数の受信部の各々とが互いに独立して動作する、
    請求項14記載の記憶制御装置。
  19. 前記中継デバイスは、前記中継メモリとは別の受信バッファを備えており、
    前記1又は複数の受信部の各々は、前記第2デバイスから受信したライト情報を一旦前記受信バッファに格納する、
    請求項18記載の記憶制御装置。
  20. 複数のマイクロプロセッサと物理的又は論理的な記憶装置とを備え、前記複数のマイクロプロセッサを用いて、上位装置からの情報を前記記憶装置に記憶させることの記憶制御を行う記憶制御装置において、
    1又は複数の第1ローカルメモリを有する1以上の第1マイクロプロセッサと、
    1又は複数の第2ローカルメモリを有する1以上の第2マイクロプロセッサと、
    前記1以上の第1マイクロプロセッサの各々についての第1ローカルメモリアドレスが記録された第1アドレスマップを記憶する第1アドレスマップ記憶手段と、
    前記1以上の第2マイクロプロセッサの各々についての第2ローカルメモリアドレスが記録された第2アドレスマップを記憶する第2アドレスマップ記憶手段と
    を備え、
    前記1以上の第2マイクロプロセッサの各々が、ターゲット第1ローカルメモリのどこにライトするかの第1ローカルメモリライトアドレスを前記第1アドレスマップから取得し、前記取得した第1ローカルメモリライトアドレスにリードコマンドをライトし、
    前記ターゲット第1マイクロプロセッサが、前記第1ローカルメモリライトアドレスにライトされた前記リードコマンドに応答して、前記リードコマンドの発行元のターゲット第2マイクロプロセッサの第2ローカルメモリライトアドレスを前記第2アドレスマップから取得し、前記取得した第2ローカルメモリライトアドレスに、前記第1ローカルメモリ内のリード情報を読み出してライトする、
    記憶制御装置。
  21. 複数のプロセッサを用いて情報を処理する方法において、
    1以上の第2プロセッサの各々が、1又は複数のローカルメモリを有する1以上の第1プロセッサの各々についてのローカルメモリアドレスが記録されたアドレスマップから、ターゲット第1プロセッサのローカルメモリアドレスを取得するステップと、
    前記1以上の第2プロセッサの各々が、前記取得したローカルメモリアドレスにライト情報をライトする、及び/又は、前記取得したローカルメモリアドレスからリード情報をリードするステップと
    を有する情報処理方法。
JP2003396786A 2003-11-27 2003-11-27 複数のプロセッサを用いて情報処理を行う装置及び方法 Expired - Fee Related JP4376040B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2003396786A JP4376040B2 (ja) 2003-11-27 2003-11-27 複数のプロセッサを用いて情報処理を行う装置及び方法
US10/767,074 US7111119B2 (en) 2003-11-27 2004-01-30 Device and method for performing information processing using plurality of processors
DE102004013126A DE102004013126A1 (de) 2003-11-27 2004-03-17 Vorrichtung und Verfahren zum Ausführen einer Informationsverarbeitung und Verwendung mehrerer Prozessoren
GB0407066A GB2408600B (en) 2003-11-27 2004-03-29 Device and method for performing information processing using plurality of processors
FR0404015A FR2863072B1 (fr) 2003-11-27 2004-04-16 Dispositif et procede pour executer un traitement d'informations en utilisant une pluralite de processeurs

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
JP2005157830A true JP2005157830A (ja) 2005-06-16
JP4376040B2 JP4376040B2 (ja) 2009-12-02

Family

ID=32291117

Family Applications (1)

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

Country Status (5)

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

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217214A (ja) * 2007-03-01 2008-09-18 Nec Corp コンピュータシステム、ホストコンピュータ
JP2009282648A (ja) * 2008-05-21 2009-12-03 Fujitsu Ltd ストレージ装置、ディスクコントローラ、及びコマンド発行制御方法
JP2010191818A (ja) * 2009-02-19 2010-09-02 Canon Inc 情報処理装置及びその制御方法
JP2013073425A (ja) * 2011-09-28 2013-04-22 Kyocera Document Solutions Inc 情報処理装置及び情報処理方法
JP2014063518A (ja) * 2013-12-04 2014-04-10 Hitachi Ltd ストレージシステム、ストレージシステム管理方法、及び計算機システム
US8918551B2 (en) 2007-04-23 2014-12-23 Hitachi, Ltd. Storage system
WO2015008352A1 (ja) * 2013-07-17 2015-01-22 株式会社日立製作所 ストレージ装置及びコマンド制御方法
KR20150052262A (ko) * 2012-09-21 2015-05-13 지티이 코포레이션 서비스 처리 방법 및 장치
WO2018020630A1 (ja) * 2016-07-28 2018-02-01 株式会社日立製作所 計算機システム、処理方法、およびドライバプログラム
JP7484633B2 (ja) 2020-09-30 2024-05-16 株式会社デンソー 共用ストレージ管理装置及び共用ストレージ管理方法

Families Citing this family (28)

* 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 パナソニック株式会社 画像データ転送方法、画像処理装置、及び撮像システム
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
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
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
US9578401B2 (en) * 2013-07-24 2017-02-21 Commscope Technologies Llc Systems and methods for detecting component rotation within a communication assembly
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
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
US11245572B1 (en) 2017-01-31 2022-02-08 Barefoot Networks, Inc. Messaging between remote controller and forwarding element
US10757028B1 (en) 2017-04-23 2020-08-25 Barefoot Networks, Inc. Configurable forwarding element deparser
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
US11000027B2 (en) * 2017-10-17 2021-05-11 Geka Solutions Pty Ltd Pest control system
US11068581B1 (en) * 2018-01-26 2021-07-20 EMC IP Holding Company LLC Techniques for establishing host connectivity
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 上海金卓网络科技有限公司 一种处理器间的交互控制方法、装置、设备及存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US188085A (en) * 1877-03-06 Improvement in bed-slats
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 共有メモリアクセス方式
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
GB8914352D0 (en) 1989-06-22 1989-08-09 Int Computers Ltd Multiprocessor data processing system
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
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
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
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
DE69715203T2 (de) 1997-10-10 2003-07-31 Bull Sa Ein Datenverarbeitungssystem mit cc-NUMA (cache coherent, non-uniform memory access) Architektur und im lokalen Speicher enthaltenem Cache-Speicher für Fernzugriff
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

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217214A (ja) * 2007-03-01 2008-09-18 Nec Corp コンピュータシステム、ホストコンピュータ
US8918551B2 (en) 2007-04-23 2014-12-23 Hitachi, Ltd. Storage system
JP2009282648A (ja) * 2008-05-21 2009-12-03 Fujitsu Ltd ストレージ装置、ディスクコントローラ、及びコマンド発行制御方法
JP4542173B2 (ja) * 2008-05-21 2010-09-08 富士通株式会社 ストレージ装置、ディスクコントローラ、及びコマンド発行制御方法
US8145834B2 (en) 2008-05-21 2012-03-27 Fujitsu Limited Storage apparatus, disk controller, and command issue control method
JP2010191818A (ja) * 2009-02-19 2010-09-02 Canon Inc 情報処理装置及びその制御方法
JP2013073425A (ja) * 2011-09-28 2013-04-22 Kyocera Document Solutions Inc 情報処理装置及び情報処理方法
KR101706876B1 (ko) 2012-09-21 2017-02-14 지티이 코포레이션 서비스 처리 방법 및 장치
KR20150052262A (ko) * 2012-09-21 2015-05-13 지티이 코포레이션 서비스 처리 방법 및 장치
JP2015537277A (ja) * 2012-09-21 2015-12-24 ゼットティーイー コーポレーションZte Corporation サービス処理方法及び装置
WO2015008352A1 (ja) * 2013-07-17 2015-01-22 株式会社日立製作所 ストレージ装置及びコマンド制御方法
US9134920B2 (en) 2013-07-17 2015-09-15 Hitachi, Ltd. Storage apparatus and command control method
JP2014063518A (ja) * 2013-12-04 2014-04-10 Hitachi Ltd ストレージシステム、ストレージシステム管理方法、及び計算機システム
WO2018020630A1 (ja) * 2016-07-28 2018-02-01 株式会社日立製作所 計算機システム、処理方法、およびドライバプログラム
US11061851B2 (en) 2016-07-28 2021-07-13 Hitachi, Ltd. Computer system, processing method, and driver program
JP7484633B2 (ja) 2020-09-30 2024-05-16 株式会社デンソー 共用ストレージ管理装置及び共用ストレージ管理方法

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4376040B2 (ja) 複数のプロセッサを用いて情報処理を行う装置及び方法
JP4445998B2 (ja) 調停パケットプロトコルを有するメモリ調停システムおよび方法
US7865652B2 (en) Power control by a multi-port bridge device
JP4284621B2 (ja) メモリハブアーキテクチャを有するメモリモジュールへのメモリアクセスを制御する方法およびシステム
US7633856B2 (en) Multi-node system, internodal crossbar switch, node and medium embodying program
CN101452369B (zh) 用于控制usb大容量存储设备的逻辑单元的方法和系统
JP4786255B2 (ja) ストレージシステム及び記憶制御方法
US10970237B2 (en) Storage system
US20040168009A1 (en) Universal serial bus hub with shared high speed handler
JP2003208267A5 (ja)
JP2007256993A (ja) 物理リンクの割当てを制御するコンピュータシステム及び方法
US20080195831A1 (en) Data transfer apparatus and data transfer method
JP4477437B2 (ja) ストレージ装置、そのクラスタ間データ通信方法、及びそのクラスタ通信制御プログラム
WO2012127529A1 (en) Storage apparatus and failure detection method
WO2006114822A1 (ja) Dmaコントローラ、ノード、データ転送制御方法、及びプログラム
JP2011070655A (ja) 情報処理装置、メモリダンプシステムおよびメモリダンプ方法
AU2015402888B2 (en) Computer device and method for reading/writing data by computer device
JP4474356B2 (ja) コンピュータシステムおよびストレージ仮想化装置
JP2008107997A (ja) データ通信方法、データ通信装置及びデータ通信システム
US7336657B2 (en) Inter-nodal data transfer system and data transfer apparatus
JP5482263B2 (ja) エンドポイント共有システムおよびデータ転送方法
US7930438B2 (en) Interrogate processing for complex I/O link
JP2011076174A (ja) エンドポイント共有システム、代理アクセス方法および代理アクセスプログラム
JP6593222B2 (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
JP2014146180A (ja) パス制御装置、パス制御方法、およびパス制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061023

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20061023

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080926

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090908

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090908

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120918

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120918

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130918

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees