JP2014096021A - ブロックメモリ装置、データ補正方法およびプログラム - Google Patents

ブロックメモリ装置、データ補正方法およびプログラム Download PDF

Info

Publication number
JP2014096021A
JP2014096021A JP2012247036A JP2012247036A JP2014096021A JP 2014096021 A JP2014096021 A JP 2014096021A JP 2012247036 A JP2012247036 A JP 2012247036A JP 2012247036 A JP2012247036 A JP 2012247036A JP 2014096021 A JP2014096021 A JP 2014096021A
Authority
JP
Japan
Prior art keywords
error
function
port
function unit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012247036A
Other languages
English (en)
Inventor
Yoshihiro Kubo
善弘 久保
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2012247036A priority Critical patent/JP2014096021A/ja
Publication of JP2014096021A publication Critical patent/JP2014096021A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】TDPで動作させてもECC機能の使用を可能とし、ビット化けに対して記憶データを保護することを可能とするブロックメモリ装置等を提供する。
【解決手段】第1のエラーチェック機能を有する第1のブロックRAM101と、第2のエラーチェック機能を持つ第2のブロックRAM110,120と、一方の入出力ポートを介して外部から受信した書き込みデータを第1および第2のブロックRAMに同時に送信するアクセス機能部150,160とを有すると共に、データ読み出しの際に第1のブロックRAMから読み出されたデータに対して第1のエラーチェック機能でエラーチェックを行い、この第1のエラーチェック機能でエラーが検出されなければ第1のブロックRAMから読み出されたデータをアクセス機能部および入出力ポートを介して外部に出力するエラー補正機能部130,140を備える。
【選択図】図1

Description

