(57)【要約】【課題】２ポートメモリを用いることなく、連続するリード・モディファイ・ライト動作におけるメモリアクセスの待ち時間を削減する。【解決手段】第１メモリ領域と第２メモリ領域とに分割された１ポートメモリと、アドレスとライトデータとを指定したメモリライトアクセスの指示を受け付けると、アドレスに基づいて第１メモリ領域と第２メモリ領域のいずれかを選択するアドレス選択回路と、アドレスを保持するアドレス保持回路と、選択されたメモリ領域から読み出したリードデータとライトデータとからメモリライトデータを生成するデータ生成回路と、アドレス保持回路に保持されているアドレスに基づいて、メモリライトデータのライトアクセス対象として第１メモリ領域と第２メモリ領域のいずれかを選択する出力先選択回路とを備えた記憶装置。【選択図】図１
2012174049.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリ領域と第２メモリ領域とに分割された１ポートメモリと、
アドレスとライトデータとを指定したメモリライトアクセスの指示を受け付けると、前記アドレスに基づいて第１メモリ領域と第２メモリ領域のいずれかを選択するアドレス選択回路と、
前記アドレスを保持するアドレス保持回路と、
選択されたメモリ領域から読み出したリードデータと前記ライトデータとからメモリライトデータを生成するデータ生成回路と、
前記アドレス保持回路に保持されているアドレスに基づいて、前記メモリライトデータのライトアクセス対象として第１メモリ領域と第２メモリ領域のいずれかを選択する出力先選択回路と、
を備えることを特徴とする記憶装置。
【請求項２】
前記第１メモリ領域には、所定ビットが偶数のアドレスが割り当てられ、前記第２メモリ領域には、所定ビットが奇数のアドレスが割り当てられていることを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記メモリライトアクセスの次の第２メモリライトアクセスの指示を受け付けると、第２メモリライトアクセスのアクセス対象メモリ領域と前記出力先選択回路の選択したメモリ領域とを比較し、一致する場合に、第２メモリライトアクセスの動作をウェイトさせるウェイトコントロール回路をさらに備えることを特徴とする請求項１または２に記載の記憶装置。
【請求項４】
バッファ領域をさらに備え、
前記バッファ領域は、リード動作を優先する旨の指示を受け付けると、前記データ生成回路が出力するメモリライトデータを格納し、他のメモリアクセス指示に係るアクセス対象メモリ領域が、前記アドレス選択回路に選択されていないときに、格納した前記メモリライトデータをライトアクセス対象メモリ領域に書き込むことを特徴とする請求項１または２に記載の記憶装置。
【請求項５】
前記バッファ領域は、バッファフルになると、リード動作をウェイトさせ、格納している前記メモリライトデータをライトアクセス対象メモリ領域に書き込むことを特徴とする請求項４に記載の記憶装置。
【請求項６】
前記バッファ領域に格納されているメモリライトデータのライトアクセス対象メモリ領域に対するリード動作が発生した場合には、
前記リード動作をウェイトさせ、格納している前記メモリライトデータをライトアクセス対象メモリ領域に書き込む、あるいは、前記バッファ領域に格納されているメモリライトデータを前記リード動作のリード対象とすることを特徴とする請求項４または５に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶する記憶装置に関し、特に、２ポートメモリを用いることなく、リード・モディファイ・ライト動作におけるメモリアクセスの待ち時間を削減する記憶装置に関する。
【背景技術】
【０００２】
一般的に、記憶装置は、ＤＲＡＭ（Dynamic Random Access Memory）等のメモリと、メモリに対するデータの書き込みおよび読み出しを制御するメモリコントローラとを備えており、データを一時的または長期的に記憶するために様々な電子機器で用いられる。この記憶装置の動作は、（１）リード動作、（２）ライト動作、および（３）更新動作（リード・モディファイ・ライト動作）に大別される。
【０００３】
（１）リード動作は、メモリに対してアドレスを指定し、指定されたアドレスで特定される記憶領域に記憶されているデータを読み出す動作である。（２）ライト動作は、メモリに対してアドレスとデータとを指定し、指定されたアドレスで特定される記憶領域に指定されたデータを書き込む動作である。（３）リード・モディファイ・ライト動作は、メモリに対してアドレスを指定し、指定されたアドレスで特定される記憶領域に記憶されているデータを読み出してから、読み出したデータの一部を更新し、更新したデータを同じ記憶領域に書き戻す動作である。
【０００４】
記憶装置は、基本的に、メモリに対するデータの読み出しおよび書き込みを、メモリのデータ幅分のビットを有するデータを単位として行なう。このため、メモリに記憶されたデータの一部を書き換えるパーシャルライトを行なう場合には、（３）リード・モディファイ・ライト動作が行なわれる。
【０００５】
例えば、ＥＣＣ（Error Check and Correct memory：エラー検出訂正）機能を備える記憶装置は、本来のデータに対してＥＣＣのための冗長ビットを付加したデータをメモリに記憶しているため、パーシャルライトを行なう場合には、新たな冗長ビットを作成する必要があることから、（３）リード・モディファイ・ライト動作が行なわれる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−２３２７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
リード・モディファイ・ライト動作では、メモリからデータを読み出すサイクルと、読み出したデータを更新してメモリに書き戻すサイクルと２つのサイクルが必要になる。このため、ＣＰＵが記憶装置に対してパーシャルライトを連続して指示する場合には、記憶装置におけるリード・モディファイ・ライト動作が終了するまで次のメモリアクセスが待たされることになり、記憶装置を備えるシステム全体の効率が低下するという問題がある。
【０００８】
効率の低下を防ぐために、例えば、データの読み出しとデータの書き込みとを同時に行なえる２ポートメモリを用いることが考えられる。２ポートメモリを用いることで、先行するパーシャルライトの第２サイクルのデータライトと並行して、次のパーシャルライトの第１サイクルのデータリードを行なうことができ、効率低下を防ぐことができるが、２ポートメモリは、１ポートメモリと比べて面積が大きく、記憶装置のコストが上昇してしまうのに加え、消費電力が増加してしまう。
【０００９】
そこで、本発明は、２ポートメモリを用いることなく、連続するリード・モディファイ・ライト動作におけるメモリアクセスの待ち時間を削減することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明の記憶装置は、第１メモリ領域と第２メモリ領域とに分割された１ポートメモリと、アドレスとライトデータとを指定したメモリライトアクセスの指示を受け付けると、前記アドレスに基づいて第１メモリ領域と第２メモリ領域のいずれかを選択するアドレス選択回路と、前記アドレスを保持するアドレス保持回路と、選択されたメモリ領域から読み出したリードデータと前記ライトデータとからメモリライトデータを生成するデータ生成回路と、前記アドレス保持回路に保持されているアドレスに基づいて、前記メモリライトデータのライトアクセス対象として第１メモリ領域と第２メモリ領域のいずれかを選択する出力先選択回路とを備えることを特徴とする。
【００１１】
例えば、前記第１メモリ領域には、所定ビットが偶数のアドレスを割り当て、前記第２メモリ領域には、所定ビットが奇数のアドレスを割り当てることができる。
【００１２】
メモリライトアクセスは連続するアドレスに対して行なわれることが多いため、第１メモリ領域と第２メモリ領域が交互にアクセス対象になることが多い。このため、多くの場合、メモリライトアクセスを連続して行なうことができ、２ポートメモリを用いることなく、連続するリード・モディファイ・ライト動作におけるメモリアクセスの待ち時間を削減することができる。
【００１３】
ここで、前記メモリライトアクセスの次の第２メモリライトアクセスの指示を受け付けると、第２メモリライトアクセスのアクセス対象メモリ領域と前記出力先選択回路の選択したメモリ領域とを比較し、一致する場合に、第２メモリライトアクセスの動作をウェイトさせるウェイトコントロール回路をさらに備えるようにしてもよい。
【００１４】
また、バッファ領域をさらに備え、前記バッファ領域は、リード動作を優先する旨の指示を受け付けると、前記データ生成回路が出力するメモリライトデータを格納し、他のメモリアクセス指示に係るアクセス対象メモリ領域が、前記アドレス選択回路に選択されていないときに、格納した前記メモリライトデータをライトアクセス対象メモリ領域に書き込むようにしてもよい。
【００１５】
このとき、前記バッファ領域は、バッファフルになると、リード動作をウェイトさせ、格納している前記メモリライトデータをライトアクセス対象メモリ領域に書き込むようにすることができる。
【００１６】
また、前記バッファ領域に格納されているメモリライトデータのライトアクセス対象メモリ領域に対するリード動作が発生した場合には、前記リード動作をウェイトさせ、格納している前記メモリライトデータをライトアクセス対象メモリ領域に書き込む、あるいは、前記バッファ領域に格納されているメモリライトデータを前記リード動作のリード対象とすることができる。
【発明の効果】
【００１７】
本発明によれば、２ポートメモリを用いることなく、連続するリード・モディファイ・ライト動作におけるメモリアクセスの待ち時間を削減することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態である記憶装置の要部構成を示すブロック図である。
【図２】異なる領域に対する連続アクセスを説明する図である。
【図３】同じ領域に対する連続アクセスを説明する図である。
【図４】本発明の実施形態である記憶装置の変形例の要部構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
本発明の実施の形態について図面を参照して説明する。図１は、本発明の実施形態である記憶装置の要部構成を示すブロック図である。図１に示すように記憶装置１は、メモリコントローラ１１、メモリ１２、アドレス保持回路１４、エラー検出訂正回路１５、データ生成回路として機能する冗長ビット生成回路１７、アドレス選択回路１８、リードデータ選択回路１９、出力先選択回路として機能するメモリライトイネーブル信号出力先選択回路２０、ライトアクセス検出回路２１、ウェイトコントロール回路２２を備えている。
【００２０】
記憶装置１は、バスＢを介してＣＰＵ１０と接続されており、ＣＰＵ１０の制御の下で、記憶しているデータの読み出し、記憶すべきデータの書き込み、および記憶しているデータの更新（リード・モディファイ・ライト）が可能である。以下では、本発明の特徴であるリード・モディファイ・ライト動作に注目して説明する。
【００２１】
なお、本実施形態では、記憶装置１の内部で取り扱われるライトデータＷＤ、リードデータＲＤのデータ幅が６４ビットであり、メモリライトデータＭＷＤ、メモリリードデータＭＲＤは、データ幅６４ビットにＥＣＣのための冗長ビット８ビットが付加された７２ビットであり、リードアドレスＲＡ、ライトアドレスＷＡのアドレス幅が１６ビットであるとする。また、バスＢのデータ幅は、記憶装置１の内部で取り扱われるデータのデータ幅である６４ビットより少ない３２ビットであるとする。
【００２２】
メモリコントローラ１１は、バスＢに接続されており、ＣＰＵ１０から出力されるデータ、アドレス、および制御命令に基づいて、図１に示す記憶装置１の各部を制御することによって、メモリ１２に記憶されたデータの読み出し、およびメモリ１２に対するデータの書き込みの制御を行なう。
【００２３】
メモリ１２は、１ポートメモリである。このため、２ポートメモリを用いる場合よりもメモリ１２自身および記憶装置１の面積を小さくするとともに、消費電力を小さくすることができる。本実施形態において、メモリ１２は、内部のメモリ領域を第１メモリ領域１２１と第２メモリ領域１２２の２つに分割している。メモリ１２は、同じ領域に対して同時にライトとリードを行なうことはできないが、別の領域であれば、ライトとリードとを並行して行なうことができるように構成されている。
【００２４】
本実施形態では、第１メモリ領域１２１に偶数アドレスを割り当て、第２メモリ領域１２２に奇数アドレスを割り当てている。すなわち、アクセスアドレスが偶数であれば第１メモリ領域１２１にアクセスが行なわれ、アクセスアドレスが奇数であれば第２メモリ領域１２２にアクセスが行なわれる。第１メモリ領域１２１、第２メモリ領域１２２ともデータ幅６４ビットにＥＣＣのための冗長ビット８ビットを付加した７２ビット幅でデータを取り扱う。
【００２５】
第１メモリ領域１２１、第２メモリ領域１２２には、メモリライトイネーブル信号出力先選択回路２０からのメモリライトイネーブル信号（ＭＷＥ１、ＭＷＥ２）、冗長ビット生成回路１７からのメモリライトデータＭＷＤ、アドレス選択回路１８からのメモリアクセスアドレス（ＭＡＡ１、ＭＡＡ２）が入力され、メモリリードデータ（ＭＲＤ１、ＭＲＤ２）をリードデータ選択回路１９に出力する。なお、第１メモリ領域１２１、第２メモリ領域１２２をそれぞれ別個の１ポートメモリを用いて構成するようにしてもよい。
【００２６】
アドレス保持回路１４は、リード・モディファイ・ライト動作の際に、第１サイクルのリードアドレスＲＡを保持し、第２サイクルでライトアドレスＷＡとして出力する。
【００２７】
エラー検出訂正回路１５は、リードデータ選択回路１９から出力された７２ビットのメモリリードデータＭＲＤの一部をなす８ビットの冗長ビットを用いてエラーの検出および訂正を行なう。なお、メモリリードデータＭＲＤは、メモリ１２の第１メモリ領域１２１から読み出されたメモリリードデータＭＲＤ１、第２メモリ領域１２２から読み出されたメモリリードデータＭＲＤ２のうち、リードデータ選択回路１９によって選択されたデータである。
【００２８】
ここで、エラー検出訂正回路１５は、１ビットエラーを訂正し、２ビット以上のエラーを検出するＳＥＣ−ＤＥＤ（Single Error Correction and Double Error Detection）によってエラーの検出および訂正を行なうものとする。このＳＥＣ−ＤＥＤでは、ハミングコードを用いて冗長ビットを生成するのが主流であり、必要となる冗長ビットのビット数は、データ幅の数に対して２を底とした対数をとって得られる値に２を加えた数となる。本実施形態では、データ幅が６４ビットであるため、８ビットの冗長ビットが必要となる。
【００２９】
エラー検出訂正回路１５は、リードデータ選択回路１９から出力された７２ビットのメモリリードデータＭＲＤの一部をなす６４ビットのデータにエラーがあるか否かを判定し、エラーの有無に応じて以下に示す（１）〜（３）のいずれかの処理を行なう。
【００３０】
（１）エラーがない場合：データビットをそのままデータＲＤとして出力
【００３１】
（２）エラーが１つの場合：エラーを修正し、エラーを修正したデータビットをデータＲＤとして出力
【００３２】
（３）エラーが２以上の場合：データビットをそのままデータＲＤとして出力
【００３３】
なお、エラーが検出された（２）（３）の場合には、エラーが発生したアドレスを保存し、割り込み等によってＣＰＵ１０に通知する処理が行なわれる。この処理は、本発明と直接的には関係しないため詳細な説明を省略する。
【００３４】
冗長ビット生成回路１７は、リード・モディファイ・ライト動作の第２サイクルにおいて、メモリコントローラ１１から出力されるライトデータＷＤと、エラー検出訂正回路１５から出力されるリードデータＲＤとからメモリ１２に記憶すべき６４ビットのデータを生成するとともに、このデータに付加する８ビットの冗長ビットを生成する。そして、これらを合成した７２ビットのデータをメモリライトデータＭＷＤとして出力する。この際に、メモリライトイネーブル信号ＭＷＥを出力する。
【００３５】
アドレス選択回路１８は、リード・モディファイ・ライト動作の１サイクル目のリードアドレスＲＡ、２サイクル目のライトアドレスＷＡの出力先として第１メモリ領域１２１、第２メモリ領域１２２のいずれかを選択する。具体的には、アドレスが偶数であれば第１メモリ領域１２１を選択して、メモリアクセスアドレスＭＡＡ１として第１メモリ領域１２１に出力し、アドレスが奇数であれば第２メモリ領域１２２を選択して、メモリアクセスアドレスＭＡＡ２として第２メモリ領域１２２に出力する。
【００３６】
リードデータ選択回路１９は、リード・モディファイ・ライト動作の第１サイクルのメモリリードデータＭＲＤとして、第１メモリ領域１２１から読み出したメモリリードデータＭＲＤ１、第２メモリ領域１２２から読み出したメモリリードデータＭＲＤ２のいずれかを選択して出力する。具体的には、リードアドレスＲＡが偶数であれば第１メモリ領域１２１から読み出したメモリリードデータＭＲＤ１を選択し、リードアドレスＲＡが奇数であれば第２メモリ領域１２２から読み出したメモリリードデータＭＲＤ２を選択する。
【００３７】
メモリライトイネーブル信号出力先選択回路２０は、リード・モディファイ・ライト動作の第２サイクルにおいて、冗長ビット生成回路１７が出力したメモリライトイネーブル信号ＭＷＥを第１メモリ領域１２１、第２メモリ領域１２２のいずれかに出力する。具体的には、アドレス保持回路１４が出力するライトアドレスＷＡが偶数であれば第１メモリ領域１２１にメモリライトイネーブル信号ＭＷＥ１を出力し、ライトアドレスＷＡが奇数であれば第２メモリ領域１２２にメモリライトイネーブル信号ＭＷＥ２を出力する。
【００３８】
ライトアクセス検出回路２１は、メモリライトイネーブル信号ＭＷＥ１がイネーブルであれば、第１メモリ領域１２１にライトアクセスが行なわれていることを示すビジー信号Ｂ１をウェイトコントロール回路２２に出力し、メモリライトイネーブル信号ＭＷＥ２がイネーブルであれば、第２メモリ領域１２２にライトアクセスが行なわれていることを示すビジー信号Ｂ２をウェイトコントロール回路２２に出力する。
【００３９】
ウェイトコントロール回路２２は、ビジー信号Ｂ１、ビジー信号Ｂ２、リード・モディファイ・ライト動作の第１サイクルであるデータリード動作のリードアドレスＲＡを入力し、リードアドレスＲＡが示すアドレスに対応するメモリ領域にライトアクセスが行なわれている場合に、ウェイトコントロール信号ＷＣをメモリコントローラ１１に出力する。このウェイトコントロール信号ＷＣにより、リード・モディファイ・ライト動作の第１サイクルであるデータリード動作が１サイクル分ウェイトされることになる。
【００４０】
次に、上記構成における記憶装置１がメモリライトを連続して行なう場合の動作について説明する。なお、メモリライトは、パーシャルライトであり、リード・モディファイ・ライト動作が行なわれる。以下では、先行するメモリライトアクセスをメモリライトアクセス（Ｎ）とし、次のメモリライトアクセスをメモリライトアクセス（Ｎ＋１）と称する。
【００４１】
まず、連続して行なわれるパーシャルライトが、メモリ１２の異なる領域へのアクセスである場合について説明する。
【００４２】
第１メモリ領域１２１には偶数アドレスが割り当てられ、第２メモリ領域１２２には奇数アドレスが割り当てられていることから、連続するアドレスに対して連続アクセスが行なわれる場合は、メモリ１２の異なる領域への連続アクセスとなる。すなわち、第１メモリ領域１２１と第２メモリ領域１２２とに交互にアクセスすることになる。
【００４３】
一般に、メモリアクセスは、キャッシュのリフィル動作等のブロック転送が多く占めており、このブロック転送では、連続するアドレスに対するアクセスが行なわれる。このため、ほとんどのメモリアクセスは、連続するアドレスに対するものとなり、メモリ１２の異なる領域への連続アクセスとなる。
【００４４】
ＣＰＵ１０から記憶装置１に対してバスＢを介したメモリライトアクセス（Ｎ）がなされると、このメモリライトアクセス（Ｎ）は、メモリコントローラ１１によって検出される。メモリライトアクセスは、パーシャルライトであるため、メモリコントローラ１１の制御の下で、まず、メモリ１２のいずれかの領域からデータを読み出す第１サイクルが行なわれ、次いで、読み出したデータを更新してメモリ１２の同じ領域に書き戻す第２サイクルが行なわれる。また、第２サイクルには、次のメモリライトアクセス（Ｎ＋１）がＣＰＵ１０によってなされる。ここでは、最初のメモリライトアクセス（Ｎ）が、第１メモリ領域１２１に対するアクセスであり、次のメモリライトアクセス（Ｎ＋１）が、第２メモリ領域１２２に対するアクセスであるとする。
［第１サイクル］
【００４５】
メモリライトアクセス（Ｎ）の第１サイクルが開始されると、メモリコントローラ１１からリードアドレスＲＡおよびライトデータＷＤが出力される。なお、リードアドレスＲＡは、メモリライトアクセス（Ｎ）によって更新されるべきデータが記憶されているメモリ１２のアドレスを示し、ライトデータＷＤは、更新すべきデータを示すデータである。
【００４６】
アドレス選択回路１８は、リードアドレスＲＡにしたがって、第１メモリ領域１２１を選択し、メモリアクセスアドレスＭＡＡ１を第１メモリ領域１２１に出力して、第１メモリ領域１２１からデータを読み出す。リードデータ選択回路１９は、リードアドレスＲＡにしたがって、第１メモリ領域１２１から読み出されたメモリリードデータＭＲＤ１をエラー検出訂正回路１５に出力する。エラー検出訂正回路１５では、メモリリードデータＭＲＤ１のエラーチェックが行なわれる。リードアドレスＲＡは、アドレス保持回路１４によって保持される。
［第２サイクル］
【００４７】
メモリライトアクセス（Ｎ）の第２サイクルでは、冗長ビット生成回路１７が、エラー検出訂正回路１５によりエラーチェックされたリードデータＲＤとライトデータＷＤからメモリライトデータＭＷＤを生成し、第１メモリ領域１２１および第２メモリ領域１２２に出力する。また、メモリライトイネーブル信号ＭＷＥをメモリライトイネーブル信号出力先選択回路２０とアドレス選択回路１８に出力する。
【００４８】
メモリライトイネーブル信号出力先選択回路２０は、アドレス保持回路１４が保持しているアドレスＷＡにしたがって、第１メモリ領域１２１およびライトアクセス検出回路２１にメモリライトイネーブル信号ＭＷＥ１を出力する。これによって、第１メモリ領域１２１にメモリライトデータＭＷＤが書き込まれることになる。
【００４９】
また、ライトアクセス検出回路２１は、メモリライトイネーブル信号ＭＷＥ１に応じて、第１メモリ領域１２１にライトアクセスが行なわれていることを示すビジー信号Ｂ１をウェイトコントロール回路２２に出力する。
【００５０】
一方、メモリライトアクセス（Ｎ）の第２サイクルにおいて、次のメモリライトアクセス（Ｎ＋１）がなされると、ウェイトコントロール回路２２は、次のメモリライトアクセス（Ｎ＋１）のアクセス先である第２メモリ領域１２２に対応するビジー信号Ｂ２が出力されているかどうかを判定する。
【００５１】
ここでは、ビジー信号Ｂ１が出力され、ビジー信号Ｂ２は出力されていないことから、ウェイトコントロール信号ＷＣは出力しない。これにより、メモリライトアクセス（Ｎ＋１）の第１サイクルは、ウェイトすることなく、第２メモリ領域１２２にアクセスしてデータのリードを行なうことができる。メモリライトアクセス（Ｎ＋１）の以降の動作は、アクセス対象が第２メモリ領域１２２であること以外は、メモリライトアクセス（Ｎ）と同様である。
【００５２】
この結果、第１メモリ領域１２１、第２メモリ領域１２２に対する連続アクセスは、図２に示すように、メモリライトアクセス（Ｎ）の第２サイクルであるライトと、メモリライトアクセス（Ｎ＋１）の第１サイクルであるリードとが並行して行なわれ、リード動作のウェイトは発生しない。
【００５３】
次に、連続して行なわれるパーシャルライトが、メモリ１２の同じ領域へのアクセスである場合について説明する。ここでは、最初のメモリライトアクセス（Ｎ）が、第１メモリ領域１２１に対するアクセスであり、次のメモリライトアクセス（Ｎ＋１）も、第１メモリ領域１２１に対するアクセスであるとする。
［第１サイクル］
【００５４】
メモリライトアクセス（Ｎ）の第１サイクルが開始されると、メモリコントローラ１１からリードアドレスＲＡおよびライトデータＷＤが出力される。
【００５５】
アドレス選択回路１８は、リードアドレスＲＡにしたがって、第１メモリ領域１２１を選択し、メモリアクセスアドレスＭＡＡ１を第１メモリ領域１２１に出力して、第１メモリ領域１２１からデータを読み出す。リードデータ選択回路１９は、リードアドレスＲＡにしたがって、第１メモリ領域１２１から読み出されたメモリリードデータＭＲＤ１をエラー検出訂正回路１５に出力する。エラー検出訂正回路１５では、メモリリードデータＭＲＤ１のエラーチェックが行なわれる。リードアドレスＲＡは、アドレス保持回路１４によって保持される。
［第２サイクル］
【００５６】
メモリライトアクセス（Ｎ）の第２サイクルでは、冗長ビット生成回路１７が、エラー検出訂正回路１５によりエラーチェックされたリードデータＲＤとライトデータＷＤからメモリライトデータＭＷＤを生成し、第１メモリ領域１２１および第２メモリ領域１２２に出力する。また、メモリライトイネーブル信号ＭＷＥをメモリライトイネーブル信号出力先選択回路２０とアドレス選択回路１８に出力する。
【００５７】
メモリライトイネーブル信号出力先選択回路２０は、アドレス保持回路１４が保持しているアドレスにしたがって、第１メモリ領域１２１およびライトアクセス検出回路２１にメモリライトイネーブル信号ＭＷＥ１を出力する。これによって、第１メモリ領域１２１にメモリライトデータＭＷＤが書き込まれることになる。
【００５８】
また、ライトアクセス検出回路２１は、メモリライトイネーブル信号ＭＷＥ１に応じて、第１メモリ領域１２１にライトアクセスが行なわれていることを示すビジー信号Ｂ１をウェイトコントロール回路２２に出力する。
【００５９】
一方、メモリライトアクセス（Ｎ）の第２サイクルにおいて、次のメモリライトアクセス（Ｎ＋１）がなされると、ウェイトコントロール回路２２は、次のメモリライトアクセス（Ｎ＋１）のアクセス先である第１メモリ領域１２１に対応するビジー信号Ｂ１が出力されているかどうかを判定する。
【００６０】
ここでは、ビジー信号Ｂ１が出力されていることから、ウェイトコントロール信号ＷＣを出力する。これにより、メモリライトアクセス（Ｎ＋１）の第１サイクルはウェイトして、次のサイクルで第１メモリ領域１２１にアクセスしてデータのリードを行なう。メモリライトアクセス（Ｎ＋１）の以降の動作は、メモリライトアクセス（Ｎ）と同様である。
【００６１】
この結果、第１メモリ領域１２１に対する連続アクセスは、図３に示すように、メモリライトアクセス（Ｎ）の第２サイクルであるライトが終了した後に、メモリライトアクセス（Ｎ＋１）の第１サイクルであるリードが行なわれる。このように、同じ領域に対する連続アクセスが行なわれる場合には、１サイクルのウェイトが発生するが、上述のように、メモリアクセスは大部分が連続するアドレスに対するアクセスであるため、本実施形態の記憶装置１を用いることにより、２ポートメモリを用いることなく、連続するリード・モディファイ・ライト動作におけるメモリアクセスの待ち時間を削減することができる。
【００６２】
なお、本実施形態では、第１メモリ領域１２１に偶数アドレスを割り当て、第２メモリ領域１２２に奇数アドレスを割り当てるようにしている。これは、連続するアクセス動作が、連続するアドレス、すなわち、最下位ビットが交互に変化する場合を想定していたためである。
【００６３】
しなしながら、本発明は、このようなアドレス割り当てに限られない。例えば、連続するアクセス動作が、最上位ビットが交互に変化するアドレスに対するものであれば、最上位ビットの偶数、奇数に応じて第１メモリ領域１２１、第２メモリ領域１２２の割り当てを行なうことにより、第１メモリ領域１２１と第２メモリ領域１２２とを交互にアクセスすることができるようになる。連続するアクセス動作が、所定の中間ビットが交互に変化するアドレスに対するものである場合も同様である。
【００６４】
その他にも、連続するアクセスが、例えば、アドレス領域の前半部分と後半部分とを交互に対象とするものであれば、第１メモリ領域１２１に前半のアドレスを割り当て、第２メモリ領域１２２に後半のアドレスを割り当てることで、連続するアクセス動作において、第１メモリ領域１２１と第２メモリ領域１２２とを交互にアクセスすることができるようになる。
【００６５】
次に、本発明の実施形態である記憶装置の変形例について説明する。上記の記憶装置１では、同じ領域に対する連続アクセスが行なわれる場合に、メモリライトアクセス（Ｎ）の第２サイクルであるライト動作と、メモリライトアクセス（Ｎ＋１）の第１サイクルであるリード動作とが重なると、メモリライトアクセス（Ｎ）の第２サイクルであるライト動作を優先して行ない、メモリライトアクセス（Ｎ＋１）の第１サイクルであるリード動作をウェイトするようにしていた。この手順は、メモリライトアクセス（Ｎ）の次にリードアクセス（Ｎ＋１）が行なわれた場合も同様で、リードアクセス（Ｎ＋１）がウェイトする。
【００６６】
これに対し、変形例では、どちらを優先するかを選択できるようにする。図４は、本発明の実施形態である記憶装置の変形例の要部構成を示すブロック図である。図１と同じブロックについては同じ符号を付して、説明を省略する。
【００６７】
本図に示すように記憶装置２は、メモリコントローラ１１ａ、メモリ１２、アドレス保持回路１４、エラー検出訂正回路１５、冗長ビット生成回路１７、アドレス選択回路１８、リードデータ選択回路１９、メモリライトイネーブル信号出力先選択回路２０、ライトアクセス検出回路２１、ウェイトコントロール回路２２ａ、リードライト優先度設定回路２３、ライトバッファ２４を備えている。
【００６８】
すなわち、図１に示した記憶装置１に、リードライト優先度設定回路２３、ライトバッファ２４が追加されている。また、メモリコントローラ１１、ウェイトコントロール回路２２に新たな機能が追加されている。
【００６９】
リードライト優先度設定回路２３は、メモリコントローラ１１ａからのリードライト優先度コントロール信号ＲＷＰＣに基づいて、リード動作を優先するか、ライト動作を優先するかを設定し、ライトバッファ２４を制御する。メモリコントローラ１１ａは、例えば、ユーザの指示、ＣＰＵ１０の指示等にしたがってリードライト優先度コントロール信号ＲＷＰＣを切り替えるものとする。
【００７０】
ライトバッファ２４は、バッファ領域を複数段備えており、冗長ビット生成回路１７が出力するメモリライトネーブル信号ＭＷＥおよびメモリライトデータＭＷＤ、ライトアドレスＷＡを入力し、必要に応じてメモリライトデータＭＷＤ、ライトアドレスＷＡをバッファ領域に一時的に格納する。
【００７１】
具体的には、リードライト優先度設定回路２３によってライト動作が優先されている場合は、メモリライトネーブル信号ＭＷＥおよびメモリライトデータＭＷＤを格納せずにそのまま出力する。この場合、記憶装置２は、上述の実施形態と同様の動作を行なう。
【００７２】
一方、リードライト優先度設定回路２３によってリード動作が優先されている場合は、リード動作とライト動作とが重なったときに、ライト動作に用いるメモリライトデータＭＷＤ、ライトアドレスＷＡを一時的に格納する。
【００７３】
格納したメモリライトデータＭＷＤは、対応するライトアドレスＷＡが示すライト対象領域がアクセス可能なタイミングで第１メモリ領域１２１あるいは第２メモリ領域１２２に書き込む。これにより、リード動作は、ウェイトすることなく行なうことができ、リード動作が優先して行なわれることになる。ライト対象領域がアクセス可能なタイミングかどうかは、例えば、リードアドレスＲＡを参照することで判断することができる。
【００７４】
また、ライトバッファ２４は、複数段備えたバッファ領域がフルになった場合も、格納したメモリライトデータＭＷＤを、対応するライトアドレスＷＡが示すライト対象領域に書き込む。この場合は、バッファフル信号ＢＦをウェイトコントロール回路２２ａに出力し、ウェイトコントロール回路２２ａからウェイトコントロール信号ＷＣをメモリコントローラ１１ａに出力することでリード動作をウェイトさせて、格納したメモリライトデータＭＷＤを第１メモリ領域１２１あるいは第２メモリ領域１２２に書き込むようにする。
【００７５】
なお、リード動作が優先されている場合に、ライトバッファ２４に格納しているデータに対するリードアクセスが発生すると、すなわち、ライトとバッファ２４に格納しているメモリライトデータＭＷＤのライトアドレスＷＡとリード対象のアドレスＲＡとが一致したときには、ライトバッファ２４に格納しているメモリライトデータＭＷＤをリード対象とする、あるいは、格納したメモリライトデータＭＷＤを、対応するライトアドレスＷＡが示すライト対象領域に書き込む動作を優先させるようにする。
【００７６】
以上説明したように、本実施形態の変形例である記憶装置２を用いることにより、２ポートメモリを用いることなく、連続するリード・モディファイ・ライト動作におけるメモリアクセスの待ち時間を削減することができるのに加え、同一領域に対するリード動作とライト動作とが同サイクルで発生した場合に、どちらの動作を優先して行なうかを選択することができるようになる。
【符号の説明】
【００７７】
１…記憶装置、２…記憶装置、１０…ＣＰＵ、１１…メモリコントローラ、１１ａ…メモリコントローラ、１２…メモリ、１４…アドレス保持回路、１５…エラー検出訂正回路、１７…冗長ビット生成回路、１８…アドレス選択回路、１９…リードデータ選択回路、２０…メモリライトイネーブル信号出力先選択回路、２１…ライトアクセス検出回路、２２…ウェイトコントロール回路、２３…リードライト優先度設定回路、２４…ライトバッファ
【図１】
2012174049.tif 000003
【図２】
2012174049.tif 000004
【図３】
2012174049.tif 000005
【図４】
2012174049.tif 000006