Nothing Special   »   [go: up one dir, main page]

JP2014167818A - Data transfer device and data transfer method - Google Patents

Data transfer device and data transfer method Download PDF

Info

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
Application number
JP2014098713A
Other languages
Japanese (ja)
Inventor
Masahiro Arai
政弘 新井
Hiroshi Hirayama
洋志 平山
Masanori Takada
正法 高田
Hiroshi Kanayama
浩 金山
Hideaki Fukuda
秀明 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014098713A priority Critical patent/JP2014167818A/en
Publication of JP2014167818A publication Critical patent/JP2014167818A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

PROBLEM TO BE SOLVED: To perform a determination of writing in a memory even if connected by a plurality of paths.SOLUTION: A data transfer device comprises: an acquisition part that acquires a transfer source address of a first memory serving as a transfer source of data, a transfer destination address of a second memory serving as a transfer destination of the data, and a transfer length of the data from a storage part; a reading part that acquires data on the first memory on the basis of the transfer source address; and a writing part that transfers the acquired data to a memory controller writing data in the second memory on the basis of the transfer destination address, and after the transfer is ended, determines whether a volume of the transferred data reaches the transfer length of the data, and as a result of the determination, when the volume of the transferred data reaches the transfer length of the data, transmits a reading request to the memory controller.

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, Patent Document 1 discloses a method of calculating a hash value of a packet to be transferred and selecting a route according to the hash value. According to this method, it is possible to send a packet by distributing the load to a plurality of paths, so that network transfer can be efficiently performed.

特開2008−263436号公報JP 2008-263436 A

しかしながら、この方法を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 Patent Document 1 distributes the path according to the hash value of the packet, there is a problem that both request packets do not always pass through the same route. Since both packets are obviously different in format, the possibility of having the same hash value is extremely low. In the first place, there is no mechanism for issuing a dummy read when a write request is issued. Further, as a modification, Patent Document 1 describes that, instead of a hash value, another predetermined identifier may be used. However, which write packet is a dummy read packet and which route the write packet has taken You have to store a memory table. The number of packets flowing in memory-to-memory data transfer is enormous, hundreds of thousands to millions per second, and it takes time to search in the first place. In addition, such a process has a purpose different from that of load balancing which Patent Document 1 intends to solve in the first place.

第2の課題は、宛先メモリのアクセスの集中度合いによって転送時間が大きく左右されてしまう点である。特許文献1は、複数のパス(経路)で負荷分散するものの宛先は単一の装置であり、データ転送はネットワークを通じてなされることのみを想定していると考えられる。このことは、経路そのものの混み具合(データバッファの利用状況)を管理することで負荷分散する方法を開示していることからも明らかである。一方、本ストレージ装置の場合、あるメモリへのアクセスは必ずしもネットワークパスを通過したものばかりでなく、当該メモリと同一のストレージコントローラ内DMAによるアクセスも競合する。従い、パス(経路)の混み具合のみを管理しても必ずしも有意に負荷分散できない。   The second problem is that the transfer time greatly depends on the concentration of access to the destination memory. In Patent Document 1, it is assumed that the destination is a single device although the load is distributed by a plurality of paths (routes), and that data transfer is only performed through a network. This is also clear from the fact that a method for distributing the load by managing the degree of congestion of the route itself (usage status of the data buffer) is disclosed. On the other hand, in the case of this storage apparatus, access to a certain memory does not necessarily pass through the network path, but access by the same DMA in the storage controller as that memory also competes. Therefore, even if only the degree of congestion of paths (routes) is managed, the load cannot always be distributed significantly.

第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 memory channel 1 is allocated a control information area with relatively few accesses, and memory channel 2 is allocated a large number of cache areas that are frequently accessed, packets are not allowed to pass through the network path at an equal rate. Access to the memory channel 2 is blocked, and as a result, subsequent packets of the memory channel 1 passing through the network path also stay. This problem cannot be solved only by a conventional network load distribution technique as shown in Patent Document 1.

本発明は以上の課題に鑑みて成されたものである。
すなわち、本発明の目的は、複数パスで接続されていても、経路情報を記憶することなく、また、制御ソフトウェアの新たな介在を必要とせずにメモリへの書込みの確定を行うデータ転送装置およびデータ転送方法を提供することである。
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 is a block diagram showing a configuration of a storage device in an embodiment of the present invention. 本発明の実施形態におけるストレージ装置の構成を示す外観図である。1 is an external view showing a configuration of a storage device in an embodiment of the present invention. 本発明の実施形態におけるストレージ装置のストレージコントローラの構成を示すブロック図である。2 is a block diagram illustrating a configuration of a storage controller of the storage apparatus according to the embodiment of the present invention. FIG. 本発明の実施形態におけるストレージコントローラに搭載されるASICの内部構成の一例を示すブロック図である。It is a block diagram which shows an example of the internal structure of ASIC mounted in the storage controller in embodiment of this invention. 本発明の実施形態におけるDMAコントローラの起動方法を模式的に描いた図である。It is the figure which drew typically the starting method of the DMA controller in the execution form of this invention. 本発明の実施形態におけるDMAコントローラへの転送指示パラメータのフォーマットの一例を示した図である。It is the figure which showed an example of the format of the transfer instruction | indication parameter to the DMA controller in embodiment of this invention. 本発明の実施形態におけるDMAの動作手順を示すフローチャートである。It is a flowchart which shows the operation | movement procedure of DMA in embodiment of this invention. 本発明の実施形態におけるメモリアドレスマップの一例を示す図である。It is a figure which shows an example of the memory address map in embodiment of this invention. 本発明の実施形態におけるメモリ間データ転送制御の全体動作を説明するラダーチャートである。It is a ladder chart explaining the whole operation | movement of the data transfer control between memory in embodiment of this invention. 本発明の実施形態の変形例における書込み確認要求の構成例を示す図である。It is a figure which shows the structural example of the write confirmation request | requirement in the modification of embodiment of this invention. 本発明の実施形態の変形例における書込み確認応答の構成例を示す図である。It is a figure which shows the structural example of the write confirmation response in the modification of embodiment of this invention. 本発明の実施形態の変形例におけるメモリ間データ転送制御のDMAの動作手順を示すフローチャートである。It is a flowchart which shows the operation | movement procedure of DMA of the data transfer control between memory in the modification of embodiment of this invention. 本発明の実施形態の変形例におけるASICの内部構成を示すブロック図である。It is a block diagram which shows the internal structure of ASIC in the modification of embodiment of this invention. 本発明の実施例2におけるASICの内部構成を示すブロック図である。It is a block diagram which shows the internal structure of ASIC in Example 2 of this invention. 本発明の実施例2におけるASIC内のテーブルの構成例を示す図である。It is a figure which shows the structural example of the table in ASIC in Example 2 of this invention. 本発明の実施例2におけるDMAの動作を説明するフローチャートである。It is a flowchart explaining operation | movement of DMA in Example 2 of this invention. 本発明の実施例2の変形例におけるステータスブロック400が備えるテーブルの構成例を示す図である。It is a figure which shows the structural example of the table with which the status block 400 in the modification of Example 2 of this invention is provided. 本発明の実施例3におけるDMAコントローラへの転送指示パラメータのフォーマットの一例を示した図である。It is the figure which showed an example of the format of the transfer instruction | indication parameter to the DMA controller in Example 3 of this invention. 本発明の実施例3におけるメモリレイアウト情報設定テーブルの構成例を示す図である。It is a figure which shows the structural example of the memory layout information setting table in Example 3 of this invention. 本発明の実施例3におけるDMAと内部データ転送パスアービタとのデータのやり取りを模式的に示した図である。It is the figure which showed typically the exchange of data between DMA and the internal data transfer path arbiter in Example 3 of this invention. 本発明の実施例3における内部データ転送パスアービタの動作を示したフローチャートである。It is the flowchart which showed the operation | movement of the internal data transfer path arbiter in Example 3 of this invention.

本発明を実施するための形態を実施例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 storage apparatus 10 includes a plurality of drive housings 51, 52,... And a storage controller housing 50. The storage device 10 is connected to the management terminal 31 through the management LAN 30, and device settings and the like can be executed through the management terminal 31. The management terminal 31 may be included in the storage device 10.

また、ストレージ装置10はストレージネットワーク40を通じてホスト計算機20A〜20Cと接続されている。ホスト計算機20A〜20Cには、オペレーティングシステムおよびその上で動作するアプリケーション、または仮想マシンが搭載され、ストレージ装置10に対してI/Oを発行する。   The storage apparatus 10 is connected to the host computers 20A to 20C through the storage network 40. The host computers 20 </ b> A to 20 </ b> C are loaded with an operating system and applications or virtual machines that operate on the operating system, and issue I / O to the storage apparatus 10.

ドライブ筐体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 drive housings 51, 52,. The disk drives D00 to D1N are HDDs, SSDs, or similar final storage media.

ディスクドライブ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-end interconnection mechanism 500 provided in the drive casings 51 and 52, the back-end connection cable 510, and the I / F cards 90A and 91B provided in the storage controller casing 50. It is connected to the array controller main packages 60A and 60B. The back-end interconnection mechanism 500 is, for example, a SAS (Serial Attached SCSI) expander, and the back-end connection cable 510 is, for example, a SAS cable. The I / F cards 90A and 91B are, for example, HBAs (Host Bus Adapters) equipped with a SAS protocol chip. With this connection, the storage controller can send and receive data to and from the disk.

ストレージコントローラ筐体50には、ディスクアレイコントローラの主パッケージ60A,60Bとこれらを制御するプロセッサを搭載したMP(Micro Processor)パッケージ70A,70B、先述したドライブ接続90A,90B、およびホスト計算機20A〜20Cと接続するためのI/Fカードが設けられている。   In the storage controller housing 50, main packages 60A and 60B of the disk array controller and MP (Micro Processor) packages 70A and 70B equipped with processors for controlling them, the drive connections 90A and 90B described above, and the host computers 20A to 20C. An I / F card is provided for connection.

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 main packages 60A and 60B via control lines 71A to 72B in order to send instructions. On the other hand, the disk array main packages 60A and 60B are connected by a plurality of internal data transfer paths 101 and 102 in order to transfer data to each other.

なお、本実施形態では各パッケージは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 bodies 50 may be joined together. For example, a part of the I / F cards 80A to 91B may be exchanged for a PCI Express storage controller inter-case connection I / F card. Further, these interconnections may be used like the internal data transfer paths 101 and 102.

図2は、本実施形態におけるストレージ装置の理解を助けるために示した外観図である。ストレージコントローラ筐体50は最下段に搭載され、その上にドライブ筐体51〜58が示されている。図に表れていないが、背面には先に示したバックエンド接続ケーブルやストレージネットワーク40を構成するためのケーブルが配線される。   FIG. 2 is an external view shown to assist in understanding the storage apparatus in the present embodiment. The storage controller housing 50 is mounted at the bottom, and the drive housings 51 to 58 are shown thereon. Although not shown in the drawing, the back end connection cable and the cable for configuring the storage network 40 are wired on the back side.

図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 main packages 60A and 60B and the MP packages 70A and 70B that control the main packages 60A and 60B in this embodiment, and the configurations of the I / F cards 80A to 91B connected thereto. FIG.
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 main package 60A. Various functions are mounted on the ASIC 200A, and for example, DMA (Direct Memory Access) 210A to 212A for transferring data between memories is provided. The memories M0 to M3 are cache memories of the storage controller 50, and a DRAM (Dynamic Random Access Memory) or the like that is made nonvolatile by a battery or the like is used. The DRAM is often provided as a DIMM (Dual Inline Memory Module). The disk array controller main package 60A is connected to the I / F card group through the ASIC 200A. FE (Front-End) I / F cards 80A and 81A are used for connection to a host through the storage network 40. For example, a fiber channel protocol chip or the like is mounted and a plurality of host connection ports are provided.
On the other hand, BE (Back-End) I / F cards 90A and 91A are connected to the respective disks of the drive housings 51, 52.
The MP package 70A is provided with a processor chip set 75, processors 760 and 761, and local memories 770 and 771 in which programs running on these processors are stored. Depending on the type and generation of the processor, the local memories 770 and 771 may be connected to the chipset 75, or may be directly connected to the processors 760 and 761. Further, the chip set 75 may be included in the processors 760 and 761. The processors 760 and 761 are connected to the ASICs 200A and 200B of the main packages 60A and 60B through the control lines 71A and 71B, and control the hardware. An example of a technique used for the control lines 71A and 71B is PCI Express.

図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 ASICs 200A and 200B described above. In the ASICs 200A and 200B, the DMAs 210, 211, and 212 described above, PCI Express cores 221 and 223 that control PCI Express used as an internal data transfer path (I-Path: Internal Path), and internal data transfer paths 101, 102 internal data transfer path arbiters 220, 222, memory controllers 230, 231, 232, 233, I / F control blocks 240, 241, 242, 243, processor ports 271, 272, a routing processor (RP) 260, 261, there is a switch block 250 that interconnects them.

DMA210〜212(メモリ間データ転送制御部)は、プロセッサから指示を受け、あるメモリアドレスから指定された転送長分だけのデータを他のメモリアドレスにコピーする機能を持った転送制御ブロックである。DMA210〜212は、転送元メモリからデータをリードする読出し部(RX)2101、転送先メモリへデータを書き込む書込み部(TX)2102、および転送パラメータをフェッチし解析するパラメータフェッチ部(PF)2103を含んで構成される。データ転送に係る指示方法および転送処理の起動方法等については後述する。また本実施例ではDMAを3個設けているが、DMAの数は2個以下でも4個以上でも良い。   DMAs 210 to 212 (inter-memory data transfer control units) are transfer control blocks having a function of receiving an instruction from a processor and copying data for a specified transfer length from a certain memory address to another memory address. The DMAs 210 to 212 include a reading unit (RX) 2101 for reading data from the transfer source memory, a writing unit (TX) 2102 for writing data to the transfer destination memory, and a parameter fetch unit (PF) 2103 for fetching and analyzing transfer parameters. Consists of including. An instruction method related to data transfer and a transfer process activation method will be described later. In this embodiment, three DMAs are provided, but the number of DMAs may be two or less or four or more.

内部データ転送パス101,102はパッケージを跨いだメモリ間のデータ転送を行うためのネットワークであり、先に述べたようにPCI Expressが用いられる。PCI Expressコア221,223はPCI Expressの基本的な送受信動作を行う制御ブロックであり、PCI Expressバスのハードウェア制御やデータリンク制御、トランザクションプロトコル制御などを行う。内部データ転送パスアービタ220,222は複数の制御ブロックからのPCI Expressネットワークパス利用要求を調停し、所定のルールで使用権限を与えて利用させる仲介制御ブロックである。例えばDMA210とDMA211が同時にデータ転送しようとした場合、最初DMA210に利用権を与えて転送を行わせ、続いてDMA211に利用権を与えて転送を行わせるといった調停処理をする。   The internal data transfer paths 101 and 102 are networks for transferring data between memories across packages, and PCI Express is used as described above. The PCI Express cores 221 and 223 are control blocks that perform basic transmission and reception operations of PCI Express, and perform hardware control, data link control, transaction protocol control, and the like of the PCI Express bus. The internal data transfer path arbiters 220 and 222 are mediation control blocks that arbitrate PCI Express network path use requests from a plurality of control blocks and use them by giving use authority according to a predetermined rule. For example, when the DMA 210 and the DMA 211 try to transfer data at the same time, arbitration processing is performed such that the DMA 210 is first given a usage right to perform transfer, and then the DMA 211 is given a right to use and perform transfer.

