(57)【要約】【課題】より簡易な構成でより安定して動作する記憶装置、及び記憶装置の制御方法を提供する。【解決手段】一実施形態に係る記憶装置は、データ処理装置から供給された書き込みデータを記憶する記憶装置であって、１ビットのデータを格納するメモリセルがマトリクス状に配列されたＳＲＡＭと、前記データ処理装置から書き込みデータ及び前記ＳＲＡＭ上の書き込み先のアドレスを受け取り、前記書き込み先のアドレスが示す領域と前記書き込み先のアドレスの次のアドレスの領域に前記書き込みデータの各ビットがＳＲＡＭ上で隣り合わないように前記書き込みデータを書き込む書き込み制御部と、を具備する。【選択図】      図１
2014229125.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置から供給された書き込みデータを記憶する記憶装置であって、
１ビットのデータを格納するメモリセルがマトリクス状に配列されたＳＲＡＭと、
前記データ処理装置から書き込みデータ及び前記ＳＲＡＭ上の書き込み先のアドレスを受け取り、前記書き込み先のアドレスが示す領域と前記書き込み先のアドレスの次のアドレスの領域に前記書き込みデータの各ビットがＳＲＡＭ上で隣り合わないように前記書き込みデータを書き込む書き込み制御部と、
を具備する記憶装置。
【請求項２】
前記ＳＲＡＭは、所定数のメモリセルを有する複数のブロックと、前記ブロック毎に設定されたアドレスとを有し、
前記書き込み制御部は、前記書き込みデータの奇数ビットを前記書き込み先のアドレスが示すブロックに書き込み、前記書き込みデータの偶数ビットを前記書き込み先のアドレスの次のアドレスが示すブロックに書き込む、
請求項１に記載の記憶装置。
【請求項３】
前記データ処理装置から複数の前記書き込みデータ及び前記書き込み先のアドレスを受け取った場合、前記書き込み先のアドレスが連続しているか否かに基づいて前記書き込みデータが連続したデータであるか否か判定する連続判定部をさらに具備し、
前記書き込み制御部は、前記書き込み先のアドレスが連続している場合、連続した複数の前記書き込み先のアドレスが示す領域と、連続した複数の前記書き込み先のアドレスのうちの最後尾の書き込み先のアドレスの次のアドレスの領域と、に前記複数の書き込みデータの各ビットがＳＲＡＭ上で隣り合わないように前記複数の書き込みデータを書き込む、
請求項１または２に記載の記憶装置。
【請求項４】
前記書き込み制御部は、前記ＳＲＡＭ上の前記書き込み先のアドレスとその次のアドレスとに既に書き込まれている既存データを読み出し、前記書き込み先のアドレスが示す領域と前記書き込み先のアドレスの次のアドレスの領域に前記書き込みデータの各ビットがＳＲＡＭ上で隣り合わないように前記書き込みデータを書き込み、前記既存データを用いて前記書き込みデータの各ビット間を補完する、
請求項１乃至３のうちのいずれか１項に記載の記憶装置。
【請求項５】
１ビットのデータを格納するメモリセルがマトリクス状に配列されたＳＲＡＭを備え、データ処理装置から供給された書き込みデータを前記ＳＲＡＭに記憶する記憶装置の制御方法であって、
前記データ処理装置から書き込みデータ及び前記ＳＲＡＭ上の書き込み先のアドレスを受け取り、前記書き込み先のアドレスが示す領域と前記書き込み先のアドレスの次のアドレスの領域に前記書き込みデータの各ビットがＳＲＡＭ上で隣り合わないように前記書き込みデータを書き込む、
記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置、及び記憶装置の制御方法に関する。
【背景技術】
【０００２】
キャッシュメモリとして機能するＳｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ）を備えた記憶装置が一般的に実用化されている。ＳＲＡＭは、読み込み及び書き込みが可能なＲＡＭであり、一時的にデータを記憶する揮発性メモリである。
【０００３】
ＳＲＡＭは、複数の半導体が組み合わされた順序回路を備える。ＳＲＡＭは、「０」と「１」のデータを記憶することができる。
【０００４】
しかし、例えば放射線などの外乱により、「０」と「１」とが置き換わるビットエラーが生じる可能性がある。ビットエラーを訂正する技術も一般的に実用化されているが、１つのデータセット内の複数のビットにエラーが生じた場合、訂正が難しい場合がある。また、外乱によりビットエラーは、隣接したメモリセルに生じやすい。そこで、物理的に分割された複数の領域に１つのデータセットのデータを分割して書き込むマルチビットエラー対策が施されたＳＲＡＭが実用化されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９１９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記したＳＲＡＭは、内部の構造が特殊であり高価であるという課題がある。また、マルチビットエラー対策が施されていないＳＲＡＭが記憶装置に搭載されている場合、ＳＲＡＭを上記したような特殊な構造のＳＲＡＭに換装する必要があり、手間がかかるという課題がある。
【０００７】
そこで本発明は、より簡易な構成でより安定して動作する記憶装置、及び記憶装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
一実施形態に係る記憶装置は、データ処理装置から供給された書き込みデータを記憶する記憶装置であって、１ビットのデータを格納するメモリセルがマトリクス状に配列されたＳＲＡＭと、前記データ処理装置から書き込みデータ及び前記ＳＲＡＭ上の書き込み先のアドレスを受け取り、前記書き込み先のアドレスが示す領域と前記書き込み先のアドレスの次のアドレスの領域に前記書き込みデータの各ビットがＳＲＡＭ上で隣り合わないように前記書き込みデータを書き込む書き込み制御部と、を具備する。
【図面の簡単な説明】
【０００９】
【図１】図１は、一実施形態に係る記憶装置の例について説明するための図である。
【図２】図２は、一実施形態に係る記憶装置の例について説明するための図である。
【図３】図３は、一実施形態に係る記憶装置の例について説明するための図である。
【図４】図４は、一実施形態に係る記憶装置の例について説明するための図である。
【図５】図５は、一実施形態に係る記憶装置の例について説明するための図である。
【図６】図６は、一実施形態に係る記憶装置の例について説明するための図である。
【図７】図７は、一実施形態に係る記憶装置の例について説明するための図である。
【図８】図８は、一実施形態に係る記憶装置の例について説明するための図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、一実施形態に係る記憶装置、及び記憶装置の制御方法について詳細に説明する。
【００１１】
図１は、一実施形態に係るデータ処理装置１０及び記憶装置（メモリコントローラ）２０の例を示す。  
データ処理装置１０は、メモリコントローラ２０にコマンドを供給し、メモリコントローラ２０に種々の処理を行わせる。
【００１２】
メモリコントローラ２０は、Ｒｅａｄ／Ｗｒｉｔｅ（Ｒ／Ｗ）判断部２１、データ集積部２２、データ構成部２４、及びＳＲＡＭ２７を備える。また、データ集積部２２は、連続判定部２３を備える。さらに、データ構成部２４は、ビット整列部２５、及びテンポラリ部２６を備える。
【００１３】
データ処理装置１０は、メモリコントローラ２０のＲ／Ｗ判断部２１及びデータ構成部２４に接続されている。データ処理装置１０は、メモリコントローラ２０のＳＲＡＭ２７にデータを書き込む場合、ＳＲＡＭ２７に書き込むデータと、データの書き込み先のアドレスと、書き込みイネーブル信号とをＲ／Ｗ判断部２１に送信する。また、データ処理装置１０は、メモリコントローラ２０のＳＲＡＭ２７からデータを読み込む場合、読み込むアドレスと、読み込みイネーブル信号とをＲ／Ｗ判断部２１に送信する。
【００１４】
Ｒ／Ｗ判断部２１は、データ処理装置１０から信号が供給された場合、書き込み処理と読み込み処理の、どちらの処理が要求されているかを判断する。Ｒ／Ｗ判断部２１は、データ処理装置１０から書き込みイネーブル信号が供給された場合、データ処理装置１０により書き込み処理が要求されていると判断する。また、Ｒ／Ｗ判断部２１は、データ処理装置１０から読み込みイネーブル信号が供給された場合、データ処理装置１０により読み込み処理が要求されていると判断する。
【００１５】
Ｒ／Ｗ判断部２１は、書き込み処理が要求されていると判断した場合、ＳＲＡＭ２７に書き込むデータと、データの書き込み先のアドレスと、書き込みイネーブル信号とをデータ集積部２２に送信する。また、Ｒ／Ｗ判断部２１は、読み込み処理が要求されていると判断した場合、読み込むアドレスと、読み込みイネーブル信号とをデータ集積部２２に送信する。
【００１６】
データ集積部２２は、連続したデータ（連続データ）を蓄積し、一括してデータ構成部２４に供給する。連続判定部２３は、Ｒ／Ｗ判断部２１から供給されたアドレスが、連続したアドレスであるか不連続なアドレスであるかを判定する。
【００１７】
図２は、書き込み処理が要求されている場合のデータ集積部２２の処理の例を示す。  
書き込みイネーブル信号がＲ／Ｗ判断部２１から供給されている場合（ステップＳ１１）、データ集積部２２は、予め設定された時間（ｗａｉｔ時間）内にＳＲＡＭ２７に書き込むデータと、データの書き込み先のアドレスと、が入力されたか否か判断する（ステップＳ１２）。
【００１８】
Ｒ／Ｗ判断部２１から書き込みデータ及び書き込み先のアドレスが供給された場合、データ集積部２２は、書き込みデータ及び書き込み先のアドレスが１つ目の入力であるか否か判断する（ステップＳ１３）。即ち、データ集積部２２は、既に受け取って保持している書き込みデータ及び書き込み先のアドレスが存在するか否か判断する。データ集積部２２は、保持している書き込みデータ及び書き込み先のアドレスが存在しない場合、１つ目の入力であると判断する。
【００１９】
１つ目の入力であると判断した場合、データ集積部２２は、Ｒ／Ｗ判断部２１から受け取った書き込みデータ及び書き込み先のアドレスを図示しないメモリに保持し（ステップＳ１４）、ステップＳ１２に移行する。
【００２０】
また、ステップＳ１３で１つ目の入力ではないと判断した場合、データ集積部２２の連続判定部２３は、Ｒ／Ｗ判断部２１から受け取った書き込み先のアドレスと連続した書き込み先のアドレスが保持されているか否か判断する（ステップＳ１５）。Ｒ／Ｗ判断部２１から受け取った書き込み先のアドレスと連続した書き込み先のアドレスが保持されていると判断した場合、データ集積部２２は、Ｒ／Ｗ判断部２１から受け取った書き込みデータ及び書き込み先のアドレスを図示しないメモリに保持し（ステップＳ１４）、ステップＳ１２に移行する。これにより、データ集積部２２は、書き込み先が連続した複数の書き込みデータ及び書き込み先のアドレスをメモリに集積することができる。
【００２１】
また、ステップＳ１２でｗａｉｔ時間内に書き込みデータと書き込み先のアドレスとが入力されなかった場合、またはステップＳ１５で連続した書き込み先のアドレスが保持されていないと判断した場合、データ集積部２２は、メモリに保持している書き込みデータ及び書き込み先アドレスをデータ構成部２４に出力する（ステップＳ１６）。
【００２２】
即ち、データ集積部２２は、例えば、一定時間書き込み先のアドレスが供給されない場合、書き込み先のアドレスが連続しないと判断し、書き込み先のアドレスが不連続である不連続データを出力する。
【００２３】
また、データ集積部２２は、一定時間内に次の書き込み先のアドレスが取り込まれ、且つ書き込み先のアドレスが連続していない場合、不連続データを出力する。
【００２４】
またさらに、データ集積部２２は、一定時間内に次の書き込み先のアドレスが取り込まれ、且つ書き込み先のアドレスが連続している場合、書き込み先のデータと書き込み先のアドレスを連続データとして保持する。
【００２５】
また、データ集積部２２は、書き込み先のアドレスが連続しない場合に保持していた連続データをデータ構成部２４に出力する。
【００２６】
これにより、データ集積部２２は、書き込み先が連続した複数の書き込みデータ及び書き込み先のアドレスをメモリに集積することができる。また、データ集積部２２は、集積した書き込み先が連続した複数の書き込みデータ及び書き込み先のアドレス、即ち連続データをデータ構成部２４に出力することができる。
【００２７】
データ構成部２４は、ＳＲＡＭ２７に格納する書き込みデータのビットを整列させる。
【００２８】
ＳＲＡＭ２７は、所定の長さ（所定のビット数）のデータを１つのデータとして格納する揮発性メモリである。ＳＲＡＭ２７は、１ビットのデータを格納する領域（メモリセル）を複数備える。例えば、ＳＲＡＭ２７は、１ビットのデータを格納する所定数のメモリセルを含むブロックを備える。
【００２９】
ブロックは、例えば、ＳＲＡＭ２７が１つのデータセットとして扱うビット数分のメモリセルを備える。即ち、ＳＲＡＭ２７は、マトリクス上に配列された複数のメモリセルを備える。
【００３０】
また、ＳＲＡＭ２７の各ブロックには、それぞれ異なるアドレスが付されている。即ち、ＳＲＡＭ２７は、アドレスによりブロックを指定し、指定したブロック内のデータの読み込むことができる。また、ＳＲＡＭ２７は、アドレスによりブロックを指定し、指定したブロックにデータを書き込むことができる。
【００３１】
データ構成部２４のビット整列部２５は、データ集積部２２から受け取った書き込みデータを、奇数ビットと偶数ビットとに分割する。ビット整列部２５は、書き込みデータの奇数ビットと偶数ビットとを異なるアドレスのブロックに格納するようにビットを整列させる。ビット整列部２５は、例えば、テンポラリ部２６または図示されないバッファ上に書き込みデータのビットを整列させる。
【００３２】
例えば、データ構成部２４は、書き込み先のアドレスが示すブロック（領域）と、書き込み先のアドレスの次のアドレスのブロック（領域）とに書き込みデータの各ビットが隣り合わないように書き込みデータを書き込む。
【００３３】
テンポラリ部２６は、ＳＲＡＭ２７に書き込むデータ、及びＳＲＡＭ２７から読み出したデータを一時的に記憶するメモリである。データ構成部２４は、ＳＲＡＭ２７に書き込むデータ、及びＳＲＡＭ２７から読み出したデータをテンポラリ部２６上で整列させる。
【００３４】
図３及び図４は、データ構成部２４の動作の例を示す。なお、図３は、書き込みデータが不連続データである場合のデータ構成部２４の動作の例を示す。また、図４は、書き込みデータが連続データである場合のデータ構成部２４の動作の例を示す。
【００３５】
図３に示されるような不連続データ３０１が書き込みデータであり、ＳＲＡＭ２７上のアドレス３０２が書き込み先のアドレスとして指定されていた場合、ビット整列部２５は、奇数ビットと偶数ビットとを分割する。さらに、ビット整列部２５は、奇数ビットがＳＲＡＭ２７上のアドレス３０２に格納され、偶数ビットがＳＲＡＭ２７上のアドレス３０３に格納されるように不連続データ３０１のビットを整列させる。具体的には、ビット整列部２５は、ＳＲＡＭ２７に書き込むデータを一時的に記憶するテンポラリ部２６または図示されない書き込みバッファ上に不連続データ３０１のビットを整列させる。
【００３６】
なお、ビット整列部２５は、図３に示されるように奇数ビットの各ビットの間にダミーとしてのビット（例えばＮＵＬＬ）をセットする。また、ビット整列部２５は、図３に示されるように偶数ビットの各ビットの間にダミーとしてのビット（例えばＮＵＬＬ）をセットする。さらに、ビット整列部２５は、偶数ビットの１ビット目を先頭から１ビットシフトした位置に格納する。これにより、ビット整列部２５は、同一のデータ内のビット同士がＳＲＡＭ２７上で隣り合ったメモリセルに格納されないようにビットを整列させることができる。
【００３７】
また、図４に示されるような連続データ４０１が書き込みデータであり、ＳＲＡＭ２７上のアドレス４０２乃至４０４が書き込み先のアドレスとして指定されていた場合、ビット整列部２５は、各書き込みデータを奇数ビットと偶数ビットとを分割する。図４の例では、連続データ４０１は、連続データ４０１Ａ、連続データ４０１Ｂ、及び連続データ４０１Ｃを有する。ビット整列部２５は、連続データ４０１Ａ、連続データ４０１Ｂ、及び連続データ４０１Ｃの奇数ビットと偶数ビットとをそれぞれ分割する。
【００３８】
さらに、ビット整列部２５は、連続データ４０１Ａの奇数ビットがＳＲＡＭ２７上のアドレス４０２に格納され、連続データ４０１Ａの偶数ビットがＳＲＡＭ２７上のアドレス４０３に格納されるように連続データ４０１Ａのビットを整列させる。
【００３９】
また、ビット整列部２５は、連続データ４０１Ｂの奇数ビットがＳＲＡＭ２７上のアドレス４０３に格納され、連続データ４０１Ｂの偶数ビットがＳＲＡＭ２７上のアドレス４０４に格納されるように連続データ４０１Ｂのビットを整列させる。
【００４０】
また、ビット整列部２５は、連続データ４０１Ｃの奇数ビットがＳＲＡＭ２７上のアドレス４０４に格納され、連続データ４０１Ｃの偶数ビットがＳＲＡＭ２７上のアドレス４０５に格納されるように連続データ４０１Ｃのビットを整列させる。
【００４１】
即ち、ビット整列部２５は、ＳＲＡＭ２７上のアドレス４０２に連続データ４０１Ａの奇数ビットを格納し、ＳＲＡＭ２７上のアドレス４０３に連続データ４０１Ａの偶数ビットと連続データ４０１Ｂの奇数ビットとを格納し、ＳＲＡＭ２７上のアドレス４０４に連続データ４０１ｂの偶数ビットと連続データ４０１Ｃの奇数ビットとを格納し、ＳＲＡＭ２７上のアドレス４０５に連続データ４０１Ｃの偶数ビットを格納するように、連続データ４０１Ａ乃至４０１Ｃのビットをテンポラリ部２６上で整列させる。
【００４２】
この場合も、ビット整列部２５は、偶数ビットの１ビット目を１ビットシフトした位置に格納する。また、ビット整列部２５は、先頭の連続データ４０１Ａの奇数ビットの各ビットの間と、最後尾の連続データ４０１Ｃの偶数ビットの各ビットの間と、にダミービットをセットする。これにより、ビット整列部２５は、同一のデータ内のビット同士がＳＲＡＭ２７上で隣り合ったメモリセルに格納されないようにビットを整列させることができる。
【００４３】
なお、書き込みデータが不連続データである場合と、書き込みデータが連続データである場合とのどちらの場合であっても、データの幅が本来のデータの幅より１データ分長くなる。
【００４４】
データ構成部２４は、テンポラリ部２６に整列されたデータをＳＲＡＭ２７上の書き込み先のアドレスに書き込む。例えば、データ構成部２４は、書き込み先のアドレスが複数供給された場合、先頭の書き込み先アドレスからテンポラリ部２６に整列されたデータの書き込みを開始する。
【００４５】
即ち、データ構成部２４は、書き込み先のアドレスが連続している場合、連続した複数の書き込み先のアドレスが示すブロック（領域）と、連続した複数の書き込み先のアドレスのうちの最後尾の書き込み先のアドレスの次のアドレスのブロック（領域）と、に複数の書き込みデータの各ビットが隣り合わないように複数の書き込みデータを書き込む。
【００４６】
これにより、メモリコントローラ２０は、同一のデータ内のビットが隣り合わないように整列されたデータをＳＲＡＭ２７に格納することができる。これにより、メモリコントローラ２０は、メモリセルがマトリクス上に配列された通常のＳＲＡＭ２７上での外乱によるビットエラーの影響を軽減することができる。
【００４７】
また、ＳＲＡＭ２７上の書き込み先のアドレスに既にデータが書き込まれている場合がある。このような場合に元のデータを喪失しない為に、メモリコントローラ２０は、ＳＲＡＭ２７上の書き込み先のアドレスに格納されているデータ（既存データ）をテンポラリ部２６に退避させる。メモリコントローラ２０は、書き込みデータと、上記の既存データとを組み合わせてＳＲＡＭ２７上の書き込み先のアドレスに格納するデータをテンポラリ部２６上で整列させる。
【００４８】
図５は、データ構成部２４の他の動作の例を示す。  
ここでは、書き込みデータが不連続データ５０１であるとする。また、図５に示されたように、ＳＲＡＭ２７上のアドレス５０２乃至アドレス５０５に既にデータ（既存データ）が格納されているとする。また、書き込み先のアドレスがＳＲＡＭ２７上のアドレス５０３であるとする。
【００４９】
上記のような場合、データ構成部２４のビット整列部２５は、テンポラリ部２６上に書き込み先のブロックのデータを退避させる。即ち、ビット整列部２５は、書き込み先のアドレスと、その次のアドレスのブロックのデータをテンポラリ部２６にコピーする。
【００５０】
図５の例によると、アドレス５０３が書き込み先のアドレスとして指定されているため、アドレス５０３とその次のアドレス５０４のブロックのデータをテンポラリ部２６にコピーする。なお、アドレス５０３のブロックの既存データは、テンポラリ部２６のアドレス５０６にコピーされる。また、アドレス５０４のブロックの既存データは、テンポラリ部２６のアドレス５０７にコピーされる。
【００５１】
ビット整列部２５は、書き込みデータである不連続データ５０１を奇数ビットと偶数ビットとに分割する。ビット整列部２５は、テンポラリ部２６上のアドレス５０８に不連続データ５０１の奇数ビットを整列させる。なお、ビット整列部２５は、各奇数ビットの間にダミービットをセットする。また、ビット整列部２５は、テンポラリ部２６上のアドレス５０９に不連続データ５０１の偶数ビットを整列させる。なお、ビット整列部２５は、各偶数ビットの間にダミービットをセットする。さらに、ビット整列部２５は、偶数ビットの１ビット目をアドレスの先頭から１ビットシフトした位置に格納する。
【００５２】
この結果、図５に示されたように、テンポラリ部２６のアドレス５０８には先頭から１ビット置きに奇数ビットが整列される。また、テンポラリ部２６のアドレス５０９には先頭から１ビットシフトした位置から１ビット置きに偶数ビットが整列される。
【００５３】
さらに、ビット整列部２５は、アドレス５０８及び５０９に整列させたデータに、テンポラリ部２６のアドレス５０６及び５０７に退避させた既存データを組み合わせる。
【００５４】
具体的には、ビット整列部２５は、アドレス５０６の既存データの偶数ビットを抽出する。ビット整列部２５は、抽出したアドレス５０６の既存データの偶数ビットをアドレス５０８に組み合わせる。即ち、ビット整列部２５は、アドレス５０８の先頭から１ビットシフトした位置から１ビット置きにアドレス５０６の既存データの偶数ビットを整列させる。
【００５５】
また、ビット整列部２５は、アドレス５０７の既存データの奇数ビットを抽出する。ビット整列部２５は、抽出したアドレス５０７の既存データの奇数ビットをアドレス５０９に組み合わせる。即ち、ビット整列部２５は、アドレス５０９の先頭から１ビット置きにアドレス５０７の既存データの奇数ビットを整列させる。
【００５６】
データ構成部２４は、テンポラリ部２６のアドレス５０８のデータをＳＲＡＭ２７のアドレス５０３に書き込む。また、データ構成部２４は、テンポラリ部２６のアドレス５０９のデータをＳＲＡＭ２７のアドレス５０４に書き込む。
【００５７】
即ち、データ構成部２４は、ＳＲＡＭ２７上の書き込み先のアドレスとその次のアドレスとに既に書き込まれている既存データをコピーし、書き込み先のアドレスが示すブロック（領域）と書き込み先のアドレスの次のアドレスのブロック（領域）とに書き込みデータの各ビットが隣り合わないように書き込みデータを書き込み、既存データを用いて書き込みデータの各ビット間を補完する。
【００５８】
上記の処理により、メモリコントローラ２０は、ダミービットで既存データを上書きすることなく、且つ、同一のデータ内のビットが隣り合わないように整列されたデータをＳＲＡＭ２７に格納することができる。これにより、メモリコントローラ２０は、メモリセルがマトリクス上に配列された通常のＳＲＡＭ２７上での外乱によるビットエラーの影響を軽減することができる。
【００５９】
図６は、読み込み処理が要求されている場合のデータ集積部２２の処理の例を示す。  
読み込みイネーブル信号がＲ／Ｗ判断部２１から供給されている場合（ステップＳ２１）、データ集積部２２は、予め設定された時間（ｗａｉｔ時間）内にデータの読み込み先のアドレスが入力されたか否か判断する（ステップＳ２２）。
【００６０】
Ｒ／Ｗ判断部２１から読み込み先のアドレスが供給された場合、データ集積部２２は、読み込み先のアドレスが１つ目の入力であるか否か判断する（ステップＳ２３）。即ち、データ集積部２２は、既に受け取って保持している読み込み先のアドレスが存在するか否か判断する。データ集積部２２は、保持している読み込み先のアドレスが存在しない場合、１つ目の入力であると判断する。
【００６１】
１つ目の入力であると判断した場合、データ集積部２２は、Ｒ／Ｗ判断部２１から受け取った読み込み先のアドレスを図示しないメモリに保持し（ステップＳ２４）、ステップＳ２２に移行する。
【００６２】
また、ステップＳ２３で１つ目の入力ではないと判断した場合、データ集積部２２の連続判定部２３は、Ｒ／Ｗ判断部２１から受け取った読み込み先のアドレスと連続した読み込み先のアドレスが保持されているか否か判断する（ステップＳ２５）。Ｒ／Ｗ判断部２１から受け取った読み込み先のアドレスと連続した読み込み先のアドレスが保持されていると判断した場合、データ集積部２２は、Ｒ／Ｗ判断部２１から受け取った読み込み先のアドレスを図示しないメモリに保持し（ステップＳ２４）、ステップＳ２２に移行する。これにより、データ集積部２２は、連続した複数の読み込み先のアドレスをメモリに集積することができる。
【００６３】
また、ステップＳ２２でｗａｉｔ時間内に読み込み先のアドレスが入力されなかった場合、またはステップＳ２５で連続した読み込み先のアドレスが保持されていないと判断した場合、データ集積部２２は、メモリに保持している読み込み先アドレスをデータ構成部２４に出力する（ステップＳ２６）。
【００６４】
即ち、データ集積部２２は、例えば、一定時間読み込み先のアドレスが供給されない場合、読み込み先のアドレスが連続しないと判断し、読み込み先のアドレスが不連続である不連続データを出力する。
【００６５】
また、データ集積部２２は、一定時間内に次の読み込み先のアドレスが取り込まれ、且つ読み込み先のアドレスが連続していない場合、不連続データを出力する。
【００６６】
またさらに、データ集積部２２は、一定時間内に次の読み込み先のアドレスが取り込まれ、且つ読み込み先のアドレスが連続している場合、複数の読み込み先アドレスを連続データとして保持する。
【００６７】
また、データ集積部２２は、読み込み先のアドレスが連続しない場合に保持していた連続データをデータ構成部２４に出力する。
【００６８】
これにより、データ集積部２２は、連続した複数の読み込み先のアドレスをメモリに集積することができる。また、データ集積部２２は、集積した複数の読み込み先のアドレス、即ち連続データをデータ構成部２４に出力することができる。
【００６９】
データ構成部２４は、データ集積部２２から連続データ、または不連続データを受け取った場合、ＳＲＡＭ２７からデータを読み込み、読み込んだデータ（読み込みデータ）のビットを整列させる。
【００７０】
データ構成部２４のビット整列部２５は、データ集積部２２から受け取った連続データまたは不連続データに基づいて、ＳＲＡＭ２７上のブロックを指定し、指定したブロック内のデータを読み込むことができる。即ち、ビット整列部２５は、データ集積部２２から連続データを受け取った場合、受け取った連続データの読み込み先アドレスに基づいてＳＲＡＭ２７上の複数のブロックを指定し、指定したブロック内のデータを読み込む。
【００７１】
ビット整列部２５は、読み込んだデータをテンポラリ部２６上に格納する。ビット整列部２５は、読み込んだデータのビットをテンポラリ部２６上で整列させ、データ処理装置１０に出力するデータ（出力データ）を生成する。
【００７２】
図７及び図８は、データ構成部２４の動作の例を示す。なお、図７は、読み込みデータが不連続データである場合のデータ構成部２４の動作の例を示す。また、図８は、読み込みデータが連続データである場合のデータ構成部２４の動作の例を示す。
【００７３】
なお、図７及び図８のいずれの場合も、ＳＲＡＭ２７上のアドレス７０１乃至アドレス７０４に既にデータ（既存データ）が格納されているとする。
【００７４】
図７の例のように、不連続データの読み込み先アドレスによりＳＲＡＭ２７上のアドレス７０２が指定されている場合、ビット整列部２５は、ＳＲＡＭ２７上のアドレス７０２のデータと、アドレス７０２の次のブロックであるアドレス７０３のデータとを読み込む。例えば、ビット整列部２５は、ＳＲＡＭ２７上のアドレス７０２のデータをテンポラリ部２６上のアドレス７０５にコピーし、アドレス７０３のデータをテンポラリ部２６上のアドレス７０６にコピーする。
【００７５】
ビット整列部２５は、テンポラリ部２６上のアドレス７０５のデータの奇数ビットと偶数ビットとを分割する。またさらに、ビット整列部２５は、テンポラリ部２６上のアドレス７０６のデータの奇数ビットと偶数ビットとを分割する。ビット整列部２５は、アドレス７０５のデータの奇数ビットと、アドレス７０６のデータの偶数ビットと、を組み合わせて整列させ、出力データを生成する。
【００７６】
ビット整列部２５は、例えば、テンポラリ部２６上のアドレス７０７にアドレス７０５のデータの奇数ビットを整列させる。なお、ビット整列部２５は、アドレス７０５のデータの奇数ビットをアドレス７０７の先頭から１ビット置きにセットする。また、ビット整列部２５は、テンポラリ部２６上のアドレス７０７にアドレス７０６のデータの偶数ビットを整列させる。なお、ビット整列部２５は、アドレス７０６のデータの偶数ビットをアドレス７０７の先頭から１ビットシフトした位置から１ビット置きにセットする。
【００７７】
これにより、ビット整列部２５は、ＳＲＡＭ２７上のアドレス７０２のデータの奇数ビットとＳＲＡＭ２７上のアドレス７０３のデータの偶数ビットとから出力データを生成することができる。即ち、ビット整列部２５は、上記の図３及び図４の方法によりＳＲＡＭ２７に格納されたデータをＳＲＡＭ２７から読み込み、出力データを生成することができる。
【００７８】
データ構成部２４は、ビット整列部２５によるビットの整列が完了した場合、生成した出力データをデータ処理装置１０に出力する。即ち、データ構成部２４は、ビット整列部２５によるビットの整列が完了した場合、テンポラリ部２６上のアドレス７０７のデータ（出力データ）をデータ処理装置１０に出力する。
【００７９】
また図８の例のように、連続データの読み込み先アドレスによりＳＲＡＭ２７上のアドレス７０２及びアドレス７０３が指定されている場合、ビット整列部２５は、ＳＲＡＭ２７上のアドレス７０２及びアドレス７０３のデータと、アドレス７０３の次のブロックであるアドレス７０４のデータとを読み込む。例えば、ビット整列部２５は、ＳＲＡＭ２７上のアドレス７０２のデータをテンポラリ部２６上のアドレス７０８にコピーし、アドレス７０３のデータをテンポラリ部２６上のアドレス７０９にコピーし、アドレス７０４のデータをテンポラリ部２６上のアドレス７１０にコピーする。
【００８０】
ビット整列部２５は、テンポラリ部２６上のアドレス７０８、アドレス７０９、及びアドレス７１０のデータの奇数ビットと偶数ビットとをそれぞれ分割する。ビット整列部２５は、アドレス７０８のデータの奇数ビットと、アドレス７０９のデータの奇数ビット及び偶数ビットと、アドレス７１０の偶数ビットと、を組み合わせて整列させ、出力データを生成する。
【００８１】
ビット整列部２５は、例えば、テンポラリ部２６上のアドレス７１１にアドレス７０８のデータの奇数ビットを整列させる。なお、ビット整列部２５は、アドレス７０８のデータの奇数ビットをアドレス７１１の先頭から１ビット置きにセットする。また、ビット整列部２５は、テンポラリ部２６上のアドレス７１１にアドレス７０９のデータの偶数ビットを整列させる。なお、ビット整列部２５は、アドレス７０９のデータの偶数ビットをアドレス７１１の先頭から１ビットシフトした位置から１ビット置きにセットする。
【００８２】
また、ビット整列部２５は、テンポラリ部２６上のアドレス７１２にアドレス７０９のデータの奇数ビットを整列させる。なお、ビット整列部２５は、アドレス７０９のデータの奇数ビットをアドレス７１２の先頭から１ビット置きにセットする。また、ビット整列部２５は、テンポラリ部２６上のアドレス７１２にアドレス７１０のデータの偶数ビットを整列させる。なお、ビット整列部２５は、アドレス７１０のデータの偶数ビットをアドレス７１２の先頭から１ビットシフトした位置から１ビット置きにセットする。
【００８３】
これにより、ビット整列部２５は、ＳＲＡＭ２７上のアドレス７０２乃至アドレス７０４のデータから出力データを生成することができる。即ち、ビット整列部２５は、上記の図３及び図４の方法によりＳＲＡＭ２７に格納されたデータをＳＲＡＭ２７から読み込み、出力データを生成することができる。
【００８４】
データ構成部２４は、ビット整列部２５によるビットの整列が完了した場合、生成した出力データをデータ処理装置１０に出力する。即ち、データ構成部２４は、ビット整列部２５によるビットの整列が完了した場合、テンポラリ部２６上のアドレス７１１及びアドレス７１２のデータ（出力データ）をデータ処理装置１０に出力する。
【００８５】
上記の処理により、メモリコントローラ２０は、ダミービットで既存データを上書きすることなく、且つ、同一のデータ内のビットが隣り合わないように整列されたデータをＳＲＡＭ２７に格納することができる。これにより、メモリコントローラ２０は、メモリセルがマトリクス上に配列された通常のＳＲＡＭ２７上での外乱によるビットエラーの影響を軽減することができる。
【００８６】
さらに、メモリコントローラ２０は、同一のデータ内のビットが隣り合わないようにＳＲＡＭ２７に格納されたデータを読み込み、１ブロックのデータとして整列し直して出力することができる。これにより、メモリコントローラ２０は、データ処理装置１０側のアルゴリズムを変更することなく、メモリセルがマトリクス上に配列された通常のＳＲＡＭ２７上での外乱によるビットエラーの影響を軽減することができる。この結果、簡易な構成でより安定して動作する記憶装置、及び記憶装置の制御方法を提供することができる。
【００８７】
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。
【００８８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００８９】
１０…データ処理装置、２０…メモリコントローラ、２１…Ｒ／Ｗ判断部、２２…データ集積部、２３…連続判定部、２４…データ構成部、２５…ビット整列部、２６…テンポラリ部、２７…ＳＲＡＭ。
【図１】
2014229125.tif 000003
【図２】
2014229125.tif 000004
【図３】
2014229125.tif 000005
【図４】
2014229125.tif 000006
【図５】
2014229125.tif 000007
【図６】
2014229125.tif 000008
【図７】
2014229125.tif 000009
【図８】
2014229125.tif 000010