JP6515555B2 - 演算処理装置、メモリ制御装置及び演算処理装置の制御方法 - Google Patents

演算処理装置、メモリ制御装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6515555B2
JP6515555B2 JP2015018578A JP2015018578A JP6515555B2 JP 6515555 B2 JP6515555 B2 JP 6515555B2 JP 2015018578 A JP2015018578 A JP 2015018578A JP 2015018578 A JP2015018578 A JP 2015018578A JP 6515555 B2 JP6515555 B2 JP 6515555B2
Authority
JP
Japan
Prior art keywords
data
error check
unit
error
arithmetic processing
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.)
Active
Application number
JP2015018578A
Other languages
English (en)
Other versions
JP2016143235A (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 JP2015018578A priority Critical patent/JP6515555B2/ja
Priority to US14/995,253 priority patent/US20160224410A1/en
Publication of JP2016143235A publication Critical patent/JP2016143235A/ja
Application granted granted Critical
Publication of JP6515555B2 publication Critical patent/JP6515555B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)

Description

本発明は、演算処理装置、メモリ制御装置及び演算処理装置の制御方法に関する。
DRAM(Dynamic Random Access Memory)などのメモリを持つ演算処理装置であり、且つ、サーバなどの高信頼性能が求められるシステムでは、ECC(Error Check and Correct)付きメモリ(以下、「ECCメモリ」という。)が用いられることが多い。
ECCメモリは、メモリにデータを書き込む際に、ECCチェックビットを生成し、データと同時に生成したECCチェックビットを書き込む。また、ECCメモリは、メモリからデータを読み出す際に、データとともにECCチェックビットも読み出し、読み出したECCチェックビットを用いてデータのエラー訂正及び検出を行う。
例えば、4ビットDRAMが18個搭載されたECC付きDIMM(Dual Inline Memory Module)が、メモリコントローラに2枚接続され、その2枚のDIMMに同時にアクセスするメモリシステムについて考える。ここで、2サイクル分のデータ288ビットを1つのチェックビットによるエラー訂正及び検出の対象とするECC単位とする。そして、ここでは、ECC単位に対してS8EC−D8ED(Single 8bit Error Correction-Double 8bit Error Detection)のコードを用いてデータ264ビットとECCチェックビット24ビットに分けるものとする。この場合、メモリシステムは、1つのDRAMの4ビット全てが全サイクル故障しても訂正可能であり、2つのDRAMの同時故障も検出可能である。
このメモリシステムの動作を説明する。メモリシステムは、書き込みの場合、CPU(Central Processing Unit)やI/O(Input/Output)制御部などからのメモリ書き込みデータを書き込みデータ受信部が受信する。そして、メモリシステムは、受信したデータからチェックビットを生成し、生成したチェックビットをデータに付与する。その後、メモリシステムは、メモリインタフェース部を経由させてDIMMにチェックビットが付与されたデータを書き込む。
また、読み出しの場合、メモリシステムは、メモリインタフェース部を介してDIMMからデータを読み出す。その後、メモリシステムは、データを訂正し、訂正したデータをCPUやI/O制御部へ送出する。
そして、接続される2枚のDIMMのDRAM36個のそれぞれに訂正及び検出可能な8ビットの単位を割り当てることで、1つのDRAMにおける4ビットのエラー訂正が可能となる。また、これにより、2つのDRAMのそれぞれで発生した4ビットのエラー検出が可能となる。以下では、エラーの訂正及び検出が可能な8ビットの単位を、「ブロック」と呼ぶ。
ここで、1つのDRAMの故障の中では、1ビットのみの故障の頻度が高い。すなわち、2つのDRAMの同時故障が発生した場合でも、それぞれ1ビットずつ壊れる場合が多い。これに対して、4ビットDRAMのそれぞれにブロックを割り当てた場合、2つのDRAMのそれぞれ1ビットずつが壊れた場合でも訂正ができない。また、3つ以上のDRAMでエラーが発生した場合、エラーの検出すらできない場合がある。
そこで、複数のDRAMの1ビット故障を訂正するために、ECCチェックビットを増やす従来技術が提案されている。
特開2009−245218号公報
しかしながら、ECCチェックビットを増やす従来技術では、チェックビットを多く確保するため、書き込むデータ量が減少してしまう。
開示の技術は、上記に鑑みてなされたものであって、書き込みデータ量を減らさずにデータの訂正及び検出可能な範囲を大きくする演算処理装置、メモリ制御装置及び演算処理装置の制御方法を提供することを目的とする。
本願の開示する演算処理装置、メモリ制御装置及び演算処理装置の制御方法は、一つの態様において、演算処理部は、データを出力する。記憶部は、前記演算処理部が出力したデータの格納領域を複数有する。データ生成部は、前記演算処理部が出力する各データに対してチェックを行うためのエラーチェック用符号をそれぞれ生成し、生成した各エラーチェック用符号を各データに付加したエラーチェック符号付データを生成する。格納制御部は、前記データ生成部が生成したエラーチェック符号付データを分割して分割データを生成し、異なる前記エラーチェック符号付データの前記分割データを結合して、各前記格納領域にそれぞれ格納する。
本願の開示する演算処理装置、メモリ制御装置及び演算処理装置の制御方法の一つの態様によれば、書き込みデータ量を減らさずにデータの訂正及び検出可能な範囲を大きくすることができるという効果を奏する。
図1は、演算処理装置のブロック図である。 図2は、実施例1に係るメモリコントローラのブロック図である。 図3は、実施例1におけるDIMMのデータの格納状態の一例を表す図である。 図4は、実施例1に係るメモリコントローラによる書込データのDIMMへの書込処理のフローチャートである。 図5は、実施例1に係るメモリコントローラによる読出データのDIMMからの読出処理のフローチャートである。 図6は、実施例1の変形例におけるDIMMのデータの格納状態の一例を表す図である。 図7は、実施例2に係るメモリコントローラのブロック図である。 図8は、実施例2に係るメモリコントローラによる読出データのDIMMからの読出処理のフローチャートである。 図9は、実施例3に係るメモリコントローラのブロック図である。 図10は、実施例3におけるDIMMのデータの格納状態の一例を表す図である。 図11は、実施例4に係るメモリコントローラのブロック図である。
以下に、本願の開示する演算処理装置、メモリ制御装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置、メモリ制御装置及び演算処理装置の制御方法が限定されるものではない。
図1は、演算処理装置のブロック図である。演算処理装置100は、CPU1、キャッシュ制御部2、メモリコントローラ3、メモリインタフェース部4、DIMM5、ハードディスク6及びネットワークインタフェース7を有する。
CPU1は、演算処理部の一例である。CPU1は、DIMM5、ハードディスク6又はネットワークインタフェース7からデータを取得する。そして、CPU1は、入力されたデータを用いて演算処理を行う。その後、CPU1は、演算結果を出力する。CPU1は、キャッシュ制御部2を介してデータの入出力を行う。
DIMM5は、主記憶装置であり、記憶部の一例である。DIMM5は、複数のDRAMを有する。本実施例では、DIMM5は、36個の4ビットDRAM51を有する。すなわち、DIMM5は、1サイクルで144ビットのデータの送受信を行う。さらに、本実施例では、メモリコントローラ3は、2サイクル分のデータ、すなわち288ビットのデータをECC単位とする。そして、DIMM5に格納されるECC単位のデータのうち、264ビットが実データであり、24ビットがECCチェックビットである。これにより、DIMM5は、8ビットの単位でエラー訂正及び検出が可能となる。DRAM51は、「格納領域」の一例にあたる。
メモリインタフェース部4は、メモリコントローラ3とDIMM5との間のデータの送受信を仲介するインタフェースである。
メモリコントローラ3は、メモリ制御装置である。メモリコントローラ3は、DIMM5に対して、データの読み出し及び書き込みの制御を行う。具体的には、メモリコントローラ3は、CPU1又はハードディスク6並びにネットワークインタフェース7を含むその他のデータ出入力装置からデータを受信する。そして、メモリコントローラ3は、受信した264ビットのデータを用いて24ビットのチェックビットを生成する。そして、メモリコントローラ3は、受信した264ビットのデータに、生成した24ビットのチェックビットを付加したデータを、メモリインタフェース部4を介して、DIMM5に格納させる。本実施例では、メモリコントローラ3は、8サイクル分のデータのバースト転送を行う。
また、メモリコントローラ3は、データ読み出し命令を、例えばCPU1から受けて、DIMM5からデータを読み出す。そして、メモリコントローラ3は、読み出したデータのチェックビットを用いて読み出したデータにエラーが発生していないか否かを判定する。エラーが発生していなければ、メモリコントローラ3は、読み出したデータを出力する。一方、エラーが発生した場合、メモリコントローラ3は、発生したエラーが訂正可能であれば、エラーを訂正してデータを出力する。また、発生したエラーの訂正が困難な場合、メモリコントローラ3は、エラー発生の通知を出力する。
ハードディスク6は、補助記憶装置である。ハードディスク6は、CPU1からの指示を受けて、データを格納する。また、ハードディスク6は、CPU1からの指示を受けて、データを読み出し、出力する。
ネットワークインタフェース7は、他の演算処理装置などの外部装置との通信インタフェースである。CPU1及びメモリコントローラ3は、ネットワークインタフェース7を介して、外部装置との間でデータの送受信を行う。
次に、図2を参照して、本実施例に係るメモリコントローラ3によるDIMM5に対するデータの書き込み及び読み出しについて詳細に説明する。図2は、実施例1に係るメモリコントローラのブロック図である。以下では、CPU1から送出されたデータの書き込み、及び、CPU1によるデータの読み出しの場合を例に説明する。
キャッシュ制御部2は、キャッシュ21及び調停部22を有する。キャッシュ21は、複数のキャッシュライン211を有する。
CPU1により入力された書込データは、各キャッシュライン211に一時的に格納される。調停部22は、書込データをどのキャッシュライン211から取得するか決定する。そして、調停部22は、決定したキャッシュライン211から書込データを取得し、メモリコントローラ3の受信部選択回路31へ出力する。
また、調停部22は、読出データをメモリコントローラ3の送出データ選択回路38から取得する。そして、調停部22は、読出データを格納するキャッシュライン211を決定する。その後、調停部22は、決定したキャッシュライン211へ読出データを書き込む。
データ書き込みの場合について説明する。受信部選択回路31は、調停部22から書込データを受信する。次に、受信部選択回路31は、書込データ受信部32aにデータが格納済みか否かを判定する。ここで、書込データ受信部32aにデータが格納済みとは、書込データ受信部32aに264ビットのデータが格納されている場合を指す。
書込データ受信部32aにデータが格納済みでない場合、受信部選択回路31は、受信した書込データの264ビット分の書込データを書込データ受信部32aへ出力する。また、書込データ受信部32aにデータが格納済みである場合、受信部選択回路31は、受信した書込データの264ビット分の書込データを書込データ受信部32bへ出力する。
書込データ受信部32aは、受信部選択回路31から264ビットの書込データの受信が完了するまでデータを蓄積する。さらに、書込データ受信部32aは、書込データ受信部32bが264ビットの書込データを受信するまで待機する。そして、書込データ受信部32bが264ビットの書込データの受信を完了すると、書込データ受信部32aは、保持する264ビットの書込データをチェックビット生成部33aへ出力する。
書込データ受信部32bは、受信部選択回路31から264ビットの書込データを受信するまで待機する。そして、264ビットの書込データの受信を完了すると、書込データ受信部32bは、保持する264ビットの書込データをチェックビット生成部33bへ出力する。
チェックビット生成部33aは、264ビットの書込データの入力を書込データ受信部32aから受ける。次に、チェックビット生成部33aは、受信した264ビットの書込データから24ビットの誤り訂正符号を生成する。この誤り訂正符号は、データのエラー訂正及び検出(ECC)を行うための「エラーチェック用符号」の一例にあたる。
そして、チェックビット生成部33aは、生成した24ビットの誤り訂正符号を受信した264ビットの書込データに付加し、288ビットの書込データを生成する。このチェックビット生成部33aにより生成された288ビットの書込データが誤り訂正符号付きデータ(ECC付データ)でありECC単位のデータとなる。そして、この誤り訂正符号付きデータ(ECC付データ)が、「エラーチェック符号付データ」の一例にあたる。以下では、書込データ選択回路34によって1度に書き込まれたECC単位のデータ群をグループと呼ぶ。
チェックビット生成部33bは、264ビットの書込データの入力を書込データ受信部32bから受ける。次に、チェックビット生成部33bは、受信した264ビットの書込データから24ビットの誤り訂正符号を生成する。そして、チェックビット生成部33bは、生成した24ビットの誤り訂正符号を受信した264ビットの書込データに付加し、288ビットの書込データを生成する。このチェックビット生成部33a及び33bが、「データ生成部」の一例にあたる。
書込データ選択回路34は、チェックビット生成部33a及び33bに合わせて4サイクル分の書き込みデータ、すなわちそれぞれに288ビットのデータが蓄積するまで待機する。
そして、書込データ選択回路34は、チェックビット生成部33a又はチェックビット生成部33bを書込データの取得元として順次選択する。ここでは、書込データ選択回路34は、最初の書込データの取得元としてチェックビット生成部33aを選択し、次に書込データの取得元としてチェックビット生成部33bを選択する場合で説明する。
書込データ選択回路34は、最初に選択したチェックビット生成部33aから72ビットの書込データを取得する。次に、書込データ選択回路34は、次に選択したチェックビット生成部33bから72ビットの書込データを取得する。そして、書込データ選択回路34は、取得したデータを合わせた144ビットの書込データを、メモリインタフェース部4を介して、DIMM5に書き込む。具体的には、書込データ選択回路34は、チェックビット生成部33aから受信した書込データを各DRAM51の0及び1ビット番目のビットに書き込む。また、書込データ選択回路34は、チェックビット生成部33bから受信した書込データを各DRAM51の2及び3番目のビットに書き込む。この144ビットの書込データの書き込みが、1サイクルの書き込みである。
書込データ選択回路34は、上述した書込データのDIMM5への書き込み処理をチェックビット生成部33a及び32bのそれぞれが保持する288ビットのデータがなくなるまで繰り返す。すなわち、書込データ選択回路34は、1サイクルで144ビットのデータをDIMM5に書き込むので、この場合、4サイクルの書き込み処理を行うことになる。この書込データ選択回路34が、「格納制御部」の一例にあたる。
書込データ選択回路34による4サイクルの書込処理により、各DRAM51の0及び1ビットには、あるグループにおけるエラー訂正及び検出の単位である8ビットのブロックが格納される。また、各DRAM51の2及び3ビットには、各DRAM51の0及び1ビットに格納されたデータの属するグループとは異なるグループのエラー訂正及び検出の単位である8ビットのブロックが格納される。このように、1つのDRAM51に2つの異なるグループのブロックが格納される。すなわち、1つのグループに属するデータを分割することで生成されたブロックは、各DRAM51の一部にそれぞれ格納される。また、DRAM51の0及び1ビットが、「上位側領域」の一例にあたる。また、DRAM51の2及び3ビットが、「下位側領域」の一例にあたる。さらに、複数のグループがある場合に、各グループに属するブロック(本実施例においては2つのグループのブロック)の総称が、「分割データ」の一例にあたる。
ここで、ECC機能を用いた場合、1つのDRAM51にエラーがあれば、1つのグループにつき2ビットのエラーであれば訂正が可能である。このため、本実施例のデータ格納状態であれば、1つのDRAM51のエラーであれば、4ビットのエラーの訂正が可能である。また、2つのDRAM51が故障した場合、それぞれの故障したビットが格納するデータが属するグループが異なれば、2ビットまでの故障であれば訂正が可能である。また、最大で4つのDRAM51の2ビットの故障の検出が可能である。
図2に戻って説明を続ける。受信部選択回路31、書込データ受信部32a及び32b、チェックビット生成部33a及び33b、並びに、書込データ選択回路34は、8バースト分の書込データの格納が完了するまで上述した書込データのDIMM5への格納処理を繰り返す。具体的には、上述した書込データのDIMM5への格納処理がもう1回繰り返されることで、8バースト分の書込データの格納が完了する。これで、メモリコントローラ3は、1回のデータ転送処理を完了する。書込データがさらにある場合には、メモリコントローラ3は、全ての書込データの書き込みが完了するまで、このデータ転送処理を繰り返す。
ここで、図3を参照して、本実施例に係るメモリコントローラ3によるDIMM5におけるデータの格納状態について詳しく説明する。図3は、実施例1におけるDIMMのデータの格納状態の一例を表す図である。
図3では、36個のDRAM51のそれぞれを、DRAM#0〜#35と表している。また、各データが属するグループをGRPに番号を付した符号で表し、さらに、各データが属するブロック(エラーの訂正及び検出が可能な単位)をBLKに番号を付した符号で表す。例えば、GRP0−BLK00であれば、そこに含まれるデータは、0番のグループの00番のブロックに属する。
図3に示すように、DRAM#0〜#35の0及び1番目のビットには、1〜4サイクルのデータとして、GRP0のグループに属するデータが格納されている。そして、DRAM#0〜#35のそれぞれの0及び1番目のビットに、異なるブロックが割り当てられている。さらに、DRAM#0〜#35の2及び3番目のビットには、0及び1番目のビットとは異なるグループであるGRP1のグループに属するデータが格納されている。そして、DRAM#0〜#35のそれぞれの2及び3番目のビットに、異なるブロックが割り当てられている。
また、DRAM#0〜#35の0及び1番目のビットには、5〜8サイクルのデータとして、GRP2のグループに属するデータが格納されている。さらに、DRAM#0〜#35の2及び3番目のビットには、5〜8サイクルのデータとして、GRP3のグループに属するデータが格納されている。
次に、読出データの読出処理について説明する。受信部選択回路35は、メモリインタフェース部4を介して、読出データをDIMM5のDRAM51から取得する。このとき、受信部選択回路35は、1サイクルで各DRAM51から4ビットずつ読出データを取得し、全部で144ビットの読出データを1サイクルで取得する。そして、受信部選択回路35は、144ビットの中のDRAM51の0及び1番目のビットから読み出した読出データを全て読出データ受信部36aに格納したか否かを判定する。
読出データ受信部36aに格納する読出データが残っている場合、受信部選択回路35は、DRAM51の0及び1番目のビットから読み出した読出データを読出データ受信部36aへ出力する。
次に、読出データ受信部36aへ読出データを全て格納した場合、受信部選択回路35は、DRAM51の2及び3番目のビットから読み出した読出データを全て読出データ受信部36bへ出力する。読出データ受信部36bへの読出データの格納が完了すると、受信部選択回路35は、読出データの読み出しの2サイクル目を行う。
受信部選択回路35は、8サイクル分のデータを出力するまで、データの読み出し及び出力を繰り返す。
読出データ受信部36aは、読出データの入力を受信部選択回路35から受ける。読出データ受信部36aは、1つのグループに含まれる288ビットの読出データ全てが格納されるまで待機する。そして、1つのグループの288ビットの読出データの格納が完了すると、読出データ受信部36aは、格納が完了したグループの読出データをエラー制御部37aへ出力する。
読出データ受信部36bは、読出データの入力を受信部選択回路35から受ける。読出データ受信部36bは、1つのグループに含まれる288ビットの読出データ全てが格納されるまで待機する。そして、1つのグループの288ビットの読出データの格納が完了すると、読出データ受信部36bは、格納が完了したグループの読出データをエラー制御部37bへ出力する。
エラー制御部37aは、1つのグループに含まれる288ビットの読出データの入力を読出データ受信部36aから受ける。そして、エラー制御部37aは、受信した読出データのチェックビットから24ビットの誤り訂正符号を取得する。そして、エラー制御部37aは、取得した誤り訂正符号を用いて、残りの264ビットの読出データのエラー検出を行う。エラー制御部37aは、1つのグループに属するデータに対して、1つのDRAM51の2ビット以下のエラーの訂正、又は、2つのDRAM51におけるそれぞれの2ビット以下のエラーの検出が可能である。
エラーが検出されなければ、エラー制御部37aは、受信した読出データを送出データ選択回路38へ出力する。
これに対して、検出したエラーが1つのDRAM51の2ビット以下の故障であれば、エラー制御部37aは、読出データのエラー訂正を行う。そして、エラー制御部37aは、エラー訂正を行った読出データを送出データ選択回路38へ出力する。
また、検出したエラーが2つのDRAM51におけるそれぞれ2ビット以下の故障の場合、エラー制御部37aは、検出したエラーを送出データ選択回路38へ通知する。
エラー制御部37bは、1つのグループの288ビットの読出データの入力を読出データ受信部36bから受ける。そして、エラー制御部37bは、受信した読出データのチェックビットから24ビットの誤り訂正符号を取得する。そして、エラー制御部37bは、取得した誤り訂正符号を用いて、残りの264ビットの読出データのエラー検出を行う。エラー制御部37bは、1つのDRAM51の2ビット以下の故障、又は、2つのDRAM51におけるそれぞれの2ビット以下の故障を検出する。
エラーが検出されなければ、エラー制御部37bは、受信した読出データを送出データ選択回路38へ出力する。
これに対して、検出したエラーが1つのDRAM51の2ビット以下の故障であれば、エラー制御部37bは、読出データのエラー訂正を行う。そして、エラー制御部37bは、エラー訂正を行った読出データを送出データ選択回路38へ出力する。
また、検出したエラーが2つのDRAM51におけるそれぞれ2ビット以下の故障の場合、エラー制御部37bは、検出したエラーを送出データ選択回路38へ通知する。
ここで、エラー制御部37aとエラー制御部37bとはそれぞれ、DRAM51において異なるビットに格納された異なるグループのデータに対してエラーチェックをそれぞれ独立して行う。すなわち、エラー制御部37a及び38bがエラーを検出したビットはそれぞれ異なるビットである。そのため、エラー制御部37a及び38bによる、それぞれのエラー訂正及び検出の結果は重複することはない。したがって、エラー制御部37a及び38bは、以下のエラー訂正及び検出を実現できる。
ここで、図3を参照して、本実施例に係るメモリコントローラ3によるエラー訂正及び検出についてさらに説明する。
例えば、DRAM#0の0番目のビットでエラーが発生した場合で説明する。DRAM#0の0番目のビットに格納されるデータは、区画501で示されるようにGRP0−BLK00に属する。この場合、GRP0のグループにおいて1つのブロックで1ビットのエラーが発生したので、エラー制御部37aにより、エラー訂正が行われる。
DRAM#0の0番目のビットでのエラーに加えて、DRAM#0の1番目のビットでエラーが発生した場合について説明する。DRAM#0の1番目のビットに格納されるデータは、区画501で示されるようにGRP0−BLK00に属する。この場合、GRP0のグループにおいて1つのブロックで2ビットのエラーが発生したので、エラー制御部37aにより、エラー訂正が行われる。
また、DRAM#0の2及び3番目のビットにおいてエラーが発生した場合について説明する。DRAM#0の2及び3番目のビットに格納されたデータは、区画502に示されるようにGRP1−BLK00に属する。すなわち、DRAM#0の2及び3番目のビットに格納されたデータは、DRAM#0の0及び1番目のビットとは異なるグループに属する。そのため、DRAM#0の2及び3番目のビットに格納されたデータについても、0及び1番目のビットとは独立してエラー制御部37bにより0及び1番目のビットと同様にエラー訂正が行われる。したがって、DRAM#0の0〜3番目のビットの全てでエラーが発生しても、エラー制御部37a及び37bによりエラー訂正が行われる。
また、DRAM#0の0及び1番目のビット、並びに、DRAM#1の2及び3番目のビットでエラーが発生した場合について説明する。DRAM#1の2及び3番目のビットに格納されるデータは、区画504で示されるようにGRP1−BLK01に属する。すなわち、DRAM#1の2及び3番目のビットについては、DRAM#0の2及び3番目のビットに対するエラー訂正と同様の処理が行われる。そこで、GRP0のグループにおける1つのブロックでの2ビット以下のエラーについては、エラー制御部37aにより、エラー訂正が行われる。また、GRP1のグループにおける1つのブロックでの2ビット以下のエラーについては、エラー制御部37bにより、エラー訂正が行われる。したがって、DRAM#0の0及び1番目のビットにおける2ビット以下のエラー及びDRAM#1の2及び3番目のビットにおける2ビット以下のエラーの発生が重なっても、メモリコントローラ3は、それぞれのエラーを訂正することが可能である。
これに対して、DRAM#0の0及び1番目のビットのエラーに加えて、DRAM#1の0及び1番目のビットでエラーが発生した場合について説明する。DRAM#1の0及び1番目のビットに格納されるデータは、区画503で示されるようにGRP0−BLK01に属する。すなわち、DRAM#0の0及び1番目のビットのデータ及びDRAM#1の0及び1番目のビットのデータは、いずれもGRP0のグループに属し、且つ、それぞれが異なるブロックに属する。この場合、同一グループの2つの異なるブロックでエラーが発生している。したがって、この場合は、エラー制御部37aは、エラーを検出することはできるが訂正することはできない。
また、エラー制御部37a及び37bでは、エラー検出はそれぞれ独立して行われる。そのため、2つのDRAM51のGRP0に属するデータを格納するビットのエラーの検出及び2つのDRAM51のGRP1に属するデータを格納するビットのエラーの検出が並行して可能である。例えば、DRAM#33及び#34の2及び3番目のビットに格納されたデータは、区画506及び508に示すように、GRP1のグループに属する。したがって、DRAM#0及び#1の0及び1番目のビットのエラー、並びに、DRAM#33及び#34の2及び3番目のビットのエラーが重ねて起こっても、メモリコントローラ3は、エラーを検出することができる。
これに対して、例えば、DRAM#33及び#34の0及び1番目のビットに格納されたデータは、区画505及び507に示すように、GRP0のグループに属する。そのため、DRAM#0及び#1の0及び1番目のビットでエラーが発生した状態で、DRAM#33又は#34の0及び1番目のビットにエラーが発生した場合、同一グループの3つ以上のブロックでエラーが発生している。そのため、この場合は、エラー制御部37aは、エラーの検出ができない。
以上をまとめると、本実施例に係るメモリコントローラ3では、1つのDRAM51の4ビットのエラーの訂正が行われる。また、2つのDRAM51において、故障したビットに格納されたデータが属するグループが異なる場合、それぞれの2ビット以下のエラーの訂正が行われる。ただし、故障したビットに格納されたデータが属するグループが同一の場合、エラーの検出のみが行われる。また、2つのDRAM51のそれぞれの4ビットの故障の検出が行われる。また、故障したビットに格納されたデータの属するグループが3つ以上重ならなければ、最大4つのDRAM51の2ビット以下のエラーの検出が行われる。
送信データ選択回路38は、エラー制御部37a又は37bからデータを受信すると、受信したデータを調停部22へ送出する。また、送信データ選択回路38は、エラー制御部37a又は37bからエラー発生の通知を受信した場合、CPU1にエラー発生を通知する。
次に、図4を参照して、本実施例に係るメモリコントローラ3による書込データのDIMM5への書込処理の流れについて説明する。図4は、実施例1に係るメモリコントローラによる書込データのDIMMへの書込処理のフローチャートである。
受信部選択回路31は、書込データを調停部22から受信する(ステップS101)。
受信部選択回路31は、書込データ受信部32aに書込データ格納済みか否かを判定する(ステップS102)。書込データ受信部32aに書込データが格納済みでない場合(ステップS102:否定)、受信部選択回路31は、受信した書込データを書込データ受信部32aに格納する(ステップS103)。その後、受信部選択回路31は、ステップS101に戻る。
これに対して、書込データ受信部32aに書込データが格納済みである場合(ステップS102:肯定)、受信部選択回路31は、受信した書込データを書込データ受信部32bに格納する(ステップS104)。書込データ受信部32a及び32bは、データの格納が完了すると、書込データをそれぞれチェックビット生成部33a及び33bへ出力する。
チェックビット生成部33a及び33bは、受信した書込データから誤り訂正符号を生成し、生成した誤り訂正符号を書込データに付加する(ステップS105)。
書込データ選択回路34は、チェックビット生成部33a及び33bが保持する書込データの中からDIMM5に書き込む書込データを選択する(ステップS106)。
次に、書込データ選択回路34は、チェックビット生成部33aの書込データを選択したか否かを判定する(ステップS107)。チェックビット生成部33aの書込データを選択した場合(ステップS107:肯定)、書込データ選択回路34は、各DRAM51の0及び1番目のビットを書き込み先として選択する(ステップS108)。
これに対して、チェックビット生成部33bの書込データを選択した場合(ステップS107:否定)、書込データ選択回路34は、各DRAM51の2及び3番目のビットを書き込み先として選択する(ステップS109)。
そして、書込データ選択回路34は、各DRAM51の選択したビットへ書込データを書き込む(ステップS110)。
次に、書込データ選択回路34は、4サイクル分のデータの書き込みを完了したか否かを判定する(ステップS111)。4サイクル分のデータの書き込みを完了していない場合(ステップS111:否定)、書込データ選択回路34は、ステップS106へ戻る。
これに対して、4サイクル分のデータの書き込みを完了した場合(ステップS111:肯定)、受信部選択回路31は、書込データの書き込みが全て完了したか否かを判定する(ステップS112)。すなわち、受信部選択回路31は、8サイクル分の書込データの書き込みを行ったかを判定する。書き込んでいない書込データが残っている場合(ステップS112:否定)、受信部選択回路31は、ステップS101に戻る。
一方、書込データの書き込みが全て完了した場合(ステップS112:肯定)、受信部選択回路31〜書込データ選択回路34は、書込処理を終了する。ここで、図4のフローチャートは、1回のバースト転送における書込処理を示しており、指定された書込データの全てをDIMM5に書き込むには、メモリコントローラ3は、図4のフローの処理を書込データがなくなるまで繰り返す。
次に、図5を参照して、本実施例に係るメモリコントローラ3による読出データのDIMM5からの読出処理の流れについて説明する。図5は、実施例1に係るメモリコントローラによる読出データのDIMMからの読出処理のフローチャートである。
受信部選択回路35は、1サイクル分の読出データをDIMM5のDRAM51から受信する(ステップS201)。
次に、受信部選択回路35は、読出データ受信部36aにデータを格納済みか否か、すなわち、DRAM51の0及び1番目のビットに格納されていた読出データを読出データ受信部36aに全て格納したか否かを判定する(ステップS202)。読出データ受信部36aに読出データが格納済みでない場合(ステップS202:否定)、受信部選択回路35は、DRAM51の0及び1番目のビットに格納されていた読出データを読出データ受信部36aに格納する(ステップS203)。そして、受信部選択回路35は、ステップS202へ戻る。
これに対して、読出データ受信部36aに読出データが格納済みである場合(ステップS202:肯定)、受信部選択回路35は、DRAM51の2及び3番目のビットに格納されていた読出データを読出データ受信部36bに格納する(ステップS204)。
そして、読出データ受信部36a及び36bは、それぞれ4サイクル分の読出データの格納が完了したか否かを判定する(ステップS205)。ここでの説明では、4サイクルで2つのグループのデータを読み出す場合で説明する。4サイクル分の読出データの格納が完了していない場合(ステップS205:否定)、受信部選択回路35は、ステップS201に戻る。
これに対して、4サイクル分の読出データの格納が完了した場合(ステップS205:肯定)、読出データ受信部36a及び36bは、それぞれエラー制御部37a及び37bに読出データを出力する。エラー制御部37a及び37bは、読出データの入力をそれぞれ読出データ受信部36a及び36bから受ける。そして、エラー制御部37a及び37bは、受信した読出データに付加された誤り訂正符号を用いて、エラー訂正及び検出を行う(ステップS206)。
送出データ選択回路38は、エラー制御部37aのデータを送出済みか否かを判定する(ステップS207)。エラー制御部37aのデータが送出済みでない場合(ステップS207:否定)、送出データ選択回路38は、読出データをエラー制御部37aから取得し、取得した読出データを調停部22へ送出する(ステップS208)。その後、送出データ選択回路38は、ステップS207へ戻る。
これに対して、エラー制御部37aのデータが送出済みである場合(ステップS207:肯定)、送出データ選択回路38は、読出データをエラー制御部37bから取得し、取得した読出データを調停部22へ送出する(ステップS209)。
次に、受信部選択回路35は、読出データの読み出しが全て完了したか否か、すなわち、8サイクル分のデータの読み出しが完了したか否かを判定する(ステップS210)。読み出していない読出データが残っている場合(ステップS210:否定)、受信部選択回路35は、ステップS201へ戻る。
一方、読出データの読み出しが全て完了した場合(ステップS210:肯定)、受信部選択回路35〜送出データ選択回路38は、読出処理を終了する。
以上に説明したように、本実施例に係るメモリコントローラは、1つのDRAMの異なるビットに、異なるECC単位に属するデータを格納する。これにより、2つのDRAMにおいて2ビット以下の故障が発生してもエラー訂正を行うことができる。また、4つのDRAMにおいて2ビット以下の故障が発生してもエラー検出を行うことができる。
また、本実施例に係るメモリコントローラは、チェック範囲を広くするためにチェックビットのサイズを大きくすることは行っていない。したがって、書き込みデータ量を減らさずにデータの訂正及び検出可能な範囲を大きくする演算処理装置、メモリ制御装置及び演算処理装置の制御方法を提供する。
(変形例)
次に、実施例1の変形例について説明する。実施例1では、各DRAM51の0及び1番目のビットに同じグループに属するデータを格納し、2及び3番目のビットに同じグループに属するデータを格納した。ただし、データの格納位置はこれに限らず、1つのDRAM51の2つのビットに同じグループに属するデータを格納すればよい。
本変形例に係るメモリコントローラ3は、例えば、図6に示すように、DRAM51の0及び2番目のビットに同じグループに属するデータを格納し、1及び3番目のビットに同じグループに属するデータを格納する。図6は、実施例1の変形例におけるDIMMのデータの格納状態の一例を表す図である。
図6のようにデータを格納しても、1つのDRAM51において2つのグループに属するデータが格納されている。すなわち、0及び2番目のビットに格納されたデータは、GRP0のグループにおけるECC機能によりエラー訂正及び検出が行われ、1及び3番目のビットに格納されたデータは、GRP1のグループにおけるECC機能によりエラー訂正及び検出が行われる。
したがって、図6のように1つのDRAMの2つのビットに同じグループに属するデータを格納すれば、実施例1と同様に、2つのDRAMにおいて2ビット以下の故障が発生してもエラー訂正を行うことができる。また、4つのDRAMにおいて2ビット以下の故障が発生してもエラー検出を行うことができる。
さらに、実施例1及び変形例では、全てのDRAM51の同じビットに同じグループに属するデータを格納したが、データの格納位置はこれに限らない。例えば、以下のように各DIAMの異なるビットに同じグループのデータを格納してもよい。すなわち、図6のDRAM#0には、0及び1番目のビットにGRP0のグループに属するデータを格納し、2及び3番目のビットにGRP1のグループに属するデータを格納する。また、DRAM#1には、0及び2番目のビットにGRP0のグループに属するデータを格納し、1及び3番目のビットにGRP1のグループに属するデータを格納する。このように、DRAM毎に異なるビットに同じグループに属するデータを格納しても、同様にエラー訂正及び検出を行うことができる。
図7は、実施例2に係るメモリコントローラのブロック図である。本実施例に係るメモリコントローラは、エラー制御部37が1つにまとめられたことが実施例1と異なる。以下では、実施例1と同様の各部の動作については説明を省略する。
本実施例のメモリコントローラ3は、書込データの前半の2サイクル分の264ビットのデータをGPR0又は2に割り当て、後半の2サイクル分の264ビットのデータをGPR1又は3に割り当てる。さらに、キャッシュ制御部2とメモリコントローラ3との間の1サイクル毎のデータの送受信単位が264ビット以下である。
この場合に、図7に示すように、1つのエラー制御部37で、各データに対するエラー訂正及び検出を管理することができる。
読出データ受信部36a及び36bは、1サイクル毎に72ビットのデータの入力を受信部選択回路35から受ける。そして、読出データ受信部36a及び36bは、288ビット溜まるまで読出データを保持する。
送出データ選択回路38は、読出データ受信部36a及び36bに288ビットの読出データが溜まると、読出データ受信部36aのデータの送出が完了したか否かを判定する。読出データ受信部36aのデータの送出が完了していなければ、送出データ選択回路38は、読出データ受信部36aからデータを取得し、エラー制御部37へ送信する。
また、読出データ受信部36aのデータの送出が完了していれば、送出データ選択回路38は、読出データ受信部36bからデータを取得し、エラー制御部37へ出力する。
エラー制御部37は、読出データの入力を送出データ選択回路38から受ける。そして、エラー制御部37は、受信した読出データの誤り訂正符号を用いてエラー訂正及び検出を行い、エラーが無いもしくは訂正可能であれば、調停部22へ出力する。また、訂正困難なエラーを検出した場合、エラー制御部37は、CPU1にエラーの発生を通知する。
このように、調停部22との間のデータのやり取りが264ビットである場合、エラー制御部37は、送信の都度、288ビットの読出データを受信し、エラー訂正及び検出を行ってデータを送出することができる。したがって、1つのエラー制御部37で、各グループに属するデータのエラー訂正及び検出を行うことができる。
次に、図8を参照して、本実施例に係るメモリコントローラ3による読出データのDIMM5からの読出処理の流れについて説明する。図8は、実施例2に係るメモリコントローラによる読出データのDIMMからの読出処理のフローチャートである。
受信部選択回路35は、読出データをDIMM5のDRAM51から受信する(ステップS301)。
次に、受信部選択回路35は、読出データ受信部36aに読出データを格納済みか否か、すなわち、DRAM51の0及び1番目のビットに格納されていた読出データを読出データ受信部36aに全て格納したか否かを判定する(ステップS302)。読出データ受信部36aに読出データが格納済みでない場合(ステップS302:否定)、受信部選択回路35は、取得した読出データを読出データ受信部36aに格納する(ステップS303)。そして、受信部選択回路35は、ステップS302へ戻る。
これに対して、読出データ受信部36aに読出データが格納済みである場合(ステップS302:肯定)、受信部選択回路35は、DRAM51の2及び3番目のビットに格納されていた読出データを読出データ受信部36bに格納する(ステップS304)。
そして、読出データ受信部36a及び36bは、それぞれ4サイクル分の読出データの格納が完了したか否かを判定する(ステップS305)。ここでの説明では、4サイクルで2つのグループのデータを読み出す場合で説明する。4サイクル分の読出データの格納が完了していない場合(ステップS305:否定)、受信部選択回路35は、ステップS301に戻る。
これに対して、4サイクル分の読出データの格納が完了した場合(ステップS305:肯定)、送出データ選択回路38は、読出データ受信部36aのデータを送出済みか否かを判定する(ステップS306)。読出データ受信部36aのデータが送出済みでない場合(ステップS306:否定)、送出データ選択回路38は、読出データを読出データ受信部36aから取得する(ステップS307)。そして、送出データ選択回路38は、取得した読出データをエラー制御部37へ出力する。
一方、読出データ受信部36aのデータが送出済みである場合(ステップS306:肯定)、送出データ選択回路38は、読出データを読出データ受信部36bから取得する(ステップS308)。そして、送出データ選択回路38は、取得した読出データをエラー制御部37へ出力する。
エラー制御部37は、読出データの入力を送出データ選択回路38から受ける。そして、エラー制御部37は、受信した読出データに付加された誤り訂正符号を用いて、エラー訂正及び検出を行う(ステップS309)。
そして、エラー制御部37は、エラー訂正及び検出を行ったデータを調停部22へ送出する(ステップS310)。
次に、送出データ選択回路38は、読出データ受信部36a及び36b双方のデータを送出済みか否かを判定する(ステップS311)。送出していないデータが残っている場合(ステップS311:否定)、送出データ選択回路38は、ステップS306へ戻る。
これに対して、読出データ受信部36a及び36b双方のデータを送出済みである場合(ステップS311:肯定)、受信部選択回路35は、読出データの読み出しが全て完了したか否か、すなわち、8サイクル分のデータの読み出しが完了したかを判定する(ステップS312)。読み出していない読出データが残っている場合(ステップS312:否定)、受信部選択回路35は、ステップS301へ戻る。
一方、読出データの読み出しが全て完了した場合(ステップS312:肯定)、受信部選択回路35〜送出データ選択回路38は、読出処理を終了する。
以上に説明したように、本実施例に係るメモリコントローラは、1つのエラー制御部により全ての読出データのエラー訂正及び検出を行う。これにより、回路規模の大きいエラー制御部の個数を抑えることができ、回路規模の増加を軽減することができる。
図9は、実施例3に係るメモリコントローラのブロック図である。本実施例に係るメモリコントローラは、1つのDRAMの異なる4つのビットそれぞれに異なるグループに属するデータを格納することが実施例1と異なる。以下では、実施例1と同様の各部の動作については説明を省略する。
本実施例に係るメモリコントローラ3は、書込データ受信部32a〜32d、チェックビット生成部33a〜33d、読出データ受信部36a〜36d及びエラー制御部37a〜37dを有する。
受信部選択回路31は、調停部22から受信した書込データのうち264ビットのデータを書込データ受信部32a〜32dのそれぞれに格納する。
書込データ受信部32a〜32dは、それぞれに書込データの格納が完了した後、保持する書込データをそれぞれチェックビット生成部33a〜33dへ出力する。
チェックビット生成部33a〜33dは、それぞれ書込データ受信部32a〜33dから読出データの入力を受ける。そして、チェックビット生成部33a〜33dは、24ビットの誤り訂正符号を生成し、生成した誤り訂正符号を付加して288ビットの書込データを生成する。
チェックビット生成部33a〜33dによる誤り訂正符号の付加が終わると、書込データ選択回路34は、チェックビット生成部33a〜33dのそれぞれから36ビットの書込データを取得する。
そして、書込データ選択回路34は、チェックビット生成部33aから取得した書込データを各DRAM51の0番目のビットに格納する。また、書込データ選択回路34は、チェックビット生成部33bから取得した書込データを各DRAM51の1番目のビットに格納する。また、書込データ選択回路34は、チェックビット生成部33cから取得した書込データを各DRAM51の2番目のビットに格納する。また、書込データ選択回路34は、チェックビット生成部33dから取得した書込データを各DRAM51の3番目のビットに格納する。書込データ選択回路34は、これらの書込データの格納を1サイクルで行う。
そして、書込データ選択回路34は、チェックビット生成部33a〜33dからの書込データの取得及び取得した書込データの格納を8回繰り返す、8サイクルのバースト転送を行う。これにより、書込データ選択回路34は、各DRAM51の各ビットに、1つのグループに属する8ビットの書込データを格納する。
ここで、図10を参照して、本実施例に係るメモリコントローラ3によるDIMM5におけるデータの格納状態について説明する。図10は、実施例3におけるDIMMのデータの格納状態の一例を表す図である。
図10に示すように、DRAM#0〜#35の0番目のビットには、GRP0のグループに属する8ビットのデータが格納されている。そして、DRAM#0〜#35のそれぞれの0番目のビットに、異なるブロックが割り当てられている。また、DRAM#0〜#35の1番目のビットには、GRP1のグループに属するデータが格納されている。そして、DRAM#0〜#35のそれぞれの1番目のビットに、異なるブロックが割り当てられている。また、DRAM#0〜#35の2番目のビットには、GRP2のグループに属するデータが格納されている。そして、DRAM#0〜#35のそれぞれの2番目のビットに、異なるブロックが割り当てられている。また、DRAM#0〜#35の3番目のビットには、GRP3のグループに属するデータが格納されている。そして、DRAM#0〜#35のそれぞれの3番目のビットに、異なるブロックが割り当てられている。
受信部選択回路35は、1サイクルで、各DRAM51から4ビットずつ全部で144ビットの読出データの読み出しを行う。そして、受信部選択回路35は、読み出した読出データの内、GRP0に属するデータを読出データ受信部36aに出力する。また、受信部選択回路35は、読み出した読出データの内、GRP1に属するデータを読出データ受信部36bに出力する。また、受信部選択回路35は、読み出した読出データの内、GRP2に属するデータを読出データ受信部36cに出力する。また、受信部選択回路35は、読み出した読出データの内、GRP3に属するデータを読出データ受信部36dに出力する。受信部選択回路35は、読出データの読み出し及び出力を8サイクル行う。
読出データ受信部36a〜36dは、読出データが288ビットになるまでデータを保持する。なぜなら、ECC単位が288ビットであり、1つのグループの全てのデータがそろうことで、次のエラー制御部37a〜37dにおいてエラー訂正及び検出が行えるからである。
そして、読出データ受信部36a〜36dは、読出データが288ビットになると、読出データをそれぞれエラー制御部37a〜37dへ送出する。
エラー制御部37a〜37dは、それぞれ同じグループの288ビットのデータの入力を読出データ受信部36a〜36dから受ける。そして、エラー制御部37a〜37dは、受信した読出データのエラー訂正及び検出を行う。
ここで、図10を参照して、本実施例におけるエラー制御部37a〜37dによるエラー訂正及び検出について説明する。エラー制御部37a〜37dは、それぞれ異なるグループに属するデータのエラー訂正及び検出を行う。すなわち、エラー制御部37a〜37dは、それぞれ独立してエラーチェックを行う。したがって、エラー制御部37a〜37dは、それぞれが保持する読出データにおいて、1つのDRAM51のエラーであれば訂正及び検出が可能である。また、エラー制御部37a〜37dは、それぞれが保持する読出データにおいて、2つのDRAM51におけるエラーであれば、検出が可能である。
すなわち、メモリコントローラ3は、4つのDRAM51において異なるグループのデータを格納する1ビットずつの故障が発生した場合、エラー訂正が可能である。すなわち、1つのDRAM51の故障であれば4ビットの故障まで訂正できる。
さらに、グループが異なる1ビットの故障であれば、どのDRAM51で故障が発生しても、メモリコントローラ3は、エラー訂正が可能である。例えば、メモリコントローラ3は、2つのDRAM51において異なるグループに属するデータを格納する2ビットが故障し、且つ故障したDRAM51間で故障したビットに格納されるデータの属するグループが異なる場合、エラー訂正が可能である。
また、2つのDRAM51であれば、最大それぞれで4ビットの故障が発生した場合にも、メモリコントローラ3は、エラー検出を行うことができる。
また、メモリコントローラ3は、2つのDRAM51の組において同じグループのデータを格納する1ビットの故障が、4つの異なるDRAM51の組で発生した場合、エラー検出が可能である。すなわち、本実施例に係るメモリコントローラ3は、最大8個のDRAM51の1ビットのエラー検出が可能である。
さらに、1つのDRAM51で2つのビットが故障し、それが4つのDRAM51でグループが3つ以上重ならないように発生した場合、メモリコントローラ3は、エラー検出が可能である。すなわち、本実施例に係るメモリコントローラ3は、最大4つのDRAM51のそれぞれが2ビットずつ故障した場合にもエラーの検出が可能である。
送出データ選択回路38は、エラー制御部37a〜37dのいずれかを選択し、読出データを取得する。そして、送出データ選択回路38は、取得した読出データを調停部22へ出力する。ここで、送出データ選択回路38によるデータの選択及び送出の順番は特に制限はない。
以上に説明したように、本実施例に係るメモリコントローラは、最大4つのDRAMの1ビットのエラーの訂正が可能である。また、本実施例に係るメモリコントローラは、最大4つのDRAMの2ビットのエラー検出が可能である。さらに、本実施例に係るメモリコントローラは、最大8つのDRAMの1ビットのエラー検出が可能である。このように、本実施例に係るメモリコントローラは、広い範囲のエラーの訂正及び検出を行うことができる。さらに、本実施例に係るメモリコントローラは、頻度の高い1ビットのエラーが発生した場合のシステムの安定性を向上させることができる。
図11は、実施例4に係るメモリコントローラのブロック図である。本実施例に係るメモリコントローラは、エラー制御部が1つにまとめられたことが実施例3と異なる。以下では、実施例3と同様の各部の動作については説明を省略する。
本実施例のメモリコントローラ3は、キャッシュ制御部2とメモリコントローラ3との間の1サイクル毎のデータの送受信単位が264ビット以下である。この場合に、図11に示すように、1つのエラー制御部37で、各データに対するエラー訂正及び検出を管理することができる。
例えば、送出データ選択回路38は、読出データ受信部36aから読出データを取得し、エラー制御部37へ出力する。読出データ受信部36aから取得した読出データがエラー制御部37から送出されると、送出データ選択回路38は、読出データ受信部36bから読出データを取得し、エラー制御部37へ出力する。読出データ受信部36bから取得した読出データがエラー制御部37から送出されると、送出データ選択回路38は、読出データ受信部36cから読出データを取得し、エラー制御部37へ出力する。読出データ受信部36cから取得した読出データがエラー制御部37から送出されると、送出データ選択回路38は、読出データ受信部36dから読出データを取得し、エラー制御部37へ出力する。
エラー制御部37は、読出データ受信部36aから出力された読出データの入力を送出データ選択回路38から受ける。そして、エラー制御部37は、読出データ受信部36aから出力された読出データのエラー訂正及び検出を行う。そして、エラー制御部37は、エラー訂正及び検出後の264ビットのデータを調停部22へ送出する。
次に、エラー制御部37は、読出データ受信部36bから出力された読出データの入力を送出データ選択回路38から受ける。そして、エラー制御部37は、読出データ受信部36bから出力された読出データのエラー訂正及び検出を行う。そして、エラー制御部37は、エラー訂正及び検出後の264ビットのデータを調停部22へ送出する。
次に、エラー制御部37は、読出データ受信部36cから出力された読出データの入力を送出データ選択回路38から受ける。そして、エラー制御部37は、読出データ受信部36cから出力された読出データのエラー訂正及び検出を行う。そして、エラー制御部37は、エラー訂正及び検出後の264ビットのデータを調停部22へ送出する。
次に、エラー制御部37は、読出データ受信部36dから出力された読出データの入力を送出データ選択回路38から受ける。そして、エラー制御部37は、読出データ受信部36dから出力された読出データのエラー訂正及び検出を行う。そして、エラー制御部37は、エラー訂正及び検出後の264ビットのデータを調停部22へ送出する。
これにより、エラー制御部37は、8サイクル分の読出データの送出を完了する。
以上に説明したように、本実施例に係るメモリコントローラは、実施例3の機能を有しつつ、1つのエラー制御部により全ての読出データのエラー訂正及び検出を行う。これにより、より広い範囲のエラーの訂正及び検出を実現しつつ、回路規模の大きいエラー制御部の個数を抑えることができ、回路規模の増加を軽減することができる。
ここで、本実施例では、8バーストの転送である場合で説明したが、例えば、4バーストの転送のデータを2回蓄積し、8バースト分のデータとした後に、誤り訂正符号を作成付加してDIMM5に本実施例と同様に格納してもよい。
また、以上の各実施例では、4サイクル分のデータで2つのECC単位、すなわちグループを作成する場合、及び8サイクル分のデータで4つのECC単位を作成する場合で説明したがデータの格納方法はこれに限らない。ECC単位に含まれる各ブロックを各DRAMの一部のビットに格納すればよい。例えば、バースト転送における1サイクルの転送量が144ビットであり、ECC単位が288ビットである場合、144ビット×n(サイクル数)のデータで、288ビット×m(ECC単位、すなわちグループの数)を作成する。ここで、nは3以上の整数であり、mは2以上の整数であり、n>mを満たす。そして、作成したm個のECC単位をブロックに分割して、各DRAMに各ECC単位のブロックが格納されるようにデータを格納すればよい。
1 CPU
2 キャッシュ制御部
3 メモリコントローラ
4 メモリインタフェース部
5 DIMM
6 ハードディスク
7 ネットワークインタフェース
21 キャッシュ
22 調停部
31 受信回路選択部
32a〜32d 書込データ受信部
33a〜33d チェックビット生成部
34 書込データ選択回路
35 受信部選択回路
36a〜36d 読出データ受信部
37,37a〜37d エラー制御部
38 送出データ選択回路
51 DRAM
100 演算処理装置
211 キャッシュライン

