Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4390694B2 - Dma回路及びこれを用いたディスクアレイ装置 - Google Patents
[go: Go Back, main page]

JP4390694B2 - Dma回路及びこれを用いたディスクアレイ装置 - Google Patents

Dma回路及びこれを用いたディスクアレイ装置 Download PDF

Info

Publication number
JP4390694B2
JP4390694B2 JP2004372441A JP2004372441A JP4390694B2 JP 4390694 B2 JP4390694 B2 JP 4390694B2 JP 2004372441 A JP2004372441 A JP 2004372441A JP 2004372441 A JP2004372441 A JP 2004372441A JP 4390694 B2 JP4390694 B2 JP 4390694B2
Authority
JP
Japan
Prior art keywords
descriptor
data
circuit
transfer
read
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.)
Expired - Fee Related
Application number
JP2004372441A
Other languages
English (en)
Other versions
JP2006178795A (ja
Inventor
英憲 高橋
裕一 小川
光正 羽根田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004372441A priority Critical patent/JP4390694B2/ja
Priority to KR1020050054158A priority patent/KR100708567B1/ko
Priority to CNB2005100776884A priority patent/CN100474278C/zh
Priority to US11/239,069 priority patent/US7552249B2/en
Publication of JP2006178795A publication Critical patent/JP2006178795A/ja
Application granted granted Critical
Publication of JP4390694B2 publication Critical patent/JP4390694B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

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)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、外部の指示に応じて、メモリを直接アクセスして、データ転送するDMA回路及びこれを用いたディスクアレイ装置に関し、特に、コンピュータの外部記憶装置として用いられるディスクアレイ装置内部でのデータの正当性を保証するのに好適なDMA回路及びこれを用いたディスクアレイ装置に関する。
近年、様々なデータが電子化されコンピュータ上で扱われるようになるに従い、コンピュータとは独立して大量のデータを効率良く、転送することが要求されている。このため、データを格納するメモリを、外部指示に応じて、独立してアクセスし、データ転送する技術、即ち、DMA転送が盛んに利用されている。
例えば、大量のデータを安全に格納することのできるディスクアレイ装置では、ホストコンピュータのアクセスにより、大量のデータをリード又はライトするため、メモリのデータを、ホストコンピュータや内部回路に転送する。
図9及び図10は、従来技術の説明図である。図9に示すように、キャッシュメモリ104に、CPU100が、データを書き込み、DMA回路(エンジン)102が、キャッシュメモリ104の書き込みデータを読出し、転送する。CPU100は、ホスト等の外部からのデータを受け取ると、ディスクリプタを作成し、キャッシュメモリ104内に設けた制御領域(ディスクリプタ領域という)106に、書き込む。
ディスクリプタは、CPU100が、DMAエンジン102に与えるための命令であり、転送したいデータのキャッシュメモリ104でのアドレスとデータバイト数、データ転送先(メモリ)のアドレスを含む。例えば、図10のディスクリプタのフォーマットに示すように、4ワード(1ワード、64ビット)のコマンドで構成される。1ワード目は、コマンドフィールドcmd、割り込み制御フィールド(例えば、「1」なら、本ディスクリプタの終了時に割り込みをあげる等)、BCCチエックモードBCC、転送先ノードTgt,転送先(Write Side)メモリアドレスDDAで構成される。
2ワード目は、転送バイト数SIZE(例えば、最大1Mbyte,最小8byte),転送元(Read Side)メモリアドレスSDAからなる。3ワード目は、チェック用Block−ID初期値Check BKID、4ワード目は、生成用(Replace)Block−ID初期値よりなる。
CPU100は、キャッシュメモリ104にデータを書き込む度に、図10のようなディスクリプタを作成し、キャッシュメモリ104内のディスクリプタ領域106に書き込む。ディスクリプタ領域106は、ディスクリプタ・サイズのN倍のメモリ領域が割り当てられる。
更に、CPU100は、DMA起動時に、DMAエンジン102の持つディスクリプタ・ベースアドレス・レジスタ110に,ディスクリプタ領域106自体の先頭アドレスを書き込む。これにより、DMAエンジン102は、ディスクリプタが、キャッシュメモリ104のどこから、書き込まれるかを知ることができる。
このDMAエンジン102は,ディスクリプタ・トップポインタ・レジスタ112とディスクリプタ・ボトムポインタ・レジスタ114を持つ。これらのレジスタ112,114は,それぞれ、CPU100がどれだけのディスクリプタをディスクリプタ領域106に用意したか、又、DMAエンジン102が、どれだけのディスクリプタの実行を終えたかを示す。即ち、トップレジスタ112は、先頭のディスクリプタ(図では、ディスクリプタ#5),ボトムレジスタ114は、最後のディスクリプタ(図では、ディスクリプタ#1)を示す。
又、ディスクリプタ・ベースアドレス・レジスタ110の指すアドレスから、1つのディスクリプタ・サイズのN倍までの連続した空間が、ディスクリプタ領域106として使用される。図9の例では、CPU100が、#0−#5の6個のディスクリプタを作成し、ディスクリプタ領域106に格納すると、DMAエンジン102のディスクリプタ・トップポインタ・レジスタ112の値を「6」に進める。これによって、DMAエンジン102は,ディスクリプタが用意されたことを知り、ディスクリプタの読み出しを、最後のディスクリプタから順に始める(例えば、特許文献1、2参照)。
即ち、DMAエンジン102は,ディスクリプタ領域106のディスクリプタ・ボトムポインタ・レジスタ114の示す位置からディスクリプタを読み出し、解析し、指定されたデータ転送を完了すると、ディスクリプタ・ボトムポインタ・レジスタ114を「1」進める。例えば、図9では、ディスクリプタ・ボトムポインタ・レジスタ114が「1」である場合を示しており、ディスクリプタ#0がすでに完了したことを示している。
特開昭63−211032号公報(第3図) 特開2004−110159号公報(図1及び図2)
データ自体には、チェックコードを付加することで保障しており、キャッシュメモリのデータ自身もECC(Error Check Code)を持ち、メモリを構成するDRAM素子やメモリコントローラとDRAM間のデータパスの異常でデータが破壊されたかを検出できる。
このように、DMAエンジン102によるデータ転送動作では、データは、上記のチェックコードとECCによって保護されるが、ディスクリプタの保護が十分でない。特に、DMA転送時のアドレスは、保護されていないので、例えば、メモリコントローラとメモリ間のアドレス線に障害が発生した場合には、CPUが間違ったアドレスにディスクリプタを書き込んだり、DMAエンジンが間違ったアドレスからディスクリプタを読み出したりしてしまう可能性がある。
この場合、本来のデータとは異なるデータが、DMA転送されるため、結果的に、データが保障されなくなってしまう。
従って、本発明の目的は、DMA転送のためのディスクリプタの保護を行い、正確なDMA転送を行うためのDMA回路及びこれを用いたディスクアレイ装置を提供することにある。
又、本発明の他の目的は、DMA転送のため、間違ったアドレスにディスクリプタを書き込んだり、間違ったアドレスからディスクリプタを読み出したことを検出するためのDMA回路及びこれを用いたディスクアレイ装置を提供することにある。
更に、本発明の別の目的は、DMA転送のためのメモリアクセス時のアドレス線の障害を検出し、間違ったDMA転送を防止するためのDMA回路及びこれを用いたディスクアレイ装置を提供することにある。
この目的の達成のため、本発明のDMA回路は、データ処理ユニットが書き込んだDMA転送内容を示すディスクリプタを読み出し、メモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するDMA回路において、前記メモリに前記データ処理ユニットが、ディスクリプタの番号を示すディスクリプタポインタを付加して、書き込んだ複数のディスクリプタの先頭位置を示すトップポインタと、前記複数のディスクリプタの内、次のDMA対象のディスクリプタの位置を示すボトムポインタを格納する第1及び第2のレジスタと、前記ボトムポインタで前記メモリをリードアクセスし、前記メモリのディスクリプタを読み出すディスクリプタ読み出し制御回路と、前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれる前記ディスクリプタポインタと前記ボトムポインタとを比較する比較回路とを有し、前記ディスクリプタ読み出し制御回路は、前記比較回路の比較結果が一致を示さない時は、前記転送回路の前記データの読み出し動作を中止し、前記比較回路の比較結果が一致を示す時は、前記転送回路に転送開始指示を行い、前記転送後、前記第2のレジスタのボトムポインタを、次のディスクリプタを示す値に更新する
又、本発明のデイスクアレイ装置は、複数のディスク装置と、上位からの要求に応じて、前記ディスク装置のデータのリード/ライトを行う制御ユニットとを有し、前記制御ユニットは、データ処理ユニットと、前記ディスク装置のためのデータを格納するキャッシュメモリと、前記データ処理ユニットが書き込んだDMA転送内容を示すディスクリプタを読み出し、前記キャッシュメモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するDMA回路とを有し、前記DMA回路は、前記キャッシュメモリに前記データ処理ユニットが、ディスクリプタの番号を示すディスクリプタポインタを付加して、書き込んだ複数のディスクリプタの先頭位置を示すトップポインタと、前記複数のディスクリプタの内、次のDMA対象のディスクリプタの位置を示すボトムポインタを格納する第1及び第2のレジスタと、前記ボトムポインタで前記メモリをリードアクセスし、前記メモリのディスクリプタを読み出すディスクリプタ読み出し制御回路と、前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれる前記ディスクリプタポインタと前記ボトムポインタとを比較する比較回路とを有し、前記ディスクリプタ読み出し制御回路は、前記比較回路の比較結果が一致を示さない時は、前記転送回路の前記データの読み出し動作を中止し、前記比較回路の比較結果が一致を示す時は、前記転送回路に転送開始指示を行い、前記転送後、前記第2のレジスタのボトムポインタを、次のディスクリプタを示す値に更新する
又、本発明では、好ましくは、前記転送回路は、アドレス線とデータ線とが分離された前記メモリをアクセスする。
又、本発明では、好ましくは、前記第1のレジスタのトップポインタと前記第2のレジスタのボトムポインタとを比較する第2の比較回路を有し、前記転送回路は、前記第2の比較回路の比較結果により、指定されたDMA転送を終了する。
又、本発明では、好ましくは、前記読み出したディスクリプタを格納する第3のレジスタを更に有し、前記比較回路は、前記第3のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第2のレジスタの前記ボトムポインタとを比較する。
又、本発明では、好ましくは、前記メモリのディスクリプタ領域のベース位置を示すベースポインタを格納する第4のレジスタを更に有し、前記転送回路は、前記第2のレジスタの前記ボトムポインタと前記第4のレジスタのベースポインタとの加算値が示す前記メモリのディスクリプタを読み出す。
又、本発明では、好ましくは、前記ディスクリプタ読出し制御回路は、前記ボトムポインタが示す前記メモリのディスクリプタを要求し、前記データ転送回路は、前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する。
又、本発明では、好ましくは、前記読み出したディスクリプタを格納する第3のレジスタを更に有し、前記比較回路は、前記第3のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第2のレジスタの前記ボトムポインタとを比較し、前記データ転送回路は、前記ディスクリプタ読み出し回路の転送許可に応じて、前記第3のレジスタの前記ディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する。
又、本発明では、好ましくは、前記制御ユニットは、前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有し、前記DMA回路は、前記チャネルアダプタの前記キャッシュメモリと前記制御回路の前記キャッシュメモリとの間で、前記DMA転送する。
又、本発明では、好ましくは、前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有する前記制御ユニットを複数有し、前記DMA回路は、1の前記制御ユニットの前記キャッシュメモリと他の前記制御ユニットの前記キャッシュメモリとの間で、前記DMA転送によるミラーリングする。
本発明では、データ処理ユニットが、ディスクリプタを作成するときに、ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタを書き込み、DMAエンジンがディスクリプタを読み出すときに,DMAエンジンが、その値が正しいかどうかを確認する。
これにより、データ処理ユニットがディスクリプタを書き込んだ際に、メモリと間のアドレスに障害が起きた場合や、DMAエンジンが,ディスクリプタを読み出すときに、アドレスに故障が起きた場合は、ディスクリプタ内のポインタ情報が読み出そうとしたポインタと一致しないために、読み出したディスクリプタを異常なものと検出できる。
このようにして、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障に起因するデータの破壊を防ぐことができる。特に、メモリがアドレス線とデータ線とが分離されているものの、アドレス障害を検出し、ディスクアレイ装置のミラーリング処理やデータ転送処理での転送データの誤りを防止でき、信頼性の高いシステムを構築できる。
以下、本発明の実施の形態を、ディスクアレイ装置の第1の実施の形態、DMA転送回路、ディスクアレイ装置の第2の実施の形態、他の実施の形態の順で説明するが、本発明は、かかる実施の形態に限られず、種々の変形が可能である。
[ディスクアレイ装置の第1の実施の形態]
図1は、本発明のディスクアレイ装置の第1の実施の形態の全体構成図、図2は、図1の主要部の詳細構成図である。
図1に示すように、ディスクアレイ装置は、主要ユニットであるキャッシュメモリとキャッシュ制御部とをそなえるキャッシュマネージャ(図中、CMと表記)10−1〜10−4、ホストコンピュータ(図示略)とのインタフェースであるチャネルアダプタ(図中、CAと表記)11−1〜11−8、複数のディスクドライブを備えるディスク装置12−1〜12−4、及び、このディスク装置12−1〜12−4とのインタフェースであるデバイスアダプタ(図中、DAと表記)13−1〜13−8を備える。
そして、キャッシュマネージャ10−1〜10−4,チャネルアダプタ11−1から11−8,及びデバイスアダプタ13−1〜13−8間を互いに接続し、これら主要ユニット間のデータ転送と通信を行うルータ(Router;図中、RTと表記)14−1〜14−4とが備えられている。
このディスクアレイ装置は、キャッシュマネージャ10−1〜10−4が4つそなえられ、これらのキャッシュマネージャ10−1〜10−4に対応して4つのルータ14−1〜14−4が備えられている。各キャッシュマネージャ10−1〜10−4と各ルータ14−1〜14−4とは、1対1で相互に接続されている。これによって、複数のキャッシュマネージャ10−1〜10−4間の接続が冗長化され、可用性が高められている。
つまり、1つのルータ14−1の故障した場合にも、別のルータ14−2,14−3,14−4を経由することで、複数のキャッシュマネージャ10−1〜10−4間の接続は確保されており、かかる場合にも、ディスクアレイ装置は通常の動作を継続することができる。
また、このディスクアレイ装置は、各ルータ14−1〜14−4に、2つのチャネルアダプタ11−1,11−8と2つのデバイスアダプタ13−1〜13−8とが接続されている。従って、ディスクアレイ装置は、合計8つのチャネルアダプタ11−1〜11−8と合計8つのデバイスアダプタ13−1〜13−8とを備えている。
これらのチャネルアダプタ11−1〜11−8及びデバイスアダプタ13−1〜13−8は、キャッシュマネージャ10−1〜10−4とルータ14−1〜14−4との相互接続により、全てのキャッシュマネージャ10−1〜10−4との間で通信が可能になっている。
このチャネルアダプタ11−1〜11−4は、例えば、ファイバチャネルやEthernet(登録商標)によって、複数のディスクに保持されたデータを処理対象とするホストコンピュータ(図示略)に接続されている。又、デバイスアダプタ13−1〜13−8は、例えば、ファイバチャネルによって、ディスク装置12の各ディスクドライブに接続されている。
そして、チャネルアダプタ11−1〜11−8とキャッシュマネージャ10−1〜10−4との間、及びデバイスアダプタ13−1〜13−8とキャッシュマネージャ10−1〜10−4との間では、ホストコンピュータからのユーザデータだけではなく、ディスクアレイ装置の内部の動作の一貫性を保つための様々な情報のやり取り(例えば、複数のキャッシュメモリ間のデータのミラーリング処理)がなされる。
そのため、キャッシュマネージャ10−1〜10−4,チャネルアダプタ11―1〜11−8及びデバイスアダプタ13−1〜13−8と、ルータ14−1〜14−4との間は、ディスクアレイ装置とホストコンピュータとの間や、ディスク装置との間よりも低いレイテンシ(速い応答速度)を実現できるインタフェースを介して接続されている。
例えば、PCI(Peripheral Component Interconnect)バスのように、LSI(Large Scale Integration)やプリント基板の間を接続するために設計されたバスによって、キャッシュマネージャ10−1〜10−4,チャネルアダプタ11−1〜11−8及びデバイスアダプタ13−1〜13−8と、ルータ14−1〜14−4との間が接続されている。
さらに、ディスク装置12−1〜12−4は、2つのファイバチャネルのポートを有し、各ポートには異なるルータ14−1〜14−4配下に属するデバイスアダプタ13−1〜13−8が接続される。これにより、デバイスアダプタ13−1〜13−8の故障時、もしくはルータ14−1〜14−4の故障時にも、キャッシュマネージャ10−1〜10−4からの接続が切断されないようになっている。
このディスクアレイ装置は、RAID技術を取り入れることにより、単純なディスク装置に比べて信頼性を高めている。また,一般にキャッシュを内蔵することにより、データへのアクセス時間を短くすることを可能にしている。
RAID技術としては、複数のディスクに同じデータを記憶させる(RAID-1)、パリティ情報をディスクに分散して記憶させる(RAID-5)などの手法により信頼性を高めている。更に、ディスクアレイ装置の多くは、データに対してチェックコードを付加することにより、更にデータの保証を行い、信頼性を高める手法が採用されている。
例えば、512バイトのデータブロックに対して、データから計算されたCRC(Cyclic Redundancy Code)コードとデータの位置情報を示すブロックIDを付加することにより行われる。このCRCコードとブロックIDを合わせて,データブロックに対するチェックコードと言う意味で、ブロックチェックコード(BCC)と呼ぶことがある。
CRCは、512バイトのデータとシードと呼ばれる予め決められた値に対するある計算によって得られる。ブロックIDは、最初の512バイトデータブロックに対して定義され、次の512バイトに対しては、「1」加算された値が、そのデータブロックのブロックIDとなる。
又、BCCは,ANSI(American National Standards Institute)規格でも、2バイトのCRCコードと6バイトのブロックID(2バイトのMeta Tagと4バイトのReference Tagから構成される)によるチェックコードが,T10コードと言う名称で標準化されている。
図2に示すように、チャネルアダプタ11(11−1〜11−8を総称する)は、ホストコンピュータと接続するためのファイバーチャネルチップ30と、DMAエンジン40を有するインタフェース回路32と、CPU34と、メモリコントローラ36と、キャッシュメモリ38とを有する。
CPU34は、ファイバーチャネルチップ30とメモリコントローラ36を操作して、後述するホストインタフェース制御や、ホストとのリード/ライト処理を行う。
キャッシュマネージャモジュール10(10−1〜10−4を総称する)は、2つのCPU20,22と、キャッシュメモリ26と、ブリッジ回路の役目も果たすメモリコントローラ24とを有し、後述するアクセス処理を行う。ルータ14(14−1〜14−4を総称)は、スイッチ機能を有する他に、DMAエンジン15を搭載する。又、ルータ14は、デバイスアダプタ(ディスクアダプタ)13(13−1から13−8を総称)にも接続される。
キャッシュメモリ38,26は、DDR(Double Data Rate)のDRAM(Dynamic Random Access Memory)で構成され、アドレスバスA−BUS(例えば、8ビット)でアドレスが指定され、データバスD−BUSで、データをやりとりする。
次に、上述の構成において、ホストコンピュータがデータを格納する(ライトする)時のディスクアレイ装置の動作を説明する。ホストコンピュータがディスクへ格納するデータは、まずチャネルアダプタ11へ送信される。チャネルアダプタ11は、FCチップ30で、受信したデータを、インタフェース回路32及びメモリコントローラ36を介し、キャッシュメモリ38に書き込む。この時、CPU34は、前述のディスクリプタを作成し、キャッシュメモリ38のディスクリプタ領域に書き込む。
次に、CPU34は、ホストからのデータ受信を完了すると、DMAエンジン40を起動し、DMAエンジン40が、キャッシュメモリ38のディスクリプタを読み出し、ディスクリプタから得たアドレスに従い、キャッシュメモリ38のライトデータ(受信データ)を読み出し、ルータ14を介し、キャッシュマネージャ10のメモリコントローラ24に、データにブロックチェックコード(BCC)を付加した上で、転送する。
メモリコントローラ24は、CPU20,22の制御に従い、キャッシュメモリ26に、転送データを格納する。その後に、DMAエンジン15を起動して,図1のように、他のキャッシュマネージャ10のメモリコントローラ24へ当該データを転送する。これにより、ミラーリング処理を行う。
ミラーリングが正常に完了すると、キャッシュマネージャ10は、チャネルアダプタ11に、通知を行い、チャネルアダプタ11は、ホストコンピュータにデータの格納を正常に終了したことを知らせる。更に、キャッシュマネージャ10は、内部シーケンスに従い、デバイスアダプタ13を介し、図1の磁気ディスク装置12−1に、キャッシュメモリ26内のライトデータをライトバックし、磁気ディスク装置12−1にデータを格納する。
次に、ホストコンピュータからリード要求が発行された場合、まず、ホストコンピュータからのリード要求をチャネルアダプタ11が受信する。次いで、リード要求を受信したチャネルアダプタ11は、担当のキャッシュマネージャ10に対して当該リード要求の対象データの要求を行う。
そして、担当のキャッシュマネージャ10は、自身のキャッシュメモリ26内に当該対象データがあれば、当該対象データが保持されたキャッシュメモリ26のアドレスを、チャネルアダプタ11、ルータ14に通知するとともに、ルータ14のDMAエンジン15に読出し指示をする。これにより、ルータ14は、DMAエンジン15を起動し、キャッシュメモリ26の対象データを、読み出し、チャネルアダプタ11のキャッシュメモリ38に転送する。その後、DMAエンジン40を起動し、キャッシュメモリ38の対象データを、ホストへ転送する。
一方、担当のキャッシュマネージャ10のキャッシュメモリ26内に当該対象データがない場合、デバイスアダプタ13に対してディスク12−1から当該対象データを読み出して、キャッシュメモリ26へ転送するように要求する。
そして、デバイスアダプタ13は、当該対象データをディスク12−1から読み出すと、キャッシュメモリ26に当該対象データを書き込み、キャッシュマネージャ10に対して当該対象データの書き込みが終了したことを通知する。
更に、キャッシュマネージャ10は、デバイスアダプタ13から当該対象データのキャッシュメモリ26への書き込みが終了したことを示す通知を受け取ると、キャッシュマネージャ10は、チャネルアダプタ11に対して当該対象データの準備ができたことを通知するとともに、ルータ14に当該対象データの読み出しを指示する。
これにより、ルータ14は、DMAエンジン15を起動し、キャッシュメモリ26の対象データを、読み出し、チャネルアダプタ11のキャッシュメモリ38に転送する。その後、DMAエンジン40を起動し、キャッシュメモリ38の対象データを、ホストへ転送する。
このように、キャッシュメモリ26,38に、DRAMを使用する場合には、DRAMに、アドレスバスA−BUSでアドレスを送り、データバスD−BUSでデータのやり取りを行い、高速性を発揮する。前述のように、データには、BCC等のチエック機能を持つが、アドレスバスでのアドレスには、チエック機能を持たない。このため、DMA転送時に、アドレスの保証機能を必要とする。
[DMA回路]
図3は、本発明の一実施の形態のDMA転送を説明するためのディスクリプタ書き込み動作の説明図、図4は、本発明の一実施の形態のDMA転送を説明するためのディスクリプタ読み出し動作の説明図、図5は、本発明の一実施の形態のディスクリプタのフォーマット図である。
図3乃至図4は、図2のチャネルアダプタ11のDMA回路40が、キャッシュメモリ38のデータを、キャッシュマネージャ10のキャッシュメモリ26にDMA転送する例で示してある。
図3に示すように、ディスクリプタの書き込み動作では、CPU34は、ディスクリプタプログラムを起動し(1)、このプログラムの実行により、ディスクリプタを作成する(2)。この時、後述するように、CPU34は、このディスクリプタの一部に、ディスクリプタの番号を示すディスクリプタ・ポインタ情報を書き込む。そして、CPU34からメモリ38のディスクリプタ領域380に、作成したディスクリプタを書き込む(3)。
次に、ディスクリプタの読み出し動作では、図4に示すように、CPU34は、DMAプログラムを起動し(1)、このプログラムの実行により、DMAエンジン40が起動される(2)。DMAエンジン40は、メモリ38のディスクリプタ領域380からディスクリプタを読み出す(3)。
この読み出し後、DMAエンジン40は、CPU34が書き込んだディスクリプタ・ポインタ情報を、読み出しに使用したディスクリプタの番号を示すディスクリプタ・ボトムポインタ・レジスタ110(図9参照)の値と比較し、異なる場合は、そのディスクリプタを不当と判断し、DMA処理を中止する。
又、DMAエンジン40は、ディスクリプタの一部にCPU34が書き込んだディスクリプタ・ポインタのキャリー情報を、ディスクリプタ・ボトムポインタ・レジスタ110のキャリービットと比較し、異なる場合は,そのディスクリプタを不当と判断し、DMA処理を中止する。
即ち、ディスクリプタ領域380は、サーキュラーバッファとして使用されるので、ディスクリプタ・サイズのN倍のディスクリプタ領域は、全て使い終えると、最初の位置に戻って使用される。
このとき1周目は,ディスクリプタ・ポインタのキャリー情報として"0"を指定し、2周目以降は、ディスクリプタ領域を新しく使用するたびに"1"→"0"→"1"と更新する。
図5により、ディスクリプタのフォーマットの一例を説明する。前述のように、ディスクリプタは、CPU34が、DMAエンジン40に与えるためのDMA転送命令であり、転送したいデータのキャッシュメモリ104でのアドレスとデータバイト数、データ転送先(メモリ)のアドレスを含む。例えば、図5のディスクリプタのフォーマットに示すように、4ワード(1ワード、64ビット)のコマンドで構成される。1ワード目は、コマンドフィールドcmd、割り込み制御フィールド(例えば、「1」なら、本ディスクリプタの終了時に割り込みをあげる等)、BCCチエックモードBCC、転送先ノードTgt,転送先(Write Side)メモリアドレスDDAで構成される。
2ワード目は、転送バイト数SIZE(例えば、最大1Mbyte,最小8byte),転送元(Read Side)メモリアドレスSDAからなる。3ワード目は、チェック用Block−ID初期値Check BKID、4ワード目は、生成用(Replace)Block−ID初期値よりなる。本発明の一実施の形態では、この4ワード目(Word3)に、ディスクリプタ・ポインタ情報DPと、そのキャリー情報Cを設ける。
CPU34は、キャッシュメモリ38にデータを書込む度に、図5のようなディスクリプタ、即ち、そのディスクリプタを格納するポインタ値DPとキャリー情報Cを含むディスクリプタを作成し、キャッシュメモリ38内のディスクリプタ領域380に書込む。
更に、CPU34は、DMAエンジン38の持つディスクリプタ・ベースアドレス・レジスタ(図6の48)に,ディスクリプタ領域380の先頭アドレスを書き込む。これにより、DMAエンジン38は、ディスクリプタが、キャッシュメモリ38のディスクリプタ領域380のどこに書き込まれるかを知ることができる。
このように、CPUは、ディスクリプタを作成するときに、ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタの値とキャリー情報を書き込み、DMAエンジンがディスクリプタを読み出すときに,DMAエンジンが、その値が正しいかどうかを確認する。
これにより、CPU34がディスクリプタを書き込んだ際に、メモリコントローラ36とメモリ38間のアドレスに障害が起きた場合は、本来更新されるべきキャリー情報が更新されてないため、DMAエンジン40がこのディスクリプタを読み出すときに、不当なものとして検出できる。
また、DMAエンジン40が,ディスクリプタを読み出すときに、アドレスに故障が起きた場合は、ディスクリプタ内のポインタ情報が読み出そうとしたポインタと一致しないために、読み出したディスクリプタを異常なものと検出できる。
このようにして、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障に起因するデータの破壊を防ぐことができる。
図6は、本発明のかかる検出機能を持つDMAエンジンの一実施の形態の回路図である。図6に示すように、DMAエンジン40は,CPU I/F制御部42、メモリI/F制御部58、ディスクリプタ読み出し制御部60、データ転送制御部50を有する。
また、ディスクリプタ・ベースアドレスのレジスタ48、ディスクリプタ・トップポインタのレジスタ44、ディスクリプタ・ボトムポインタのレジスタ46、ディスクリプタ・ストアのレジスタ62を持つ。
さらに、転送完了により、ディスクリプタ・ボトムレジスタ46のポイント値を「1」更新するための加算器47と、レジスタ48のベースアドレスとレジスタ46のボトムポインタを加算するための加算器54と、レジスタ44のトップポインタとレジスタ46のボトムポインタを比較するための第1の比較器52と、レジスタ62に読み出したディスクリプタ内のポインタDPとキャリービットC(Word3)を、レジスタ46のボトムポインタと比較するための第2の比較器56を持つ。
ディスクリプタ・トップポインタ・レジスタ44のビット数は、キャッシュメモリ38上に格納されるディスクリプタの数に応じて決まる。例えば、1024個のディスクリプタが格納される場合、トップポインタ・レジスタ44は、10ビット必要となる。ディスクリプタ・ボトムポインタ・レジスタ46のビット数は、トップポインタ・レジスタ44のビット数に、キャリーの1ビットを加えたものになる。
この構成の動作を説明する。CPU34によるDMAエンジン40の起動時に、ベースアドレス、トップポインタ、ボトムポインタの各レジスタ44,46,48の設定値を、CPU I/F制御部42を通じて受け取り、各レジスタ44,46,48をそれぞれ指定の値に書き換える。
第1の比較器52によりトップポインタとボトムポインタの値が異なることを検出すると、ディスクリプタ読み出し制御部60は、実行すべきディスクリプタが、キャッシュメモリ38上にあると判断して、ボトムポインタの示す1つのディスクリプタをメモリ38から読み出すように、メモリI/F制御部58に指示する。このとき,読み出すべきディスクリプタのメモリ38上のアドレスは、加算器54により、ベースアドレスにボトムポインタを加えることによって得られ、このアドレスを読み出しアドレスとして、メモリI/F制御部58を介しキャッシュメモリ38とのアドレスバスA−BUSに送出する。
これにより、メモリ38からデータバスD−BUSを介し、メモリI/F制御部58を通し、ディスクリプタデータが返され、図5で説明したワード0,1,2,3の順に、ディスクリプタ・ストア・レジスタ62に格納される。
ディスクリプタを全て受け取ると、第2の比較器56は、レジスタ62のディスクリプタ内に指定されたポインタDPとキャリービットCを、ボトムポインタ・レジスタ46の値と比較する。その比較結果は、ディスクリプタ読み出し制御部60に通知される。
ディスクリプタ読み出し制御部60は、第2の比較器56による比較結果が一致の場合は、データ転送制御部50に対して、このディスクリプタによるデータ転送を行うよう指示する。データ転送制御部50は、ディスクリプタ・ストア・レジスタ62のディスクリプタに従い、データリードリクエストをメモリI/F制御部58を介しメモリ38に出力し、メモリ38から転送データを読み出し、読み出しデータを指定された転送先に転送する。
又、転送制御部50は、転送完了により、ディスクリプタ読み出し制御部60を介し、加算器47を動作し、ボトムレジスタ46のボトムポインタを「1」加算して、ボトムレジスタ46を更新する。ディスクリプタ読み出し制御部60は、前述の第1の比較部52の比較結果が一致する(即ち、トップレジスタ44の値と、ボトムレジスタ46の値が一致する)まで、これを繰り返す。
一方、第2の比較部56の比較結果が不一致の場合は、ディスクリプタ読み出し制御部60は、このディスクリプタによるデータ転送は中止し(即ち、転送制御部50に転送開始を指示しない)、CPU34に対して割り込みでエラー通知を行う。
この比較結果の不一致の原因としては、CPU34からキャッシュメモリ38に、ディスクリプタを書き込んだ際や、DMAエンジン40がキャッシュメモリ38から、ディスクリプタを読み出す際に、キャッシュメモリ38とのアドレスバスA−BUSで異常(例えば、断線等)が生じて、アドレスが正確に伝達できない場合である。
特に、キャッシュメモリ38にDRAMを使用する場合には、アドレスバスとデータバスとが分離され、且つアドレスバス上のアドレスにチエック情報が存在しないため、かかるDMA転送のデータエラーを防止するのに有効である。
[ディスクアレイ装置の第2の実施の形態]
図7は、本発明のディスクアレイ装置の第2の実施の形態の構成図、図8は、その要部の詳細構成図である。図7に示すように、ディスクアレイ装置は、ファイバチャネル・リンク18−1,18−2によって、2台のホストコンピュータ17−1,17−2に接続されている。
ディスクアレイ装置は、ホストインタフェースを担当するホストアダプタ11−1,11−2、キャッシュメモリ26−1,26−2、キャッシュメモリ26−1,26−2の管理等を行なうキャッシュコントローラ10−1,10−2、ディスクインタフェースを担当するディスクアダプタ13−1,13−2とを有する。
ホストアダプタ11−1,11−2、キャッシュメモリ26−1,26−2、キャッシュコントローラ10−1,10−2、ディスクアダプタ13−1,13−2は、図1のチャネルアダプタ、キャッシュマネージャ、デバイスアダプタとそれぞれ同一のものである。
更に、ディスクアレイ装置は、ディスクアダプタ13−1,13−2と複数のディスクドライブへの接続を提供するスイッチ16−1,16−2、及びディスクドライブ群12−1,12−2から構成されている。
このキャッシュコントローラ10−1,10−2は、ホストアダプタ11−1,11−2とディスクアダプタ13−1,13−2の間のデータ転送経路を提供する。また、キャッシュコントローラ10−1,10−2間にもデータ転送経路が設けられ、キャッシュメモリ26−1,26−2のデータのミラーリングに利用される。
キャッシュメモリ26−1,26−2は、前述のように、DRAMなどの揮発性のメモリで構成されるため、1つのキャッシュメモリ26−1又は26−2に格納されるデータは、必ずもう一方のキャッシュメモリ26−2又は26−1にもコピーを格納する。このコピー動作により、障害発生時にデータが消失することがないように制御される。これをキャッシュのミラーリングと呼ぶ。
図8で後述するように、各キャッシュコントローラ10−1,10−2は、ミラーリングのためのDMAエンジンをもち、キャッシュメモリ26−1,26−2内に格納されたデータを,キャッシュコントローラ10−1,10−2内のCPUの指示により、別のキャッシュコントローラのメモリに転送することができる。
この構成のディスクアレイ装置で、ホストコンピュータのデータを格納する時の動作を説明する。ホストコンピュータ17−1(又は17−2)が、ディスクへ格納するデータは、まずホストアダプタ11−1へ送信される。ホストアダプタ11−1は、受信したデータに、ブロックチェックコード(BCC)を付加した上で、キャッシュコントローラ10−1へ転送する。
キャッシュコントローラ10−1は、転送されたデータを、キャッシュメモリ26−1内に格納した後に、DMAエンジンを起動して,キャッシュコントローラ10−2へ当該データを転送する。キャッシュコントローラ10−2は、キャッシュメモリ26−2に転送データを格納する。これにより、ミラーリング処理を行なう。
ミラーリングが正常に完了すると、キャッシュコントローラ10−1は、ホストアダプタ11−1に対して通知を行い、ホストアダプタ11−1は、ホストコンピュータ17−1にデータの格納を正常に終了したことを知らせる。
又、キャッシュメモリ26−1,26−2内のディスクドライブ群12−1,12−2へのライトバック及びホストコンピュータからのリード動作は、図1及び図2と同一である。
図8に示すように、キャッシュコントローラ10−1,10−2は、ブリッジ回路としても機能し、メモリ制御するメモリコントローラ24を中心に、CPU20,22と,DMAエンジン28−1,28−2が接続されて、構成される。図8のように、CPUの性能要求により、CPUが、複数装備される場合や、1つ搭載される場合がある。CPU20,22とDMAエンジン28−1,28−2は、メモリコントローラ24を介して、キャッシュメモリ26−1,26−2にアクセスすることができる。
DMAエンジン28−1,28−2は,キャッシュコントローラ10−1,10−2外部にインタフェースを持ち、別のキャッシュコントローラと接続される。また,メモリコントローラ24には,ホストアダプタ11−1,11−2、ディスクアダプタ13−1,13−2が接続され、それぞれがキャッシュメモリ26−1,26−2にアクセスすることができる。
ホストコンピュータ17−1又は17−2からのデータ(ライトデータ)を受け取った後、データのミラーリング開始の判断は、キャッシュコントローラ10−1又は10−2内のCPU20,22が行う。この構成では、図3で説明したように、CPU20,22は、ホストからのデータを受け取ると、キャッシュメモリ26−1,26−2内の制御領域(ディスクリプタ領域)に、ディスクリプタを作成する。
図5で説明したように、ディスクリプタは、CPU20,22がDMAエンジン28−1,28−2にDMA転送指示を与えるための命令であり、コマンドフィールド、割り込み制御フィールド、転送元メモリアドレス、転送先メモリアドレス、転送データバイト長、チェック用Block-ID初期値、生成用Block-ID初期値、キャリー情報、ディスクリプタ・ポインタを有する。
図4及び図6で説明したように、DMAエンジン28−1,28−2は、図6と同一の構成を有し、ディスクリプタ・ベースアドレス・レジスタ48にディスクリプタ領域の先頭アドレスを書き込まれ、ディスクリプタ・トップポインタ・レジスタ44とディスクリプタ・ボトムポインタ・レジスタ46を持つ。これらのレジスタはそれぞれ、CPUがどれだけのディスクリプタをディスクリプタ領域に用意したか、DMAエンジンがどれだけのディスクリプタの実行を終えたかを示す。
又、DMAエンジン28−1,28−2は,ディスクリプタを読み出し、解析し、指定されたデータ転送を完了すると、ディスクリプタ・ボトムポインタ・レジスタ46を1つ進める。
この実施の形態では、ミラーリングのためのDMA転送に、図5及び図6のチエック機構を付与している。即ち、ミラーリングの動作は、データの信頼性を高めるために行われるものなので、その間にデータが破壊されることがあってはならない。
このため、ストレージ装置は上記に示したようにデータに対してチェックコードを付加することで保障するのが普通であり、またキャッシュメモリ自身もデータに対しECCコードを持ち、メモリを構成するDRAM素子の異常やメモリコントローラとDRAM間のデータパスの異常で、データが破壊されると検出し、ミラーリングを中止する。
一方、このDMAエンジンによるミラーリングの動作では、データは上記のチェックコードとECCによって保護されるが、ディスクリプタの保護が十分でないため、例えば、メモリコントローラとメモリ間のアドレス線に故障が発生した場合に、CPUが間違ったアドレスにディスクリプタを書き込んだり、DMAエンジンが間違ったアドレスからディスクリプタを読み出したりしてしまう可能性がある。
この場合、本来のデータとは異なるデータが別のキャッシュメモリに書き込まれたり、キャッシュメモリの本来書き込みたいのとは異なるアドレスにデータがミラーリングされたりして、結果的に正しくデータがミラーリングされず、キャッシュ上のデータが保障されなくなってしまう。
このため、ミラーリングのDMA転送でも、図5乃至図6で説明したディスクリプタの異常検出機能が、正確なミラーリングに有効である。即ち、CPUはディスクリプタを作成するときに,ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタの値とキャリー情報を書き込み、DMAエンジンがディスクリプタを読み出すときに、その値が正しいかどうかを確認する。
これにより、CPUがディスクリプタを書き込んだときに、メモリコントローラとメモリ間のアドレスに故障が起きた場合は、本来更新されるべきキャリー情報が更新されてないため、DMAエンジンがこのディスクリプタを読み出すときに不当なものとして検出できる。
また、DMAエンジンがディスクリプタを読み出すときに、アドレスに故障が起きた場合は、ディスクリプタ内のポインタ情報が読み出そうとしたポインタと一致しないために、読み出したディスクリプタを異常なものと検出できる。このようにして、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障(アドレス線の断線やアドレス線のドライバの障害等)に起因するデータの破壊を防ぐことができる。
即ち、この実施の形態によれば、キャッシュメモリに格納されるデータのミラーリングを行なう際に、DMAが不当なディスクリプタを使ってデータを転送するのを防ぐことができ、装置の信頼性を高める効果がある。
[他の実施の形態]
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。例えば、上述した実施形態では、データを保持する記憶部として磁気ディスク装置を例にあげて説明したが、本発明はこれに限定されるものではなく、記憶部における記憶媒体は、光ディスク、光磁気ディスク等にも適用できる。
また、上述した第1の実施の形態では、チャネルアダプタから制御モジュールへのライトデータのDMA転送で説明したが、リードデータのDMA転送や、ミラーリングのDMA転送にも適用できる。
さらに、各構成ユニット(ディスク装置、ホストコンピュータ、制御モジュール、キャッシュマネージャ、チャネルアダプタ、ディスクアダプタ、DMAエンジン)の数、もしくは、これら各ユニットが有するポートの数は、本発明において限定されるものではなく、必要に応じて適宜変更、組み合わせをして構成してもよい。
その上、DMA転送回路は、前述のディスクアレイ装置への適用を説明したが、他のデータ処理装置にも適用でき,対象とするメモリも、キャッシュメモリに限られない。
(付記1)データ処理ユニットが書き込んだDMA転送内容を示すディスクリプタを読み出し、メモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するDMA回路において、前記メモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第1及び第2のレジスタと、前記ボトムポインタが示す前記メモリのディスクリプタを読み出し、解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有することを特徴とするDMA回路。
(付記2)前記転送回路は、アドレス線とデータ線とが分離された前記メモリをアクセスすることを特徴とする付記1のDMA回路。
(付記3)前記転送回路は、前記比較回路の比較結果が良好でない時は、前記前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し動作を中止することを特徴とする付記1のDMA回路。
(付記4)前記転送回路は、1の前記ディスクリプタの読出し、解析によるデータ転送を完了した後に、前記ボトムポインタを格納する第2のレジスタを更新することを特徴とする付記1のDMA回路。
(付記5)前記第1のレジスタのトップポインタと前記第2のレジスタのボトムポインタとを比較する第2の比較回路を有し、前記転送回路は、前記第2の比較回路の比較結果により、指定されたDMA転送を終了することを特徴とする付記4のDMA回路。
(付記6)前記読み出したディスクリプタを格納する第3のレジスタを更に有し、前記比較回路は、前記第3のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第2のレジスタの前記ボトムポインタとを比較することを特徴とする付記1のDMA回路。
(付記7)前記メモリのディスクリプタ領域のベース位置を示すベースポインタを格納する第4のレジスタを更に有し、前記転送回路は、前記第2のレジスタの前記ボトムポインタと前記第4のレジスタのベースポインタとの加算値が示す前記メモリのディスクリプタを読み出すことを特徴とする付記1のDMA回路。
(付記8)前記転送回路は、前記メモリにディスクリプタの読出しを要求するディスクリプタ読出し制御回路と、前記メモリに前記読み出したディスクリプタに応じたデータの読出しを要求するデータ転送回路とを有し、前記ディスクリプタ読出し制御回路は、前記比較回路の比較結果に応じて、前記データ転送回路の読出し要求を制御することを特徴とする付記1のDMA回路。
(付記9)前記ディスクリプタ読出し制御回路は、前記ボトムポインタが示す前記メモリのディスクリプタを要求し、前記データ転送回路は、前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送することを特徴とする付記8のDMA回路。
(付記10)前記読み出したディスクリプタを格納する第3のレジスタを更に有し、前記比較回路は、前記第3のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第2のレジスタの前記ボトムポインタとを比較し、前記データ転送回路は、前記ディスクリプタ読み出し回路の転送許可に応じて、前記第3のレジスタの前記ディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送することを特徴とする付記8のDMA回路。
(付記11)複数のディスク装置と、上位からの要求に応じて、前記ディスク装置のデータのリード/ライトを行う制御ユニットとを有し、前記制御ユニットは、データ処理ユニットと、前記ディスク装置のためのデータを格納するキャッシュメモリと、前記データ処理ユニットが書き込んだDMA転送内容を示すディスクリプタを読み出し、前記キャッシュメモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するDMA回路とを有し、前記DMA回路は、前記キャッシュメモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第1及び第2のレジスタと、前記ボトムポインタが示す前記キャッシュメモリのディスクリプタを読み出し、解析して、前記キャッシュメモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有することを特徴とするディスクアレイ装置。
(付記12)前記転送回路は、アドレス線とデータ線とが分離された前記キャッシュメモリをアクセスすることを特徴とする付記11のディスクアレイ装置。
(付記13)前記転送回路は、前記比較回路の比較結果が良好でない時は、前記前記キャッシュメモリの前記ディスクリプタで指定されたアドレスのデータを読み出し動作を中止することを特徴とする付記11のディスクアレイ装置。
(付記14)前記転送回路は、1の前記ディスクリプタの読出し、解析によるデータ転送を完了した後に、前記ボトムポインタを格納する第2のレジスタを更新することを特徴とする付記11のディスクアレイ装置。
(付記15)前記第1のレジスタのトップポインタと前記第2のレジスタのボトムポインタとを比較する第2の比較回路を有し、前記転送回路は、前記第2の比較回路の比較結果により、指定されたDMA転送を終了することを特徴とする付記11のディスクアレイ装置。
(付記16)前記読み出したディスクリプタを格納する第3のレジスタを更に有し、前記比較回路は、前記第3のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第2のレジスタの前記ボトムポインタとを比較することを特徴とする付記11のディスクアレイ装置。
(付記17)前記キャッシュメモリのディスクリプタ領域のベース位置を示すベースポインタを格納する第4のレジスタを更に有し、前記転送回路は、前記第2のレジスタの前記ボトムポインタと前記第4のレジスタのベースポインタとの加算値が示す前記キャッシュメモリのディスクリプタを読み出すことを特徴とする付記11のディスクアレイ装置。
(付記18)前記転送回路は、前記キャッシュメモリにディスクリプタの読出しを要求するディスクリプタ読出し制御回路と、前記キャッシュメモリに前記読み出したディスクリプタに応じたデータの読出しを要求するデータ転送回路とを有し、前記ディスクリプタ読出し制御回路は、前記比較回路の比較結果に応じて、前記データ転送回路の読出し要求を制御することを特徴とする付記11のディスクアレイ装置。
(付記19)前記制御ユニットは、前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有し、前記DMA回路は、前記チャネルアダプタの前記キャッシュメモリと前記制御回路の前記キャッシュメモリとの間で、前記DMA転送することを特徴とする付記11のディスクアレイ装置。
(付記20)前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有する前記制御ユニットを複数有し、前記DMA回路は、1の前記制御ユニットの前記キャッシュメモリと他の前記制御ユニットの前記キャッシュメモリとの間で、前記DMA転送によるミラーリングすることを特徴とする付記11のディスクアレイ装置。
データ処理ユニットが、ディスクリプタを作成するときに、ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタを書き込み、DMAエンジンがディスクリプタを読み出すときに,DMAエンジンが、その値が正しいかどうかを確認するので、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障に起因するデータの破壊を防ぐことができる。特に、メモリがアドレス線とデータ線とが分離されているものの、アドレス障害を検出し、ディスクアレイ装置のミラーリング処理やデータ転送処理での転送データの誤りを防止でき、信頼性の高いシステムを構築できる。
本発明の第1の実施の形態のディスクアレイ装置の構成を示すブロック図である。 図1の実施の形態の制御モジュールの構成を示すブロック図である。 本発明の一実施の形態のディスクリプタ書き込み処理の説明図である。 本発明の一実施の形態のディスクリプタ読み出し処理の説明図である。 本発明の実施の形態のディスクリプタのフォーマットの構成図である。 本発明の実施の形態のDMA回路の構成を示すブロック図である。 本発明の第2の実施の形態のディスクアレイ装置の構成を示すブロック図である。 図7の実施の形態の制御モジュールの構成を示すブロック図である。 従来のDMA転送の説明図である。 従来のディスクリプタのフォーマットの構成図である。
符号の説明
10、10−1,10−2,10−3,10−4 制御モジュール(キャッシュマネージャ)
11、11−1〜11−8 チャネルアダプタ
12−1〜12−4 ディスク装置(ディスクドライブ群)
13、13−1〜13−8 デバイスアダプタ
14,14−1〜14−8 ルータ
16−1,16−2 スイッチ
17−1,17−2 ホストコンピュータ(データ処理装置)
24,26−1,26−2,38 キャッシュメモリ
20,22,34 CPU
15,28−1,28−2,40 DMA回路
44,46,48 ポインタレジスタ
50 転送制御回路
52,56 比較回路
54 加算回路
60 ディスクリプタ読み出し制御回路
62 ディスクリプタ・ストア・レジスタ
380 ディスクリプタ領域

Claims (5)

  1. データ処理ユニットが書き込んだDMA転送内容を示すディスクリプタを読み出し、メモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するDMA回路において、
    前記メモリに前記データ処理ユニットが、ディスクリプタの番号を示すディスクリプタポインタを付加して、書き込んだ複数のディスクリプタの先頭位置を示すトップポインタと、前記複数のディスクリプタの内、次のDMA対象のディスクリプタの位置を示すボトムポインタを格納する第1及び第2のレジスタと、
    前記ボトムポインタで前記メモリをリードアクセスし、前記メモリのディスクリプタを読み出すディスクリプタ読み出し制御回路と、
    前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、
    前記読み出したディスクリプタに含まれる前記ディスクリプタポインタと前記ボトムポインタとを比較する比較回路とを有し、
    前記ディスクリプタ読み出し制御回路は、前記比較回路の比較結果が一致を示さない時は、前記転送回路の前記データの読み出し動作を中止し、
    前記比較回路の比較結果が一致を示す時は、前記転送回路に転送開始指示を行い、前記転送後、前記第2のレジスタのボトムポインタを、次のディスクリプタを示す値に更新する
    ことを特徴とするDMA回路。
  2. 前記トップポインタと前記ボトムポインタとを比較する第2の比較回路を更に有し、
    前記ディスクリプタ読み出し制御回路は、前記第2の比較回路が一致を出力した時に、DMA転送を終了する
    ことを特徴とする請求項1のDMA回路。
  3. 前記読み出したディスクリプタを格納する第3のレジスタを更に有し、
    前記比較回路は、前記第3のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第2のレジスタの前記ボトムポインタとを比較し、
    前記転送回路は、前記ディスクリプタ読み出し回路の転送許可に応じて、前記第3のレジスタの前記ディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する
    ことを特徴とする請求項1のDMA回路。
  4. 複数のディスク装置と、
    上位からの要求に応じて、前記ディスク装置のデータのリード/ライトを行う制御ユニットとを有し、
    前記制御ユニットは、
    データ処理ユニットと、
    前記ディスク装置のためのデータを格納するキャッシュメモリと、
    前記データ処理ユニットが書き込んだDMA転送内容を示すディスクリプタを読み出し、前記キャッシュメモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するDMA回路とを有し、
    前記DMA回路は、
    前記キャッシュメモリに前記データ処理ユニットが、ディスクリプタの番号を示すディスクリプタポインタを付加して、書き込んだ複数のディスクリプタの先頭位置を示すトップポインタと、前記複数のディスクリプタの内、次のDMA対象のディスクリプタの位置を示すボトムポインタを格納する第1及び第2のレジスタと、
    前記ボトムポインタで前記メモリをリードアクセスし、前記メモリのディスクリプタを読み出すディスクリプタ読み出し制御回路と、
    前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、
    前記読み出したディスクリプタに含まれる前記ディスクリプタポインタと前記ボトムポインタとを比較する比較回路とを有し、
    前記ディスクリプタ読み出し制御回路は、前記比較回路の比較結果が一致を示さない時は、前記転送回路の前記データの読み出し動作を中止し、
    前記比較回路の比較結果が一致を示す時は、前記転送回路に転送開始指示を行い、前記転送後、前記第2のレジスタのボトムポインタを、次のディスクリプタを示す値に更新する
    ことを特徴とするディスクアレイ装置。
  5. 前記転送回路は、アドレス線とデータ線とが分離された前記キャッシュメモリをアクセスする
    ことを特徴とする請求項4のディスクアレイ装置。
JP2004372441A 2004-12-24 2004-12-24 Dma回路及びこれを用いたディスクアレイ装置 Expired - Fee Related JP4390694B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004372441A JP4390694B2 (ja) 2004-12-24 2004-12-24 Dma回路及びこれを用いたディスクアレイ装置
KR1020050054158A KR100708567B1 (ko) 2004-12-24 2005-06-22 Dma 회로 및 이것을 이용한 디스크 어레이 장치
CNB2005100776884A CN100474278C (zh) 2004-12-24 2005-06-22 直接存储器存取电路以及使用该电路的盘阵列设备
US11/239,069 US7552249B2 (en) 2004-12-24 2005-09-30 Direct memory access circuit and disk array device using same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004372441A JP4390694B2 (ja) 2004-12-24 2004-12-24 Dma回路及びこれを用いたディスクアレイ装置

Publications (2)

Publication Number Publication Date
JP2006178795A JP2006178795A (ja) 2006-07-06
JP4390694B2 true JP4390694B2 (ja) 2009-12-24

Family

ID=36613089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004372441A Expired - Fee Related JP4390694B2 (ja) 2004-12-24 2004-12-24 Dma回路及びこれを用いたディスクアレイ装置

Country Status (4)

Country Link
US (1) US7552249B2 (ja)
JP (1) JP4390694B2 (ja)
KR (1) KR100708567B1 (ja)
CN (1) CN100474278C (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183692A (ja) * 2005-12-29 2007-07-19 Fujitsu Ltd データ処理装置
JP4362135B2 (ja) 2007-02-13 2009-11-11 富士通株式会社 データ転送装置およびデータ転送方法
TWI465905B (zh) 2010-09-22 2014-12-21 Toshiba Kk 記憶體系統、主機控制器、及直接記憶體存取之控制方法
US10353633B2 (en) * 2013-12-19 2019-07-16 Sony Interactive Entertainment LLC Mass storage virtualization for cloud computing
JP2017130002A (ja) * 2016-01-20 2017-07-27 富士通株式会社 ストレージ制御装置および制御プログラム
US10983920B2 (en) * 2018-02-08 2021-04-20 Xilinx, Inc. Customizable multi queue DMA interface
CN110888675B (zh) * 2018-09-11 2021-04-06 深圳云天励飞技术有限公司 硬件系统和电子设备
FR3094122A1 (fr) * 2019-03-22 2020-09-25 Stmicroelectronics (Grenoble 2) Sas Dispositif électronique de traitement d’images
JP7476733B2 (ja) * 2020-09-07 2024-05-01 オムロン株式会社 通信制御機器および通信制御機器の制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63211032A (ja) 1987-02-27 1988-09-01 Nippon Telegr & Teleph Corp <Ntt> 共通資源制御方式
JPH0358217A (ja) 1989-07-27 1991-03-13 Nec Corp 電子ディスクサブシステム
KR0182709B1 (ko) * 1996-04-19 1999-05-15 유기범 교환기에 있어서 프로세서간 통신방법
JP3790323B2 (ja) * 1997-04-16 2006-06-28 株式会社ルネサステクノロジ データ転送制御装置、マイクロコンピュータ及びデータ処理システム
JP2001229120A (ja) * 2000-02-18 2001-08-24 Sharp Corp チェーン式dmaの処理誤り検出方法及びdmaコントローラ
TWI226546B (en) * 2002-06-18 2005-01-11 Via Tech Inc Method for checking address of data to be transferred in DMA mode and DMA controller
CN1204500C (zh) 2002-06-27 2005-06-01 威盛电子股份有限公司 直接存储器存取控制器及直接存储器存取的控制方法
JP2004110159A (ja) 2002-09-13 2004-04-08 Ricoh Co Ltd データ転送制御装置
CN1296845C (zh) 2003-01-24 2007-01-24 华为技术有限公司 一种磁盘存储系统
US7659904B2 (en) * 2003-04-07 2010-02-09 Ati Technologies Ulc System and method for processing high priority data elements
JP4371724B2 (ja) 2003-07-03 2009-11-25 株式会社日立製作所 記憶システム及び記憶装置システム
US20050114561A1 (en) * 2003-11-24 2005-05-26 Ho-Keng Lu Method for performing DMA transfers with dynamic descriptor structure

Also Published As

Publication number Publication date
CN100474278C (zh) 2009-04-01
CN1794213A (zh) 2006-06-28
US7552249B2 (en) 2009-06-23
KR20060073420A (ko) 2006-06-28
US20060143329A1 (en) 2006-06-29
KR100708567B1 (ko) 2007-04-19
JP2006178795A (ja) 2006-07-06

Similar Documents

Publication Publication Date Title
US7590884B2 (en) Storage system, storage control device, and storage control method detecting read error response and performing retry read access to determine whether response includes an error or is valid
US6760814B2 (en) Methods and apparatus for loading CRC values into a CRC cache in a storage controller
US6981171B2 (en) Data storage array employing block verification information to invoke initialization procedures
US7036066B2 (en) Error detection using data block mapping
US8713251B2 (en) Storage system, control method therefor, and program
US5528755A (en) Invalid data detection, recording and nullification
JP2022153654A (ja) パーシステントメモリシステム等のデータ完全性
US20020169996A1 (en) Method and apparatus for providing write recovery of faulty data in a non-redundant raid system
JP2007513435A (ja) データ組織化を管理するための方法、システム、及びプログラム
US7562264B2 (en) Fault tolerant soft error detection for storage subsystems
JP4322870B2 (ja) Raid装置、raid制御方法、及びraid制御プログラム
US7606971B2 (en) Storage control apparatus and external storage apparatus
US7293138B1 (en) Method and apparatus for raid on memory
KR100640037B1 (ko) 파일 제어 시스템 및 파일 제어 장치
JP4390694B2 (ja) Dma回路及びこれを用いたディスクアレイ装置
US7398448B2 (en) Storage system has the function of preventing drive write error
US7475279B2 (en) Data storage system, data storage control device, and write error diagnosis method for disks thereof
US7114014B2 (en) Method and system for data movement in data storage systems employing parcel-based data mapping
US9367393B2 (en) Storage control apparatus and storage control method
JP3964629B2 (ja) ディスクアレイ装置のパトロールによるデータパス異常検出方法及びディスクアレイ装置を備えたコンピュータシステム
WO2001001581A9 (en) Data integrity management for data storage systems
JP2006146633A (ja) ディスクアレイ制御装置及び方法並びにディスクアレイシステム
JP2003280981A (ja) メモリコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090608

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: 20091006

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: 20091006

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

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4390694

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131016

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees