JP2004054916A - プロセッサ間のハードウェア支援通信を実行する方法 - Google Patents
プロセッサ間のハードウェア支援通信を実行する方法 Download PDFInfo
- Publication number
- JP2004054916A JP2004054916A JP2003154109A JP2003154109A JP2004054916A JP 2004054916 A JP2004054916 A JP 2004054916A JP 2003154109 A JP2003154109 A JP 2003154109A JP 2003154109 A JP2003154109 A JP 2003154109A JP 2004054916 A JP2004054916 A JP 2004054916A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- information
- coprocessor
- memory
- mirror 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99955—Archiving or backup
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
Abstract
【課題】メッセージ構築に伴うオーバヘッドによって別のプロセッサを採用する利益が低減しないようにする。
【解決手段】本発明の方法および装置は、プロセッサ間のハードウェア支援通信を実行する。第1のプロセッサからの命令に応じて、第1のコプロセッサはミラーメモリの第1のブロックに情報を書き込む。ミラーメモリは維持され、第2のコプロセッサがミラーメモリの第2のブロックから情報を読み出すことができるようになる。情報は第2のプロセッサがアクセス可能なメモリに保存される。情報は第2のプロセッサによってアクセスされる。
【選択図】図6
【解決手段】本発明の方法および装置は、プロセッサ間のハードウェア支援通信を実行する。第1のプロセッサからの命令に応じて、第1のコプロセッサはミラーメモリの第1のブロックに情報を書き込む。ミラーメモリは維持され、第2のコプロセッサがミラーメモリの第2のブロックから情報を読み出すことができるようになる。情報は第2のプロセッサがアクセス可能なメモリに保存される。情報は第2のプロセッサによってアクセスされる。
【選択図】図6
Description
【0001】
【発明の属する技術分野】
この発明は、プロセッサ間のハードウェア支援通信を有するRAID(redundant array of inexpensive disks)装置に関する。
【0002】
【従来の技術】
大量のデータ記憶という増大し続けるニーズを満たすべく、RAID装置の採用が増えている。従来、RAID装置内において、多数のディスクを動作させるために、それぞれが少なくとも1つのプロセッサを有する大量のコントローラ・カードを必要とした。マルチプロセッサ・アプリケーションに関連する共通の課題の1つは、第1のプロセッサから第2のプロセッサに作業を転送するのに時間がかかることに関連する性能に与える影響である。
【0003】
【発明が解決しようとする課題】
対称型マルチプロセッシング(SMP)の概念に基づいて構築されたシステムでは、すべてのプロセッサが同じメモリのビューを見る。SMPシステムでは、プロセッサは、メモリ内容をメッセージの形態にパッキングして他のプロセッサに渡すために時間を費やす必要がない。しかし、各プロセッサの状態を追跡するために、およびメモリがコヒーレントな状態を維持することを保証するために、特別なハードウェア要素がSMPシステムに追加される。結果として、これらのシステムは非常に高価となり、また構築が困難となる。SMPシステムは、プロセスが追加されるに従って、ますます複雑で高価で非効率となる。例えば、2つまたは4つのプロセッサに関連する困難は、8つ以上のプロセッサを有するシステムの困難には複雑さにおいて到底及ばない。従って、SMPテクノロジでは、コヒーレンシ動作に関連したシステム全体に渡ってのボトルネックが発生し、より多くのプロセッサをシステムに追加することで実現される全般的な利益が低減する。従って、すべてのプロセッサが同一のメモリのビューを有することを可能にするマルチプロセッサ・システムは、複雑で費用がかかる場合がある。さらに、これらの欠点は、プロセッサの数の増加に従って増大する可能性がある。
【0004】
マルチプロセッサ・アーキテクチャの他の形態では、協調(cooperating)プロセッサは共通のメモリのビューを共有しない。例えばUNIX環境では、メッセージは「リモートシェル」の形態で構成されプロセッサ間で伝送される。「リモートシェル」が全体のパフォーマンスの向上に役立つためには、メッセージを小さくかつ迅速に構成する必要があるが、大量の作業を伴う必要もある。転送される作業の量は、メッセージの構築に必要な作業よりずっと多くなるに違いない。このテクノロジによって構築されたシステムが成功するためには、メッセージの形成に伴うオーバヘッドによって別のプロセッサを採用する利益が低減しないように注意を払う必要がある。
【0005】
【課題を解決するための手段】
本発明の方法および装置は、プロセッサ間のハードウェア支援通信を実行する。第1のプロセッサからの命令に応じて、第1のコプロセッサは、ミラーメモリ(mirrored memory)の第1のブロックに情報を書き込む。ミラーメモリは維持され、第2のコプロセッサがミラーメモリの第2のブロックから情報を読み出すことができるようになる。情報は、第2のプロセッサがアクセス可能なメモリに保存される。情報は、第2のプロセッサによってアクセスされる。
【0006】
【発明の実施の形態】
本発明の方法および装置は、プロセッサ間のハードウェア支援通信を実行する。第1のプロセッサからの命令に応じて、第1のコプロセッサは、ミラーメモリの第1のブロックに情報を書き込む。ミラーメモリは維持され、第2のコプロセッサがミラーメモリの第2のブロックから情報を読み出すことができるようになる。情報は、第2のプロセッサがアクセス可能なメモリに保存される。情報は、第2のプロセッサによってアクセスされる。
【0007】
図1は、ホスト104によってサポートされるRAID装置102がネットワーク108を介してクライアント106にサービスする環境100を示す。RAID装置は、ハードウェア支援プロセッサ間通信によって複数のプロセッサがより効率的に協調することを可能にするアーキテクチャを採用する。
【0008】
図2は、例示的なRAID装置102のエンクロージャ202内の詳細を示す。第1および第2のコントローラ・カード204、206が、ファイバ・チャネルまたは同様のテクノロジによる情報導線(conductor)210、212を使用して、複数のディスクドライブ208の動作を制御する。図3から分かるように、ミラーバス214と追加の通信バス216、218により、各コントローラ・カード内に含まれるアレイASICは、コントローラ・カードに含まれるミラーメモリを維持することができる。オン・オフ制御および電源切換ライン220、222により、RAID装置の動作に対する制御が可能となる。電源および冷却モジュール224、226は、RAID装置のエンクロージャ内の装置に対し5ボルト(228)および12ボルト(230)を供給する。
【0009】
図3は、RAID装置内に位置するコントローラ・カード204内の詳細を示す拡大ブロック図である。特定の技術は図3に示すバス、メモリ技術等の特定のコンポーネントと同一視されるが、多くの環境において、別のコンポーネントおよび別の技術で代替することができる。
【0010】
PCIバス302は、プロセッサ304と、コプロセッサ306と、アレイASIC308との間の通信を容易にする。アレイASIC308は、さらにミラーメモリ310と通信する。バス303は、プロセッサ304と、フラッシュメモリ312と、ローカル・メモリ314との間の通信を容易にする。
【0011】
多くの異なる装置を利用して、ASIC(特定用途向け集積回路)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)等のコプロセッサ機能を提供することができる。ミラーメモリは、NVRAM(不揮発性RAM)技術を利用することができる。ローカル・メモリ314は、ECC SDRAM(誤り訂正符号同期ダイナミックRAM)を利用できる。
【0012】
アレイASIC308は、ミラーバス214と通信バス216、218によって、他のコントローラ・カード内に位置する同様に配置されたアレイASICと通信する。アレイASICは、PCIバス316によって、ホストコンピュータ(図1のホスト104等)と通信するファイバ・チャネルI/Oプロセッサ318、320と通信し、また、ディスク208(図2に示す)と通信するファイバ・チャネル・ポート・バイパス322と通信することができる。
【0013】
アレイASIC308は、他のコントローラ・カードに位置する同様に配置されたアレイASICと通信することができるので、ミラーメモリを維持することができる。ミラーメモリの維持には、ミラーメモリ310の任意のブロックに対して行われた変更をミラーメモリ310の他のすべてのブロックに対して行うことが含まれる。典型的に、ミラーメモリの1つのブロックに関連するアレイASIC308は、ミラーメモリに対して変更が行われた(アレイASIC自体による等)ことを認識し、その変更を、ミラーメモリの別のブロックにそれぞれ関連付けられている他のアレイASICに通信する。そして、他のアレイASICは、ミラーメモリのそれぞれのブロックにおいてその変更を行う。従って、複数のブロックを含むミラーメモリが維持される。
【0014】
図4は、ローカル・メモリ314に含まれコントローラ・カード上のプロセッサ304(図3)によって実行される、例示的なソフトウェア構造を示すブロック図(400)である。RAID環境において、プロセッサ304は、I/Oプロセッサ318から情報を受け取る。このI/Oメッセージはリモート・クライアントによって開始することができる。このリモート・クライアントは、RAID装置と通信するホスト・コンピュータに対して要求を送信する。多くの場合、プロセッサ304上で動作するフロント・ソフトウェア402は、I/O要求を、RAID装置内の別のコントローラ・カードに関連するディスクに関する情報に関連するものとして識別する。従って、フロント・ソフトウェア402は、I/O要求をパッケージングし、それをRAID装置内の適当なコントローラ・カード上の適当なプロセッサに送信する。こうして、ホスト・コンピュータは、クライアント・コンピュータからI/O要求を受け取ると、RAID装置内の都合のよいコントローラ・カードに対してI/O要求を送信する。受信側コントローラ・カードは、フロント・ソフトウェア402を使用して、I/O要求を正しいコントローラ・カードに転送する。
【0015】
ミドル・ソフトウェア404は、RAIDストライプを操作(すなわち、セグメント内の関連データを複数のディスクに渡って分散させて、セグメントを同時に読み出し/書き込みできるようにする)したり、消失データをミラーディスクから再構築するタスクを処理する等の、RAID装置の動作に関連するタスクを実行する。
【0016】
バック・ソフトウェア406は、低レベル読み出し/書き込みタスクを処理する。例えば、バック・ソフトウェアは、特定のディスクの特定のセクタに行くこと、データを読み出すこと、そのデータを特定のメモリ位置に置くことといったタスクの実施をサポートする。
【0017】
図5は、図3のコントローラ・カードのような単一のコントローラ・カード上の重要なコンポーネントの関係(500)を示す。この図では、第1のコントローラ・カードと第2のコントローラ・カードの間の情報の転送に関連する種々のソフトウェア構造が追加されている。(図2に示したような)RAID環境内では、複数のコントローラ・カードが通信する。通信の間、情報は支援エンジンによって第1のコントローラ・カードに配置された第1のプロセッサから第2のコントローラ・カードに配置された第2のプロセッサに転送される。各コントローラ・カード上のコプロセッサとミラーメモリとを含む支援エンジンは、受信側プロセッサに対してローカルなメモリ内に定義された待ち行列内の宛先に情報を再配置する。支援エンジンの動作には第1および第2のコプロセッサが含まれ、これらのプロセッサは協働して、ミラーメモリ内に置かれた情報をマーシャリング(marshaling)およびデマーシャリングすることによってコントローラ・カード間で情報を移動させる。図2および図3に示したようなミラーメモリは、アレイASIC308によって更新され維持される。
【0018】
第1のプロセッサ304は、ローカル・メモリ314内に定義された循環バッファ502を使用して、第1のコプロセッサ306に対しコマンドを発行するように構成される。コプロセッサとミラーメモリは、コントローラ・カード内およびコントローラ間で情報を転送する支援エンジンを形成する。コプロセッサは、2つの主要な機能、すなわち情報の送信と受信をサポートする。情報送信機能はプロセッサからのコマンドの受信をサポートし、これはアドレス・ポインタ504とコマンド・タイプ506を含むことができる。コマンド・タイプは、アドレス・ポインタによってそのコマンドに関連付けられた情報をマーシャリングする方法をコプロセッサに命令する。コプロセッサは、マーシャリングをすると、その情報をミラーメモリ310に配置された循環バッファ508に転送する。
【0019】
ミラーメモリがアレイASIC308によってミラーリングされるので、ミラーメモリの1つのブロックに書込まれた情報を、ミラーメモリの別のブロックを見ているRAID装置内の他のコントローラ・カードに配置されたコプロセッサが見ることができる。従って、受信側のコプロセッサ、すなわち情報が向けられたコプロセッサは、その情報受信機能を呼び出し、ミラーメモリから情報をコピーする。次に、受信側コプロセッサは適宜情報をデマーシャリングし、これによってローカル・プロセッサを考慮したタスクを形成する。タスクは、ローカル・プロセッサのオペレーティング・システム512によって管理される待ち行列510内に配置される。間隔を置いて、受信側プロセッサのオペレーティング・システム内のディスパッチャ・ソフトウェアは、ローカル・プロセッサの注意のために待ち行列から作業を取り出す。
【0020】
上述したように、第1のコントローラ・カード上のコプロセッサ306は、複数のコプロセッサが見ることができるミラーメモリ310内に情報を渡すことにより、第2のコントローラ・カード上の同様のコプロセッサと通信することができる。代替的に、第1のコントローラ・カード上の第1のコプロセッサ306は、第1のコントローラ・カード上のアレイASIC308に情報を渡すことにより、第2のコントローラ・カード上の第2のコプロセッサと通信することができる。そして、M−Busまたは同様の機能により第2のコントローラ・カード上の第2のアレイASICに情報を渡すことができる。その後、第2のアレイASICは、第2のコプロセッサに情報を渡すことができる。このようにして、コプロセッサはミラーメモリを使用せずに通信することができる。
【0021】
図6のフローチャートは、第1のプロセッサと第2のプロセッサの間で情報を転送する方法600を示す。ここでは、第1および第2のプロセッサは、RAID装置内の第1および第2のコントローラ・カードにそれぞれ配置されている。本方法の要素は、ディスク、ROMまたは他のメモリ装置等のプロセッサ読取可能媒体上に定義されたプロセッサ読取可能命令の実行等の、任意の望ましい方法で実行可能である。また、どのブロックに記述された動作も他のブロックに記述された動作と並列に実行したり、交互に実行したり、または複数の他のブロックに関連するアクションと一緒に分布させたりすることができる。
【0022】
ブロック602で、第1のプロセッサからの命令に応じて、第1のコプロセッサを使用してミラーメモリの第1のブロックに情報が書き込まれる。一般的なアプリケーションでは、情報は第2のプロセッサによって実行されるタスクを含む。望ましい場合、第1のコプロセッサにより任意の望ましい様式に情報をマーシャリングすることができる。多くの場合、情報はミラーメモリ内に構築された循環バッファに書き込まれる。
【0023】
ブロック604で、アレイASICをミラーメモリの各ブロックに関連付けることによってミラーメモリが維持される。各アレイASICは、ミラーメモリの他のブロックに関連するアレイASICと通信する。従って、ミラーメモリの1つのブロックが変更されると、関連するアレイASICは他のアレイASICに変更を伝え、他のアレイASICはミラーメモリのそれぞれの領域を更新する。
【0024】
ブロック606で、第2のコプロセッサは、関連するアレイASICによって更新されたミラーメモリの第2のブロックから情報を読み出す。第1のコプロセッサが情報をマーシャリングした場合、第2のコプロセッサは情報をデマーシャリングする。
【0025】
ブロック608で、第2のプロセッサに対してローカルなメモリに定義された待ち行列に情報が保存される。待ち行列は、図5のオペレーティング・システム512内に含まれるディスパッチャ・コードに関連する待ち行列等、第2のプロセッサのオペレーティング・システム内に存在することができ、またはそれによって管理されることが可能である。
【0026】
ブロック610で、第2のコプロセッサは待ち行列プロデューサ(producer:生産者)であるように構成され、第2のプロセッサは待ち行列コンシューマ(consumer:消費者)であるように構成される。待ち行列は、コプロセッサが待ち行列に書き込み可能でありかつプロセッサが待ち行列から読み出し可能であるように、オペレーティング・システムによって管理されたメモリ内に構成される。
【0027】
ブロック612で、第2のプロセッサにより情報がアクセスされる。このアクセスは、第2のプロセッサによって実行されるオペレーティング・システム・コード内に存在するディスパッチャ・コードを使用することによって実行することができる。
【0028】
図7のフローチャートは、作業を共有するために、プロセッサ、コプロセッサおよびASICをそれぞれ含む複数のグループを構成する方法700を示す。例えば、図5は、プロセッサ304、コプロセッサ306およびASIC308を含むこのようなグループを示しており、これは図2および図3に示したようなコントローラ・カード204に保持することができる。本方法の要素は、ディスク、ROMまたは他のメモリ装置等のプロセッサ読取可能媒体上に定義されたプロセッサ読取可能命令の実行等の、任意の望ましい方法で実行可能である。また、どのブロックに記述された動作も他のブロックに記述された動作と並列に実行したり、交互に実行したり、または複数の他のブロックに関連するアクションと一緒に分布させたりすることができる。
【0029】
ブロック702で、1つのコントローラ・カード内に含まれるミラーメモリの1つのブロックにおける変更が、RAID装置内の他のコントローラ・カード内に含まれるミラーメモリのブロックに反映されるように、ミラーメモリが維持される。ミラーメモリは、複数のアレイASIC間で情報を渡すことによって維持され、各アレイASICは、ミラーメモリの複数のセクションの各々と関連付けられる。これによって、アレイASICは、ミラーメモリの1つのブロックに対して行われた変更をミラーメモリの他のすべてのブロックに伝えることができる。
【0030】
ブロック704で、ミラーメモリを使用してコプロセッサ間で情報が転送される。ミラーメモリの1つのブロックに書き込まれた情報は他のブロックに伝えられるため、各コプロセッサは、ミラーメモリを通して他のコプロセッサと通信することができる。通信をより組織化するべく、第1のコプロセッサによりミラーメモリの第1のセクションに保存される前に情報をマーシャリングし、第2のコプロセッサによりミラーメモリの第2のセクションから読み出された後に情報をデマーシャリングすることも可能である。
【0031】
ブロック706で、ブロック702および704に示したコントローラ・カード間で情報を転送する方法に加えてまたは代替的に、ASICが接続されたバスを使用して、各コプロセッサとグループ化されたASICを通してコプロセッサ間で情報を転送することができる。
【0032】
従って、コプロセッサ及びコプロセッサとグループ化されたASICとの間で渡された情報は、ASICが接続されたバスを使用して、第2のASIC及び第2のASICに関連付けられたコプロセッサに転送することができる。例えば、図5において、コプロセッサ306とASIC308の間で通信を確立できることが分かる。ASICはM−Busによって通信できるので、各コプロセッサとグループ化されたASICを通して、コプロセッサ間の通信をサポートすることができる。
【0033】
ブロック708で、指示された場合、情報は、ミラーメモリ無しにASICを通してコプロセッサ間で転送することができる。図5の説明から分かるように、ミラーメモリの使用を避けるために、第1のコプロセッサ306は、アレイASICに情報を渡すことによって第2のコプロセッサと通信することができる。次に、情報はバスを介して第2のコントローラ・カード上のアレイASICに渡され、そこから第2のコプロセッサに渡される。このステップは、ミラーメモリの使用の回避を希望する場合に有用である。
【0034】
ブロック710で、プロセッサ/コプロセッサのペアに対して、単一プロデューサ/単一コンシューマの待ち行列が構成される。待ち行列内では、コプロセッサは、待ち行列上に作業をおく単一プロデューサであり、プロセッサは、待ち行列から作業を取り出す単一コンシューマである。待ち行列は、プロセッサとコプロセッサに対してローカルなメモリ内に構成される。
【0035】
ブロック712で、待ち行列から作業が取り出される。作業の取出しは、プロセッサの動作用に構成されたオペレーティング・システム・コード512内に存在するディスパッチャ・コードによって実行することができる。ディスパッチャ・コードは、間隔を置いて実行され、これによってジョブ取出しプロセスに対しての制御が可能になる。
【0036】
ブロック714で、待ち行列から取り出された作業は、各プロセッサにおける動作用に構成されたソフトウェアを使用して処理される。このようなソフトウェアは、種々の異なる目的に適合させることができる。待ち行列から取り出されたタスクを実行する際にプロセッサによって実行されるソフトウェアの例には、入出力プロセッサの動作を制御するように構成されたフロント・コードと、RAID装置の動作を制御するように構成されたミドル・コードと、ディスクドライブ動作を制御するように構成されたバック・コードとが含まれる。
【0037】
図8のフローチャートは、特にRAID環境での使用に適合させた、リモートに配置された第1のプロセッサと第2のプロセッサとの間での作業の共有を可能にする方法800を示す。本方法の要素は、ディスク、ROMまたは他のメモリ装置等のプロセッサ読取可能媒体上に定義されたプロセッサ読取可能命令の実行等の、任意の望ましい方法で実行可能である。また、どのブロックに記述された動作も他のブロックに記述された動作と並列に実行したり、交互に実行したり、または複数の他のブロックに関連するアクションと一緒に分布させたりすることができる。
【0038】
ブロック802で、ローカル・メモリ内に定義された循環バッファを使用して、第1のプロセッサから第1のコプロセッサに対してコマンドが発行される。一実施例では、コマンドはアドレスとコマンド・タイプとを含む。
【0039】
ブロック804で、第1のコプロセッサが、アドレスとコマンド・タイプとを使用して情報をマーシャリングする。多くのアプリケーションでは、マーシャリングされる情報はアドレスによって決まり、情報がマーシャリングされる方法はコマンドによって決まる。
【0040】
ブロック806で、コプロセッサはマーシャリングされた情報をミラーメモリにコピーする。コピープロセスには、ミラーメモリ内に構成された循環バッファに書き込むことと、リモート・コプロセッサがデマーシャリング・ジョブを読み出した後に循環バッファ内のメモリを逆割り当て(de−allocating)することが含まれる。
【0041】
ブロック808で、第2のコプロセッサに対して、デマーシャリング・ジョブが入手可能であることが通知される。通常、通知は第1のコプロセッサから発生する。
【0042】
ブロック810で、第2のコプロセッサは、ミラーメモリの第2のブロックからデマーシャリング・ジョブを読み出す。一般に、ミラーメモリの第2のブロックは、第1のコプロセッサに関してリモートの位置にある。
【0043】
ブロック812で、第2のコプロセッサはデマーシャリング・ジョブを実行し、これによってデマーシャリングされた情報を取得する。
【0044】
ブロック814で、入手可能なジョブに関連するデマーシャリングされた情報が待ち行列に書き込まれる。デマーシャリングされた情報は、待ち行列に入ると、入手可能なジョブに関して第2のプロセッサによって実行されるタスクとなる。デマーシャリングされた情報の書き込みは、情報を待ち行列に配置することによって実行することができる。待ち行列はローカル・メモリ内に定義され、第2のプロセッサによって動作されるように構成されたオペレーティング・システムによって使用される。
【0045】
ブロック816で、第1のプロセッサに対し、通常はコマンド完了の後にのみ、コマンド実行に関する進捗が通知される。
【0046】
結論として、ハードウェア支援プロセッサ間通信により、第1のプロセッサと第2のプロセッサの間の命令およびデータ等の情報の転送が可能になる。第1のプロセッサは、コプロセッサに対し、ミラーメモリの第1のブロックに情報を書き込むように命令するよう構成される。ミラーメモリの各ブロックは、同様に位置するASICと通信する関連ASICによって維持される。第2のコプロセッサは、ミラーメモリの第2のブロックから情報を読み出す。情報は、第2のプロセッサに対してローカルなメモリに定義された待ち行列に保存される。
【0047】
構造的特徴および/または方法ステップに特有の用語で本発明を説明したが、本発明は説明した特定の特徴またはステップに限定されないことを理解されたい。むしろ、特定の特徴およびステップは、この開示を実施する例示的な形態である。例えば、本発明の一形態では、リモート・プロセッサのオペレーティング・システム内のディスパッチャ・コードを使用して、待ち行列から作業が取り出される。代替的に、オペレーティング・システムの外部に配置された外部待ち行列を構成することができ、外部待ち行列から作業を取り出すように適当なコードを設計することができる。
【0048】
さらに、フローチャートとブロックによって1つまたは複数の方法を開示したが、ブロックは必ずしも提示された順序で実行される必要はなく、別の順序でも同様の利点を得られることを理解されたい。
【図面の簡単な説明】
【図1】ハードウェア支援プロセッサ間通信を有するRAID装置の実施環境を示す図である。
【図2】例示的なRAID装置の詳細を示すブロック図である。
【図3】RAID装置に存在するコントローラ・カードの詳細を示す拡大ブロック図である。
【図4】コントローラ・カード上のプロセッサによって実行されるソフトウェア構造を示すブロック図である。
【図5】コントローラ・カード上の重要なコンポーネントの関連を示す図である。
【図6】第1および第2のコントローラ・カードにそれぞれ配置された第1のプロセッサと第2のプロセッサとの間で情報を転送する方法を説明するフローチャートである。
【図7】複数のプロセッサ/コプロセッサのペアによる作業の共有を可能とする方法を説明するフローチャートである。
【図8】RAID環境内で遠隔に配置された第1のプロセッサと第2のプロセッサとの間で作業を共有可能とする方法を説明するフローチャートである。
【符号の説明】
102 RAID
104 ホスト
106 クライアント
108 ネットワーク
304 プロセッサ
306 コプロセッサ
308 アレイASIC
310 ミラーメモリ
314 ローカル・メモリ
502 循環バッファ
504 アドレス
506 タイプ
510 待ち行列
512 オペレーティング・システム
【発明の属する技術分野】
この発明は、プロセッサ間のハードウェア支援通信を有するRAID(redundant array of inexpensive disks)装置に関する。
【0002】
【従来の技術】
大量のデータ記憶という増大し続けるニーズを満たすべく、RAID装置の採用が増えている。従来、RAID装置内において、多数のディスクを動作させるために、それぞれが少なくとも1つのプロセッサを有する大量のコントローラ・カードを必要とした。マルチプロセッサ・アプリケーションに関連する共通の課題の1つは、第1のプロセッサから第2のプロセッサに作業を転送するのに時間がかかることに関連する性能に与える影響である。
【0003】
【発明が解決しようとする課題】
対称型マルチプロセッシング(SMP)の概念に基づいて構築されたシステムでは、すべてのプロセッサが同じメモリのビューを見る。SMPシステムでは、プロセッサは、メモリ内容をメッセージの形態にパッキングして他のプロセッサに渡すために時間を費やす必要がない。しかし、各プロセッサの状態を追跡するために、およびメモリがコヒーレントな状態を維持することを保証するために、特別なハードウェア要素がSMPシステムに追加される。結果として、これらのシステムは非常に高価となり、また構築が困難となる。SMPシステムは、プロセスが追加されるに従って、ますます複雑で高価で非効率となる。例えば、2つまたは4つのプロセッサに関連する困難は、8つ以上のプロセッサを有するシステムの困難には複雑さにおいて到底及ばない。従って、SMPテクノロジでは、コヒーレンシ動作に関連したシステム全体に渡ってのボトルネックが発生し、より多くのプロセッサをシステムに追加することで実現される全般的な利益が低減する。従って、すべてのプロセッサが同一のメモリのビューを有することを可能にするマルチプロセッサ・システムは、複雑で費用がかかる場合がある。さらに、これらの欠点は、プロセッサの数の増加に従って増大する可能性がある。
【0004】
マルチプロセッサ・アーキテクチャの他の形態では、協調(cooperating)プロセッサは共通のメモリのビューを共有しない。例えばUNIX環境では、メッセージは「リモートシェル」の形態で構成されプロセッサ間で伝送される。「リモートシェル」が全体のパフォーマンスの向上に役立つためには、メッセージを小さくかつ迅速に構成する必要があるが、大量の作業を伴う必要もある。転送される作業の量は、メッセージの構築に必要な作業よりずっと多くなるに違いない。このテクノロジによって構築されたシステムが成功するためには、メッセージの形成に伴うオーバヘッドによって別のプロセッサを採用する利益が低減しないように注意を払う必要がある。
【0005】
【課題を解決するための手段】
本発明の方法および装置は、プロセッサ間のハードウェア支援通信を実行する。第1のプロセッサからの命令に応じて、第1のコプロセッサは、ミラーメモリ(mirrored memory)の第1のブロックに情報を書き込む。ミラーメモリは維持され、第2のコプロセッサがミラーメモリの第2のブロックから情報を読み出すことができるようになる。情報は、第2のプロセッサがアクセス可能なメモリに保存される。情報は、第2のプロセッサによってアクセスされる。
【0006】
【発明の実施の形態】
本発明の方法および装置は、プロセッサ間のハードウェア支援通信を実行する。第1のプロセッサからの命令に応じて、第1のコプロセッサは、ミラーメモリの第1のブロックに情報を書き込む。ミラーメモリは維持され、第2のコプロセッサがミラーメモリの第2のブロックから情報を読み出すことができるようになる。情報は、第2のプロセッサがアクセス可能なメモリに保存される。情報は、第2のプロセッサによってアクセスされる。
【0007】
図1は、ホスト104によってサポートされるRAID装置102がネットワーク108を介してクライアント106にサービスする環境100を示す。RAID装置は、ハードウェア支援プロセッサ間通信によって複数のプロセッサがより効率的に協調することを可能にするアーキテクチャを採用する。
【0008】
図2は、例示的なRAID装置102のエンクロージャ202内の詳細を示す。第1および第2のコントローラ・カード204、206が、ファイバ・チャネルまたは同様のテクノロジによる情報導線(conductor)210、212を使用して、複数のディスクドライブ208の動作を制御する。図3から分かるように、ミラーバス214と追加の通信バス216、218により、各コントローラ・カード内に含まれるアレイASICは、コントローラ・カードに含まれるミラーメモリを維持することができる。オン・オフ制御および電源切換ライン220、222により、RAID装置の動作に対する制御が可能となる。電源および冷却モジュール224、226は、RAID装置のエンクロージャ内の装置に対し5ボルト(228)および12ボルト(230)を供給する。
【0009】
図3は、RAID装置内に位置するコントローラ・カード204内の詳細を示す拡大ブロック図である。特定の技術は図3に示すバス、メモリ技術等の特定のコンポーネントと同一視されるが、多くの環境において、別のコンポーネントおよび別の技術で代替することができる。
【0010】
PCIバス302は、プロセッサ304と、コプロセッサ306と、アレイASIC308との間の通信を容易にする。アレイASIC308は、さらにミラーメモリ310と通信する。バス303は、プロセッサ304と、フラッシュメモリ312と、ローカル・メモリ314との間の通信を容易にする。
【0011】
多くの異なる装置を利用して、ASIC(特定用途向け集積回路)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)等のコプロセッサ機能を提供することができる。ミラーメモリは、NVRAM(不揮発性RAM)技術を利用することができる。ローカル・メモリ314は、ECC SDRAM(誤り訂正符号同期ダイナミックRAM)を利用できる。
【0012】
アレイASIC308は、ミラーバス214と通信バス216、218によって、他のコントローラ・カード内に位置する同様に配置されたアレイASICと通信する。アレイASICは、PCIバス316によって、ホストコンピュータ(図1のホスト104等)と通信するファイバ・チャネルI/Oプロセッサ318、320と通信し、また、ディスク208(図2に示す)と通信するファイバ・チャネル・ポート・バイパス322と通信することができる。
【0013】
アレイASIC308は、他のコントローラ・カードに位置する同様に配置されたアレイASICと通信することができるので、ミラーメモリを維持することができる。ミラーメモリの維持には、ミラーメモリ310の任意のブロックに対して行われた変更をミラーメモリ310の他のすべてのブロックに対して行うことが含まれる。典型的に、ミラーメモリの1つのブロックに関連するアレイASIC308は、ミラーメモリに対して変更が行われた(アレイASIC自体による等)ことを認識し、その変更を、ミラーメモリの別のブロックにそれぞれ関連付けられている他のアレイASICに通信する。そして、他のアレイASICは、ミラーメモリのそれぞれのブロックにおいてその変更を行う。従って、複数のブロックを含むミラーメモリが維持される。
【0014】
図4は、ローカル・メモリ314に含まれコントローラ・カード上のプロセッサ304(図3)によって実行される、例示的なソフトウェア構造を示すブロック図(400)である。RAID環境において、プロセッサ304は、I/Oプロセッサ318から情報を受け取る。このI/Oメッセージはリモート・クライアントによって開始することができる。このリモート・クライアントは、RAID装置と通信するホスト・コンピュータに対して要求を送信する。多くの場合、プロセッサ304上で動作するフロント・ソフトウェア402は、I/O要求を、RAID装置内の別のコントローラ・カードに関連するディスクに関する情報に関連するものとして識別する。従って、フロント・ソフトウェア402は、I/O要求をパッケージングし、それをRAID装置内の適当なコントローラ・カード上の適当なプロセッサに送信する。こうして、ホスト・コンピュータは、クライアント・コンピュータからI/O要求を受け取ると、RAID装置内の都合のよいコントローラ・カードに対してI/O要求を送信する。受信側コントローラ・カードは、フロント・ソフトウェア402を使用して、I/O要求を正しいコントローラ・カードに転送する。
【0015】
ミドル・ソフトウェア404は、RAIDストライプを操作(すなわち、セグメント内の関連データを複数のディスクに渡って分散させて、セグメントを同時に読み出し/書き込みできるようにする)したり、消失データをミラーディスクから再構築するタスクを処理する等の、RAID装置の動作に関連するタスクを実行する。
【0016】
バック・ソフトウェア406は、低レベル読み出し/書き込みタスクを処理する。例えば、バック・ソフトウェアは、特定のディスクの特定のセクタに行くこと、データを読み出すこと、そのデータを特定のメモリ位置に置くことといったタスクの実施をサポートする。
【0017】
図5は、図3のコントローラ・カードのような単一のコントローラ・カード上の重要なコンポーネントの関係(500)を示す。この図では、第1のコントローラ・カードと第2のコントローラ・カードの間の情報の転送に関連する種々のソフトウェア構造が追加されている。(図2に示したような)RAID環境内では、複数のコントローラ・カードが通信する。通信の間、情報は支援エンジンによって第1のコントローラ・カードに配置された第1のプロセッサから第2のコントローラ・カードに配置された第2のプロセッサに転送される。各コントローラ・カード上のコプロセッサとミラーメモリとを含む支援エンジンは、受信側プロセッサに対してローカルなメモリ内に定義された待ち行列内の宛先に情報を再配置する。支援エンジンの動作には第1および第2のコプロセッサが含まれ、これらのプロセッサは協働して、ミラーメモリ内に置かれた情報をマーシャリング(marshaling)およびデマーシャリングすることによってコントローラ・カード間で情報を移動させる。図2および図3に示したようなミラーメモリは、アレイASIC308によって更新され維持される。
【0018】
第1のプロセッサ304は、ローカル・メモリ314内に定義された循環バッファ502を使用して、第1のコプロセッサ306に対しコマンドを発行するように構成される。コプロセッサとミラーメモリは、コントローラ・カード内およびコントローラ間で情報を転送する支援エンジンを形成する。コプロセッサは、2つの主要な機能、すなわち情報の送信と受信をサポートする。情報送信機能はプロセッサからのコマンドの受信をサポートし、これはアドレス・ポインタ504とコマンド・タイプ506を含むことができる。コマンド・タイプは、アドレス・ポインタによってそのコマンドに関連付けられた情報をマーシャリングする方法をコプロセッサに命令する。コプロセッサは、マーシャリングをすると、その情報をミラーメモリ310に配置された循環バッファ508に転送する。
【0019】
ミラーメモリがアレイASIC308によってミラーリングされるので、ミラーメモリの1つのブロックに書込まれた情報を、ミラーメモリの別のブロックを見ているRAID装置内の他のコントローラ・カードに配置されたコプロセッサが見ることができる。従って、受信側のコプロセッサ、すなわち情報が向けられたコプロセッサは、その情報受信機能を呼び出し、ミラーメモリから情報をコピーする。次に、受信側コプロセッサは適宜情報をデマーシャリングし、これによってローカル・プロセッサを考慮したタスクを形成する。タスクは、ローカル・プロセッサのオペレーティング・システム512によって管理される待ち行列510内に配置される。間隔を置いて、受信側プロセッサのオペレーティング・システム内のディスパッチャ・ソフトウェアは、ローカル・プロセッサの注意のために待ち行列から作業を取り出す。
【0020】
上述したように、第1のコントローラ・カード上のコプロセッサ306は、複数のコプロセッサが見ることができるミラーメモリ310内に情報を渡すことにより、第2のコントローラ・カード上の同様のコプロセッサと通信することができる。代替的に、第1のコントローラ・カード上の第1のコプロセッサ306は、第1のコントローラ・カード上のアレイASIC308に情報を渡すことにより、第2のコントローラ・カード上の第2のコプロセッサと通信することができる。そして、M−Busまたは同様の機能により第2のコントローラ・カード上の第2のアレイASICに情報を渡すことができる。その後、第2のアレイASICは、第2のコプロセッサに情報を渡すことができる。このようにして、コプロセッサはミラーメモリを使用せずに通信することができる。
【0021】
図6のフローチャートは、第1のプロセッサと第2のプロセッサの間で情報を転送する方法600を示す。ここでは、第1および第2のプロセッサは、RAID装置内の第1および第2のコントローラ・カードにそれぞれ配置されている。本方法の要素は、ディスク、ROMまたは他のメモリ装置等のプロセッサ読取可能媒体上に定義されたプロセッサ読取可能命令の実行等の、任意の望ましい方法で実行可能である。また、どのブロックに記述された動作も他のブロックに記述された動作と並列に実行したり、交互に実行したり、または複数の他のブロックに関連するアクションと一緒に分布させたりすることができる。
【0022】
ブロック602で、第1のプロセッサからの命令に応じて、第1のコプロセッサを使用してミラーメモリの第1のブロックに情報が書き込まれる。一般的なアプリケーションでは、情報は第2のプロセッサによって実行されるタスクを含む。望ましい場合、第1のコプロセッサにより任意の望ましい様式に情報をマーシャリングすることができる。多くの場合、情報はミラーメモリ内に構築された循環バッファに書き込まれる。
【0023】
ブロック604で、アレイASICをミラーメモリの各ブロックに関連付けることによってミラーメモリが維持される。各アレイASICは、ミラーメモリの他のブロックに関連するアレイASICと通信する。従って、ミラーメモリの1つのブロックが変更されると、関連するアレイASICは他のアレイASICに変更を伝え、他のアレイASICはミラーメモリのそれぞれの領域を更新する。
【0024】
ブロック606で、第2のコプロセッサは、関連するアレイASICによって更新されたミラーメモリの第2のブロックから情報を読み出す。第1のコプロセッサが情報をマーシャリングした場合、第2のコプロセッサは情報をデマーシャリングする。
【0025】
ブロック608で、第2のプロセッサに対してローカルなメモリに定義された待ち行列に情報が保存される。待ち行列は、図5のオペレーティング・システム512内に含まれるディスパッチャ・コードに関連する待ち行列等、第2のプロセッサのオペレーティング・システム内に存在することができ、またはそれによって管理されることが可能である。
【0026】
ブロック610で、第2のコプロセッサは待ち行列プロデューサ(producer:生産者)であるように構成され、第2のプロセッサは待ち行列コンシューマ(consumer:消費者)であるように構成される。待ち行列は、コプロセッサが待ち行列に書き込み可能でありかつプロセッサが待ち行列から読み出し可能であるように、オペレーティング・システムによって管理されたメモリ内に構成される。
【0027】
ブロック612で、第2のプロセッサにより情報がアクセスされる。このアクセスは、第2のプロセッサによって実行されるオペレーティング・システム・コード内に存在するディスパッチャ・コードを使用することによって実行することができる。
【0028】
図7のフローチャートは、作業を共有するために、プロセッサ、コプロセッサおよびASICをそれぞれ含む複数のグループを構成する方法700を示す。例えば、図5は、プロセッサ304、コプロセッサ306およびASIC308を含むこのようなグループを示しており、これは図2および図3に示したようなコントローラ・カード204に保持することができる。本方法の要素は、ディスク、ROMまたは他のメモリ装置等のプロセッサ読取可能媒体上に定義されたプロセッサ読取可能命令の実行等の、任意の望ましい方法で実行可能である。また、どのブロックに記述された動作も他のブロックに記述された動作と並列に実行したり、交互に実行したり、または複数の他のブロックに関連するアクションと一緒に分布させたりすることができる。
【0029】
ブロック702で、1つのコントローラ・カード内に含まれるミラーメモリの1つのブロックにおける変更が、RAID装置内の他のコントローラ・カード内に含まれるミラーメモリのブロックに反映されるように、ミラーメモリが維持される。ミラーメモリは、複数のアレイASIC間で情報を渡すことによって維持され、各アレイASICは、ミラーメモリの複数のセクションの各々と関連付けられる。これによって、アレイASICは、ミラーメモリの1つのブロックに対して行われた変更をミラーメモリの他のすべてのブロックに伝えることができる。
【0030】
ブロック704で、ミラーメモリを使用してコプロセッサ間で情報が転送される。ミラーメモリの1つのブロックに書き込まれた情報は他のブロックに伝えられるため、各コプロセッサは、ミラーメモリを通して他のコプロセッサと通信することができる。通信をより組織化するべく、第1のコプロセッサによりミラーメモリの第1のセクションに保存される前に情報をマーシャリングし、第2のコプロセッサによりミラーメモリの第2のセクションから読み出された後に情報をデマーシャリングすることも可能である。
【0031】
ブロック706で、ブロック702および704に示したコントローラ・カード間で情報を転送する方法に加えてまたは代替的に、ASICが接続されたバスを使用して、各コプロセッサとグループ化されたASICを通してコプロセッサ間で情報を転送することができる。
【0032】
従って、コプロセッサ及びコプロセッサとグループ化されたASICとの間で渡された情報は、ASICが接続されたバスを使用して、第2のASIC及び第2のASICに関連付けられたコプロセッサに転送することができる。例えば、図5において、コプロセッサ306とASIC308の間で通信を確立できることが分かる。ASICはM−Busによって通信できるので、各コプロセッサとグループ化されたASICを通して、コプロセッサ間の通信をサポートすることができる。
【0033】
ブロック708で、指示された場合、情報は、ミラーメモリ無しにASICを通してコプロセッサ間で転送することができる。図5の説明から分かるように、ミラーメモリの使用を避けるために、第1のコプロセッサ306は、アレイASICに情報を渡すことによって第2のコプロセッサと通信することができる。次に、情報はバスを介して第2のコントローラ・カード上のアレイASICに渡され、そこから第2のコプロセッサに渡される。このステップは、ミラーメモリの使用の回避を希望する場合に有用である。
【0034】
ブロック710で、プロセッサ/コプロセッサのペアに対して、単一プロデューサ/単一コンシューマの待ち行列が構成される。待ち行列内では、コプロセッサは、待ち行列上に作業をおく単一プロデューサであり、プロセッサは、待ち行列から作業を取り出す単一コンシューマである。待ち行列は、プロセッサとコプロセッサに対してローカルなメモリ内に構成される。
【0035】
ブロック712で、待ち行列から作業が取り出される。作業の取出しは、プロセッサの動作用に構成されたオペレーティング・システム・コード512内に存在するディスパッチャ・コードによって実行することができる。ディスパッチャ・コードは、間隔を置いて実行され、これによってジョブ取出しプロセスに対しての制御が可能になる。
【0036】
ブロック714で、待ち行列から取り出された作業は、各プロセッサにおける動作用に構成されたソフトウェアを使用して処理される。このようなソフトウェアは、種々の異なる目的に適合させることができる。待ち行列から取り出されたタスクを実行する際にプロセッサによって実行されるソフトウェアの例には、入出力プロセッサの動作を制御するように構成されたフロント・コードと、RAID装置の動作を制御するように構成されたミドル・コードと、ディスクドライブ動作を制御するように構成されたバック・コードとが含まれる。
【0037】
図8のフローチャートは、特にRAID環境での使用に適合させた、リモートに配置された第1のプロセッサと第2のプロセッサとの間での作業の共有を可能にする方法800を示す。本方法の要素は、ディスク、ROMまたは他のメモリ装置等のプロセッサ読取可能媒体上に定義されたプロセッサ読取可能命令の実行等の、任意の望ましい方法で実行可能である。また、どのブロックに記述された動作も他のブロックに記述された動作と並列に実行したり、交互に実行したり、または複数の他のブロックに関連するアクションと一緒に分布させたりすることができる。
【0038】
ブロック802で、ローカル・メモリ内に定義された循環バッファを使用して、第1のプロセッサから第1のコプロセッサに対してコマンドが発行される。一実施例では、コマンドはアドレスとコマンド・タイプとを含む。
【0039】
ブロック804で、第1のコプロセッサが、アドレスとコマンド・タイプとを使用して情報をマーシャリングする。多くのアプリケーションでは、マーシャリングされる情報はアドレスによって決まり、情報がマーシャリングされる方法はコマンドによって決まる。
【0040】
ブロック806で、コプロセッサはマーシャリングされた情報をミラーメモリにコピーする。コピープロセスには、ミラーメモリ内に構成された循環バッファに書き込むことと、リモート・コプロセッサがデマーシャリング・ジョブを読み出した後に循環バッファ内のメモリを逆割り当て(de−allocating)することが含まれる。
【0041】
ブロック808で、第2のコプロセッサに対して、デマーシャリング・ジョブが入手可能であることが通知される。通常、通知は第1のコプロセッサから発生する。
【0042】
ブロック810で、第2のコプロセッサは、ミラーメモリの第2のブロックからデマーシャリング・ジョブを読み出す。一般に、ミラーメモリの第2のブロックは、第1のコプロセッサに関してリモートの位置にある。
【0043】
ブロック812で、第2のコプロセッサはデマーシャリング・ジョブを実行し、これによってデマーシャリングされた情報を取得する。
【0044】
ブロック814で、入手可能なジョブに関連するデマーシャリングされた情報が待ち行列に書き込まれる。デマーシャリングされた情報は、待ち行列に入ると、入手可能なジョブに関して第2のプロセッサによって実行されるタスクとなる。デマーシャリングされた情報の書き込みは、情報を待ち行列に配置することによって実行することができる。待ち行列はローカル・メモリ内に定義され、第2のプロセッサによって動作されるように構成されたオペレーティング・システムによって使用される。
【0045】
ブロック816で、第1のプロセッサに対し、通常はコマンド完了の後にのみ、コマンド実行に関する進捗が通知される。
【0046】
結論として、ハードウェア支援プロセッサ間通信により、第1のプロセッサと第2のプロセッサの間の命令およびデータ等の情報の転送が可能になる。第1のプロセッサは、コプロセッサに対し、ミラーメモリの第1のブロックに情報を書き込むように命令するよう構成される。ミラーメモリの各ブロックは、同様に位置するASICと通信する関連ASICによって維持される。第2のコプロセッサは、ミラーメモリの第2のブロックから情報を読み出す。情報は、第2のプロセッサに対してローカルなメモリに定義された待ち行列に保存される。
【0047】
構造的特徴および/または方法ステップに特有の用語で本発明を説明したが、本発明は説明した特定の特徴またはステップに限定されないことを理解されたい。むしろ、特定の特徴およびステップは、この開示を実施する例示的な形態である。例えば、本発明の一形態では、リモート・プロセッサのオペレーティング・システム内のディスパッチャ・コードを使用して、待ち行列から作業が取り出される。代替的に、オペレーティング・システムの外部に配置された外部待ち行列を構成することができ、外部待ち行列から作業を取り出すように適当なコードを設計することができる。
【0048】
さらに、フローチャートとブロックによって1つまたは複数の方法を開示したが、ブロックは必ずしも提示された順序で実行される必要はなく、別の順序でも同様の利点を得られることを理解されたい。
【図面の簡単な説明】
【図1】ハードウェア支援プロセッサ間通信を有するRAID装置の実施環境を示す図である。
【図2】例示的なRAID装置の詳細を示すブロック図である。
【図3】RAID装置に存在するコントローラ・カードの詳細を示す拡大ブロック図である。
【図4】コントローラ・カード上のプロセッサによって実行されるソフトウェア構造を示すブロック図である。
【図5】コントローラ・カード上の重要なコンポーネントの関連を示す図である。
【図6】第1および第2のコントローラ・カードにそれぞれ配置された第1のプロセッサと第2のプロセッサとの間で情報を転送する方法を説明するフローチャートである。
【図7】複数のプロセッサ/コプロセッサのペアによる作業の共有を可能とする方法を説明するフローチャートである。
【図8】RAID環境内で遠隔に配置された第1のプロセッサと第2のプロセッサとの間で作業を共有可能とする方法を説明するフローチャートである。
【符号の説明】
102 RAID
104 ホスト
106 クライアント
108 ネットワーク
304 プロセッサ
306 コプロセッサ
308 アレイASIC
310 ミラーメモリ
314 ローカル・メモリ
502 循環バッファ
504 アドレス
506 タイプ
510 待ち行列
512 オペレーティング・システム
Claims (10)
- プロセッサ間のハードウェア支援通信を実行する方法であって、
第1のプロセッサからの指令に応じて、第1のコプロセッサを使用してミラーメモリの第1のブロックに情報を書き込み、
ミラーメモリを維持し、
第2のコプロセッサを用いて、ミラーメモリの第2のブロックから前記情報を読み出し、
第2のプロセッサにアクセス可能なメモリに前記情報を保存し、
前記第2のプロセッサを用いて前記情報にアクセスすることを含む方法。 - プロセッサとコプロセッサとASICとをそれぞれ含む複数のグループが作業を共有するように構成する方法であって、
ASICが接続されたバスを使用して、各コプロセッサとグループ化されている前記ASICを介してコプロセッサ間で情報を転送し、
前記コプロセッサが単一プロデューサであり前記プロセッサが単一コンシューマである単一プロデューサ/単一コンシューマ待ち行列を各グループについて構成し、
前記単一プロデューサ/単一コンシューマ待ち行列から情報を取り出し、
各プロセッサで動作するように構成されたソフトウェアを使用して前記情報を処理することを含む方法。 - 前記待ち行列からの作業の取出しは、
各ASICが、ミラーメモリの複数のセクションの各々に関連付けられている複数のASIC間で情報を渡すことによりミラーメモリを維持することと、
ミラーメモリを使用してコプロセッサ間で情報を転送することであって、前記情報が、第1のコプロセッサによってミラーメモリの第1のセクションに保存される前にマーシャリングされ、第2のコプロセッサによってミラーメモリの第2のセクションから読み出された後にデマーシャリングされることを含む、請求項2に記載の方法。 - 各プロセッサにおいて動作するように構成された前記ソフトウェアが、
入出力プロセッサの動作を制御するように構成されたフロント・コード、
RAID装置の動作を制御するように構成されたミドル・コード、
ディスクドライブ動作を制御するように構成されたバック・コード、
からなるグループの中から選択される、請求項2に記載の方法。 - リモートに配置された第1のプロセッサと第2のプロセッサとの間で作業を共有するためのプロセッサ実行可能命令を含むプロセッサ読取可能媒体であって、前記プロセッサ実行可能命令は、
循環バッファを使用して、前記第1のプロセッサから第1のコプロセッサに対してアドレスとコマンド・タイプとを含むコマンドを発行し、
前記第1のコプロセッサを使用して、前記アドレスに関連し前記コマンド・タイプに従った情報をマーシャリングし、
前記第1のコプロセッサを使用して、マーシャリングされた情報をミラーメモリの第1のブロックにコピーし、
第2のコプロセッサに対し、デマーシャリング・ジョブが入手可能であることを通知し、
前記デマーシャリング・ジョブをミラーメモリの第2のブロックから前記第2のコプロセッサに読み込み、
前記第2のコプロセッサを用いて前記デマーシャリング・ジョブを実行して、デマーシャリングされた情報を取得し、
前記デマーシャリングされた情報を待ち行列に書き込んで、入手可能なジョブに関する情報を前記第2のプロセッサに提供する命令を含む、プロセッサ読取可能媒体。 - 前記デマーシャリングされた情報を前記待ち行列に書き込むことは、前記第2のプロセッサによって動作されるように構成されたオペレーティング・システムによって使用されるローカル・メモリに、前記入手可能なジョブに関する情報を配置することを含む、請求項5に記載のプロセッサ読取可能媒体。
- 前記マーシャリングされたメモリのコピーは、
ミラーメモリ内に構成された循環バッファに書き込み、
前記リモート・コプロセッサが前記デマーシャリング・ジョブを読み出した後に、前記循環バッファ内のメモリを逆割り当てする命令をさらに含む、請求項5に記載のプロセッサ読取可能媒体。 - 前記第2のプロセッサによる完了後にのみ、前記第1のプロセッサにコマンド進捗を通知する命令をさらに含む、請求項5に記載のプロセッサ読取可能媒体。
- 複数のディスクと、
ディスク及びクライアントI/Oを管理するように構成された複数のコントローラ・カードと、を含むRAIDシステムであって、
各コントローラ・カードが、
(a)ローカル・メモリと、
(b)前記ローカル・メモリと通信するプロセッサと、
(c)前記ローカル・メモリ内に定義され前記プロセッサによって空にされるように構成された単一プロデューサ/単一コンシューマ待ち行列と、
(d)前記待ち行列に作業を転送する支援エンジンであって、
(d1)ローカル・ミラーメモリ・ブロックとローカル・アレイASICとを備え、他のコントローラ・カード上のミラーメモリ・ブロックについて前記ローカル・ミラーメモリ・ブロックを維持するミラーメモリと、
(d2)前記ローカル・ミラーメモリ・ブロックに情報をマーシャリング及び書き込みし、該ローカル・ミラーメモリ・ブロックから取得された情報を読み出し及びデマーシャリングするように構成された、コプロセッサと、
を含む支援エンジンと、
を含む、RAIDシステム。 - 入出力プロセッサの動作を制御するように構成されたフロント・コードと、前記RAIDシステムの動作を制御するように構成されたミドル・コードと、ディスクドライブ動作を制御するように構成されたバック・コードと、を備え、前記プロセッサ上で動作するように構成されたソフトウェアをさらに含む、請求項9記載のRAIDシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/199,654 US6938124B2 (en) | 2002-07-19 | 2002-07-19 | Hardware assisted communication between processors |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004054916A true JP2004054916A (ja) | 2004-02-19 |
Family
ID=27765813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003154109A Withdrawn JP2004054916A (ja) | 2002-07-19 | 2003-05-30 | プロセッサ間のハードウェア支援通信を実行する方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US6938124B2 (ja) |
JP (1) | JP2004054916A (ja) |
DE (1) | DE10318623A1 (ja) |
GB (1) | GB2393000B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006120119A (ja) * | 2004-10-20 | 2006-05-11 | Seagate Technology Llc | 二重制御装置を有する冗長データ記憶システムおよびその動作方法 |
US7694699B2 (en) | 2006-03-16 | 2010-04-13 | Samsung Electro-Mechanics Co., Ltd. | System and method for filling hydrodynamic bearings with fluid |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1615141B1 (en) * | 2004-07-01 | 2018-03-07 | Harman Becker Automotive Systems GmbH | A computing architecture for a mobile multimedia system used in a vehicle |
US7697515B2 (en) | 2005-12-27 | 2010-04-13 | Emc Corporation | On-line data migration of a logical/virtual storage array |
US7697554B1 (en) | 2005-12-27 | 2010-04-13 | Emc Corporation | On-line data migration of a logical/virtual storage array by replacing virtual names |
US7685395B1 (en) * | 2005-12-27 | 2010-03-23 | Emc Corporation | Spanning virtual arrays across multiple physical storage arrays |
US9348530B2 (en) | 2005-12-27 | 2016-05-24 | Emc Corporation | Presentation of virtual arrays using n-port ID virtualization |
US7370175B2 (en) * | 2006-03-31 | 2008-05-06 | Intel Corporation | System, method, and apparatus to aggregate heterogeneous RAID sets |
US8452928B1 (en) | 2006-06-29 | 2013-05-28 | Emc Corporation | Virtual array non-disruptive migration of extended storage functionality |
US8583861B1 (en) | 2006-06-29 | 2013-11-12 | Emc Corporation | Presentation of management functionality of virtual arrays |
US8533408B1 (en) | 2006-06-29 | 2013-09-10 | Emc Corporation | Consolidating N-storage arrays into one storage array using virtual array non-disruptive data migration |
US8539177B1 (en) | 2006-06-29 | 2013-09-17 | Emc Corporation | Partitioning of a storage array into N-storage arrays using virtual array non-disruptive data migration |
US7757059B1 (en) | 2006-06-29 | 2010-07-13 | Emc Corporation | Virtual array non-disruptive management data migration |
US9063896B1 (en) | 2007-06-29 | 2015-06-23 | Emc Corporation | System and method of non-disruptive data migration between virtual arrays of heterogeneous storage arrays |
US9098211B1 (en) | 2007-06-29 | 2015-08-04 | Emc Corporation | System and method of non-disruptive data migration between a full storage array and one or more virtual arrays |
US7929722B2 (en) * | 2008-08-13 | 2011-04-19 | Intelligent Systems Incorporated | Hearing assistance using an external coprocessor |
EP3413532A1 (en) | 2017-06-07 | 2018-12-12 | Hewlett-Packard Development Company, L.P. | Monitoring control-flow integrity |
EP3413531A1 (en) | 2017-06-07 | 2018-12-12 | Hewlett-Packard Development Company, L.P. | Intrusion detection systems |
US10664367B2 (en) * | 2017-11-30 | 2020-05-26 | International Business Machines Corporation | Shared storage parity on RAID |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5416918A (en) * | 1991-07-10 | 1995-05-16 | Hewlett-Packard Company | Low skew system for interfacing asics by routing internal clock off-chip to external delay element then feeding back to on-chip drivers |
SE9202182D0 (sv) | 1991-07-18 | 1992-07-16 | Tandem Telecomm Syst | Mirrored memory multi processor system |
US5418918A (en) * | 1993-09-10 | 1995-05-23 | Compaq Computer Corp. | Scanning initial CD-ROM sectors for a boot record and executing said boot record to load and execute floppy disk image corresponding to the existing floppy drive |
EP0709782B1 (en) | 1994-10-25 | 1999-03-03 | Hewlett-Packard Company | Error detection system and method for mirrored memory between dual disk storage controllers |
US5574863A (en) | 1994-10-25 | 1996-11-12 | Hewlett-Packard Company | System for using mirrored memory as a robust communication path between dual disk storage controllers |
EP0717358B1 (en) | 1994-12-15 | 2001-10-10 | Hewlett-Packard Company, A Delaware Corporation | Failure detection system for a mirrored memory dual controller disk storage system |
EP0721162A2 (en) * | 1995-01-06 | 1996-07-10 | Hewlett-Packard Company | Mirrored memory dual controller disk storage system |
US5553230A (en) | 1995-01-18 | 1996-09-03 | Hewlett-Packard Company | Identifying controller pairs in a dual controller disk array |
JP3208060B2 (ja) | 1996-05-27 | 2001-09-10 | 三菱電機株式会社 | 並列二重系電子連動装置 |
US5941969A (en) * | 1997-10-22 | 1999-08-24 | Auspex Systems, Inc. | Bridge for direct data storage device access |
US6134630A (en) * | 1997-11-14 | 2000-10-17 | 3Ware | High-performance bus architecture for disk array system |
US6098114A (en) * | 1997-11-14 | 2000-08-01 | 3Ware | Disk array system for processing and tracking the completion of I/O requests |
KR100241596B1 (ko) * | 1997-11-24 | 2000-02-01 | 윤종용 | 온 보드된 스카시를 이용하여 레이드 기능을 구현하는 컴퓨터시스템 |
US6230240B1 (en) | 1998-06-23 | 2001-05-08 | Hewlett-Packard Company | Storage management system and auto-RAID transaction manager for coherent memory map across hot plug interface |
US6247086B1 (en) * | 1998-11-12 | 2001-06-12 | Adaptec, Inc. | PCI bridge for optimized command delivery |
US6295571B1 (en) * | 1999-03-19 | 2001-09-25 | Times N Systems, Inc. | Shared memory apparatus and method for multiprocessor systems |
US6356979B1 (en) * | 1999-05-17 | 2002-03-12 | Compaq Computer Corporation | System and method for selectively presenting logical storage units to multiple host operating systems in a networked computing system |
US20030177187A1 (en) * | 2000-11-27 | 2003-09-18 | Butterfly.Net. Inc. | Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications |
US7320052B2 (en) * | 2003-02-10 | 2008-01-15 | Intel Corporation | Methods and apparatus for providing seamless file system encryption and redundant array of independent disks from a pre-boot environment into a firmware interface aware operating system |
-
2002
- 2002-07-19 US US10/199,654 patent/US6938124B2/en not_active Expired - Fee Related
-
2003
- 2003-04-24 DE DE10318623A patent/DE10318623A1/de not_active Withdrawn
- 2003-05-30 JP JP2003154109A patent/JP2004054916A/ja not_active Withdrawn
- 2003-07-16 GB GB0316638A patent/GB2393000B/en not_active Expired - Fee Related
-
2004
- 2004-12-24 US US11/023,091 patent/US7318120B2/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006120119A (ja) * | 2004-10-20 | 2006-05-11 | Seagate Technology Llc | 二重制御装置を有する冗長データ記憶システムおよびその動作方法 |
US7694699B2 (en) | 2006-03-16 | 2010-04-13 | Samsung Electro-Mechanics Co., Ltd. | System and method for filling hydrodynamic bearings with fluid |
Also Published As
Publication number | Publication date |
---|---|
US6938124B2 (en) | 2005-08-30 |
US20050120190A1 (en) | 2005-06-02 |
GB2393000B (en) | 2005-10-12 |
US7318120B2 (en) | 2008-01-08 |
GB0316638D0 (en) | 2003-08-20 |
US20040015656A1 (en) | 2004-01-22 |
DE10318623A1 (de) | 2004-02-26 |
GB2393000A (en) | 2004-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004054916A (ja) | プロセッサ間のハードウェア支援通信を実行する方法 | |
US8607004B2 (en) | Distributed symmetric multiprocessing computing architecture | |
US6601138B2 (en) | Apparatus system and method for N-way RAID controller having improved performance and fault tolerance | |
JP3694273B2 (ja) | 多重パスi/o要求機構を有するデータ処理システム | |
JPH09325905A (ja) | 記憶制御装置 | |
US20070019636A1 (en) | Multi-threaded transmit transport engine for storage devices | |
EP2798461B1 (en) | Low latency cluster computing | |
US6212543B1 (en) | Asymmetric write-only message queuing architecture | |
Enberg et al. | Transcending POSIX: The End of an Era? | |
WO2007088582A1 (ja) | 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体 | |
JP2602241B2 (ja) | 並列計算機 | |
JP2994917B2 (ja) | 記憶システム | |
JPH0519179B2 (ja) | ||
JPH0830402A (ja) | パリティ格納方法 | |
JP2641399B2 (ja) | フアイル管理装置 | |
JPH10247182A (ja) | マルチプロセッサシステム | |
JP2000330949A (ja) | 仮想記憶システムのページング制御方法および装置 | |
JP4494950B2 (ja) | テーブル切替プログラムおよびコンピュータシステム | |
JPH0346033A (ja) | ジヨブ間データ転送制御方法 | |
JPS6267648A (ja) | 排他制御命令処理方式 | |
JPH11316653A (ja) | ディスクサブシステム | |
JPS6354656A (ja) | マルチプロセツサシステム | |
JPH0481934A (ja) | 情報処理装置 | |
JPH02228743A (ja) | 記憶装置間データ転送方式 | |
JPH0260018B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060801 |