本発明はブロックメモリ装置、データ補正方法およびプログラムに関し、特にFPGA(Field Programmable Gate Array)で動作プログラムを記憶するブロックメモリで、ビット化けに対して記憶データを保護するブロックメモリ装置等に関する。
現在のネットワーク製品や汎用コンピュータにおいて、メモリ製品、またはメモリ機能を有するデバイス製品はなくてはならないものになっている。半導体メモリにおいてはビット化けの発生は不可避であるので、ビット化けが発生した場合にそれを検出あるいは訂正して、これによって記憶されたデータの信頼性を確保している。
より具体的には、たとえばパリティビットやCRC(Cyclic Redundancy Check、巡回冗長検査)コードなどを付加することによるエラー検出や、ECC(Error Check and Correct、誤りエラー検出訂正)コードなどを付加することによるエラー検出訂正が一般的に行われている。汎用コンピュータのメインメモリ領域として使用されるデバイスなどにおいては特に、ビット化けが致命的な問題となるため、データ64ビット中1ビットの化けを検出して訂正することが可能なECC機能をもつデバイスが選択されることが多い。
それに加えて、近年は、汎用コンピュータのプログラムや作業データのみならず、FPGAの出現により、ハードウェアもハードウェア記述言語のプログラミングによって動作するようになっている。オーディオ、ビデオ、通信、コンピュータなどの民生用の各種製品、あるいはインフラ用のネットワーク機器などにも、そのようなFPGAが多く搭載されている(非特許文献1より)。
さらに、C言語などで書かれたコンピュータプログラム、あるいはSQL(Structured Query Language)で記述されたデータ処理内容なども、これらをハードウェア記述言語に変換してFPGAで動作させることによって、ハードウェアとして高速に、かつ高い信頼性をもって処理することを可能とするという技術も開発されている(非特許文献2より)。即ち、FPGAの動作プログラムに対しても、信頼性を確保するためにビット化けを訂正および検出する仕組みが欠かせない。
FPGAの動作プログラム(ハードウェア記述言語)は、フラッシュメモリなどのような外部の記憶手段から、内部のBRAM(Block Random Access Memory)に読み込まれる。これによって、FPGAは任意の論理演算を実現することが可能となる。たとえばネットワーク機器で使用される多くのインタフェースも、これによって実現される。
また、このBRAMでパリティ機能(パリティビット付加によるエラー検出機能)やECC機能(ECCコード付加によるエラー検出訂正機能)などを使用するか否かも、ハードウェア記述言語を記述する段階で選択可能である。
これに関連して、次のような技術文献がある。その中でも特許文献1には、二重化されたシステムバスとメモリを備えたコンピュータで、各バスに備えられたエラー検出回路による検出結果を比較して、この比較結果に応じてどちらのバスを使用するかを切り替えるという計算機システムが記載されている。
特許文献2には、ECC動作のための不足ビットを、パリティビットを記憶するメモリから供給するというコンピュータが記載されている。特許文献3には、第1〜2のメモリ部の各々のパリティビットから、これらのメモリのうちいずれのデータを使用するかを選択するという二重化メモリ装置が記載されている。特許文献4には、一方の記憶手段でエラーが検出された場合に、他方の記憶手段の同一アドレスのデータを書き込んでエラーチェックを行うという二重化記憶システムが記載されている。
非特許文献1にはFPGAの技術についての概要が記載されている。非特許文献2にはコンピュータプログラムやデータ処理内容をハードウェア記述言語に変換し、FPGAによってこれをハードウェアとして動作させるということが記載されている。非特許文献3には、FPGAを効率よく動作させることが可能であるBRAMの使用方法について記載されている。
特開2004−005627号公報 特開平05−173898号公報 特開平04−233052号公報 特開平01−070847号公報
荒井雅、「いまさら聞けないFPGA入門」、2006年9月20日、[平成24年10月15日検索]、(株)アイティメディア(株)、インターネット<URL:http://monoist.atmarkit.co.jp/mn/articles/0609/20/news118.html> 「NEC、ビッグデータ処理の高速化を実現するハードウェアを従来比1/50の期間で設計できる技術を開発(ニュースリリース)」、2012年8月31日、[平成24年10月15日検索]、日本電気株式会社、インターネット<URL:http://jpn.nec.com/press/201208/20120831_01.html> 内藤竜治、「ブロックRAMの使い方(FPGAとVHDLのTipsより)」、平成14年10月12日、[平成24年10月15日検索]、インターネット<URL:http://www.nahitech.com/nahitafu/fpgavhdl/bram/bram.html>
前述のように、開発者がプログラミングすることによってハードウェアを構築することが可能なFPGAは、ネットワーク製品にも適用されることが多くなっている。その場合にもビット化けは発生しうるので、それらに対しては前述のパリティ機能やECC機能を利用して障害を検出し、障害発生時の動作(データの廃棄および再送など)をハードウェア記述言語のプログラム上で記述して対処することが一般的である。
しかしながら、ネットワーク装置では特に、本来なら有効とすべきデータでもビット化けが発生したらパケット廃棄や装置再起動などとなるので、ビット化けの多発は正常パケットに対してもパケット廃棄や装置再起動の多発となり、当該ネットワーク全体に対して悪影響を及ぼすこととなる。そのため、ビット化けに対する処理はFPGA内、特にメモリ装置内で適切に処理される必要がある。FPGAの他の用途に対しても、これと同様の問題点は多かれ少なかれ存在する。
図19は、FPGAにおける一般的なブロックメモリ装置900の構成について示す説明図である。ブロックメモリ装置900は、2つの入出力ポートであるポートA903aおよびポートB903bを備え、これらのポートA903aおよびポートB903bのそれぞれから独立してアクセス可能なメモリ用BRAM901を備える。このメモリ用BRAM901は、ポートA側およびポートB側のそれぞれで使用される記憶領域であるポートA領域901aとポートB領域901bとに分かれる。
そして、ブロックメモリ装置900は、ポートA側およびポートB側のそれぞれにデータの読み書きをするポートA用BRAMアクセス機能部910とポートB用BRAMアクセス機能部920を備える。
ポートA用BRAMアクセス機能部910およびポートB用BRAMアクセス機能部920のそれぞれには、ポートA903aおよびポートB903bを介してFPGAで論理回路を実現するロジックセルや乗算器などが接続され、ハードウェア記述言語で記述されたプログラムによって任意の論理演算を実現することが可能となる。このような構造のメモリ装置を、通常はデュアルポートメモリという。
その際、ポートA/Bの両方からのリード/ライトアクセスがいずれも可能である動作モードと、一方のポートからはリードのみ、もう一方からはライトのみが可能である動作モードが存在する。前者をTDP(True Dual Port Memory)、後者をSDP(Single Dual Port Memory)という。
しかしながら、ブロックメモリ装置900は、TDPで動作させる場合にはECC機能が使用できずにパリティ機能しか使用できないというハードウェア上の制約が存在する。即ち、ECC機能を使用したい場合にはSDPで動作させる必要がある。ビット化けに対する保護は、1ビットの化けを検出することしかできないパリティ機能よりも、64ビット中1ビットの化けの訂正と2ビットの検出ができるECC機能の方が望ましい。しかしながら、BRAMをTDPで動作させるとECC機能が使用できないので、データに対する信頼性を犠牲にすることとなる。
この問題を解決しうる技術は、前述の特許文献1〜4、および非特許文献1〜3のいずれにも記載されていない。特許文献1〜4に記載の技術はいずれも、FPGAに搭載されるデュアルポートメモリに関するものではなく、またこの用途に適用可能なものでもない。非特許文献1〜3は、前述のようなFPGAについての既存技術の概要について述べているに過ぎない。
本願発明の目的は、TDPで動作させてもECC機能、もしくはこれと同等のデータ補正検出機能を使用することを可能とし、これによってビット化けに対して記憶データを保護することを可能とするブロックメモリ装置、データ補正方法およびプログラムを提供することにある。
上記目的を達成するため、本発明に係るブロックメモリ装置は、外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置であって、第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の入出力ポートを介して外部から受信した書き込みデータを第1および第2のブロックRAMに同時に送信するアクセス機能部とを有すると共に、データ読み出しの際に第1のブロックRAMから読み出されたデータに対して第1のエラーチェック機能でエラーチェックを行い、この第1のエラーチェック機能でエラーが検出されなければ第1のブロックRAMから読み出されたデータをアクセス機能部および入出力ポートを介して外部に出力するエラー補正機能部を備えることを特徴とする。
上記目的を達成するため、本発明に係るデータ補正方法は、外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置にあって、このブロックメモリ装置が、第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の入出力ポートを介して外部から受信した書き込みデータを第1および第2のブロックRAMに同時に送信するアクセス機能部とを有するものであり、データ読み出しの際に第1のブロックRAMから読み出されたデータに対して、エラー補正機能部が第1のエラーチェック機能でエラーチェックを行い、この第1のエラーチェック機能でエラーが検出されなければ、第1のブロックRAMから読み出されたデータをエラー補正機能部がアクセス機能部に出力し、当該データをアクセス機能部が入出力ポートを介して外部に出力することを特徴とする。
上記目的を達成するため、本発明に係るデータ補正プログラムは、外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置にあって、このブロックメモリ装置が、第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の入出力ポートを介して外部から受信した書き込みデータを第1および第2のブロックRAMに同時に送信するアクセス機能部とを有するものであり、ブロックメモリ装置が備えるプロセッサに、データ読み出しの際に第1のブロックRAMから読み出されたデータに対して、第1のエラーチェック機能でエラーチェックを行う手順、この第1のエラーチェック機能でエラーが検出されなければ、第1のブロックRAMから読み出されたデータをアクセス機能部に出力する手順、および当該データをアクセス機能部および入出力ポートを介して外部に出力する手順を実行させることを特徴とする。
本発明は、上記したように、第1および第2のブロックRAMのエラーチェック結果に応じてこれらのブロックRAMから読み出されたデータを出力するように構成したので、ブロックRAMの動作モードに起因するハードウェア的な制約に関係なくエラーチェックを行う事が出来る。これによって、TDPで動作させてもECC機能、もしくはこれと同等のデータ補正検出機能を使用することを可能とし、これによってビット化けに対して記憶データを保護することを可能が可能であるという、優れた特徴を持つブロックメモリ装置、データ補正方法およびプログラムを提供することにある。
本発明の第1の実施形態に係るブロックメモリ装置の構成について示す説明図である。 図1で示したポートA用エラー補正機能部(ポートB用エラー補正機能部)のより詳しい構成について示す説明図である。 図1〜2に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)の、メモリ用BRAMに対してリードアクセスがあった場合の動作について示すフローチャートである。 図3に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)の動作で、メモリ用BRAMに対してのリードアクセスでエラーが発生していない時の動作(図3・ステップS106)について示す説明図である。 図3に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)の動作で、メモリ用BRAMに対してのリードアクセスでメモリ用BRAMにエラーが発生した時の動作(図3・ステップS107)について示す説明図である。 図3に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)の動作で、メモリ用BRAMに対してのリードアクセスでメモリ用BRAMとポートA用BRAM(ポートB用BRAM)の両方にエラーが発生した時の動作(図3・ステップS108)について示す説明図である。 図2に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)のパリティチェック機能部の、図3のステップS104として示した動作の詳細について示すフローチャートである。 図7に示したパリティチェック機能部の動作で、パリティチェック(ステップS112)でエラーが検出されなかった場合(エラー状態=0)の動作について示す説明図である。 図7に示したパリティチェック機能部の動作で、パリティチェック(ステップS112)でエラーが検出された場合(エラー状態=1)の動作について示す説明図である。 図2に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)のECCチェック機能部の、図3のステップS105として示した動作の詳細について示すフローチャートである。 図10に示したECCチェック機能部の動作で、ECCチェック(ステップS122)でエラーが検出されなかった場合(エラー状態=0)の動作について示す説明図である。 図10に示したECCチェック機能部の動作で、ECCチェック(ステップS122)でエラーが検出された場合(エラー状態=1)の動作について示す説明図である。 図2に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)の出力選択部のさらに詳細な構成について示す説明図である。 図2に示したポートA用エラー補正機能部(ポートB用エラー補正機能部)の出力選択部の、図3のステップS106〜108として示した動作の詳細について示すフローチャートである。 本発明の第2の実施形態に係るブロックメモリ装置の構成について示す説明図である。 図15で示したライトアクセス制御部A(ライトアクセス制御部B)の動作について示す説明図である。 本発明の第3の実施形態に係るブロックメモリ装置の構成について示す説明図である。 本発明の第4の実施形態に係るブロックメモリ装置の構成について示す説明図である。 FPGAにおける一般的なブロックメモリ装置の構成について示す説明図である。
(第1の実施形態)
以下、本発明の第1の実施形態の構成について添付図1に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るブロックメモリ装置10は、外部から各々独立してデータの入出力が可能な2つの入出力ポート(ポートA102a,ポートB102b)を備えたブロックメモリ装置である。そして、第1のエラーチェック機能を有する第1のブロックRAM(メモリ用BRAM101)と、第2のエラーチェック機能を持つ第2のブロックRAM(ポートA用BRAM110およびポートB用BRAM120)と、一方の入出力ポートを介して外部から受信した書き込みデータを第1および第2のブロックRAMに同時に送信するアクセス機能部(ポートA用BRAMアクセス機能部150およびポートB用BRAMアクセス機能部160)とを有する。そして、データ読み出しの際に第1のブロックRAMから読み出されたデータに対して第1のエラーチェック機能でエラーチェックを行い、この第1のエラーチェック機能でエラーが検出されなければ第1のブロックRAMから読み出されたデータをアクセス機能部および入出力ポートを介して外部に出力するエラー補正機能部(ポートA用エラー補正機能部130およびポートB用エラー補正機能部140)を備える。
そして、このエラー補正機能部(ポートA用エラー補正機能部130およびポートB用エラー補正機能部140)は、第1のエラーチェック機能でエラーが検出された場合に、第2のブロックRAMから読み出されたデータに対して第2のエラーチェック機能でエラーチェックを行い、第2のエラーチェック機能でエラーが検出されなければ第2のブロックRAMから読み出されたデータをアクセス機能部および入出力ポートを介して外部に出力するという機能を有する。さらに、第2のエラーチェック機能でエラーが検出されればリードエラーをアクセス機能部および入出力ポートを介して外部に出力するという機能も備える。
ここで、第1のエラーチェック機能はパリティビットを利用したパリティ機能であり、第2のエラーチェック機能は誤り訂正符号を利用したECC(Error Check and Correct、誤りエラー検出訂正)機能である。
以上の構成を備える事により、このブロックメモリ装置10は、TDPで動作させてもECC機能、もしくはこれと同等のデータ補正検出機能を使用することが可能となる。
以下、これをより詳細に説明する。
図1は、本発明の第1の実施形態に係るブロックメモリ装置10の構成について示す説明図である。ブロックメモリ装置10は、FPGA(Field Programmable Gate Array)で、このFPGAを任意の論理回路として動作させるためのプログラムを記憶するBRAM(ブロックRAM)として利用されるものである。
ブロックメモリ装置10は、デュアルポートメモリと呼ばれるものであり、2つの入出力ポートであるポートA102aおよびポートB102bのそれぞれから独立してアクセス可能である。ブロックメモリ装置10は、パリティ検出機能を有するメモリ用BRAM101と、ECC機能を持つポートA用BRAM110およびポートB用BRAM120とを備える。メモリ用BRAM101は、ポートA側およびポートB側のそれぞれで使用される記憶領域であるポートA領域101aとポートB領域101bとに分かれる。
そしてブロックメモリ装置10は、ポートAおよびポートBを介してそれぞれ外部と接続され、各々のBRAMに対してデータの読み書きを行うポートA用BRAMアクセス機能部150およびポートB用BRAMアクセス機能部160、ポートA側およびポートB側のそれぞれでデータエラーの補正を行うポートA用エラー補正機能部130およびポートB用エラー補正機能部140、そしてデータ書き込み要求(ライトアクセス)に含まれる書き込みデータ(ライトデータ)のパリティビットをECCビットに変換するライトアクセス制御部170および180を備える。これら各々の機能と動作については後述する。
ポートA用BRAMアクセス機能部150およびポートB用BRAMアクセス機能部160のそれぞれには、ポートA102aおよびポートB102bを介して、FPGAで論理回路を実現するロジックセルや乗算器などが接続され、ハードウェア記述言語で記述されたプログラムによって任意の論理演算を実現することが可能となる。
メモリ用BRAM101のポートA領域101a、およびポートA用BRAM110は、いずれもポートA用エラー補正機能部130に接続される。メモリ用BRAM101のポートB領域101b、およびポートB用BRAM120は、いずれもポートB用エラー補正機能部140に接続される。
ここで、多くのFPGAで、メモリ用BRAM101のようにパリティ検出機能を備えるBRAMは、ポートA/Bの両方からのリード/ライトアクセスを可能としている。このような動作をTDP(True Dual Port Memory)という。その一方で、ポートA用BRAM110およびポートB用BRAM120のようにECC機能を備えるBRAMでは、A面はリードのみでB面はライトのみ(またはA面はライトのみでB面はリードのみ)という形でアクセスが制限されている場合もある。このような動作をSDP(Single Dual Port Memory)という。本実施形態では、メモリ用BRAM101の動作はTDP、ポートA用BRAM110およびポートB用BRAM120の動作はSDPである。
メモリ用BRAM101は、パリティ検出機能を備えている。このパリティ検出とは、データ通信においてデータの誤り(エラー)を検出する手法の一つである。この手法では、メモリを含めた回路内で扱うデータ列を一定の個数で区切り、その中に含まれる1(または0)の個数を、パリティビットと呼ばれる偶奇を示すビットとして添付してデータを転送する。そして、データを受信した側は、添付されたパリティビットの値と実際のデータ中に含まれる1(または0)の個数を比較して、偶奇が合わなければデータに誤りがあると判定する。
ポートA用BRAM110およびポートB用BRAM120は、ECC機能を備える。このECC(Error Check and Correct、誤りエラー検出訂正)機能とは、データ64ビットにつき8ビットの誤り訂正符号(ECCビット)を対応させて付加し、このECCビットを利用して、データ64ビット中1ビットが誤った値になった場合にこれを検出して訂正するという機能である。また、データ64ビット中2ビットが同時に誤った値になった場合は、訂正はできないが、誤りの発生を検出することができる。
ポートA用BRAMアクセス機能部150およびポートB用BRAMアクセス機能部160から発せられるライトアクセスには、ライトデータとこのライトデータのパリティビットが含まれる。従って、これらをメモリ用BRAM101には直接書き込めるが、ポートA用BRAM110およびポートB用BRAM120には直接書き込めない。そこで、ライトアクセス制御部170および180はライトデータからECCビットを生成して、このECCビットをライトデータに添付してポートA用BRAM110およびポートB用BRAM120に書き込む。
図2は、図1で示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)のより詳しい構成について示す説明図である。図2にはポートA用エラー補正機能部130の構成について示しているが、ポートB用エラー補正機能部140の構成もこれと同一である。
ポートA用エラー補正機能部130は、パリティチェック機能部201、ECCチェック機能部203、および出力選択部202を備える。パリティチェック機能部201は、メモリ用BRAM101のポートA領域101aからの出力信号の(リードデータ)のエラーの有無を検出する。ECCチェック機能部203は、ポートA用BRAM110からの出力信号(リードデータ)のエラーの有無を検出する。
出力選択部202は、詳細は後述するが、パリティチェック機能部201とECCチェック機能部203とから渡されたエラー検出後のデータのうちのいずれを、ポートA用BRAMアクセス機能部150に出力するかを切り替える。
ポートB用エラー補正機能部140の構成も、ただ「ポートA」が「ポートB」に変わるのみで、図2に示したポートA用エラー補正機能部130と同一である。即ち、パリティチェック機能部201はメモリ用BRAM101のポートB領域101bからの出力信号の(リードデータ)のエラーの有無を検出する。ECCチェック機能部203は、ポートB用BRAM120からの出力信号(リードデータ)のエラーの有無を検出する。そして出力選択部202はポートB用BRAMアクセス機能部160にデータを出力する。
図3は、図1〜2に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)の、メモリ用BRAM101に対してリードアクセスがあった場合の動作について示すフローチャートである。
まず、ポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)からメモリ用BRAM101のポートA領域101a(ポートB領域101b)に対してリード要求がなされる(ステップS101)。この時、ポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)は、メモリ用BRAM101とポートA用BRAM110(ポートB用BRAM120)に対して同時にリード要求を送信する。
このリード要求に対して、メモリ用BRAM101のポートA領域101a(ポートB領域101b)からリードデータとパリティ値が読み出されてポートA用エラー補正機能部130(ポートB用エラー補正機能部140)に入力される(ステップS102)。そして、同じリード要求に対して、ポートA用BRAM110(ポートB用BRAM120)からリードデータとECCビット値が読み出されてポートA用エラー補正機能部130(ポートB用エラー補正機能部140)に入力される(ステップS103)。
ポートA用エラー補正機能部130(ポートB用エラー補正機能部140)のパリティチェック機能部201が、メモリ用BRAM101から受け取ったリードデータとパリティ値に対してエラーチェックを行う(ステップS104)。これと並行して、ポートA用エラー補正機能部130(ポートB用エラー補正機能部140)のECCチェック機能部203が、ポートA用BRAM110(ポートB用BRAM120)から受け取ったリードデータとECCビット値に対してエラーチェックと訂正を行う(ステップS105)。
メモリ用BRAM101でエラーが発生していなければ、ポートA用エラー補正機能部130(ポートB用エラー補正機能部140)の出力選択部202が、メモリ用BRAM101から受け取ったリードデータとパリティ値をそのままポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)に出力する(ステップS106)。
メモリ用BRAM101でエラーが発生していて、かつ、ポートA用BRAM110(ポートB用BRAM120)でエラーが発生していない場合は、ポートA用BRAM110(ポートB用BRAM120)から受け取ったリードデータをポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)に出力する(ステップS107)。この時、出力するリードデータからパリティ値を算出して、これも該リードデータと同時に出力する。
メモリ用BRAM101でエラーが発生していて、かつ、ポートA用BRAM110(ポートB用BRAM120)でもエラーが発生している場合、ポートA用BRAM110(ポートB用BRAM120)から受け取ったリードデータをポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)に出力し、これと同時にリードエラー情報も出力して、メモリ用BRAM101とポートA用BRAM110(ポートB用BRAM120)とが同時にエラーが発生したことを通知する(ステップS108)。
図4は、図3に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)の動作で、メモリ用BRAM101に対してのリードアクセスでエラーが発生していない時の動作(図3・ステップS106)について示す説明図である。
図5は、図3に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)の動作で、メモリ用BRAM101に対してのリードアクセスでメモリ用BRAM101にエラーが発生した時の動作(図3・ステップS107)について示す説明図である。
図6は、図3に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)の動作で、メモリ用BRAM101に対してのリードアクセスでメモリ用BRAM101とポートA用BRAM110(ポートB用BRAM120)の両方にエラーが発生した時の動作(図3・ステップS108)について示す説明図である。
図7は、図2に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)のパリティチェック機能部201の、図3のステップS104として示した動作の詳細について示すフローチャートである。
メモリ用BRAM101からリードデータとパリティ値を受け取る(ステップS111)と、パリティチェック機能部201内部のパリティチェック機能201aが、リードデータ中の1(または0)の個数の偶奇をパリティ値と比較して、当該リードデータにエラーがあるか否かをチェックする(ステップS112)。
エラーがなければエラー状態=0(ステップS113)、エラーがあればエラー状態=1という信号を生成して(ステップS114)、リードデータとパリティ値にこのエラー状態を示す信号を付けて、これらを出力選択部202に出力する(ステップS115)。
図8は、図7に示したパリティチェック機能部201の動作で、パリティチェック(ステップS112)でエラーが検出されなかった場合(エラー状態=0)の動作について示す説明図である。図9は、図7に示したパリティチェック機能部201の動作で、パリティチェック(ステップS112)でエラーが検出された場合(エラー状態=1)の動作について示す説明図である。
図10は、図2に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)のECCチェック機能部203の、図3のステップS105として示した動作の詳細について示すフローチャートである。
ポートA用BRAM110(ポートB用BRAM120)からリードデータとECCビット値を受け取る(ステップS121)と、ECCチェック機能部203内部のECCチェック機能203aが、リードデータ中の各ビットの値とECCビット値とを比較して、当該リードデータに訂正不能なエラーがあるか否かをチェックする(ステップS122)。
エラーがない、またはエラーがあるが訂正可能な範囲であればエラー状態=0(ステップS123)、訂正不能なエラーがあればエラー状態=1という信号を生成して(ステップS124)、リードデータとECCビット値にこのエラー状態を示す信号を付けて、これらを出力選択部202に出力する(ステップS125)。
図11は、図10に示したECCチェック機能部203の動作で、ECCチェック(ステップS122)でエラーが検出されなかった場合(エラー状態=0)の動作について示す説明図である。図12は、図10に示したECCチェック機能部203の動作で、ECCチェック(ステップS122)でエラーが検出された場合(エラー状態=1)の動作について示す説明図である。
図13は、図2に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)の出力選択部202のさらに詳細な構成について示す説明図である。図14は、図2に示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)の出力選択部202の、図3のステップS106〜108として示した動作の詳細について示すフローチャートである。
出力選択部202は、図13に示すように、パリティチェック機能部201から受信したエラー状態について判断するパリティチェック状態判断機能202aと、ECCチェック機能部203から受信したエラー状態について判断するECCチェック状態判断機能202bと、これら各々の判断結果から出力するデータを選択する出力選択機能202cとを備える。
パリティチェック機能部201とECCチェック機能部203から前述の各数値(信号)を受信した出力選択部202は(ステップS131)、まずパリティチェック機能部201から受信したエラー状態をパリティチェック状態判断機能202aで判断する(ステップS132)。エラー状態=0なら後述のステップS133、エラー状態=1なら後述のステップS136に処理を進める。
パリティチェック機能部201から受信したエラー状態=0である場合、出力選択機能202cがエラー状態=0を示す信号を新たに生成し(ステップS133)、出力選択機能202cがパリティチェック機能部201から受信したリードデータからパリティ値を再計算する(ステップS134)。そして出力選択機能202cが、パリティチェック機能部201から受信したリードデータと、再計算されたパリティ値と、エラー状態=0をポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)に出力して(ステップS135、図3のステップS106に該当)処理を終了する。
パリティチェック機能部201から受信したエラー状態=1である場合、今度はECCチェック機能部203から受信したエラー状態をECCチェック状態判断機能202bで判断する(ステップS136)。エラー状態=0なら出力選択機能202cがエラー状態=0を示す信号を新たに生成し(ステップS137)、エラー状態=1なら出力選択機能202cがエラー状態=1を示す信号を新たに生成する(ステップS138)。
そして、出力選択機能202cが、ECCチェック機能部203から受信したリードデータからパリティ値を計算する。ここで、エラー状態=1であれば、そのリードデータから実際に算出されるパリティ値とは逆の値(即ち、パリティチェックをした場合にエラーになる値)を、意図的にパリティ値とする(ステップS139)。
最後に出力選択機能202cが、ECCチェック機能部203から受信したリードデータと、再計算されたパリティ値と、エラー状態をポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)に出力して(ステップS140、図3のステップS107または108に該当)処理を終了する。
(第1の実施形態の全体的な動作)
次に、上記の実施形態の全体的な動作について説明する。
本実施形態に係るデータ補正方法は、外部から各々独立してデータの入出力が可能な2つの入出力ポート(ポートA102a,ポートB102b)を備えたブロックメモリ装置10にあって、このブロックメモリ装置が、第1のエラーチェック機能を有する第1のブロックRAM(メモリ用BRAM101)と、第2のエラーチェック機能を持つ第2のブロックRAM(ポートA用BRAM110およびポートB用BRAM120)と、一方の入出力ポートを介して外部から受信した書き込みデータを第1および第2のブロックRAMに同時に送信するアクセス機能部(ポートA用BRAMアクセス機能部150およびポートB用BRAMアクセス機能部160)とを有するものであり、データ読み出しの際に第1のブロックRAMから読み出されたデータに対して、エラー補正機能部が第1のエラーチェック機能でエラーチェックを行い(図13・ステップS132)、この第1のエラーチェック機能でエラーが検出されなければ、第1のブロックRAMから読み出されたデータをエラー補正機能部がアクセス機能部に出力し(図13・ステップS133〜135)、当該データをアクセス機能部が入出力ポートを介して外部に出力する(図3・ステップS106)。
また、第1のエラーチェック機能でエラーが検出された場合に、第2のブロックRAMから読み出されたデータに対してエラー補正機能部が第2のエラーチェック機能でエラーチェックを行い(図13・ステップS136)、第2のエラーチェック機能でエラーが検出されなければ、第2のブロックRAMから読み出されたデータをエラー補正機能部がアクセス機能部に出力し(図13・ステップS137,139,140)、第2のエラーチェック機能でエラーが検出されれば、リードエラーをエラー補正機能部がアクセス機能部に出力する(図13・ステップS138〜140)。
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するプロセッサに実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、DVD、CD、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
前述したブロックメモリのハードウェア上の制約は、メモリ用BRAM101が単体で使用される場合のものである。本実施形態で追加されるポートA用BRAM110およびポートB用BRAM120はこの制約とは特に関係ないので、メモリ用BRAM101がTDPモードであってもECC機能を使用することができる。
本実施形態は、この構成にすることによって、BRAMの記憶内容を二重化することができるので、単にパリティ機能をECC機能に置換するだけでは得られない信頼性の向上を得ることが可能となる。その際、外部装置(FPGAの場合はロジックセルや乗算器など)に対しては、変更を一切必要とはせず、従来と同一のBRAMとして使用することが可能である。
(第2の実施形態)
本発明の第2の実施形態は、前述した第1の実施形態の構成に加えて、アクセス機能部(ポートA用BRAMアクセス機能部150、ポートB用BRAMアクセス機能部160)が一方の入出力ポートを介して外部から受信した書き込みデータを第1および第2のブロックRAMに送信した際に、この書き込みデータを他方の入出力ポート側に備えられた第3のブロックRAMにも送信するライトアクセス制御部(ライトアクセス制御部A370とライトアクセス制御部B380)を、アクセス機能部に併設したものとした。
この構成によっても、第1の実施形態と同一の効果が得られることに加えて、さらに第3のブロックRAMに記憶されたデータを、他方の入出力ポート(ポートB)側でエラーが発生した場合の補正に利用できるので、さらなる信頼性の向上を得ることが可能となる。
以下、これをより詳細に説明する。
図15は、本発明の第2の実施形態に係るブロックメモリ装置300の構成について示す説明図である。ブロックメモリ装置300は、前述の第1の実施形態と同一のメモリ用BRAM101、ポートA用BRAMアクセス機能部150、ポートB用BRAMアクセス機能部160、ポートA用エラー補正機能部130、およびポートB用エラー補正機能部140に加えて、ポートA用BRAM110およびポートB用BRAM120は各々、別のポートA用BRAM310およびポートB用BRAM320に置換され、さらにポートA用BRAM110およびポートB用BRAM120へのデータ書き込みを制御するライトアクセス制御部A370とライトアクセス制御部B380を備えている。
ポートA用BRAM310はA面310aおよびB面310b、ポートB用BRAM320はA面320aおよびB面320bといった記憶領域を備えている。これらの「A面」「B面」は、各々メモリ用BRAM101のポートA領域101aとポートB領域101bに対応し、同じアドレスに対して同じ値を保持するものである。
本実施形態では、メモリ用BRAM101、ポートA用BRAM310、ポートB用BRAM320は、いずれも同一の容量を持ち、動作中は同じアドレスに対して同じ値を保持する。ライトアクセス制御部A370とライトアクセス制御部B380が、この「同じアドレスに対して同じ値を保持する」機能を担っている。
図16は、図15で示したライトアクセス制御部A370(ライトアクセス制御部B380)の動作について示す説明図である。図16には、ポートA用BRAMアクセス機能部150からデータ書き込み要求(ライトアクセス)があった場合の動作を示しているので、ポートB用BRAMアクセス機能部160については記載を省略している。
ライトアクセス制御部A370およびライトアクセス制御部B380は、メモリ用BRAM101、ポートA用BRAM310、ポートB用BRAM320のいずれにおいても「同一アドレスが同一の値」となるように、ライトアクセスをこれらの各々に分配する。
まず、ポートA用BRAMアクセス機能部150はメモリ用BRAM101とライトアクセス制御部A370の双方にライトアクセスを送信する(ステップS201〜202、図3のステップS101)。メモリ用BRAM101では、このライトアクセスで送信されたデータをポートA領域101aに書き込む(図3のステップS102)。
ライトアクセス制御部A370は、このライトアクセスがポートA用BRAMアクセス機能部150からのものだと認識して、これをポートA用BRAM310のA面310aに転送すると共に(ステップS203、図3のステップS103)、ライトアクセス制御部B380にも同一のライトアクセスを転送する(ステップS204)。
ライトアクセス制御部B380は、このライトアクセスがライトアクセス制御部A370からのものだと認識して、これをポートB用BRAM320のA面320aに転送する(ステップS205)。ここで、ポートA用BRAMアクセス機能部150から送信されたライトデータはパリティ方式であるので、ステップS203および204でライトアクセスを転送する際、ライトアクセス制御部A370がライトデータから誤り訂正符号を作成して付加する。即ちパリティビットを誤り訂正符号に変換する処理を行う。
以上の動作で、ポートA用BRAMアクセス機能部150からのライトアクセスに対して、メモリ用BRAM101のポートA領域101a、およびポートA用BRAM310とポートB用BRAM320の各々のA面310aおよび320aが、全て同じアドレスに対して同じ値が記憶される。ポートB用BRAMアクセス機能部160からのライトアクセスについてもこれと同様に、メモリ用BRAM101のポートB領域101b、およびポートA用BRAM310とポートB用BRAM320の各々のB面310bおよび320bが、全て同じアドレスに対して同じ値が記憶される。
リード要求があった場合の動作は、基本的に第1の実施形態と同一である。ただし、たとえばポートA用BRAMアクセス機能部150からの要求の場合、メモリ用BRAM101とポートA用BRAM310から読み出されたデータの双方にエラーが検出された場合、エラー発生をリード要求元に通知して、ポートA用BRAM310からのリードデータを出力する。即ち図3のステップS108に記載した動作と同一である。図16のステップS204〜205に示した動作でポートB用BRAM320に記憶されたデータは、ポートB側からのリード要求に対してエラーが発生した場合の、リードデータの補正に使用することができる。
(第3の実施形態)
本発明の第3の実施形態は、前述した第1の実施形態の構成に代えて、第1および第2のエラーチェック機能がいずれもパリティビットを利用したパリティ機能であるものとした。この構成によって、第1の実施形態と同一の効果を、より簡単な構成によって得る事が可能になる。
以下、これをより詳細に説明する。
図17は、本発明の第3の実施形態に係るブロックメモリ装置400の構成について示す説明図である。ブロックメモリ装置400は、前述の第1の実施形態のブロックメモリ装置10の構成で、ポートA用BRAM110およびポートB用BRAM120をデータ補正用BRAM410に置換し、またポートA用エラー補正機能部130とポートB用エラー補正機能部140とを各々別のポートA用エラー補正機能部430とポートB用エラー補正機能部440に置換したものである。
データ補正用BRAM410は、メモリ用BRAM101と同一のパリティ検出機能を備え、またポートA側およびポートB側のそれぞれで使用される記憶領域であるポートA領域410aとポートB領域410bとに分かれる。即ちメモリ用BRAM101と同容量かつ同機能のBRAMを使用することが可能である。
ポートA用エラー補正機能部430(ポートB用エラー補正機能部440)の動作は、図2〜14で示したポートA用エラー補正機能部130(ポートB用エラー補正機能部140)についての説明で、「ECC」を全て「パリティ」に置き換えるだけでほとんど同一である。
この第3の実施形態では、第1の実施形態よりも簡単な構成で、ほぼ同一の効果を得ることが可能となる。ECCチェックでは訂正可能な範囲のエラーの訂正を行っていたが、パリティチェックではエラーの訂正は行わないが、実質上それで動作の問題を起こす事はほとんどない。
(第4の実施形態)
本発明の第4の実施形態は、前述した第1の実施形態の構成に加えて、第1のエラーチェック機能でエラーが検出され、かつ第2のエラーチェック機能でエラーが検出されなかった場合に、第1のブロックRAMに記憶されたデータを訂正するBRAM補正部(メモリ用BRAM補正部510および520)をこの第1のブロックRAMに併設したものとした。
この構成によっても、第1の実施形態と同一の効果が得られることに加えて、さらにエラーとなったデータを積極的に訂正することが可能となるので、さらなる信頼性の向上を得ることが可能となる。
以下、これをより詳細に説明する。
図18は、本発明の第4の実施形態に係るブロックメモリ装置500の構成について示す説明図である。ブロックメモリ装置500は、前述の第2の実施形態のブロックメモリ装置300の構成で、メモリ用BRAM101とポートA用BRAMアクセス機能部150との間にメモリ用BRAM補正部510、またメモリ用BRAM101とポートB用BRAMアクセス機能部160との間にメモリ用BRAM補正部520を挿入し、ポートA用エラー補正機能部130(ポートB用エラー補正機能部140)からの出力がこのメモリ用BRAM補正部510(520)にも同時に入力される構成とした以外は、全て同一である。
このメモリ用BRAM補正部510(520)は、ポートA用エラー補正機能部130(ポートB用エラー補正機能部140)が、メモリ用BRAM101のリードデータにエラーを検出し、かつポートA用BRAM110のリードデータにエラーを検出しない場合(図14のフローチャートのステップS137に該当)に動作する。
この場合に、ポートA用エラー補正機能部130(ポートB用エラー補正機能部140)がポートA用BRAMアクセス機能部150(ポートB用BRAMアクセス機能部160)に出力するリードデータと同一のリードデータが、メモリ用BRAM補正部510(520)にも出力される。この出力を受けたメモリ用BRAM補正部510(520)は、このリードデータの値をメモリ用BRAM101に書き込み、メモリ用BRAM101に記憶されている(エラーとなった)データを訂正する。
第1の実施形態のブロックメモリ装置10や、第3の実施形態のブロックメモリ装置400に、このメモリ用BRAM補正部510(520)を挿入した構成とすることももちろん可能である。この構成とすることにより、エラーの発生の原因となったメモリ用BRAM101の記憶データを積極的に訂正することができるようになり、さらなる信頼性の向上となりうる。
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
上述した実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
(付記1) 外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置であって、
第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の前記入出力ポートを介して外部から受信した書き込みデータを前記第1および第2のブロックRAMに同時に送信するアクセス機能部とを有すると共に、
データ読み出しの際に前記第1のブロックRAMから読み出されたデータに対して前記第1のエラーチェック機能でエラーチェックを行い、この前記第1のエラーチェック機能でエラーが検出されなければ前記第1のブロックRAMから読み出されたデータを前記アクセス機能部および前記入出力ポートを介して外部に出力するエラー補正機能部を備えることを特徴とするブロックメモリ装置。
(付記2) 前記エラー補正機能部は、
前記第1のエラーチェック機能でエラーが検出された場合に、前記第2のブロックRAMから読み出されたデータに対して前記第2のエラーチェック機能でエラーチェックを行い、前記第2のエラーチェック機能でエラーが検出されなければ前記第2のブロックRAMから読み出されたデータを前記アクセス機能部および前記入出力ポートを介して外部に出力する機能を有することを特徴とする、付記1に記載のブロックメモリ装置。
(付記3) 前記エラー補正機能部は、
前記第2のエラーチェック機能でエラーが検出されればリードエラーを前記アクセス機能部および前記入出力ポートを介して外部に出力する機能を有することを特徴とする、付記2に記載のブロックメモリ装置。
(付記4)前記アクセス機能部が一方の前記入出力ポートを介して外部から受信した前記書き込みデータを前記第1および第2のブロックRAMに送信した際に、この書き込みデータを他方の前記入出力ポート側に備えられた第3のブロックRAMにも送信するライトアクセス制御部を、前記アクセス機能部に併設したことを特徴とする、付記1に記載のブロックメモリ装置。
(付記5) 前記第1のエラーチェック機能でエラーが検出され且つ前記第2のエラーチェック機能でエラーが検出されなかった場合に、前記第1のブロックRAMに記憶されたデータを訂正するBRAM補正部を、当該第1のブロックRAMに併設したことを特徴とする、付記2に記載のブロックメモリ装置。
(付記6) 前記第1のエラーチェック機能がパリティビットを利用したパリティ機能であり、前記第2のエラーチェック機能が誤り訂正符号を利用したECC(Error Check and Correct、誤りエラー検出訂正)機能であることを特徴とする、付記1に記載のブロックメモリ装置。
(付記7) 前記第1および第2のエラーチェック機能がいずれもパリティビットを利用したパリティ機能であることを特徴とする、付記1に記載のブロックメモリ装置。
(付記8) 外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置にあって、
このブロックメモリ装置が、第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の前記入出力ポートを介して外部から受信した書き込みデータを前記第1および第2のブロックRAMに同時に送信するアクセス機能部とを有するものであり、
データ読み出しの際に前記第1のブロックRAMから読み出されたデータに対して、エラー補正機能部が前記第1のエラーチェック機能でエラーチェックを行い、
この前記第1のエラーチェック機能でエラーが検出されなければ、前記第1のブロックRAMから読み出されたデータを前記エラー補正機能部が前記アクセス機能部に出力し、
当該データを前記アクセス機能部が前記入出力ポートを介して外部に出力する
ことを特徴とするデータ補正方法。
(付記9) 前記第1のエラーチェック機能でエラーが検出された場合に、前記第2のブロックRAMから読み出されたデータに対して前記エラー補正機能部が前記第2のエラーチェック機能でエラーチェックを行い、
前記第2のエラーチェック機能でエラーが検出されなければ、前記第2のブロックRAMから読み出されたデータを前記エラー補正機能部が前記アクセス機能部に出力し、
前記第2のエラーチェック機能でエラーが検出されれば、リードエラーを前記エラー補正機能部が前記アクセス機能部に出力する
ことを特徴とする、付記8に記載のデータ補正方法。
(付記10) 前記第1のエラーチェック機能がパリティビットを利用したパリティ機能であり、前記第2のエラーチェック機能が誤り訂正符号を利用したECC(Error Check and Correct、誤りエラー検出訂正)機能であることを特徴とする、付記8に記載のデータ補正方法。
(付記11) 外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置にあって、
このブロックメモリ装置が、第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の前記入出力ポートを介して外部から受信した書き込みデータを前記第1および第2のブロックRAMに同時に送信するアクセス機能部とを有するものであり、
前記ブロックメモリ装置が備えるプロセッサに、
データ読み出しの際に前記第1のブロックRAMから読み出されたデータに対して、前記第1のエラーチェック機能でエラーチェックを行う手順、
この前記第1のエラーチェック機能でエラーが検出されなければ、前記第1のブロックRAMから読み出されたデータを前記アクセス機能部に出力する手順、
および当該データを前記アクセス機能部および前記入出力ポートを介して外部に出力する手順
を実行させることを特徴とするデータ補正プログラム。
(付記12) 前記第1のエラーチェック機能でエラーが検出された場合に、前記第2のブロックRAMから読み出されたデータに対して前記第2のエラーチェック機能でエラーチェックを行う手順、
前記第2のエラーチェック機能でエラーが検出されなければ、前記第2のブロックRAMから読み出されたデータを前記アクセス機能部に出力する手順、
前記第2のエラーチェック機能でエラーが検出されれば、リードエラーを前記アクセス機能部に出力する手順
をさらに実行させることを特徴とする、付記11に記載のデータ補正プログラム。
(付記13) 前記第1のエラーチェック機能がパリティビットを利用したパリティ機能であり、前記第2のエラーチェック機能が誤り訂正符号を利用したECC(Error Check and Correct、誤りエラー検出訂正)機能であることを特徴とする、付記11に記載のデータ補正プログラム。
最初に述べた通り、ビット化けは半導体メモリにおいて不可避な現象であるので、半導体メモリを利用する全てのデバイスにおいて本発明は幅広く適用可能である。本発明はその中でも特に、FPGAやPLD(Programmable Logic Device)、およびそれらを利用するデバイスにおいて優れた効果を発揮しうるものである。
また、前述した非特許文献2にも記載されている、C言語などで書かれたコンピュータプログラムやSQLで記述されたデータ処理内容などをハードウェア記述言語に変換してFPGAで動作させるという用途においても、それらの処理を高速かつ高信頼性で実行することが可能となるので、本発明の適用によって優れた効果を得られる用途であるといえる。
10、300、400、500 ブロックメモリ装置
101 メモリ用BRAM
101a ポートA領域
101b ポートB領域
102a ポートA
102b ポートB
110、310 ポートA用BRAM
120、320 ポートB用BRAM
130、430 ポートA用エラー補正機能部
140、440 ポートB用エラー補正機能部
150 ポートA用BRAMアクセス機能部
160 ポートB用BRAMアクセス機能部
170、180 ライトアクセス制御部
201 パリティチェック機能部
201a パリティチェック機能
202 出力選択部
202a パリティチェック状態判断機能
202b ECCチェック状態判断機能
202c 出力選択機能
203 ECCチェック機能部
203a ECCチェック機能
310a、320a A面
310b、320b B面
370 ライトアクセス制御部A
380 ライトアクセス制御部B
410 データ補正用BRAM
510、520 メモリ用BRAM補正部

