JP6205931B2 - 書き込み制御プログラム及び方法 - Google Patents

書き込み制御プログラム及び方法 Download PDF

Info

Publication number
JP6205931B2
JP6205931B2 JP2013149006A JP2013149006A JP6205931B2 JP 6205931 B2 JP6205931 B2 JP 6205931B2 JP 2013149006 A JP2013149006 A JP 2013149006A JP 2013149006 A JP2013149006 A JP 2013149006A JP 6205931 B2 JP6205931 B2 JP 6205931B2
Authority
JP
Japan
Prior art keywords
memory area
data
area
write data
writing
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.)
Expired - Fee Related
Application number
JP2013149006A
Other languages
English (en)
Other versions
JP2015022450A (ja
Inventor
崇 奥野
崇 奥野
山中 英樹
英樹 山中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013149006A priority Critical patent/JP6205931B2/ja
Publication of JP2015022450A publication Critical patent/JP2015022450A/ja
Application granted granted Critical
Publication of JP6205931B2 publication Critical patent/JP6205931B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、メモリに対するデータの書き込みを制御する技術に関する。
ネットワークを介したデータ伝送が行われた場合等には、データを受信した装置においてCRC(Cyclic Redundancy Check)等による誤り検出が行われ、データに誤りが無いことが確認された場合にはデータがメモリに書き込まれる。
図1に、FC(Fibre Channel)におけるCRCの一例を示す。FCにおいては、受信側の装置は、受信した複数のフレーム(図1においては、フレーム1乃至3)におけるデータフィールドを合成することによってシーケンスを生成する。各フレームにはCRCの領域が設けられており、シーケンスにもCRCの領域が設けられている。
FCにおいては、FCカードが、フレーム毎にCRCを実行することができる。これに対し、FCカードは、フレームの合成によって生成されるシーケンスについてCRCを実行できないことがある。その場合、シーケンスについてのCRCは、CPU(Central Processing Unit)(すなわちソフトウェア)によって実行される。
図1の例においては、本来フレーム1、フレーム2、フレーム3という順序でフレームを受信すべきなのに、例えばフレーム1、フレーム3、フレーム2という順序でフレームを受信してシーケンスを生成した場合には、誤りが検出されることになる。
特開2004−199277号公報
American National Standards for Information Technology, "FIBRE CHANNEL SINGLE-BYTE COMMAND CODE SETS-2 MAPPING PROTOCOL (FC-SB-2)", 2001年
CPUがCRCを実行する場合には、CRCを実行して誤りが無いことを確認した後にデータをメモリに書き込むことになる。そのため、メモリへの書き込み開始が遅くなるため、書き込みの完了までの時間が長くなるという問題がある。
従って、本発明の目的は、1つの側面では、データに対する誤り検出を実行する場合において、データをメモリに書き込み終えるまでに要する時間を短縮するための技術を提供することである。
本発明の第1の態様に係る書き込み制御方法は、第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して第1のメモリ領域内のデータの複製を書き込む処理を停止し、第1のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、書き込みデータを第1のメモリ領域に書き込む処理とを並行して実行し、書き込みデータについて誤りが検出された場合に、第2のメモリ領域に格納されているデータを用いて、書き込みデータが格納される前の第1のメモリ領域に格納されていたデータを復旧する処理を含む。
本発明の第2の態様に係る書き込み制御方法は、第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して第1のメモリ領域内のデータの複製を書き込む処理を停止し、第2のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、書き込みデータを第2のメモリ領域に書き込む処理とを並行して実行し、書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を第1のメモリ領域から第2のメモリ領域に切り替える、又は、第2のメモリ領域内のデータを第1のメモリ領域に反映する処理を含む。
1つの側面では、データに対する誤り検出を実行する場合において、データをメモリに書き込み終えるまでに要する時間を短縮できるようになる。
図1は、FCにおけるCRCの一例を示す図である。 図2は、情報処理装置のハードウェア構成を示す図である。 図3は、情報処理装置の機能ブロック図である。 図4は、管理テーブル格納部に格納されるデータの一例を示す図である。 図5は、メモリの管理方法について説明するための図である。 図6は、リード命令の受信時に実行する処理の処理フローを示す図である。 図7は、メインの処理フローを示す図である。 図8は、書き込み処理の処理フローを示す図である。 図9は、CRC実行部が実行する処理の処理フローを示す図である。 図10は、レプリカ管理部が実行する処理の処理フローを示す図である。 図11は、並行書き込み処理の処理フローを示す図である。 図12は、レプリカ管理部が実行する処理の処理フローを示す図である。 図13は、正常時における対応処理の処理フローを示す図である。 図14は、主記憶管理部が実行する処理の処理フローを示す図である。 図15は、主記憶領域及びレプリカ領域の管理について説明するための図である。 図16は、主記憶領域及びレプリカ領域の管理について説明するための図である。 図17は、異常時における対応処理の処理フローを示す図である。 図18は、主記憶領域及びレプリカ領域の管理について説明するための図である。 図19は、主記憶領域及びレプリカ領域の管理について説明するための図である。 図20は、主記憶領域及びレプリカ領域の管理について説明するための図である。 図21は、主記憶領域及びレプリカ領域の管理について説明するための図である。 図22は、主記憶管理部が実行する処理の処理フローを示す図である。 図23は、レプリカ管理部が実行する処理の処理フローを示す図である。 図24は、本実施の形態の処理の概要を表すシーケンス図である。 図25は、一般命令によって主記憶領域にデータが書き込まれた場合に実行する処理の処理フローを示す図である。 図26は、レプリカ管理部がレプリカ領域を更新する処理の処理フローを示す図である。 図27は、即時更新リストの一例を示す図である。 図28は、通常更新リストの一例を示す図である。 図29は、追加更新リストの一例を示す図である。 図30は、レプリカ管理部がレプリカ領域を更新する処理の処理フローを示す図である。 図31は、更新される順番を示す図である。
図2に、本実施の形態における情報処理装置1のハードウェア構成を示す。情報処理装置1は、データ転送CPU101、CRC実行CPU102、レプリカ管理CPU103及び主記憶管理CPU104を含むCPU100と、メモリブリッジ110と、メモリ120と、I/O(Input/Output)ブリッジ130と、FCカード140及び141と、ハードディスク150とを有する。FCカード140及び141は、外部の記憶装置(図示せず)に接続されており、外部の記憶装置との間でデータ伝送を行う。
ハードディスク150には、データ転送プログラム1502、CRC実行プログラム1503、レプリカ管理プログラム1504及び主記憶管理プログラム1505を含むプログラム1501が格納される。
ハードディスク150に格納されているプログラム1501は、メモリ120にロードされる。メモリ120には、ハードディスク150からロードされたプログラムのための領域1201と、管理データのための領域1206と、主記憶領域1207と、レプリカ領域1208と、データ転送バッファ1209とが含まれる。プログラムには、データ転送プログラム1202と、CRC実行プログラム1203と、レプリカ管理プログラム1204と、主記憶管理プログラム1205とが含まれる。
図3に、本実施の形態における情報処理装置1の機能ブロック図を示す。図3の例では、情報処理装置1は、データ転送部1001と、CRC実行部1002と、レプリカ管理部1003と、主記憶管理部1004と、管理テーブル格納部1005と、更新リスト格納部1006とを含む。データ転送部1001、CRC実行部1002、レプリカ管理部1003及び主記憶管理部1004は、データ転送CPU101、CRC実行CPU102、レプリカ管理CPU103及び主記憶管理CPU104並びにメモリ120などのハードウエアと、データ転送プログラム1202、CRC実行プログラム1203、レプリカ管理プログラム1204及び主記憶管理プログラム1205とが有機的に協働することにより実現される。管理テーブル格納部1005及び更新リスト格納部1006は、管理データのための領域1206によって実現される。
データ転送部1001は、データ転送バッファ1209に格納されているデータを主記憶領域1207及びレプリカ領域1208に書き込む処理等を実行する。CRC実行部1002は、データ転送バッファ1209に格納されているデータに対してCRCを実行し、結果をデータ転送部1001に通知する。レプリカ管理部1003は、更新リスト格納部1006に格納されている即時更新リスト、通常更新リスト及び追加更新リストに基づき、データ転送部1001によるデータの書き込みとは非同期に且つ自律的に、主記憶領域1207に格納されているデータをレプリカ領域1208にコピーする処理等を実行する。主記憶管理部1004は、管理テーブル格納部1005に格納されているデータを更新する処理等を実行する。
図4に、管理テーブル格納部105に格納されるデータの一例を示す。図4の例では、ページの識別情報と、主記憶領域1207のアドレスと、主記憶領域1207の世代を表す情報と、レプリカ1208領域のアドレスと、レプリカ領域1208の世代を表す情報と、データ転送回数と、即時更新フラグと、更新停止フラグとが格納される。
OS(Operating System)のリード(Read)命令によって主記憶領域1207が書き換えられた場合には、主記憶管理部1004によって、主記憶領域1207の世代が1インクリメントされ、またデータ転送回数が1インクリメントされる。OSの一般命令によって直接主記憶領域1207が書き換えられた場合には、主記憶管理部1004によって主記憶領域1207の世代が1インクリメントされるが、データ転送回数はインクリメントされない。レプリカ管理部1003によって主記憶領域1207内のデータがレプリカ領域1208にコピーされた場合には、主記憶管理部1004によって、レプリカ領域1208の世代は主記憶領域1207の世代に合わせられる。即時更新フラグ及び更新停止フラグについては、後で詳細に説明する。なお、本実施の形態においては、OSからのIO命令に関連する処理のうち、リード命令に関連する処理について説明する。
図5を用いて、本実施の形態におけるメモリ120の管理方法について説明する。本実施の形態においては、メモリ120の一部が、所定のサイズを有するページという単位に分割されて管理される。各ページには、主記憶領域1207とレプリカ領域1208とが用意される。主記憶領域1207は、主記憶として利用されるメモリ領域である。レプリカ領域1208は、主記憶領域1207に格納されているデータの複製が格納されるメモリ領域である。主記憶領域1207とレプリカ領域1208とは、適宜切り替えられので、主記憶領域1207として利用されていた領域がレプリカ領域1208になり、レプリカ領域1208として利用されていた領域が主記憶領域1207になる。切り替えは、主記憶管理部1004が管理テーブル格納部1005において主記憶領域1207のアドレスとレプリカ領域1208のアドレスとを交換することによって行われる。
次に、図6乃至図30を用いて、情報処理装置1の動作について説明する。
まず、図6を用いて、データ転送部1001がOSからのリード命令を受信した場合に実行する処理について説明する。データ転送部1001は、OSからのリード命令を受信する(図6:ステップS1)。これに応じ、データ転送部1001は、FCカード(ここでは、FCカード140とする)に、リード命令を送信する(ステップS3)。そして処理を終了する。
このような処理を実行すれば、OSからのIO命令のうちリード命令に対処できるようになる。
なお、リード命令を受信したFCカード140には、外部の記憶装置からのデータが到着する。FCカード140は、受信したデータをDMA(Direct Memory Access)転送によってデータ転送バッファ1209に書き込む。DMA転送はよく知られた技術であるので、ここでは説明を省略する。
そして、データ転送部1001は、以下の処理を実行する。この処理については、図7乃至図23を用いて説明する。
まず、FCカード140は、外部の記憶装置からのデータが到達したことをデータ転送部1001に通知する。データ転送部1001は、データの到着を示すデータをFCカード140から受信する(図7:ステップS11)。
そして、データ転送部1001は、データ転送バッファ1209に格納されているデータについて書き込み処理を実行する(ステップS13)。書き込み処理については、図8乃至図23を用いて説明する。
まず、データ転送部1001は、データ転送バッファ1209に格納されているデータについてCRCを実行することをCRC実行部1002に要求する(図8:ステップS21)。
ここで、CRC実行部1002が実行する処理について図9を用いて説明する。CRC実行部1002は、データ転送部1001からCRCの実行を要求されると、CRCを実行する(図9:ステップS41)。具体的には、データに含まれるCRC領域内の値と、データから算出された値とを比較する。
CRC実行部1002は、ステップS41においてCRCの結果(すなわち、誤りが検出されたか否か)をデータ転送部1001に通知する(ステップS43)。そして処理を終了する。
このような処理を実行すれば、誤りの有無をチェックできるようになる。
図8の説明に戻り、データ転送部1001は、データが書き込まれるページのレプリカ領域1208の更新を停止することをレプリカ管理部1003に要求する(ステップS23)。なお、データが書き込まれるページの数は複数である場合もある。
ここで、レプリカ管理部1003が実行する処理について図10を用いて説明する。レプリカ管理部1003は、データが書き込まれるページに対応する更新停止フラグを、管理テーブル格納部1005において特定する(図10:ステップS51)。更新停止フラグが「ON」である場合、レプリカ管理部1003によるレプリカ領域1208の更新は行われない。更新停止フラグが「OFF」である場合、レプリカ管理部1003によるレプリカ領域1208の更新は行われる。
レプリカ管理部1003は、特定された更新停止フラグを「ON」に設定する(ステップS53)。そして処理を終了する。
以上のような処理を実行すれば、データを主記憶領域1207に書き込んでいる間にレプリカ領域1208が更新されてしまうことを防止できるようになる。
図8の説明に戻り、データ転送部1001は、並行書き込み処理を実行する(ステップS25)。並行書き込み処理については、図11乃至図12を用いて説明する。
まず、データ転送部1001は、データが書き込まれるページのうち未処理のページを1つ特定する(図11:ステップS61)。
データ転送部1001は、ステップS61において特定されたページの主記憶領域1207及びレプリカ領域1208の世代を管理テーブル格納部1005において特定する(ステップS63)。
データ転送部1001は、ステップS63において特定された世代が一致するか判断する(ステップS65)。世代が一致する場合(ステップS65:Yesルート)、データ転送部1001は、ステップS61において特定されたページについてのデータを主記憶領域1207に書き込む(ステップS67)。
一方、世代が一致しない場合(ステップS65:Noルート)、データ転送部1001は、書き込みの量が1ページの容量の半分以上であるか判断する(ステップS69)。書き込みの量が1ページの容量の半分以上である場合(ステップS69:Yesルート)、データ転送部1001は、ステップS61において特定されたページについてのデータをレプリカ領域1208に書き込む(ステップS71)。書き込みの量が1ページの容量の半分未満である場合(ステップS69:Noルート)、データ転送部1001は、CRCの実行と並行した書き込みを行わない。よって、ステップS73の処理に移行する。
データ転送部1001は、管理テーブル格納部1005におけるデータ転送回数の更新を、レプリカ管理部1003に要求する(ステップS73)。
ここで、レプリカ管理部1003が実行する処理について図12を用いて説明する。レプリカ管理部1003は、ステップS61において特定されたページに対応する即時更新フラグを管理テーブル格納部1005から特定し、特定された即時更新フラグを「ON」に設定する(図12:ステップS81)。即時更新フラグが「ON」である場合、レプリカ管理部1003によってレプリカ領域1208の更新が優先的に行われるようになる。但し、即時更新フラグが「ON」であっても更新停止フラグが「ON」である場合には、レプリカ領域1208の更新は行われない。即時更新フラグが「OFF」である場合、レプリカ管理部1003によるレプリカ領域1208の更新は優先的には行われない。
レプリカ管理部1003は、ステップS61において特定されたページに対応するデータ転送回数を管理テーブル格納部1005から特定し、特定されたデータ転送回数を1インクリメントする(ステップS83)。データ転送回数を管理する理由は、データ転送される頻度が高い主記憶領域1207についてはレプリカ領域1208の更新頻度を高くするためである。そして処理を終了する。
このような処理を実行すれば、データの書き込みが問題なく完了した後にはレプリカ領域1208の更新を行えるようになる。
図11の説明に戻り、データ転送部1001は、未処理のページが有るか判断する(ステップS75)。未処理のページが有る場合(ステップS75:Yesルート)、次のページについて処理するため、ステップS61の処理に戻る。一方、未処理のページが無い場合(ステップS75:Noルート)、元の処理に戻る。
以上のような処理を実行すれば、CRC実行部1002がCRCを実行中にデータ転送部1001がデータの書き込みを行えるようになる。但し、例えばCRCによって誤りが検出されたデータをメモリに書き込むような事態が生じ得るため、以下の処理を実行することによってそのような事態を回避する。
図8の説明に戻り、データ転送部1001は、CRC実行部1002からCRCの結果を受け取るまで待機する(ステップS27)。既にCRCの結果を受け取った場合には、本ステップは省略される。
そして、データ転送部1001は、CRC実行部1002から受け取ったCRCの結果が「誤り有り」を示しているか判断する(ステップS29)。CRCの結果が「誤り有り」を示していない(すなわち、「誤り無し」を示している)場合(ステップS29:Noルート)、データ転送部1001は、正常時における対応処理を実行する(ステップS31)。一方、CRCの結果が「誤り有り」を示している場合(ステップS29:Yesルート)、データ転送部1001は、異常時における対応処理を実行する(ステップS33)。
まず、正常時における対応処理について、図13乃至図16を用いて説明する。データ転送部1001は、データが書き込まれるページのうち未処理のページを1つ特定する(図13:ステップS91)。
データ転送部1001は、ステップS91において特定されたページの主記憶領域1207及びレプリカ領域1208の世代を管理テーブル格納部1005において特定する(ステップS93)。
データ転送部1001は、ステップS93において特定された世代が一致するか判断する(ステップS95)。世代が一致する場合(ステップS95:Yesルート)、データは主記憶領域1207に書き込まれており且つデータに誤りが無いので、ステップS107の処理に移行する。一方、世代が一致しない場合(ステップS95:Noルート)、データ転送部1001は、書き込みの量が1ページの容量の半分以上であるか判断する(ステップS97)。
書き込みの量が1ページの容量の半分以上である場合(ステップS97:Yesルート)、データ転送部1001は、切替処理を主記憶管理部1004に要求する(ステップS101)。
ここで、主記憶管理部1004が実行する切替処理について図14を用いて説明する。まず、主記憶管理部1004は、ステップS91において特定されたページに対応するレプリカ領域1208のアドレス及び主記憶領域1207のアドレスを管理テーブル格納部1005から特定する(図14:ステップS111)。
主記憶管理部1004は、レプリカ領域1208のアドレスと主記憶領域1207のアドレスとを管理テーブル格納部1005において交換する(ステップS113)。そして処理を終了する。
ステップS113の処理によって、図15に示すように、レプリカ領域1208であったメモリ領域が主記憶領域1207として利用されるように切り替えが行われる。図15においては、斜線部分はデータが書き込まれた領域を表しており、レプリカ領域1208にデータが書き込まれている。これは、世代が一致しない場合であって且つ書き込みの量が1ページの容量の半分以上である場合には、ステップS71においてレプリカ領域1208にデータが書き込まれるからである。なお、レプリカ領域1208に書き込まれたデータに誤りが無いことはステップS29において確認されている。
図13の説明に戻り、データ転送部1001は、書き込みの量が1ページの容量未満であるか判断する(ステップS103)。すなわち、書き込みの量が1ページの容量の半分以上であり且つ1ページの容量未満であるか判断する。
書き込みの量が1ページの容量未満でない場合(ステップS103:Noルート)、書き込みの量は1ページの容量と同じである。その場合には、ステップS107の処理に移行する。一方、書き込みの量が1ページの容量未満である場合(ステップS103:Yesルート)、データ転送部1001は、データが書き込まれた領域以外の領域に格納されているデータをレプリカ領域1208から主記憶領域1207にコピーする(ステップS105)。
ステップS105の処理について、図16を用いて説明する。ステップS105の処理を実行する場合には、既にステップS101の処理を実行済みである。従って、ステップS101の処理によって、元々レプリカ領域1208であったメモリ領域が主記憶領域1207に切り替えられている。但し、元々主記憶領域1207であったメモリ領域のうちデータの書き込み範囲以外の範囲(図16における斜線部分以外の部分)は、主記憶領域1207として利用されていた間に別の処理によって更新された可能性がある。そこで、切り替えが行われた後、当該範囲に格納されているデータについては、主記憶領域1207に書き戻す処理を実行する。
図13の説明に戻り、ステップS97において書き込みの量が1ページの容量の半分以上ではない(すなわち、半分未満である)と判断された場合(ステップS97:Noルート)、データ転送部1001は、データを主記憶領域1207に書き込む(ステップS99)。書き込みの量が1ページの容量の半分未満である場合には、並行書き込み処理は実行されないので、ステップS99の段階で書き込みが行われる。書き込みが行われるのは、CRCの実行後であるから、従来の技術と同じタイミングである。また、データに誤りが無い場合に主記憶領域1207に書き込むという処理は、従来技術と同じである。このようにしたのは、書き込み量が1ページの容量の半分未満であるため、書き込み範囲以外について書き込みを行うよりも書き込み量が少ないからである。
そして、データ転送部1001は、未処理のページが有るか判断する(ステップS107)。未処理のページが有る場合(ステップS107:Yesルート)、次のページについて処理するため、ステップS91の処理に戻る。一方、未処理のページが無い場合(ステップS107:Noルート)、元の処理に戻る。
以上のような処理を実行すれば、データに誤りが無いことが確認された場合には、そのデータを主記憶領域1207に適切に反映することができるようになる。
次に、異常時における対応処理について、図17乃至図21を用いて説明する。
まず、データ転送部1001は、データが書き込まれるページのうち未処理のページを1つ特定する(図17:ステップS121)。
データ転送部1001は、ステップS121において特定されたページの主記憶領域1207及びレプリカ領域1208の世代を管理テーブル格納部1005において特定する(ステップS123)。
データ転送部1001は、ステップS123において特定された世代が一致するか判断する(ステップS125)。世代が一致しない場合(ステップS125:Noルート)、ステップS25の処理により、データが書き込まれている場合にはレプリカ領域1208に書き込まれている。よって、レプリカ領域1208のデータを破棄すればよく、主記憶領域1207に対しては処理を行わなくてもよいので、ステップS133の処理に移行する。
ステップS125のNoルートに該当するケースは、例えば図18に示すように、レプリカ領域1208に書き込まれたデータの量が1ページの容量と等しいケースがある。図18においては、バツ印の部分が、書き込まれたデータの範囲を表す。また、図19に示すように、書き込まれたデータの量が1ページの容量の半分以上且つ1ページの容量未満であるケースも該当する。図19においても、バツ印の部分が、書き込まれたデータの範囲を表す。書き込まれたデータには誤りが有るため、レプリカ領域1208内のデータは破棄される。
一方、世代が一致する場合(ステップS125:Yesルート)、データ転送部1001は、書き込み量が1ページの容量と同じであるか判断する(ステップS127)。書き込み量が1ページの容量と同じである場合(ステップS127:Yesルート)、データ転送部1001は、切替処理の実行を主記憶管理部1004に要求する(ステップS131)。主記憶管理部1004が実行する切替処理については、図14を用いて説明したとおりである。
世代が一致する場合には、図20に示すように、データは主記憶領域1207に書き込まれている。図20においては、バツ印の部分が、書き込まれたデータの範囲を表す。このような場合には、管理テーブル格納部1005においてアドレスを交換することによって、主記憶領域1207とレプリカ領域1208とを迅速に切り替えることができるようになる。
一方、書き込み量が1ページの容量と同じではない場合(ステップS127:Noルート)、データ転送部1001は、書き込み範囲に格納されているデータをレプリカ領域1208から主記憶領域1207にコピーする(ステップS129)。
例えば書き込み量が1ページの容量の半分以上且つ1ページの容量未満である場合には、主記憶領域1207における書き込み範囲以外の範囲におけるデータが、別の処理によって更新されている可能性がある。そこで、図21に示すように、1ページ全体を入れ替えるのではなく、書き込み範囲についてはレプリカ領域1208のデータを用いて復旧し、書き込み範囲以外の範囲についてはそのままの状態にする。
データ転送部1001は、未処理のページが有るか判断する(ステップS133)。未処理のページが有る場合(ステップS133:Yesルート)、次のページについて処理するため、ステップS121の処理に戻る。一方、未処理のページが無い場合(ステップS121:Noルート)、元の処理に戻る。
以上のような処理を実行すれば、データにおける誤りが検出された場合においても、誤りが無いデータを復旧することができるようになる。
図8の説明に戻り、データ転送部1001は、主記憶領域1207の世代の更新を主記憶管理部1004に要求する(ステップS35)。
ここで、主記憶管理部1004が実行する処理について図22を用いて説明する。主記憶管理部1004は、データが書き込まれたページに対応する世代を、管理テーブル格納部1005において特定する(図22:ステップS141)。
主記憶管理部1004は、特定された世代を1インクリメントする(ステップS143)。そして処理を終了する。
このような処理を実行すれば、主記憶領域1207の世代管理を適切に行えるようになる。
図8の説明に戻り、データ転送部1001は、レプリカ領域1208の更新の再開をレプリカ管理部1003に要求する(ステップS37)。そして元の処理に戻る。
ここで、レプリカ管理部1003が実行する処理について図23を用いて説明する。レプリカ管理部1003は、データが書き込まれたページに対応する更新停止フラグを、管理テーブル格納部1005において特定する(図23:ステップS151)。レプリカ管理部1003は、特定された更新停止フラグを「OFF」に設定する(ステップS153)。そして処理を終了する。
このような処理を実行すれば、レプリカ領域1208の更新が停止したままになってしまう事態を回避できるようになる。
また、上で説明したように書き込み処理を実行すれば、メモリへのデータの書き込みとCRCとが並行して行われるので、CRCの実行後にメモリへのデータの書き込みを実行する場合と比較して、書き込みの完了までに要する時間が短くなる。
図7の説明に戻り、データ転送部1001は、リード命令において指定された処理が完了したことをOSに通知する(ステップS15)。そして処理を終了する。
以上のような処理を実行すれば、CRCを実行中においても書き込みを行えるので、メモリ領域に書き込まれるデータに誤りが無いことを保証しつつ、書き込み性能を向上させることができるようになる。
図24に、本実施の形態における処理の概要を表すシーケンス図を示す。本シーケンス図は、主記憶領域1207及びレプリカ領域1208の世代が一致するためデータを主記憶領域1207に書き込む場合の処理のシーケンス図である。
まず、データ転送部1001は、OSからリード命令を受信する(ステップS1001)。データ転送部1001は、FCカードにリード命令を送信する(ステップS1002)。データ転送部1001は、データがデータ転送バッファ1209に到着したことを示すデータをFCカードからを受信する(ステップS1003)。
ステップS1001乃至ステップS1003が実行されている間、レプリカ管理部1003は、自律的にレプリカ領域1208を更新する(ステップS3001)。但し、上で述べたように、レプリカ領域1208の更新はデータの転送と非同期で行われているのであり、データの転送があった場合に更新が行われるわけではない。
データ転送部1001は、データを主記憶領域1207に書き込む(ステップS1004)。ステップS1004の処理と並行して、CRC実行部1002は、CRCを実行する(ステップS2001)。また、レプリカ管理部1003は、更新停止フラグを「ON」に設定することによって、レプリカ領域1208の更新を停止する(ステップS3002)。
データ転送部1001は、CRC実行部1002からCRCの結果を受け取る。そして、データ転送部1001は、データに誤りが有る場合には主記憶領域1207とレプリカ領域1208とを切り替える(ステップS1005)。
データ転送部1001は、リード命令において指定された処理が完了した旨をOSに通知する(ステップS1006)。一方、レプリカ管理部1003は、更新停止フラグを「OFF」に設定することによって、レプリカ領域1208の更新を再開する(ステップS3003)。
このように、データの書き込みと誤り検出とを並行して行うことによって、早期にデータの書き込みを開始できるので、データの書き込みが完了するまでの時間を短縮することができるようになる。
また、主記憶領域1207に書き込まれたデータに誤りが検出された場合には、レプリカ領域1208内のデータによってデータを復旧でき、主記憶領域1207に書き込まれたデータに誤りが無い場合には、特に何も対処を行わなくても問題は無い。よって、メモリに書き込まれるデータに誤りが無いことを保証できるようになる。
なお、上では、OSからのリード命令に関連する処理を説明したが、OSからの一般命令に関連する処理についても一応説明する。ここでは、図25を用いて、一般命令の受信時に主記憶管理部1004が世代の更新を行う処理について説明する。
まず、主記憶管理部1004は、データが書き込まれたページに対応する主記憶領域1207の世代を、管理テーブル格納部1005において特定する(図25:ステップS161)。
主記憶管理部1004は、特定された世代を1インクリメントする(ステップS143)。そして処理を終了する。
このような処理を実行すれば、一般命令によって主記憶領域1207への書き込みが行われた場合においても、適切に対処できるようになる。
次に、図25乃至図31を用いて、レプリカ管理部1003がレプリカ領域1208を更新する処理について説明する。
まず、レプリカ管理部1003は管理データ格納部1005において管理されているページのうち未処理のページを1つ特定する(図25:ステップS171)。以下では、ステップS171において特定されたページを「処理対象のページ」と呼ぶ。
レプリカ管理部1003は、処理対象のページに対応する即時更新フラグを、管理テーブル格納部1005から特定する(ステップS173)。
レプリカ管理部1003は、ステップS173において特定された即時更新フラグが「ON」であるか判断する(ステップS175)。即時更新フラグが「ON」である場合(ステップS175:Yesルート)、ステップS171において特定されたページの識別情報を即時更新リストに追加する(ステップS177)。
図27に、更新リスト格納部1006に格納される即時更新リストの一例を示す。図27の例では、更新される順番を示す情報と、ページの識別情報とが格納される。即時更新リストに識別情報が格納されているページは、即時更新リストに識別情報が格納されていないページよりも優先して更新される。
一方、即時更新フラグが「ON」ではない場合(ステップS175:Noルート)、レプリカ管理部1003は、処理対象のページの識別情報を通常更新リストに追加する(ステップS179)。
図28に、更新リスト格納部1006に格納される通常更新リストの一例を示す。図28の例では、更新される順番を示す情報と、ページの識別情報とが格納される。
レプリカ管理部1003は、処理対象のページに対応するデータ転送回数を、管理テーブル格納部1005から特定する(ステップS181)。そして、レプリカ管理部1003は、特定されたデータ転送回数を所定の値(例えば100)で割る(ステップS183)。
レプリカ管理部1003は、ステップS183の処理によって得られた商が0であるか判断する(ステップS185)。商が0ではない場合(ステップS187:Noルート)、レプリカ管理部1003は、処理対象のページの識別情報を追加更新リストに追加する(ステップS187)。そしてステップS189の処理に移行する。なお、ステップS187においては、商の値と同じ数のエントリを追加更新リストに追加する。例えば、処理対象のページがページ1であり、商の値が3である場合には、ページ1について3つのエントリを追加更新リストに追加する。これにより、データ転送が頻繁に行われるページほど頻繁に更新が行われるようになる。
図29に、更新リスト格納部1006に格納される追加更新リストの一例を示す。図29の例では、更新される順番を示す情報と、ページの識別情報とが格納される。追加更新リストに識別情報が登録されているページは、通常の更新だけでなく追加的な更新も行われる。
一方、商が0である場合(ステップS185:Yesルート)、レプリカ管理部1003は、未処理のページが有るか判断する(ステップS189)。未処理のページが有る場合(ステップS189:Yesルート)、ステップS171の処理に戻る。未処理のページが無い場合(ステップS189:Noルート)、処理は端子Aを介して図30のステップS191に移行する。
図30の説明に移行し、レプリカ管理部1003は、即時更新リストから未処理のページのうち先頭のページを1つ特定する(ステップS191)。そして、レプリカ管理部1003は、特定されたページのレプリカ領域1208を、主記憶領域1207に格納されているデータによって更新する(ステップS193)。
レプリカ管理部1003は、即時更新リストに未処理のページが有るか判断する(ステップS195)。未処理のページが有る場合(ステップS195:Yesルート)、ステップS191の処理に戻る。
一方、未処理のページが無い場合(ステップS195:Noルート)、レプリカ管理部1003は、通常更新リストに含まれるページの数と追加更新リストに含まれるページの数との合計Pを算出する(ステップS197)。
レプリカ管理部1003は、追加更新リストに含まれるページの数でPを割ることによって得られた商によって、ループ回数を割る(ステップS199)。ループ回数とは、ステップS199の処理を既に実行した回数に1を加えた数と同義である。例えばステップS199の処理を初めて実行する場合には、ループ回数は1である。
レプリカ管理部1003は、ステップS199の計算によって得られた余りが0であるか判断する(ステップS201)。余りが0である場合(ステップS201:Yesルート)、レプリカ管理部1003は、追加更新リストから先頭のページを特定し、特定されたページのレプリカ領域1208を、主記憶領域1207に格納されているデータによって更新する(ステップS203)。一方、余りが0ではない場合(ステップS201:Noルート)、レプリカ管理部1003は、通常更新リストから先頭のページを特定し、特定されたページのレプリカ領域1208を、主記憶領域1207に格納されているデータによって更新する(ステップS205)。
レプリカ管理領域1203は、更新回数がP回に達したか判断する(ステップS207)。更新回数がP回に達していない場合(ステップS207:Noルート)、次の更新を行うため、ステップS199の処理に戻る。
一方、更新回数がP回に達した場合(ステップS207:Yesルート)、レプリカ管理部1003は、処理を終了するか判断する(ステップS209)。処理を終了する場合とは、例えば、情報処理装置1の管理者から処理の終了を指示された場合である。処理を終了しない場合(ステップS209:Noルート)、処理は端子Bを介して図26のステップS171に戻る。一方、処理を終了する場合(ステップS209:Yesルート)、処理を終了する。
なお、図27乃至図29に示したデータが即時更新リスト、通常更新リスト及び追加更新リストに格納されている場合、実際にページが更新される順番は、図31に示すようになる。図31に示すように、即時更新リストに登録されているページ(ここでは、ページ1及びページ4)は優先的に更新され、その後に通常更新リスト及び追加更新リストに登録されているページ(ここでは、ページ2、ページ3、ページ5及びページ6)が更新される。
以上のような処理を実行すれば、データの転送とは非同期にレプリカ領域1208を更新できるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、レプリカ管理部1003によるレプリカ領域1208の更新は、データ転送とは非同期且つ自律的に行われるのであれば、上で述べたような方法以外の方法で更新してもよい。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る書き込み制御方法は、(A)第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して第1のメモリ領域内のデータの複製を書き込む処理を停止し、(B)第1のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、書き込みデータを第1のメモリ領域に書き込む処理とを並行して実行し、(C)書き込みデータについて誤りが検出された場合に、第2のメモリ領域に格納されているデータを用いて、書き込みデータが格納される前の第1のメモリ領域に格納されていたデータを復旧する処理を含む。
このようにすれば、誤り検出を実行中においても書き込みを行えるので、メモリ領域に書き込まれるデータに誤りが無いことを保証しつつ、書き込み性能を向上させることができるようになる。なお、単に処理を並列化しただけだと、第1のメモリ領域内のデータを復旧できなくなる場合がある。しかし、上で述べたように第2のメモリ領域へのデータの書き込みを停止しておけば、書き込み前の第1のメモリ領域内のデータを保存できるので、復旧を問題なく行える。
また、本書き込み制御方法が、(D)書き込みデータの量が、第1のメモリ領域の容量と同じであるか判断する処理をさらに含むようにしてもよい。そして、第1のメモリ領域に格納されていたデータを復旧する処理において、(c1)書き込みデータの量が第1のメモリ領域の容量と同じである場合に、第1のメモリ領域と第2のメモリ領域とを切り替えてもよい。このようにすれば、メモリ領域全体を簡便にデータを復旧できるようになる。
また、第1のメモリ領域に格納されていたデータを復旧する処理において、(c2)書き込みデータの量が第1のメモリ領域の容量と同じではない場合に、第1のメモリ領域において書き込みデータが書き込まれた範囲と同じ範囲のデータを第2のメモリ領域から読み出し、第1のメモリ領域において書き込みデータが書き込まれた範囲に書き込んでもよい。書き込みデータの量が第1のメモリ領域の容量と同じではない場合には、全体を切り替えると、書き込みデータが書き込まれた範囲以外の範囲において更新されたデータが消えてしまうことがある。そこで、上で述べたような処理を実行すれば、書き込みデータが書き込まれた範囲以外については更新後のデータを残すことができるようになる。
また、複製を書き込む処理を停止する処理は、(a1)第1のメモリ領域の世代と第2のメモリ領域の世代とが同じである場合に実行されてもよい。世代が同じである場合には、通常どおり第1のメモリ領域に書き込めば、誤りが検出されたとしても適切にデータを復旧できるようになる。
また、第1のメモリ領域内のデータの複製を第2のメモリ領域に格納する処理は、書き込みデータを第1のメモリ領域に書き込む処理とは非同期で行われてもよい。書き込みデータを第2のメモリ領域に書き込む処理と同じタイミングで行われる場合には、書き込み前のデータを保存しておくことができなくなる。そこで、上で述べたようにすれば、書き込み前のデータを保存しておくことができるようになる。
本実施の形態の第2の態様にかかる書き込み制御方法は、(E)第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して第1のメモリ領域内のデータの複製を書き込む処理を停止し、(F)第2のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、書き込みデータを第2のメモリ領域に書き込む処理とを並行して実行し、(G)書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を第1のメモリ領域から第2のメモリ領域に切り替える、又は、第2のメモリ領域内のデータを第1のメモリ領域に反映する処理を含む。
また、本書き込み制御方法が、(H)書き込みデータの量が、第1のメモリ領域の容量の半分以上であるか判断する処理をさらに含むようにしてもよい。そして、第1のメモリ領域から第2のメモリ領域に切り替える処理において、(g1)書き込みデータの量が第1のメモリ領域の容量の半分以上である場合に、第1のメモリ領域と第2のメモリ領域とを切り替えてもよい。このようにすれば、メモリ領域全体を簡便に切り替えることができるようになる。
また、(I)書き込みデータの量が第1のメモリ領域の容量の半分以上である場合に、書き込みデータの量が第1のメモリ領域の容量未満であるか判断する処理をさらに含むようにしてもよい。そして、第1のメモリ領域に反映する処理において、(g2)書き込みデータの量が第1のメモリ領域の容量未満且つ半分以上である場合に、第1のメモリ領域において書き込みデータが書き込まれた範囲以外の範囲と同じ範囲のデータを第2のメモリ領域から読み出し、第1のメモリ領域において書き込みデータが書き込まれた範囲以外の範囲に書き込んでもよい。第2のメモリ領域においては、書き込みデータが書き込まれた範囲以外の範囲においてもデータが更新されている場合があるので、領域全体を切り替えると、更新後のデータが消えることになる。そこで、上で述べたようにすれば、このような事態を回避できるようになる。
また、第1のメモリ領域内のデータの複製を書き込む処理を停止する処理は、(e1)第1のメモリ領域の世代と第2のメモリ領域の世代とが同じではない場合に実行されてもよい。世代が同じではない場合、複製が格納される第2のメモリ領域内のデータは主記憶として利用される第1のメモリ領域内のデータよりも古いことになる。よって、第1のメモリ領域に書き込みデータを書き込むと、現時点における第1の領域内のデータよりも古いデータでしか復旧を行えなくなる。そこで、上で述べたようにすることで、このような事態を回避できるようになる。
また、第1のメモリ領域内のデータの複製を第2のメモリ領域に格納する処理は、書き込みデータを第1のメモリ領域に書き込む処理とは非同期で行われてもよい。書き込みデータを第1のメモリ領域に書き込む処理と同じタイミングで行われる場合には、書き込み前のデータを保存しておくことができなくなる。そこで、上で述べたようにすれば、書き込み前のデータを保存しておくことができるようになる。
また、第1のメモリ領域のアドレスと第2のメモリ領域とのアドレスとを交換することにより、第1のメモリ領域と第2のメモリ領域とを切り替えてもよい。このようにすれば、切り替えを迅速に行えるようになる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、
前記第1のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第1のメモリ領域に書き込む処理とを並行して実行し、
前記書き込みデータについて誤りが検出された場合に、前記第2のメモリ領域に格納されているデータを用いて、前記書き込みデータが格納される前の前記第1のメモリ領域に格納されていたデータを復旧する
処理をコンピュータに実行させるための書き込み制御プログラム。
(付記2)
前記書き込みデータの量が、前記第1のメモリ領域の容量と同じであるか判断する
処理をさらに実行させ、
前記第1のメモリ領域に格納されていたデータを復旧する処理において、
前記書き込みデータの量が前記第1のメモリ領域の容量と同じである場合に、前記第1のメモリ領域と前記第2のメモリ領域とを切り替える
処理を実行する付記1記載の書き込み制御プログラム。
(付記3)
前記第1のメモリ領域に格納されていたデータを復旧する処理において、
前記書き込みデータの量が前記第1のメモリ領域の容量と同じではない場合に、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲と同じ範囲のデータを前記第2のメモリ領域から読み出し、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲に書き込む
処理を実行する付記2記載の書き込み制御プログラム。
(付記4)
前記複製を書き込む処理を停止する処理は、前記第1のメモリ領域の世代と前記第2のメモリ領域の世代とが同じである場合に実行される
ことを特徴とする付記1記載の書き込み制御プログラム。
(付記5)
前記1のメモリ領域内のデータの複製を前記第2のメモリ領域に格納する処理は、前記書き込みデータを前記第1のメモリ領域に書き込む処理とは非同期で行われる
ことを特徴とする付記5記載の書き込み制御プログラム。
(付記6)
第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、
前記第2のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第2のメモリ領域に書き込む処理とを並行して実行し、
前記書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を前記第1のメモリ領域から前記第2のメモリ領域に切り替える、又は、前記第2のメモリ領域内のデータを前記第1のメモリ領域に反映する
処理をコンピュータに実行させるための書き込み制御プログラム。
(付記7)
前記書き込みデータの量が、前記第1のメモリ領域の容量の半分以上であるか判断する処理
をさらに実行させ、
前記第1のメモリ領域から前記第2のメモリ領域に切り替える処理において、
前記書き込みデータの量が前記第1のメモリ領域の容量の半分以上である場合に、前記第1のメモリ領域と前記第2のメモリ領域とを切り替える
処理を実行する付記6記載の書き込み制御プログラム。
(付記8)
前記書き込みデータの量が前記第1のメモリ領域の容量の半分以上である場合に、前記書き込みデータの量が前記第1のメモリ領域の容量未満であるか判断する処理
をさらに実行させ、
前記第2のメモリ領域内のデータを前記第1のメモリ領域に反映する処理において、
前記書き込みデータの量が前記第1のメモリ領域の容量未満且つ半分以上である場合に、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲以外の範囲と同じ範囲のデータを前記第2のメモリ領域から読み出し、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲以外の範囲に書き込む
処理を実行する付記7記載の書き込み制御プログラム。
(付記9)
前記複製を書き込む処理を停止する処理は、前記第1のメモリ領域の世代と前記第2のメモリ領域の世代とが同じではない場合に実行される
ことを特徴とする付記6記載の書き込み制御プログラム。
(付記10)
前記1のメモリ領域内のデータの複製を前記第2のメモリ領域に格納する処理は、前記書き込みデータを前記第1のメモリ領域に書き込む処理とは非同期で行われる
ことを特徴とする付記6記載の書き込み制御プログラム。
(付記11)
前記第1のメモリ領域のアドレスと前記第2のメモリ領域とのアドレスとを交換することにより、前記第1のメモリ領域と前記第2のメモリ領域とを切り替える
ことを特徴とする付記6記載の書き込み制御プログラム。
(付記12)
第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、前記第1のメモリ領域に書き込みデータを書き込む第1処理部と、
前記第1処理部が前記第1のメモリ領域に前記書き込みデータを書き込む処理と並行して、前記書き込みデータに対する誤り検出を実行する第2処理部と、
前記書き込みデータについて誤りが検出された場合に、前記第2のメモリ領域に格納されているデータを用いて、前記書き込みデータが格納される前の前記第1のメモリ領域に格納されていたデータを復旧する第3処理部と、
を有するコンピュータ。
(付記13)
第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、
前記第1のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第1のメモリ領域に書き込む処理とを並行して実行し、
前記書き込みデータについて誤りが検出された場合に、前記第2のメモリ領域に格納されているデータを用いて、前記書き込みデータが格納される前の前記第1のメモリ領域に格納されていたデータを復旧する
処理をコンピュータが実行する書き込み制御方法。
(付記14)
第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、前記第2のメモリ領域に書き込みデータを書き込む第1処理部と、
前記第1処理部が前記第2のメモリ領域に前記書き込みデータを書き込む処理と並行して、前記書き込みデータに対する誤り検出を実行する第2処理部と、
前記書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を前記第1のメモリ領域から前記第2のメモリ領域に切り替える第3処理部と、
を有するコンピュータ。
(付記15)
第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、
前記第2のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第2のメモリ領域に書き込む処理とを並行して実行し、
前記書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を前記第1のメモリ領域から前記第2のメモリ領域に切り替える、又は、前記第2のメモリ領域内のデータを前記第1のメモリ領域に反映する
処理をコンピュータが実行する書き込み制御方法。
1 情報処理装置 100 CPU
101 データ転送CPU 102 CRC実行CPU
103 レプリカ管理CPU 104 主記憶管理CPU
110 メモリブリッジ 120 メモリ
1201 プログラム 1202 データ転送プログラム
1203 CRC実行プログラム 1204 レプリカ管理プログラム
1205 主記憶管理プログラム 1206 管理データ
1207 主記憶領域 1208 レプリカ領域
1209 データ転送バッファ 130 I/Oブリッジ
140,141 FCカード 150 ハードディスク
1501 プログラム 1502 データ転送プログラム
1503 CRC実行プログラム 1504 レプリカ管理プログラム
1505 主記憶管理プログラム
1001 データ転送部 1002 CRC実行部
1003 レプリカ管理部 1004 主記憶管理部
1005 管理テーブル格納部 1006 更新リスト格納部

Claims (10)

  1. 第1のメモリ領域の世代と前記第1のメモリ領域内のデータの複製が書き込まれる第2のメモリ領域の世代とが同じである場合、前記第1のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第1のメモリ領域に書き込む処理との並行実行を開始し、
    前記並行実行を開始すると、前記第2のメモリ領域に対して前記書き込みデータの複製を書き込む処理を停止し、
    前記書き込みデータについて誤りが検出された場合に、前記第2のメモリ領域内のデータを用いて、前記書き込みデータが書き込まれる前の前記第1のメモリ領域に格納されていたデータを復旧する
    処理をコンピュータに実行させるための書き込み制御プログラム。
  2. 前記書き込みデータの量が、前記第1のメモリ領域の容量と同じであるか判断する
    処理をさらに実行させ、
    前記第1のメモリ領域に格納されていたデータを復旧する処理において、
    前記書き込みデータの量が前記第1のメモリ領域の容量と同じである場合に、前記第1のメモリ領域と前記第2のメモリ領域とを切り替える
    処理を実行する請求項1記載の書き込み制御プログラム。
  3. 前記第1のメモリ領域に格納されていたデータを復旧する処理において、
    前記書き込みデータの量が前記第1のメモリ領域の容量と同じではない場合に、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲と同じ範囲のデータを前記第2のメモリ領域から読み出し、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲に書き込む
    処理を実行する請求項2記載の書き込み制御プログラム。
  4. 第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、
    前記第2のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第2のメモリ領域に書き込む処理とを並行して実行し、
    前記書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を前記第1のメモリ領域から前記第2のメモリ領域に切り替える、又は、前記第2のメモリ領域内のデータを前記第1のメモリ領域に反映する
    処理をコンピュータに実行させるための書き込み制御プログラム。
  5. 前記書き込みデータの量が、前記第1のメモリ領域の容量の半分以上であるか判断する処理
    をさらに実行させ、
    前記第1のメモリ領域から前記第2のメモリ領域に切り替える処理において、
    前記書き込みデータの量が前記第1のメモリ領域の容量の半分以上である場合に、前記第1のメモリ領域と前記第2のメモリ領域とを切り替える
    処理を実行する請求項4記載の書き込み制御プログラム。
  6. 前記書き込みデータの量が前記第1のメモリ領域の容量の半分以上である場合に、前記書き込みデータの量が前記第1のメモリ領域の容量未満であるか判断する処理
    をさらに実行させ、
    前記第2のメモリ領域内のデータを前記第1のメモリ領域に反映する処理において、
    前記書き込みデータの量が前記第1のメモリ領域の容量未満且つ半分以上である場合に、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲以外の範囲と同じ範囲のデータを前記第2のメモリ領域から読み出し、前記第1のメモリ領域において前記書き込みデータが書き込まれた範囲以外の範囲に書き込む
    処理を実行する請求項5記載の書き込み制御プログラム。
  7. 第1のメモリ領域の世代と前記第1のメモリ領域内のデータの複製が書き込まれる第2のメモリ領域の世代とが同じである場合、前記第1のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記第1のメモリ領域に前記書き込みデータを書き込む処理との並行実行を開始する第処理部と、
    前記並行実行を開始すると、前記第2のメモリ領域に対して前記書き込みデータの複製を書き込む処理を停止する第2処理部と、
    前記書き込みデータについて誤りが検出された場合に、前記第2のメモリ領域内のデータを用いて、前記書き込みデータが書き込まれる前の前記第1のメモリ領域に格納されていたデータを復旧する第3処理部と、
    を有するコンピュータ。
  8. 第1のメモリ領域の世代と前記第1のメモリ領域内のデータの複製が書き込まれる第2のメモリ領域の世代とが同じである場合、前記第1のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第1のメモリ領域に書き込む処理との並行実行を開始し、
    前記並行実行を開始すると、前記第2のメモリ領域に対して前記書き込みデータの複製を書き込む処理を停止し、
    前記書き込みデータについて誤りが検出された場合に、前記第2のメモリ領域内のデータを用いて、前記書き込みデータが書き込まれる前の前記第1のメモリ領域に格納されていたデータを復旧する
    処理をコンピュータが実行する書き込み制御方法。
  9. 第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、前記第2のメモリ領域に書き込みデータを書き込む第1処理部と、
    前記第1処理部が前記第2のメモリ領域に前記書き込みデータを書き込む処理と並行して、前記書き込みデータに対する誤り検出を実行する第2処理部と、
    前記書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を前記第1のメモリ領域から前記第2のメモリ領域に切り替える第3処理部と、
    を有するコンピュータ。
  10. 第1のメモリ領域内のデータの複製が格納される第2のメモリ領域に対して前記第1のメモリ領域内のデータの複製を書き込む処理を停止し、
    前記第2のメモリ領域に書き込まれる書き込みデータに対する誤り検出と、前記書き込みデータを前記第2のメモリ領域に書き込む処理とを並行して実行し、
    前記書き込みデータについて誤りが検出されなかった場合に、主記憶として利用される領域を前記第1のメモリ領域から前記第2のメモリ領域に切り替える、又は、前記第2のメモリ領域内のデータを前記第1のメモリ領域に反映する
    処理をコンピュータが実行する書き込み制御方法。
JP2013149006A 2013-07-18 2013-07-18 書き込み制御プログラム及び方法 Expired - Fee Related JP6205931B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013149006A JP6205931B2 (ja) 2013-07-18 2013-07-18 書き込み制御プログラム及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013149006A JP6205931B2 (ja) 2013-07-18 2013-07-18 書き込み制御プログラム及び方法

Publications (2)

Publication Number Publication Date
JP2015022450A JP2015022450A (ja) 2015-02-02
JP6205931B2 true JP6205931B2 (ja) 2017-10-04

Family

ID=52486856

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013149006A Expired - Fee Related JP6205931B2 (ja) 2013-07-18 2013-07-18 書き込み制御プログラム及び方法

Country Status (1)

Country Link
JP (1) JP6205931B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022003975A1 (ja) * 2020-07-03 2022-01-06 日本電信電話株式会社 通信装置、方法、およびプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05274253A (ja) * 1992-03-25 1993-10-22 Casio Comput Co Ltd システムバス制御装置
JPH08179994A (ja) * 1994-12-26 1996-07-12 Toshiba Corp コンピュータシステム
JP2002063044A (ja) * 2000-08-21 2002-02-28 Matsushita Electric Ind Co Ltd 演算装置及びプログラム書き換え方法
JP2004199277A (ja) * 2002-12-17 2004-07-15 Fujitsu Ltd Biosの冗長管理方法、データ処理装置及びストレージシステム
JP2007220092A (ja) * 2006-01-18 2007-08-30 Nec Saitama Ltd 情報処理装置、情報処理装置におけるプログラムデータ保護方法

Also Published As

Publication number Publication date
JP2015022450A (ja) 2015-02-02

Similar Documents

Publication Publication Date Title
JP4942418B2 (ja) 計算機システム及びそのスナップショット作成方法
CN102132258B (zh) 固件更新系统、信息设备以及程序
CN107003893B (zh) 虚拟机备份方法、备份装置及宿主机
US20150331638A1 (en) Efficient enforcement of command execution order in solid state drives
JP4248510B2 (ja) 計算機システム、ディスク装置およびデータ更新制御方法
US11509716B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
US20140026013A1 (en) Storage control apparatus and error correction method
WO2009118917A1 (ja) フラッシュメモリを用いた記憶装置
US20110113075A1 (en) Garbage collection program, garbage collection method, and garbage collection system
JP4745465B1 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JPWO2008099786A1 (ja) メモリ障害復旧方法、情報処理装置およびプログラム
US20140059093A1 (en) Information processing method and apparatus for garbage collection
JP4756992B2 (ja) ストレージシステム及び記憶制御方法
JP4829370B1 (ja) メモリ制御装置、メモリ装置および停止制御方法
JP6205931B2 (ja) 書き込み制御プログラム及び方法
WO2018139223A1 (ja) 情報処理装置,制御プログラムおよび情報処理方法
JP4931711B2 (ja) カーネル更新方法、情報処理装置、プログラムおよび記憶媒体
US8560789B2 (en) Disk apparatus, data replicating method onto disk apparatus and program recording medium
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP2010536112A (ja) 中断された書込みの回復のためのデータ記憶方法、機器およびシステム
US10761892B2 (en) Method and electronic device for executing data reading/writing in volume migration
CN112363671B (zh) 一种基于融合架构云平台的虚拟机模板镜像存储方法
CN115145228A (zh) 过程控制系统、过程控制装置以及程序更新方法
JP4841408B2 (ja) ボリューム移行プログラム及び方法
TW200935433A (en) Method for reducing data error when flash memory storage device using copy back command

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170327

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170821

R150 Certificate of patent or registration of utility model

Ref document number: 6205931

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees