JP2014167818A - Data transfer device and data transfer method - Google Patents
Data transfer device and data transfer method Download PDFInfo
- Publication number
- JP2014167818A JP2014167818A JP2014098713A JP2014098713A JP2014167818A JP 2014167818 A JP2014167818 A JP 2014167818A JP 2014098713 A JP2014098713 A JP 2014098713A JP 2014098713 A JP2014098713 A JP 2014098713A JP 2014167818 A JP2014167818 A JP 2014167818A
- Authority
- JP
- Japan
- Prior art keywords
- data
- data transfer
- memory
- transfer
- memory controller
- 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.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、データ転送装置およびデータ転送方法に関する。 The present invention relates to a data transfer apparatus and a data transfer method.
近年のストレージ装置(ディスクアレイシステムおよびそれに類する記憶装置)は、データを読み書きする速度を速くするために、ストレージコントローラにキャッシュメモリを搭載している。キャッシュメモリは、ハードディスクドライブ(Hard Disk Drive。以下「HDD」)やソリッドステートディスク(Solid State Disk。以下「SSD」)などの最終記憶メディアへ書き込むデータや頻繁に読み出されるデータの一部を保持することで、メディアのアクセスレイテンシを隠蔽し、ホストへの高速な応答を実現する。 Recent storage devices (disk array systems and similar storage devices) are equipped with a cache memory in the storage controller in order to increase the speed of reading and writing data. The cache memory holds a part of data to be written to a final storage medium such as a hard disk drive (Hard Disk Drive, hereinafter referred to as “HDD”) or a solid state disk (hereinafter referred to as “SSD”) or frequently read data. This hides the media access latency and realizes a high-speed response to the host.
例えば、ホストがデータをストレージ装置に書き込む場合、当該ホストからのデータを処理する、ストレージ装置内のストレージコントローラは、データをキャッシュメモリに格納した段階でホストに書込みの完了応答を返す。最終記憶メディアに比べてキャッシュメモリは非常に高速であるから、ホストはすぐに次のI/Oリクエストを発行することができる。一方ストレージコントローラはホストの動作とは非同期に、あるタイミングで最終記憶メディアにキャッシュメモリ内のデータを書き込むように動作している。 For example, when the host writes data to the storage device, the storage controller in the storage device that processes the data from the host returns a write completion response to the host when the data is stored in the cache memory. Since the cache memory is much faster than the final storage medium, the host can immediately issue the next I / O request. On the other hand, the storage controller operates to write the data in the cache memory to the final storage medium at a certain timing asynchronously with the operation of the host.
ストレージコントローラは、耐障害性を向上させるために複数の単位コントローラで構成されることが多い。このためキャッシュメモリ(以下、単にメモリと記述する。)も複数の箇所に分散配置される。処理上の効率化や複製による冗長化のために、しばしばメモリ間でのデータ転送が実施されるため、単位コントローラ間には内部バス技術を用いたネットワークパスが構成される。バスには例えばPCI Express(登録商標)などが用いられる。また、キャッシュメモリ間の転送はストレージ制御ソフトウェアが動作するプロセッサの指示によって、DMA(Direct Memory Access)と呼ばれるデータ転送コントローラを用いて行われる。 Storage controllers are often composed of a plurality of unit controllers in order to improve fault tolerance. For this reason, cache memories (hereinafter simply referred to as “memory”) are also distributed in a plurality of locations. Since data transfer is often performed between memories for processing efficiency and redundancy by duplication, a network path using internal bus technology is configured between unit controllers. For example, PCI Express (registered trademark) is used for the bus. Transfer between cache memories is performed using a data transfer controller called DMA (Direct Memory Access) according to instructions from a processor in which storage control software operates.
PCI Expressの場合、メモリへのライトリクエストは、ターゲットからの完了応答(Completion)がない、いわゆるポステッドアクセス(Posted Access)となる。ストレージコントローラのメモリコントローラ内部には、ハードウェアのデータ処理上の理由から、ネットワークパスからメモリコントローラまでの経路上にバッファが設けられることがある。従い、ライトリクエスト元は、果たしてデータが経路上にあるバッファをすべて通り抜けてメモリに書き込まれたか否かを確認することができない。このため、ネットワークパス等を経由してメモリに書込みする場合、ストレージ装置などでは、途中のバッファをフラッシュさせてメモリへの書込みを確定させるために、同一経路でダミーのメモリリードリクエストを発行する。PCI Expressでは、メモリリードリクエストはノンポステッドアクセス(Non-Posted Access)と呼ばれる。同一経路上におけるノンポステッドアクセスは、先に発行されたメモリライトリクエストなどのポステッドアクセスを追い抜いてメモリに到達することがないため、このリードリクエストへの応答が返ってくれば、先に発行したメモリライトリクエストに係る書込みデータはバッファを通り抜けて最終的なメモリに書き込まれていることが保証できる。 In the case of PCI Express, a write request to the memory is a so-called posted access in which there is no completion response (Completion) from the target. In the memory controller of the storage controller, a buffer may be provided on the path from the network path to the memory controller for reasons of hardware data processing. Therefore, the write request source cannot confirm whether the data has been written to the memory through all the buffers on the path. For this reason, when writing to the memory via a network path or the like, the storage apparatus or the like issues a dummy memory read request on the same path in order to flush the buffer in the middle and to confirm the writing to the memory. In PCI Express, the memory read request is called non-posted access. Non-posted access on the same route does not reach the memory by overtaking posted access such as previously issued memory write requests, so if a response to this read request is returned, it will be issued first It can be assured that the write data related to the memory write request has been written to the final memory through the buffer.
ところで、1本のパスで実現できる転送帯域は限られるので、帯域を確保するために複数のネットワークパスを張ることがある。複数のメモリ間データ転送を効率良く行うためには、このネットワークパスを偏りなく利用することが必要である。偏りをなくし均一的にパスを利用する方法としては、従来からネットワークパス上で負荷分散する技術が議論されてきた。 By the way, since the transfer bandwidth that can be realized by one path is limited, a plurality of network paths may be extended in order to secure the bandwidth. In order to efficiently transfer data between a plurality of memories, it is necessary to use this network path without any bias. As a method of eliminating the bias and using the path uniformly, a technique for distributing the load on the network path has been conventionally discussed.
例えば、特許文献1には、転送するパケットのハッシュ値を計算し、そのハッシュ値に応じて経路を選択する方法が開示されている。この方法に依れば、複数のパスに負荷分散してパケットを送ることができるので、効率的にネットワーク転送することが可能となる。
For example,
しかしながら、この方法をPCI Express等のバスで接続した単位コントローラ間でメモリ間データ転送を行うストレージ装置およびこれに類するデータ転送システムに適用する場合にはいくつかの課題が生じる。 However, when this method is applied to a storage apparatus that transfers data between memories between unit controllers connected by a bus such as PCI Express, and a similar data transfer system, several problems arise.
第1の課題は、先に述べたダミーリードの問題である。PCI Express等のバスでは、同一経路においてノンポステッドアクセスはポステッドアクセスを追い抜かないことが保証されているものの、異なる経路を通った場合には、先に送信されたポステッドアクセスよりも先に、ノンポステッドアクセスが最終的なメモリに到達することがあり得る。ダミーリードは先のライトリクエストを追い抜かないことを利用して書込み確定を確認することが目的であるから、ライトリクエストと同一経路を通じて発行する必要がある。しかしながら、特許文献1に記載の方法は、パケットのハッシュ値によってパスを振り分けてしまうため、両者のリクエストパケットは同じ経路を通るとは限らないという問題がある。両者のパケットは明らかにそのフォーマットが異なるから同一ハッシュ値になる可能性は極めて低い。そもそもライトリクエストが発行された場合に、ダミーリードを発行するという仕組み自体が存在しない。また、特許文献1は、変形例として、ハッシュ値ではなく、あらかじめ定めた他の識別子を用いても良いとしているが、どのライトパケットに対するダミーリードパケットなのか、当該ライトパケットがどの経路を通ったのか記憶テーブルを設けて記憶しなければならない。メモリ間データ転送で流れるパケットは秒間数十万〜数百万個と膨大であり、そもそも探索するだけでも時間がかかってしまう。また、このような処理は、そもそも特許文献1が解決しようとする負荷分散とは、目的を異にするものである。
The first problem is the dummy read problem described above. With PCI Express and other buses, it is guaranteed that non-posted access will not overtake posted access on the same route, but if it passes through a different route, it will be ahead of the posted access sent earlier. Non-posted accesses can reach the final memory. The purpose of the dummy read is to confirm the writing confirmation by using the fact that it does not overtake the previous write request, so it must be issued through the same route as the write request. However, since the method described in
第2の課題は、宛先メモリのアクセスの集中度合いによって転送時間が大きく左右されてしまう点である。特許文献1は、複数のパス(経路)で負荷分散するものの宛先は単一の装置であり、データ転送はネットワークを通じてなされることのみを想定していると考えられる。このことは、経路そのものの混み具合(データバッファの利用状況)を管理することで負荷分散する方法を開示していることからも明らかである。一方、本ストレージ装置の場合、あるメモリへのアクセスは必ずしもネットワークパスを通過したものばかりでなく、当該メモリと同一のストレージコントローラ内DMAによるアクセスも競合する。従い、パス(経路)の混み具合のみを管理しても必ずしも有意に負荷分散できない。
The second problem is that the transfer time greatly depends on the concentration of access to the destination memory. In
第3の課題は、メモリアクセスの混み具合は制御ソフトウェアのメモリの割り当て方(メモリ利用レイアウト)にも起因することである。例えば、メモリチャネル1は比較的アクセスの少ない制御情報エリアを割当て、メモリチャネル2はアクセスが頻繁にくるキャッシュエリアを多く割当てていた場合、パケットを、均等な比率でネットワークパスを通過させたのではメモリチャネル2のアクセスが詰まり、その結果、ネットワークパス通過中の後続するメモリチャネル1のパケットも滞留してしまう。特許文献1に示すような従来のネットワークの負荷分散技術だけでは、この問題は解決できない。
The third problem is that the degree of memory access congestion is also caused by the memory allocation method (memory usage layout) of the control software. For example, if
本発明は以上の課題に鑑みて成されたものである。
すなわち、本発明の目的は、複数パスで接続されていても、経路情報を記憶することなく、また、制御ソフトウェアの新たな介在を必要とせずにメモリへの書込みの確定を行うデータ転送装置およびデータ転送方法を提供することである。
The present invention has been made in view of the above problems.
That is, an object of the present invention is to provide a data transfer device for confirming writing to a memory without storing route information even without being connected through a plurality of paths and without requiring new intervention of control software, and It is to provide a data transfer method.
また本発明の他の目的は、ストレージコントローラ内外からの特定メモリへのアクセス集中があっても、パスに偏りを生じさせずに効率良く転送するデータ転送装置およびデータ転送方法を提供することである。 Another object of the present invention is to provide a data transfer apparatus and a data transfer method that efficiently transfer without causing a bias in a path even when access to a specific memory from inside or outside a storage controller is concentrated. .
また、本発明の他の目的は、上位の制御ソフトウェアのメモリ利用情報を踏まえた効率的な転送を行うデータ転送装置およびデータ転送方法を提供することである。 Another object of the present invention is to provide a data transfer apparatus and a data transfer method that perform efficient transfer based on memory use information of higher-level control software.
本発明では、上記課題の少なくとも1つを解決するために、データの転送元となる第1のメモリの転送元アドレスと、データの転送先となる第2のメモリの転送先アドレスと、データの転送長と、を記憶部から取得する取得部と、前記転送元アドレスに基づき、前記第1のメモリのデータを取得する読み出し部と、前記転送先アドレスに基づき、前記第2のメモリへデータの書き込みを行うメモリコントローラに、前記取得したデータを転送し、転送が終了すると、前記転送したデータの量が前記データの転送長に達しているか否かを判定し、前記判定の結果、前記転送したデータの量が前記データの転送長に達している場合、前記メモリコントローラに読み出し要求を送信する書き込み部とを備えるデータ転送装置を提供する。 In the present invention, in order to solve at least one of the above problems, a transfer source address of a first memory as a data transfer source, a transfer destination address of a second memory as a data transfer destination, An acquisition unit that acquires a transfer length from a storage unit, a read unit that acquires data of the first memory based on the transfer source address, and a data transfer to the second memory based on the transfer destination address. The acquired data is transferred to a memory controller that performs writing, and when the transfer is completed, it is determined whether or not the amount of the transferred data has reached the transfer length of the data. A data transfer device is provided that includes a writing unit that transmits a read request to the memory controller when the amount of data reaches the data transfer length.
本発明によれば、ハードウェアがライトリクエスト発行経路をパケットごとに記憶しなくとも、あるいは制御ソフトウェアが書込み確定のための新たな制御を行わずとも、ライト応答が行われない内部バス技術を用いたネットワークパス上でメモリへの書込み確定を行うことができる。 According to the present invention, the internal bus technology is used in which a write response is not made even if the hardware does not store the write request issuance path for each packet or the control software does not perform new control for write confirmation. The write to the memory can be confirmed on the network path.
また、本発明によれば、ネットワークパスを複数有している場合、宛先メモリの混雑状況も踏まえてパス選択することができ、効率的な転送が可能となる。 Further, according to the present invention, when there are a plurality of network paths, it is possible to select a path in consideration of the congestion status of the destination memory, and efficient transfer is possible.
また、本発明によれば、同じハードウェアでも、その上で動作する制御ソフトウェアの特性に応じて効率的なデータ転送を行うことができる。 Further, according to the present invention, even with the same hardware, efficient data transfer can be performed according to the characteristics of the control software operating on the hardware.
本発明を実施するための形態を実施例1、2、および3を用いて説明する。なお、当該実施例からの部分的変更によって実施できる形態は、各実施例内で変形例として記述する。 The form for implementing this invention is demonstrated using Example 1, 2, and 3. FIG. In addition, the form which can be implemented by the partial change from the said Example is described as a modification within each Example.
<実施例1>
本実施形態を図1〜図9を参照して説明する。
図1は本実施形態におけるストレージシステムの構成を示すブロック図である。ストレージ装置10は、複数のドライブ筐体51、52、…とストレージコントローラ筐体50とを含んで構成されている。ストレージ装置10は管理用LAN30を通じて管理端末31に接続されており、装置の設定等はこの管理端末31を通じて実行することが可能である。管理端末31はストレージ装置10の中に含んでいても良い。
<Example 1>
This embodiment will be described with reference to FIGS.
FIG. 1 is a block diagram showing the configuration of the storage system in this embodiment. The
また、ストレージ装置10はストレージネットワーク40を通じてホスト計算機20A〜20Cと接続されている。ホスト計算機20A〜20Cには、オペレーティングシステムおよびその上で動作するアプリケーション、または仮想マシンが搭載され、ストレージ装置10に対してI/Oを発行する。
The
ドライブ筐体51、52、…には複数のディスクドライブD00〜D0N、D10〜D1Nが搭載されている。ディスクドライブD00〜D1NはHDDやSSD、またはこれらに類する最終記憶媒体である。
A plurality of disk drives D00 to D0N, D10 to D1N are mounted on the
ディスクドライブD00〜D1Nは、ドライブ筐体51、52に設けられたバックエンド相互接続機構500、バックエンド接続ケーブル510、およびストレージコントローラ筐体50内に設けられたI/Fカード90A,91Bを通じてディスクアレイコントローラ主パッケージ60A,60Bと接続される。バックエンド相互接続機構500は、例えばSAS(Serial Attached SCSI)エクスパンダであり、バックエンド接続ケーブル510は、例えばSASケーブルなどである。また、I/Fカード90A,91Bは、例えばSASプロトコルチップを搭載したHBA(Host Bus Adapter)等である。この接続によって、ストレージコントローラはディスクとの間でデータの送受信を行うことができる。
The disk drives D00 to D1N are connected to the disk through the back-
ストレージコントローラ筐体50には、ディスクアレイコントローラの主パッケージ60A,60Bとこれらを制御するプロセッサを搭載したMP(Micro Processor)パッケージ70A,70B、先述したドライブ接続90A,90B、およびホスト計算機20A〜20Cと接続するためのI/Fカードが設けられている。
In the
MPパッケージ70A,70Bではストレージ制御プログラムが動作しており、ディスクアレイコントローラ主パッケージ60A,60Bに指示を送るために制御線71A〜72Bで接続されている。一方、ディスクアレイ主パッケージ60A,60Bは互いにデータを転送するために複数の内部データ転送パス101,102で接続されている。
In the MP packages 70A and 70B, a storage control program is operating and connected to the disk array controller
なお、本実施形態では各パッケージはA系、B系の2つだけを示したが、3以上のパッケージが設けられ、互いに接続されていても構わないし、あるいは、I/Fカードを通じてストレージコントローラ筐体50同士が結合されていても良い。例えば、I/Fカード80A〜91Bの一部を、PCI Expressストレージコントローラ筐体間接続I/Fカードと交換できるようにしてもよい。また、これらの相互接続が内部データ転送パス101,102のように利用できるようにしても良い。
In the present embodiment, only two packages, A-system and B-system, are shown. However, three or more packages may be provided and connected to each other, or may be connected to each other through an I / F card. The
図2は、本実施形態におけるストレージ装置の理解を助けるために示した外観図である。ストレージコントローラ筐体50は最下段に搭載され、その上にドライブ筐体51〜58が示されている。図に表れていないが、背面には先に示したバックエンド接続ケーブルやストレージネットワーク40を構成するためのケーブルが配線される。
FIG. 2 is an external view shown to assist in understanding the storage apparatus in the present embodiment. The
図3は、本実施形態におけるディスクアレイコントローラ主パッケージ60A,60B、およびこれを制御するMPパッケージ70A,70Bの内部の構成と、これらに接続するI/Fカード80A〜91Bの構成を示したブロック図である。
A系、B系は互いに対象な構造であるから、以降では代表してA系を用いて説明する。
FIG. 3 is a block diagram showing the internal configurations of the disk array controller
Since the A system and the B system are mutually targeted structures, the following description will be made using the A system as a representative.
ディスクアレイコントローラ主パッケージ60Aには、ASIC(Application Specific Integrated Circuit)200A、メモリM0、M1、M2、M3が搭載される。ASIC200Aには様々な機能が搭載され、例えばメモリ間のデータ転送を行うDMA(Direct Memory Access)210A〜212Aが設けられている。メモリM0〜M3はストレージコントローラ50のキャッシュメモリであり、バッテリ等で不揮発化されたDRAM(Dynamic Random Access Memory)等が用いられる。DRAMは、DIMM(Dual Inline Memory Module)として設けられることが多い。またディスクアレイコントローラ主パッケージ60AはASIC200Aを通じてI/Fカード群と接続される。FE(Front-End)I/Fカード80A,81Aはストレージネットワーク40を通じてホストと接続するためのものであり、例えばファイバーチャネルプロトコルチップ等が搭載され、複数のホスト接続ポートを備えている。
一方BE(Back-End)I/Fカード90A,91Aはバックエンド接続ケーブル510を通じてドライブ筐体51,52・・・の各ディスクと接続される。
MPパッケージ70Aには、プロセッサのチップセット75およびプロセッサ760,761、これらプロセッサ上で動くプログラム等が格納されるローカルメモリ770,771が設けられている。プロセッサの種類や世代によっては、ローカルメモリ770,771はチップセット75に接続される形態もあれば、プロセッサ760,761に直接接続される形態もある。また、チップセット75はプロセッサ760,761に内包されても良い。プロセッサ760,761は制御線71A,71Bを通じ主パッケージ60A,60BのASIC200A,200Bに接続され、ハードウェアの制御を行う。制御線71A,71Bに用いられる技術としては例えばPCI Expressなどがある。
An ASIC (Application Specific Integrated Circuit) 200A and memories M0, M1, M2, and M3 are mounted on the disk array controller
On the other hand, BE (Back-End) I /
The
図4は、先に述べたASIC200Aおよび200Bの内部の機能ブロックの構成を示したものである。ASIC200A,200B内には先に述べたDMA210,211,212、内部データ転送パス(I-Path: Internal Path)として使われるPCI Expressを制御するPCI Expressコア221,223、および内部データ転送パス101,102用の内部データ転送パスアービタ220,222、メモリコントローラ230,231,232,233、I/F制御ブロック240,241,242,243、プロセッサポート271,272、ルーティングプロセッサ(RP: Routing Processor)260,261、これらを相互接続するスイッチブロック250が存在する。
FIG. 4 shows the configuration of the functional blocks inside the
DMA210〜212(メモリ間データ転送制御部)は、プロセッサから指示を受け、あるメモリアドレスから指定された転送長分だけのデータを他のメモリアドレスにコピーする機能を持った転送制御ブロックである。DMA210〜212は、転送元メモリからデータをリードする読出し部(RX)2101、転送先メモリへデータを書き込む書込み部(TX)2102、および転送パラメータをフェッチし解析するパラメータフェッチ部(PF)2103を含んで構成される。データ転送に係る指示方法および転送処理の起動方法等については後述する。また本実施例ではDMAを3個設けているが、DMAの数は2個以下でも4個以上でも良い。
内部データ転送パス101,102はパッケージを跨いだメモリ間のデータ転送を行うためのネットワークであり、先に述べたようにPCI Expressが用いられる。PCI Expressコア221,223はPCI Expressの基本的な送受信動作を行う制御ブロックであり、PCI Expressバスのハードウェア制御やデータリンク制御、トランザクションプロトコル制御などを行う。内部データ転送パスアービタ220,222は複数の制御ブロックからのPCI Expressネットワークパス利用要求を調停し、所定のルールで使用権限を与えて利用させる仲介制御ブロックである。例えばDMA210とDMA211が同時にデータ転送しようとした場合、最初DMA210に利用権を与えて転送を行わせ、続いてDMA211に利用権を与えて転送を行わせるといった調停処理をする。
The internal
メモリコントローラ230〜233はメモリM0〜M3またはM4〜M7が接続され、DMA210〜212や他の制御ブロックからの要求に基づいて、メモリM0,M1,M2,M3およびメモリM4,M5,M6,M7への読み書きを行い、データパケットを送受信する制御ブロックである。また、メモリコントローラ230〜233は、複数の制御ブロックから同時にアクセスされた場合、そのアクセス順序を調停するためのアービタ(ARB)を備える。メモリコントローラ230〜233はメモリチャネルとも呼ばれる。各メモリコントローラ230〜233に接続されるメモリM0〜M7には、固有のメモリアドレス空間が割り当てられる。
The
I/F制御ブロック240〜243は、先のI/Fカード80A〜81B、90A〜91Bが接続され、これらとデータ転送を行うためのブロックである。プロセッサポート271,272は制御線71A,72A等が接続され、プロセッサ760,761およびASIC200が制御上の情報データの授受を行うほか、プロセッサ760A、761A、760B、761Bが相互に通信するための制御を行うブロックである。
The I / F control blocks 240 to 243 are blocks for connecting the previous I /
ルーティングプロセッサ260,261は、I/F制御ブロック240〜243を通じてプロトコルチップから受けたコマンドを制御担当するプロセッサ760A〜761Bに振り分け処理を行う制御ブロックである。
The
ASIC200には、このほかにも様々な制御ブロックが存在してもよい。例えばデータ圧縮やデータ暗号化などハードウェア演算制御ブロックやプロセッサからのメモリアクセス専用コントローラなどが考えられる。 The ASIC 200 may have various other control blocks. For example, a hardware arithmetic control block such as data compression and data encryption, a controller dedicated to memory access from a processor, and the like can be considered.
図5は、本実施形態におけるASIC200内のDMA210〜213に対し、プロセッサ760,761が転送指示するための仕組みを模式的に示した図である。なお、以降の説明では、いずれのプロセッサからいずれのDMAを起動する場合でも手順は同じであるため、代表してDMA210、およびプロセッサ760のケースについて説明する。
FIG. 5 is a diagram schematically showing a mechanism for the
プロセッサ760は、DMA210を用いて、あるメモリアドレスにあるデータを別のメモリアドレスに転送させたい場合、DMA210に転送指示するためのパラメータ300(転送指示パラメータ)をローカルメモリ770上に構築する。パラメータ300は転送元のメモリアドレス、転送先のメモリアドレス、転送長、その他、から構成されるが詳細は後述する。なお、複数のパラメータ300は連続してローカルメモリ770に書き込まれるものとする。
When the
プロセッサ760は、目的とするデータ転送に必要な数だけパラメータ300を連続してローカルメモリ770に書き込み、DMA210の起動トリガレジスタ2に、先頭のパラメータ300が記憶されたローカルメモリ770の開始アドレスを値としてセットする。例えば図5では、ローカルメモリ770のアドレス1000h番地(16進数)から4つのパラメータ、パラメータ0〜パラメータ3が構築されているので、プロセッサ760はDMA210の起動トリガレジスタ2に値1000hをセットする。
The
DMA210は当該レジスタ2に値がセットされると、その値に示されたローカルメモリ770のアドレスからパラメータ300を読み出して解析し、パラメータ300に指示されたデータ転送を行う。例えば図5では、起動トリガレジスタ2に値1000h(16進数)がセットされたので、DMA210はローカルメモリ770のアドレス1000h番地からパラメータ300を読み出すように動作する。DMA210の動作の詳細については、後述する。
When a value is set in the
図6は、本実施形態においてプロセッサ760がDMA210へのデータ転送指示を行うために用いるパラメータ300のフォーマット例を示した図である。パラメータIDフィールド3001には各パラメータ300に設定される固有の番号が指定される。転送元アドレスフィールド3002には転送元となるメモリの開始アドレスが指定される。転送先アドレスフィールド3003には転送先となるメモリの開始アドレスが指定される。転送長フィールド3004には転送するデータのデータ長が指定される。チェイン番号フィールド3005はパラメータ300のグルーピングを指定するフィールドである。チェイン番号フィールド3005は、グルーピングする他のパラメータ300がある場合、1から順に指定され、グルーピングの最後のパラメータ300に0が指定される。すなわち、チェイン番号3005は1から順に増加し、チェイン番号3005が0までのパラメータ群が1つの転送グループと見なされる(チェインがない場合はチェイン番号3005は0である)。DMA210は、チェイン番号3005が0以外の場合、当該パラメータ300の処理で終了せずに、連続して後続パラメータ300群に指示されたデータ転送を実施するチェイン動作を行う。パス番号フィールド3006には複数ある内部データ転送パス101,102のうち何番目のパスを利用するかが指定される。図6では、パス番号フィールド3006は1つとしたが、データ読み込み時、データ書き込み時など、個別に内部データ転送パス101,102を指定できるように複数設けてもよい。なお、図6に示すパラメータ300の構成は一例であり、他の制御に必要な別のフィールドがあっても構わない。
FIG. 6 is a diagram illustrating a format example of the
図7は、本実施形態におけるDMA210のデータ転送動作を示すフローチャートである。本図を用いて書込み先メモリ面が切り替わる毎、および一連のデータ転送が終了するごとにその間の書込みを自動的に確定させる本実施形態のDMAの転送動作を説明する。
FIG. 7 is a flowchart showing the data transfer operation of the
DMA210はプロセッサ760からの起動指示により動作を開始する。本実施形態ではプロセッサ760からトリガレジスタ2に値が設定されると動作を開始するが、信号線を介した信号送信やメッセージ送信等を契機としてDMA210が起動するようにしてもよい。DMA210のパラメータフェッチ部2103は起動トリガレジスタ2に値が設定されると、設定された値が示すローカルメモリ770のアドレスを参照し、パラメータ300の1つをフェッチして設定内容を解析する(S8000)。例えば転送元アドレスフィールド3002から転送元メモリの開始アドレスを、転送先アドレスフィールド3003から転送先メモリの開始アドレスを、転送長フィールド3004から転送長(総データ転送量)を取得する。なお、DMA210が一旦起動すると、次のパラメータ300のフェッチはバックグラウンドで先読み(プリフェッチ)される(S8005)。
The
DMA210の読出し部2101はパラメータフェッチ部2103の解析結果に基づいて、転送元アドレスからどのメモリコントローラにアクセスすべきか特定する(S8010)。例えば、図8のようにメモリアドレスが割り振られているとする。転送元アドレスが23000番地だった場合、当該アドレスはメモリM1が持つ20000h〜2FFFFh番地の間にあるので、読出し部2101はメモリM1が接続されたメモリコントローラ231にアクセスすれば良いと判断する。続いて読出し部2101は該当メモリコントローラ231に対して、アクセスするアドレスと読み出すデータ長とを指定したメモリリードリクエストを発行する(S8020)。メモリリードリクエストは、対象メモリコントローラが同一ASIC200内の場合にはメモリコントローラへ直接発行され、対象メモリコントローラが別のASIC200の場合には、内部データ転送パス101,102を通じて発行される。DMA210が1回に転送できる転送長は比較的小さい。このため、パラメータ300で指定された転送長のデータを複数回に分けて転送することがある。パラメータ300で指定された転送長が、DMA210が1回に転送できる転送長よりも大きい場合には、DMA210により転送可能な最大転送長がデータ長として指定される。パラメータ300に指定された転送長が、DMA210が1回に転送できる転送長以下の場合には、パラメータ300で指定された転送長がデータ長としてリードリクエストに指定される。例えばDMA210が1回に転送できる転送長が2048バイトの場合、パラメータに指定された転送長が4096バイトであれば2048バイト、512バイトであれば512バイトが、読み出すデータ長としてリードリクエストに指定されることになる。
Based on the analysis result of the parameter fetch
メモリコントローラ230〜233はリードリクエストに指定されたアドレスが指定する、リードリクエストに指定された転送長のデータをメモリM0〜M7から読み出し、読み出したデータとともにリードレスポンス(Completion)を読出し部2101に返す。リードレスポンスは同一ASIC200内部のDMA210であれば直接送信され、別ASIC200の場合には内部データ転送パス101,102を通じて送信される。DMA210の読出し部2101は、メモリコントローラ230〜233から読み出されたデータと共にリードレスポンスを受領し(S8030)、受領したデータをDMA210内部のバッファに格納する。
The
DMA210の書込み部2102は、DMA210内部のバッファにデータが格納されると、パラメータフェッチ部2103の解析結果に基づいて転送先アドレスからどのメモリコントローラ230〜233にアクセスすべきか特定する(S8040)。例えば、図8のようにメモリアドレスが割り振られており、転送先アドレスが51000h番地だった場合、書込み部2102はメモリM4が接続されたメモリコントローラ230にアクセスすれば良いと判断する。
When the data is stored in the buffer in the
書込み部2102は、2つ目以後のパラメータ300について、上記アクセス先として特定したメモリコントローラと前回のS8040において特定したメモリコントローラとが異なった場合(S8050:Yes)は、前回特定したメモリコントローラに対してダミーのリードリクエストを発行する(S8060)。ダミーのリードリクエストは、例えば転送長が0のメモリリードリクエストなど、先に発行されたメモリライトリクエストを追い抜かないもの(すなわち、先に発行された全てのメモリライトリクエストによるメモリへの書込みが終了した後に処理されるリクエスト)であればよい。ダミーリードリクエストは、ダミーリードリクエストを送信する対象のメモリコントローラが同一ASIC200内の場合にはメモリコントローラへ直接発行され、対象のメモリコントローラが別のASIC200の場合には、内部データ転送パス101,102を通じて転送される。なお、同一ASIC200内でDMA210からメモリコントローラ230〜233までの経路上にデータが滞留する部分(バッファ等)がない場合には、今回のS8040で特定したメモリコントローラが、前回のS8040で特定したメモリコントローラと異なる場合(S8050:Yes)であっても、前回のメモリコントローラが同一ASIC200内であれば、ダミーリードリクエストの発行を省略するよう実装しても構わない。書込み部2102は、ダミーリードリクエストに対するリードレスポンスが返ってくるとエラーがあるかどうか判定する(S8070)。エラーがない場合には(S8070:No)、書込み部2102は、DMA210内部のバッファに格納されたデータと共に新たなアクセス先のメモリコントローラへメモリライトリクエストを発行する(S8080)。
If the memory controller identified as the access destination differs from the memory controller identified in the previous S8040 for the second and subsequent parameters 300 (S8050: Yes), the writing unit 2102 A dummy read request is issued (S8060). Dummy read requests that do not overtake previously issued memory write requests, such as memory read requests with a transfer length of 0 (ie, all previously issued memory write requests have been written to memory) Requests to be processed later). The dummy read request is issued directly to the memory controller when the target memory controller to which the dummy read request is transmitted is in the same ASIC 200, and the internal
なお、S8050において、アクセス先のメモリコントローラが前回と同じ場合(S8050:No)およびS8000で読み出したパラメータ300が最初のものである場合には、S8060〜S8070の処理を行う必要はなく、S8080のみが実行される。
また、S8070において、メモリリードレスポンスにエラーがあった場合(S8070:Yes)、書込み部2102、読出し部2101、パラメータフェッチ部2103は当該パラメータ300および当該パラメータ300にチェインされている後続パラメータ(すなわち、チェイン番号欄3005に設定されている値が当該パラメータ300から連続してインクリメントされている一連のパラメータ300)についてデータ転送処理を全て中断し(S8300)、エラーに起因した終了のステータスをプロセッサ760,761へ通知する。
In S8050, when the access destination memory controller is the same as the previous one (S8050: No) and when the
In S8070, if there is an error in the memory read response (S8070: Yes), the
先に述べたとおりDMA210が1回に転送できる転送長は小さいことが多いため、書込み部2102は転送が終わると、前回までの転送量と今回の転送量を累計し、パラメータに指定された転送長に達成しているか判断する(S8090)。指定された転送長に達している場合(S8090:Yes)、書込み部2102は、最後にS8040において特定したメモリコントローラに対してダミーリードリクエストを送信して、これまでのデータのメモリへの書込みを確定する(S8100)。書込み部2102は、ダミーリードリクエストに対するメモリコントローラからのリードレスポンスを受信してエラーの有無を判定し(S8110)、エラーがあればS8300に進んで上述のように転送を中断する。読出し部2101、書込み部2102はパラメータフェッチ部2103へ指定された転送長に達したことを通知し次の指示を待つ。パラメータフェッチ部2103は次のパラメータがチェインされているか判定する(S8120)。次のパラメータがチェインされていない場合(S8120:No)、パラメータフェッチ部2103は転送終了ステータスをプロセッサ760,761に通知し(S8130)、データ転送処理を終了する。
As described above, since the transfer length that the
なお、S8090において、累計転送量がパラメータ300に指定された転送長に達していない場合(S8090:No)、書込み部2102および読出し部2101は残転送長を今回転送分減じ(S8200)、また転送元アドレスおよび転送先アドレスを今回転送長分ずらして(S8210)、パラメータ300に指定された転送長に達するまで繰り返す(処理はS8010に戻る)。
In S8090, when the cumulative transfer amount does not reach the transfer length specified in the parameter 300 (S8090: No), the
また、S8100において、パラメータ300がチェインされていた場合(S8100:Yes)は、引き続いて次のパラメータ300によるデータ転送処理を行う(S8000に戻る)。
以上のようにして、本実施形態のDMA210はデータ転送処理を行う。
In S8100, when the
As described above, the
なお、実際の制御実装では、パラメータフェッチ部2103、読出し部2101、書込み部2102は同時並行動作しうるので、各処理(S8000〜S8130)は時間的に並行して行われることがある。また本実施形態ではパラメータフェッチ部2103、読出し部2101、書込み部2102の3つを設け上記のように役割を分担したが、DMAとして同様の機能を果たせば他の構成でも良い。
In the actual control implementation, the parameter fetch
図9は、先の図7のDMA転送制御を含め、本実施形態におけるメモリ間データ転送制御の全体像を示すラダーチャートである。図の縦方向は時間の経過を示し、図の横方向は各資源間の制御およびデータの流れを示す。各資源はローカルメモリ770,771、プロセッサ760,761、メモリM0〜M7、DMA210〜213であるが、同一資源であれば動作は同じ為、番号は省略する。なお、メモリ#xは転送元のメモリを、メモリ#0およびメモリ#1は転送先のメモリを示しており、それぞれはM0〜M7が接続されたメモリコントローラ230〜233の中の任意の1つであり、転送元と転送先が重複しても良い。本図を用いて、データ転送制御の全体像を説明する。
FIG. 9 is a ladder chart showing an overall image of the inter-memory data transfer control in this embodiment, including the DMA transfer control of FIG. The vertical direction in the figure shows the passage of time, and the horizontal direction in the figure shows the control and data flow between resources. The respective resources are
プロセッサ760,761は図6に示したパラメータフォーマットに基づき、図5に示した方法でローカルメモリ上にパラメータ300群を作成する(R7000)。プロセッサ760,761は引き続いてDMAのパラメータ300を作成したローカルメモリのアドレスをトリガレジスタ2に設定することにより、DMAを起動するトリガをかける(R7100)。DMAはトリガレジスタ2を参照してローカルメモリからパラメータ300群の最初のパラメータ300をフェッチする(R7200)する。また、バックグラウンドタスクとして適切なタイミングにて次のパラメータ300をプリフェッチする(R7210)。DMAはパラメータ300を解析し、その結果に基づいて、メモリ#nからデータを読み出すと共に(R7300〜R73xx)、並行してメモリ#1にデータを書き込む(R7400〜R74xx)。書込み先メモリ面がメモリ#0からメモリ#1に切り替わる場合、DMAはそれまでの書込みを確定させるためのダミーのリードリクエストを発行する(R7500)。そして引き続きデータリードを行いながら(R7600〜R76xx)、メモリ#1へのデータの書込みを継続する(R7700〜R77xx)。パラメータ300に指定された転送長分のデータ転送が終了すると、最終メモリ面にダミーのリードリクエストを発行して書込みの確定処理を行う(R7800)。後続するパラメータ300がチェインされていない(次のパラメータ300のチェイン番号3005が0である)場合には、転送ステータスを、ローカルメモリを通じてプロセッサ760,761に返送する(R7900)。
Based on the parameter format shown in FIG. 6, the
(本実施例1の効果)
本実施例1によれば、同じメモリコントローラ230〜233へのライトリクエストについては、書込みを確定させずに連続して送信し、書込み先が異なるメモリコントローラ230〜233にライトリクエストを送信する場合には、先のメモリコントローラ230〜233に対してダミーリードリクエストを送信することができる。同一のメモリコントローラ230〜233に対するリクエストは同一の経路を通って送信されるので、ポステッドアクセスによるライトリクエストの後に、ノンポステッドアクセスによるダミーリードリクエストを送信することにより、先に発行されたライトリクエストに係るデータの書込みを確定することができる。したがって、内部データ転送パス101,102において、書き込みの完了応答がなされないプロトコルを用いている場合にも、ライトリクエストの発行経路をパケットごとに記憶することなく、メモリへの書込みを確定することができる。加えて、パケット毎の経路記憶領域が不要となり実装の小型化を図ることができる。また、本実施形態ではDMA210〜212が、書込み先のメモリM0〜M7が切り替わるタイミングおよび書込みが終了するタイミングにおいて自動的にダミーリードリクエストを送信することができるので、管理端末31やホスト計算機20において実行される制御ソフトウェアなどによりダミーリードリクエストを発行する等の追加の処理を行う必要がないため、システム全体として性能の高速化を図る事ができる。
(Effect of the first embodiment)
According to the first embodiment, write requests to the
(本実施例1の変形例1)
本実施形態では書込みの確定を行うため、メモリM0〜M7に対するダミーのリードリクエストを発行したが、代わりにメモリコントローラ230〜233のレジスタに対するリードリクエストを発行するように変形しても良い。なお、レジスタに対するリードリクエストもノンポステッドアクセスであるものとする。本変形例の場合、書込みを確定するためにメモリM0〜M7にアクセスしないため、より高速に書込みの確定を行うことが可能となり、メモリ利用効率を向上させるという追加の効果がある。また、上記メモリコントローラ230〜233のレジスタには、ライトリクエストの個数を記録する機能を持たせてもよい。この場合、DMA210〜212はレジスタからリードした値と発行したライトリクエストの数との差を比較することによって転送の正常/異常を判定することができる。したがって、より書込み確定の信頼性を高めることができるという追加の効果がある。前記レジスタはDMAやその他のメモリへアクセスを行う資源ごとに設けても良いし、アクセスエリアごとに設けても良い。また、メモリコントローラ230〜233がライトリクエスト以外にもリードリクエストの数やその他の統計情報を保持するレジスタを備えていても良い。
(
In the present embodiment, a dummy read request is issued to the memories M0 to M7 in order to confirm writing, but it may be modified so that a read request is issued to the registers of the
(本実施例1の変形例2)
本実施形態ではメモリへの書込みの確定を行うため、ダミーリードリクエスト(ノンポステッドアクセス)を発行したが、この代わりに、先行するライトリクエストを追い抜かないポステッドアクセスの専用命令(書込み確認要求)を定義して発行するように変形しても良い。例えば、図10のようなフォーマットのTLP(Transaction Layer Packet)を書込み確認要求として定義し、この書込み確認要求を送信すると、メモリコントローラ230〜233はバッファ中のデータをメモリへフラッシュし、非同期で図11のようなポステッドアクセスによる応答(書込み確認応答)を返すようにする。この場合のシーケンスは図12のようになる。本変形例の場合、ノンポステッドアクセスと異なりDMA210〜212は、応答データ(リードレスポンス)受信用のバッファを確保して待つ必要がなくなる。これにより、動作の並列性が高まり性能改善する事ができるという追加の効果がある。なお、通常のPCI Expressでは未定義のリクエスト(TLP)は破棄されてしまうため、上記のリクエストや応答を受理するようにPCIコア221,223に前記定義を実装する。
(
In this embodiment, a dummy read request (non-posted access) is issued in order to confirm writing to the memory. Instead, a dedicated instruction for posting access that does not overtake the preceding write request (write confirmation request) It may be modified so that it is defined and issued. For example, when a TLP (Transaction Layer Packet) in the format shown in FIG. 10 is defined as a write confirmation request and this write confirmation request is transmitted, the
(本実施例1の変形例3)
本実施形態ではメモリへの書込みの確定を行うため、メモリへダミーのリードリクエストを発行したが、ASIC200内の実装および内部データ転送パス101,102の経路上に、書込み確定要求のための専用信号線を設けてもよい。図13はこの実装例を示したものである。DMA210〜212は、書込みの確定が必要になると、信号コントローラ280に、書込み確定の必要なメモリコントローラ230〜233に信号を送るよう指示する。信号は例えば、DMA210〜212からの書込み転送数等の情報を含むものであり、メモリコントローラ230〜233は要求された転送数が到着すると、確定完了信号を返すようにする。DMA210〜212は信号コントローラ280を通じて書込みが確定したことを確認することができる。本変形例の場合、書込み確定用のリクエストおよび応答がデータ転送経路を通らないので、データ転送への影響がなくなり転送効率が改善するという追加の効果がある。
(
In this embodiment, a dummy read request is issued to the memory in order to confirm the writing to the memory. However, a dedicated signal for a request for confirming the writing is provided on the mounting in the ASIC 200 and the paths of the internal
(本実施例1の変形例4)
本実施形態では書込みの確定をメモリコントローラ230〜233が切り替わる点を契機として実行したが、メモリコントローラ230〜233ではなく、その先に実装されるDIMM単位としても良い。この場合、メモリコントローラ230〜233ごとのアドレス範囲の代わりにDIMMごとのアドレス範囲を管理し、図7のS8050にてアクセス先のDIMMが前回と異なるか否かを判定するように変更すれば実現可能である。また通常DIMMは、複数のメモリチップで構成され、バンクという単位で管理される。従い、同様にして、DIMM内のバンクが切り替わる点を書き込み確定の契機としても良い。この場合、バンクごとのアドレス範囲を管理することとなる。
(
In the present embodiment, the write is confirmed by the point that the
(本実施例1の変形例5)
本実施形態では、メモリ面が切り替わるのを契機に書込みの確定処理を行うようにしたが、メモリ面が切り替わる前にも一定転送回数毎に定期的に行うようにしてもよい。本変形例の場合、非常に大きな転送長のデータを書き込む際、定期的に書込みを確定させることができるので、データの書込みの確実性を向上させることができるほか、細かく書込み確定処理を行うので、エラー発生時のリカバリ処理が容易になるといった追加の効果がある。また、転送パラメータ300にてプロセッサ760,761が明示的に書込み確定処理の必要性の有無や頻度を指定できるようにしても良い。あるいは、DMA210〜212の起動トリガレジスタを2種設け、一方のトリガレジスタによって起動された場合には書込み確定処理付きで動作し、他方のトリガレジスタによって起動された場合には書込み確定処理を行わないようにしてもよい。この場合、不要な書込み確定動作を削減させることができるので処理性能を向上させるといった追加の効果がある。
(
In the present embodiment, the write confirmation process is performed in response to the switching of the memory surface. However, it may be performed periodically every predetermined number of times before the memory surface is switched. In the case of this modification, when writing data with a very large transfer length, the writing can be confirmed periodically, so the reliability of data writing can be improved and the write confirmation process is performed in detail. In addition, there is an additional effect that recovery processing when an error occurs becomes easy. Further, the
(本実施例1の変形例6)
本実施形態では、DMA210〜212はパラメータ300をリードし、その指示によってメモリ間のデータ転送を実行するが、バッファまたはレジスタに書かれた小データを、ライト確定処理を実行しつつメモリに転送するための別のDMAを設けても良い。また、レジスタのサイズおよびアドレスからデータの転送長および転送元アドレスを知ることができるので、パラメータ300の構築を省略し、転送先アドレスをトリガレジスタにセットするように変形しても良い。更に、データ転送が正常終了の場合には、転送終了通知の送信を省略してもよい。本変形例の場合、データ転送におけるパラメータ作成や転送ステータスチェックのオーバーヘッドを削減できるので、小データ単位でのデータ転送においても処理性能を向上させる追加の効果がある。
なお上記の変形例1〜6は、必要に応じて組み合わせても構わない。
(
In this embodiment, the DMAs 210 to 212 read the
In addition, you may combine said modification 1-6 as needed.
<実施例2>
実施例2を図14〜図15を参照して説明する。
実施例2における装置の基本構成は図1に示すストレージ装置であり、ストレージコントローラの構成も図3と同じだが、ASIC200が備える機能が異なる。以降の説明では主に実施例1と異なる部分を説明し、同様の部分については説明を割愛する。なお、ASIC200A,ASIC200Bとも構成は同一であるため、以降の説明では末尾のアルファベット符号は省略する。
<Example 2>
A second embodiment will be described with reference to FIGS.
The basic configuration of the apparatus in the second embodiment is the storage apparatus shown in FIG. 1, and the configuration of the storage controller is the same as that in FIG. 3, but the functions of the ASIC 200 are different. In the following description, portions different from the first embodiment will be mainly described, and description of similar portions will be omitted. Since the
図14は、実施例2のストレージコントローラにおけるASIC200の機能ブロックを示したものである。ASIC200には、DMA210〜212の状態管理を行うDMAステータスブロック400が設けられている。DMA210〜212には自己の状態管理と他のDMA210〜212の情報を取得するための状態管理部(SM)2104が設けられる。
FIG. 14 shows functional blocks of the ASIC 200 in the storage controller of the second embodiment. The ASIC 200 is provided with a
DMAステータスブロック400は各DMA210〜212の転送状態を示すテーブル401を持つ。テーブル401の詳細は図15を用いて後述する。各DMA210〜212の状態管理部2104は、スイッチブロック250を通じて、このDMAステータスブロック400にアクセスし、自己の情報の記録や、他のDMA210〜212の情報を取得して、パス選択の判断に利用する。
The
図15は、実施例2のASIC200内のテーブル401の一例を示したものである。テーブル401には、各DMA210〜212の番号(DMA番号)4010、現在の状態4020、転送元のメモリコントローラ番号4030、転送先のメモリコントローラ番号4040、使用中の内部データ転送パス番号4050、リクエスト種別4060などのフィールドがある。
FIG. 15 shows an example of the table 401 in the ASIC 200 of the second embodiment. The table 401 includes a number (DMA number) 4010 of each
DMA番号4010はASIC200A,200B内のDMA210〜212を識別する番号が格納されるフィールドである。現在の状態4020は、各DMAがデータ転送中(BUSY)なのか、停止中(IDLE)なのかを示すフィールドである。転送元メモリコントローラ番号4030は、DMA210〜212内のパラメータ解析により特定された転送元メモリコントローラ230〜233を識別する番号である。同様に転送先メモリコントローラ番号4040は、DMA210〜212内のパラメータ解析によって特定された転送先メモリコントローラ230〜233を識別する番号である。内部データ転送パス番号4050は、内部データ転送パス101,102を介してデータを転送している場合に使用している内部データ転送パス101,102を識別する番号である。リクエスト種別4060は、読み出し(RX)に使用しているのか、書き込み(TX)に使用しているのか、あるいは両方(TX/RX)に使用しているのかを示す。なお、本実施例では転送先メモリコントローラ番号4040を示すフィールドは1つとしたが、DMAが1つの転送元から同時に複数の転送先に転送する機能を持つ場合、テーブル401はその数に応じた複数の転送先メモリコントローラ番号フィールドを備える。
The
図16は、本実施形態におけるDMA210がデータ転送動作する際のフローチャート例である。なお、DMA211,212もDMA210と同様の動作を行う。DMA210のパラメータフェッチ部2103は図7に示したのと同様の方法によってパラメータ300を解析し、転送元および転送先メモリコントローラ230〜233を特定する(S8010,S8040)。その結果、もし転送元あるいは転送先のメモリコントローラ230〜233に内部データ転送パス101,102を使ってアクセスする必要がある場合(すなわち、別パッケージのメモリM4〜M7へアクセスする場合)、DMA210の状態管理部2104はDMAステータスブロック400にアクセスし、どの内部データ転送パス101,102を使うべきかを決定する。具体的には、状態管理部2104はテーブル401を参照して、各内部データ転送パス101,102について、リクエスト種別4060ごとのレコードの数を集計する。内部データ転送パス101,102を使ったアクセスが読出しだった場合(すなわち転送元メモリコントローラ230〜233のみが別パッケージのメモリM4〜M7に対応する場合)(S9020:Yes)、状態管理部2104はリクエスト種別4060に「RX」が含まれているレコードの数を内部データ転送パス101,102ごとにカウントする(S9030)。一方、内部データ転送パス101,102を使ったアクセスが書込みだった場合(すなわち転送先メモリコントローラ230〜233のみが別パッケージのメモリM4〜M7に対応する場合)(S9040:Yes)、状態管理部2104は、リクエスト種別4060に「TX」が含まれているレコードの数を内部データ転送パス101,102ごとにカウントする(S9050)。内部データ転送パス101,102を使ったアクセスが読出しと書込みの両方だった場合(すなわち転送元および転送先のメモリコントローラ230〜233の両方が別パッケージのメモリM4〜M7に対応する場合)、状態管理部2104は、レコードの数を内部データ転送パス101,102ごとにカウントする(S9060)。状態管理部2104は、リクエスト種別4060についてカウントしたレコード数が最も小さい内部データ転送パス101,102を選択する(S9070)。そして、状態管理部2104は、利用するメモリコントローラ230〜233や利用する内部データ転送パス番号など自DMA210に対応するレコードの情報を更新する。例えば、自DMA210の番号は「0」で、DMA210と同じパッケージのメモリコントローラ0から別パッケージのメモリコントローラ5へ、内部データ転送パス0(101)を使用してデータ転送する場合、状態管理部2104は、DMA番号4010が「0」のレコードについて、状態4020に「BUSY」、転送元メモリコントローラ番号4030に「0」、転送先メモリコントローラ番号4040に「5」、内部データパス番号4050に「0」、リクエスト種別4060に「TX」をそれぞれ設定する。
FIG. 16 is an example of a flowchart when the
パラメータ300に応じたデータの転送が終了すると(図7のS8020〜S8030またはS8050〜S8110)、DMA210の状態管理部2104はテーブル401の状態を再び更新する(S9090)。すなわち自DMA210に対応する状態4020を「IDLE」とし、転送元メモリコントローラ番号4030、転送先メモリコントローラ番号4040、内部データ転送パス番号4050、リクエスト種別4060をクリアする。
When the data transfer according to the
(実施例2の効果)
本実施例2によれば、内部データ転送パス101,102が複数ある場合、他の資源(DMA)による内部データ転送パス101,102の利用状況を踏まえて、データの転送に用いる内部データ転送パス101,102を選択することができるようになり、効率的な転送が可能となる。従来よく使われる手法としてネットワークパスの転送バッファ空き状況を見て選択する方法があるが、複数のDMA210〜212がわずかな時間差で空き状況を見た場合、全てのDMA210〜212が同じパスを選択する可能性があり効率的な転送が行えない。本実施例2では、テーブル401を参照したDMA210〜212は選択結果をテーブル401に反映する。次のDMA210〜212は前のDMA210〜212の選択結果も踏まえてデータの転送に用いる内部データ転送パス101,102を決定することができるので、全てのDMA210〜212が同じ内部データ転送パス101,102を選択してしまう可能性が減り、より効率的なパス選択が可能となる。
(Effect of Example 2)
According to the second embodiment, when there are a plurality of internal data transfer
(実施例2における変形例1)
本実施例2では個々のDMA210〜212が他のDMA210〜212の情報を見てパス選択につき判定していたが、ステータスブロック400に判定論理を設け、DMA210〜212がステータスブロック400に問い合わせるようにしても良い。この場合、ステータスブロック400にはパス選択部を設け、DMA210〜212が転送元および転送先のメモリコントローラ230〜233を含むリクエストをパス選択部に送信し、パス選択部は、このリクエストに応じて、図16のS9000〜S9070の処理を行い、選択した内部データ転送パス101,102を応答する。本変形例1の場合、パス選択論理を一箇所に集約できるので実装効率が向上する可能性があるほか、テーブル401のレコードの更新タイミングをステータスブロック400で調整できるので、データ読取り中の書込みなどによる情報不正合を防止しやすくなるという追加の効果がある。
(
In the second embodiment, each of the DMAs 210 to 212 determines the path selection by looking at the information of the
(実施例2における変形例2)
本実施例2では各DMA210〜212による内部データ転送パス101,102の選択状況を見てパス選択につき判断するようにしたが、これに加え内部データ転送パス101,102のバッファの空き状況やPCI Expressの転送クレジット残数などを加味して判断するようにしても良い。例えば内部データ転送パス0(101)の利用は少ないが対応バッファに空きがない場合、内部データ転送パス1(102)を選択するといった判断が可能になる。一例としては、内部データ転送パスアービタ220,222に、内部データ転送パス101,102で使用されているバッファ量をモニタする機能や、PCI Expressコア221,223に転送クレジット残数をモニタする機能を加えることで実現が可能となる。本変形例2では、ステータスブロック400には、転送クレジット残数などを記憶する図17に示すようなテーブル402を記憶しておくようにする。図17の例では、ヘッダやデータなどのより詳細なバッファのクレジット、すなわちポステッドヘッダバッファのクレジット(PH_CREDITS; Posted Header buffer CREDITS)や、ポステッドデータバッファのクレジット(PD_CREDITS; Posted Data buffer CREDITS)、ノンポステッドヘッダバッファのクレジット(NPH_CREDITS: Non-Posted Header buffer CREDITS)、ノンポステッドデータバッファのクレジット(NPD_CREDITS; Non-Posted Data buffer CREDITS)、完了応答ヘッダバッファのクレジット(CPLH_CREDITS; ComPLetion Header buffer CREDITS)、および完了応答データバッファのクレジット(CPLD_CREDITS; ComPLetion Data buffer CREDITS)を記憶するようにしている。メモリライトリクエストのようなポステッドアクセスの場合には、PH_CREDITSやPD_CREDITSの残数を、メモリリードリクエストのようなノンポステッドアクセスの場合には、NPH_CREDITSやNPD_CREDITSの残数を比較することで参照すればよい。本変形例の場合、内部データ転送パス101,102の混雑状況を加味できるのでより精度の高いパス選択が可能となる追加の効果がある。
(
In the second embodiment, the selection of the internal
(実施例2における変形例3)
本実施例2では各DMA210〜212による内部データ転送パス101,102の選択状況を見て判断するようにしたが、これに加えテーブル401の転送元/転送先メモリコントローラ番号4030,4040の利用状況を加味して判断するようにしても良い。内部データ転送パス101,102を通じてメモリコントローラ231にアクセスすることを想定する。例えば、内部データ転送パス0(101)の方がDMAの数が少ないが、アクセス先がみな同じメモリコントローラ230だった場合、当該メモリコントローラ230のバッファがあふれ、内部データ転送パス0上にある後続のパケットが滞留している可能性がある。そこで選択しているDMAの数が多くても内部データ転送パス1(102)を選択する、といったケースが考えられる。本変形例3では、状態管理部2104は、各内部データ転送パス101,102について、例えば宛先メモリコントローラを231とするDMAに限定し、S9030,S9050,S9060に示すカウントを行うことで実現できる。本変形例3の場合、内部データ転送パス101,102の混雑状況に加え、アクセス先のメモリコントローラ230〜233の混雑状況を加味できるのでより精度の高いパス選択が可能となる追加の効果がある。
(
In the second embodiment, the determination is made by checking the selection status of the internal
(実施例2における変形例4)
本実施例2では各DMA210〜212による内部データ転送パス101,102の選択状況を見て判断するようにしたが、これに加え、転送長や、転送ブロック数、あるいは、残転送ブロック数などのより詳細な情報をテーブル401に加え、判断に利用しても良い。本変形例の場合、パス選択する上での精度を高めることができ、より効率的な判断が可能となる追加の効果がある。
(
In the second embodiment, the determination is made by checking the selection status of the internal
なお上記の実施例2の変形例1〜4は、必要に応じて組み合わせても構わない。 In addition, you may combine the modifications 1-4 of said Example 2 as needed.
<実施例3>
実施例3を図18〜図20を参照して説明する。
実施例3における装置の基本構成は図1に示すストレージ装置であり、ストレージコントローラの構成も図3に同じであるが、プロセッサ760,761がDMA210〜212の転送指示に使うパラメータ300のフォーマット、およびプロセッサ760,761がASIC200にメモリM0〜M7の利用レイアウト情報を通知/設定できる点が異なる。以降の説明では主に先の実施例1、2と異なる部分のみ説明し、同様の部分については説明を割愛する。
図18は実施例3におけるプロセッサ760,761がDMA210〜212への転送指示を行うために作成するパラメータ300のフォーマットの一例である。本実施例3のパラメータ300には、先の実施例のパラメータ300が備えるフィールド3001〜3006に加え、当該転送のI/Oの種別や処理の優先度を指定するフィールド(I/O種別)3007がある。I/O種別フィールド3007は8ビットのフィールドで、上位4ビットがI/Oの種別、下位4ビットが優先度を示す。例えばI/Oの種別としては、ホストからのランダムなI/Oは1000b(2進数)、ホストからのシーケンシャルなI/Oは0100b、ストレージが備えるボリューム間の同期機能などの転送は0110bないし0111bなど種別毎に設定するものとする。一方、優先度は、最優先の転送は1000b、最低で良いものは0001bなどであり、プロセッサ760,761はパラメータ300を作成する際、これらの組合せによって値を指定する。
<Example 3>
A third embodiment will be described with reference to FIGS.
The basic configuration of the apparatus in the third embodiment is the storage apparatus shown in FIG. 1, and the configuration of the storage controller is the same as in FIG. 3, but the format of the
FIG. 18 shows an example of the format of the
図19は本実施例3におけるメモリレイアウト情報設定テーブル800である。このテーブルはASIC200内の内部データ転送パスアービタ220,222用の設定レジスタに設けられる。なお、このメモリレイアウト情報設定テーブル800の情報は、内部データ転送パスアービタ220,222が利用できれば良く、同等の効果が得られるのであれば別の場所に配してもよい。例えばローカルメモリ770,771やメモリM0〜M7などにメモリレイアウト情報設定テーブル800を配置することもできる。
FIG. 19 shows a memory layout information setting table 800 in the third embodiment. This table is provided in a setting register for the internal data
メモリレイアウト情報設定テーブル800には、DMA210〜212がメモリ転送に利用するメモリ範囲を指定する。一般にメモリM0〜M7の全領域がストレージのキャシュメモリ領域として利用できるわけではなく、メモリM0〜M7の一部はプロトコルチップの制御情報格納エリアや、プロセッサ760,761のキャッシュ管理情報格納エリア等して利用される。そこで、それ以外の領域をこのテーブル800で指定することで、ASIC200、特に内部データ転送パス101,102のデータ通過を制御する内部データ転送パスアービタ220,222にどのメモリコントローラ230〜233へのアクセスが多く発生するか知らせることができる。
In the memory layout information setting table 800, a memory range used by the
メモリレイアウト情報テーブル800の構成について説明する。メモリ番号フィールド8010には、メモリ面の番号が記録される。本実施例3では、メモリ番号8010はメモリM0〜M7である。開始アドレスフィールド8020はDMA210〜212によるアクセス有効範囲の開始アドレスである。終了アドレスフィールド8030はDMA210〜212によるアクセス有効範囲の終了アドレスである。比率フィールド8040は、ASIC200が各メモリコントローラ230〜233にアクセスする回数比率を設定するフィールドである。比率は、プロセッサ760,761から指定されたアドレス範囲の広さに応じた値となる。本実施例3では、あるアドレス空間を単位に、その空間がいくつ存在するかで示している。図19の例では、アドレス空間1000h(0000h番地〜0FFFh番地)を単位としており、メモリM2およびメモリM3がともに10000hの空間を提供しているので(16)、メモリM0が5000hの空間を提供していることから5となっている。カウンタフィールド8050はアービタが調停比率の変更を管理するために用いる動作カウンタであり、初期値は比率フィールド8040と同じ値が設定される。
The configuration of the memory layout information table 800 will be described. In the
図20は、本実施形態におけるDMA210と内部データ転送パスアービタ220とのデータのやり取りを模式的に示した図である。DMA210〜213および内部データ転送パスアービタ220,221間のデータのやり取りはいずれも同じであるから、ここではDMA210と内部データ転送パスアービタ220とを用いて説明する。DMA210と内部データ転送パスアービタ220との間には、DMA210から内部データ転送パスアービタ220へパス利用権を要求するREQ信号線601、要求時にアクセス先メモリコントローラ番号を伝えるREQ_MEM_NO信号線602、内部データ転送パスアービタ220からDMA210へパス利用権の許可を伝えるACT信号線603、および両者のデータの送受信や同期のための信号、エラーステータス信号等を通信するための各種信号線60nが設けられている。内部データ転送パスアービタ220はこれらの信号線群を用いて、スイッチブロック250を介してパスを利用する同コントローラ内ASIC200の全てのDMA210〜213やその他資源と通信することができる。
FIG. 20 is a diagram schematically showing data exchange between the
図21は本実施形態における内部データ転送パスアービタ220,222の動作を示したフローチャートである。以降では内部データ転送パスアービタは単にアービタと称する。また、アービタ220とアービタ222とは同じ動作を行うので、ここではアービタ220についてのみ説明する。
FIG. 21 is a flowchart showing the operation of the internal data
DMA210〜212は先の図5と同様の手順によって起動されると、図7の手順と同様にしてパラメータ300の解析を行いアクセス先メモリコントローラ230〜233を特定する。アクセス先メモリコントローラ230〜233に内部データ転送パス101,102を通じてアクセスする場合、DMA210〜212はアクセス先メモリコントローラ番号を示す信号と共にパス利用権を取得するための要求信号をREQ信号線601およびREQ_MEM_NO信号線602を通じてアービタ220に発行する。
When the DMAs 210 to 212 are activated by the same procedure as in FIG. 5, the
アービタ220はDMA210〜220から要求信号を受領すると(S9000)、順に利用権の調停動作を開始する。
受領した要求信号が1つの場合(S9010:Yes)、アービタ220は当該要求信号に利用権を与え(S9100)、ACT信号603を通じてACT信号を返す。当該DMAはACT信号を受領するとメモリコントローラ230〜233との間でデータの転送を行い、終了するとREQ信号線601のREQ信号を取り下げて(信号をネゲートして)、利用権を解放する。アービタ220は利用権が解放されるのを待ち(S9110)、再び要求信号待ちに入る。
When the
When the received request signal is one (S9010: Yes), the
もし、同時に複数の要求信号を受けていた場合、もしくは待たせている要求が複数ある場合(S9010:No)、アービタ220はREQ信号と共にREQ_MEM_NO信号線602を通じて受領しているアクセス先メモリコントローラ番号をチェックする(S9020)。そして、メモリレイアウト情報設定テーブル800を参照して各メモリコントローラ番号に対応するカウンタフィールド8050の値を比較する(S9030)。そして、アクセス先として要求されているメモリコントローラ230〜233の中でカウンタフィールド8050の値が最も大きいメモリコントローラ番号を選択し、その番号を指定しているDMA210〜212にパス利用権を与える(S9040)。なお、複数のDMA210〜212が該当する場合には、アービタ220は、ラウンドロビンで利用権を調停するものとする。そして、当該メモリコントローラ番号に対応するカウンタ値を1減じて、優先度を1つ落とす処理を行う(S9050)。全てのカウンタ値が0となった場合(S9060:Yes)、アービタ220は比率フィールド8040を参照して各メモリのカウンタ値を比率フィールド8040の値と一致するようリセットする(S9070)。そして与えたパス利用権が解放されるのを待って(S9080)、再び信号待ちに入る。
If a plurality of request signals are received at the same time or if there are a plurality of requests waiting (S9010: No), the
(実施例3の効果)
本実施例3によれば、プロセッサ760,761、すなわち制御ソフトウェアから設定されるメモリ資源利用情報を活用することにより、単にハードウェアのみで調停するよりも効率良く内部データ転送パス101,102の利用調停を行うことができ、内部データ転送パス101,102のデータ転送を効率化することができる。
(Effect of Example 3)
According to the third embodiment, by using the memory resource usage information set by the
以上3つの実施例、およびそれに付随する変形例について説明したが、本実施例は本発明で挙げる課題の少なくとも1つ解決するための手段の一例を説明するためのものであり、その構成についてはこれを限定するものではない。また、上記実施例は個別に適用することも、また組み合わせて適用することも可能である。 Although the three embodiments and the modifications associated therewith have been described above, this embodiment is for explaining an example of means for solving at least one of the problems listed in the present invention. This is not a limitation. Further, the above embodiments can be applied individually or in combination.
本発明は、上記実施例1ないし3に記載した1または複数のストレージ装置に適用できるのはもちろんのこと、PCI Expressに限らず、書込みが完了した旨の応答のない1または複数のネットワークを用いて接続されたデータ転送装置であれば広く適用することが可能である。 The present invention can be applied to one or a plurality of storage apparatuses described in the first to third embodiments, and is not limited to PCI Express, but uses one or a plurality of networks that do not respond to the completion of writing. Therefore, the present invention can be widely applied to any data transfer device connected in this manner.
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。 Although the present embodiment has been described above, the above embodiment is intended to facilitate understanding of the present invention and is not intended to limit the present invention. The present invention can be changed and improved without departing from the gist thereof, and the present invention includes equivalents thereof.
Claims (14)
前記転送元アドレスに基づき、前記第1のメモリのデータを取得する読み出し部と、
前記転送先アドレスに基づき、前記第2のメモリへデータの書き込みを行うメモリコントローラに、前記取得したデータを転送し、
転送が終了すると、前記転送したデータの量が前記データの転送長に達しているか否かを判定し、
前記判定の結果、前記転送したデータの量が前記データの転送長に達している場合、前記メモリコントローラに読み出し要求を送信する書き込み部と、
を備えるデータ転送装置。 An acquisition unit that acquires from a storage unit a transfer source address of a first memory that is a data transfer source, a transfer destination address of a second memory that is a data transfer destination, and a data transfer length;
A read unit for acquiring data of the first memory based on the transfer source address;
Based on the transfer destination address, the acquired data is transferred to a memory controller that writes data to the second memory,
When the transfer is completed, it is determined whether the amount of the transferred data has reached the transfer length of the data,
As a result of the determination, if the amount of transferred data has reached the transfer length of the data, a writing unit that transmits a read request to the memory controller;
A data transfer device comprising:
請求項1に記載のデータ転送装置。 The data transfer device according to claim 1, wherein the data transfer device receives a response from the memory controller and notifies the processor of the end of the data transfer.
請求項2に記載のデータ転送装置。 The data transfer apparatus according to claim 2, wherein the data transfer apparatus starts the data transfer process based on an instruction from the processor.
請求項3に記載のデータ転送装置。 The data transfer device according to claim 3, wherein the data transfer device notifies the processor of the end of the data transfer when there is no error in the response from the memory controller.
請求項4に記載のデータ転送装置。 5. The data transfer device according to claim 4, wherein if the amount of the transferred data does not reach the data transfer length as a result of the determination, the data transfer device performs data transfer until the data transfer length is reached. .
前記メモリコントローラは、前記書き込み要求に基づき、前記第2のメモリに前記転送したデータの書き込みを行い、前記書き込みが終了した後に、前記読み出し要求に基づく処理をする
請求項1乃至5のいずれか1項に記載のデータ転送装置。 The writing unit transmits the read request to the memory controller after transmitting the write request,
6. The memory controller according to claim 1, wherein the memory controller writes the transferred data to the second memory based on the write request, and performs processing based on the read request after the writing is completed. The data transfer device according to item.
請求項6に記載のデータ転送装置。 The data transfer device according to claim 6, wherein the writing unit transmits the write request and the read request to the memory controller via the same bus.
請求項6に記載のデータ転送装置。 The data transfer device according to claim 6, wherein the writing unit accesses the register included in the memory controller by transmitting the read request.
請求項8に記載のデータ転送装置。 The data transfer device according to claim 8, wherein the register records the number of write requests.
前記読み出し要求により取得した、前記レジスタに記録された書き込み要求の数と、前記書き込み部から送信した前記書き込み要求の数に基づき、
前記データ転送が正常に行われたか否かを判定する
請求項9に記載のデータ転送装置。 The data transfer device
Based on the number of write requests recorded in the register acquired by the read request and the number of write requests transmitted from the writing unit,
The data transfer device according to claim 9, wherein it is determined whether or not the data transfer has been normally performed.
前記第1のメモリの転送元アドレスと、前記第2のメモリの転送先アドレスと、データの転送長と、を記憶部から取得するステップと、
前記転送元アドレスに基づき、前記第1のメモリのデータを取得するステップと、
前記転送先アドレスに基づき、前記第2のメモリへデータの書き込みを行うメモリコントローラに、前記取得したデータを転送するステップと、
転送が終了すると、前記転送したデータの量が前記データの転送長に達しているか否かを判定するステップと、
前記判定の結果、前記転送したデータの量が前記データの転送長に達している場合、前記メモリコントローラに読み出し要求を送信するステップと、
を有するデータ転送方法。 A data transfer method for a data transfer device for transferring data from a first memory to a second memory, comprising:
Obtaining a transfer source address of the first memory, a transfer destination address of the second memory, and a data transfer length from a storage unit;
Obtaining data in the first memory based on the transfer source address;
Transferring the acquired data to a memory controller that writes data to the second memory based on the transfer destination address;
When the transfer is finished, determining whether the amount of transferred data has reached the transfer length of the data;
As a result of the determination, if the amount of transferred data has reached the transfer length of the data, sending a read request to the memory controller;
A data transfer method.
請求項11に記載のデータ転送方法。 The data transfer method according to claim 11, further comprising a step of receiving a response from the memory controller and notifying a processor of completion of data transfer.
請求項12に記載のデータ転送方法。 The data transfer method according to claim 12, further comprising a step of starting the data transfer process based on an instruction from the processor.
前記メモリコントローラは、前記書き込み要求に基づき、前記第2のメモリに前記転送したデータの書き込みを行い、前記書き込みが終了した後に、前記読み出し要求に基づく処理をする
請求項11乃至13のいずれか1項に記載のデータ転送方法。 The data transfer device transmits the read request after transmitting the write request to the memory controller,
The memory controller writes the transferred data to the second memory based on the write request, and performs processing based on the read request after the writing is completed. The data transfer method according to item.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014098713A JP2014167818A (en) | 2014-05-12 | 2014-05-12 | Data transfer device and data transfer method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014098713A JP2014167818A (en) | 2014-05-12 | 2014-05-12 | Data transfer device and data transfer method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012530010A Division JP5546635B2 (en) | 2010-06-01 | 2010-06-01 | Data transfer apparatus and control method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014167818A true JP2014167818A (en) | 2014-09-11 |
Family
ID=51617433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014098713A Pending JP2014167818A (en) | 2014-05-12 | 2014-05-12 | Data transfer device and data transfer method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014167818A (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017208075A (en) * | 2015-06-08 | 2017-11-24 | 新唐科技股▲ふん▼有限公司 | Device, system and method for securely accessing peripheral device via bus |
US10552088B2 (en) | 2016-04-19 | 2020-02-04 | Hitachi, Ltd. | Computer system and method for redundantizing nonvolatile memory |
US11334508B2 (en) | 2018-11-08 | 2022-05-17 | Hitachi, Ltd. | Storage system, data management method, and data management program |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0567024A (en) * | 1991-09-06 | 1993-03-19 | Nec Corp | Data processing system |
JP2000010909A (en) * | 1998-06-19 | 2000-01-14 | Fujitsu Ltd | Data transfer controller |
JP2005070992A (en) * | 2003-08-22 | 2005-03-17 | Fujitsu Ltd | Apparatus having inter-module data transfer confirmation function, storage control unit and interface module for this unit |
JP2005149082A (en) * | 2003-11-14 | 2005-06-09 | Hitachi Ltd | Storage controller and method for controlling it |
JP2006215873A (en) * | 2005-02-04 | 2006-08-17 | Toshiba Corp | Controller, information processor and transfer processing method |
JP2009199266A (en) * | 2008-02-20 | 2009-09-03 | Hitachi Ltd | Data transfer controller, data consistency determination method and storage controller |
JP2010015350A (en) * | 2008-07-03 | 2010-01-21 | Seiko Epson Corp | Data transfer controller, data transfer control system, data transfer control program, drive recorder, and data transfer control method |
-
2014
- 2014-05-12 JP JP2014098713A patent/JP2014167818A/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0567024A (en) * | 1991-09-06 | 1993-03-19 | Nec Corp | Data processing system |
JP2000010909A (en) * | 1998-06-19 | 2000-01-14 | Fujitsu Ltd | Data transfer controller |
JP2005070992A (en) * | 2003-08-22 | 2005-03-17 | Fujitsu Ltd | Apparatus having inter-module data transfer confirmation function, storage control unit and interface module for this unit |
JP2005149082A (en) * | 2003-11-14 | 2005-06-09 | Hitachi Ltd | Storage controller and method for controlling it |
JP2006215873A (en) * | 2005-02-04 | 2006-08-17 | Toshiba Corp | Controller, information processor and transfer processing method |
JP2009199266A (en) * | 2008-02-20 | 2009-09-03 | Hitachi Ltd | Data transfer controller, data consistency determination method and storage controller |
JP2010015350A (en) * | 2008-07-03 | 2010-01-21 | Seiko Epson Corp | Data transfer controller, data transfer control system, data transfer control program, drive recorder, and data transfer control method |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017208075A (en) * | 2015-06-08 | 2017-11-24 | 新唐科技股▲ふん▼有限公司 | Device, system and method for securely accessing peripheral device via bus |
JP2019023896A (en) * | 2015-06-08 | 2019-02-14 | 新唐科技股▲ふん▼有限公司 | Method for secure access to peripheral device via bus |
US10552088B2 (en) | 2016-04-19 | 2020-02-04 | Hitachi, Ltd. | Computer system and method for redundantizing nonvolatile memory |
US11334508B2 (en) | 2018-11-08 | 2022-05-17 | Hitachi, Ltd. | Storage system, data management method, and data management program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5546635B2 (en) | Data transfer apparatus and control method thereof | |
EP3796179A1 (en) | System, apparatus and method for processing remote direct memory access operations with a device-attached memory | |
CN100595720C (en) | Apparatus and method for direct memory access in a hub-based memory system | |
US20050027900A1 (en) | Method and apparatus for a shared I/O serial ATA controller | |
US9336173B1 (en) | Method and switch for transferring transactions between switch domains | |
WO2011010352A1 (en) | Storage apparatus and its data transfer method | |
CN109983449A (en) | The method and storage system of data processing | |
US20080155163A1 (en) | Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging | |
US9244877B2 (en) | Link layer virtualization in SATA controller | |
US20140082234A1 (en) | Communication via a memory interface | |
US8694698B2 (en) | Storage system and method for prioritizing data transfer access | |
JP2006309579A (en) | Storage control apparatus and storage system | |
JP4100256B2 (en) | Communication method and information processing apparatus | |
CN110119304A (en) | A kind of interruption processing method, device and server | |
EP3716084A1 (en) | Apparatus and method for sharing a flash device among multiple masters of a computing platform | |
CN107430584B (en) | Reading data from storage via PCI EXPRESS fabric with fully connected mesh topology | |
CN107533526B (en) | Writing data to storage via PCI EXPRESS fabric with fully connected mesh topology | |
US8667199B2 (en) | Data processing apparatus and method for performing multi-cycle arbitration | |
JP2014167818A (en) | Data transfer device and data transfer method | |
US7409486B2 (en) | Storage system, and storage control method | |
US20140229688A1 (en) | Storage control device, storage system, and storage control method | |
US9858222B2 (en) | Register access control among multiple devices | |
JP4936088B2 (en) | Disk array device, disk array system, and cache control method | |
WO2007039933A1 (en) | Operation processing device | |
CN114238156A (en) | Processing system and method of operating a processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150303 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150430 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150526 |