Claims (10)

  1. 外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置であって、
    第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の前記入出力ポートを介して外部から受信した書き込みデータを前記第1および第2のブロックRAMに同時に送信するアクセス機能部とを有すると共に、
    データ読み出しの際に前記第1のブロックRAMから読み出されたデータに対して前記第1のエラーチェック機能でエラーチェックを行い、この前記第1のエラーチェック機能でエラーが検出されなければ前記第1のブロックRAMから読み出されたデータを前記アクセス機能部および前記入出力ポートを介して外部に出力するエラー補正機能部を備えることを特徴とするブロックメモリ装置。
  2. 前記エラー補正機能部は、
    前記第1のエラーチェック機能でエラーが検出された場合に、前記第2のブロックRAMから読み出されたデータに対して前記第2のエラーチェック機能でエラーチェックを行い、前記第2のエラーチェック機能でエラーが検出されなければ前記第2のブロックRAMから読み出されたデータを前記アクセス機能部および前記入出力ポートを介して外部に出力する機能を有することを特徴とする、請求項1に記載のブロックメモリ装置。
  3. 前記エラー補正機能部は、
    前記第2のエラーチェック機能でエラーが検出されればリードエラーを前記アクセス機能部および前記入出力ポートを介して外部に出力する機能を有することを特徴とする、請求項2に記載のブロックメモリ装置。
  4. 前記アクセス機能部が一方の前記入出力ポートを介して外部から受信した前記書き込みデータを前記第1および第2のブロックRAMに送信した際に、この書き込みデータを他方の前記入出力ポート側に備えられた第3のブロックRAMにも送信するライトアクセス制御部を、前記アクセス機能部に併設したことを特徴とする、請求項1に記載のブロックメモリ装置。
  5. 前記第1のエラーチェック機能でエラーが検出され且つ前記第2のエラーチェック機能でエラーが検出されなかった場合に、前記第1のブロックRAMに記憶されたデータを訂正するBRAM補正部を、当該第1のブロックRAMに併設したことを特徴とする、請求項2に記載のブロックメモリ装置。
  6. 前記第1のエラーチェック機能がパリティビットを利用したパリティ機能であり、前記第2のエラーチェック機能が誤り訂正符号を利用したECC(Error Check and Correct、誤りエラー検出訂正)機能であることを特徴とする、請求項1に記載のブロックメモリ装置。
  7. 外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置にあって、
    このブロックメモリ装置が、第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の前記入出力ポートを介して外部から受信した書き込みデータを前記第1および第2のブロックRAMに同時に送信するアクセス機能部とを有するものであり、
    データ読み出しの際に前記第1のブロックRAMから読み出されたデータに対して、エラー補正機能部が前記第1のエラーチェック機能でエラーチェックを行い、
    この前記第1のエラーチェック機能でエラーが検出されなければ、前記第1のブロックRAMから読み出されたデータを前記エラー補正機能部が前記アクセス機能部に出力し、
    当該データを前記アクセス機能部が前記入出力ポートを介して外部に出力する
    ことを特徴とするデータ補正方法。
  8. 前記第1のエラーチェック機能でエラーが検出された場合に、前記第2のブロックRAMから読み出されたデータに対して前記エラー補正機能部が前記第2のエラーチェック機能でエラーチェックを行い、
    前記第2のエラーチェック機能でエラーが検出されなければ、前記第2のブロックRAMから読み出されたデータを前記エラー補正機能部が前記アクセス機能部に出力し、
    前記第2のエラーチェック機能でエラーが検出されれば、リードエラーを前記エラー補正機能部が前記アクセス機能部に出力する
    ことを特徴とする、請求項7に記載のデータ補正方法。
  9. 外部から各々独立してデータの入出力が可能な2つの入出力ポートを備えたブロックメモリ装置にあって、
    このブロックメモリ装置が、第1のエラーチェック機能を有する第1のブロックRAMと、第2のエラーチェック機能を持つ第2のブロックRAMと、一方の前記入出力ポートを介して外部から受信した書き込みデータを前記第1および第2のブロックRAMに同時に送信するアクセス機能部とを有するものであり、
    前記ブロックメモリ装置が備えるプロセッサに、
    データ読み出しの際に前記第1のブロックRAMから読み出されたデータに対して、前記第1のエラーチェック機能でエラーチェックを行う手順、
    この前記第1のエラーチェック機能でエラーが検出されなければ、前記第1のブロックRAMから読み出されたデータを前記アクセス機能部に出力する手順、
    および当該データを前記アクセス機能部および前記入出力ポートを介して外部に出力する手順
    を実行させることを特徴とするデータ補正プログラム。
  10. 前記第1のエラーチェック機能でエラーが検出された場合に、前記第2のブロックRAMから読み出されたデータに対して前記第2のエラーチェック機能でエラーチェックを行う手順、
    前記第2のエラーチェック機能でエラーが検出されなければ、前記第2のブロックRAMから読み出されたデータを前記アクセス機能部に出力する手順、
    前記第2のエラーチェック機能でエラーが検出されれば、リードエラーを前記アクセス機能部に出力する手順
    をさらに実行させることを特徴とする、請求項9に記載のデータ補正プログラム。
