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

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

Info

Publication number
JP2019095844A
JP2019095844A JP2017222120A JP2017222120A JP2019095844A JP 2019095844 A JP2019095844 A JP 2019095844A JP 2017222120 A JP2017222120 A JP 2017222120A JP 2017222120 A JP2017222120 A JP 2017222120A JP 2019095844 A JP2019095844 A JP 2019095844A
Authority
JP
Japan
Prior art keywords
transfer
data
memory
dma
unit
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.)
Granted
Application number
JP2017222120A
Other languages
English (en)
Other versions
JP7006166B2 (ja
Inventor
鈴木 利彦
Toshihiko Suzuki
利彦 鈴木
真也 宮田
Shinya Miyata
真也 宮田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017222120A priority Critical patent/JP7006166B2/ja
Priority to US16/175,896 priority patent/US10733127B2/en
Publication of JP2019095844A publication Critical patent/JP2019095844A/ja
Application granted granted Critical
Publication of JP7006166B2 publication Critical patent/JP7006166B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】第1メモリから第2メモリへのデータ転送を効率的に行なう。【解決手段】第1データサイズの第1データブロック単位でデータを格納する第1メモリ12から第2メモリ12に、第2データサイズ幅の通信路を介して転送データを転送するデータ転送装置10において、第1メモリ12から読み出された転送データを格納する格納部153と、この格納部153に格納された転送データを、第1メモリ12から第2メモリ12に、第2データサイズの整数倍単位で転送する転送制御部1472とを備える。【選択図】図3

Description

本発明は、データ転送装置およびデータ転送方法に関する。
例えば、複数のCM(Controller Module)を備えるストレージ装置においては、一のCMのメモリのデータを、DMA(Direct Memory Access)を用いて他のCMに転送することが行なわれる。
また、CMに備えられるCPU(Central Processing Unit)としては、複数のコアを有するマルチコアプロセッサが用いられる場合がある。
図11はマルチコアプロセッサを搭載したCMを備えたストレージ装置におけるDMAを用いた従来のデータ転送を説明するための図である。
図11に示すストレージ装置500は、2つのCM501−1,501−2を備える。これらのCM501−1,501−2は同様の構成を有する。なお、以下、CMを示す符号としては、複数のCMのうち1つを特定する必要があるときには符号501−1,501−2を用いるが、任意のCMを指すときには符号501を用いる。
各CM501は、それぞれ、CPU502,メモリ503,スイッチ504およびDMAコントローラ505を備える。
CPU502は複数のコア5011を有するマルチコアプロセッサであり、このCPU502にメモリ503が接続されている。図11に示すストレージ装置500においては、各CM501はそれぞれ4つのコア5011を有する。以下、これらのコア5011を符号#0〜#3を用いて表す場合がある。
CPU502にはスイッチ504が接続されており、このスイッチ504には他のCM501のスイッチ504が接続される。すなわち、CM501−1とCM501−2とはスイッチ504,504を介して通信可能に接続されている。これらのスイッチ504間は、例えば、PCIe(Peripheral Component Interconnect Express)の規格に従った通信路を介して接続されている。
また、各CM501において、スイッチ504にはDMAコントローラ505が接続されている。DMAコントローラ505は、例えば、CM501−1のメモリ503とCM501−2のメモリ503との間でデータを転送する。
マルチコアプロセッサであるCPU502においては、複数のCPUコア5011に対して1つのDMAコントローラ504が備えられている。
また、転送元CM501のCPU502は、ストレージデータの整合性確認も行なう。整合性確認は、データブロック毎に行なわれ、個々のデータブロックには整合性確認に用いられるチェックコードが付加される。
特開2016−181126号公報 特開2008−197804号公報
ストレージ装置500において、整合性確認のチェックコード付きのデータブロックは、512B(Byte)のユーザデータに、8Bのチェックコードを付加された520Bのデータサイズを有する。以下、整合性確認のチェックコード付きのデータブロックをチェックコード付きデータブロックという場合がある。以下、データサイズの単位“Byte”を単に“B”と表す場合がある。
一方、CM501間の通信に用いられているPCIeのMPS(Max Payload Size)は256Bであり、PCIeにおいて最も転送効率の良いデータサイズは256Bの整数倍である。
このように、チェックコード付きデータブロックとPCIeの規格とでは取り扱われるデータの単位サイズが不一致である。
例えば、チェックコード付きデータブロックにとって効率の良いデータ転送を行なう場合、すなわち520B単位でのデータ転送は、PCIeにとって効率が悪く、バス性能を最大限に発揮することができない。
520B のデータサイズを有する整合性確認済みデータブロックは、CM501間において、256B‐256B‐8Bの各データサイズで3回に分けてデータ転送される。これにより、特に最後の8Bのデータサイズの分のデータ転送時に、PCIeのバス使用効率が悪くなる。
このため、このデータ転送装置は、第1データサイズの第1データブロック単位でデータを格納する第1メモリから第2メモリに、第2データサイズ幅の通信路を介して転送データを転送するデータ転送装置において、前記第1メモリから読み出された前記転送データを格納する格納部と、前記格納部に格納された前記転送データを、前記第1メモリから前記第2メモリに、前記第2データサイズの整数倍単位で転送処理する転送制御部とを備える。
一実施形態によれば、第1メモリから第2メモリへのデータ転送を効率的に行なうことができる。
実施形態の一例としてのストレージ装置のハードウェア構成を示す図である。 実施形態一例としてのストレージ装置におけるメモリ間のデータ転送を例示する図である。 実施形態の一例としてのストレージ装置のDMAコントローラの機能構成を示す図である。 実施形態の一例としてのストレージ装置におけるDMAコントローラにより転送されるデータの処理方法を説明するための図である。 実施形態の一例としてのストレージ装置のDMAコントローラ内において転送されるデータの流れを説明するための図である。 実施形態の一例としてのストレージ装置のDMAコントローラ内において転送されるデータの流れを説明するための図である。 実施形態の一例としてのストレージ装置におけるデータ転送時のCPU,DMAブロックおよびシーケンサによる処理を説明するためのシーケンス図である。 実施形態の一例としてのストレージ装置のDMAコントローラ内において転送されるデータの流れを説明するための図である。 実施形態の一例としてのストレージ装置のDMAコントローラ内において転送されるデータの流れを説明するための図である。 実施形態の一例としてのストレージ装置のDMAコントローラ内において転送されるデータの流れを説明するための図である。 マルチコアプロセッサを搭載したCMを備えたストレージ装置におけるDMAを用いた従来のデータ転送を説明するための図である。
以下、図面を参照して本データ転送装置およびデータ転送方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(A)構成
まず、図1を参照しながら、本実施形態のストレージ制御装置(CM)10−1,10−2を含むストレージ装置1のハードウェア構成について説明する。なお、図1は、本実施形態のストレージ制御装置10−1,10−2を含むストレージ装置1のハードウェア構成の一例を示すブロック図である。
本ストレージ装置1は、HDD(Hard Disk Drive)等の図示しない記憶装置を仮想化して、仮想ストレージ環境を形成する。そして、ストレージ装置1は、仮想ボリュームを、上位装置であるホスト装置(図示省略)に提供する。
本ストレージ装置1は、1以上のホスト装置に対して通信可能に接続されている。ホスト装置は、例えば、サーバ機能を備えた情報処理装置であり、本ストレージ装置1との間において、NAS(Network Attached Storage)やSAN(Storage Area Network)のコマンドを送受信する。ホスト装置は、例えば、ストレージ装置1に対してNASにおけるリード/ライト等のストレージアクセスコマンドを送信することにより、ストレージ装置1が提供するボリュームにデータの書込または読出を行なう。
ストレージ装置1の記憶装置には、データが512Bのブロックデータ毎に、当該ブロックデータに基づいて算出された8Bの整合情報を付加して、ブロックサイズ520Bのストレージブロックとして格納される。以下、整合情報を、BCC(Block Check Code)という場合がある。
本ストレージ装置1は、ホスト装置からボリュームに対して行なわれる入出力要求(例えば、ライト要求やリード要求)に応じて、このボリュームに対応する記憶装置に対して、データのライトやリード等の処理を行なう。ホスト装置からの入出力要求のことをI/O要求といってもよい。
本ストレージ装置1は、図1に示すように、複数(本実施形態では2つ)のCM10−1,10−2を備える。これらのCM10−1,10−2は、図示しないコントローラエンクロージャ(Controller Enclosure:CE)に搭載されてもよい。
CM10−1,10−2は、ストレージ装置1内の動作を制御する制御装置(コントローラ,ストレージ制御装置)であり、ホスト装置から送信されるI/O要求に従って、記憶装置へのデータアクセス制御等、各種制御を行なう。また、CM10−1,10−2は互いに同様の構成を有している。以下、CMを示す符号としては、複数のCMのうち1つを特定する場合には符号10−1,10−2を用い、任意のCMを指すときには符号10を用いる。また、CM10−1をCM#0と、CM10−2をCM#1と、それぞれ表す場合がある。
CM10−1,10−2は冗長化されている。本ストレージ装置1に備えられたこれらの複数のCM10のうち、一つのCM10(例えば、CM10−1)がマスター(プライマリ)として各種制御を行なう。また、残りのCM10(例えば、CM10−2)がスレーブとして機能する。マスターのCM10の故障時には、スレーブのCM10がマスターとしての動作を引き継ぐ。
各CM10は、それぞれ、CPU11,メモリ12,スイッチ13およびDMAコントローラ14を備える。
メモリ12は、例えば、RAM(Random Access Memory)であり、本ストレージ装置1の記憶装置のデータ等が一時的に格納される。従って、メモリ12は、第1データサイズ(520B)のストレージブロック(第1データブロック)単位でデータを格納する。
CPU11は複数のコア111を有するマルチコアプロセッサであり、このCPU11にメモリ12が接続されている。図1に示すストレージ装置1においては、各CM10はそれぞれ4つのコア111を有する。以下、これらのコア111を#0〜#3を付して表す場合がある。
各コア111は、後述するDMAコントローラ14に備えられたシーケンサ(sequencer:SEQ)145−1〜145−4に対してリクエストを発行する。例えば、コア111は、DMAコントローラ14において、各コア111に対応して備えられたシーケンサ145に対して、一のCM10に備えられたメモリ12から、他のCM10に備えられたメモリ12へのデータ転送を指示するリクエストを発行する。
コア111は、例えば、アプリケーションが用意するディスクリプタ(指示書)に基づき、シーケンサ145に対してリクエストの発行を行なう。
CPU11にはスイッチ(SW)13が接続されており、このスイッチ13は他のCM10のスイッチ13と接続される。すなわち、CM10−1とCM10−2とはスイッチ13を介して通信可能に接続されている。スイッチ13とCPU11との間,スイッチ13とDMAコントローラ14との間およびスイッチ13間は、例えば、PCIeの規格に従った通信路(PCIeバス)を介してそれぞれ接続されている。
また、各CM10において、スイッチ13にはDMAコントローラ14が接続されている。DMAコントローラ14は、例えば、CM10−1のメモリ12とCM10−2のメモリ12との間でデータを転送する。すなわち、DMAコントローラ14は、転送元(リード元)のCM10−1のメモリ12のデータをリードし、このリードしたデータを、転送先(ライト先)のCM10−2のメモリ12にライトする制御を行なう。
DMAコントローラ14は、図1に示すように、複数(図1に示す例では4つ)のシーケンサ145−1〜145−4と、1つ以上(図1に示す例では2つ)のDMAブロック141−1,141−2とを備える。
なお、以下、シーケンサを示す符号としては、複数のシーケンサのうち1つを特定する必要があるときには符号145−1〜145−4を用いるが、任意のシーケンサを指すときには符号145を用いる。また、以下、DMAブロックを示す符号としては、複数のDMAブロックのうち1つを特定する必要があるときには符号141−1,141−2を用いるが、任意のDMAブロックを指すときには符号141を用いる。また、以下、DMAブロック141をDMA_BLKと表す場合がある。
以下、シーケンサ145をSEQ145と表す場合がある。また、以下、シーケンサ145−1をシーケンサ#0もしくはSEQ#0と表す場合がある。同様に、シーケンサ145−2〜4をシーケンサ#1〜#3もしくはSEQ#1〜#3と表す場合がある。
本ストレージ装置1においては、DMAコントローラ14において、CPU11のCPUコア111と同数のシーケンサ145が備えられ、シーケンサ#0〜#3は、コア#0〜#3にそれぞれ対応する処理を行なう。
シーケンサ145は、所定の処理サイズ単位でデータを取り扱う。例えば、データ転送を行なうに際して、シーケンサ145は、後述するリードDMA143(図3参照)によってリードされたデータを所定の処理サイズ(例えば、2KB〜4KB)単位で取扱う。また、シーケンサ145においては、所定の処理サイズ(例えば、1KB)単位でライトデータを取り扱い、このライトデータを所定の転送サイズ(例えば、MPSの整数倍)に分割して、後述するライトDMA142(図3参照)を介して送出(ライト)させる。
例えば、シーケンサ145は、アドレス0x0000_0100から4KB(0x0001 _0000)サイズのデータを転送する場合には、アドレス4KBで2つのデータに分けて転送する。すなわち、第1のデータ転送として、アドレス0x0000_0100から0x0000_FF00サイズのデータを転送した後に、第2のデータ転送として0x0001_0000から0x0000_0100サイズのデータを転送する。
シーケンサ145は、この転送データを、例えば、所定サイズ(MPS(= 256B))単位に分割してライトDMA142に送信し、このライトDMA142に対して、転送サイズ(MPSの整数倍)単位で分割して転送(送出)させる。
また、DMAコントローラ14においては、シーケンサ145よりも少ない数のDMAブロック141を備えることにより、製造コストの低減や装置の小型化を実現している。
図2は実施形態一例としてのストレージ装置1におけるメモリ12間のデータ転送を例示する図である。
この図2に示す例においては、CM(転送元CM)10−1のメモリ12のデータを、CM(転送先CM)10−2のメモリ12に転送する例を示す。
転送元CM10−1においては、コア#0がシーケンサ145−1(シーケンサ#0)にデータ転送のリクエストを転送する。このデータ転送リクエストを受信したシーケンサ145−1は、DMAブロック141−1にメモリ12からデータをリードさせる。その後、シーケンサ145−1は、DMAブロック141−1にこのリードされたデータを転送先CM10−2のメモリ12にライトさせる。
同様に、コア#1がシーケンサ145−2(シーケンサ#1)にデータ転送のリクエストを転送する。このデータ転送リクエストを受信したシーケンサ145−2は、DMAブロック141−2にメモリ12からデータをリードさせる。その後、シーケンサ145−2は、DMAブロック141−2にこのリードされたデータを転送先CM10−2のメモリ12にライトさせる。
本ストレージ装置1において、CPU11,メモリ12,スイッチ13,DMAコントローラ14の各間は、PCIeの規格に沿った通信路で接続されている。すなわち、CM10は、第2データサイズ(256B)幅の通信路を介して転送データを転送するデータ転送装置として機能する。
図3は実施形態の一例としてのストレージ装置1のDMAコントローラ14の機能構成を示す図である。
なお、この図3中においては、便宜上、シーケンサ#0についてのみ、その構成を図示しているが、他のシーケンサ145においても同様の構成を有する。同様に、図3中においては、便宜上、一つのDMAブロック141についてのみ、その構成を図示しているが、他のDMAブロック141においても同様の構成を有する。
各DMAブロック141は、図3に示すように、調停回路(ARB:arbiter)149を介して各シーケンサ145と接続されている。また、各DMAブロック141は、PCIeコントローラ160を介してスイッチ13と接続されており、これにより、各DMAブロック141は、PCIeコントローラ160を介して、CM#0およびCM#1の各メモリ12と接続されている。
調停回路149は、複数のシーケンサ145とDMAブロック141との接続を制御する調停回路であり、DMAブロック141に接続するシーケンサ145を切り替える。
上述の如く、本ストレージ装置1の各DMAコントローラ14において、DMAブロック141の数はシーケンサ145の数よりも少ない。調停回路149が、DMAブロック141に対して接続されるシーケンサ145を切り替えることで、各シーケンサ145がそれぞれDMAブロック141を介してメモリ12間のデータ転送を実現することができる。
以下、DMAブロック141に接続された状態のシーケンサ145をDMA接続中のシーケンサ145という場合がある。また、調停回路149がDMAブロック141に接続されるシーケンサ145を切り替えることにより、DMA接続中の状態からDMAブロック141に接続されなくなった状態のシーケンサ145をDMA接続解除されたシーケンサ145という場合がある。
なお、図3に示す例においては、便宜上、1つの調停回路149を示しているが、これに限定されるものではない。例えば、DMAブロック141毎に調停回路149を備えてもよく、適宜変更して実施することができる。
調停回路149は、例えば、一のシーケンサ145が一のDMAブロック141を介して所定サイズ(例えば、4KB)のデータを転送した場合に、当該DMAブロック141に接続されるシーケンサ145の切り替えを行なう。
DMAコントローラ14において、SEQ#0〜#3,調停回路149およびDMAブロック141は、同一LSI(Large Scale Integration)140上に備えられてもよい。
調停回路149は、複数のシーケンサ145のうち、DMAブロック141を占有して転送指示を行なうシーケンサ145を切り替える切替制御部として機能する。
DMAブロック141は、図3に示すように、ライトDMA142およびリードDMA143を備える。なお、ライトDMAをWT_DMAと表す場合があり、リードDMAをRD_DMAと表す場合がある。
リードDMA143は、転送元(リード元)のメモリ12からデータのリード処理を行なう。リードDMA143は、シーケンサ145からの指示に従って、転送元(リード元)のメモリ12からデータのリード処理を行なう。なお、リードDMA143によるメモリ12からのデータのリードには既知の種々の手法を用いることができ、その詳細な説明は省略する。
リードDMA143は、シーケンサ145の転送制御部1472からの指示に従い、転送元メモリ12から、データ転送経路であるPCIeバスにおける転送効率のよいデータサイズ単位でデータの転送(リード)を行なう。ここで、PCIeバスにおける転送効率のよいデータサイズとは、例えば、PCIeにおいて一度にデータ転送できるデータサイズである最大ペイロードサイズ(Max Payload Size;MPS)であり、具体的には、256Bである。
以下、PCIeバスにおける転送効率のよいデータサイズ単位をPCIe転送好適サイズという場合があり、256Bの整数倍であるものとする。
リードDMA143は、転送元メモリ12との間を接続するデータ転送経路において、PCIe転送好適サイズである256Bの整数倍(第2のデータサイズ)単位で転送処理を行なう。
リードDMA143は、図示しないメモリ(バッファメモリ)を備え、転送元メモリ12からリードしたデータをこのメモリに格納する。リードDMA143は、後述するシーケンサ145からの指示に従って、転送元メモリ12からデータのリードを行なう。
また、リードDMA143は、整合性チェック部1431および進捗管理部1432を備える。
整合性チェック部1431は、所定サイズ(例えば、520B)単位で受信されるデータ(ストレージブロック)に対して、順次、当該ストレージブロックに含まれるBCCの値の整合性を確認する演算処理を行なう。例えば、BCCは、データブロックを整数値の列とみなして和を求め、これをある定数で割った余り(余剰)を用いて算出されるチェックサム手法によって他の記憶装置等によって設定されてもよい。このような場合に、整合性チェック部1431は、ストレージブロックに含まれるデータブロックを用いてチェックサム手法を用いて、BCCを算出し、ストレージブロックに含まれているBCCと一致するか、整合性(妥当性)の確認を行なう。
以下、ストレージブロックについて、当該ストレージブロックに含まれるBCCの値の整合性を確認することを、整合性チェックもしくはBCCチェックという場合がある。
整合性チェック部1431は、米国規格協会(ANSI)T10 データ保全性フィールド(DIF)標準に準拠した既知の手法を用いてBCCチェックを行なってもよい。なお、整合性チェック部1431によるBCCチェックは既知の種々の手法を用いて行なってもよく、その詳細な説明は省略する。
整合性チェック部1431は、BCC(整合情報)を用いて転送データの整合性確認を行なう整合性確認部として機能する。
このように、転送されるデータに対して、整合性チェック部1431がBCCチェックを行なうことにより、ストレージ内でのデータ破壊やデータ化けなどが発生した場合においてもデータの誤りを検出することを可能とする。
以下、整合性チェック部1431がBCCチェックを行なう過程において算出される値、すなわち、BCCチェックを行なうためのBCCチェック用計算の過程で生成される演算値をBCCチェック演算途中値という場合がある。BCCチェック演算途中値は、データの転送の進捗に応じて随時変化する。
整合性チェック部1431は、整合性チェックの過程で算出されるBCCチェック演算途中値を、上述した図示しないメモリの所定の領域に格納する。また、整合性チェック部1431は、BCCチェック演算を行なうに際して、BCCチェック演算の進捗を示すカウント値を図示しないメモリの所定の領域に格納する。このカウント値は、BCCチェック演算の進捗に応じて随時更新される。従って、BCCチェック演算途中値は、カウント値に対応して変化する。
進捗管理部1432は、整合性チェック部1431によるBCCチェックの進捗を管理する。例えば、進捗管理部1432は、整合性チェック部1431により整合性の確認ができたデータ量をカウントする。このように進捗管理部1432によりカウントされた値(カウント値)を参照することで、整合性チェック部1431がBCCチェックを行ない整合性が確認できたデータサイズを把握することができる。
進捗管理部1432は、計数したカウント値(進捗情報)を、図示しないメモリの所定の領域に格納する。
リードDMA143は、シーケンサ145からの指示に従って、リード(受信)したストレージブロック(520B;第1のデータサイズ)をシーケンサ145に転送する。このリードDMA143からシーケンサ145へのリードデータの転送は、PCIeの規格に沿ったデータサイズ(例えば、256Bの整数倍;第2のデータサイズ)単位で行なわれる。
また、リードDMA143からシーケンサ145への520Bのストレージブロックの転送の途中において、調停回路149により、当該DMAブロック141に対して接続されるシーケンサ145が切り替えられる場合がある。
このように、ストレージブロックの転送途中で、当該DMAブロック141に接続されるシーケンサ145の切り替えが行なわれた場合には、DMAブロック141は、整合性チェック部1431により実行中のBCCチェックを中断する。そして、DMAブロック141は、整合性チェック部1431により算出されたBCCチェック演算途中値を、切替前のシーケンサ145(DMA接続解除されるシーケンサ145)に対して送信する。また、この際、リードDMA143は、BCCチェック演算途中値とともに、このBCCチェック演算途中値の算出位置を示すカウント値も、切替前のシーケンサ145に対して送信する。
この送信されるカウント値は、ともに送信されるBCCチェック演算途中値に対応するものであり、そのBCCチェック演算途中値が算出されるまでのBCCチェック用計算の進捗を表す進捗情報である。
リードDMA143は、当該DMAブロック141に接続されるシーケンサ145の切り替えが行なわれた場合に、新たにDMA接続されたシーケンサ145からBCCチェック演算途中値およびカウント値を受信した場合には、受信したカウント値を用いて、残りのデータのリードを行なう。また、整合性チェック部1431は、BCCチェック演算途中値を用いて、リードを再開したデータについて整合性チェック用計算を再開し、残りのBCCを計算する。
ライトDMA142は、転送先(ライト先)のメモリ12に対するデータのライト処理を行なう。ライトDMA142は、リードDMA143が転送元メモリ12からリードした転送データを、シーケンサ145の指示に従って、転送先(ライト先)のメモリ12に対するデータのライト処理を行なう。なお、ライトDMA142によるメモリ12に対するデータのライト処理は既知であり、その詳細な説明は省略する。
シーケンサ145は、CPU11のコア111から発行されるデータ転送指示を受信し、この指示に従って、DMAブロック141に対して、転送元メモリ12からデータのリード指示を発行する。また、DMAコントローラ14において、シーケンサ145の数は、DMAブロック141よりも多く備えられている。マルチコアシステムにおいて、コア111の数に対応してシーケンサ145を設けることができる。ただし、DMAブロック141を多く設けるとコストアップや回路規模が大きくなるため、本ストレージ装置1においては、各DMAブロック141は、複数のシーケンサ145に対して資源共有により利用される。
シーケンサ145は、DMAブロック141に転送データの転送を指示する転送指示部として機能する。
シーケンサ145は、DMAブロック141に対して、メモリ12間の転送路において転送効率がプロトコルとして効率が最大になるデータサイズ(例えば、256Bの整数倍)単位でデータ転送を指示する。
図3に示すように、シーケンサ145は、プロセッサ147およびメモリ146を備える。
シーケンサ145は、リードDMA143からBCCチェック演算途中値およびカウント値を受け取ると、これらの受信したBCCチェック演算途中値およびカウント値を、メモリ146にBCCチェック演算途中値151およびカウント値152として格納する。
DMA接続解除された状態のシーケンサ145が、再度、DMA接続される際に、このシーケンサ145は、新たに接続されるDMAブロック141のリードDMA143に次のデータリード指示を出す際に、メモリ146から読み出したBCCチェック演算途中値151およびカウント値152をデータリード指示に付加して渡す。
また、シーケンサ145は、転送元メモリ12からリードされたデータを転送先メモリ12へ転送するために、DMAブロック141のライトDMA142に対してデータライト指示を発行する。この際、シーケンサ145は、BCCチェックにより整合性が確認できたデータのみを転送させることが望ましい。
メモリ146の記憶領域には、BCCチェック演算途中値151およびカウント値152が格納される。また、メモリ146の記憶領域の一部はバッファ領域153として機能する。
BCCチェック演算途中値151は、DMAブロック141(リードDMA143)から通知されたBCCチェック演算途中値であり、保存制御部1471によって格納される。
カウント値152は、DMAブロック141(リードDMA143)から通知されたカウント値(進捗情報)であり、保存制御部1471によって格納される。
バッファ領域153には、転送元メモリ12からリードされた転送対象のデータが格納される。後述する転送制御部1472が、転送元メモリ12からリードされた転送対象のデータをこのバッファ領域153に格納する。
プロセッサ147は、シーケンサ145全体を制御する。プロセッサ147は、マルチプロセッサであってもよい。プロセッサ147は、例えばCPU,MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、プロセッサ147は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
プロセッサ147は、保存制御部1471および転送制御部1472としての機能を実現する。
保存制御部1471は、メモリ146へのカウント値152およびBCCチェック演算途中値151の保存を制御する。保存制御部1471は、自身が実行されるシーケンサ145(自シーケンサ145といってもよい)がDMAブロック141を用いたデータ転送中(DMA接続中)に、調停回路149によりDMA接続解除される際に、DMAブロック141から送信されるカウント値およびBCCチェック演算途中値をメモリ146に格納する制御を行なう。
保存制御部1471は、DMAブロック141から送信されたカウント値をメモリ146にカウント値152として格納する。また、保存制御部1471は、DMAブロック141から送信されたBCCチェック演算途中値をメモリ146にBCCチェック演算途中値151として格納する。
転送制御部1472は、リードDMA143およびライトDMA142に対して指示を発行することで、転送先メモリ12へのデータ転送を実行させる。例えば、転送制御部1472は、リードDMA143に対して、転送元メモリ12の所定の領域からデータをリードさせるリード指示を発行する。
転送制御部1472は、メモリ146のバッファ領域153に格納された転送データを、転送元メモリ12から転送先メモリ12に、PCIe転送好適サイズで転送する転送制御部として機能する。
転送制御部1472は、リードDMA143によって転送元メモリ12からリードされたデータ(転送データ)を、メモリ146のバッファ領域153に格納する。
また、転送制御部1472は、ライトDMA142に対して、リードDMA143によって転送元メモリ12からリードされたデータ(転送データ)を、転送先メモリ12の所定の領域にライトさせるライト指示を発行する。
転送制御部1472は、PCIeバスにおける転送効率のよいデータサイズ(転送サイズ:例えば、MPSである256Bの整数倍)単位で、メモリ12間のデータ転送を行なわせる。
例えば、転送制御部1472は、メモリ146のバッファ領域153に1KB以上のデータが格納された場合に、1KB単位(処理サイズ単位)でライトDMA142に送出し、ライトDMA142を介してMPS(= 256B)の整数倍単位(転送サイズ単位:例えば1KB)で分割してデータの送出を行なわせる。
また、転送制御部1472は、DMA接続解除されたシーケンサ145が、再度、DMAコントローラ14に接続(DMA接続状態)され、データ転送を再開する際には、メモリ146に格納されているカウント値152およびBCCチェック演算途中値151を読み出して、データリード指示とともにDMAブロック141(リードDMA143)に送信する。
これにより、リードDMA143は、DMA接続解除されることで中断していた、DMA接続解除される前に行なっていたデータリード(データ転送)を、DMA接続解除される前と同じ位置から再開することができる。
転送制御部1472は、調停回路149が、DMAブロック141を占有するシーケンサ145を切替える際に、切替前にシーケンサ145がメモリ146に保存した、整合性チェック部1431によるBCCチェックの中断時に算出されたBCCチェック演算途中値151とカウント値152とを、DMAブロック141への転送再開指示とともに、切替後の転送の再開時に整合性チェック部1431に通知する通知部として機能する。
(B)動作
上述の如く構成された本実施形態の一例としてのストレージ装置1におけるデータ転送方法を、図4を参照しながら、図5および図6を用いて説明する。
図4は実施形態の一例としてのストレージ装置1におけるDMAコントローラ14により転送されるデータの処理方法を説明するための図である。また、図5および図6はそれぞれDMAコントローラ14内において転送されるデータの流れを説明するための図である。
先ず、図5および図6を用いて、一つのシーケンサ145(シーケンサ#0)により行なわれるデータ転送時の処理方法について説明する。
以下に示す例においては、転送元メモリ12から転送先メモリ12へ4ストレージブロック分(520B×4=2080B)のデータを転送する例について示す。
また、以下に示す例においては、シーケンサ145が、2KB単位でリードデータの受信を行ない、1KB単位でライトデータの送信を行なう例について示す。図4中、BCCにはハッチング(斜線)を付して示す。
リードDMA143は、シーケンサ#0からの指示に従い、先ず、転送元メモリ12から、2080B の転送データのうち、256Bの整数倍である2KB(=2048B)のデータをリードする(図5の符号S1)。
図4においては、転送される4ストレージブロック分のデータ(符号P1参照)のうち最初に転送元メモリ12からリードされる2KBの転送データを示す。
図4に示すように、2KBの転送データは、3つの520Bのストレージブロックと488Bのデータブロックとをそなえる。3つのストレージブロックには、それぞれ8BのBCCが付加されている。
転送元メモリ12からリードされたデータは、リードDMA143において整合性チェック部1431に入力される。
整合性チェック部1431は、リードされたデータについて、その先頭から、順次、BCCチェックを行なう。また、整合性チェック部1431は、このBCCチェックを行なうに際して、転送するデータのうちBCCチェックを完了した量を示すカウント値を更新(インクリメント)しながらBCCチェックを行なう。
リードDMA143は、BCCチェックが完了し整合性が確認された520B×3(=1560B)のデータサイズの転送データと(図4の符号P2参照)、端数の488Bのサイズの転送データと(図4の符号P3参照)の合計、2KB(正確には2048B = 520B×3+488B)分のデータを、シーケンサ#0に送信する(図5の符号S2参照)。なお、端数の488Bのサイズの転送データには、整合性チェック部1431によるBCCチェックはまだ完了していない。
また、この際、リードDMA143は、整合性チェック部1431によるBCCチェック演算途中値および進捗管理部1432によるカウント値も、シーケンサ#0に渡す。
シーケンサ#0において、保存制御部1471が、DMAブロック141の整合性チェック部1431により整合性が確認された1560B(= 520B×3)のデータと、整合性が確認されていない488B(= 2048B - 520B×3)のデータとをメモリ146のバッファ領域153に格納する。また、保存制御部1471は、DMAブロック141から送信されたBCCチェック演算途中値をメモリ146にBCCチェック演算途中値151として格納する。また、保存制御部1471は、DMAブロック141から送信されたカウント値をメモリ146にカウント値152として格納する(図5の符号S3参照)。
シーケンサ#0は、ライトDMA142に対して、整合性が確認された520B×3のデータのうち、1KB分のデータを、転送先メモリ12にライトさせるべく、ライトDMA142にデータ転送を行なわせる(図4の符号P4,図5の符号S4参照)。すなわち、ライトDMA142は、PCIeバスにおける転送効率のよいデータサイズ(1KBは正確には1024B = 256B×4)単位でデータのライトを行なう。また、これにより、シーケンサ#0のバッファ領域153には、整合性が確認された536B(= 1560B - 1024B)のデータと、整合性が確認されていない488Bのデータとの合計1024Bのデータが残る。
次に、シーケンサ#0は、DMAブロック141のリードDMA143に対して、リード指示とともに、シーケンサ#0において保存されていたカウント値およびBCCチェック演算途中値を通知する(図6の符号S5参照)。
リードDMA143は、シーケンサ#0からの指示に従い、転送元メモリ12から、2080B(= 520B×4)の転送データのうち、残りの32B(=2080B - 2048B)のデータをリードする(図6の符号S6)。
転送元メモリ12からリードされたデータは、リードDMA143において整合性チェック部1431に入力される。
整合性チェック部1431は、リードされたデータについて、シーケンサ#0から通知されたカウント値とBCCチェック演算途中値とを用いて、BCCチェックを行なう(図6の符号S7参照)。これにより、BCCチェックが完了していないかった端数の488Bのサイズの転送データについても、BCCチェックが完了する。リードDMA143は、シーケンサ#0に、BCCチェックの結果とともに、リードした32Bのデータを転送する(図6の符号S8参照)。
シーケンサ#0は、バッファ領域153に格納されていた1024Bのデータと新たにリードされた32BのデータとをライトDMA142にデータ転送させる(図6の符号S9参照)。この指示に従い、ライトDMA142は、1056Bのデータを転送先メモリ12に転送する(図6の符号S10参照)。なお、この1056Bのデータを、例えば1024Bと32Bとの2回に分けて転送先メモリ12に転送してもよい。
上記例においては、2KBという比較的小さなデータの転送であるので、ライトDMA142からの、PCIeバスにおける転送効率のよいデータサイズ単位でのデータのライトが1回だけ行なわれる(図5の符号S4参照)。しかしながら、より大きなデータ転送を行なう際には、このような転送効率のよいデータサイズ単位でのデータのライトが複数回発生し、これにより、全体のデータ転送効率がより向上する。
次に、上述の如く構成された実施形態の一例としてのストレージ装置1におけるデータ転送時のCPU11,DMAブロック141およびシーケンサ145による処理を、図8〜図10を参照しながら、図7に示すシーケンス図に従って説明する。図8〜図10はそれぞれDMAコントローラ14内において転送されるデータの流れを説明するための図である。
これらの図7〜図10に示す例においても、転送元メモリ12から転送先メモリ12へ4ストレージブロック分(520B×4 = 2080B)のデータを転送する例について示す。そして、これらの図7〜図10に示す例においては、2KBのデータ転送を行なった時点で、調停回路149によるシーケンサ145の切替が行なわれる例について示す。
CPU11は、シーケンサ#0およびシーケンサ#1に対して、それぞれ所定のレジスタにライト(レジスタWT)を行なうことで起動させる(SEQキック:符号B1,B2参照)。
シーケンサ#0およびシーケンサ#1は、それぞれCPU11に対してディスクリプタを要求(符号B3,B5参照)する。CPU11は、これらの要求に応じてシーケンサ#0,#1にそれぞれディスクリプタを応答する(ディスクリプタリード:符号B4,B7参照)。
シーケンサ#0は、ディスクリプタに従い、2KBのデータ転送を開始する。すなわち、シーケンサ#0は、リードDMA143に対して、転送元メモリ12からの2KBのデータリードを指示(リード要求を発行)する(図7の符号B6,図8の符号S11参照)。
リードDMA143は、CPU11に対して、転送元メモリ12からの2KBの転送データのリードを要求する(図7の符号B8参照)。このリード要求に応じて、CPU11を介して、転送元メモリ12からの転送データのリードが行なわれる(図7の符号B9,図8の符号S12参照)。
リードDMA143の整合性チェック部1431は、受信した2KB分の転送データに対してBCCチェックを行なう(図7の符号B10)。上述の如く、この2KBの転送データには、3つの520Bのストレージブロックおよび488BというPCIeバスにおける転送効率の観点からは中途半端なデータサイズの端数のデータブロックが含まれている。このBCCチェックの結果、3つの520Bのストレージブロックの整合性が確認される(図4の符号P2参照)。488Bの端数のデータブロックについては整合性の確認がされない(図4の符号P3参照)。
リードDMA143は、BCCチェックが完了し整合性が確認された520B×3(=1560B)のデータサイズの転送データと、端数の488Bのサイズの転送データとの合計、2KB(正確には2048B = 520B×3+488B)分のデータを、シーケンサ#0に送信する(図7の符号B11,図8の符号S13参照)。
リードDMA143は、BCCチェック演算途中値およびカウント値をシーケンサ#0へ渡す(図7の符号B12,図8の符号S14参照)。なお、本例においては、このカウント値は、488Bを表す値である。また、この時、520Bのデータを受け取った3つのストレージブロックに関しては、整合性チェック部1431によるBCCチェックの結果、整合性のあるデータであるか否かを示す判断結果も合わせてシーケンサ#0に渡される。
シーケンサ#0において、保存制御部1471が、DMAブロック141の整合性チェック部1431により整合性が確認された1560B(= 520B×3)のデータと、整合性が確認されていない488B(= 2048B - 520B×3)のデータとをメモリ146のバッファ領域153に格納する。また、保存制御部1471は、DMAブロック141から送信されたBCCチェック演算途中値をメモリ146にBCCチェック演算途中値151として格納する。また、保存制御部1471は、DMAブロック141から送信されたカウント値をメモリ146にカウント値152として格納する。
シーケンサ#0によるデータ転送量が所定量(2KB)に達したことにより、調停回路149によりシーケンサ145の切替が行なわれる。リードDMA143のリソース解放が行なわれる。リードDMA143のリソースが解放されると、シーケンサ#1によるリードDMA143の使用が開始される。
シーケンサ#1は、リードDMA143に対してリード要求を発行する(図7の符号B13,図9の符号S15参照)。リードDMA143は、CPU11に対して、転送元メモリ12からの転送データのリードを要求する(図7の符号B14参照)。このリード要求に応じて、CPU11を介して、転送元メモリ12からの転送データのリードが行なわれる(図7の符号B15,図9の符号S16参照)。リードされた転送データは、リードDMA143からシーケンサ#1に転送される(図7の符号B16,図9の符号S17参照)。
シーケンサ#0は、ライトDMA142に対して、整合性が確認された520B×3のデータのうち、1KB分のデータを、転送先メモリ12にライトさせるべく、ライトDMA142にデータ転送を行なわせる(図9の符号S18参照)。すなわち、ライトDMA142は、PCIeバスにおける転送効率のよいデータサイズ(1KBは正確には1024B = 256B×4)単位でデータのライトを行なう。また、これにより、シーケンサ#0のバッファ領域153には、整合性が確認された536B(= 1560B - 1024B)のデータと、整合性が確認されていない488Bのデータとの合計1024Bのデータが残る。
残りの1024Bの転送データは、シーケンサ#0でバッファしておく。この残りの1024Bの転送データは次のデータ転送時に転送されるデータとともに転送することで、通信路の利用効率を向上させる。
ライトDMA142は、転送先メモリ12に対して、ライトデータを転送してライトさせる(図7の符号B18,図9の符号S19参照)。
シーケンサ#1において転送データのリードが完了することで、リードDMA143のリソースを解放する(図7の符号B19)。リードDMA143のリソースが解放されると、シーケンサ#0によるリードDMA143の使用が開始される。
シーケンサ#0は、リードDMA143に対して、2080Bのうちの残りの32Bの転送データのリード要求を発行する(図7の符号B20,図10の符号S20参照)。また、シーケンサ#0は、このリード要求ともに、BCCチェック演算途中値とカウント値とをリードDMA143に送信する(図7の符号B21,図10の符号S21参照)。
リードDMA143は、CPU11に対して、転送元メモリ12からの転送データのリードを要求する(図7の符号B22参照)。このリード要求に応じて、CPU11を介して、転送元メモリ12から2080B(= 520B×4)の転送データのうち、残りの32B(=2080B - 2048B)のデータをリードする(図7の符号B23,図10の符号S22参照)。転送元メモリ12からリードされた32Bのデータは、リードDMA143において整合性チェック部1431に入力される。
リードDMA143の整合性チェック部1431は、受信した32Bの転送データに対してBCCチェックを行なう(図7の符号B24)。整合性チェック部1431は、このBCCチェックを行なうに際して、シーケンサ#0から受信したBCC演算途中値およびカウント値を用いて整合性チェック用計算を再開し、残りのBCCを計算する。整合性チェック部1431は、受信した32Bのデータを用いて算出したBCCの整合性をチェックする。これにより、BCCチェックが完了していないかった端数の488Bのサイズの転送データについても、BCCチェックが完了する。
リードDMA143は、32Bの転送データをシーケンサ#0に転送する(図7の符号B25,図10の符号S23参照)。この際、リードDMA143は、シーケンサ#0に対して、残りの4つ目のストレージブロックについてのBCCの整合性のチェック結果も通知する。
シーケンサ#0は、バッファ領域153に格納されていた1024Bのデータと新たにリードされた32BのデータとをライトDMA142にデータ転送させる(図7の符号B26,図10の符号S24参照)。この指示に従い、ライトDMA142は、1056B(= 1024B + 32B)のデータを転送先メモリ12に転送する。なお、この1056Bのデータを、例えば1024Bと32Bとの2回に分けて転送先メモリ12に転送してもよい。
ライトDMA142は、転送先メモリ12に対して、転送データを転送してライトさせ(図7の符号B27,図10の符号S25参照)、処理を終了する。
上記例においては、2KBという比較的小さなデータの転送であるので、シーケンサ#0による、ライトDMA142からのPCIeバスにおける転送効率のよいデータサイズ単位でのデータのライトが1回だけ行なわれる(図7の符号B18参照)。しかしながら、より大きなデータ転送を行なう際には、このような転送効率のよいデータサイズ単位でのデータのライトが複数回発生し、これにより、全体のデータ転送効率がより向上する。
(C)効果
このように、本発明の一実施形態としてのストレージ装置1によれば、転送元メモリ12から転送先メモリ12へのデータ転送を行なうに際して、DMAブロック141が、PCIe転送好適サイズである256B(= MPS)の整数倍のサイズ(転送サイズ)単位で分割してデータの転送を行なう。これにより、転送元メモリ12から転送先メモリ12へのデータ転送路におけるデータの転送効率を向上させることができ、DMAにおけるデータ転送性能を向上させることができる。
シーケンサ145において、転送制御部1472は、リードDMA143に対して、転送元メモリ12から転送データをPCIe転送好適サイズ(例えば、MPSの整数倍)単位で分割して転送(リード)させる。
これにより、転送元メモリ12からDMAブロック141までのデータ転送路におけるデータの転送効率を向上させることができ、DMAにおけるデータ転送性能を向上させることができる。
シーケンサ145において、保存制御部1471が、DMAブロック141の整合性チェック部1431によりBCCチェックが行なわれた整合性確認済みの転送データをメモリ146のバッファ領域153に格納する。そして、転送制御部1472は、ライトDMA142に対して、バッファ領域153に格納された転送データをPCIe転送好適サイズ単位で転送させる。
これにより、DMAブロック141から転送先メモリ12へのデータ転送路におけるデータの転送効率を向上させることができ、DMAにおけるデータ転送性能を向上させることができる。
調停回路149がDMAブロック141に接続するシーケンサ145を切り替えることで、シーケンサ145に比べて数の少ないDMAブロック141を効率的に用いることができる。また、DMAブロック141の数をシーケンサ145に比べて少なくすることで、消費電力や製造コストを削減することができ、また、装置の小型化にも貢献することができる。
ストレージブロックの転送途中で、調停回路149によりDMAブロック141に接続されるシーケンサ145の切り替えが行なわれる場合には、DMAブロック141は、整合性チェック部1431により実行中のBCCチェックを中断する。そして、DMAブロック141は、整合性チェック部1431により算出されたBCCチェック演算途中値を、切替前のシーケンサ145(DMA接続解除されるシーケンサ145)に対して送信する。また、この際、リードDMA143は、BCCチェック演算途中値とともに、このBCCチェック演算途中値に対応するカウント値も、切替前のシーケンサ145に対して送信する。
シーケンサ145において、保存制御部1471は、通知されたカウント値およびBCCチェック演算途中値をメモリ146にカウント値152およびBCCチェック演算途中値151として格納する。
そして、転送制御部1472は、調停回路149によりシーケンサ145の切替が行なわれ、当該シーケンサ145にDMAブロック141が再度接続された場合に、そのDMAブロック141のリードDMA143に次のデータリード指示を出す際に、BCCチェック演算途中値151およびカウント値152をデータリード指示に付加して渡す。
これにより、リードDMA143は、DMA接続解除される前に行なっており、DMA接続解除されることで中断していたデータリード(データ転送)を、DMA接続解除される前と同じ位置から再開することができる。
すなわち、本ストレージ装置1においては、転送元メモリ12から転送先メモリ12へのデータ転送の途中で、任意のタイミングでデータ転送を中止しても、BCC演算途中値およびカウント値を用いることで、データ転送の再開時に、データ転送を再開することができる。
そして、これにより、DMAブロック141によるPCIe転送好適サイズでのデータの転送が行なわれたタイミングで、調停回路149によるシーケンサ145の切替を行なっても、データ転送を最初からやり直す必要がなく、データ転送を効率的に行なうことができる。
ストレージ装置における処理サイズである520Bと、PCIeにとって伝送効率の用いデータサイズである256Bの整数倍とに鑑みると、256Bと520Bとの最小公倍数である65KB単位でのデータ転送を行なうことが考えられる。しかしながら、このような大きなデータサイズ単位でのデータ転送は、1つのデータ転送に対して、DMA資源が占有される事態を招くこととなり非効率的である。例えば、転送データサイズが小さく本来ならすぐに終了するデータ転送にDMA資源が占有され、他のデータ転送が無駄に待たされることになり、システム全体として性能低下につながる。本ストレージ装置1においては、DMAブロック141が、PCIe転送好適サイズである256Bの整数倍(例えば、転送サイズが1KBの場合では4倍)でデータの転送を行なうことで、DMA資源が占有されることなく効率的なデータ転送を実現することができる。
PCIeの規格においては、一度にリードできるデータサイズの上限が4KBに規定されているので、リードに関しては、転送サイズを4KB以下にすることが望ましい。転送サイズを4KB以下にすることで、DMA資源の占有を回避することも期待される。
また、ライトに関しては、CPU等の他のデバイスにおけるデータ転送上の制約を考慮して、適宜、転送サイズを決定することが望ましい。
(D)その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した実施形態においては、ストレージ装置1が2つのCM10を備えているが、これに限定されるものではなく、1つもしくは3つ以上のCM10を備えてもよい。
また、各CM10において、CPU11に備えられるコア111の数や、DMAコントローラ14に備えられるDMAブロック141の数およびシーケンサ145の数も適宜変更して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1データサイズの第1データブロック単位でデータを格納する第1メモリから第2メモリに、第2データサイズ幅の通信路を介して転送データを転送するデータ転送装置において、
前記第1メモリから読み出された前記転送データを格納する格納部と、
前記格納部に格納された前記転送データを、前記第1メモリから前記第2メモリに、前記第2データサイズの整数倍単位で転送する転送制御部と
を備えることを特徴とする、データ転送装置。
(付記2)
前記第1データブロックが整合情報を有し、
転送元である前記第1メモリから転送データをリードし、転送先である前記第2メモリに前記転送データをライトすることで、前記転送データの転送を実行する転送実行部と、
前記転送実行部に前記転送データの転送を指示し、前記転送実行部よりも多く備えられた複数の転送指示部と、
前記複数の転送指示部のうち、前記転送実行部を占有して転送指示を行なう前記転送指示部を切り替える切替制御部と、
前記整合情報を用いて前記転送データの整合性確認を行なう整合性確認部と、
前記切替制御部が、前記転送実行部を占有する前記転送指示部を切替える際に、切替前に前記転送指示部が記憶部に保存した、前記整合性確認部による前記整合性確認の中断時に算出された整合性確認演算途中値と、前記整合性確認の進捗情報とを、前記転送実行部への転送再開指示とともに、切替後の前記転送の再開時に前記整合性確認部に通知する通知部と
をそなえ、
前記整合性確認部が、通知された前記整合性確認演算途中値および進捗情報に基づいて、前記整合性確認を再開する
ことを特徴とする、付記1記載のデータ転送装置。
(付記3)
第1データサイズの第1データブロック単位でデータを格納する第1メモリから第2メモリに、第2データサイズ幅の通信路を介して転送データを転送するデータ転送装置において、
前記第1メモリから読み出された前記転送データを格納部に格納する処理と、
前記格納部に格納された前記転送データを、前記第1メモリから前記第2メモリに、前記第2データサイズの整数倍単位で転送する処理と
を備えることを特徴とする、データ転送方法。
(付記4)
前記第1データブロックが整合情報を有し、
前記データ転送装置が、
転送元である前記第1メモリから転送データをリードし、転送先である前記第2メモリに前記転送データをライトすることで、前記転送データの転送を実行する転送実行部と、
前記転送実行部に前記転送データの転送を指示し、前記転送実行部よりも多く備えられた複数の転送指示部と、
前記複数の転送指示部のうち、前記転送実行部を占有して転送指示を行なう前記転送指示部を切り替える切替制御部と、
前記整合情報を用いて前記転送データの整合性確認を行なう整合性確認部とをそなえ、
前記切替制御部が、前記転送実行部を占有する前記転送指示部を切替える際に、切替前に前記転送指示部が記憶部に保存した、前記整合性確認部による前記整合性確認の中断時に算出された整合性確認演算途中値と、前記整合性確認の進捗情報とを、前記転送実行部への転送再開指示とともに、切替後の前記転送の再開時に前記整合性確認部に通知する処理と、
前記整合性確認部が、通知された前記整合性確認演算途中値および進捗情報に基づいて、前記整合性確認を再開する処理と
を備えることを特徴とする、付記3記載のデータ転送方法。
1 ストレージ装置
10,10−1,10−2 CM
11 CPU
12 メモリ
13 スイッチ
14 DMAコントローラ
141 DMAブロック
142 ライトDMA
143 リードDMA
1431 整合性チェック部
1432 進捗管理部
145 シーケンサ
146 メモリ
147 プロセッサ
1471 保存制御部
1472 転送制御部
149 調停回路
151 BCCチェック演算途中値
152 カウント値
153 バッファ領域
160 PCIeコントローラ

Claims (3)

  1. 第1データサイズの第1データブロック単位でデータを格納する第1メモリから第2メモリに、第2データサイズ幅の通信路を介して転送データを転送するデータ転送装置において、
    前記第1メモリから読み出された前記転送データを格納する格納部と、
    前記格納部に格納された前記転送データを、前記第1メモリから前記第2メモリに、前記第2データサイズの整数倍単位で転送する転送制御部と
    を備えることを特徴とする、データ転送装置。
  2. 前記第1データブロックが整合情報を有し、
    転送元である前記第1メモリから転送データをリードし、転送先である前記第2メモリに前記転送データをライトすることで、前記転送データの転送を実行する転送実行部と、
    前記転送実行部に前記転送データの転送を指示し、前記転送実行部よりも多く備えられた複数の転送指示部と、
    前記複数の転送指示部のうち、前記転送実行部を占有して転送指示を行なう前記転送指示部を切り替える切替制御部と、
    前記整合情報を用いて前記転送データの整合性確認を行なう整合性確認部と、
    前記切替制御部が、前記転送実行部を占有する前記転送指示部を切替える際に、切替前に前記転送指示部が記憶部に保存した、前記整合性確認部による前記整合性確認の中断時に算出された整合性確認演算途中値と、前記整合性確認の進捗情報とを、前記転送実行部への転送再開指示とともに、切替後の前記転送の再開時に前記整合性確認部に通知する通知部と
    をそなえ、
    前記整合性確認部が、通知された前記整合性確認演算途中値および進捗情報に基づいて、前記整合性確認を再開する
    ことを特徴とする、請求項1記載のデータ転送装置。
  3. 第1データサイズの第1データブロック単位でデータを格納する第1メモリから第2メモリに、第2データサイズ幅の通信路を介して転送データを転送するデータ転送装置において、
    前記第1メモリから読み出された前記転送データを格納部に格納する処理と、
    前記格納部に格納された前記転送データを、前記第1メモリから前記第2メモリに、前記第2データサイズの整数倍単位で転送する処理と
    を備えることを特徴とする、データ転送方法。
JP2017222120A 2017-11-17 2017-11-17 データ転送装置およびデータ転送方法 Active JP7006166B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017222120A JP7006166B2 (ja) 2017-11-17 2017-11-17 データ転送装置およびデータ転送方法
US16/175,896 US10733127B2 (en) 2017-11-17 2018-10-31 Data transmission apparatus and data transmission method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017222120A JP7006166B2 (ja) 2017-11-17 2017-11-17 データ転送装置およびデータ転送方法

Publications (2)

Publication Number Publication Date
JP2019095844A true JP2019095844A (ja) 2019-06-20
JP7006166B2 JP7006166B2 (ja) 2022-01-24

Family

ID=66533927

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017222120A Active JP7006166B2 (ja) 2017-11-17 2017-11-17 データ転送装置およびデータ転送方法

Country Status (2)

Country Link
US (1) US10733127B2 (ja)
JP (1) JP7006166B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008199351A (ja) * 2007-02-14 2008-08-28 Seiko Epson Corp 画素データ転送制御装置及び画素データ転送制御方法
JP2014113328A (ja) * 2012-12-10 2014-06-26 Hoya Corp 電子内視鏡システム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005108304A (ja) * 2003-09-29 2005-04-21 Toshiba Corp 半導体記憶装置及びその制御方法
US7366864B2 (en) * 2004-03-08 2008-04-29 Micron Technology, Inc. Memory hub architecture having programmable lane widths
TWI260024B (en) * 2005-01-18 2006-08-11 Vivotek Inc An architecture for reading and writing an external memory
JP4362134B2 (ja) 2007-02-09 2009-11-11 富士通株式会社 データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム
US8972667B2 (en) * 2011-06-28 2015-03-03 International Business Machines Corporation Exchanging data between memory controllers
US8984203B2 (en) * 2012-10-09 2015-03-17 Sandisk Technologies Inc. Memory access control module and associated methods
CN105283856A (zh) * 2013-06-28 2016-01-27 惠普发展公司,有限责任合伙企业 能够在多个数据宽度下通信的存储器组件
CN107430548B (zh) * 2015-03-06 2021-02-05 东芝存储器株式会社 存储装置的控制方法、及存储装置
JP2016181126A (ja) 2015-03-24 2016-10-13 ヤマハ株式会社 Dmaコントローラ
US20170285992A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Memory subsystem with narrow bandwidth repeater channel
US10339072B2 (en) * 2016-04-01 2019-07-02 Intel Corporation Read delivery for memory subsystem with narrow bandwidth repeater channel
US10489315B2 (en) * 2017-09-06 2019-11-26 Arm Limited Dynamic adaptation of direct memory transfer in a data processing system with mismatched data-bus widths

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008199351A (ja) * 2007-02-14 2008-08-28 Seiko Epson Corp 画素データ転送制御装置及び画素データ転送制御方法
JP2014113328A (ja) * 2012-12-10 2014-06-26 Hoya Corp 電子内視鏡システム

Also Published As

Publication number Publication date
US20190155774A1 (en) 2019-05-23
JP7006166B2 (ja) 2022-01-24
US10733127B2 (en) 2020-08-04

Similar Documents

Publication Publication Date Title
US11500810B2 (en) Techniques for command validation for access to a storage device by a remote client
US9986028B2 (en) Techniques to replicate data between storage servers
US10423568B2 (en) Apparatus and method for transferring data and commands in a memory management environment
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
JP5437922B2 (ja) 同時データ操作が可能なdmaエンジン
US8819304B2 (en) Storage system with multicast DMA and unified address space
US10558367B2 (en) Adaptive transaction layer packet for latency balancing
US9244881B2 (en) Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
TWI636366B (zh) 資料冗餘的處理方法及其相關電腦系統
US10740000B2 (en) Adaptive transaction layer packet for latency balancing
US11003606B2 (en) DMA-scatter and gather operations for non-contiguous memory
US10817446B1 (en) Optimized multiport NVMe controller for multipath input/output applications
JP2019095844A (ja) データ転送装置およびデータ転送方法
KR20120134918A (ko) 복수의 프로세서를 포함하는 전자 장치
TWI567638B (zh) 多核心處理器、多核心處理系統、及初始化處理核心之方法
JP6825263B2 (ja) ストレージ制御装置、およびストレージシステム
WO2016170673A1 (ja) 計算機システム、及び、メモリモジュール

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210712

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211117

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20211117

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20211126

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20211130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211220

R150 Certificate of patent or registration of utility model

Ref document number: 7006166

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150