JP2016014972A - 通信制御装置,ストレージ装置及び通信制御プログラム - Google Patents

通信制御装置,ストレージ装置及び通信制御プログラム Download PDF

Info

Publication number
JP2016014972A
JP2016014972A JP2014136032A JP2014136032A JP2016014972A JP 2016014972 A JP2016014972 A JP 2016014972A JP 2014136032 A JP2014136032 A JP 2014136032A JP 2014136032 A JP2014136032 A JP 2014136032A JP 2016014972 A JP2016014972 A JP 2016014972A
Authority
JP
Japan
Prior art keywords
data
unit
read
storage unit
communication control
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.)
Withdrawn
Application number
JP2014136032A
Other languages
English (en)
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 JP2014136032A priority Critical patent/JP2016014972A/ja
Priority to US14/749,046 priority patent/US20160004592A1/en
Publication of JP2016014972A publication Critical patent/JP2016014972A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】記憶装置に書き込むデータの同一性を保証する。
【解決手段】上位装置3から送信されるデータを格納するデータ記憶部140と、データ記憶部140に格納されたデータを読み出した後に、読み出したデータをデータ記憶部140に書き込む読み書き部111と、読み書き部111によってデータ記憶部140から読み出されるデータに関する第1の値を算出する第1算出部131と、第1算出部131によって算出された第1の値を格納する第1記憶部132と、読み書き部111によってデータ記憶部140に書き込まれるデータに関する第2の値を算出する第2算出部133と、第2算出部133によって算出された第2の値を格納する第2記憶部134と、第1記憶部132に格納された第1の値と、第2記憶部134に格納された第2の値とを比較する比較部112と、を備える。
【選択図】図1

Description