JP2012247036A 2012-11-09 2012-11-09 ブロックメモリ装置、データ補正方法およびプログラム Pending JP2014096021A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012247036A JP2014096021A (ja) 2012-11-09 2012-11-09 ブロックメモリ装置、データ補正方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012247036A JP2014096021A (ja) 2012-11-09 2012-11-09 ブロックメモリ装置、データ補正方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2014096021A true JP2014096021A (ja) 2014-05-22

Family

ID=50939047

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012247036A Pending JP2014096021A (ja) 2012-11-09 2012-11-09 ブロックメモリ装置、データ補正方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2014096021A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114203228A (zh) * 2020-09-18 2022-03-18 长鑫存储技术有限公司 存储器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114203228A (zh) * 2020-09-18 2022-03-18 长鑫存储技术有限公司 存储器
CN114203228B (zh) * 2020-09-18 2023-09-15 长鑫存储技术有限公司 存储器

Similar Documents

Publication Publication Date Title
US11734106B2 (en) Memory repair method and apparatus based on error code tracking
JP7387725B2 (ja) アドレス障害を検出するためのシステム、方法、及び装置
JP6280359B2 (ja) プログラマブルコントローラ
JP7303408B2 (ja) 欠陥検出を備えるエラー補正ハードウェア
US9575692B2 (en) Cache control device having fault-tolerant function and method of operating the same
US9141473B2 (en) Parallel memory error detection and correction
JP2008165449A (ja) エラー訂正コード生成方法、およびメモリ制御装置
US7752527B2 (en) Microcontroller and RAM
JPH03248251A (ja) 情報処理装置
JP2014167708A (ja) 障害修復装置、障害修復方法、及び、障害修復プログラム
US11106533B2 (en) Memory systems and writing methods of the memory systems
US6519736B1 (en) Generating special uncorrectable error codes for failure isolation
JP2008090442A (ja) メモリ制御装置
JP4793741B2 (ja) 誤り訂正回路、誤り訂正方法
US20210083690A1 (en) Memory system and operating method thereof
JP2014096021A (ja) ブロックメモリ装置、データ補正方法およびプログラム
JP2015119359A (ja) 論理回路及び論理回路の制御方法
US9043655B2 (en) Apparatus and control method
JP5772192B2 (ja) 半導体装置、情報処理装置およびエラー検出方法
JP2001290710A (ja) データエラー検出装置
CN109840158B (zh) 一种操作存储器的方法
US11467760B1 (en) Selective erasure decoding for memory devices
US10250279B2 (en) Circuits and methods for writing and reading data
GB2455212A (en) Error detection in processor status register files
JP5325032B2 (ja) 多重系システムの高信頼性制御装置