メモリコントローラ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 memory controllers 230 to 233 are connected to the memories M0 to M3 or M4 to M7, and based on requests from the DMAs 210 to 212 and other control blocks, the memories M0, M1, M2, M3 and the memories M4, M5, M6, M7. This is a control block that reads and writes data and transmits and receives data packets. The memory controllers 230 to 233 include an arbiter (ARB) for arbitrating the access order when accessed simultaneously from a plurality of control blocks. The memory controllers 230 to 233 are also called memory channels. A unique memory address space is allocated to the memories M0 to M7 connected to the memory controllers 230 to 233.

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 / F cards 80A to 81B and 90A to 91B and performing data transfer therewith. The processor ports 271 and 272 are connected to control lines 71A and 72A, and the processors 760 and 761 and the ASIC 200 exchange control information data, and the processors 760A, 761A, 760B, and 761B communicate with each other. It is a block that performs.

ルーティングプロセッサ260,261は、I/F制御ブロック240〜243を通じてプロトコルチップから受けたコマンドを制御担当するプロセッサ760A〜761Bに振り分け処理を行う制御ブロックである。   The routing processors 260 and 261 are control blocks that perform distribution processing to the processors 760A to 761B in charge of controlling commands received from the protocol chip through the I / F control blocks 240 to 243.

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 processors 760 and 761 to transfer instructions to the DMAs 210 to 213 in the ASIC 200 according to the present embodiment. In the following description, the procedure is the same regardless of which processor activates any DMA, and the case of the DMA 210 and the processor 760 will be described as a representative.

プロセッサ760は、DMA210を用いて、あるメモリアドレスにあるデータを別のメモリアドレスに転送させたい場合、DMA210に転送指示するためのパラメータ300(転送指示パラメータ)をローカルメモリ770上に構築する。パラメータ300は転送元のメモリアドレス、転送先のメモリアドレス、転送長、その他、から構成されるが詳細は後述する。なお、複数のパラメータ300は連続してローカルメモリ770に書き込まれるものとする。   When the processor 760 uses the DMA 210 to transfer data at a certain memory address to another memory address, the processor 760 builds a parameter 300 (transfer instruction parameter) on the local memory 770 for instructing the DMA 210 to transfer. The parameter 300 includes a transfer source memory address, a transfer destination memory address, a transfer length, and the like. Details will be described later. A plurality of parameters 300 are written in the local memory 770 continuously.

プロセッサ760は、目的とするデータ転送に必要な数だけパラメータ300を連続してローカルメモリ770に書き込み、DMA210の起動トリガレジスタ2に、先頭のパラメータ300が記憶されたローカルメモリ770の開始アドレスを値としてセットする。例えば図5では、ローカルメモリ770のアドレス1000h番地(16進数)から4つのパラメータ、パラメータ0〜パラメータ3が構築されているので、プロセッサ760はDMA210の起動トリガレジスタ2に値1000hをセットする。   The processor 760 continuously writes the parameter 300 to the local memory 770 as many as required for the target data transfer, and sets the start address of the local memory 770 in which the first parameter 300 is stored in the start trigger register 2 of the DMA 210. Set as. For example, in FIG. 5, since four parameters, parameter 0 to parameter 3, are constructed from the address 1000h address (hexadecimal) of the local memory 770, the processor 760 sets the value 1000h in the start trigger register 2 of the DMA 210.

DMA210は当該レジスタ2に値がセットされると、その値に示されたローカルメモリ770のアドレスからパラメータ300を読み出して解析し、パラメータ300に指示されたデータ転送を行う。例えば図5では、起動トリガレジスタ2に値1000h(16進数)がセットされたので、DMA210はローカルメモリ770のアドレス1000h番地からパラメータ300を読み出すように動作する。DMA210の動作の詳細については、後述する。   When a value is set in the register 2, the DMA 210 reads and analyzes the parameter 300 from the address of the local memory 770 indicated by the value, and performs data transfer designated by the parameter 300. For example, in FIG. 5, since the value 1000h (hexadecimal) is set in the activation trigger register 2, the DMA 210 operates to read the parameter 300 from the address 1000h of the local memory 770. Details of the operation of the DMA 210 will be described later.

図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 parameter 300 used by the processor 760 to issue a data transfer instruction to the DMA 210 in the present embodiment. In the parameter ID field 3001, a unique number set for each parameter 300 is designated. In the transfer source address field 3002, the start address of the memory serving as the transfer source is designated. In the transfer destination address field 3003, the start address of the memory to be the transfer destination is designated. The transfer length field 3004 specifies the data length of the data to be transferred. A chain number field 3005 is a field for specifying grouping of parameters 300. The chain number field 3005 is designated in order from 1 when there are other parameters 300 to be grouped, and 0 is designated as the last parameter 300 of the grouping. That is, the chain number 3005 increases in order from 1, and the parameter group up to the chain number 3005 is regarded as one transfer group (the chain number 3005 is 0 when there is no chain). When the chain number 3005 is other than 0, the DMA 210 does not end the processing of the parameter 300, and performs a chain operation for continuously performing data transfer instructed to the subsequent parameter 300 group. In the path number field 3006, it is specified which number of the plurality of internal data transfer paths 101 and 102 is to be used. In FIG. 6, the number of the path number field 3006 is one, but a plurality of internal data transfer paths 101 and 102 may be provided so that they can be individually specified at the time of data reading or data writing. Note that the configuration of the parameter 300 shown in FIG. 6 is an example, and there may be another field necessary for other control.

図7は、本実施形態におけるDMA210のデータ転送動作を示すフローチャートである。本図を用いて書込み先メモリ面が切り替わる毎、および一連のデータ転送が終了するごとにその間の書込みを自動的に確定させる本実施形態のDMAの転送動作を説明する。   FIG. 7 is a flowchart showing the data transfer operation of the DMA 210 in this embodiment. The DMA transfer operation of the present embodiment, in which writing is automatically determined every time the writing destination memory surface is switched and every time a series of data transfer is completed, will be described with reference to FIG.

DMA210はプロセッサ760からの起動指示により動作を開始する。本実施形態ではプロセッサ760からトリガレジスタ2に値が設定されると動作を開始するが、信号線を介した信号送信やメッセージ送信等を契機としてDMA210が起動するようにしてもよい。DMA210のパラメータフェッチ部2103は起動トリガレジスタ2に値が設定されると、設定された値が示すローカルメモリ770のアドレスを参照し、パラメータ300の1つをフェッチして設定内容を解析する(S8000)。例えば転送元アドレスフィールド3002から転送元メモリの開始アドレスを、転送先アドレスフィールド3003から転送先メモリの開始アドレスを、転送長フィールド3004から転送長(総データ転送量)を取得する。なお、DMA210が一旦起動すると、次のパラメータ300のフェッチはバックグラウンドで先読み(プリフェッチ)される(S8005)。   The DMA 210 starts its operation in response to a start instruction from the processor 760. In this embodiment, the operation is started when a value is set in the trigger register 2 from the processor 760, but the DMA 210 may be activated in response to signal transmission or message transmission via the signal line. When a value is set in the activation trigger register 2, the parameter fetch unit 2103 of the DMA 210 refers to the address of the local memory 770 indicated by the set value, fetches one of the parameters 300, and analyzes the setting content (S8000). ). For example, the start address of the transfer source memory is acquired from the transfer source address field 3002, the start address of the transfer destination memory is acquired from the transfer destination address field 3003, and the transfer length (total data transfer amount) is acquired from the transfer length field 3004. Once the DMA 210 is activated, the next fetch of the parameter 300 is prefetched (prefetched) in the background (S8005).

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 unit 2103, the reading unit 2101 of the DMA 210 specifies which memory controller to access from the transfer source address (S8010). For example, assume that memory addresses are allocated as shown in FIG. When the transfer source address is 23000, since the address is between addresses 20000h-2FFFFh of the memory M1, the reading unit 2101 determines that it is only necessary to access the memory controller 231 to which the memory M1 is connected. Subsequently, the reading unit 2101 issues a memory read request designating the address to be accessed and the data length to be read to the corresponding memory controller 231 (S8020). The memory read request is issued directly to the memory controller when the target memory controller is in the same ASIC 200, and is issued through the internal data transfer paths 101 and 102 when the target memory controller is another ASIC 200. The transfer length that the DMA 210 can transfer at one time is relatively small. For this reason, the data of the transfer length specified by the parameter 300 may be transferred in multiple times. When the transfer length specified by the parameter 300 is larger than the transfer length that the DMA 210 can transfer at one time, the maximum transfer length that can be transferred by the DMA 210 is specified as the data length. When the transfer length specified in the parameter 300 is less than or equal to the transfer length that can be transferred at one time by the DMA 210, the transfer length specified in the parameter 300 is specified in the read request as the data length. For example, if the transfer length that the DMA 210 can transfer at one time is 2048 bytes, 2048 bytes if the transfer length specified in the parameter is 4096 bytes, 512 bytes if 512 bytes are specified in the read request. Will be.