本発明は、通信制御装置,ストレージ装置及び通信制御プログラムに関する。
ホスト装置とのインタフェース(IF)となるアダプタカードとして、Channel Adapter(CA)を備えるストレージ装置が知られている。
特開2010−191594号公報 特開2012−88758号公報 特開2011−176894号公報
しかしながら、従来のCA内部においては、パリティ等についての保護がされない箇所があり、バス上でデータ化けが発生する可能性がある。そして、CA内部でデータ化けが発生したことをエラーとして検出できないため、誤ったデータが記憶装置に書き込まれる可能性があるという課題がある。
1つの側面では、本発明は、記憶装置に書き込むデータの同一性を保証することを目的とする。
このため、この通信制御装置は、上位装置と通信可能に接続され、前記上位装置との通信を制御する通信制御装置であって、前記上位装置から送信されるデータを格納するデータ記憶部と、前記データ記憶部に格納されたデータを読み出した後に、当該読み出したデータを前記データ記憶部に書き込む読み書き部と、前記読み書き部によって前記データ記憶部から読み出されるデータに関する第1の値を算出する第1算出部と、前記第1算出部によって算出された前記第1の値を格納する第1記憶部と、前記読み書き部によって前記データ記憶部に書き込まれるデータに関する第2の値を算出する第2算出部と、前記第2算出部によって算出された前記第2の値を格納する第2記憶部と、前記第1記憶部に格納された前記第1の値と、前記第2記憶部に格納された前記第2の値とを比較する比較部と、を備える。
開示の通信制御装置によれば、記憶装置に書き込むデータの同一性を保証することができる。
実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。 実施形態の一例としてのストレージ装置におけるデータ保障制御処理を説明する図である。 実施形態の一例としてのストレージ装置におけるデータ保障制御処理を例示するシーケンス図である。 実施形態の第1変形例としてのストレージ装置におけるデータバッファ多重化処理を説明する図である。 実施形態の第1変形例としてのストレージ装置におけるデータ保障制御処理を例示するシーケンス図である。 実施形態の第1変形例としてのストレージ装置におけるデータ保障制御処理を例示するシーケンス図である。 (a)〜(d)は実施形態の第2変形例としてのストレージ装置におけるデータ保障制御処理を説明する図である。 実施形態の第2変形例としてのストレージ装置におけるデータ保障制御処理を例示するシーケンス図である。 実施形態の関連技術としてのCAにおけるデータフローを説明する図である。 実施形態の関連技術としてのCAにおいて伝送されるデータを説明する図である。
以下、図面を参照して本通信制御装置,ストレージ装置及び通信制御プログラムに係る一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔A〕実施形態の一例
〔A−1〕システム構成
図1は、実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。
ストレージシステム100は、ホスト装置(上位装置)3に対して記憶領域を提供するものであり、ホスト装置3及びストレージ装置10を備える。
ホスト装置3は、例えば、サーバ機能を備えたコンピュータであり、ストレージ装置10に対して可変長(CKD)のリード/ライトのアクセスを行なう。
ストレージ装置10は、後述する記憶装置2を搭載し、ホスト装置3に対して記憶領域を提供する装置である。ストレージ装置10は、CA(通信制御装置,通信制御部)1,記憶装置2及びController Module(CM)4を備える。
記憶装置2は、データを読み書き可能に格納する既知の装置であり、例えば、Hard Disk Drive(HDD)やSolid State Drive(SSD)である。図1に示す例においては、1つの記憶装置2のみを示しているが、ストレージ装置10は複数の記憶装置2を備えても良い。この場合には、ストレージ装置10は、例えば、Redundant Arrays of Inexpensive Disks(RAID)を用いて複数の記憶装置2にデータを分散し、冗長化した状態で保存しても良い。
CM4は、種々の制御を行なう装置であり、ホスト装置3からのストレージアクセス要求(アクセス制御信号:以下、ホストI/Oという)に従って、各種制御を行なう。具体的には、CM4は、CA1からのブロックアクセスに基づき、記憶装置2に対するデータの書き込み及び読み出しを実行する。
CA1は、ホスト装置3と記憶装置2とを通信可能に接続するインタフェースコントローラである。CA1は、ホスト装置3や記憶装置2から送信されたデータを受信して、データバッファ140に一旦格納した後に、このデータをCM4に受け渡し、又、CM4から受け取ったデータをホスト装置3に送信する。すなわち、CA1は、ホスト装置2等の外部装置との間でのデータの入出力(I/O)を制御する。CA1は、ホスト装置3との間の可変長アクセスとCM4との間のブロックアドレスとを変換する機能を備える。なお、図1に示す例においては説明のためにCA1とCM4とを互いに分離して示しているが、例えばCA1をインタフェースカードとしてCM4上に搭載しても良い。
図9は、実施形態の関連技術としてのCAにおけるデータフローを説明する図である。
図9に示すストレージシステム100aは、CA1a,記憶装置2a及びホスト装置3aを備える。なお、ストレージシステム100aのうち、CA1a及び記憶装置2aは、図示しないストレージ装置が備える機能構成である。
ホスト装置3aは、例えば、サーバ機能を備えたコンピュータである。
記憶装置2aは、データを読み書き可能に格納する既知の装置であり、例えば、HDDやSSDである。
CA1aは、ホスト装置3aと記憶装置2aとを通信可能に接続するインタフェースコントローラである。CA1aは、ホスト装置3aやストレージ記憶装置2aから送信されたデータを受信して、データバッファ140aに一旦格納した後に、このデータをストレージ装置が備える図示しないCMに受け渡し、又、CMから受け取ったデータをホスト装置3aに送信する。すなわち、CA1aは、ホスト装置2a等の外部装置との間でのデータの入出力(I/O)を制御する。
CA1aは、Micro-Processing Unit(MPU)110a,Chip Select(CS)メモリ120a,Field-Programmable Gate Array(FPGA)130a,データバッファ140a,スイッチ(SW)150a及びIFチップ160aを備える。
IFチップ160aは、例えば、Fiber Cannel(FC)のプロトコル制御を行ない、1つのIFチップ160a当たり2チャネルのFCインタフェースを提供する。
SW150aは、IFチップ160aとMPU110aとの間及びMPU110aとFPGA130aとの間のデータパスを切り替える。
データバッファ140aは、ホスト装置3aと図示しないCMとの間で送受信されるデータを一時的に格納する記憶装置である。
FPGA130aは、任意に構成を設定できる集積回路であり、図示しないCMとの間でデータの送受信を行なう。FPGA130aは、チェックコードの生成及びチェックを行なう。ホスト装置3aとCA1aとの間のアクセスはCount Key Data(CKD;可変長)アクセスであるのに対して、CA1aと記憶装置2aとの間のアクセスはブロックアクセスである。そこで、CA1aは、可変長アクセスとブロックアクセスとの変換を行なう機能を備える。
CSメモリ120aは、MPU110aに記憶領域を提供する記憶装置である。
MPU110aは、種々の制御や演算を行なう処理装置であり、例えばCSメモリ120aに格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
図10は、実施形態の関連技術としてのCAにおいて伝送されるデータを説明する図である。
以下、図9及び図10を用いて、本実施形態の関連技術としてのストレージシステムにおけるデータフローを説明する。なお、図9及び図10のそれぞれに示す符号C1〜C8は互いに同様の処理を示す。
ホスト装置3aが記憶装置2aにライトI/Oを発行すると、ライトI/Oに係るデータは、データバッファ140aに一時的に格納される(図9及び図10の符号C1参照)。データバッファ140aに格納されるデータには、例えば、 Cyclic Redundancy Check(CRC;巡回冗長検査)コード(SB2−CRC)が付加される。
ここで、データバッファ140aに格納されたデータは、記憶装置2aに書き込まれるべき複数の有効データと、後述するようにMPU110aによって破棄される複数の無効データとを含む(図9及び図10の符号C2参照)。
MPU110aは、データバッファ140aに書き込まれたデータを読み出し、CSメモリ120に書き込む。この際、MPU110aは、読み出したデータから有効データのみを抽出し、無効データを破棄して、CSメモリ120aに書き込む(図9及び図10の符号C3参照)。ここで、データバッファ140aとMPU110aとの間のFPGA130a,SW150a及びバス上を伝送されるデータには、例えば、End-to-end Cyclic Redundancy Check(ECRC)が付加される。一方、データバッファ140aとCSメモリ120aとの間の経路上に備えられるMPU110a内部のバス(不図示)上では、伝送されるデータには、ECRCが付加されない。
CSメモリ120aに書き込まれるデータは、有効データのみを含む(図9及び図10の符号C4参照)。CSメモリ120aに書き込まれたデータには、例えば、Error Checking and Correction(ECC)が付加される。
MPU110aは、CSメモリ120aに書き込んだデータを読み出し、データバッファ140aに一時的に格納する(図9及び図10の符号C5,C6参照)。ここで、MPU110aとデータバッファ140aとの間のSW150a,FPGA130a及びバス上を伝送されるデータには、例えば、ECRCが付加される。一方、データバッファ140aとCSメモリ120aとの間の経路上に備えられるMPU110a内部のバス(不図示)上では、伝送されるデータには、ECRCが付加されない。
そして、データバッファ140aに格納されたデータは、図示しないCMを介して記憶装置2aに書き込まれる(図9及び図10の符号C7,C8参照)。データバッファ140aから送出されるデータには、例えば、Field Check Code(FCC)及びBlock Check Code(BCC)が付加される。
このように、本実施形態の関連技術としてのCA1aにおいては、MPU110a内部のバス上を伝送されるデータにはECRCが付加されないため、パリティ等についての保護がされず、バス上でデータ化けが発生する可能性がある。そして、MPU110a内部でデータ化けが発生したことをエラーとして検出できないため、誤ったデータが記憶装置2aに書き込まれる可能性があるという課題がある。特に、チェーンデータ機能を用いて、データを8個以上に分割してライトI/Oを発行する場合に、MPU110a内部のバス上でデータ化けが発生すると、誤ったデータが記憶装置2aに書き込まれる可能性がある。
そこで、本実施形態の一例においては、図1に示すように、CA1は、例えば、MPU110,複数(図示する例では3つ)のSynchronous Dynamic Random Access Memory(SDRAM)121,FPGA130,複数(図示する例では5つ)のSDRAM141,Peripheral Components Interconnect Expressスイッチ(PCIe−SW;SW)150,FCコントローラ161及び複数(図示する例では2つ)のSmall Form factor Pluggableモジュール(SFPモジュール)162を備える。
SFPモジュール162は、CA1(ストレージ装置10)とホスト装置3とを光ファイバーによって通信可能に接続するインタフェースモジュールである。なお、CA1(ストレージ装置10)とホスト装置3との間の通信回線は光ファイバーに限定されるものではなく、CA1はSFPモジュール162以外の種々のインタフェースモジュールを備えても良い。
FCコントローラ161は、例えば、FCのプロトコル制御を行ない、1つのFCコントローラ161当たり2チャネルのFCインタフェースを提供する。なお、CA1(ストレージ装置10)とホスト装置3との間の通信プロトコルはFCに限定されるものではなく、CA1はFCコントローラ161以外の種々の通信プロトコルに対応するコントローラを備えても良い。
例えば、FCコントローラ161とSFPモジュール162とは、図1及び後述する図2に示すように、IFチップ160として機能する。
SW150は、FCコントローラ161とMPU110との間及びMPU110とFPGA130との間のデータパスを切り替える。本実施形態の一例においては、SW150は、例えば、PCI Expressリンクを介して、FCコントローラ161とMPU110とFPGA130とを互いに通信可能に接続する。
SDRAM141は、半導体メモリであり、例えばDouble-Data-Rate SDRAM(DDR SDRAM)である。SDRAM141は、ホスト装置3とCM4との間で送受信されるデータを一時的に記憶(格納)する。図1に示す5つのSDRAM141は、図1及び後述する図2に示すように、データバッファ140として機能する。なお、図1に示す例においては、5つのSDRAM141を示しているが、これに限定されるものではなく、CA1が備えるSDRAM141の数は種々変更することができる。
FPGA130は、任意に構成を設定できる集積回路であり、CM4との間でデータの送受信を行なう。FPGA130は、チェックコードの生成及びチェックを行なう。ホスト装置3とCA1との間のアクセスはCKD(可変長)アクセスであるのに対して、CA1とCM4と記憶装置2との間のアクセスはブロックアクセスである。そこで、FPGA130は、可変長アクセスとブロックアクセスとの変換を行なう機能を備える。
更に、図1に示すように、FPGA130は、第1算出部131,第1記憶部(送信チェックサムレジスタ)132,第2算出部133,第2記憶部(受信チェックサムレジスタ)134及びアドレス変換部135として機能する。
第1算出部131は、ホスト装置3から送信されたデータのチェックサムを算出する。具体的には、第1算出部131は、ホスト装置3から送信されてデータバッファ140に格納されたデータをMPU110が読み出す場合に、MPU110によって読み出されたデータのチェックサムを送信チェックサムとして算出する。例えば、第1算出部131は、MPU110からデータバッファ140のアドレス0x0000〜0x0FFFへのリード要求を受信した場合に、送信チェックサムを算出する。また、第1算出部131は、算出した送信チェックサムを第1記憶部132に格納する。なお、チェックサムの算出には既知の種々の手法を用いることができるため、その算出手法の説明は省略する。
第1記憶部132は、第1算出部131によって算出された送信チェックサムを記憶(格納)する記憶領域であり、FPGA130内に備えられたレジスタである。
第2算出部133は、記憶装置2に送信するデータのチェックサムを計算する。具体的には、第2算出部133は、MPU110がデータバッファ140にデータを書き込む場合に、MPU110によって書き込まれたデータのチェックサムを受信チェックサムとして算出する。例えば、第2算出部133は、MPU110からデータバッファ140のアドレス0x0000〜0x0FFF及び0x8000〜0x8FFFへのライト要求を受信した場合に、送信チェックサムを算出する。また、第2算出部133は、算出した受信チェックサムを第2記憶部134に格納する。
第2記憶部134は、第2算出部133によって算出された受信チェックサムを記憶(格納)する記憶領域であり、FPGA130内に備えられたレジスタである。
アドレス変換部135は、データバッファ140における物理アドレスを仮想アドレスに対応付ける(変換する)。これにより、MPU110は、仮想アドレスを指定することにより、データバッファ140に対するデータの読み書きを行なうことができる。アドレス変換部135の機能の詳細については、後述する本実施形態の第1変形例において説明する。
なお、本実施形態の一例においては、FPGA130はアドレス変換部135としての機能を備えなくても良い。この場合には、MPU110は、データバッファ140の物理アドレスを指定することにより、データバッファ140に対するデータの読み書きを行なう。
SDRAM121は、半導体メモリであり、例えばDDR SDRAMである。SDRAM121は、MPU110に記憶領域を提供する。図1に示す3つのSDRAM121は、図1及び後述する図2に示すように、CSメモリ120として機能する。
CSメモリ120は、MPU110によってデータバッファ140から読み出されたデータを記憶(格納)する。なお、図1に示す例においては、3つのSDRAM121を示しているが、これに限定されるものではなく、CA1が備えるSDRAM121の数は種々変更することができる。
MPU110は、種々の制御や演算を行なう処理装置であり、CSメモリ120に格納されたOSやプログラムを実行することにより、CM4との通信やCA1の制御等の種々の機能を実現する。すなわち、MPU110は、図1に示すように、読み書き部111,比較部112,エラー出力部113及び抑止部114として機能する。
なお、これらの読み書き部111,比較部112,エラー出力部113及び抑止部114としての機能を実現するためのプログラム(通信制御プログラム)は、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
読み書き部111,比較部112,エラー出力部113及び抑止部114としての機能を実現する際には、内部記憶装置(本実施形態ではCSメモリ120)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではMPU110)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
読み書き部111は、CSメモリ120,第1記憶部132,第2記憶部134及びデータバッファ140に対して、データの読み書きを行なう。
具体的には、読み書き部111は、データバッファ140に格納されたデータを読み出し、CSメモリ120に格納する。
また、読み書き部111は、CSメモリ120に書き込んだデータを読み出し、データバッファ140に格納する。
更に、読み書き部111は、FPGA130の第1算出部131によって算出された送信チェックサムを第1記憶部132から読み出し、FPGA130の第2算出部133によって算出された受信チェックサムを第2記憶部134から読み出す。読み書き部111は、データバッファ140に格納されたデータの読み出しを行なう場合に、FPGA130の第1記憶部132及び第2記憶部134に格納されている値を“0”クリアする。
比較部112は、読み書き部111によって読み出された送信チェックサムと受信チェックサムとを比較する。つまり、比較部112は、第1記憶部132に格納された送信チェックサムと、第2記憶部134に格納された受信チェックサムとが一致するかを判定する。
エラー出力部113は、比較部112による比較の結果が不一致である場合に、エラーを出力する。例えば、エラー出力部113は、比較部112によって送信チェックサムと受信チェックサムとが一致しないと判定された場合に、図示しない表示装置にエラーを出力する。これにより、エラー出力部113は、ホスト装置3からのI/Oによって記憶装置2に書き込まれるデータにビット化け等のエラーが発生したことをユーザに通知する。
抑止部114は、比較部112による比較の結果が不一致である場合に、記憶装置2に対するデータの送信を抑止する。例えば、抑止部114は、比較部112によって送信チェックサムと受信チェックサムとが一致しないと判定された場合に、CM4に対して抑止信号を発行することにより、データバッファ140に格納されたデータが記憶装置2に書き込まれることを抑止する。これにより、抑止部114は、MPU110においてデータ化けが生じたおそれのあるデータが記憶装置2に書き込まれることを阻止する。
〔A−2〕動作
上述の如く構成された実施形態の一例としてのストレージ装置におけるデータ保障制御処理を、図2を参照しながら、図3に示すシーケンス図(ステップS1〜S15)に従って説明する。
図2は、実施形態の一例としてのストレージ装置におけるデータ保障制御処理を説明する図である。
図2に示す例においては、簡単のため、ストレージ装置10の筐体の図示を省略し、ストレージ装置10が備えるCM4の図示も省略している。また、FPGA130が備える機能構成として、送信チェックサムレジスタ132及び受信チェックサムレジスタ134のみを示し、その他の機能構成の図示は簡単のため省略している。
ホスト装置3からのI/Oが発行され、データバッファ140にデータが格納されると、MPU110の読み書き部111は、送信チェックサムレジスタ132及び受信チェックサムレジスタ134に格納されている値を“0”クリア(初期化)する(図2の符号A1及び図3のステップS1参照)。
読み書き部111は、データバッファ140に格納されているデータを読み出す(図2の符号A2参照)。具体的には、読み書き部111は、FPGA130に対して、データバッファ140が格納するデータ(例えばアドレス0x0000〜0x0100)のリード要求を発行する(図3のステップS2参照)。FPGA130は、MPU110からのリード要求をデータバッファ140に転送する(図3のステップS3参照)。データバッファ140は、FPGA130にリード応答を発行する(図3のステップS4参照)。そして、FPGA130は、データバッファ140からのリード応答をMPU110に転送する(図3のステップS5参照)。
MPU110の読み書き部111は、データバッファ140から読み出したデータをCSメモリ120に書き込む(図2の符号A3参照)。言い換えれば、読み書き部111は、CSメモリ120に対してデータのライト要求を発行する(図3のステップS6参照)。
FPGA130の第1算出部131は、MPU110によってデータバッファ140から読み出されたデータのチェックサムを算出し、送信チェックサムとして送信チェックサムレジスタ132に格納する(図2の符号A4及び図3のステップS7参照)。
MPU110の読み書き部111は、CSメモリ120に書き込んだデータを読み出す(図2の符号A5参照)。具体的には、読み書き部111は、CSメモリ120に対してデータのリード要求を発行する(図3のステップS8参照)。そして、CSメモリ120は、MPU110に対してデータのリード応答を発行する(図3のステップS9参照)。
MPU110の読み書き部111は、CSメモリ120から読み出したデータをデータバッファ140に書き込む(図2の符号A6参照)。具体的には、読み書き部111は、FPGA130に対して、データバッファ140(例えばアドレス0x0000〜0x0100)へのデータのライト要求を発行する(図3のステップS10参照)。FPGA130は、MPU110からのライト要求をデータバッファ140に転送する(図3のステップS11参照)。
FPGA130の第2算出部133は、MPU110によってデータバッファ140に書き込まれたデータのチェックサムを算出し、受信チェックサムとして受信チェックサムレジスタ134に格納する(図2の符号A7及び図3のステップS12参照)。
MPU110の読み書き部111は、送信チェックサムレジスタ132に格納された送信チェックサムと、受信チェックサムレジスタ134に格納された受信チェックサムとを読み出す。具体的には、読み書き部111は、FPGA130に対して、送信チェックサム及び受信チェックサムのリード要求を発行する(図3のステップS13参照)。そして、FPGA130は、MPU110に対して、送信チェックサム及び受信チェックサムのリード応答を発行する(図3のステップS14参照)。
MPU110の比較部112は、読み書き部111によって読み出された送信チェックサムと受信チェックサムとを比較する(図2の符号A8及び図3のステップS15参照)。
ここで、比較部112による比較が一致した場合には、データバッファ140に格納されたデータが記憶装置2に送信される。
一方、比較部112による比較の結果が不一致である場合には、MPU110のエラー出力部113は、エラーを出力する。また、比較部112による比較の結果が不一致である場合には、MPU110の抑止部114は、記憶装置2に対するデータの送信を抑止しても良い。
〔A−3〕効果
このように、上述した実施形態の一例における通信制御装置1(ストレージ装置10)によれば、例えば以下の作用効果を奏することができる。
第1算出部131は、読み書き部111によってデータ記憶部140から読み出されるデータに関する第1の値を算出する。また、第2算出部133は、読み書き部111によってデータ記憶部140に書き込まれるデータに関する第2の値を算出する。そして、比較部112は、第1記憶部132に格納された第1の値と、第2記憶部134に格納された第2の値とを比較する。これにより、記憶装置2に書き込むデータの同一性を保証することができる。
エラー出力部113は、比較部112による比較の結果が不一致である場合に、エラーを出力する。これにより、ユーザは、記憶装置2に書き込むデータにビット化け等のエラーが発生したことを知ることができる。
抑止部114は、比較部112による比較の結果が不一致である場合に、記憶装置2に対するデータの送信を抑止する。これにより、ビット化け等のエラーが発生したデータが記憶装置2に書き込まれることにより、記憶装置2内のデータが破損することを防ぐことができる。
また、MPU110の内部バスにおけるデータ保護ための機能を備える必要がないため、回路規模の増大による製造コストの増加を防ぐことができる。
更に、MPU110の内部バスにおけるデータ保護を行なわないため、データ伝送速度等の性能の低下を防ぐことができる。
〔B〕実施形態の第1変形例
〔B−1〕システム構成
図4は、実施形態の第1変形例としてのストレージ装置におけるデータバッファ多重化処理を説明する図である。
図4に示す例においては、FPGA130の備える機能構成として複数組の送信チェックサムレジスタ132及び受信チェックサムレジスタ134のみを示し、他の機能構成の図示は簡単のため省略している。
本実施形態の第1変形例においては、データ保障制御処理を多重化させて行なう。
FPGA130のアドレス変換部135は、データバッファ140における物理アドレスを多重化させた仮想アドレスに対応付ける(変換する)。図4に示す例においては、アドレス変換部135は、データバッファ140の物理アドレスを3重に多重化させた仮想アドレスに対応付ける。
具体的には、アドレス変換部135は、データバッファ140内に3つの記憶領域を定義し、3つの記憶領域のそれぞれに対応するデータバッファ仮想アドレス空間142を設定する。
また、FPGA130は、アドレス変換部135によって多重化された仮想アドレスのそれぞれに対応する複数組の送信チェックサムレジスタ132及び受信チェックサムレジスタ134を備える。図4に示す例においては、FPGA130は、仮想アドレスの多重数と同数の3組の送信チェックサムレジスタ132(送信チェックサムレジスタ#1〜#3)及び受信チェックサムレジスタ134(受信チェックサムレジスタ#1〜#3)を備える。
以下、複数の送信チェックサムレジスタのうち1つを特定する必要があるときには「送信チェックサムレジスタ#1」,「送信チェックサムレジスタ#2」又は「送信チェックサムレジスタ#3」と表記するが、任意の送信チェックサムレジスタを指すときには「送信チェックサムレジスタ132」と表記する。また、以下、複数の受信チェックサムレジスタのうち1つを特定する必要があるときには「受信チェックサムレジスタ#1」,「受信チェックサムレジスタ#2」又は「受信チェックサムレジスタ#3」と表記するが、任意の受信チェックサムレジスタを指すときには「受信チェックサムレジスタ134」と表記する。
MPU110の読み書き部111は、例えばSDRAM121に格納されたメモリマップ(不図示)を参照可能に設定されている。そして、読み書き部111は、格納されたメモリマップを参照することにより、データバッファ140の物理アドレス空間が多重化されたデータバッファ仮想アドレス空間142として認識することができる。図4に示す例においては、読み書き部111は、データバッファ140の仮想アドレス空間を3つのデータバッファ仮想アドレス空間142(データバッファ仮想アドレス空間#1〜#3)として認識する。
以下、複数のデータバッファ仮想アドレス空間のうち1つを特定する必要があるときには「データバッファ仮想アドレス空間#1」,「データバッファ仮想アドレス空間#2」又は「データバッファ仮想アドレス空間#3」と表記するが、任意のデータバッファ仮想アドレス空間を指すときには「データバッファ仮想アドレス空間142」と表記する。
データバッファ仮想アドレス空間#1〜#3のそれぞれには、データバッファ140の物理アドレス空間と同じデータ容量(図示する例では256MB)が定義されている。そのため、MPU110の読み書き部111は、データバッファ140の物理アドレス空間を3倍に拡張されたデータバッファ仮想アドレス空間142として認識する。読み書き部111は、仮想アドレス(データバッファ仮想アドレス空間142)を指定することにより、データバッファ140に対するデータの読み書きを行なう。
図4に示す例においては、データバッファ仮想アドレス空間#1に対して、送信チェックサムレジスタ#1及び受信チェックサムレジスタ#1が対応付けられている。また、データバッファ仮想アドレス空間#2に対して、送信チェックサムレジスタ#2及び受信チェックサムレジスタ#2が対応付けられている。更に、データバッファ仮想アドレス空間#3に対して、送信チェックサムレジスタ#3及び受信チェックサムレジスタ#3が対応付けられている。
以下、本実施形態の第1変形例において、MPU110の読み書き部111がデータバッファ仮想アドレス空間#1〜#3を指定して読み書きを行なうデータを、データ#1〜#3とそれぞれ示す場合がある。また、以下、送信チェックサムレジスタ#1〜#3に格納される送信チェックサムを、送信チェックサム#1〜#3とそれぞれ示す場合がある。更に、以下、本実施形態の第1変形例において、受信チェックサムレジスタ#1〜#3に格納される受信チェックサムを、受信チェックサム#1〜#3とそれぞれ示す場合がある。
FPGA130の第1算出部131及び第2算出部133は、同一のデータについて算出した送信チェックサム及び受信チェックサムを一組の送信チェックサムレジスタ132及び受信チェックサムレジスタ134にそれぞれ格納する。
具体的には、第1算出部131は、MPU110によってデータバッファ仮想アドレス空間#1を指定したデータ#1の読み出しが行なわれると、送信チェックサム#1を算出して送信チェックサムレジスタ#1に格納する。第2算出部133は、MPU110によってデータバッファ仮想アドレス空間#1を指定したデータ#1の書き込みが行なわれると、受信チェックサム#1を算出して受信チェックサムレジスタ#1に格納する。
また、第1算出部131は、MPU110によってデータバッファ仮想アドレス空間#2を指定したデータ#2の読み出しが行なわれると、送信チェックサム#2を算出して送信チェックサムレジスタ#2に格納する。第2算出部133は、MPU110によってデータバッファ仮想アドレス空間#2を指定したデータ#2の書き込みが行なわれると、受信チェックサム#2を算出して受信チェックサムレジスタ#2に格納する。
更に、第1算出部131は、MPU110によってデータバッファ仮想アドレス空間#3を指定したデータ#3の読み出しが行なわれると、送信チェックサム#3を算出して送信チェックサムレジスタ#3に格納する。第2算出部133は、MPU110によってデータバッファ仮想アドレス空間#3を指定したデータ#3の書き込みが行なわれると、受信チェックサム#3を算出して受信チェックサムレジスタ#3に格納する。
MPU110の比較部112は、送信チェックサムレジスタ132及び受信チェックサムレジスタ134の組毎に、送信チェックサムと受信チェックサムとの比較を行なう。
具体的には、比較部112は、送信チェックサムレジスタ#1に格納された送信チェックサム#1と、受信チェックサムレジスタ#1に格納された受信チェックサム#1とを比較する。また、比較部112は、送信チェックサムレジスタ#2に格納された送信チェックサム#2と、受信チェックサムレジスタ#2に格納された受信チェックサム#2とを比較する。更に、比較部112は、送信チェックサムレジスタ#3に格納された送信チェックサム#3と、受信チェックサムレジスタ#3に格納された受信チェックサム#3とを比較する。
〔B−2〕動作
上述の如く構成された実施形態の第1変形例としてのストレージ装置におけるデータ保障制御処理の例を、図5及び図6に示すシーケンス図(ステップS21〜S35,S41〜S55)に従って説明する。具体的には、図5にステップS21〜S32,S41〜S47を示し、図6にステップS33〜S35,S48〜S55を示す。
図5及び図6に示す例においては、MPU110の読み書き部111は、データバッファ仮想アドレス空間#1,#2を指定してデータ#1,#2の読み書きをそれぞれ行なう。また、図5及び図6において実線矢印で示しているステップS21〜S35はデータ#1に関する処理を示し、図5及び図6において破線矢印で示しているステップS41〜S55はデータ#2に関する処理を示す。
ホスト装置3からのI/Oが発行され、データバッファ140にデータ#1が格納されると、MPU110の読み書き部111は、送信チェックサムレジスタ#1及び受信チェックサムレジスタ#1に格納されている値を“0”クリア(初期化)する(図5のステップS21参照)。
読み書き部111は、データバッファ140に格納されているデータ#1を読み出す。具体的には、読み書き部111は、FPGA130に対して、データバッファ仮想アドレス空間#1を指定して、データバッファ140が格納するデータ#1(例えばアドレス0x0000〜0x0100)のリード要求を発行する(図5のステップS22参照)。FPGA130のアドレス変換部135は、MPU110からのリード要求に係る仮想アドレスを物理アドレスに変換し、リード要求をデータバッファ140に転送する(図5のステップS23参照)。データバッファ140は、FPGA130にリード応答を発行する(図3のステップS24参照)。そして、FPGA130のアドレス変換部135は、データバッファ140からのリード応答に係る物理アドレスを仮想アドレスに変換し、リード応答をMPU110に転送する(図5のステップS25参照)。
MPU110の読み書き部111は、CSメモリ120に対してデータ#1のライト要求を発行することにより、読み出したデータ#1をCSメモリ120に書き込む(図5のステップS26参照)。
FPGA130の第1算出部131は、MPU110によってデータバッファ140から読み出されたデータ#1のチェックサムを算出し、送信チェックサム#1として送信チェックサムレジスタ#1に格納する(図5のステップS27参照)。
ホスト装置3からのI/Oが発行され、データバッファ140にデータ#2が格納されると、MPU110の読み書き部111は、送信チェックサムレジスタ#2及び受信チェックサムレジスタ#2に格納されている値を“0”クリア(初期化)する(図5のステップS41参照)。
読み書き部111は、CSメモリ120に書き込んだデータ#1を読み出す。具体的には、読み書き部111は、CSメモリ120に対してデータ#1のリード要求を発行する(図5のステップS28参照)。そして、CSメモリ120は、MPU110に対してデータ#1のリード応答を発行する(図3のステップS29参照)。
読み書き部111は、データバッファ140に格納されているデータ#2を読み出す。具体的には、読み書き部111は、FPGA130に対して、データバッファ仮想アドレス空間#2を指定して、データバッファ140が格納するデータ#2(例えばアドレス0x1100〜0x1200)のリード要求を発行する(図5のステップS42参照)。FPGA130のアドレス変換部135は、MPU110からのリード要求に係る仮想アドレスを物理アドレスに変換し、リード要求をデータバッファ140に転送する(図5のステップS43参照)。データバッファ140は、FPGA130にリード応答を発行する(図5のステップS44参照)。そして、FPGA130のアドレス変換部135は、データバッファ140からのリード応答に係る物理アドレスを仮想アドレスに変換し、リード応答をMPU110に転送する(図5のステップS45参照)。
MPU110の読み書き部111は、CSメモリ120に対してデータ#2のライト要求を発行することにより、読み出したデータ#2をCSメモリ120に書き込む(図5のステップS46参照)。
FPGA130の第1算出部131は、MPU110によってデータバッファ140から読み出されたデータ#2のチェックサムを算出し、送信チェックサム#2として送信チェックサムレジスタ#2に格納する(図5のステップS47参照)。
MPU110の読み書き部111は、CSメモリ120から読み出したデータ#1をデータバッファ140に書き込む。具体的には、読み書き部111は、FPGA130に対して、データバッファ仮想アドレス空間#1を指定して、データバッファ140(例えばアドレス0x0000〜0x0100)へのデータ#1のライト要求を発行する(図5のステップS30参照)。FPGA130のアドレス変換部135は、MPU110からのライト要求に係る仮想アドレスを物理アドレスに変換し、ライト要求をデータバッファ140に転送する(図5のステップS31参照)。
FPGA130の第2算出部133は、MPU110によってデータバッファ140に書き込まれたデータ#1のチェックサムを算出し、受信チェックサム#1として受信チェックサムレジスタ#1に格納する(図5のステップS32参照)。
MPU110の読み書き部111は、CSメモリ120に書き込んだデータ#2を読み出す。具体的には、読み書き部111は、CSメモリ120に対してデータ#2のリード要求を発行する(図6のステップS48参照)。そして、CSメモリ120は、MPU110に対してデータ#2のリード応答を発行する(図6のステップS49参照)。
MPU110の読み書き部111は、送信チェックサムレジスタ#1に格納された送信チェックサム#1と、受信チェックサムレジスタ#1に格納された受信チェックサム#1とを読み出す。具体的には、読み書き部111は、FPGA130に対して、送信チェックサム#1及び受信チェックサム#1のリード要求を発行する(図6のステップS33参照)。そして、FPGA130は、MPU110に対して、送信チェックサム#1及び受信チェックサム#1のリード応答を発行する(図5のステップS34参照)。
MPU110の比較部112は、読み書き部111によって読み出された送信チェックサム#1と受信チェックサム#1とを比較する(図6のステップS35参照)。
ここで、比較部112による比較が一致した場合には、データバッファ140に格納されたデータ#1が記憶装置2に送信される。
一方、比較部112による比較の結果が不一致である場合には、MPU110のエラー出力部113は、エラーを出力する。また、比較部112による比較の結果が不一致である場合には、MPU110の抑止部114は、記憶装置2に対するデータ#1の送信を抑止しても良い。
MPU110の読み書き部111は、CSメモリ120から読み出したデータ#2をデータバッファ140に書き込む。具体的には、読み書き部111は、FPGA130に対して、データバッファ仮想アドレス空間#2を指定して、データバッファ140(例えばアドレス0x1100〜0x1200)へのデータ#2のライト要求を発行する(図6のステップS50参照)。FPGA130のアドレス変換部135は、MPU110からのライト要求に係る仮想アドレスを物理アドレスに変換し、ライト要求をデータバッファ140に転送する(図6のステップS51参照)。
FPGA130の第2算出部133は、MPU110によってデータバッファ140に書き込まれたデータ#2のチェックサムを算出し、受信チェックサム#2として受信チェックサムレジスタ#2に格納する(図6のステップS52参照)。
MPU110の読み書き部111は、送信チェックサムレジスタ#2に格納された送信チェックサム#2と、受信チェックサムレジスタ#2に格納された受信チェックサム#2とを読み出す。具体的には、読み書き部111は、FPGA130に対して、送信チェックサム#2及び受信チェックサム#2のリード要求を発行する(図6のステップS53参照)。そして、FPGA130は、MPU110に対して、送信チェックサム#2及び受信チェックサム#2のリード応答を発行する(図6のステップS54参照)。
MPU110の比較部112は、読み書き部111によって読み出された送信チェックサム#2と受信チェックサム#2とを比較する(図6のステップS55参照)。
ここで、比較部112による比較が一致した場合には、データバッファ140に格納されたデータ#2が記憶装置2に送信される。
一方、比較部112による比較の結果が不一致である場合には、MPU110のエラー出力部113は、エラーを出力する。また、比較部112による比較の結果が不一致である場合には、MPU110の抑止部114は、記憶装置2に対するデータ#2の送信を抑止しても良い。
〔B−3〕効果
このように、実施形態の第1変形例における通信制御装置1(ストレージ装置10)によれば、実施形態の一例において奏することができる上述した効果とともに、例えば以下の効果を奏することができる。
アドレス変換部135は、データ記憶部140における物理アドレスを多重化させた仮想アドレスに対応付ける。そして、読み書き部111は、仮想アドレスを指定することにより、データ記憶部140に対するデータの読み書きを行なう。これにより、上位装置3からのI/Oが多重化されて発行された場合においても、複数のデータの伝送処理を並行して多重化させて行なうことができる。
比較部112は、多重化させた仮想アドレスのそれぞれに対応する複数の第1及び第2記憶部132,134の組毎に比較を行なう。これにより、上位装置3からのI/Oが多重化されて発行された場合においても、複数のデータについてのデータ保障制御処理を並行して多重化させて行なうことができる。
〔C〕実施形態の第2変形例
〔C−1〕システム構成
図9及び図10を用いて示したように、本実施形態の関連技術としてのストレージシステムにおいて伝送されるデータにおいては、記憶装置2aに書き込まれるべき有効データと、MPU110aによって破棄される無効データとを含む場合がある。この場合には、MPU110aは、データバッファ140aから読み出したデータから有効データのみを抽出して無効データを破棄した後に、有効データをデータバッファ140aに書き込む。
上述した実施形態の一例において、ホスト装置3から送信されるデータに無効データが含まれる場合には、無効データが破棄される前にFPGA130の第1算出部131によって算出される送信チェックサムと、無効データが破棄された後にFPGA130の第2算出部133によって算出される受信チェックサムとは、異なる値となる。これにより、MPU110の比較部112は、MPU110内部のバス上でビット化け等のエラーが発生していないにも関わらず、送信チェックサムと受信チェックサムとの不一致を検出してしまう。
そこで、本実施形態の第2変形例においては、MPU110の読み書き部111は、ホスト装置3から送信されたデータに無効データが含まれている場合であっても、無効データをダミーデータとしてFPGA130に書き込む。例えば、図4に示したデータバッファ仮想アドレス空間#1〜#3に加えて、ダミーライト用のデータバッファ仮想アドレス空間を定義する。そして、読み書き部111は、ダミーライト用のデータバッファ仮想アドレス空間を指定することにより、FPGA130が備える図示しない受信バッファにダミーデータを書き込む(以下、単に「FPGA130にダミーデータを書き込む」という場合がある。)。例えば、データバッファ仮想アドレス空間142に対応する物理アドレスを0x0000〜0x0FFFと定義し、ダミーライト用のデータバッファ仮想アドレス空間に対応する物理アドレスを0x8000〜0x8FFFと定義する。
また、ダミーライト用のデータバッファ仮想アドレス空間を指定して書き込まれたダミーデータは、データバッファ140に書き込まれないように設定する。例えば、FPGA130のアドレス変換部135は、MPU110からデータバッファ140のアドレス0x0000〜0x0FFFへのライト要求を受信した場合には、ライト要求に係るデータをデータバッファ140に書き込む。一方、アドレス変換部135は、MPU110からデータバッファ140のアドレス0x8000〜0x8FFFへのライト要求を受信した場合には、ライト要求に係るデータをデータバッファ140に書き込まない。
FPGA130の第2算出部113は、MPU110によってデータバッファ140に書き込まれたデータ(有効データ)と、MPU110によってFPGA130に書き込まれたダミーデータ(無効データ)とに基づき、受信チェックサムを算出する。
〔C−2〕動作
上述の如く構成された実施形態の第2変形例としてのストレージ装置におけるデータ保障制御処理の例を、図7(a)〜(d)を参照しながら、図8に示すシーケンス図(ステップS1〜S15,S61〜S64)に従って説明する。図8のステップS1〜S15に示す処理は図3のステップS1〜S15に示した処理とそれぞれ同様であるため、その詳細な説明は省略する場合がある。
図7(a)〜(d)に示す例においては、FPGA130が備える機能構成として、送信チェックサムレジスタ132及び受信チェックサムレジスタ134のみを示し、その他の機能構成の図示は簡単のため省略している。
図7(a)〜(d)及び図8に示す例において、ホスト装置3からの一連のI/Oによって送信されたデータ#1〜#3のうち、データ#1,#3は有効データであり、データ#2は無効データであるものとする。
ホスト装置3からのI/Oが発行され、データバッファ140にデータ#1〜#3が格納されると、MPU110の読み書き部111は、送信チェックサムレジスタ132及び受信チェックサムレジスタ134に格納されている値を“0”クリア(初期化)する(図8のステップS1参照)。
読み書き部111は、データバッファ140が格納するデータ#1〜#3(例えばアドレス0x0000〜0x0100)のリード要求を発行することによって、データバッファ140に格納されているデータ#1〜#3を読み出す(図7(a)の符号B1及び図8のステップS2〜S5参照)。
読み書き部111は、CSメモリ120にライト要求を発行することによって、データ#1〜#3をCSメモリ120に書き込む(図8のステップS6参照)。
FPGA130の第1算出部131は、MPU110によってデータバッファ140から読み出されたデータ#1〜#3のチェックサムを算出し、送信チェックサムとして送信チェックサムレジスタ132に格納する(図7(a)の符号B2及び図8のステップS7参照)。
MPU110の読み書き部111は、CSメモリ120にリード要求を発行することによって、CSメモリ120に書き込んだデータ#1〜#3の中から有効データ#1,#3を抽出して読み出す(図8のステップS8,S9参照)。
読み書き部111は、データバッファ140(例えばアドレス0x0000〜0x0050)へのデータ#1,#3のライト要求を発行することによって、CSメモリ120から読み出したデータ#1,#3をデータバッファ140に書き込む(図7(b)の符号B3及び図8のステップS10,S11参照)。
FPGA130の第2算出部133は、MPU110によってデータバッファ140に書き込まれたデータ#1,#3のチェックサムを算出し、受信チェックサムとして受信チェックサムレジスタ134に格納する(図7(b)の符号B4及び図8のステップS12参照)。
MPU110の読み書き部111は、CSメモリ120に書き込んだデータ#1〜#3の中から無効データ#2を抽出して読み出す。具体的には、読み書き部111は、CSメモリ120にデータ#2のリード要求を発行する(図8のステップS61参照)。そして、CSメモリ120は、MPU110に対してデータ#2のリード応答を発行する(図8のステップS62参照)。
MPU110の読み書き部111は、FPGA130に対してダミーライト用のデータバッファ仮想アドレス空間(例えば物理アドレス0x8000〜0x8050に対応する仮想アドレス)を指定してライト要求を発行する。これにより、読み書き部111は、CSメモリ120から読み出したデータ#2をダミーデータとしてFPGA130に書き込む(図7(c)の符号B5及び図8のステップS63参照)。
FPGA130の第2算出部133は、MPU110によってデータバッファ140に書き込まれたデータ(有効データ)#1,#3と、MPU110によってFPGA130に書き込まれたダミーデータ(無効データ)#2とに基づき、受信チェックサムを算出する。そして、第2算出部133は、算出した受信チェックサムを受信チェックサムレジスタ134に格納する(図7(c)の符号B6及び図8のステップS64参照)。
MPU110によって書き込まれたデータにはダミーデータであることを示すオフセット(例えば0x8000)が付加されているため、FPGA130のアドレス変換部135は、ダミーデータをデータバッファ140に転送せずに破棄する。
MPU110の読み書き部111は、FPGA130に対して送信チェックサム及び受信チェックサムのリード要求を発行する。これにより、読み書き部111は、送信チェックサムレジスタ132に格納された送信チェックサムと、受信チェックサムレジスタ134に格納された受信チェックサムとを読み出す(図7(d)の符号B7及び図8のステップS13,S14参照)。
MPU110の比較部112は、読み書き部111によって読み出された送信チェックサムと受信チェックサムとを比較する(図8のステップS15参照)。
ここで、比較部112による比較が一致した場合には、データバッファ140に格納されたデータ#1,#3が記憶装置2に送信される。
一方、比較部112による比較の結果が不一致である場合には、MPU110のエラー出力部113は、エラーを出力する。また、比較部112による比較の結果が不一致である場合には、MPU110の抑止部114は、記憶装置2に対するデータ#1,#3の送信を抑止しても良い。
〔C−3〕効果
このように、実施形態の第2変形例における通信制御装置1(ストレージ装置10)によれば、実施形態の一例において奏することができる上述した効果とともに、例えば以下の効果を奏することができる。
第2算出部133は、上位装置3から送信されたデータに記憶装置2に送信する必要がないデータが含まれている場合であっても、読み書き部111によってデータ記憶部140に書き込まれたデータと、記憶装置2に送信する必要がないデータとに基づき、第2の値を算出する。これにより、MPU110内部のバス上でビット化け等のエラーが発生していないにも関わらず、比較部112が送信チェックサムと受信チェックサムとの不一致を検出してしまうことを防ぐことができる。
読み書き部111は、仮想アドレスのうち特定のアドレスを指定することにより、記憶装置2に送信する必要がないデータを第2算出部133に送信する。これにより、不要なデータが記憶装置2に送信されることを防ぐことができる。
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
上述した実施形態の一例及び各変形例においては、第1算出部131及び第2算出部133がチェックサムを算出し、比較部112は算出されたチェックサムを比較することとしたが、これに限定されるものではない。第1算出部131及び第2算出部がチェックサム以外の種々の誤り検出符号を算出し、比較部112は算出された誤り検出符号を比較しても良い。
また、上述した実施形態の一例及び各変形例においては、MPU110が比較部112,エラー出力部113及び抑止部114としての機能を備えることとしたが、これに限定されるものではない。例えば、FPGA130が比較部112,エラー出力部113及び抑止部114としての機能を備えても良い。
更に、上述した実施形態の第2変形例においては、読み書き部111はダミーライト用のデータバッファ仮想アドレス空間を指定することによりダミーデータをFPGA130に書き込むこととしたが、これに限定されるものではない。例えば、読み書き部111は、図4に示したデータバッファ仮想アドレス空間142を指定することにより、ダミーデータをFPGA130に書き込んでも良い。この場合には、読み書き部111は、ダミーデータの書き込み前にダミーデータを書き込むことを示す信号をFPGA130に送信する。また、読み書き部111は、ダミーデータであることを示すフラグをダミーデータに付加してFPGA130に書き込んでも良い。これにより、FPGA130は、書き込まれたデータがダミーデータであることを認識することができる。
〔E〕付記
(付記1)
上位装置と通信可能に接続され、前記上位装置との通信を制御する通信制御装置であって、
前記上位装置から送信されるデータを格納するデータ記憶部と、
前記データ記憶部に格納されたデータを読み出した後に、当該読み出したデータを前記データ記憶部に書き込む読み書き部と、
前記読み書き部によって前記データ記憶部から読み出されるデータに関する第1の値を算出する第1算出部と、
前記第1算出部によって算出された前記第1の値を格納する第1記憶部と、
前記読み書き部によって前記データ記憶部に書き込まれるデータに関する第2の値を算出する第2算出部と、
前記第2算出部によって算出された前記第2の値を格納する第2記憶部と、
前記第1記憶部に格納された前記第1の値と、前記第2記憶部に格納された前記第2の値とを比較する比較部と、
を備えることを特徴とする、通信制御装置。
(付記2)
前記比較部による比較の結果が不一致である場合に、エラーを出力するエラー出力部
を備えることを特徴とする、付記1に記載の通信制御装置。
(付記3)
当該通信制御装置は、記憶装置と通信可能に接続され、
前記比較部による比較の結果が不一致である場合に、前記記憶装置に対するデータの送信を抑止する抑止部
を備えることを特徴とする、付記1又は2に記載の通信制御装置。
(付記4)
前記データ記憶部における物理アドレスを多重化させた仮想アドレスに対応付けるアドレス変換部を備え、
前記読み書き部は、前記仮想アドレスを指定することにより、前記データ記憶部に対するデータの読み書きを行なう、
ことを特徴とする、付記3に記載の通信制御装置。
(付記5)
前記多重化させた仮想アドレスのそれぞれに対応する複数組の前記第1及び第2記憶部を備え、
前記比較部は、前記第1及び第2記憶部の組毎に前記比較を行なう、
ことを特徴とする、付記4に記載の通信制御装置。
(付記6)
前記第2算出部は、前記上位装置から送信されたデータに前記記憶装置に送信する必要がないデータが含まれている場合であっても、前記読み書き部によって前記データ記憶部に書き込まれたデータと、前記記憶装置に送信する必要がないデータとに基づき、前記第2の値を算出する、
ことを特徴とする、付記4又は5に記載の通信制御装置。
(付記7)
前記読み書き部は、前記仮想アドレスのうち特定のアドレスを指定することにより、前記記憶装置に送信する必要がないデータを前記第2算出部に送信する、
ことを特徴とする、付記6に記載の通信制御装置。
(付記8)
前記第1及び第2の値は、チェックサムである、
ことを特徴とする、付記1〜7のいずれか1項に記載の通信制御装置。
(付記9)
上位装置と通信可能に接続されるストレージ装置であって、
前記上位装置との通信を制御する通信制御部を備え、
前記通信制御部は、
前記上位装置から送信されたデータを格納するデータ記憶部と、
前記データ記憶部に格納されたデータを読み出した後に、当該読み出したデータを前記データ記憶部に書き込む読み書き部と、
前記読み書き部によって前記データ記憶部から読み出されるデータに関する第1の値を算出する第1算出部と、
前記第1算出部によって算出された前記第1の値を格納する第1記憶部と、
前記読み書き部によって前記データ記憶部に書き込まれるデータに関する第2の値を算出する第2算出部と、
前記第2算出部によって算出された前記第2の値を格納する第2記憶部と、
前記第1記憶部に格納された前記第1の値と、前記第2記憶部に格納された前記第2の値とを比較する比較部と、
を備えることを特徴とする、ストレージ装置。
(付記10)
前記比較部による比較の結果が不一致である場合に、エラーを出力するエラー出力部
を備えることを特徴とする、付記9に記載のストレージ装置。
(付記11)
前記比較部による比較の結果が不一致である場合に、当該ストレージ装置が有する記憶装置に対するデータの送信を抑止する抑止部
を備えることを特徴とする、付記9又は10に記載のストレージ装置。
(付記12)
前記データ記憶部における物理アドレスを多重化させた仮想アドレスに対応付けるアドレス変換部を備え、
前記読み書き部は、前記仮想アドレスを指定することにより、前記データ記憶部に対するデータの読み書きを行なう、
ことを特徴とする、付記11に記載のストレージ装置。
(付記13)
前記多重化させた仮想アドレスのそれぞれに対応する複数組の前記第1及び第2記憶部を備え、
前記比較部は、前記第1及び第2記憶部の組毎に前記比較を行なう、
ことを特徴とする、付記12に記載のストレージ装置。
(付記14)
前記第2算出部は、前記上位装置から送信されたデータに前記記憶装置に送信する必要がないデータが含まれている場合であっても、前記読み書き部によって前記データ記憶部に書き込まれたデータと、前記記憶装置に送信する必要がないデータとに基づき、前記第2の値を算出する、
ことを特徴とする、付記12又は13に記載のストレージ装置。
(付記15)
前記読み書き部は、前記仮想アドレスのうち特定のアドレスを指定することにより、前記記憶装置に送信する必要がないデータを前記第2算出部に送信する、
ことを特徴とする、付記14に記載のストレージ装置。
(付記16)
前記第1及び第2の値は、チェックサムである、
ことを特徴とする、付記9〜15のいずれか1項に記載のストレージ装置。
(付記17)
上位装置と通信可能に接続され、前記上位装置との通信を制御する通信制御装置に備えられるコンピュータに、
前記上位装置から送信されるデータを格納するデータ記憶部からデータを読み出した後に、当該読み出したデータを前記データ記憶部に書き込み、
前記データ記憶部から読み出されるデータに関する第1の値を第1記憶部から読み出し、
前記データ記憶部に書き込まれるデータに関する第2の値を第2記憶部から読み出し、
前記第1記憶部から読み出した前記第1の値と前記第2記憶部から読み出した前記第2の値とを比較する、
処理を実行させることを特徴とする、通信制御プログラム。
(付記18)
前記比較の結果が不一致である場合に、エラーを出力する、
処理を前記コンピュータに実行させることを特徴とする、付記17に記載の通信制御プログラム。
(付記19)
前記通信制御装置は、記憶装置と通信可能に接続され、
前記比較の結果が不一致である場合に、前記記憶装置に対するデータの送信を抑止する、
処理を前記コンピュータに実行させることを特徴とする、付記17又は18に記載の通信制御プログラム。
(付記20)
前記データ記憶部における物理アドレスを多重化させた仮想アドレスを指定することにより、前記データ記憶部に対するデータの読み書きを行なう、
処理を前記コンピュータに実行させることを特徴とする、付記17〜19のいずれか1項に記載の通信制御プログラム。
(付記21)
前記多重化させた仮想アドレスのそれぞれに対応する複数の前記第1及び第2記憶部の組毎に、前記比較を行なう、
処理を前記コンピュータに実行させることを特徴とする、付記20に記載の通信制御プログラム。
(付記22)
前記上位装置から送信されたデータに前記記憶装置に送信する必要がないデータが含まれている場合であっても、前記データ記憶部に書き込まれたデータと、前記記憶装置に送信する必要がないデータとに基づき、算出された前記第2の値を前記第2記憶部から読み出す、
処理を前記コンピュータに実行させることを特徴とする、付記19に記載の通信制御プログラム。
(付記23)
前記第1及び第2の値は、チェックサムである、
ことを特徴とする、付記17〜22のいずれか1項に記載の通信制御プログラム。
100 ストレージシステム
10 ストレージ装置
1 CA(通信制御装置,通信制御部)
110 MPU(コンピュータ)
111 読み書き部
112 比較部
113 エラー出力部
114 抑止部
120 CSメモリ
121 SDRAM
130 FPGA
131 第1算出部
132 送信チェックサムレジスタ(第1記憶部)
133 第2算出部
134 受信チェックサムレジスタ(第2記憶部)
135 アドレス変換部
140 データバッファ(データ記憶部)
141 SDRAM
142 データバッファ仮想アドレス空間
150 SW(PCIe−SW)
160 IFチップ
161 FCコントローラ
162 SFPモジュール
2 記憶装置
3 ホスト装置(上位装置)
4 CM
100a ストレージシステム
1a CA
110a MPU
120a CSメモリ
130a FPGA
140a データバッファ
150a SW
160a IFチップ
2a 記憶装置
3a ホスト装置

Claims (10)

  1. 上位装置と通信可能に接続され、前記上位装置との通信を制御する通信制御装置であって、
    前記上位装置から送信されるデータを格納するデータ記憶部と、
    前記データ記憶部に格納されたデータを読み出した後に、当該読み出したデータを前記データ記憶部に書き込む読み書き部と、
    前記読み書き部によって前記データ記憶部から読み出されるデータに関する第1の値を算出する第1算出部と、
    前記第1算出部によって算出された前記第1の値を格納する第1記憶部と、
    前記読み書き部によって前記データ記憶部に書き込まれるデータに関する第2の値を算出する第2算出部と、
    前記第2算出部によって算出された前記第2の値を格納する第2記憶部と、
    前記第1記憶部に格納された前記第1の値と、前記第2記憶部に格納された前記第2の値とを比較する比較部と、
    を備えることを特徴とする、通信制御装置。
  2. 前記比較部による比較の結果が不一致である場合に、エラーを出力するエラー出力部
    を備えることを特徴とする、請求項1に記載の通信制御装置。
  3. 当該通信制御装置は、記憶装置と通信可能に接続され、
    前記比較部による比較の結果が不一致である場合に、前記記憶装置に対するデータの送信を抑止する抑止部
    を備えることを特徴とする、請求項1又は2に記載の通信制御装置。
  4. 前記データ記憶部における物理アドレスを多重化させた仮想アドレスに対応付けるアドレス変換部を備え、
    前記読み書き部は、前記仮想アドレスを指定することにより、前記データ記憶部に対するデータの読み書きを行なう、
    ことを特徴とする、請求項3に記載の通信制御装置。
  5. 前記多重化させた仮想アドレスのそれぞれに対応する複数組の前記第1及び第2記憶部を備え、
    前記比較部は、前記第1及び第2記憶部の組毎に前記比較を行なう、
    ことを特徴とする、請求項4に記載の通信制御装置。
  6. 前記第2算出部は、前記上位装置から送信されたデータに前記記憶装置に送信する必要がないデータが含まれている場合であっても、前記読み書き部によって前記データ記憶部に書き込まれたデータと、前記記憶装置に送信する必要がないデータとに基づき、前記第2の値を算出する、
    ことを特徴とする、請求項4又は5に記載の通信制御装置。
  7. 前記読み書き部は、前記仮想アドレスのうち特定のアドレスを指定することにより、前記記憶装置に送信する必要がないデータを前記第2算出部に送信する、
    ことを特徴とする、請求項6に記載の通信制御装置。
  8. 前記第1及び第2の値は、チェックサムである、
    ことを特徴とする、請求項1〜7いずれか1項に記載の通信制御装置。
  9. 上位装置と通信可能に接続されるストレージ装置であって、
    前記上位装置との通信を制御する通信制御部を備え、
    前記通信制御部は、
    前記上位装置から送信されたデータを格納するデータ記憶部と、
    前記データ記憶部に格納されたデータを読み出した後に、当該読み出したデータを前記データ記憶部に書き込む読み書き部と、
    前記読み書き部によって前記データ記憶部から読み出されるデータに関する第1の値を算出する第1算出部と、
    前記第1算出部によって算出された前記第1の値を格納する第1記憶部と、
    前記読み書き部によって前記データ記憶部に書き込まれるデータに関する第2の値を算出する第2算出部と、
    前記第2算出部によって算出された前記第2の値を格納する第2記憶部と、
    前記第1記憶部に格納された前記第1の値と、前記第2記憶部に格納された前記第2の値とを比較する比較部と、
    を備えることを特徴とする、ストレージ装置。
  10. 上位装置と通信可能に接続され、前記上位装置との通信を制御する通信制御装置に備えられるコンピュータに、
    前記上位装置から送信されるデータを格納するデータ記憶部からデータを読み出した後に、当該読み出したデータを前記データ記憶部に書き込み、
    前記データ記憶部から読み出されるデータに関する第1の値を第1記憶部から読み出し、
    前記データ記憶部に書き込まれるデータに関する第2の値を第2記憶部から読み出し、
    前記第1記憶部から読み出した前記第1の値と前記第2記憶部から読み出した前記第2の値とを比較する、
    処理を実行させることを特徴とする、通信制御プログラム。
JP2014136032A 2014-07-01 2014-07-01 通信制御装置,ストレージ装置及び通信制御プログラム Withdrawn JP2016014972A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014136032A JP2016014972A (ja) 2014-07-01 2014-07-01 通信制御装置,ストレージ装置及び通信制御プログラム
US14/749,046 US20160004592A1 (en) 2014-07-01 2015-06-24 Method for detecting error of data, storage device, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014136032A JP2016014972A (ja) 2014-07-01 2014-07-01 通信制御装置,ストレージ装置及び通信制御プログラム

Publications (1)

Publication Number Publication Date
JP2016014972A true JP2016014972A (ja) 2016-01-28

Family

ID=55017077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014136032A Withdrawn JP2016014972A (ja) 2014-07-01 2014-07-01 通信制御装置,ストレージ装置及び通信制御プログラム

Country Status (2)

Country Link
US (1) US20160004592A1 (ja)
JP (1) JP2016014972A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6507470B2 (ja) * 2014-02-04 2019-05-08 富士通株式会社 情報処理装置、情報処理システム及び障害検出方法
TWI635298B (zh) * 2016-06-09 2018-09-11 孕龍科技股份有限公司 邏輯分析儀及其資料擷取與效能測試之方法
GB201710839D0 (en) * 2017-07-05 2017-08-16 Irdeto Bv Data protection
CN117294316B (zh) * 2023-11-24 2024-03-26 北京邮电大学 一种基于bch码的耦合结构拉链码编译码方法及***

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5912906A (en) * 1997-06-23 1999-06-15 Sun Microsystems, Inc. Method and apparatus for recovering from correctable ECC errors
US7191379B2 (en) * 2003-09-10 2007-03-13 Hewlett-Packard Development Company, L.P. Magnetic memory with error correction coding
US7840878B1 (en) * 2006-04-11 2010-11-23 Marvell International Ltd. Systems and methods for data-path protection
US8566508B2 (en) * 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device

Also Published As

Publication number Publication date
US20160004592A1 (en) 2016-01-07

Similar Documents

Publication Publication Date Title
KR102102728B1 (ko) 스케일러블 스토리지 보호
US9632863B2 (en) Track error-correcting code extension
KR101861247B1 (ko) 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US7562264B2 (en) Fault tolerant soft error detection for storage subsystems
KR100640037B1 (ko) 파일 제어 시스템 및 파일 제어 장치
US20090204758A1 (en) Systems and methods for asymmetric raid devices
US20190171520A1 (en) Internally-generated data storage in spare memory locations
JP6135114B2 (ja) ストレージ装置、エラー処理方法及びエラー処理プログラム
US10248497B2 (en) Error detection and correction utilizing locally stored parity information
JP2013539086A (ja) バス障害を検出するための方法、システム及びコンピュータ・プログラム
JP2016014972A (ja) 通信制御装置,ストレージ装置及び通信制御プログラム
US20100293418A1 (en) Memory device, data transfer control device, data transfer method, and computer program product
US7809899B2 (en) System for integrity protection for standard 2n-bit multiple sized memory devices
CN112115076B (zh) 使用者数据的加解密装置及方法
US20140281681A1 (en) Error correction for memory systems
US7949838B1 (en) System and method for managing a memory storage device
KR20140071640A (ko) 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
US20150143024A1 (en) Redundant array of independent modules
JP6164003B2 (ja) メモリ制御装置、情報処理装置、及び情報処理装置の制御方法
JP5360666B2 (ja) 複数のディスクアレイのi/o動作を実行する方法及びシステム
JP2021521524A (ja) 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック
JP5772192B2 (ja) 半導体装置、情報処理装置およびエラー検出方法
KR20230030795A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 장치
US11650737B2 (en) Disk offset-distance awareness data placement for storage system data protection
JP6206138B2 (ja) ストレージ制御装置およびストレージ制御装置の制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20171127