Claims (8)

  1. データを出力する演算処理部と、
    前記演算処理部が出力したデータの格納領域を複数有する記憶部と、
    前記演算処理部が出力する各データに対してチェックを行うためのエラーチェック用符号をそれぞれ生成し、生成した各エラーチェック用符号を各データに付加したエラーチェック符号付データを生成するデータ生成部と、
    前記データ生成部が生成したエラーチェック符号付データを分割して分割データを生成し、異なる前記エラーチェック符号付データの前記分割データを結合して、各前記格納領域にそれぞれ格納する格納制御部と
    を備えたことを特徴とする演算処理装置。
  2. 前記演算処理部は、第1データ及び第2データを出力し、
    前記データ生成部は、前記第1データを基に第1エラーチェック符号付データを生成し、前記第2データを基に第2エラーチェック符号付データを生成し、
    前記格納制御部は、前記第1エラーチェック符号付データを分割して第1分割データを生成し、前記第2エラーチェック符号付データを分割して第2分割データを生成し、各格納領域を2分割した領域である上位側領域又は下位側領域のいずれか一方の分割領域の各々に前記第1分割データをそれぞれ格納し、各格納領域の他方の分割領域の各々に前記第2分割データをそれぞれ格納する
    ことを特徴とする請求項1に記載の演算処理装置。
  3. 前記データ生成部は、前記エラーチェック符号付データをm個(mは2以上の整数)合わせた、前記記憶部に1回に格納できる所定量をn倍(nは3以上の整数、且つ、n>m)したデータ量のデータ群を蓄積し、
    前記格納制御部は、前記データ生成部が蓄積する前記データ群から各所定量のデータを取得して各格納領域に格納する処理をn回繰り返すことで、m個の前記エラーチェック符号付データそれぞれにおけるエラーチェックの対象となる単位のデータを各格納領域に格納する
    ことを特徴とする請求項1又は2に記載の演算処理装置。
  4. 各前記格納領域に格納された分割された前記エラーチェック符号付データを取得して、前記エラーチェック符号付データを生成し、前記エラーチェック用符号を用いて生成した前記データのエラーチェックを行うエラー制御部をさらに備えたことを特徴とする請求項1〜3の何れか一つに記載の演算処理装置。
  5. 前記格納制御部は、各格納領域に複数の前記エラーチェック符号付データを分割した分割データを格納し、
    前記演算処理部は前記エラー制御部を複数備え、各前記エラー制御部は、各格納領域から前記分割データを取得することで前記エラーチェック符号付データのいずれか1つを各々取得して、各データのエラーチェックを行う
    ことを特徴とする請求項4に記載の演算処理装置。
  6. 前記格納制御部は、各格納領域に複数の前記エラーチェック符号付データを分割した分割データを格納し、
    一つの前記エラー制御部が、各格納領域から前記分割データを取得することで複数の前記エラーチェック符号付データを順次取得して、前記データのエラーチェックを順次行う
    ことを特徴とする請求項4に記載の演算処理装置。
  7. データを出力する演算処理部と、前記演算処理部が出力したデータの格納領域を複数有するメモリとに接続されるメモリ制御装置であって、
    前記演算処理部が出力する各データに対してチェックを行うためのエラーチェック用符号をそれぞれ生成し、生成した各エラーチェック用符号を各データに付加したエラーチェック符号付データを生成するデータ生成部と、
    前記データ生成部が生成したエラーチェック符号付データを分割して分割データを生成し、異なる前記エラーチェック符号付データの前記分割データを結合して、各前記格納領域にそれぞれ格納する格納制御部と
    を備えたことを特徴とするメモリ制御装置。
  8. 演算処理部及びデータの格納領域を複数有する記憶部を備えた演算処理装置の制御方法であって、
    前記演算処理部が出力する各データに対してチェックを行うエラーチェック用符号をそれぞれ生成し、
    生成した各エラーチェック符号を各データに付加したエラーチェック符号付データを生成し、
    生成したエラーチェック符号付データを分割して分割データを生成し、
    異なる前記エラーチェック符号付データの前記分割データを結合して、各前記格納領域にそれぞれ格納する、
    ことを特徴とする演算処理装置の制御方法。
JP2015018578A 2015-02-02 2015-02-02 演算処理装置、メモリ制御装置及び演算処理装置の制御方法 Active JP6515555B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015018578A JP6515555B2 (ja) 2015-02-02 2015-02-02 演算処理装置、メモリ制御装置及び演算処理装置の制御方法
US14/995,253 US20160224410A1 (en) 2015-02-02 2016-01-14 Processing apparatus, memory-controlling apparatus, and control method of processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015018578A JP6515555B2 (ja) 2015-02-02 2015-02-02 演算処理装置、メモリ制御装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2016143235A JP2016143235A (ja) 2016-08-08
JP6515555B2 true JP6515555B2 (ja) 2019-05-22

Family

ID=56554292

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015018578A Active JP6515555B2 (ja) 2015-02-02 2015-02-02 演算処理装置、メモリ制御装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20160224410A1 (ja)
JP (1) JP6515555B2 (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3778540B2 (ja) * 1999-05-17 2006-05-24 東芝デジタルメディアエンジニアリング株式会社 信号処理回路及び情報記録装置
US6662333B1 (en) * 2000-02-04 2003-12-09 Hewlett-Packard Development Company, L.P. Shared error correction for memory design
JP2002032270A (ja) * 2000-07-14 2002-01-31 Hitachi Ltd 主記憶制御装置
US7318190B2 (en) * 2004-06-10 2008-01-08 Intel Corporation Storage device parity computation
US7827473B2 (en) * 2006-10-10 2010-11-02 Broadcom Corporation Turbo decoder employing ARP (almost regular permutation) interleave and arbitrary number of decoding processors
KR20100098969A (ko) * 2009-03-02 2010-09-10 삼성전자주식회사 에러 정정 코드들의 신뢰성을 향상시킬 수 반도체 장치, 이를 포함하는 반도체 시스템, 및 에러 정정 코드 처리 방법
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US7987407B2 (en) * 2009-08-20 2011-07-26 Arm Limited Handling of hard errors in a cache of a data processing apparatus
WO2011094454A2 (en) * 2010-01-27 2011-08-04 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US9367391B2 (en) * 2013-03-15 2016-06-14 Micron Technology, Inc. Error correction operations in a memory device
JP6070374B2 (ja) * 2013-03-29 2017-02-01 富士通株式会社 情報処理装置、メモリ試験プログラムおよびメモリ試験方法
US9559726B2 (en) * 2015-06-15 2017-01-31 Intel Corporation Use of error correcting code to carry additional data bits

Also Published As

Publication number Publication date
US20160224410A1 (en) 2016-08-04
JP2016143235A (ja) 2016-08-08

Similar Documents

Publication Publication Date Title
KR101573566B1 (ko) 확장 단일-비트 오류 정정 및 다중-비트 오류 검출
US8132086B2 (en) Semiconductor memory device for byte-based masking operation and method of generating parity data
US7882417B2 (en) Semiconductor memory device and memory system including the same
US20130198587A1 (en) Memory buffer performing error correction coding (ecc)
US9507662B2 (en) Expanded error correction codes
JP2005202957A (ja) エラー訂正のためのデータの分割
US9577671B2 (en) Parity check circuit and memory device including the same
US11113145B2 (en) Memory device, semiconductor device, and semiconductor system
US11392454B2 (en) Memory controllers, memory systems and memory modules
KR102254100B1 (ko) 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법
CN105556477B (zh) 与主机处理器的存储器模块通信的方法和系统
KR20150090414A (ko) 에러 정정 동작을 수행하는 반도체 장치
JP2010198657A (ja) メモリ装置
CN103218271A (zh) 一种数据纠错方法及装置
KR20190118027A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180087494A (ko) 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법
US20210083690A1 (en) Memory system and operating method thereof
JP6090489B1 (ja) エラー検知装置、記憶装置およびエラー訂正方法
CN116457761A (zh) 一种存储装置、存储控制装置及片上系统
JP6515555B2 (ja) 演算処理装置、メモリ制御装置及び演算処理装置の制御方法
JP2010092574A (ja) フラッシュファイルシステムの誤り訂正機能
US9092354B2 (en) Storage device, CRC generation device, and CRC generation method
JP2021520555A (ja) 階層デコーダを使用したエラー訂正
US9361180B2 (en) Storing data by an ECC memory
US10140025B2 (en) Memory system including memory controller and operation method thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180925

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181114

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190401

R150 Certificate of patent or registration of utility model

Ref document number: 6515555

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150