メモリコントローラ230〜233はリードリクエストに指定されたアドレスが指定する、リードリクエストに指定された転送長のデータをメモリM0〜M7から読み出し、読み出したデータとともにリードレスポンス(Completion)を読出し部2101に返す。リードレスポンスは同一ASIC200内部のDMA210であれば直接送信され、別ASIC200の場合には内部データ転送パス101,102を通じて送信される。DMA210の読出し部2101は、メモリコントローラ230〜233から読み出されたデータと共にリードレスポンスを受領し(S8030)、受領したデータをDMA210内部のバッファに格納する。   The memory controllers 230 to 233 read from the memories M0 to M7 the data having the transfer length specified in the read request specified by the address specified in the read request, and return a read response (Completion) together with the read data to the reading unit 2101. . The read response is directly transmitted in the case of the DMA 210 in the same ASIC 200, and is transmitted through the internal data transfer paths 101 and 102 in the case of another ASIC 200. The reading unit 2101 of the DMA 210 receives a read response together with the data read from the memory controllers 230 to 233 (S8030), and stores the received data in a buffer inside the DMA 210.

DMA210の書込み部2102は、DMA210内部のバッファにデータが格納されると、パラメータフェッチ部2103の解析結果に基づいて転送先アドレスからどのメモリコントローラ230〜233にアクセスすべきか特定する(S8040)。例えば、図8のようにメモリアドレスが割り振られており、転送先アドレスが51000h番地だった場合、書込み部2102はメモリM4が接続されたメモリコントローラ230にアクセスすれば良いと判断する。   When the data is stored in the buffer in the DMA 210, the writing unit 2102 of the DMA 210 specifies which memory controller 230 to 233 should be accessed from the transfer destination address based on the analysis result of the parameter fetch unit 2103 (S8040). For example, as shown in FIG. 8, when a memory address is allocated and the transfer destination address is 51000h, the writing unit 2102 determines that it is only necessary to access the memory controller 230 to which the memory M4 is connected.

書込み部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 data transfer paths 101 and 102 when the target memory controller is another ASIC 200. Forwarded through. If there is no portion (buffer or the like) where data stays on the path from the DMA 210 to the memory controllers 230 to 233 in the same ASIC 200, the memory controller specified in this S8040 is the memory specified in the previous S8040. Even if it is different from the controller (S8050: Yes), if the previous memory controller is in the same ASIC 200, it may be mounted so as not to issue a dummy read request. When the read response to the dummy read request is returned, the writing unit 2102 determines whether there is an error (S8070). If there is no error (S8070: No), the writing unit 2102 issues a memory write request to the new access destination memory controller together with the data stored in the buffer in the DMA 210 (S8080).

なお、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 parameter 300 read in S8000 is the first one, it is not necessary to perform the processing of S8060 to S8070, and only S8080 Is executed.
In S8070, if there is an error in the memory read response (S8070: Yes), the writing unit 2102, the reading unit 2101, and the parameter fetching unit 2103 have the parameter 300 and the subsequent parameters chained to the parameter 300 (that is, All the data transfer processing is interrupted for a series of parameters 300 in which the value set in the chain number column 3005 is continuously incremented from the parameter 300 (S8300), and the status of the end due to the error is set to the processor 760, 761 is notified.

先に述べたとおり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 DMA 210 can transfer at one time is often small, the writing unit 2102 accumulates the previous transfer amount and the current transfer amount when the transfer ends, and the transfer specified in the parameter. It is determined whether it has been achieved for a long time (S8090). When the designated transfer length has been reached (S8090: Yes), the writing unit 2102 sends a dummy read request to the memory controller finally specified in S8040 to write the data so far into the memory. Confirm (S8100). The writing unit 2102 receives a read response from the memory controller in response to the dummy read request, determines whether there is an error (S8110), and if there is an error, proceeds to S8300 and interrupts the transfer as described above. The reading unit 2101 and writing unit 2102 notify the parameter fetch unit 2103 that the designated transfer length has been reached and waits for the next instruction. The parameter fetch unit 2103 determines whether the next parameter is chained (S8120). If the next parameter is not chained (S8120: No), the parameter fetch unit 2103 notifies the processor 760, 761 of the transfer end status (S8130), and ends the data transfer process.

なお、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 writing unit 2102 and the reading unit 2101 reduce the remaining transfer length by the current transfer (S8200). The original address and the transfer destination address are shifted by the current transfer length (S8210) and repeated until the transfer length specified in the parameter 300 is reached (the process returns to S8010).

また、S8100において、パラメータ300がチェインされていた場合(S8100:Yes)は、引き続いて次のパラメータ300によるデータ転送処理を行う(S8000に戻る)。
以上のようにして、本実施形態のDMA210はデータ転送処理を行う。
In S8100, when the parameter 300 is chained (S8100: Yes), the data transfer process is performed using the next parameter 300 (return to S8000).
As described above, the DMA 210 of this embodiment performs data transfer processing.

なお、実際の制御実装では、パラメータフェッチ部2103、読出し部2101、書込み部2102は同時並行動作しうるので、各処理(S8000〜S8130)は時間的に並行して行われることがある。また本実施形態ではパラメータフェッチ部2103、読出し部2101、書込み部2102の3つを設け上記のように役割を分担したが、DMAとして同様の機能を果たせば他の構成でも良い。   In the actual control implementation, the parameter fetch unit 2103, the reading unit 2101, and the writing unit 2102 can operate simultaneously in parallel, and therefore each process (S8000 to S8130) may be performed in parallel in time. In this embodiment, the parameter fetch unit 2103, the reading unit 2101, and the writing unit 2102 are provided and the roles are shared as described above. However, other configurations may be used as long as the DMA performs the same function.

図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 local memories 770 and 771, processors 760 and 761, memories M0 to M7, and DMAs 210 to 213. Since the operations are the same if the resources are the same, the numbers are omitted. Note that memory #x indicates a transfer source memory, and memory # 0 and memory # 1 indicate transfer destination memories, each of which is an arbitrary one of memory controllers 230 to 233 to which M0 to M7 are connected. The transfer source and the transfer destination may overlap. An overview of data transfer control will be described with reference to FIG.

プロセッサ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 processors 760 and 761 create a group of parameters 300 on the local memory by the method shown in FIG. 5 (R7000). The processors 760 and 761 subsequently set a trigger register 2 by setting the address of the local memory that created the DMA parameter 300 in the trigger register 2 (R7100). The DMA refers to the trigger register 2 and fetches the first parameter 300 of the group of parameters 300 from the local memory (R7200). Further, the next parameter 300 is prefetched at an appropriate timing as a background task (R7210). The DMA analyzes the parameter 300, reads out data from the memory #n based on the result (R7300 to R73xx), and writes data to the memory # 1 in parallel (R7400 to R74xx). When the write destination memory surface is switched from the memory # 0 to the memory # 1, the DMA issues a dummy read request for confirming the previous writing (R7500). Then, while continuing the data read (R7600 to R76xx), the data writing to the memory # 1 is continued (R7700 to R77xx). When the data transfer for the transfer length specified in the parameter 300 is completed, a dummy read request is issued to the final memory surface to perform a write confirmation process (R7800). If the subsequent parameter 300 is not chained (the chain number 3005 of the next parameter 300 is 0), the transfer status is returned to the processors 760 and 761 through the local memory (R7900).

(本実施例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 same memory controllers 230 to 233 are continuously transmitted without confirming writing, and when write requests are transmitted to memory controllers 230 to 233 having different write destinations. Can send a dummy read request to the previous memory controllers 230-233. Since requests to the same memory controller 230 to 233 are transmitted through the same path, a write request issued by a non-posted access is transmitted after a write request by a posted access, whereby a previously issued write The writing of data related to the request can be confirmed. Therefore, even when a protocol that does not make a write completion response is used in the internal data transfer paths 101 and 102, the write to the memory can be confirmed without storing the write request issuance path for each packet. it can. In addition, a path storage area for each packet is not necessary, and the mounting can be downsized. In this embodiment, the DMAs 210 to 212 can automatically transmit a dummy read request at the timing when the write destination memories M0 to M7 are switched and the timing when the writing is completed, so that the management terminal 31 and the host computer 20 Since there is no need to perform additional processing such as issuing a dummy read request by the control software to be executed, the performance of the entire system can be increased.

(本実施例1の変形例1)
本実施形態では書込みの確定を行うため、メモリM0〜M7に対するダミーのリードリクエストを発行したが、代わりにメモリコントローラ230〜233のレジスタに対するリードリクエストを発行するように変形しても良い。なお、レジスタに対するリードリクエストもノンポステッドアクセスであるものとする。本変形例の場合、書込みを確定するためにメモリM0〜M7にアクセスしないため、より高速に書込みの確定を行うことが可能となり、メモリ利用効率を向上させるという追加の効果がある。また、上記メモリコントローラ230〜233のレジスタには、ライトリクエストの個数を記録する機能を持たせてもよい。この場合、DMA210〜212はレジスタからリードした値と発行したライトリクエストの数との差を比較することによって転送の正常/異常を判定することができる。したがって、より書込み確定の信頼性を高めることができるという追加の効果がある。前記レジスタはDMAやその他のメモリへアクセスを行う資源ごとに設けても良いし、アクセスエリアごとに設けても良い。また、メモリコントローラ230〜233がライトリクエスト以外にもリードリクエストの数やその他の統計情報を保持するレジスタを備えていても良い。
(Modification 1 of the first embodiment)
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 memory controllers 230 to 233 instead. It is assumed that the read request for the register is also non-posted access. In the case of this modification, since the memories M0 to M7 are not accessed to confirm the writing, it is possible to confirm the writing at a higher speed, and there is an additional effect of improving the memory utilization efficiency. The registers of the memory controllers 230 to 233 may have a function of recording the number of write requests. In this case, the DMAs 210 to 212 can determine whether transfer is normal or abnormal by comparing the difference between the value read from the register and the number of issued write requests. Therefore, there is an additional effect that the reliability of writing determination can be further improved. The register may be provided for each resource that accesses the DMA or other memory, or may be provided for each access area. In addition to the write request, the memory controllers 230 to 233 may include a register that holds the number of read requests and other statistical information.

(本実施例1の変形例2)
本実施形態ではメモリへの書込みの確定を行うため、ダミーリードリクエスト(ノンポステッドアクセス)を発行したが、この代わりに、先行するライトリクエストを追い抜かないポステッドアクセスの専用命令(書込み確認要求)を定義して発行するように変形しても良い。例えば、図10のようなフォーマットのTLP(Transaction Layer Packet)を書込み確認要求として定義し、この書込み確認要求を送信すると、メモリコントローラ230〜233はバッファ中のデータをメモリへフラッシュし、非同期で図11のようなポステッドアクセスによる応答(書込み確認応答)を返すようにする。この場合のシーケンスは図12のようになる。本変形例の場合、ノンポステッドアクセスと異なりDMA210〜212は、応答データ(リードレスポンス)受信用のバッファを確保して待つ必要がなくなる。これにより、動作の並列性が高まり性能改善する事ができるという追加の効果がある。なお、通常のPCI Expressでは未定義のリクエスト(TLP)は破棄されてしまうため、上記のリクエストや応答を受理するようにPCIコア221,223に前記定義を実装する。
(Modification 2 of the first embodiment)
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 memory controllers 230 to 233 flush the data in the buffer to the memory, A response by a posted access such as 11 (write confirmation response) is returned. The sequence in this case is as shown in FIG. In the case of this modification, unlike the non-posted access, the DMAs 210 to 212 do not have to secure a buffer for receiving response data (read response) and wait. Thereby, there is an additional effect that the parallelism of the operation increases and the performance can be improved. In ordinary PCI Express, an undefined request (TLP) is discarded. Therefore, the definition is implemented in the PCI cores 221 and 223 so as to accept the above request and response.

(本実施例1の変形例3)
本実施形態ではメモリへの書込みの確定を行うため、メモリへダミーのリードリクエストを発行したが、ASIC200内の実装および内部データ転送パス101,102の経路上に、書込み確定要求のための専用信号線を設けてもよい。図13はこの実装例を示したものである。DMA210〜212は、書込みの確定が必要になると、信号コントローラ280に、書込み確定の必要なメモリコントローラ230〜233に信号を送るよう指示する。信号は例えば、DMA210〜212からの書込み転送数等の情報を含むものであり、メモリコントローラ230〜233は要求された転送数が到着すると、確定完了信号を返すようにする。DMA210〜212は信号コントローラ280を通じて書込みが確定したことを確認することができる。本変形例の場合、書込み確定用のリクエストおよび応答がデータ転送経路を通らないので、データ転送への影響がなくなり転送効率が改善するという追加の効果がある。
(Modification 3 of the first embodiment)
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 data transfer paths 101 and 102. A line may be provided. FIG. 13 shows this implementation example. When it is necessary to confirm writing, the DMAs 210 to 212 instruct the signal controller 280 to send signals to the memory controllers 230 to 233 that need to confirm writing. The signal includes, for example, information such as the number of write transfers from the DMAs 210 to 212, and the memory controllers 230 to 233 return a confirmation completion signal when the requested number of transfers arrives. The DMAs 210 to 212 can confirm that the writing has been confirmed through the signal controller 280. In the case of this modification, since the write confirmation request and response do not pass through the data transfer path, there is an additional effect that the transfer efficiency is improved without affecting the data transfer.

(本実施例1の変形例4)
本実施形態では書込みの確定をメモリコントローラ230〜233が切り替わる点を契機として実行したが、メモリコントローラ230〜233ではなく、その先に実装されるDIMM単位としても良い。この場合、メモリコントローラ230〜233ごとのアドレス範囲の代わりにDIMMごとのアドレス範囲を管理し、図7のS8050にてアクセス先のDIMMが前回と異なるか否かを判定するように変更すれば実現可能である。また通常DIMMは、複数のメモリチップで構成され、バンクという単位で管理される。従い、同様にして、DIMM内のバンクが切り替わる点を書き込み確定の契機としても良い。この場合、バンクごとのアドレス範囲を管理することとなる。
(Modification 4 of the first embodiment)
In the present embodiment, the write is confirmed by the point that the memory controllers 230 to 233 are switched, but the memory controller 230 to 233 may be used instead of the memory controller 230 to 233. In this case, it is realized by changing the address range for each DIMM instead of the address range for each of the memory controllers 230 to 233 so as to determine whether or not the access destination DIMM is different from the previous time in S8050 of FIG. Is possible. A normal DIMM is composed of a plurality of memory chips and is managed in units of banks. Therefore, similarly, the point at which the bank in the DIMM is switched may be used as a trigger for confirming the writing. In this case, the address range for each bank is managed.

(本実施例1の変形例5)
本実施形態では、メモリ面が切り替わるのを契機に書込みの確定処理を行うようにしたが、メモリ面が切り替わる前にも一定転送回数毎に定期的に行うようにしてもよい。本変形例の場合、非常に大きな転送長のデータを書き込む際、定期的に書込みを確定させることができるので、データの書込みの確実性を向上させることができるほか、細かく書込み確定処理を行うので、エラー発生時のリカバリ処理が容易になるといった追加の効果がある。また、転送パラメータ300にてプロセッサ760,761が明示的に書込み確定処理の必要性の有無や頻度を指定できるようにしても良い。あるいは、DMA210〜212の起動トリガレジスタを2種設け、一方のトリガレジスタによって起動された場合には書込み確定処理付きで動作し、他方のトリガレジスタによって起動された場合には書込み確定処理を行わないようにしてもよい。この場合、不要な書込み確定動作を削減させることができるので処理性能を向上させるといった追加の効果がある。
(Modification 5 of the first embodiment)
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 transfer parameter 300 may allow the processors 760 and 761 to explicitly specify the necessity and frequency of the write confirmation process. Alternatively, two types of activation trigger registers for DMA 210 to 212 are provided, and when activated by one trigger register, operates with a write confirmation process, and when activated by the other trigger register, the write confirmation process is not performed. You may do it. In this case, unnecessary write confirmation operations can be reduced, so that there is an additional effect of improving processing performance.

(本実施例1の変形例6)
本実施形態では、DMA210〜212はパラメータ300をリードし、その指示によってメモリ間のデータ転送を実行するが、バッファまたはレジスタに書かれた小データを、ライト確定処理を実行しつつメモリに転送するための別のDMAを設けても良い。また、レジスタのサイズおよびアドレスからデータの転送長および転送元アドレスを知ることができるので、パラメータ300の構築を省略し、転送先アドレスをトリガレジスタにセットするように変形しても良い。更に、データ転送が正常終了の場合には、転送終了通知の送信を省略してもよい。本変形例の場合、データ転送におけるパラメータ作成や転送ステータスチェックのオーバーヘッドを削減できるので、小データ単位でのデータ転送においても処理性能を向上させる追加の効果がある。
なお上記の変形例1〜6は、必要に応じて組み合わせても構わない。
(Modification 6 of the first embodiment)
In this embodiment, the DMAs 210 to 212 read the parameter 300 and execute data transfer between the memories according to the instruction, but transfer the small data written in the buffer or register to the memory while executing the write confirmation process. Another DMA may be provided. Further, since the data transfer length and transfer source address can be known from the register size and address, the construction of the parameter 300 may be omitted and the transfer destination address may be set in the trigger register. Further, when the data transfer is normally completed, the transmission completion notification may be omitted. In the case of this modification, since the overhead of parameter creation and transfer status check in data transfer can be reduced, there is an additional effect of improving processing performance even in data transfer in small data units.
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 ASIC 200A and the ASIC 200B have the same configuration, the alphabetical character at the end is omitted in the following description.

図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 status block 400 for managing the status of the DMAs 210 to 212. The DMAs 210 to 212 are provided with a state management unit (SM) 2104 for managing its own state and acquiring information of other DMAs 210 to 212.

DMAステータスブロック400は各DMA210〜212の転送状態を示すテーブル401を持つ。テーブル401の詳細は図15を用いて後述する。各DMA210〜212の状態管理部2104は、スイッチブロック250を通じて、このDMAステータスブロック400にアクセスし、自己の情報の記録や、他のDMA210〜212の情報を取得して、パス選択の判断に利用する。   The DMA status block 400 has a table 401 indicating the transfer status of each of the DMAs 210 to 212. Details of the table 401 will be described later with reference to FIG. The state management unit 2104 of each DMA 210-212 accesses this DMA status block 400 through the switch block 250, records its own information, acquires information of other DMAs 210-212, and uses it to determine the path selection. To do.

図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 210 to 212, a current state 4020, a memory controller number 4030 of a transfer source, a memory controller number 4040 of a transfer destination, an internal data transfer path number 4050 in use, a request type. There are fields such as 4060.

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 DMA number 4010 is a field in which a number for identifying the DMAs 210 to 212 in the ASICs 200A and 200B is stored. The current state 4020 is a field indicating whether each DMA is transferring data (BUSY) or stopped (IDLE). The transfer source memory controller number 4030 is a number for identifying the transfer source memory controllers 230 to 233 specified by the parameter analysis in the DMAs 210 to 212. Similarly, the transfer destination memory controller number 4040 is a number for identifying the transfer destination memory controllers 230 to 233 specified by the parameter analysis in the DMAs 210 to 212. The internal data transfer path number 4050 is a number for identifying the internal data transfer paths 101 and 102 used when data is transferred through the internal data transfer paths 101 and 102. The request type 4060 indicates whether it is used for reading (RX), used for writing (TX), or used for both (TX / RX). In this embodiment, there is one field indicating the transfer destination memory controller number 4040. However, when the DMA has a function of transferring data from one transfer source to a plurality of transfer destinations simultaneously, the table 401 has a plurality of fields corresponding to the number. Transfer destination memory controller number field.

図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 DMA 210 in this embodiment performs a data transfer operation. The DMAs 211 and 212 perform the same operation as the DMA 210. The parameter fetch unit 2103 of the DMA 210 analyzes the parameter 300 by the same method as shown in FIG. 7, and specifies the transfer source and transfer destination memory controllers 230 to 233 (S8010, S8040). As a result, if it is necessary to access the memory controllers 230 to 233 of the transfer source or the transfer destination using the internal data transfer paths 101 and 102 (that is, when accessing the memories M4 to M7 of another package), the DMA 210 The state management unit 2104 accesses the DMA status block 400 and determines which internal data transfer path 101 or 102 should be used. Specifically, the state management unit 2104 refers to the table 401 and totals the number of records for each request type 4060 for each of the internal data transfer paths 101 and 102. When the access using the internal data transfer paths 101 and 102 is read (that is, when only the transfer source memory controllers 230 to 233 correspond to the memories M4 to M7 of another package) (S9020: Yes), the state management unit 2104 The number of records in which “RX” is included in the request type 4060 is counted for each of the internal data transfer paths 101 and 102 (S9030). On the other hand, when the access using the internal data transfer paths 101 and 102 is writing (that is, when only the transfer destination memory controllers 230 to 233 correspond to the memories M4 to M7 of another package) (S9040: Yes), the state management unit The 2104 counts the number of records in which “TX” is included in the request type 4060 for each of the internal data transfer paths 101 and 102 (S9050). When access using the internal data transfer paths 101 and 102 is both reading and writing (that is, when both the transfer source and transfer destination memory controllers 230 to 233 correspond to memories M4 to M7 in different packages) The management unit 2104 counts the number of records for each of the internal data transfer paths 101 and 102 (S9060). The state management unit 2104 selects the internal data transfer paths 101 and 102 with the smallest number of records counted for the request type 4060 (S9070). Then, the state management unit 2104 updates the record information corresponding to the own DMA 210 such as the memory controllers 230 to 233 to be used and the internal data transfer pass number to be used. For example, when the number of the own DMA 210 is “0” and data is transferred from the memory controller 0 of the same package as the DMA 210 to the memory controller 5 of another package using the internal data transfer path 0 (101), the state management unit 2104 Is “BUSY” in the status 4020, “0” in the transfer source memory controller number 4030, “5” in the transfer destination memory controller number 4040, and “0” in the internal data path number 4050 for the record with the DMA number 4010 “0”. ”And“ TX ”are set in the request type 4060, respectively.

パラメータ300に応じたデータの転送が終了すると(図7のS8020〜S8030またはS8050〜S8110)、DMA210の状態管理部2104はテーブル401の状態を再び更新する(S9090)。すなわち自DMA210に対応する状態4020を「IDLE」とし、転送元メモリコントローラ番号4030、転送先メモリコントローラ番号4040、内部データ転送パス番号4050、リクエスト種別4060をクリアする。   When the data transfer according to the parameter 300 is completed (S8020 to S8030 or S8050 to S8110 in FIG. 7), the state management unit 2104 of the DMA 210 updates the state of the table 401 again (S9090). That is, the state 4020 corresponding to the own DMA 210 is set to “IDLE”, and the transfer source memory controller number 4030, the transfer destination memory controller number 4040, the internal data transfer path number 4050, and the request type 4060 are cleared.

(実施例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 paths 101 and 102, the internal data transfer path used for data transfer is determined based on the usage status of the internal data transfer paths 101 and 102 by other resources (DMA). 101 and 102 can be selected, and efficient transfer becomes possible. Conventionally, there is a method of selecting the network path transfer buffer by checking the availability of the network path, but when a plurality of DMAs 210 to 212 see the availability with a slight time difference, all the DMAs 210 to 212 select the same path. There is a possibility that efficient transfer cannot be performed. In the second embodiment, the DMAs 210 to 212 referring to the table 401 reflect the selection result in the table 401. Since the next DMA 210 to 212 can determine the internal data transfer paths 101 and 102 used for data transfer based on the selection result of the previous DMA 210 to 212, all the DMAs 210 to 212 have the same internal data transfer path 101, 102. The possibility of selecting 102 is reduced, and more efficient path selection becomes possible.

(実施例2における変形例1)
本実施例2では個々のDMA210〜212が他のDMA210〜212の情報を見てパス選択につき判定していたが、ステータスブロック400に判定論理を設け、DMA210〜212がステータスブロック400に問い合わせるようにしても良い。この場合、ステータスブロック400にはパス選択部を設け、DMA210〜212が転送元および転送先のメモリコントローラ230〜233を含むリクエストをパス選択部に送信し、パス選択部は、このリクエストに応じて、図16のS9000〜S9070の処理を行い、選択した内部データ転送パス101,102を応答する。本変形例1の場合、パス選択論理を一箇所に集約できるので実装効率が向上する可能性があるほか、テーブル401のレコードの更新タイミングをステータスブロック400で調整できるので、データ読取り中の書込みなどによる情報不正合を防止しやすくなるという追加の効果がある。
(Modification 1 in Example 2)
In the second embodiment, each of the DMAs 210 to 212 determines the path selection by looking at the information of the other DMAs 210 to 212. However, a determination logic is provided in the status block 400 so that the DMAs 210 to 212 inquire the status block 400. May be. In this case, the status block 400 is provided with a path selection unit, and the DMAs 210 to 212 transmit requests including the transfer source and transfer destination memory controllers 230 to 233 to the path selection unit, and the path selection unit responds to this request. , The processing of S9000 to S9070 in FIG. 16 is performed, and the selected internal data transfer paths 101 and 102 are responded. In the case of the first modification, the path selection logic can be consolidated in one place, so that the mounting efficiency may be improved. In addition, the update timing of the record in the table 401 can be adjusted by the status block 400, so writing during data reading, etc. This has the additional effect of making it easier to prevent unauthorized information.

(実施例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の混雑状況を加味できるのでより精度の高いパス選択が可能となる追加の効果がある。
(Modification 2 in Example 2)
In the second embodiment, the selection of the internal data transfer paths 101 and 102 by the DMAs 210 to 212 is determined to determine the path selection. In addition to this, the buffer availability of the internal data transfer paths 101 and 102 and the PCI status The determination may be made in consideration of the remaining number of Express transfer credits. For example, when the internal data transfer path 0 (101) is rarely used but there is no space in the corresponding buffer, it is possible to determine to select the internal data transfer path 1 (102). As an example, the internal data transfer path arbiters 220 and 222 have a function of monitoring the buffer amount used in the internal data transfer paths 101 and 102 and a function of monitoring the transfer credit remaining number in the PCI Express cores 221 and 223. This can be realized. In the second modification, the status block 400 stores a table 402 as shown in FIG. In the example of FIG. 17, more detailed buffer credits such as headers and data, that is, posted header buffer credits (PH_CREDITS; Posted Header buffer CREDITS), posted data buffer credits (PD_CREDITS; Posted Data buffer CREDITS), Non-Posted Header Buffer Credits (NPH_CREDITS), Non-Posted Data Buffer Credits (NPD_CREDITS; Non-Posted Data Buffer CREDITS), Completion Response Header Buffer Credits (CPLH_CREDITS; ComPLetion Header Buffer CREDITS) And completion response data buffer credits (CPLD_CREDITS; ComPLetion Data buffer CREDITS). In the case of a posted access such as a memory write request, the remaining number of PH_CREDITS or PD_CREDITS is referred to, and in the case of a non-posted access such as a memory read request, the remaining number of NPH_CREDITS or NPD_CREDITS is referred to. That's fine. In the case of this modification, since the congestion status of the internal data transfer paths 101 and 102 can be taken into account, there is an additional effect that path selection with higher accuracy is possible.

(実施例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の混雑状況を加味できるのでより精度の高いパス選択が可能となる追加の効果がある。
(Modification 3 in Example 2)
In the second embodiment, the determination is made by checking the selection status of the internal data transfer paths 101 and 102 by the DMAs 210 to 212. In addition to this, the usage status of the transfer source / destination memory controller numbers 4030 and 4040 in the table 401 is used. You may make it judge in consideration of. Assume that the memory controller 231 is accessed through the internal data transfer paths 101 and 102. For example, if the internal data transfer path 0 (101) has a smaller number of DMAs, but the access destinations are all the same memory controller 230, the buffer of the memory controller 230 overflows and the subsequent data on the internal data transfer path 0 Packets may be stuck. Therefore, there may be a case where the internal data transfer path 1 (102) is selected even if the number of selected DMAs is large. In the third modification, the state management unit 2104 can be realized by limiting the internal data transfer paths 101 and 102 to, for example, a DMA having a destination memory controller of 231 and performing the counts shown in S9030, S9050, and S9060. In the case of the third modification, in addition to the congestion status of the internal data transfer paths 101 and 102, the congestion status of the access-destination memory controllers 230 to 233 can be taken into account, so that there is an additional effect that path selection with higher accuracy is possible. .

(実施例2における変形例4)
本実施例2では各DMA210〜212による内部データ転送パス101,102の選択状況を見て判断するようにしたが、これに加え、転送長や、転送ブロック数、あるいは、残転送ブロック数などのより詳細な情報をテーブル401に加え、判断に利用しても良い。本変形例の場合、パス選択する上での精度を高めることができ、より効率的な判断が可能となる追加の効果がある。
(Modification 4 in Example 2)
In the second embodiment, the determination is made by checking the selection status of the internal data transfer paths 101 and 102 by the DMAs 210 to 212. In addition to this, the transfer length, the number of transfer blocks, the number of remaining transfer blocks, etc. More detailed information may be added to the table 401 and used for determination. In the case of this modification, the accuracy in selecting a path can be increased, and there is an additional effect that enables more efficient determination.

なお上記の実施例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 parameter 300 used by the processors 760 and 761 for the DMA 210 to 212 transfer instructions, and The difference is that the processors 760 and 761 can notify / set the use layout information of the memories M0 to M7 to the ASIC 200. In the following description, only the parts different from the first and second embodiments will be mainly described, and the description of the same parts will be omitted.
FIG. 18 shows an example of the format of the parameter 300 created by the processors 760 and 761 in the third embodiment in order to issue a transfer instruction to the DMAs 210 to 212. In the parameter 300 of the third embodiment, in addition to the fields 3001 to 3006 included in the parameter 300 of the previous embodiment, a field (I / O type) 3007 for designating the I / O type and processing priority of the transfer concerned. There is. The I / O type field 3007 is an 8-bit field, with the upper 4 bits indicating the I / O type and the lower 4 bits indicating the priority. For example, as the type of I / O, random I / O from the host is 1000b (binary number), sequential I / O from the host is 0100b, and transfer such as a synchronization function between volumes provided in the storage is 0110b to 0111b Etc. shall be set for each type. On the other hand, the priority is 1000b for the highest-priority transfer, 0001b for the lowest-priority transfer, and the like.

図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 transfer path arbiters 220 and 222 in the ASIC 200. The information in the memory layout information setting table 800 is only required to be used by the internal data transfer path arbiters 220 and 222, and may be arranged in another place as long as the same effect can be obtained. For example, the memory layout information setting table 800 can be arranged in the local memories 770 and 771 and the memories M0 to M7.

メモリレイアウト情報設定テーブル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 DMAs 210 to 212 for memory transfer is specified. In general, the entire area of the memories M0 to M7 cannot be used as a cache memory area of the storage. Some of the memories M0 to M7 are a control information storage area of a protocol chip, a cache management information storage area of the processors 760 and 761, and the like. Used. Therefore, by designating other areas in this table 800, which memory controllers 230 to 233 are accessed by the ASIC 200, in particular, the internal data transfer path arbiters 220 and 222 for controlling the data passing through the internal data transfer paths 101 and 102. You can tell if more occur.

メモリレイアウト情報テーブル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 memory number field 8010, the memory number is recorded. In the third embodiment, the memory number 8010 is the memories M0 to M7. A start address field 8020 is a start address of an effective access range by the DMAs 210 to 212. An end address field 8030 is an end address of an effective access range by the DMAs 210 to 212. The ratio field 8040 is a field for setting a frequency ratio at which the ASIC 200 accesses each of the memory controllers 230 to 233. The ratio is a value corresponding to the size of the address range specified by the processors 760 and 761. In the third embodiment, the number of spaces is shown for each address space. In the example of FIG. 19, the address space 1000h (addresses 0000h to 0FFFh) is used as a unit, and both the memory M2 and the memory M3 provide a space of 10000h (16), so the memory M0 provides a space of 5000h. It is 5 from that. The counter field 8050 is an operation counter used by the arbiter to manage the change of the arbitration ratio, and the initial value is set to the same value as the ratio field 8040.

図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 DMA 210 and the internal data transfer path arbiter 220 in the present embodiment. Since the exchange of data between the DMAs 210 to 213 and the internal data transfer path arbiters 220 and 221 is the same, the DMA 210 and the internal data transfer path arbiter 220 will be described here. Between the DMA 210 and the internal data transfer path arbiter 220, a REQ signal line 601 for requesting a path use right from the DMA 210 to the internal data transfer path arbiter 220, a REQ_MEM_NO signal line 602 for transmitting an access destination memory controller number at the time of request, and an internal data transfer path arbiter An ACT signal line 603 for transmitting permission of a path use right from 220 to the DMA 210, and various signal lines 60n for communicating a signal for transmission / reception and synchronization of both data, an error status signal, and the like are provided. The internal data transfer path arbiter 220 can communicate with all the DMAs 210 to 213 and other resources of the in-controller ASIC 200 using the path via the switch block 250 using these signal line groups.

図21は本実施形態における内部データ転送パスアービタ220,222の動作を示したフローチャートである。以降では内部データ転送パスアービタは単にアービタと称する。また、アービタ220とアービタ222とは同じ動作を行うので、ここではアービタ220についてのみ説明する。   FIG. 21 is a flowchart showing the operation of the internal data transfer path arbiters 220 and 222 in this embodiment. Hereinafter, the internal data transfer path arbiter is simply referred to as an arbiter. Since the arbiter 220 and the arbiter 222 perform the same operation, only the arbiter 220 will be described here.

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 parameters 300 are analyzed in the same manner as in the procedure of FIG. 7, and the access destination memory controllers 230 to 233 are specified. When accessing the access destination memory controllers 230 to 233 via the internal data transfer paths 101 and 102, the DMAs 210 to 212 receive a request signal for acquiring the path use right together with a signal indicating the access destination memory controller number and the REQ signal line 601 and REQ_MEM_NO. This is issued to the arbiter 220 through the signal line 602.

アービタ220はDMA210〜220から要求信号を受領すると(S9000)、順に利用権の調停動作を開始する。
受領した要求信号が1つの場合(S9010:Yes)、アービタ220は当該要求信号に利用権を与え(S9100)、ACT信号603を通じてACT信号を返す。当該DMAはACT信号を受領するとメモリコントローラ230〜233との間でデータの転送を行い、終了するとREQ信号線601のREQ信号を取り下げて(信号をネゲートして)、利用権を解放する。アービタ220は利用権が解放されるのを待ち(S9110)、再び要求信号待ちに入る。
When the arbiter 220 receives a request signal from the DMAs 210 to 220 (S9000), the arbitration operation for the usage right is started in order.
When the received request signal is one (S9010: Yes), the arbiter 220 gives the right to use the request signal (S9100), and returns the ACT signal through the ACT signal 603. When the DMA receives the ACT signal, the DMA transfers data to and from the memory controllers 230 to 233. When the DMA ends, the DMA REQ signal on the REQ signal line 601 is withdrawn (the signal is negated), and the usage right is released. The arbiter 220 waits for the usage right to be released (S9110) and waits for a request signal again.

もし、同時に複数の要求信号を受けていた場合、もしくは待たせている要求が複数ある場合(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 arbiter 220 indicates the access destination memory controller number received through the REQ_MEM_NO signal line 602 together with the REQ signal. Check (S9020). Then, referring to the memory layout information setting table 800, the value of the counter field 8050 corresponding to each memory controller number is compared (S9030). Then, the memory controller number having the largest value in the counter field 8050 is selected from the memory controllers 230 to 233 requested as the access destination, and the path use right is given to the DMA 210 to 212 that designates the number (S9040). ). When a plurality of DMAs 210 to 212 are applicable, the arbiter 220 arbitrates the usage right in round robin. Then, the counter value corresponding to the memory controller number is decremented by 1 and the priority level is decremented by 1 (S9050). When all the counter values become 0 (S9060: Yes), the arbiter 220 refers to the ratio field 8040 and resets the counter value of each memory so as to match the value of the ratio field 8040 (S9070). Then, it waits for the given path usage right to be released (S9080), and again enters the signal waiting state.

(実施例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 processors 760 and 761, that is, the control software, the internal data transfer paths 101 and 102 can be used more efficiently than the arbitration using only hardware. Arbitration can be performed, and the data transfer of the internal data transfer paths 101 and 102 can be made efficient.

以上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のメモリの転送先アドレスと、データの転送長と、を記憶部から取得する取得部と、
前記転送元アドレスに基づき、前記第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のメモリの転送先アドレスと、データの転送長と、を記憶部から取得するステップと、
前記転送元アドレスに基づき、前記第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.
JP2014098713A 2014-05-12 2014-05-12 Data transfer device and data transfer method Pending JP2014167818A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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