JP4451837B2 - データ転送装置およびデータ転送方法 - Google Patents

データ転送装置およびデータ転送方法 Download PDF

Info

Publication number
JP4451837B2
JP4451837B2 JP2005334714A JP2005334714A JP4451837B2 JP 4451837 B2 JP4451837 B2 JP 4451837B2 JP 2005334714 A JP2005334714 A JP 2005334714A JP 2005334714 A JP2005334714 A JP 2005334714A JP 4451837 B2 JP4451837 B2 JP 4451837B2
Authority
JP
Japan
Prior art keywords
pointer
transmission
data
ring buffer
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.)
Active
Application number
JP2005334714A
Other languages
English (en)
Other versions
JP2006190257A (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 JP2005334714A priority Critical patent/JP4451837B2/ja
Priority to US11/353,223 priority patent/US7383377B2/en
Publication of JP2006190257A publication Critical patent/JP2006190257A/ja
Application granted granted Critical
Publication of JP4451837B2 publication Critical patent/JP4451837B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Description

この発明は、データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置およびデータ転送方法に関し、特に、送信演算処理装置と受信演算処理装置との間での送受信アドレスの授受を不要とし、データ転送速度を向上するとともに、送信演算処理装置および受信演算処理装置の負荷を軽減することができるデータ転送装置およびデータ転送方法に関するものである。
ディスクアレイ装置では、ホストとのインタフェースとして動作するチャネルアダプタ(CA:Channel Adapter)とキャッシュの管理を行なうキャッシュ制御部(CM:Cash Manager)との間で制御情報などの転送を行なう必要がある。
図8は、ディスクアレイ装置の構成を示す図である。同図に示すように、ディスクアレイ装置7は、ファイバーチャネルリンク3を介してホスト2と接続され、CA70と、複数のCM80と、ディスク90とを有する。また、CA70とCM80はPCIバスで接続され、その間には幾つかのブリッジやスイッチが介在している。
CA70は、演算処理装置であるCA−MPU71と、付随するCA−メモリ72と、CA70とCM80との間でDMA(Direct Memory Access)によってデータを転送するDMAエンジンを含むLSI700とを有する。CM80は、演算処理装置であるCM−MPU81と、付随するCM−メモリ82とを有する。また、CA70とCM80との間では、DMA転送の前などに8バイト〜512バイトの制御情報のデータ転送が行なわれる。
図9は、CM80からCA70への従来のデータ転送シーケンス(リードシーケンス)を説明するための説明図である。同図に示すように、CM80からCA70へのデータ転送では、CM−MPU81は、CM−メモリ82に転送するデータであるメッセージ(図中MSG)と、メッセージを格納したメモリアドレス(図中ADR)をそれぞれ格納する。そして、LSI700が、CM80が転送可能状態であることをたまにリードし、確認する(図中※)。
その結果、転送可能状態であれば、CM−MPU81が、転送メッセージ(図中MSG)が格納されているアドレス(図中ADR)をCA−メモリ72に格納(ライト)する(1)。そして、CM−MPU81が、ADRを格納したCA−メモリ72のアドレス(図中WP)をLSI700にライトし、LSI700は、WPが存在する事をCA−MPU71へ通知する(図中破線、(2))。
そして、CA−MPU71は、LSI700からの通知で、割込み要因をリードしてLSI700にWPがあることを検出し、LSI700上のWPを読んで(リード)、WPで指定されるCA−メモリ72からメッセージの格納されているADRを読み出す(3)。
そして、CA−MPU71は、ADR情報をLSI700へ通知し、LSI700を起動する(4)。起動されたLSI700は、ADRで指定されるCM−メモリ82上のメッセージをCA−メモリ72上へ転送する(5)。
また、図10は、CA70からCM80への従来のデータ転送シーケンス(ライトシーケンス)を説明するための説明図である。同図に示すように、CA70からCM80へのデータ転送では、CA−MPU71がLSI700のDMA機能を使い、CM−メモリ82へメッセージ(図中MSG)をライトする(1)。
そして、CA−MPU71がメッセージを格納したアドレスをLSI700のレジスタ上へライトし(2)、LSI700はCM−MPU81へ割込みによりアドレスの存在を通知する(3)。すると、割込みを受けたCM−MPU81は、割込み要因のリードとアドレスのリードを行なう(4)。そして、CM−MPU81は、メッセージの受信を完了した事を示すために、LSI700に処理の終了したメッセージのアドレスを通知(ライト)する(5)。
なお、プロセッサ間のメッセージ転送については、例えば、特許文献1にシェアードRAMを用いてCPU間でメッセージの転送を行なう技術が開示されている。
特開平3−174645号公報
図9に示したリードシーケンスでは、送信メッセージを格納したCM−メモリ82のアドレスはCM−MPU81が決定するため、このアドレスをDMA起動の前にCM−MPU81がCA−MPU71に通知する必要がある。また、図10に示したライトシーケンスでは、送信先アドレスはCA−MPU71が決定するためDMA起動前のMPU間の通信は不要であるが、DMA起動後に送信先アドレスをCA−MPU71がCM−MPU81に通知する必要がある。
すなわち、いずれのシーケンスにおいてもMPU間でアドレス情報を通信する必要があるが、MPU間の通信では、CA70とCM80がPCIバスやスイッチなどで接続されているため、通信に時間がかかるとともに、MPUに多大な負荷がかかるという問題がある。
また、特許文献1に記載されたCPU間のメッセージ転送では、シェアードRAMが必要となるという問題がある。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、送信演算処理装置と受信演算処理装置との間での送受信アドレスの授受を不要とし、データ転送速度を向上するとともに、送信演算処理装置および受信演算処理装置の負荷を軽減することができるデータ転送装置およびデータ転送方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、請求項1の発明に係るデータ転送装置は、データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送手段と、前記メモリ間転送手段による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、を備えたことを特徴とする。
この請求項1の発明によれば、書込ポインタと読出ポインタの値が同一であるか否かを判定し、値が異なると判定した場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信リングバッファの読出ポインタと同一の値で指定される位置に書き込み、データの書き込みが完了すると、読出ポインタを更新するよう構成したので、送信演算処理装置と受信演算処理装置との間での送受信アドレスの授受を不要とすることができる。
また、請求項2の発明に係るデータ転送装置は、請求項1の発明において、受信リングバッファに転送されたデータのうち受信演算処理装置が受信処理を完了したデータの次のデータの位置を受信リングバッファの受信メモリでの位置との相対値で指定し、受信演算処理装置が受信処理を完了した際に更新する完了ポインタを記憶する完了ポインタ記憶手段と、前記完了ポインタ記憶手段により記憶された完了ポインタおよび前記書込ポインタ記憶手段により記憶された書込ポインタに基づいて受信リングバッファに空があるか否かを判定する空状況判定手段と、をさらに備えたことを特徴とする。
この請求項2の発明によれば、受信リングバッファに転送されたデータのうち受信演算処理装置が受信処理を完了したデータの次のデータの位置を受信リングバッファの受信メモリでの位置との相対値で指定し、受信演算処理装置が受信処理を完了した際に更新する完了ポインタおよび書込ポインタに基づいて受信リングバッファに空があるか否かを判定するよう構成したので、受信データが受信演算処理装置によって処理される前に別のデータで上書きされてしまうことを防ぐことができる。
また、請求項3の発明に係るデータ転送装置は、データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送手段と、前記メモリ間転送手段による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、を備えたことを特徴とする。
この請求項3の発明によれば、書込ポインタと読出ポインタの値が同一であるか否かを判定し、値が異なると判定した場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信リングバッファの読出ポインタと同一の値で指定される位置に書き込み、データの書き込みが完了すると、読出ポインタを更新するよう構成したので、送信演算処理装置と受信演算処理装置との間での送受信アドレスの授受を不要とすることができる。
また、請求項4の発明に係るデータ転送方法は、データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置のデータ転送方法であって、転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送工程と、前記メモリ間転送工程による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、を含んだことを特徴とする。
この請求項4の発明によれば、書込ポインタと読出ポインタの値が同一であるか否かを判定し、値が異なると判定した場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信リングバッファの読出ポインタと同一の値で指定される位置に書き込み、データの書き込みが完了すると、読出ポインタを更新するよう構成したので、送信演算処理装置と受信演算処理装置との間での送受信アドレスの授受を不要とすることができる。
また、請求項5の発明に係るデータ転送方法は、データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送方法であって、転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送工程と、前記メモリ間転送工程による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、を含んだことを特徴とする。
この請求項5の発明によれば、書込ポインタと読出ポインタの値が同一であるか否かを判定し、値が異なると判定した場合に、送信リングバッファの読出ポインタで指定された位置に格納された格納アドレスのデータを読み出して受信メモリに転送し、受信リングバッファの読出ポインタと同一の値で指定される位置に書き込み、データの書き込みが完了すると、読出ポインタを更新するよう構成したので、送信演算処理装置と受信演算処理装置との間での送受信アドレスの授受を不要とすることができる。
請求項1、3、4および5の発明によれば、送信演算処理装置と受信演算処理装置との間での送受信アドレスの授受を不要とするので、データ転送速度を向上するとともに、送信演算処理装置および受信演算処理装置の負荷を軽減することができるという効果を奏する。
また、請求項2の発明によれば、受信データが受信演算処理装置によって処理される前に別のデータで上書きされてしまうことを防ぐので、確実にデータ転送を行なうことができるという効果を奏する。
以下に添付図面を参照して、この発明に係るデータ転送装置およびデータ転送方法の好適な実施例を詳細に説明する。
まず、本実施例1に係るディスクアレイ装置によるCAからCMへのデータ転送方式について説明する。図1−1は、本実施例1に係るディスクアレイ装置によるCAからCMへのデータ転送方式を説明するための説明図である。
同図に示すように、このディスクアレイ装置1では、送信メッセージを格納する送信用リングバッファ12aをCA−メモリ12に用意し、受信メッセージを格納する受信用リングバッファ22aをCM−メモリ22に用意する。
そして、送信用リングバッファ12aと受信用リングバッファ22aは、同じ構成のリングバッファとし、送信用リングバッファ12aと受信用リングバッファ22aのポインタを同期化する。すなわち、送信用リングバッファ12aのポインタAで指定される位置に格納されたメッセージは、受信用リングバッファ22aのポインタAで指定される位置に転送される。
したがって、送信先アドレスが受信用リングバッファ22aのアドレスにポインタ分のアドレスを加えたものとして算出することができ、メッセージ転送ごとに送信先アドレスをMPU間で通信する必要がなくなる。
このため、LSI100でCA−メモリ12とCM−メモリ22との間でDMAによるメッセージ転送を行なう機能部であるCMI(CoMmunication Interface)110にTOPポインタ、BTMポインタおよびCMPポインタの三つのポインタを用意する。
ここで、TOPポインタは、送信用リングバッファ12aに送信メッセージを書き込む位置を指定し、BTMポインタは、送信用リングバッファ12aから読み出すメッセージの位置および受信用リングバッファ22aにメッセージを格納する位置を指定する。
また、CMPポインタは、受信用リングバッファ22aからCM20のMPUが受信メッセージを読み出す位置を指定する。すなわち、CMPポインタは、受信用リングバッファ22aの中でCM20のMPUの処理が完了したメッセージの次の位置を指定する。
なお、ポインタは、メッセージの格納場所の番号を示す。ポインタをメッセージの格納場所のアドレスではなく番号とすることによって、ポインタの情報量を減らし、ポインタの読み出しや書き込みを高速化することができる。
CA10のMPUが送信用リングバッファ12aに送信メッセージを格納してTOPポインタを更新し、更新したTOPポインタをCMI110に書き込むと、CMI110がTOPポインタとBTMポインタが異なることから送信メッセージがあると判定する。
そして、CMI110は、送信メッセージを送信用リングバッファ12aのBTMポインタで指定される位置から読み出してCM−メモリ22へ転送し、受信用リングバッファ22aのBTMポインタで指定される位置に書き込む。また、CMI110は、BTMポインタをCM−メモリ22に書き込み、BTMポインタを更新する。
また、CM20のCPUは、受信したメッセージをCM−メモリ22のCMPポインタを用いて読み出し、読み出したメッセージの処理を終了するとCMPポインタを更新してCMI110のCMPポインタに書き込みを行なうことによってメッセージ処理の終了をCMI110に通知する。
例えば、図1−1では、送信用リングバッファ12aに三つのメッセージMSG0、MSG1およびMSG2がCA10のMPUによって準備され、TOPポインタがMSG2を指定している。また、MSG1が転送中であることから、BTMポインタがMSG1を指定し、MSG0は転送が終了してCM20のMPUによる処理が未完であることから、CMPポインタがMSG0を指定している。
なお、転送シーケンスとポインタとの関係は以下のようになる。初期値としてTOPポインタ、BTMポインタおよびCMPポインタは「0」の状態にあり、CA10のMPUが転送する二つのメッセージMSG0およびMSG1を送信用リングバッファ12aに格納してTOPポインタを「2」に更新する。この時、TOPポインタ=2、BTMポインタ=0、CMPポインタ=0となる。
そして、CMI110は、TOPポインタ≠BTMポインタであることを検出し、MSG0の転送を開始する。そして、MSG0の転送を終了すると、CM20のMPUへ割込みを上げ、BTMポインタをインクリメントする。この時、TOPポインタ=2、BTMポインタ=1、CMPポインタ=0となる。
一方、CM20のMPUは、CMI110からの割込みによってメッセージが届いていることを認識し、受信用リングバッファ22aのCMPポインタで指定された位置からMSG0を読み出して処理する。そして、MSG0の処理が完了するとCMPポインタをインクリメントするとともにCMI110に書き込み、MSG0の受信が正常に終了したことをCMI110に通知する。この時、TOPポインタ=2、BTMポインタ=1、CMPポインタ=1となる。
また、CMI110は、TOPポインタ=BTMポインタとなるまでメッセージの転送とBTMポインタの更新を繰り返す。なお、CMI110は、CM20のMPUによるCMPポインタの更新を待つことなくメッセージの転送とBTMポインタの更新を行なう。
このように、本実施例1によるディスクアレイ装置では、CA−メモリ12とCM−メモリ22に同じ構成のリングバッファを設け、CMI110にTOPポインタ、BTMポインタおよびCMPポインタを設け、これらのリングバッファとポインタを用いてCMI110がCA−メモリ12からCM−メモリ22にメッセージを転送することとしたので、CA10のMPUとCM20のMPUとの間でアドレス情報を通信する必要がなく、メッセージの転送を高速に行なうともに、両MPUの負荷を軽減することができる。
特に、CM20とCA10の間には、スイッチやルータといった汎用デバイスが入るため、CM20のMPUからCMI110の情報をリードするとリード完了までに時間がかかりCM20のMPUの負荷が大きくなる。これを避けるため、CA10のMPUからCM20のMPUへのメッセージ送信では、CMI110は、CM−メモリ22にBTMポインタを書き込むことによって受信用リングバッファ22aの書き込み位置をCM20のMPUに通知する。これによって、CM20のMPUは、CMI110のレジスタをリードすることなく受信メッセージの格納場所を取得することができる。
なお、ここでは、CA10からCM20へメッセージを転送する場合について説明したが、送信用リングバッファをCM−メモリ22に設け、受信用リングバッファをCA−メモリ12に設けることによって、同様の方式でCM20からCA10へメッセージを転送することができる。
また、ここでは、送信用リングバッファおよび受信用リングバッファにメッセージを格納する場合について説明したが、リングバッファにはメッセージの格納先のアドレスを格納することもできる。
図1−2は、メッセージの代わりにメッセージ格納アドレスを送信用リングバッファに格納する場合を示す図である。同図に示すように、送信用リングバッファ12bには、MSG0、MSG1、MSG2などの格納先のアドレスであるadr0、adr1、adr2などが格納される。
次に、本実施例1に係るCMI110の構成について説明する。図2は、本実施例1に係るCMI110の構成を示す機能ブロック図である。なお、ここでは、CA10からCM20へメッセージを転送する場合について説明する。
同図に示すように、このCMI110は、TOPポインタ格納レジスタ111と、BTMポインタ制御レジスタ112と、CMPポインタ格納レジスタ113と、TOP/BTM比較部114と、TOP/CMP比較部115と、メッセージリングバッファリードモジュール116と、通知制御部117と、PCIバス制御部118および119とを有する。
TOPポインタ格納レジスタ111は、TOPポインタを格納するレジスタであり、CA10のMPUが送信用リングバッファ12aにメッセージを書き込んだ際に、このTOPポインタ格納レジスタ111のTOPポインタを更新する。
BTMポインタ制御レジスタ112は、BTMポインタを格納するレジスタであり、CA−メモリ12からCM−メモリ22へのメッセージ転送の終了をメッセージリングバッファリードモジュール116から通知されるとBTMポインタをインクリメントする。
CMPポインタ格納レジスタ113は、CMPポインタを格納するレジスタであり、CM20のMPUが受信メッセージに対する処理を完了すると、このCMPポインタ格納レジスタ113のCMPポインタを更新する。
TOP/BTM比較部114は、TOPポインタ格納レジスタ111に格納されたTOPポインタとBTMポインタ制御レジスタ112に格納されたBTMポインタとを比較し、TOPポインタ≠BTMポインタであるときにメッセージリングバッファリードモジュール116にメッセージ転送開始を指示する処理部である。
TOP/CMP比較部115は、CM−メモリ22の受信用リングバッファ22aに空領域があるか否かをTOPポインタとCMPポインタを比較して判定する処理部であり、受信用リングバッファ22aが空の状態でなく、TOPポインタとCMPポインタの値が等しい場合には、受信用リングバッファ22aに空領域がないと判定する。
メッセージリングバッファリードモジュール116は、TOP/BTM比較部114からメッセージ転送開始指示を受け、TOP/CMP比較部115が受信用リングバッファ22aに空領域があると判定した場合に、CA−メモリ12の送信用リングバッファ12aのBTMポインタで指定される位置からメッセージを読み出してCM−メモリ22の受信用リングバッファ22aのBTMポインタで指定される位置に送信する処理部である。また、このメッセージリングバッファリードモジュール116は、メッセージ転送が終了すると、転送終了をBTMポインタ制御レジスタ112および通知制御部117へ通知する。
通知制御部117は、メッセージの転送終了をメッセージリングバッファリードモジュール116から通知されると、CM20のMPUへ割込みを発生して未処理メッセージが受信用リングバッファ22aにあることを通知する処理部である。
PCIバス制御部118は、CA10のMPUやCA−メモリ12と接続するPCIバスを制御する制御部であり、PCIバス制御部119は、CM20のMPUやCM−メモリ22と接続するPCIバスを制御する制御部である。
なお、図2では、送信用リングバッファ12aにメッセージを格納する場合のCMI110の構成を示したが、送信用リングバッファ12bにメッセージ格納アドレスを格納する場合には、CMIの構成が異なってくる。
図3は、送信用リングバッファ12bにメッセージ格納アドレスを格納する場合のCMIの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図2に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
図3に示すように、このCMI120は、図2に示したCMI110と比較するとメッセージリングバッファリードモジュール116に代えてアドレスリングバッファリードモジュール116aと、メッセージリードモジュール116bとを有する。
アドレスリングバッファリードモジュール116aは、送信用リングバッファ12bからメッセージ格納アドレスを読み出してメッセージリードモジュール116bに渡す処理部である。
メッセージリードモジュール116bは、アドレスリングバッファリードモジュール116aから受け取ったメッセージ格納アドレスで指定されるCA−メモリ12からメッセージを読み出してCM−メモリ22の受信用リングバッファ22aの対応する位置に送信する処理部である。
このように、メッセージリングバッファリードモジュール116の代わりにアドレスリングバッファリードモジュール116aと、メッセージリードモジュール116bを設けることによって、送信用リングバッファ12bに格納アドレスが格納されたメッセージを転送することができる。
次に、CA10からCM20へのメッセージ転送の動作シーケンスについて図4〜図6を用いて説明する。図4は、CA10からCM20へ単一メッセージを転送する場合の動作シーケンスを説明するための説明図である。なお、ここでは、送信用リングバッファ12bにメッセージ格納アドレスを格納する場合について説明する。
同図に示すように、このメッセージ転送では、CA10のMPUであるCA−MPU11がCMPポインタをCMI120のCMPポインタ格納レジスタ113から読み出し、CA−メモリ12に格納したTOPポインタと比較して受信用リングバッファ22aに空領域があるか否かを調べる(1)。
具体的には、受信用リングバッファ22aが空でなく、CMPポインタとTOPポインタが等しい場合には、受信用リングバッファ22aに空領域がないと判定する。なお、後述するように、受信用リングバッファ22aに空領域がない場合には、CMI120が受信用リングバッファ22aへのメッセージの転送を行なわないため、この部分は省略することもできる。
そして、CA−MPU11は、受信用リングバッファ22aに空領域がある場合には、送信メッセージであるMSG0が格納されているアドレスmema0を送信用リングバッファ12bに書き込み(2)、CA−メモリ12のTOPポインタを更新するとともに、CMI120のTOPポインタを更新する(3)。
すると、TOPポインタが更新されたCMI120は、CM20がenable状態(メッセージ受信可能状態)であればTOPポインタとBTMポインタを比較し(4)、両者が異なるので、mema0およびMSG0を読み出す(5)。
そして、読み出したMSG0を受信用リングバッファ22aのBTMポインタが指定する位置に格納し、CM−メモリ22のBTMポインタを更新するとともにCM20のMPUに割込みを発生する(6)。そして、BTMポインタ制御レジスタ112に格納されたBTMポインタを更新し(7)、CA−MPU11に割込みを発生する(8)。
一方、割込みを受け取ったCM20のMPUは、受信用リングバッファ22aの受信メッセージを処理するとCMPポインタ格納レジスタ113に格納されたCMPポインタを更新し(9)、受信メッセージの処理が完了したことをCMI120に通知する。
このように、CMI120が、TOPポインタとBTMポインタが異なる場合に、送信用リングバッファ12bのBTMポインタで指定される場所からメッセージ格納アドレスを読み出し、CA−メモリ12のメッセージ格納アドレスで指定される領域に格納されたメッセージを受信用リングバッファ22aのBTMポインタで指定される位置に転送することによって、CA10とCM20のMPU間でアドレス情報を通信することなくメッセージを転送することができる。
図5は、CA10からCM20へ二つのメッセージを転送する場合の動作シーケンスを説明するための説明図である。同図において、(1)〜(8)のシーケンスまでは、二つのメッセージ格納アドレスmema0およびmema1を送信用リングバッファ12bに格納することとTOPポインタとBTMポインタの差が「2」であること以外は図4に示したシーケンスと同様である。
シーケンス(8)でCA−MPU11に割込みを発生した後、CMI120は、二つ目のメッセージMSG1を読み出す(9)。そして、読み出したMSG1を受信用リングバッファ22aのBTMポインタが指定する位置に転送し、CM−メモリ22のBTMポインタを更新するとともにCM20のMPUに割込みを発生する(10)。そして、BTMポインタ制御レジスタ112に格納されたBTMポインタを更新し(11)、CA−MPU11に割込みを発生する(12)。
一方、割込みを受け取ったCM20のMPUは、受信リングバッファ22aの受信メッセージMSG0およびMSG1を処理するとCMPポインタ格納レジスタ113に格納されたCMPポインタを更新し(13)、受信メッセージMSG0およびMSG1の処理が完了したことをCMI120に通知する。
そして、受信メッセージMSG0およびMSG1の処理が完了したことを通知されたCMI120は、CA−MPU11に割込みを発生する(14)。また、CMI120は、CMPポインタとBTMポインタを比較し、両者が異なることから二つのメッセージの受信処理がCM20のMPUによって行なわれたことを認識し、CM20のMPUに割込みを発生する(15)。
そして、CM20のMPUがCMPポインタ格納レジスタ113に格納されたCMPポインタを更新し(16)、CMPポインタが更新されたCMI120は、CA−MPU11に割込みを発生する(17)。
このように、受信メッセージの処理が完了したことを通知されたCMI120が、CMPポインタとBTMポインタを比較し、両者が異なる場合には複数のメッセージの受信処理がCM20のMPUによって行なわれたことを認識し、CM20のMPUに割込みを発生し、CM20のMPUがCMPポインタ格納レジスタ113に格納されたCMPポインタを更新することによって、複数の受信メッセージの処理がまとめてCM20のMPUで行なわれた場合にも、CMPポインタを正しく更新することができる。
なお、この例では、二つの受信メッセージの処理がまとめてCM20のMPUで行なわれた場合について説明したが、二つ目のメッセージMSG1が受信用リングバッファ22aに書き込まれる前にMSG0の処理が終了してCM20のMPUがCMPポインタ格納レジスタ113に格納されたCMPポインタを更新する場合もある。
図6は、CA10からCM20へメッセージを転送するときに受信用リングバッファ22aがフルになった場合の動作シーケンスを説明するための説明図である。同図において、二つのメッセージMSG2およびMSG3のうちMSG2の受信用リングバッファ22aの書き込みまでは、図5に示した動作シーケンスと同様なシーケンスで行なわれる。
ただし、ここでは、MSG3を書き込む領域は未処理のメッセージがあるため受信用リングバッファ22aがバッファフルの状態となる。また、シーケンスの最初にCA−MPU11によって行なわれる受信用リングバッファ22aに空領域があるかないかの判定は省略されている。
受信用リングバッファ22aにMSG2を書き込んだCMI120は、CMPポインタとBTMポインタの差が「1」であることから受信用リングバッファ22aがバッファフルの状態になったことを認識し、MSG3の転送を停止してCA−MPU11に割込みを発生する(7)。
その後、CM20のMPUにより受信メッセージの処理が終了して受信用リングバッファ22aに一つ空ができると、CM20のMPUは、CMPポインタ格納レジスタ113に格納されたCMPポインタを更新する(8)。
すると、CMI120は、メッセージの受信処理がCM20のMPUによって行なわれたことを認識し、CA−MPU11に割込みを発生する(9)。また、CMI120は、MSG3をCA−メモリ12から読み出し(10)、受信用リングバッファ22aに書き込んでCM−メモリ22のBTMポインタを更新するとともにCM20のMPUに割込みを発生する(11)。そして、CMI120は、CA−MPU11に割込みを発生する(12)。
このように、CMI120が受信用リングバッファ22aがバッファフルの状態にある場合に空領域ができるまでメッセージの転送を停止することによって、受信用リングバッファ22aの受信メッセージが処理前に上書きされてしまうことを防ぐことができる。
次に、CM20からCA10へのメッセージ転送の動作シーケンスについて説明する。図7は、CM20からCA10へのメッセージ転送の動作シーケンスを説明するための説明図である。なお、ここでは、CM−メモリ22内の送信用リングバッファ22cに送信メッセージを格納し、CA−メモリ12内の受信用リングバッファ12cに受信メッセージを格納する場合について説明する。
同図に示すように、このメッセージ転送では、CM20のMPUが送信メッセージであるMSG0およびMSG1を送信用リングバッファ22cに書き込み、CM−メモリのTOPポインタを更新するとともに、CMI110のTOPポインタを更新する(1)。
すると、TOPポインタが更新されたCMI110は、CA10がenable状態(メッセージ受信可能状態)であれば、TOPポインタとBTMポインタを比較し(2)、両者が異なるので、送信用リングバッファ22cからMSG0を読み出して受信用リングバッファ12cのBTMポインタで指定される領域に書き込む(3)。
そして、BTMポインタ制御レジスタ112に格納されたBTMポインタを更新するとともに、CM−メモリ22のBTMポインタを更新し、CM20のMPUに割込みを発生する(4)。また、CA−MPU11へ割込みを発生し、CA−MPU11がBTMポインタ制御レジスタ112に格納されたBTMポインタを読み出してCA−メモリ12内のBTMポインタを更新する(5)。
そして、TOPポインタとBTMポインタを比較すると、両者が異なるので、送信用リングバッファ22cからMSG1を読み出して受信用リングバッファ12cのBTMポインタで指定される領域に書き込む(6)。そして、BTMポインタ制御レジスタ112に格納されたBTMポインタを更新するとともに、CM−メモリ22のBTMポインタを更新し、CM20のMPUに割込みを発生する(7)。
また、CA−MPU11へ割込みを発生し、CA−MPU11がBTMポインタ制御レジスタ112に格納されたBTMポインタを読み出してCA−メモリ12内のBTMポインタを更新する(8)。
その後、CA−MPU11が受信メッセージの処理を終了するとCMPポインタ格納レジスタ113に格納されたCMPポインタを更新する(9)。そして、CMI110が、CMPポインタとBTMポインタを比較すると両者が等しくないので、CA−MPU11の割込みを発生する(10)。
このように、CMI110が、TOPポインタとBTMポインタが異なる場合に、送信用リングバッファ22cのBTMポインタで指定される場所からメッセージを読み出し、受信用リングバッファ12cのBTMポインタで指定される領域に転送することによって、CA10とCM20のMPU間でアドレス情報を通信することなくCM20からCA10へメッセージを転送することができる。
上述してきたように、本実施例1では、CA−メモリ12とCM−メモリ22に同一構成のリングバッファを設け、CMI120にTOPポインタを格納するTOPポインタ格納レジスタ111とBTMポインタを格納するBTMポインタ制御レジスタ112を設け、TOP/BTM比較部114がTOPポインタとBTMポインタを比較して値が異なる場合に、アドレスリングバッファリードモジュール116aが送信用リングバッファ12bからBTMポインタで指定されるメッセージ格納アドレスを読み出し、メッセージリードモジュール116bがメッセージ格納アドレスで指定されるCA−メモリ12からメッセージを読み出して受信用リングバッファ22aのBTMポインタで指定される位置に書き込むこととしたので、CA10とCM20のMPU間でアドレス情報を通信することなくメッセージを転送することができ、メッセージ通信を高速化するとともに、MPUの負荷を軽減することができる。
なお、PCIバス(特にPCI−Express)においては、割込み通知が割込み専用線によってではなく、単純なライトによって行なわれる場合がある(MSI:Message Signaled Interrupt)。この場合、様々な理由によって割込みライト転送が消失すると、メッセージそのものの送信が完了していてもMPUがそれを認識できない。
そこで、このような割込みロストを検出できるように、CMIにメッセージの送信から受信完了通知(CMPのライト)までを監視するタイマを設け、所定の時間が経過すると異常が発生したことをCPUに通知することによってメッセージ通信の信頼性を高めることもできる。
また、本実施例1では、ディスクアレイ装置1においてCAとCMのMPU間でメッセージを転送する場合について説明したが、本発明はこれに限定されるものではなく、他の装置のMPU間でメッセージを転送する場合にも同様に適用することができる。
また、本実施例1では、MPUとPCIバスで接続する場合について説明したが、本発明はこれに限定されるものではなく、他の接続方式でMPUと接続する場合にも同様に適用することができる。
ところで、上記実施例1では、CAとCMとの間でメッセージ転送が正しく行なわれたか否かを確認するためには、別途エラーチェックを行なう必要がある。例えば、CAからCMにメッセージを転送した場合、CAのメモリからデータを読み出した際にパリティエラーが発生したか否かを確認するためには、CMのMPUはCAに別途エラーに関する情報を問い合わせる必要がある。このため、メッセージ転送が正しく行なわれたか否か確認するための処理時間が長くなる。
そこで、本実施例2では、メッセージ転送が正しく行なわれたか否か確認するための処理時間を短縮するCMIについて説明する。なお、本実施例2では、CAからCMへメッセージ転送を行なう場合について説明する。また、CA−メモリ内の送信用リングバッファにはメッセージのアドレスが格納されるものとする。
まず、本実施例2に係るCMIによるステータス情報およびエラー情報のCMへの通知方法について説明する。ここで、ステータス情報は、メッセージ転送に関する状態についての情報であり、エラー情報をメッセージ転送に関して発生した異常についての情報である。
図11は、本実施例2に係るCMIによるステータス情報およびエラー情報のCMへの通知方法を説明するための説明図である。同図に示すように、本実施例2に係るCA30は、CA−MPU11と、CA−メモリ12と、LSI200とを有し、LSI200は、DMAによるメッセージ転送を行なうCMI220を有する。そして、CMI220は、BTMポインタにステータス情報とエラー情報を追加して保持し、CM−メモリ22内のBTMポインタの更新時にこれらの情報をCM−メモリ22に書き込む。
なお、メッセージ転送の際に発生するエラーとしては、CA−メモリ12からメッセージまたはアドレスを読み出してLSI200が受信するまでのパリティエラー、CA30内部やCA30とCM20との間のバスエラー(タイムアウト、アボートなど)、指示されたメッセージ長と実際に転送したメッセージ長の不一致、CM側の受信用リングバッファフルによるデータ転送待ち、CA−MPU11によるメッセージ転送強制終了などがある。
このように、本実施例2に係るCMIは、BTMポインタにステータス情報とエラー情報を追加して保持し、CM−メモリ22内のBTMポインタの更新時にこれらの情報をCM−メモリ22に書き込むことによって、CM20は、メッセージの内容が正常であるか異常であるかをこれらの追加情報を用いて確認することができ、確認のための処理時間を短縮することができる。
次に、本実施例2に係るCMIの構成について説明する。図12は、本実施例2に係るCMIの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図3に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
図12に示すように、このCMI220は、図3に示したCMI120と比較して、BTMポインタ制御レジスタ112の代わりにBTMポインタ制御レジスタ212を有し、アドレスリングバッファリードモジュール116aの代わりにアドレスリングバッファリードモジュール216aを有し、メッセージリードモジュール116bの代わりにメッセージリードモジュール216bを有する。
BTMポインタ制御レジスタ212は、BTMポインタに加えてステータス情報およびエラー情報を格納するレジスタである。図13は、BTMポインタ制御レジスタ212の構成を示す図である。同図に示すように、このBTMポインタ制御レジスタ212は、エラーが発生したか否かを示すエラー有/無と、BTMポインタと、エラーを特定するためのエラーコードと、メッセージ転送に関する状態を示すステータスコードとを有する。
アドレスリングバッファリードモジュール216aは、送信用リングバッファからメッセージ格納アドレスを読み出してメッセージリードモジュール216bに渡す処理部であり、メッセージ格納アドレスを読み出す際にパリティエラーやバスエラーなどが発生すると、BTMポインタ制御レジスタ212のエラー有/無をエラー有に設定し、エラーコードおよびステータスコードに、発生したエラーに対応するコードを設定する。
メッセージリードモジュール216bは、CA−メモリ12からメッセージを読み出してCM−メモリ22の受信用リングバッファの対応する位置に書き込む処理部であり、CA−メモリ12からメッセージを読み出して受信用リングバッファに書き込む際にパリティエラー、バスエラー、転送長不一致、受信用リングバッファフルなどが発生すると、BTMポインタ制御レジスタ212のエラー有/無をエラー有に設定し、エラーコードおよびステータスコードに、発生したエラーに対応するコードを設定する。
また、このメッセージリードモジュール216bは、メッセージを受信用リングバッファに書き込むと、CM−メモリ22内のBTMポインタ、エラー有/無、エラーコードおよびステータスコードを更新するとともに、転送終了をBTMポインタ制御レジスタ212および通知制御部117に通知する。
このように、BTMポインタ制御レジスタ212にエラー有/無、エラーコード、ステータスコードを設け、メッセージ転送中にエラーが発生した場合には、アドレスリングバッファリードモジュール216aやメッセージリードモジュール216bがBTMポインタ制御レジスタ212にエラーに対応する情報を書き込み、メッセージリードモジュール216bがCM−メモリ22内のBTMポインタおよびこれらの追加情報を更新することによって、CM20はメッセージ転送が正常に行なわれたか否かを容易に確認することができる。
次に、本実施例2に係るディスクアレイ装置によるCA30からCM20へのメッセージ転送の動作シーケンス(エラーが発生した場合)について説明する。図14は、本実施例2に係るディスクアレイ装置によるCA30からCM20へのメッセージ転送の動作シーケンス(エラーが発生した場合)を示す図である。
同図に示すように、このメッセージ転送では、CA−MPU11が転送するメッセージ(MSG0、MSG1)をCA−メモリ12にライトし、それらの格納先を示すアドレス(adr0、adr1)を送信用リングバッファにライトするとともに、CA−メモリ12およびLSI200内のTOPポインタを更新する(1)。
そして、LSI200(CMI220)は、TOPポインタが更新されると、TOPポインタとBTMポインタとの比較を行ない、両者が不一致なのでメッセージ転送を開始する(2)。すなわち、LSI200は、送信用リングバッファのBTMポインタで指定される位置からアドレス(adr0)を読み出し、読み出したアドレスを用いてメッセージ(MEG0)を読み出してCM−メモリ22の受信用リングバッファに書き込む(3)。
そして、LSI200は、BTMポインタ制御レジスタ212を読み出し、BTMポインタの値に「1」を加えてステータス情報およびエラー情報とともにCM−メモリ22に書き込み(4)、CM−MPU21に一つのメッセージの転送完了を通知する(5)。
また、LSI200は、内部のBTMポインタを更新し(6)、CA−MPU11に一つのメッセージの転送完了を通知する(7)。そして、LSI200は、TOPポインタとBTMポインタとの比較を行ない、両者が不一致なのでメッセージ転送を継続する(8)。すなわち、LSI200は、送信用リングバッファのBTMポインタで指定される位置からアドレス(adr1)を読み出し、読み出したアドレスを用いてメッセージ(MSG1)を読み出してCM−メモリ22の受信用リングバッファに書き込む(9)。このとき、エラーが発生すると、LSI200は、発生したエラーに対応する情報をBTMポインタ制御レジスタ212に書き込む。
そして、LSI200は、BTMポインタ制御レジスタ212を読み出し、BTMポインタの値に「1」を加えてステータス情報およびエラー情報とともにCM−メモリ22に書き込み(10)、CM−MPU21に一つのメッセージの転送完了を通知する(11)。
また、LSI200は、内部のBTMポインタを更新し(12)、CA−MPU11に一つのメッセージの転送完了を通知する(13)。そして、LSI200は、TOPポインタとBTMポインタとの比較を行ない、両者が一致するのでメッセージ転送を終了する(14)。
また、CM−MPU21は、CM−メモリ22のステータス情報およびエラー情報をチェックし、エラーが発生したことを確認して必要なエラー処理を行なう(15)。例えば、LSI200に対してデータの異常を通知し、リトライを依頼する。
このように、エラーが発生した際に、LSI200(CMI220)が、BTMポインタ制御レジスタ212に発生したエラーに対応するステータス情報およびエラー情報を書き込み、BTMポインタ制御レジスタ212のステータス情報およびエラー情報をCM−メモリ22のBTMポインタの更新時にCMメモリ22に書き込むことによって、CM−MPU21は、メッセージ転送が正常に行なわれたか否かの判定やエラー処理を短時間で行なうことができる。
例えば、CA−メモリ12が故障し、メッセージが正しく転送されない場合には、従来は、以下のような処理を行なう必要があった。
(1)CM−MPU21は異常を検出し、CA−MPU11にメッセージの再送を要求する。
(2)CA−MPU11は、CA30内のLSI200、CA−メモリ12の状態をチェックする。
(3)CA−MPU11は、被疑箇所を洗い出し、CM−MPU21に対して情報を送る。
(4)CM−MPU21は、CA−MPU11から送信された情報に基づいてCA30が正常にデータの転送が行なえるか否かを判断し、再送か装置停止かを判断する。
これに対して、本実施例2に係るディスクアレイ装置では、CMI220がBTMポインタとともにステータス情報およびエラー情報をCM−メモリ22に書き込むことで、上記(1)〜(3)の処理を不要とすることができる。
特に、CMが複数のCAと通信を行なう場合には、エラーが発生すると複数のCAから情報を取得して判断する必要があるため、本実施例2のように、各CMIがBTMポインタとともにステータス情報およびエラー情報をCM−メモリ22に書き込むことでエラー処理を高速化することができる。
例えば、図15に示すように、CAが二重化されたディスクアレイ装置では、本実施例2のように、各CMIがBTMポインタとともにステータス情報およびエラー情報をCM−メモリに書き込むことによって、片側CA停止による転送の未処理時間を少なくすることができる。
上述してきたように、本実施例2では、BTMポインタ制御レジスタ212にBTPポインタに加えてステータス情報およびエラー情報を格納する領域を設け、CM−メモリ22のBTMポインタを更新する際にこれらステータス情報およびエラー情報とともに更新することとしたので、CM−MPU21は、メッセージ転送が正常に行なわれたか否かの判断および異常処理を高速に行なうことができる。
なお、本実施例2では、送信用リングバッファにメッセージのアドレスを格納する場合について説明したが、本発明はこれに限定されるものではなく、送信用リングバッファにメッセージを格納する場合にも同様に適用することができる。
また、本実施例2では、CAからCMにメッセージを転送する場合について説明したが、本発明はこれに限定されるものではなく、CMからCAにメッセージを転送する場合、あるいは、二つのMPU間でリングバッファを用いてデータを転送する場合にも同様に適用することができる。
(付記1)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、
転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、
送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、
前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、
前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に書き込むメモリ間転送手段と、
前記メモリ間転送手段による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、
を備えたことを特徴とするデータ転送装置。
(付記2)受信リングバッファに転送されたデータのうち受信演算処理装置が受信処理を完了したデータの次のデータの位置を受信リングバッファの位置との相対値で指定し、受信演算処理装置が受信処理を完了した際に更新する完了ポインタを記憶する完了ポインタ記憶手段と、
前記完了ポインタ記憶手段により記憶された完了ポインタおよび前記書込ポインタ記憶手段により記憶された書込ポインタに基づいて受信リングバッファに空があるか否かを判定する空状況判定手段と、
をさらに備えたことを特徴とする付記1に記載のデータ転送装置。
(付記3)前記メモリ間転送手段による受信リングバッファへのデータの書き込みが完了すると受信演算処理装置に割込みを発生する受信割込発生手段と、
前記受信割込発生手段による受信演算処理装置への割込みが発生すると時間の計測を開始する時間計測手段と、
前記時間計測手段により計測を開始された時間が所定の時間を経過したか否かを判定する監視手段と、
前記監視手段により所定の時間が経過したと判定された場合に、送信演算処理装置に対して異常を通知する異常通知手段と、
をさらに備えたことを特徴とする付記1または2に記載のデータ転送装置。
(付記4)前記完了ポインタ記憶手段により記憶された完了ポインタが更新された際に前記読出ポインタ記憶手段により記憶された読出ポインタと比較し、完了ポインタと読出ポインタの値が異なる場合には受信演算処理装置により複数の受信データに対する処理が完了したと判断し、前記受信割込発生手段により受信演算処理装置に割込みを発生することによって受信演算処理装置に完了ポインタを更新させる割込再発行手段をさらに備えたことを特徴とする付記3に記載のデータ転送装置。
(付記5)前記ポインタ比較手段は、受信演算処理装置がデータを受信可能な状態であるか否かを判定し、受信演算処理装置がデータを受信可能な状態である場合に書込ポインタと読出ポインタの値が同一であるか否かを判定することを特徴とする付記1〜4のいずれか一つに記載のデータ転送装置。
(付記6)送信演算処理装置、送信メモリ、受信演算処理装置および受信メモリとPCIバスで接続されたことを特徴とする付記1〜5のいずれか一つに記載のデータ転送装置。
(付記7)ディスクアレイ装置のチャネルアダプタとキャッシュ制御装置との間でデータ転送を行ない、チャネルアダプタからキャッシュ制御装置にデータを転送する場合には送信演算処理装置と送信メモリはチャネルアダプタの演算処理装置とメモリであって受信演算処理装置と受信メモリはキャッシュ制御装置の演算処理装置とメモリであり、キャッシュ制御装置からチャネルアダプタにデータを転送する場合には送信演算処理装置と送信メモリはキャッシュ制御装置の演算処理装置とメモリであって受信演算処理装置と受信メモリはチャネルアダプタの演算処理装置とメモリであることを特徴とする付記6に記載のデータ転送装置。
(付記8)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、
転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、
送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、
前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、
前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に書き込むメモリ間転送手段と、
前記メモリ間転送手段による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、
を備えたことを特徴とするデータ転送装置。
(付記9)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、
転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、
送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、
前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、
前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データの格納アドレスを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に転送先のアドレスを書き込むメモリ間転送手段と、
前記メモリ間転送手段による受信リングバッファへのデータの転送先アドレスの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、
を備えたことを特徴とするデータ転送装置。
(付記10)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、
転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、
送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、
前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、
前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データの格納アドレスを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に転送先のアドレスを書き込むメモリ間転送手段と、
前記メモリ間転送手段による受信リングバッファへのデータの転送先アドレスの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、
を備えたことを特徴とするデータ転送装置。
(付記11)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置のデータ転送方法であって、
転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、
前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に書き込むメモリ間転送工程と、
前記メモリ間転送工程による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、
を含んだことを特徴とするデータ転送方法。
(付記12)受信リングバッファに転送されたデータのうち受信演算処理装置が受信処理を完了したデータの次のデータの位置を受信リングバッファの位置との相対値で指定し、受信演算処理装置が受信処理を完了した際に更新する完了ポインタおよび前記書込ポインタに基づいて受信リングバッファに空があるか否かを判定する空状況判定工程
をさらに含んだことを特徴とする付記11に記載のデータ転送方法。
(付記13)前記メモリ間転送工程による受信リングバッファへのデータの書き込みが完了すると受信演算処理装置に割込みを発生する受信割込発生工程と、
前記受信割込発生工程による受信演算処理装置への割込みが発生すると時間の計測を開始する時間計測工程と、
前記時間計測工程により計測を開始された時間が所定の時間を経過したか否かを判定する監視工程と、
前記監視工程により所定の時間が経過したと判定された場合に、送信演算処理装置に対して異常を通知する異常通知工程と、
をさらに含んだことを特徴とする付記11または12に記載のデータ転送方法。
(付記14)前記完了ポインタが更新された際に前記読出ポインタと比較し、完了ポインタと読出ポインタの値が異なる場合には受信演算処理装置により複数の受信データに対する処理が完了したと判断し、受信演算処理装置に割込みを発生することによって受信演算処理装置に完了ポインタを更新させる割込再発行工程をさらに含んだことを特徴とする付記13に記載のデータ転送方法。
(付記15)前記ポインタ比較工程は、受信演算処理装置がデータを受信可能な状態であるか否かを判定し、受信演算処理装置がデータを受信可能な状態である場合に書込ポインタと読出ポインタの値が同一であるか否かを判定することを特徴とする付記11〜14のいずれか一つに記載のデータ転送方法。
(付記16)送信演算処理装置、送信メモリ、受信演算処理装置および受信メモリとPCIバスで接続されたことを特徴とする付記11〜15のいずれか一つに記載のデータ転送方法。
(付記17)ディスクアレイ装置のチャネルアダプタとキャッシュ制御装置との間でデータ転送を行ない、チャネルアダプタからキャッシュ制御装置にデータを転送する場合には送信演算処理装置と送信メモリはチャネルアダプタの演算処理装置とメモリであって受信演算処理装置と受信メモリはキャッシュ制御装置の演算処理装置とメモリであり、キャッシュ制御装置からチャネルアダプタにデータを転送する場合には送信演算処理装置と送信メモリはキャッシュ制御装置の演算処理装置とメモリであって受信演算処理装置と受信メモリはチャネルアダプタの演算処理装置とメモリであることを特徴とする付記16に記載のデータ転送方法。
(付記18)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送方法であって、
転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、
前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に書き込むメモリ間転送工程と、
前記メモリ間転送工程による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、
を含んだことを特徴とするデータ転送方法。
(付記19)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送方法であって、
転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、
前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データの格納アドレスを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に転送先のアドレスを書き込むメモリ間転送工程と、
前記メモリ間転送工程による受信リングバッファへのデータの転送先アドレスの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、
を含んだことを特徴とするデータ転送方法。
(付記20)データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送方法であって、
転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、
前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データの格納アドレスを格納するリングバッファである受信リングバッファの該読出ポインタで指定される位置に転送先のアドレスを書き込むメモリ間転送工程と、
前記メモリ間転送工程による受信リングバッファへのデータの転送先アドレスの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、
を含んだことを特徴とするデータ転送方法。
以上のように、本発明に係るデータ転送装置およびデータ転送方法は、ディスクアレイ装置に有用であり、特に、CAおよびCMのMPUの負荷を軽減することが必要な場合に適している。
本実施例1に係るディスクアレイ装置によるCAからCMへのデータ転送方式を説明するための説明図である。 メッセージの代わりにメッセージ格納アドレスを送信用リングバッファに格納する場合を示す図である。 本実施例1に係るCMIの構成を示す機能ブロック図である。 送信用リングバッファにメッセージ格納アドレスを格納する場合のCMIの構成を示す機能ブロック図である。 CAからCMへ単一メッセージを転送する場合の動作シーケンスを説明するための説明図である。 CAからCMへ二つのメッセージを転送する場合の動作シーケンスを説明するための説明図である。 CAからCMへメッセージを転送するときに受信用リングバッファがフルになった場合の動作シーケンスを説明するための説明図である。 CMからCAへのメッセージ転送の動作シーケンスを説明するための説明図である。 ディスクアレイ装置の構成を示す図である。 CMからCAへの従来のデータ転送シーケンス(リードシーケンス)を説明するための説明図である。 CAからCMへの従来のデータ転送シーケンス(ライトシーケンス)を説明するための説明図である。 本実施例2に係るCMIによるステータス情報およびエラー情報のCMへの通知方法を説明するための説明図である。 本実施例2に係るCMIの構成を示す機能ブロック図である。 BTMポインタ制御レジスタ212の構成を示す図である。 本実施例2に係るディスクアレイ装置によるCAからCMへのメッセージ転送の動作シーケンス(エラーが発生した場合)を示す図である。 CAが二重化されたディスクアレイ装置の構成を示す図である。
符号の説明
1,7 ディスクアレイ装置
2 ホスト
3 ファイバーチャネルリンク
10,30,70 CA(チャネルアダプタ)
11,71 CA−MPU
12,72 CA−メモリ
12a,12b 送信用リングバッファ
20,80 CM(キャッシュ制御部)
21,81 CM−MPU
22,82 CM−メモリ
22a 受信用リングバッファ
90 ディスク
100,200,700 LSI
110,120,220 CMI
111 TOPポインタ格納レジスタ
112,212 BTMポインタ制御レジスタ
113 CMPポインタ格納レジスタ
114 TOP/BTM比較部
115 TOP/CMP比較部
116 メッセージリングバッファリードモジュール
116a,216a アドレスリングバッファリードモジュール
116b,216b メッセージリードモジュール
117 通知制御部
118 PCIバス制御部
119 PCIバス制御部

Claims (5)

  1. データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、
    転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、
    送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、
    前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、
    前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送手段と、
    前記メモリ間転送手段による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、
    を備えたことを特徴とするデータ転送装置。
  2. 受信リングバッファに転送されたデータのうち受信演算処理装置が受信処理を完了したデータの次のデータの位置を受信リングバッファの受信メモリでの位置との相対値で指定し、受信演算処理装置が受信処理を完了した際に更新する完了ポインタを記憶する完了ポインタ記憶手段と、
    前記完了ポインタ記憶手段により記憶された完了ポインタおよび前記書込ポインタ記憶手段により記憶された書込ポインタに基づいて受信リングバッファに空があるか否かを判定する空状況判定手段と、
    をさらに備えたことを特徴とする請求項1に記載のデータ転送装置。
  3. データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置であって、
    転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタを記憶する書込ポインタ記憶手段と、
    送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタを記憶する読出ポインタ記憶手段と、
    前記書込ポインタ記憶手段により記憶された書込ポインタと前記読出ポインタ記憶手段により記憶された読出ポインタの値が同一であるか否かを判定するポインタ比較手段と、
    前記ポインタ比較手段により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送手段と、
    前記メモリ間転送手段による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタ記憶手段により記憶された読出ポインタを更新する読出ポインタ更新手段と、
    を備えたことを特徴とするデータ転送装置。
  4. データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送装置のデータ転送方法であって、
    転送されるデータを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、
    前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送工程と、
    前記メモリ間転送工程による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、
    を含んだことを特徴とするデータ転送方法。
  5. データ送信側の演算処理装置である送信演算処理装置が読み書きするメモリである送信メモリから、データ受信側の演算処理装置である受信演算処理装置が読み書きするメモリである受信メモリへデータの転送を行なうデータ転送方法であって、
    転送されるデータの格納アドレスを格納するリングバッファである送信リングバッファに対して送信演算処理装置が送信データの格納アドレスを書き込む位置を送信リングバッファの送信メモリでの位置との相対値で指定し、送信演算処理装置が送信リングバッファに送信データの格納アドレスを書き込んだ際に更新する書込ポインタと、送信リングバッファから当該データ転送装置が送信データの格納アドレスを読み出す位置を送信リングバッファの送信メモリでの位置との相対値で指定する読出ポインタの値が同一であるか否かを判定するポインタ比較工程と、
    前記ポインタ比較工程により書込ポインタと読出ポインタの値が異なると判定された場合に、送信リングバッファの読出ポインタで指定された位置に格納アドレスが格納されたデータを読み出して受信メモリに転送し、受信データを格納するリングバッファである受信リングバッファの該読出ポインタと同一の値で指定される位置に書き込むメモリ間転送工程と、
    前記メモリ間転送工程による受信リングバッファへのデータの書き込みが完了すると、前記読出ポインタを更新する読出ポインタ更新工程と、
    を含んだことを特徴とするデータ転送方法。
JP2005334714A 2004-12-10 2005-11-18 データ転送装置およびデータ転送方法 Active JP4451837B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005334714A JP4451837B2 (ja) 2004-12-10 2005-11-18 データ転送装置およびデータ転送方法
US11/353,223 US7383377B2 (en) 2004-12-10 2006-02-14 Method and apparatus for transferring data

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004358142 2004-12-10
JP2005334714A JP4451837B2 (ja) 2004-12-10 2005-11-18 データ転送装置およびデータ転送方法

Publications (2)

Publication Number Publication Date
JP2006190257A JP2006190257A (ja) 2006-07-20
JP4451837B2 true JP4451837B2 (ja) 2010-04-14

Family

ID=36641985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005334714A Active JP4451837B2 (ja) 2004-12-10 2005-11-18 データ転送装置およびデータ転送方法

Country Status (2)

Country Link
US (1) US7383377B2 (ja)
JP (1) JP4451837B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7801120B2 (en) * 2003-01-13 2010-09-21 Emulex Design & Manufacturing Corporation Method and system for efficient queue management
US8706551B2 (en) 2003-09-04 2014-04-22 Google Inc. Systems and methods for determining user actions
US20050055269A1 (en) * 2003-09-04 2005-03-10 Alex Roetter Systems and methods for determining user actions
US11042886B2 (en) 2003-09-04 2021-06-22 Google Llc Systems and methods for determining user actions
US9898627B2 (en) 2006-06-22 2018-02-20 Google Inc. Secure and extensible pay per action online advertising
US20080065474A1 (en) 2006-09-12 2008-03-13 Abhinay Sharma Secure conversion tracking
KR101593865B1 (ko) 2012-02-29 2016-02-12 미쓰비시덴키 가부시키가이샤 데이터 전송 장치, 데이터 전송 방법 및 데이터 전송 프로그램
JP2015026243A (ja) * 2013-07-26 2015-02-05 アズビル株式会社 記録データ処理方法および情報処理装置
CN110704355B (zh) * 2019-09-23 2022-10-28 天津津航计算技术研究所 一种利用双口ram接收并处理1553b总线数据的方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4507760A (en) * 1982-08-13 1985-03-26 At&T Bell Laboratories First-in, first-out (FIFO) memory configuration for queue storage
JPH03174645A (ja) 1989-09-29 1991-07-29 Yokogawa Electric Corp Cpu間のメッセージ通信装置
US5566317A (en) * 1994-06-14 1996-10-15 International Business Machines Corporation Method and apparatus for computer disk drive management
JP2795257B2 (ja) * 1996-04-15 1998-09-10 日本電気株式会社 トラフィックシェーパのセル出力競合制御方式
GB2349717A (en) 1999-05-04 2000-11-08 At & T Lab Cambridge Ltd Low latency network
US6637007B1 (en) * 2000-04-28 2003-10-21 Network Appliance, Inc. System to limit memory access when calculating network data checksums
US6647484B1 (en) * 2000-09-19 2003-11-11 3 Dsp Corporation Transpose address mode in general purpose DSP processor
JP2002259324A (ja) 2001-02-28 2002-09-13 Sharp Corp データ処理装置
US7136991B2 (en) * 2001-11-20 2006-11-14 Henry G Glenn Microprocessor including random number generator supporting operating system-independent multitasking operation
JP2004070570A (ja) * 2002-08-05 2004-03-04 Seiko Epson Corp データ転送制御システム、電子機器、プログラム及びデータ転送制御方法

Also Published As

Publication number Publication date
US20060149866A1 (en) 2006-07-06
US7383377B2 (en) 2008-06-03
JP2006190257A (ja) 2006-07-20

Similar Documents

Publication Publication Date Title
JP4451837B2 (ja) データ転送装置およびデータ転送方法
KR101099471B1 (ko) PCI.Express 통신 시스템, 및 그 통신 방법
JPS59188752A (ja) 欠陥サイクル作動式デ−タ処理システム用バス
JPWO2006114822A1 (ja) Dmaコントローラ、ノード、データ転送制御方法、及びプログラム
US7991941B2 (en) Memory access assist
JP4328581B2 (ja) モジュール間データ転送確認機能を有する装置並びにストレージ制御装置および同装置用インターフェイスモジュール
US20050050244A1 (en) Method for controlling data transfer unit, data transfer unit, channel control unit, and storage device control unit
JPH05100879A (ja) 制御情報のインテグリテイを維持するための装置及び方法
JP5966243B2 (ja) ストレージ装置及びストレージ装置の制御方法
TWI394040B (zh) Host, memory device, and host access to the memory device
JP5076400B2 (ja) データ処理システムおよび情報処理装置
JP3102119B2 (ja) ホストコンピュータ装置
JP4589768B2 (ja) 情報処理装置
JP4164473B2 (ja) 機能メモリアクセス制御システム、機能メモリ装置及びその制御方法、プログラム
KR100812710B1 (ko) 제어 버스를 이용한 통신 방법 및 장치
JPH11120087A (ja) 二重化メモリ処理装置
JP4439295B2 (ja) データ転送制御装置
JP2735246B2 (ja) テストアンドセット方式
JP3245552B2 (ja) 転送制御システム
JP3137040B2 (ja) 障害処理方式
JP3341738B2 (ja) メモリのエラー検出方式
KR100454652B1 (ko) 하이파이버스시스템의주기억장치
JP3842764B2 (ja) バスインタフェース回路
KR20050044197A (ko) 피씨아이 디엠에이 에러 처리 장치 및 방법
JP2005277552A (ja) バスリトライ制御方式及びデータ通信装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090623

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090818

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4451837

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130205

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140205

Year of fee payment: 4