(57)【要約】【課題】ソフトエラー対策が必要な領域についてＥＣＣを配置し、ワークＲＡＭを始めソフトエラー対策が不要の領域についてはその領域に用意されたＥＣＣメモリを通常のデータＲＡＭとして使用し、ＲＡＭ領域を拡張して使用する。【解決手段】ＥＣＣメモリに、通常のデータＲＡＭ領域（Ｘ  ｂｙｔｅ）と、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）用のＲＡＭ（Ｘ／２  ｂｙｔｅ）と、ＥＣＣを使用する領域を制御するための値を持つレジスタを実装し、レジスタでＥＣＣを使用しないと指定した場合、ＥＣＣに使用されていた領域を通常のデータＲＡＭとして使用する。【選択図】図３
2008084052.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するデータＲＡＭと、
エラー訂正用データを格納するエラー訂正用ＲＡＭと、
前記エラー訂正用ＲＡＭをデータＲＡＭとして使用するか否かを指定するレジスタと、
前記レジスタ値に基づいて、前記エラー訂正用ＲＡＭに対する書き込み又は読み出し動作を制御する制御回路と、
前記エラー訂正用ＲＡＭを活性化し、前記エラー訂正用ＲＡＭに入力されたデータの格納先となるアドレスを生成するアドレス生成回路と、
前記エラー訂正用ＲＡＭの入出力データを選択するデータ選択回路と
を具備する
半導体記憶装置。
【請求項２】
請求項１に記載の半導体記憶装置において、
前記アドレス生成回路は、
前記エラー訂正用ＲＡＭに入力されたデータの格納先となるアドレスを変換するアドレス選択回路と、
前記エラー訂正用ＲＡＭを活性化するためのチップセレクト信号を出力するブロック選択回路と
を具備する
半導体記憶装置。
【請求項３】
請求項１に記載の半導体記憶装置において、
前記データ選択回路は、
前記エラー訂正用ＲＡＭに入力されるデータを選択する入力データセレクタと、
前記エラー訂正用ＲＡＭから出力されたデータの出力先を選択する出力データセレクタと
を具備する
半導体記憶装置。
【請求項４】
請求項１に記載の半導体記憶装置において、
前記データＲＡＭ及び前記エラー訂正用ＲＡＭにおける論理アドレス空間は、
前記エラー訂正用データに対応したデータが格納される第１領域と、
前記エラー訂正用データに対応しないデータが格納される第２領域と、
前記エラー訂正用ＲＡＭとして使用される第３領域と、
前記エラー訂正用ＲＡＭをデータＲＡＭとして使用される第４領域と
を有する
半導体記憶装置。
【請求項５】
請求項４に記載の半導体記憶装置において、
前記第１領域にデータが書き込まれる場合、
前記データは、エンコーダから出力され、
前記制御回路は、前記エラー訂正用ＲＡＭへの書き込みの許可信号を出力し、
前記アドレス生成回路は、指定されたアドレスに応じて、前記エラー訂正用ＲＡＭを活性化する
半導体記憶装置。
【請求項６】
請求項４に記載の半導体記憶装置において、
前記第１領域からデータが読み出される場合、
前記制御回路は、前記エラー訂正用ＲＡＭからの読み出しの許可信号、及び、デコーダへの許可信号を出力し、
前記デコーダは、前記エラー訂正用ＲＡＭから出力されたデータに基づき、エラー訂正されたデータをＣＰＵに出力する
半導体記憶装置。
【請求項７】
請求項４に記載の半導体記憶装置において、
前記第２領域又は前記第３領域にデータが書き込まれる場合、
前記制御回路は、前記エラー訂正用ＲＡＭへの書き込みの許可信号の出力を制限する
半導体記憶装置。
【請求項８】
請求項４に記載の半導体記憶装置において、
前記第２領域からデータが読み出される場合、
前記制御回路は、前記エラー訂正用ＲＡＭからの読み出しの許可信号、及び、デコーダへの許可信号の出力を制限する
半導体記憶装置。
【請求項９】
請求項４に記載の半導体記憶装置において、
前記第４領域にデータが書き込まれる場合、
前記データは、ＣＰＵから出力され、
前記制御回路は、前記エラー訂正用ＲＡＭへの書き込みの許可信号を出力し、
前記アドレス生成回路は、指定されたアドレスに応じて、前記エラー訂正用ＲＡＭを活性化し、
前記エラー訂正用ＲＡＭが複数の時、前記エラー訂正用ＲＡＭの各々は、同一アドレスに同時に前記データを格納する
半導体記憶装置。
【請求項１０】
請求項４に記載の半導体記憶装置において、
前記第４領域からデータが読み出される場合、
前記制御回路は、前記エラー訂正用ＲＡＭからの読み出しの許可信号を出力し、且つ、デコーダへの許可信号の出力を制限し、
前記エラー訂正用ＲＡＭが複数の時、前記エラー訂正用ＲＡＭの各々は、同一アドレスから同時に前記データを出力し、
前記デコーダは、前記エラー訂正用ＲＡＭの各々から出力されたデータをＣＰＵに出力する
半導体記憶装置。
【請求項１１】
請求項１に記載の半導体記憶装置において、
前記データ選択回路は、アドレスの一部の値に応じて、前記エラー訂正用ＲＡＭの入出力先データを選択する
半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関し、特にエラー訂正が可能な半導体記憶装置に関する。
【背景技術】
【０００２】
メモリ・エラーの存在を検出するだけでなく、エラーが発生した箇所（ビット）を特定して、これを正しいものに修正する機能を持ったメモリとして、ＥＣＣメモリ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ  ｍｅｍｏｒｙ）が知られている。ＥＣＣメモリにおいては、メモリに誤った値が記憶されていることを検出し、正しい値に訂正することができる。
【０００３】
通常、ＥＣＣメモリは、ユーザが使用するデータＲＡＭ領域とは別に、ＥＣＣ用のデータ領域を確保する。通常のＥＣＣメモリでは、このＥＣＣ用のデータ領域を固定的に使用するため、データ領域とデータアクセス幅に従って一定量のメモリを確保する必要があり、その分チップ面積が増加する。チップ面積が増加すると、チップを搭載する機器の大型化や、機器内部の利用可能な領域の面積の縮小につながるため問題となる。そのため、チップ面積を増加させずに、限られたデータ領域を有効に活用することが望まれている。
【０００４】
関連する技術として、特開平４−９５２９９号公報（特許文献１）に半導体記憶装置が開示されている。
この半導体記憶装置は、第１及び第２の出力端を備え、モード制御信号及び選択制御信号のレベルに応じて入力データを前記第１及び前記第２の出力端へ伝達する選択回路と、書き込み動作時この選択回路の第１の出力端からのデータを記憶し、読み出し動作時記憶されているデータを読み出す主ビットメモリと、書き込み動作時この選択回路の第２の出力端からのデータを記憶し、読み出し動作時記憶されているデータを読み出すパリティビットメモリと、前記モード制御信号が能動レベルの時前記主ビットメモリ及び前記パリティビットメモリからのデータに対し誤り訂正処理を行い出力し、前記モード制御信号が非能動レベルの時前記選択制御信号のレベルに応じて前記主ビットメモリ及び前記パリティビットメモリからのデータを選択し出力する選択・誤り訂正回路と、を有することを特徴とする。
【０００５】
また、特開２００３−１５１２９７号公報（特許文献２）に誤り訂正回路を備えた半導体記憶装置が開示されている。
この誤り訂正回路を備えた半導体記憶装置は、主データを格納するメインメモリと、上記主データに応じて生成された誤り訂正用副データを格納するサブメモリと、上記メインメモリに格納された主データを読み出すためのセンスアンプと、上記メインメモリから読み出された主データと上記サブメモリから読み出された上記副データに基づいて上記主データに生じる誤りを訂正するための訂正データを生成するデコーダ回路と、上記訂正データに応じて上記メインメモリから読み出された主データに含まれる誤りを訂正するエラー訂正回路と、を有することを特徴とする。
【０００６】
特開２００３−３３７７６０号公報（特許文献３）に半導体集積回路が開示されている。
この半導体集積回路は、データを格納する第１メモリと、前記第１メモリにデータバスを介して接続され前記第１メモリに格納するデータの誤り訂正コードを生成する誤り訂正コード生成手段と、前記アドレスバス及びデータバスに接続され前記誤り訂正コードを格納する第２メモリと、前記第２メモリから読み出された誤り訂正コードに基づいて第１メモリから読み出されたデータに対する誤り訂正が可能な誤り訂正手段と、アドレスバス及びデータバスを介して前記第１メモリ及び第２メモリに対するアクセス制御が可能なアクセス制御手段と、を１個の半導体基板に有して成るものであることを特徴とする。
【０００７】
【特許文献１】特開平４−９５２９９号公報
【特許文献２】特開２００３−１５１２９７号公報
【特許文献３】特開２００３−３３７７６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
仮に、ＥＣＣデータを格納するＲＡＭ領域もデータ格納領域として使用する場合は、データメモリ領域と同じアクセス性能で動作するようにしなければならない。なお、ＥＣＣデータはパリティビットメモリに相当する。図１に示すように、パリティビットメモリのアクセス幅が４ビットしかない特許文献１の従来技術では、ここに通常データ（８ビット）を書き込む場合はデータ出力切換回路６Ａで少なくとも４ビットをラッチする必要がある。４ビットは、そのままパリティビットメモリの入力端子に出力される。このことは、選択回路からの出力が８ビットなのに対し、データ出力切換回路６Ａの出力が４ビットであることから明白である。そのため、パリティビットメモリに通常データを書き込む際、２サイクルの書き込み動作が必要になる。読み出しの際も同様に、パリティビットメモリから４ビットのメモリを１回読み出し、それをデータ出力切換回路６Ｂでラッチし、次の読み出しサイクルでパリティビットメモリからの出力を、データ出力切換回路６Ｂでラッチしたデータと合わせて、８ビットデータとして出力することになる。すなわち、データビット数が増えるに従って、ＥＣＣデータのビット長との差が大きくなるためＥＣＣデータ格納用レジスタの無駄な領域が大きくなる。また、ＥＣＣデータ格納用のメモリのビット長をＥＣＣデータ長に合わせるとデータ格納用メモリとして使用する際のアクセスアドレス数が増えてアクセススピードが遅くなるという欠点がある。
【０００９】
図２を参照して、前述の従来技術におけるデータ書き込み時のタイミングについて説明する。ＤＴＩから８ビットデータがデータ出力切換回路６Ａに入力される。データ出力切換回路６Ａでは、所定のタイミング（図２のＴ１）で出力データを切り替える。それと同時にアドレスインクリメント回路でアドレスを変化させ、パリティビットメモリのアドレス指定を変える。パリティビットメモリへの書き込み信号は特に指定されていないが、４ビット幅のメモリに８ビットのデータを書き込むため書き込み信号をＷＥ１回に対し２回出力する必要がある。これによる欠点は、ＷＥ１回に対し、実際の書き込み又は読み出しを２回行う必要があるため、システム全体の動作スピードに対し、ＲＡＭのアクセススピードを２倍にする必要があるという点である。
【００１０】
このように、従来技術では、パリティビットメモリのデータビット幅は主ビットメモリのデータビット幅と等しくなければならず、パリティビットメモリにパリティデータを格納する場合、余分なＲＡＭが必要になる。また、従来技術では、データのビット幅をそろえるため、アドレスシフト回路とアドレスインクリメント回路を付加し、２アドレスで主ビットメモリのデータビット幅と同じビット幅を実現している。この場合、実際にＣＰＵから８ビットデータの書き込み／読み出しを行うためには、２アドレス毎にアクセスする必要があり、効率的ではない。また、２アドレスをアクセスするため、１アドレスでアクセスする場合に比べて２倍のアクセス時間を要する。
【００１１】
本発明では、ＥＣＣデータを格納するＲＡＭ領域を可能な限り有効に活用する。また、ＥＣＣデータを格納するＲＡＭ領域もデータ格納領域として使用する場合は、データメモリ領域と同じアクセス性能で動作するようにする。
【課題を解決するための手段】
【００１２】
以下に、［発明を実施するための最良の形態］で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。但し、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１３】
データを格納するデータＲＡＭ（１０）と、
エラー訂正用データを格納するエラー訂正用ＲＡＭ（２０）と、
前記エラー訂正用ＲＡＭをデータＲＡＭとして使用するか否かを指定するレジスタ（６０）と、
前記レジスタ値に基づいて、前記エラー訂正用ＲＡＭ（２０）に対する書き込み又は読み出し動作を制御する制御回路（５０）と、
前記エラー訂正用ＲＡＭ（２０）を活性化し、前記エラー訂正用ＲＡＭ（２０）に入力されたデータの格納先となるアドレスを生成するアドレス生成回路（３０）と、
前記エラー訂正用ＲＡＭ（２０）の入出力データを選択するデータ選択回路（４０）と
を具備する
半導体記憶装置。
【００１４】
データ選択回路（４０）が、エラー訂正用ＲＡＭ（２０）をデータＲＡＭとして使用するか否かの判断に用いるのは、アドレスの最上位ビットとレジスタ値である。アドレスに関しては最上位ビットである必然はないので、エラー訂正用ＲＡＭ（２０）をＥＣＣデータ格納用ＲＡＭとして使用する場合とデータＲＡＭとして使用する場合で異なるアドレスを定義し、アドレス信号の一部でそれを切り替えることになる。ここでは、Ａｎ＋１がアドレスの一部になる。
【発明の効果】
【００１５】
ソフトエラー等に対するエラー訂正が必要な領域についてＥＣＣを配置し、ワークＲＡＭを始めソフトエラー対策が不要の領域についてはその領域に用意されたＥＣＣメモリを通常のデータＲＡＭとして使用することによりＲＡＭ領域を拡張して使用することが可能になる。
【発明を実施するための最良の形態】
【００１６】
以下に本発明の第１実施形態について添付図面を参照して説明する。
図３に示すように、本発明の半導体記憶装置は、データＲＡＭ１０と、エラー訂正用ＲＡＭ２０と、アドレス生成回路３０と、データ選択回路４０と、書き込み／読み出し制御回路５０と、ＥＣＣ機能許可レジスタ６０と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）７０と、ＥＣＣエンコーダ８０と、ＥＣＣデコーダ９０とを備える。
【００１７】
データＲＡＭ１０は、エラー検出用データ以外の通常のデータを格納するためのＲＡＭである。
【００１８】
エラー訂正用ＲＡＭ２０（２０−ｉ、ｉ＝１〜ｎ：ｎはＲＡＭ数）は、複数のエラー訂正用ＲＡＭの総称である。ここでは、エラー訂正用ＲＡＭとして、ＥＣＣデータ格納用ＲＡＭを例に説明する。なお、エラー訂正用ＲＡＭ２０は、アドレスデコーダ２１を有している。なお、ここでは、エラー訂正用ＲＡＭ２０として、２個のエラー訂正用ＲＡＭ０，１を示す。エラー訂正用ＲＡＭ０：２０−１、エラー訂正用ＲＡＭ１：２０−２とする。
【００１９】
アドレス生成回路３０、及び、データ選択回路４０は、エラー訂正用ＲＡＭ２０の各々に対して、１対１で存在する。
【００２０】
アドレス生成回路３０（３０−ｉ、ｉ＝１〜ｎ）の各々は、アドレス選択回路３１と、ブロック選択回路３２とを備える。アドレス選択回路３１（３１−ｉ、ｉ＝１〜ｎ）は、エラー訂正用ＲＡＭ２０に入力されたデータの格納先となるアドレスを変換する。この時、アドレス選択回路３１は、アドレスデコーダ２１に出力する。ブロック選択回路３２（３２−ｉ、ｉ＝１〜ｎ）は、指定されたアドレスに応じて、ＣＳ（チップセレクト）信号を出力することで、複数のエラー訂正用ＲＡＭ２０のうち使用されるものを有効に（活性化）し、エラー訂正用ＲＡＭ２０の同期／排他的制御を行う。ここでは、アドレス選択回路３１は、アドレスの最上位ビットを利用して入力アドレスを１ビットシフトするか否かを選択している。また、ブロック選択回路３２も、アドレスの最上位ビットを利用して同期／排他制御をしている。例えば、最上位ビットＡｎ＋１が０ならエラー訂正用ＲＡＭ２０−１，２０−２のＣＳ信号はＡ０の値に従い、排他的に「Ｌ（Ｌｏｗ：ロウレベル）」になり、Ａｎ＋１が１ならＡｎ＝０のときに限り同時に「Ｌ」になる。
【００２１】
データ選択回路４０（４０−ｉ、ｉ＝１〜ｎ）の各々は、入力データセレクタ４１と、出力データセレクタ４２とを備える。入力データセレクタ４１（４１−ｉ、ｉ＝１〜ｎ）は、エラー訂正用ＲＡＭ２０がエラー訂正用か通常データ格納用かによって、エラー訂正用ＲＡＭ２０に入力されるデータを選択する。出力データセレクタ４２（４２−ｉ、ｉ＝１〜ｎ）は、エラー訂正用ＲＡＭ２０がエラー訂正用か通常データ格納用かによって、エラー訂正用ＲＡＭ２０から出力されるデータの出力先を選択する。
【００２２】
書き込み／読み出し制御回路５０は、書き込み／読み出し信号の出力とマスクを制御する。また、エラー訂正用ＲＡＭ２０をエラー訂正用、又は、通常データ格納用に切り替える。
【００２３】
ＥＣＣ機能許可レジスタ６０は、１〜ｎビットのレジスタセットで構成され、エラー訂正用ＲＡＭをＥＣＣデータ格納用に使用するか通常データ格納用に使用するかに切り替えるためのデータを書き込み／読み出し制御回路５０に提供する。このレジスタの構成はＥＣＣデータ格納用に使用する領域の切り換え単位、数によって設計者が任意に決定できる。
【００２４】
ＣＰＵ７０は、データＲＡＭ１０、及び、エラー訂正用ＲＡＭ２０に対してデータの書き込み／読み出しを行う。また、エラー訂正用ＲＡＭ２０をエラー訂正用、又は、通常データ格納用に切り替えるためのレジスタ値をＥＣＣ機能許可レジスタ６０に書き込む。
【００２５】
ＥＣＣエンコーダ８０は、ＣＰＵ７０からデータＲＡＭ１０に書き込むデータに基づきエラー訂正用ＲＡＭ２０に書き込みされるエラー訂正用のＥＣＣデータへエンコードする。エンコードとは、データを一定の規則に基づいて符号化することである。ここでは、エラー訂正用のＥＣＣデータを生成する。
【００２６】
ＥＣＣデコーダ９０は、ＣＰＵ７０によりデータＲＡＭ１０、又は、エラー訂正用ＲＡＭ２０から読み出されるＥＣＣデータをデコードする。デコードとは、一定の規則に基づいて符号化されたデータを復号し、もとのデータを取り出すことである。ここでは、ＥＣＣデコーダ９０は、ＤＥＣ＿ＥＮの入力に基づいて、データＲＡＭ１０とエラー訂正用ＲＡＭ２０のいずれかを選択してＣＰＵ７０に出力する。例えば、ＤＥＣ＿ＥＮの入力が０の時はデータＲＡＭ１０からＣＰＵ７０に出力する。また、ＤＥＣ＿ＥＮの入力が１の時はエラー訂正用ＲＡＭ２０からＣＰＵ７０に出力する。
【００２７】
エラー訂正用ＲＡＭ２０へ書き込む場合、エラー訂正用ＲＡＭ２０をＥＣＣデータ格納用ＲＡＭ領域として使用する場合（Ａｎ＋１＝０）、予めＥＣＣ機能許可レジスタ６０に所定のアドレスデータを設定しておく。このＥＣＣ機能許可レジスタ６０の内容が書き込みアドレスデータ（Ａ１−Ａｎ）と一致した時、書き込み／読み出し制御回路５０が動作し、エラー訂正用ＲＡＭ２０へ書き込み信号を出力する。これによりデータＲＡＭ１０にデータが書き込まれると同時にＥＣＣデータがエラー訂正用ＲＡＭ２０−１、２０−２のいずれかに書き込まれる。書き込み／読み出し制御回路５０は、Ａｎ＋１＝１で且つＥＣＣ機能許可レジスタ６０の内容と書き込みアドレスが一致しない時、書き込み信号を出力する。これによりエラー訂正用ＲＡＭ２０には通常データが書き込まれる。
【００２８】
ここでは、エラー訂正用ＲＡＭ２０への書き込み／読み出しは、エラー訂正用ＲＡＭ２０をＥＣＣデータ領域として使用する場合（アドレスの最上位ビットＡｎ＋１が「Ｌ」の場合）と、データＲＡＭ領域として使用する場合（アドレスの最上位ビットＡｎ＋１が「Ｈ（Ｈｉｇｈ：ハイレベル）」の場合）がある。前者の場合、ＥＣＣ機能許可レジスタ６０に設定されたＥＣＣ許可領域データと書き込み／読み出しアドレスデータ（Ａ１〜Ａｎ間の任意の領域）が一致した場合に書き込み／読み出し制御回路５０からエラー訂正用ＲＡＭ２０に書き込み／読み出し信号を出力する。後者の場合、ＥＣＣ機能許可レジスタ６０に設定されたＥＣＣ許可領域データと書き込み／読み出しアドレスデータ（Ａ１〜Ａｎ−１間の任意の領域）が一致しない場合に書き込み／読み出し制御回路５０からエラー訂正用ＲＡＭ２０に書き込み／読み出し信号を出力する。すなわち、ＥＣＣデータを書き込む領域（アドレスの最上位ビットＡｎ＋１が「Ｌ」の領域）と通常データを書き込む領域（アドレスの最上位ビットＡｎ＋１が「Ｈ」の領域）では、ＥＣＣ領域レジスタと比較するアドレスデータが異なる。
【００２９】
ＥＣＣデータを格納するＲＡＭ領域を可能な限り有効に活用する手段について説明する。ＥＣＣデータ格納領域を通常のデータＲＡＭとして使用する場合、異なるアドレスのＥＣＣ用ＲＡＭを並列に並べることで無駄を省く。
このため、図３のエラー訂正用ＲＡＭ２０のように、ＥＣＣデータ格納用ＲＡＭを複数に分ける。ここでは、ＥＣＣデータ格納用ＲＡＭを２個に分ける。なお、ブロック選択回路３２は、ＥＣＣデータ格納用ＲＡＭを通常のデータＲＡＭとして使用する時とＥＣＣデータ格納用ＲＡＭとして使用する時とで、アドレスの下位ビットを変更する。従来技術では最上位ビットで切り替えている。入力データセレクタ４１は、ＥＣＣデータ格納用ＲＡＭを通常のデータＲＡＭとして使用する時、２個のＲＡＭのデータバス接続位置を変えている。
【００３０】
ＥＣＣデータに関する本発明と従来技術との違いについて以下に説明する。
なお、本発明のＥＣＣデータに対応するビットは、従来技術の説明ではパリティビットとして示されている。
データビット幅を２ｎとすると、パリティビットのビット幅はｎ＋１になる。
従来技術の場合、以下の表１のようになる。
【表１】
2008084052.tif 000003
本発明のようにＥＣＣ領域を並列に並べる場合、以下の表２のようになる。
【表２】
2008084052.tif 000004
このように、本発明では、不要なＲＡＭは大幅に削減されることになる。
【００３１】
図４に、データビット幅が１６ビットの場合の例を示す。
図４では、１６ビットのデータビットと、５ビットのＥＣＣから構成されるデータブロックが４個示されている。これらのデータブロックの各々は、アドレス００００Ｈ〜０ＦＦＣＨの領域（アドレス空間）に格納されており、それぞれ、アドレス下位２ビット＝００、アドレス下位２ビット＝０１、アドレス下位２ビット＝１０、アドレス下位２ビット＝１１である。これらのデータブロックから５ビットのＥＣＣの各々をアドレス１０００Ｈ〜１３ＦＦＨの領域に格納したとする。この場合、ＥＣＣにより５ビット×４個＝２０ビットのデータビットが確保される。この２０ビットのデータビットをデータＲＡＭとして使用する場合、データビット幅は１６ビットであるため、２０ビット−１６ビット＝４ビット分の余分な領域が発生する。
なお、従来技術の場合、データビット幅を１６ビットとすると、データブロックが、１６ビットの主ビットメモリと、１６ビットのパリティビットメモリから構成されることになり、パリティビットメモリをＥＣＣとして使用する場合、１６ビット−５ビット＝１１ビット分の無駄が発生する。
【００３２】
図５に、データビット幅が３２ビットの場合の例を示す。
図５では、３２ビットのデータビットと、６ビットのＥＣＣから構成されるデータブロックが８個示されている。これらのデータブロックの各々は、アドレス００００Ｈ〜０ＦＦ８Ｈの領域に格納されており、それぞれ、アドレス下位３ビット＝０００、アドレス下位３ビット＝００１、アドレス下位３ビット＝０１０、アドレス下位３ビット＝０１１、アドレス下位３ビット＝１００、アドレス下位３ビット＝１０１、アドレス下位３ビット＝１１０、アドレス下位３ビット＝１１１である。これらのデータブロックから６ビットのＥＣＣの各々をアドレス１０００Ｈ〜０１ＦＦＨの領域に格納したとする。この場合、ＥＣＣにより６ビット×８個＝４８ビットのデータビットが確保される。この４８ビットのデータビットをデータＲＡＭとして使用する場合、データビット幅は３２ビットであるため、４８ビット−３２ビット＝１６ビット分の余分な領域が発生する。
なお、従来技術の場合、データビット幅を３２ビットとすると、データブロックが、３２ビットの主ビットメモリと、３２ビットのパリティビットメモリから構成されることになり、パリティビットメモリをＥＣＣとして使用する場合、３２ビット−６ビット＝２６ビット分の無駄が発生する。
【００３３】
本発明では、図６に示すように、パリティビットメモリに相当するメモリ（ＥＣＣ用ＲＡＭ１，２）を２個配置し、それぞれの通常データバスへの接続を上位４ビット、下位４ビットにしている。そのため、通常データ格納時もデータ格納ＲＡＭに書き込むのと同様１サイクルでの書き込みが可能となっている。そのため、２個のＥＣＣ用ＲＡＭに同じアドレスを入力し、データＲＡＭのアドレスが選択された場合（Ａｎ＋１＝０）、ＣＳ（チップセレクト）端子に入力したＡ０の値によってどちらのＲＡＭを選択するかを決定している。また、ＥＣＣ用のＲＡＭ１，２はそれぞれデータＲＡＭの偶数アドレスと奇数アドレスに対応するようにマッピングしている。これにより、データＲＡＭの特定領域のみＥＣＣを必要とした時、不要部分のＥＣＣ用ＲＡＭを連続したアドレスのデータ領域として使用できるメリットがある。
【００３４】
図７に、動作説明のためのアドレスマップの例を示す。ここでは、実施例として、図３のアドレス線のｎ＝７の場合について説明する。図７では、ＥＣＣ有効データ領域に対しては、（Ａ）の対応に示すように、アドレス選択回路３１とブロック選択回路３２によって２個のエラー訂正用ＲＡＭ２０（エラー訂正用ＲＡＭ０，エラー訂正用ＲＡＭ１）を交互にアクセスする。また、（Ｂ）の対応に示すように、アドレス選択回路３１とブロック選択回路３２を切り替えることにより、エラー訂正用ＲＡＭとして使用しない領域を論理アドレス上、連続したデータ領域としてアクセスできるようにする。
なお、図７では、論理アドレスが（１）〜（５）の５つの領域に分けられている。（１）はＥＣＣ有効データ領域、（２）はＥＣＣ無効データ領域、（３）はエラー訂正用ＲＡＭとして使用される領域、（４）はＥＣＣデータ格納用ＲＡＭをデータＲＡＭとして使用する領域、（５）は、ＲＡＭが実装されない領域である。（１）〜（５）の領域に対する書き込み／読み出し動作については後述する。
【００３５】
図７を参照して、ＥＣＣ機能許可レジスタ６０、書き込み／読み出し制御回路５０について説明する。
前述のアドレスマッピングを実現する手段として、ＥＣＣ機能許可レジスタ６０に２ビットレジスタを備える。２ビットレジスタには、データのエラー訂正の無効、有効を示すために０、又は１を設定する。
ビット１……０：アドレス０８０Ｈ〜０ＦＦＨのデータに対しエラー訂正を無効にする。
１：アドレス０８０Ｈ〜０ＦＦＨのデータに対しエラー訂正を有効にする。
ビット０……０：アドレス０００Ｈ〜０７ＦＨのデータに対しエラー訂正を無効にする。
１：アドレス０００Ｈ〜０７ＦＨのデータに対しエラー訂正を有効にする。
【００３６】
こうすれば、レジスタに１０Ｂ（Ｂは２進数を示す）と設定することによりアドレス０８０Ｈ〜０ＦＦＨ番地のエラー訂正用ＲＡＭとしてアサインされるべきＲＡＭをデータＲＡＭとして使用することが可能になる。
【００３７】
また、書き込み／読み出し制御回路５０の動作について説明する。
例としてデータＲＡＭ１０のアドレス領域を２分割しそれぞれの領域についてＥＣＣ機能を許可するか否かを設定するレジスタを持つ場合で説明する。
ここでは、書き込み／読み出し制御回路５０の出力は「／ＲＤ＿Ｅ」、「／ＷＥ＿Ｅ」、「ＤＥＣ＿ＥＮ」の３本である。信号名の前の「／」は「ＮＯＴ」を示す。なお、アドレス入力（Ａ０〜Ａｎ＋１）と、ＥＣＣ機能許可レジスタ６０からのエラー訂正の有効・無効設定データとに基づき、エラー訂正用ＲＡＭ２０に対するアクセスを制御する信号を便宜上ＲＷ＿ＥＮとする。ＲＷ＿ＥＮは以下のような論理となる。
＜Ａｎ＋１＝０の時＞
Ａ１〜Ａｎの入力とＥＣＣ機能許可レジスタ６０の内容とを比較し、エラー訂正が有効と指定された領域に入っている時は、ＲＷ＿ＥＮ＝１
Ａ１〜Ａｎの入力とＥＣＣ機能許可レジスタ６０の内容とを比較し、エラー訂正が有効と指定された領域に入っていない時は、ＲＷ＿ＥＮ＝０
＜Ａｎ＋１＝１の時＞
Ａ０〜Ａｎ−１の入力とＥＣＣ機能許可レジスタ６０の内容とを比較し、エラー訂正が有効と指定された領域に入っている時は、ＲＷ＿ＥＮ＝０
Ａ０〜Ａｎ−１の入力とＥＣＣ機能許可レジスタ６０の内容とを比較し、エラー訂正が有効と指定された領域に入っていない時は、ＲＷ＿ＥＮ＝１
エラー訂正用ＲＡＭ２０は、ＥＣＣデータ格納用と通常データ格納用で排他的に使用する。ＥＣＣデータ格納用に使用する場合（Ａｎ＋１＝０の場合）は、エラー訂正が有効と指定された領域でＲＷ＿ＥＮが１になる。一方、通常データ格納用に使用する場合（Ａｎ＋１＝１の場合）は、エラー訂正が有効としていされていない領域でＲＷ＿ＲＮが１になる。
【００３８】
本実施例におけるＲＷ＿ＥＮ信号生成について説明する。
図８に示すように、ＲＷ＿ＥＮ信号回路の回路構成では、ＥＣＣ機能許可レジスタ６０の値、すなわちＢＩＴ１、ＢＩＴ０が”００Ｂ”（Ｂは２進数）の時、ＡＮＤ（論理積回路）（１），（３）が有効になる。ＢＩＴ１、ＢＩＴ０が”０１Ｂ”（Ｂは２進数）の時、ＡＮＤ（論理積回路）（２），（３）が有効になる。ＢＩＴ１、ＢＩＴ０が”１０Ｂ”（Ｂは２進数）の時、ＡＮＤ（論理積回路）（１），（４）が有効になる。ＢＩＴ１、ＢＩＴ０が”１１Ｂ”（Ｂは２進数）の時、ＡＮＤ（２），（４）が有効になる。アドレス０００Ｈ〜０７ＦＨをデコードするＡＮＤは（１）、０７ＦＨ〜０ＦＦＨをデコードするＡＮＤが（３）１００Ｈ〜１３ＦＨをデコードするＡＮＤが（２）、１４０Ｈ〜１７ＦＨをデコードするＡＮＤが（４）である。（１）と（２）、（３）と（４）はそれぞれ排他的に有効になる。ここではＥＣＣ機能許可レジスタ６０の値を“１０”と設定しているため、アドレス０００Ｈ〜０７ＦＨ、  １４０Ｈ〜１７ＦＨが指定された時、／ＲＷ＿ＥＮが１になる。
【００３９】
／ＲＤ＿Ｅ、／ＷＲ＿Ｅ、ＤＥＣ＿ＥＮは、それぞれ以下のようになる。
／ＲＤ＿Ｅ＝／ＲＷ＿ＥＮ＋／ＲＤ
／ＷＲ＿Ｅ＝／ＲＷ＿ＥＮ＋／ＷＲ
ＤＥＣ＿ＥＮ＝／ＲＤ＿Ｅ×／Ａｎ＋１（ここではｎ＝７のため、Ａ８）
【００４０】
以下に、図７の論理アドレスで示した（１）〜（５）の領域への書き込み／読み出しについて説明する。なお、「領域への書き込み」、「領域からの読み出し」とは、ＣＰＵ７０による通常データの書き込み、読み出し動作のことである。
【００４１】
図９，図１０を参照して、図７の論理アドレスで示した（１）の領域への書き込みについて説明する。
（１）の領域へ書き込む場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＷＲの出力に同期して／ＷＲ＿Ｅが出力される。エラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力はＡ８＝０なのでＡ１〜Ａ７になる。データ入力はＥＣＣエンコーダ８０からの出力になる。／ＣＳの入力はＡ０の値によって決定する。結果としてこの領域では、奇数アドレスが指定された時はエラー訂正用ＲＡＭ１に、偶数アドレスが指定された時はエラー訂正用ＲＡＭ０に、ＥＣＣエンコーダ８０からのデータが書き込まれる。
【００４２】
図１１，図１２を参照して、図７の論理アドレスで示した（１）の領域からの読み出しについて説明する。
（１）の領域から読み出す場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＲＤの出力に同期して／ＲＤ＿Ｅ、ＤＥＣ＿ＥＮが出力される。エラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力はＡ８＝０なのでＡ１〜Ａ７になる。／ＣＳの入力はＡ０の値によって決定する。結果としてこの領域では、奇数アドレスが指定された時はエラー訂正用ＲＡＭ１から、偶数アドレスが指定された時はエラー訂正用ＲＡＭ０から、ＥＣＣデコーダ９０へデータが出力され、エラー訂正されたデータがＣＰＵ７０に読み込まれる。
【００４３】
図１３，図１４を参照して、図７の論理アドレスで示した（２）の領域への書き込みについて説明する。
（２）の領域へ書き込む場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＷＲの出力に同期して／ＷＲ＿Ｅが出力されない。一方、エラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力、データ入力／ＣＳの入力は（１）の領域と同様である。結果として書き込み信号の出力が禁止されているため、エラー訂正用ＲＡＭ０，１への書き込みは行われない。
【００４４】
図１５，図１６を参照して、図７の論理アドレスで示した（２）の領域からの読み出しについて説明する。
（２）の領域から読み出す場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＲＤの出力に同期して／ＲＤ＿Ｅ、ＤＥＣ＿ＥＮが出力されない。エラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力、／ＣＳの入力は（１）の領域と同じであるが、／ＲＤ＿Ｅが出力されないため、ＥＣＣデコーダ９０へのデータ出力は不定である。但し、ＤＥＣ＿ＥＮが出力されていないため、ＥＣＣデコーダ９０ではエラー訂正用ＲＡＭ２０からの出力は使用されず、データＲＡＭ１０からの出力がそのままＣＰＵ７０に読み込まれる。
【００４５】
図１７，図１８を参照して、図７の論理アドレスで示した（３）の領域への書き込みについて説明する。
（３）の領域へ書き込む場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＷＲの出力に同期して／ＷＲ＿Ｅが出力されない。一方、Ａ８＝１なのでエラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力はＡ０〜Ａ６となる。すなわち、図３に示すように、アドレス選択回路３１の選択信号がＡｎ＋１（＝Ａ８）が１なのでＡ０−Ａｎ−１側が選ばれる。データ入力はＣＰＵ７０からの出力となる。／ＣＳの入力はＡ７の値となるが最終的に書き込み信号が入力されないため、エラー訂正用ＲＡＭ０，１への書き込みは行われない。データＲＡＭ１０もＡ８＝１となり／ＣＳが”１”、すなわちディセーブル（ｄｉｓａｂｌｅ）になるので書き込みは行われない。ここでは、ＥＣＣ機能許可レジスタ６０の内容によって、ＣＰＵ７０での命令実行は禁止していないので、ＣＰＵ７０は書き込み／読み出し命令を実行する。しかし、動作としてはエラー訂正用ＲＡＭ２０への書き込み信号がマスクされるので書き込みは行われない。結果としていずれのＲＡＭにもデータが書き込まれないことになる。
【００４６】
図１９，図２０を参照して、図７の論理アドレスで示した（３）の領域からの読み出しを説明する。
（３）の領域から読み出す場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＲＤの出力に同期して／ＲＤ＿Ｅ、／ＤＥＣ＿Ｅが出力されない。エラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力、／ＣＳの入力は（１）の領域と同じであるが、／ＲＤ＿Ｅが出力されないためＥＣＣデコーダ９０へのデータ出力は不定となる。但し、ＤＥＣ＿ＥＮが出力されていないためＥＣＣデコーダ９０ではエラー訂正用ＲＡＭ２０からの出力は使用されない。また、データＲＡＭ１０は／ＣＳ入力であるＡ８＝１であるためデータ出力はされない。従ってＣＰＵ７０への出力は不定となる。
【００４７】
図２１，図２２を参照して、図７の論理アドレスで示した（４）の領域への書き込みについて説明する。
（４）の領域へ書き込む場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＷＲの出力に同期して／ＷＲ＿Ｅが出力される。エラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力は、Ａ８＝１なのでアドレス選択回路３１によりＡ０〜Ａ６が選択される。データ入力は入力データセレクタ４１によりＣＰＵ７０からの出力が選択されて入力される。／ＣＳの入力は、Ａ８=１、かつＡ７＝０（つまり／Ａ７＝１）よりブロック選択回路３２の／ＣＳ出力がアクティブレベル（”０”）となることによってエラー訂正用ＲＡＭ０，１とも有効になる。結果としてこの領域では、エラー訂正用ＲＡＭ０，１の同一アドレスに同時にデータが書き込まれる。エラー訂正用ＲＡＭ０にはデータバスの下位４ビット（Ｄ０−Ｄ３）が、エラー訂正用ＲＡＭ１にはデータバスの上位４ビット（Ｄ４−Ｄ７）が書き込まれる。
【００４８】
図２３，図２４を参照して、図７の論理アドレスで示した（４）の領域からの読み出しについて説明する。
（４）の領域から読み出す場合、アドレス入力Ａ０〜Ａ８とＥＣＣ機能許可レジスタ６０の内容を比較することにより、書き込み／読み出し制御回路５０から／ＲＤの出力に同期して／ＲＤ＿Ｅが出力されるが、ＤＥＣ＿ＥＮは出力されない。エラー訂正用ＲＡＭ２０のアドレスデコーダ２１の入力はＡ８＝１なのでＡ０〜Ａ６になる。／ＣＳの入力はＡ７になる。結果としてこの領域では、エラー訂正用ＲＡＭ０，１から同時にデータが読み出される。エラー訂正用ＲＡＭ０からはデータの下位４ビット、エラー訂正用ＲＡＭ１からはデータの上位４ビットが出力され、ＥＣＣデコーダ９０を介してＣＰＵ７０に読み込まれる。ＥＣＣ＿ＥＮが出力されていないため、エラー訂正は行われない。そのため、ＥＣＣデコーダ９０への入力が不定でも問題はない。
【００４９】
図２５，図２６，図２７を参照して、図７の論理アドレスで示した（５）の領域への書き込み／読み出しについて説明する。通常アクセスではこの領域へのアクセスはないが、ＣＰＵ７０での命令としては実行可能なので動作を記述する。なお、図２６は、（５）の領域への書き込みのタイミングチャートであり、図２７は、（５）の領域からの読み出しタイミングチャートである。
（５）の領域はメモリがマッピングされることが無い。従って、Ａ７，Ａ８が共に１になるような設定は回避する必要がある。但し、バスの設定は可能なのでアクセス禁止の処置をしている。データＲＡＭ１０の／ＣＳはＡ８が入力されているため、この領域ではアクセスが禁止される。エラー訂正用ＲＡＭ０，１もＡ８＝１の時、／ＣＳ入力がＡ７になるため、この領域ではアクセスが禁止される。従って、この領域へのアクセスは全てのメモリに対するＣＳ信号が発生しないためアクセスが禁止される。
【００５０】
以上のように、本発明の半導体記憶装置では、エラー訂正用に用意したＲＡＭをデータＲＡＭとして使用する。具体的には、ＲＡＭをＥＣＣとして使用するか、データＲＡＭとして使用するかを選択する切り替え回路を実装する。これにより、データＲＡＭの全領域にエラー補正用のＲＡＭセルを用意する。
【図面の簡単な説明】
【００５１】
【図１】図１は、従来技術の半導体記憶装置の構成図である。
【図２】図２は、従来技術におけるデータ書き込み時のタイミングを示す図である。
【図３】図３は、本発明の半導体記憶装置の構成図である。
【図４】図４は、データビット幅が１６ビットの場合の例を示す図である。
【図５】図５は、データビット幅が３２ビットの場合の例を示す図である。
【図６】図６は、本発明のＥＣＣ用ＲＡＭ使用例を示す図である。
【図７】図７は、アドレスマップの例を示す図である。
【図８】図８は、／ＲＷ＿ＥＮ信号生成回路の回路構成を示す図である。
【図９】図９は、ＥＣＣ用ＲＡＭの（１）の領域への書き込みを示す図である。
【図１０】図１０は、ＥＣＣ用ＲＡＭの（１）の領域への書き込みのタイミングチャートである。
【図１１】図１１は、ＥＣＣ用ＲＡＭの（１）の領域からの読み出しを示す図である。
【図１２】図１２は、ＥＣＣ用ＲＡＭの（１）の領域への読み出しのタイミングチャートである。
【図１３】図１３は、ＥＣＣ用ＲＡＭの（２）の領域への書き込みを示す図である。
【図１４】図１４は、ＥＣＣ用ＲＡＭの（２）の領域への書き込みのタイミングチャートである。
【図１５】図１５は、ＥＣＣ用ＲＡＭの（２）の領域からの読み出しを示す図である。
【図１６】図１６は、ＥＣＣ用ＲＡＭの（２）の領域への読み出しのタイミングチャートである。
【図１７】図１７は、ＥＣＣ用ＲＡＭの（３）の領域への書き込みを示す図である。
【図１８】図１８は、ＥＣＣ用ＲＡＭの（３）の領域への書き込みのタイミングチャートである。
【図１９】図１９は、ＥＣＣ用ＲＡＭの（３）の領域からの読み出しを示す図である。
【図２０】図２０は、ＥＣＣ用ＲＡＭの（３）の領域への読み出しのタイミングチャートである。
【図２１】図２１は、ＥＣＣ用ＲＡＭの（４）の領域への書き込みを示す図である。
【図２２】図２２は、ＥＣＣ用ＲＡＭの（４）の領域への書き込みのタイミングチャートである。
【図２３】図２３は、ＥＣＣ用ＲＡＭの（４）の領域からの読み出しを示す図である。
【図２４】図２４は、ＥＣＣ用ＲＡＭの（４）の領域への読み出しのタイミングチャートである。
【図２５】図２５は、ＥＣＣ用ＲＡＭの（５）の領域への書き込み／読み出しを示す図である。
【図２６】図２６は、ＥＣＣ用ＲＡＭの（５）の領域への書き込みのタイミングチャートである。
【図２７】図２７は、ＥＣＣ用ＲＡＭの（５）の領域への読み出しのタイミングチャートである。
【符号の説明】
【００５２】
１０…  データＲＡＭ
２０（−ｉ、ｉ＝１〜ｎ）…  エラー訂正用ＲＡＭ
３０（−ｉ、ｉ＝１〜ｎ）…  アドレス生成回路
３１（−ｉ、ｉ＝１〜ｎ）…  アドレス選択回路
３２（−ｉ、ｉ＝１〜ｎ）…  ブロック選択回路
４０（−ｉ、ｉ＝１〜ｎ）…  データ選択回路
４１（−ｉ、ｉ＝１〜ｎ）…  入力データセレクタ
４２（−ｉ、ｉ＝１〜ｎ）…  出力データセレクタ
５０…  書き込み／読み出し制御回路
６０…  ＥＣＣ機能許可レジスタ
７０…  ＣＰＵ
８０…  ＥＣＣエンコーダ
９０…  ＥＣＣデコーダ
【図１】
2008084052.tif 000005
【図２】
2008084052.tif 000006
【図３】
2008084052.tif 000007
【図４】
2008084052.tif 000008
【図５】
2008084052.tif 000009
【図６】
2008084052.tif 000010
【図７】
2008084052.tif 000011
【図８】
2008084052.tif 000012
【図９】
2008084052.tif 000013
【図１０】
2008084052.tif 000014
【図１１】
2008084052.tif 000015
【図１２】
2008084052.tif 000016
【図１３】
2008084052.tif 000017
【図１４】
2008084052.tif 000018
【図１５】
2008084052.tif 000019
【図１６】
2008084052.tif 000020
【図１７】
2008084052.tif 000021
【図１８】
2008084052.tif 000022
【図１９】
2008084052.tif 000023
【図２０】
2008084052.tif 000024
【図２１】
2008084052.tif 000025
【図２２】
2008084052.tif 000026
【図２３】
2008084052.tif 000027
【図２４】
2008084052.tif 000028
【図２５】
2008084052.tif 000029
【図２６】
2008084052.tif 000030
【図２７】
2008084052.tif 000031