(57)【特許請求の範囲】
【請求項１】
メモリと、
前記メモリ内の任意のアドレスからデータをリードし、リードしたデータに所定の演算処理を行ない、演算処理後のデータを前記アドレスにライトするリードモディファイライト（ＲＭＷ）を実行するＲＭＷ実行手段と、
前記メモリに対するリードリクエスト及びライトリクエストの少なくとも一方のリクエストを保持するリクエストバッファと、
前記リクエストバッファが保持しているリクエストの個数をカウントするリクエスト個数管理手段と、
前記リクエスト個数管理手段がカウントした前記リクエストの個数に基づいて、前記ＲＭＷ実行手段のライト動作のタイミングを制御するＲＭＷタイミング制御手段と、
を備える記憶装置。
【請求項２】
前記ＲＭＷタイミング制御手段は、前記リクエスト個数管理手段がカウントした個数の前記リクエストを処理するためにかかる時間に応じて、前記ライト動作のタイミングを遅延させる請求項１に記載の記憶装置。
【請求項３】
前記ＲＭＷ実行手段により前記ＲＭＷが実行される前記アドレスと、前記リクエストバッファに格納された前記リクエストのアドレスと、を比較し、比較結果に基づいて、前記リクエストバッファから前記リクエストが出力されることを制限するアドレス比較手段をさらに備える請求項１または２に記載の記憶装置。
【請求項４】
前記アドレス比較手段は、前記リクエストバッファに保持された前記リクエストのアドレスの中に、前記ＲＭＷが実行される前記アドレスと同一のアドレスが存在する場合、前記リクエストバッファから当該同一のアドレスのリクエストが出力されることを制限する請求項３に記載の記憶装置。
【請求項５】
前記メモリは、複数のバンクアドレスを有し、
前記リクエスト個数管理手段は、前記リクエストを前記バンクアドレス毎にカウントし、
前記ＲＭＷタイミング制御手段は、前記リクエストバッファから同一バンクアドレスの前記リクエストが複数出力されることを制限すると共に、前記リクエストを受けた前記バンクアドレスの個数に基づいて、前記ＲＭＷ実行手段のライト動作のタイミングを制御する請求項１〜４のいずれか一項に記載の記憶装置。
【請求項６】
前記ＲＭＷタイミング制御手段は、前記ＲＭＷの前記ライト動作が実行されるタイミングに、前記リクエストバッファから前記リクエストが出力されることを制限する請求項１〜５のいずれか一項に記載の記憶装置。
【請求項７】
前記ＲＭＷ実行手段は、一のＲＭＷリクエストを受けることにより、前記ＲＭＷのリード動作及びライト動作を実行する請求項１〜６のいずれか一項に記載の記憶装置。
【請求項８】
メモリを備え、前記メモリ内の任意のアドレスからデータをリードし、リードしたデータに所定の演算処理を行ない、演算処理後のデータを前記アドレスにライトするリードモディファイライト（ＲＭＷ）を実行可能な記憶装置の制御方法であって、
前記メモリに対するリードリクエスト及びライトリクエストの少なくとも一方のリクエストを保持するステップと、
保持されている前記リクエストの個数をカウントするステップと、
カウントした前記リクエストの個数に基づいて、前記ＲＭＷにおけるライト動作のタイミングを制御するステップと、
を備える記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶装置及びその制御方法に関し、特にＲＭＷ（Read Modify Write）を行う記憶装置及びその制御方法に関する。
【背景技術】
【０００２】
ＲＭＷリクエストの発行制御は、複雑な論理をとらず、ＲＭＷのリードリクエストとライトリクエストの間にリクエストが発行されない制御となっていた。そのため、映像系処理のようにＲＭＷリクエストが多く使われる場合には、リクエストが発行できない時間が長くなるため、記憶装置の性能が低くなってしまう問題があった。
【０００３】
特許文献１には、パーシャルライトの読出し動作と書込み動作の間に、リードリクエストやライトリクエストを受け付け可能な記憶装置が開示されている。特許文献２には、ＲＭＷリクエストのライトデータを書き込む処理を、次のＲＭＷリクエストが来るまで遅らせることができるメモリコントローラが開示されている。これらの技術を用いることにより、ＲＭＷのリードとライトの間にリクエストを発行することができ、メモリ使用率の向上を図ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−１３０１９５号公報
【特許文献２】特表２０１１−５０５０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の記憶装置においては、ＲＭＷリクエストのリードとライトの間隔が変わらない。そのため、ＲＭＷのリードとライト間に出力可能な他のリクエストの個数は制限される。したがって、メモリ使用率向上に限界がある。
【０００６】
特許文献２に記載のメモリコントローラにおいては、ＲＭＷのライト処理を遅らせることにより、ＲＭＷのリードとライトとの間に他のリクエストを出力し続けることができ、他のリクエストの個数は制限されない。
【０００７】
しかし、特許文献２に記載のメモリコントローラにおいては、ライトデータが書き込まれる処理を遅らせるために、ＲＭＷのライトを独立したライトリクエストとして扱うことになる。そのため、ＲＭＷにおけるリードリクエストとライトリクエストとを別々に発行する必要がある。加えて、メモリにライトデータを書き込むタイミングや、ＲＭＷのライトリクエストとバンクキュー内の他のリクエストとの間のシーケンス等の制御も別途必要となる。その結果、メモリコントローラの構成や処理が複雑化してしまうという問題があった。
【０００８】
本発明は、このような問題を解決するためになされたものであり、簡易な構成によりメモリ使用率を向上させることができる記憶装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明にかかる記憶装置は、メモリと、前記メモリ内の任意のアドレスからデータをリードし、リードしたデータに所定の演算処理を行ない、演算処理後のデータを前記アドレスにライトするリードモディファイライト（ＲＭＷ）を実行するＲＭＷ実行手段と、前記メモリに対するリードリクエスト及びライトリクエストの少なくとも一方のリクエストを保持するリクエストバッファと、前記リクエストバッファが保持しているリクエストの個数をカウントするリクエスト個数管理手段と、前記リクエスト個数管理手段がカウントした前記リクエストの個数に基づいて、前記ＲＭＷ実行手段のライト動作のタイミングを制御するＲＭＷタイミング制御手段と、を備えるものである。
【００１０】
本発明にかかる記憶装置の制御方法は、メモリを備え、前記メモリ内の任意のアドレスからデータをリードし、リードしたデータに所定の演算処理を行ない、演算処理後のデータを前記アドレスにライトするリードモディファイライト（ＲＭＷ）を実行可能な記憶装置の制御方法であって、前記メモリに対するリードリクエスト及びライトリクエストの少なくとも一方のリクエストを保持するステップと、保持されている前記リクエストの個数をカウントするステップと、カウントした前記リクエストの個数に基づいて、前記ＲＭＷにおけるライト動作のタイミングを制御するステップと、を備えるものである。
【発明の効果】
【００１１】
本発明により、簡易な構成によりメモリ使用率を向上させることができる記憶装置及びその制御方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１にかかる記憶装置のブロック図である。
【図２】実施の形態２にかかる記憶装置のブロック図である。
【図３】関連する記憶装置のタイムチャートである。
【図４】関連する記憶装置のタイムチャートである。
【図５】実施の形態２にかかる記憶装置のタイムチャートである。
【図６】実施の形態３にかかる記憶装置の図である。
【発明を実施するための形態】
【００１３】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかる記憶装置１００のブロック図を図１に示す。記憶装置１００は、リクエストバッファ１０１と、ＲＭＷ実行部１０２と、メモリ１０３と、リクエスト個数管理部１０４と、ＲＭＷタイミング制御部１０５と、を備える。記憶装置１００は、メモリ１０３に格納されたデータを加工して上書きするリードモディファイライト（ＲＭＷ）処理を実行可能である。
【００１４】
リクエストバッファ１０１は、例えばＲＡＭ（Random Access Memory）等のメモリであり、図示しない外部回路から入力されるリクエストを保持する。外部回路から入力されるリクエストとしては、メモリ１０３からデータを読み出すためのリードリクエスト、メモリ１０３にデータを書き込むためのライトリクエスト、ＲＭＷ処理を実行するためのＲＭＷリクエスト等が含まれる。
【００１５】
ＲＭＷ実行部１０２は、リクエストバッファ１０１から出力されるＲＭＷリクエストに応じて、ＲＭＷ処理を実行する。具体的には、ＲＭＷ実行部１０２は、メモリ１０３内の任意のアドレスからデータをリードする。そして、ＲＭＷ実行部１０２は、リードしたデータに所定の演算処理を行ない、演算処理後のデータを元の（リードした）アドレスにライトする。これにより、メモリ１０３に格納されたデータが加工され、上書きされる。
【００１６】
メモリ１０３は、例えばＲＡＭ等である。メモリ１０３では、外部回路からのリクエストに応じて、データのリード及びライト処理やＲＭＷ処理が行われる。なお、通常の（ＲＭＷ処理に関係しない）データのライト動作が行われる場合、メモリ１０３にライトされるデータを保持するデータバッファが別途必要となるが、本実施の形態においては図示を省略する。
【００１７】
リクエスト個数管理部１０４は、リクエストバッファ１０１に保持されているリードリクエスト及びライトリクエストの少なくとも一方のリクエストの個数をカウントする。
【００１８】
ＲＭＷタイミング制御部１０５は、リクエスト個数管理部１０４がカウントしたリクエストの個数に基づいて、ＲＭＷ実行部１０２のライト動作のタイミングを制御する。言い換えると、ＲＭＷタイミング制御部１０５は、リクエストの個数に基づいて、ＲＭＷにおけるリード動作とライト動作との間隔を調整する。
【００１９】
続いて、本実施の形態にかかる記憶装置１００の動作例について説明する。まず、図示しない外部回路からリクエストバッファ１０１にＲＭＷリクエストが入力される。その後、リクエストバッファ１０１には、通常のデータのリードリクエスト及びライトリクエストも順次入力される。
【００２０】
次に、リクエストバッファ１０１は、ＲＭＷリクエストをＲＭＷ実行部１０２に出力する。リクエスト個数管理部１０４は、ＲＭＷリクエストがＲＭＷ実行部１０２に出力された時点において、リクエストバッファ１０１が保持するリードリクエスト及びライトリクエストの少なくとも一方のリクエストの個数をカウントする。これにより、リクエスト個数管理部１０４は、ＲＭＷ実行部１０２にＲＭＷリクエストが入力されたときのリクエストの個数を取得する。リクエスト個数管理部１０４は、リクエストの個数を示す情報（以下、リクエスト個数情報と称す）をＲＭＷタイミング制御部１０５に出力する。
【００２１】
ＲＭＷタイミング制御部１０５は、入力されたリクエスト個数情報に基づいて、ＲＭＷ実行部１０２のライト動作のタイミングを遅延させる。より詳細には、ＲＭＷタイミング制御部１０５は、リクエスト個数管理部１０４がカウントした個数のリクエストを処理するためにかかる時間だけ、ＲＭＷ実行部１０２によるＲＭＷのライト動作のタイミングを遅延させる。言い換えると、ＲＭＷタイミング制御部１０５は、ＲＭＷのリード動作とライト動作との間隔を広げる。勿論、ライト動作のタイミングを遅延させる時間は、必ずしもリクエスト個数管理部１０４がカウントした個数のリクエストの全てを処理可能な時間丁度である必要はない。リクエストバッファ１０１が保持するリクエストの個数に応じて定められた時間であれば、リクエストの全てを処理可能な時間より長くてもよい。
【００２２】
ＲＭＷ実行部１０２は、ＲＭＷリクエストに応じたメモリ１０３のアドレスのデータをリードする。そして、ＲＭＷ実行部１０２は、リードしたデータに演算処理を行い、演算処理後のデータを保持しておく。
【００２３】
通常であれば、その後、ＲＭＷ実行部１０２は、演算処理後のデータを、当該データをリードしたアドレスにライトする。しかし、本実施の形態にかかる記憶装置１００においては、上記したように、ＲＭＷタイミング制御部１０５の制御により、演算処理後のデータのライト動作のタイミングが遅延される。そして、ＲＭＷにおけるライト動作の前に、リクエストバッファ１０１が保持するリードリクエスト（またはライトリクエスト）がメモリ１０３に出力され、通常のデータのリードライト動作が行われる。
【００２４】
ＲＭＷタイミング制御部１０５は、ＲＭＷ実行部１０２に対して、リクエスト個数管理部１０４によりカウントされたリクエストの個数に応じたタイミングで、ＲＭＷのライト動作を実行させる。つまり、ＲＭＷ実行部１０２は、リクエスト個数管理部１０４によりカウントされた個数のリードリクエスト（またはライトリクエスト）の処理が完了すると、保持していた演算処理後のデータをメモリ１０３にライトする。これにより、ＲＭＷ処理が完了する。
【００２５】
以上のように、本実施の形態にかかる記憶装置１００の構成によれば、リクエスト個数管理部１０４は、リクエストバッファ１０１が保持するリクエストの個数をカウントする。そして、ＲＭＷタイミング制御部１０５は、カウントされたリクエストの個数に基づいて、ＲＭＷのライト動作のタイミングを遅延させる。これにより、ＲＭＷにおけるリード動作とライト動作との間に、通常のデータのリードライト動作を実行できる。その結果、メモリの使用率を向上させることができる。加えて、ライト動作のタイミングを制御するために、複雑な制御回路や処理は必要とせず、リクエストバッファ１０１が保持するリクエストの個数をカウントする単純な処理回路のみを有していればよい。そのため、記憶装置１００の構成が複雑化することを防止できる。
【００２６】
＜実施の形態２＞
本発明にかかる実施の形態２について説明する。本実施の形態にかかる記憶装置２００のブロック図を図２に示す。記憶装置２００は、リクエストバッファ１と、データバッファ２と、リクエスト発行制御部３と、メモリ制御信号生成部５と、メモリ制御信号レジスタ６と、ＲＭＷデータ制御部７と、セレクタ８と、ＥＣＧ（Error check Code Generate）回路９と、ライトデータレジスタ１０と、メモリ１１と、リードデータレジスタ１２と、ＥＣＣ（Error Check Correct）回路１３と、を備える。
【００２７】
リクエストバッファ１は、例えばＲＡＭ等のメモリであり、図示しない外部回路から入力されるリクエストを保持する。データバッファ２は、例えばＲＡＭ等のメモリであり、図示しない外部回路から入力されるデータ（メモリ１１にライトされるデータ）を保持する。データバッファ２は、リクエスト発行制御部３の指示に応じて、保持しているライトデータをＲＭＷデータ制御部７またはセレクタ８に出力する。
【００２８】
リクエスト発行制御部３は、メモリ１１に対するリクエストの発行を制御する。リクエスト発行制御部３は、リードリクエスト個数管理部３−１と、ＲＭＷ（ライト）タイミングコントローラ３−２と、アドレス比較回路３−３と、を備える。
【００２９】
リードリクエスト個数管理部３−１（リクエスト管理手段）は、リクエストバッファ１に保持されているリードリクエストの個数をカウントする。リードリクエスト個数管理部３−１は、リードリクエスト個数情報をＲＭＷ（ライト）タイミングコントローラ３−２及びタイミングコントローラ５−３に出力する。
【００３０】
ＲＭＷ（ライト）タイミングコントローラ３−２（ＲＭＷタイミング制御手段）は、リードリクエスト個数管理部３−１がカウントしたリードリクエストの個数に基づいて、ＲＭＷのライト動作が実行されるタイミングにリクエストバッファ１から他のリクエストが出力されないように制御する。
【００３１】
アドレス比較回路３−３は、ＲＭＷリクエストのアドレスとリクエストバッファ１に保持されているリクエストのアドレスとを比較する。そして、アドレス比較回路３−３は、ＲＭＷ中に、メモリ１１に対してＲＭＷリクエストと同一アドレスのリクエストが発行されないように制御する。さらに、アドレス比較回路３−３は、リクエストバッファ１に保持されているリクエスト間のアドレスを比較し、同一アドレスのリクエストの順序保障を行う。
【００３２】
メモリ制御信号生成部５は、メモリ１１に対するデータのリードライトを制御する。メモリ制御信号生成部５は、メモリアクセスコマンド制御部５−１と、ＲＭＷコマンド制御部５−２と、タイミングコントローラ５−３と、セレクタ５−４と、を備える。
【００３３】
メモリアクセスコマンド制御部５−１には、リクエストバッファ１に保持されたリードリクエストまたはライトリクエストが入力される。メモリアクセスコマンド制御部５−１は、通常のデータのリードリクエストまたはライトリクエストに応じて、セレクタ５−４に対してリード制御信号またはライト制御信号を生成し、出力する。なお、リード制御信号及びライト制御信号とは、メモリ１１に対してリード動作及びライト動作を実行させるための信号である。
【００３４】
ＲＭＷコマンド制御部５−２には、リクエストバッファ１に保持されたＲＭＷリクエストが入力される。ＲＭＷコマンド制御部５−２は、ＲＭＷリクエストに応じて、セレクタ５−４に対してＲＭＷにおけるリード制御信号及びライト制御信号を生成し、出力する。
【００３５】
タイミングコントローラ５−３（ＲＭＷタイミング制御手段）は、リクエストバッファ１から入力されたＲＭＷリクエストに応じて、セレクタ５−４に対して制御信号を出力する。これにより、タイミングコントローラ５−３は、セレクタ５−４に対して、メモリアクセスコマンド制御部５−１からのリード（またはライト）制御信号及びＲＭＷコマンド制御部からのリード（またはライト）制御信号のいずれか一方を選択させる。
【００３６】
メモリ制御信号レジスタ６は、セレクタ５−４が選択したリード（ライト）制御信号を保持し、メモリ１１に出力する。
【００３７】
ＲＭＷデータ制御部７は、データバッファ２から入力されたライトデータに基づいて、入力されたリードデータに対して、所定の演算処理を行い、演算処理後のデータをセレクタ８に出力する。本実施の形態においては、ＲＭＷデータ制御部７は、ＥＣＣ回路１３から入力されたリードデータと、データバッファ２から入力されたライトデータとで所定の演算処理を行い、セレクタ８に出力する。
【００３８】
セレクタ８は、タイミングコントローラ５−３から入力される制御信号に応じて、データバッファ２から出力されたライトデータ及びＲＭＷデータ制御部７から出力されたＲＭＷのライトデータのいずれか一方を選択する。
【００３９】
ＥＣＧ回路９は、セレクタ８が選択したライトデータに対してＥＣＣチェックビットを生成する。ライトデータレジスタ１０は、ライトデータを保持し、メモリ１１に出力する。メモリ１１は、例えば、ＲＡＭ等であり、メモリ制御信号レジスタ６のリード制御信号に応じたアドレスのデータをリードし、リードデータレジスタ１２に出力する。また、メモリ１１は、ライト制御信号に応じたアドレスにライトデータレジスタ１０に保持されているライトデータをライトする。
【００４０】
リードデータレジスタ１２は、リード制御信号に応じてメモリ１１が出力したリードデータを保持し、ＥＣＣ回路１３に出力する。ＥＣＣ回路１３は、リードデータに対して１ビットの誤りを検出し、誤りがあった場合には誤り訂正処理を行う。ＥＣＣ回路１３は誤り訂正処理を行ったリードデータを図示しない上位装置及びＲＭＷデータ制御部７に出力する。
【００４１】
続いて、本実施の形態にかかる、記憶装置２００の動作について説明する。まず、ＲＭＷリクエストが処理される場合、ＲＭＷのコマンド、アドレス、ライトデータが上位装置（図示省略）から入力される。具体的には、コマンド及びアドレスはリクエストバッファ１に格納され、ライトデータはデータバッファ２に格納される。
【００４２】
リクエスト発行制御部３により、ＲＭＷリクエストがリクエストバッファ１から選択される。これにより、リクエストバッファ１からメモリ制御信号生成部５にＲＭＷリクエストが入力される。また、リクエスト発行制御部３により、ライトデータがデータバッファ２から選択される。これによりデータバッファ２からＲＭＷデータ制御部７にＲＭＷのライトデータが入力される。
【００４３】
ＲＭＷの第一ステップとして、まず、メモリ１１からデータの読み出しを行う。メモリ制御信号生成部５に入力されたＲＭＷリクエストは、ＲＭＷコマンド制御部５−２、タイミングコントローラ５−３に格納される。そして、ＲＭＷコマンド制御部５−２は、ＲＭＷリクエストに基づいて、リード制御信号及びライト制御信号を生成する。このとき、ＲＭＷコマンド制御部５−２は、１つのＲＭＷリクエストの入力に応じて、リード制御信号及びライト制御信号の両方を生成する。つまり、ＲＭＷリクエストの入力においては、ＲＭＷのリードリクエストとライトリクエストとが独立してリクエストバッファ１に入力されない。そのため、上位装置からＲＭＷのライトリクエストを別途出力してもらう必要はない。
【００４４】
また、タイミングコントローラ５−３は、ＲＭＷコマンド制御部５−２からのリード制御信号を、最適なタイミングでセレクタ５−４に選択させる制御信号を生成する。ＲＭＷコマンド制御部５−２が生成したリード制御信号及びアドレスは、セレクタ５−４を介してメモリ制御信号レジスタ６に保持され、メモリ１１に発行される。
【００４５】
その後、メモリ１１は、リード制御信号及びアドレスに応じて、ＲＭＷのリードデータをリードし、出力する。出力されたリードデータは、リードデータレジスタ１２に保持される。リードデータは、ＥＣＣ回路１３において１ビットエラーの訂正が行われ、リードデータとして上位装置に出力されるとともに、ＲＭＷデータ制御部７に出力される。ＲＭＷデータ制御部７は、ＲＭＷリクエストの指示に応じて、読み出したリードデータの一部（または全部）を、データバッファ２から入力されたライトデータに書き換えて、保持する。
【００４６】
次に、第二ステップとして、ＲＭＷにおけるリード動作とライト動作との間に、通常のデータのリードリクエストを発行する。上述したように、ＲＭＷリクエストがリクエストバッファ１から選択されると、リードリクエスト個数管理部３−１は、リクエストバッファ１内に保持されているリードリクエストの個数をカウントする。リードリクエスト個数管理部３−１は、カウントしたリードリクエスト個数の情報をＲＭＷ(ライト)タイミングコントローラ３−２及びタイミングコントローラ５−３に出力する。
【００４７】
タイミングコントローラ５−３は、受け取ったリードリクエスト個数情報に基づいて、ＲＭＷコマンド制御部が生成したＲＭＷのライト制御信号を、メモリ１１に対していつ発行するかを決める。つまり、タイミングコントローラ５−３は、リードリクエスト個数情報に基づいて、ＲＭＷのライト制御信号の出力タイミングを制御する。例えば、リクエストバッファ１にリードリクエストが７個あった場合、タイミングコントローラ５−３は、リードリクエストを７個処理できる時間だけライト制御信号の出力を遅らせる。一方、リクエストバッファ１にリードリクエストが０個の場合、タイミングコントローラ５−３は、ライト制御信号を遅らせることは行わず、最短のタイミングでライト制御信号を発行させる。
【００４８】
ＲＭＷ(ライト)タイミングコントローラ３−２は、入力されたリードリクエスト個数情報に基づいて、タイミングコントローラ５−３がＲＭＷコマンド制御部５−２からのライト制御信号を発行させるタイミングにおいて、リクエストバッファ１から他のリクエストが出力されないように制御する。このように、ＲＭＷのライト動作を遅らせることにより、リードリクエスト個数管理部３−１においてカウントされた個数分のリードリクエストのそれぞれが、順番にメモリアクセスコマンド制御部５−１、セレクタ５−４、メモリ制御信号レジスタ６を介して、メモリ１１に出力される。
【００４９】
第三ステップとして、ＲＭＷ制御部７に保持されているＲＭＷのライトデータがメモリ１１に書き込まれる。リードリクエスト個数管理部３−１においてカウントされた個数のリードリクエストが全て発行されると、ＲＭＷコマンド制御部５−２に保持されているＲＭＷのアドレスとライト制御信号は、セレクタ５−４に出力される。セレクタ５−４は、タイミングコントローラ５−３からの制御信号によって、アドレス及びライト制御信号を、メモリ制御レジスタ６に出力する。メモリ制御レジスタ６は、アドレス及びライト制御信号を保持し、メモリ１１に発行する。
【００５０】
一方、ＲＭＷデータ制御部７に保持されているＲＭＷのライトデータは、セレクタ８に出力される。セレクタ８は、タイミングコントローラ５−３の制御によって、ライトデータをＥＣＧ回路９に出力する。ＥＣＧ回路９は、ライトデータに対するＥＣＣチェックビットを生成する。その後、ライトデータは、ライトデータレジスタ１０に保持され、メモリ１１に発行される。これにより、ＲＭＷのデータ書き込み（ライト動作）が行われる。以上で一連のＲＭＷ処理が完了する。
【００５１】
なお、ＲＭＷのリード動作とライト動作との間に発行されるリードリクエストがＲＭＷリクエストと同一アドレスの場合、データ化けになってしまう。そのため、ＲＭＷが行われるアドレスと同一アドレスのリードリクエストは発行されないようにする必要がある。アドレス比較回路３−３は、発行されたＲＭＷリクエストのアドレスを保持し、そのアドレスと同一アドレスの他のリードリクエストを、ＲＭＷ中にリクエストバッファ１から出力させない。
【００５２】
また、アドレス比較回路３−３は、リクエストバッファ１内のリードリクエスト間のアドレス比較も行う。そして、同一アドレスのリードリクエストが存在する場合、アドレス比較回路３−３は、リクエストの順番に応じてリクエストバッファ１にリードリクエストを出力させ、同一アドレスの追い越しを発生させない。このようにして同一アドレスリクエスト間の順序保障を行っている。
【００５３】
以上のように、本実施の形態にかかる記憶装置２００の構成によれば、ＲＭＷリクエストがあった場合、リードリクエスト個数管理部３−１が、リクエストバッファ１に保持されているリードリクエストの個数をカウントする。そして、タイミングコントローラ５−３は、リードリクエスト個数情報に基づいて、リクエストバッファ１内に保持されたリードリクエストが全て発行されるまで、ＲＭＷのライト動作のタイミングを遅延させる。これにより、リードリクエストの個数に応じた時間だけ、ＲＭＷのライト動作が遅延する。したがって、ＲＭＷのリード動作とライト動作との間に、通常のリードリクエストを処理できる。その結果、メモリ使用率を向上させることができる。
【００５４】
ここで、具体例を用いて、本実施の形態にかかる記憶装置２００のメモリ使用率の向上について説明する。例えば、リクエストバッファ１内にリードリクエストが７個保持されていたときのタイムチャートを図３〜図５に示す。図３は、関連する記憶装置のタイムチャートである。図４は、特許文献１の記憶装置のタイムチャートである。図５は、本実施の形態にかかるタイムチャートである。なお、図３〜図５のタイムチャートにおいては、コマンド（リクエスト）が発行されてから該当するデータがリードされるまでの時間と、コマンドが発行されてから該当するデータがライトされるまでの時間とが異なっている。具体的には、コマンドが発行されてから該当するデータがライトされるまでの時間の方が短い。
【００５５】
図３に示す関連する記憶装置においては、ＲＭＷのリード動作とライト動作との間においては、リードリクエストの発行が禁止されている。そのため、リードリクエストは、ＲＭＷのライトリクエストが発行された後に初めて発行されるため、全てのリードリクエストの完了時間は、２９クロックとなる。
【００５６】
図４に示す特許文献１の記憶装置においては、ＲＭＷのリード動作とライト動作との間において、リードリクエストの発行が行われる。しかし、ＲＭＷリクエストのリードとライトの間隔が変わらない。そのため、ＲＭＷのリード動作とライト動作との間に出力可能な他のリクエストの個数は２個に制限される。その結果、残りの５つのリードリクエストは、ＲＭＷのライトリクエストが発行された後に発行される。したがって、全てのリードリクエストの完了時間は、２５クロックとなる。
【００５７】
これに対して、図５に示す本実施の形態にかかる記憶装置２００においては、ＲＭＷのリード動作とライト動作との間に７個のリクエストが発行される。これにより、全てのリードリクエストの完了時間は１９クロックとなる。図３及び図４と比較すると、それぞれ１０クロック及び６クロックの短縮となり、システムの性能は向上している。
【００５８】
さらに、特許文献２のメモリコントローラは、リクエストを一時的に格納する複数のバンクキューを備えており、ＲＭＷのライトリクエストとバンクキュー内のリクエスト間のシーケンス制御も必要となる。加えて、同一バンクキュー内でのリクエスト追い越し制御による更なるメモリ使用効率の向上や、ライトリクエストよりリードリクエストを優先させる制御を追加してシステムとしての性能向上を目指した場合、シーケンス制御はますます複雑になってしまう。その結果、データ化けやリクエストの沈み込み、デッドロックなどの不具合を発生する可能性が高くなってしまうという問題があった。
【００５９】
これに対して、本実施の形態にかかる記憶装置２００は、リクエストバッファ１に保持されているリクエストの個数をカウントし、リクエストの個数に応じてＲＭＷのライト動作を遅延させる制御を行うだけでよい。そのため、複雑なシーケンス制御を必要とせず、上記のような問題を回避することができる。
【００６０】
＜実施の形態３＞
本発明にかかる実施の形態３について説明する。本実施の形態にかかる記憶装置３００のブロック図を図６に示す。記憶装置３００は、図２に示した記憶装置２００の構成に加えて、ライトリクエスト個数管理部３−４を備える。なお、その他の構成については記憶装置２００と同様であるので、説明を適宜省略する。
【００６１】
ライトリクエスト個数管理部３−４は、リクエスト発行制御部３に含まれており、リクエストバッファ１に保持されているライトリクエストの個数をカウントする。
【００６２】
続いて、本実施の形態にかかる記憶装置３００の動作例について説明する。上記の実施の形態２において、記憶装置２００の動作を第一ステップ〜第三ステップに分けて説明したが、本実施の形態にかかる記憶装置３００においても第一ステップ及び第三ステップは同様の動作であるため、説明を省略する。
【００６３】
記憶装置３００は、第二ステップとして、ＲＭＷにおけるリード動作とライト動作との間に、通常のデータのリードリクエストを発行する。ＲＭＷリクエストがリクエストバッファ１から選択されると、リードリクエスト個数管理部３−１は、リクエストバッファ１内に保持されているリードリクエストの個数をカウントする。リードリクエスト個数管理部３−１は、カウントしたリードリクエスト個数の情報をＲＭＷ(ライト)タイミングコントローラ３−２及びタイミングコントローラ５−３に出力する。
【００６４】
同様に、ＲＭＷリクエストがリクエストバッファ１から選択されると、ライトリクエスト個数管理部３−４は、リクエストバッファ１内に保持されているライトリクエストの個数をカウントする。ライトリクエスト個数管理部３−４は、カウントしたライトリクエスト個数の情報をＲＭＷ(ライト)タイミングコントローラ３−２及びタイミングコントローラ５−３に出力する。
【００６５】
ＲＭＷ(ライト)タイミングコントローラ３−２は、リードリクエスト及びライトリクエストの個数に応じてＲＭＷのライト動作のタイミングを遅らせる。具体的には、リードリクエストが１個以上ある場合、ＲＭＷ（ライト）タイミングコントローラ３−２は、リクエストバッファ１に、ＲＭＷのリード動作とライト動作との間にリードリクエストを出力させる。
【００６６】
一方、リードリクエストの個数が０個、かつライトリクエストの個数が１個以上ある場合、ＲＭＷ（ライト）タイミングコントローラ３−２は、リクエストバッファ１に、ＲＭＷのリード動作とライト動作との間にライトリクエストを出力させる。
【００６７】
以上のように、本実施の形態にかかる記憶装置３００の構成によれば、ライトリクエスト個数管理部３−４が、リクエストバッファ１に保持されているライトリクエストの個数をカウントする。そして、タイミングコントローラ５−３は、ＲＭＷのリード動作とライト動作との間に、ライトリクエストを出力する。このため、記憶装置３００においては、ＲＭＷのリード動作とライト動作との間に、リードリクエストだけでなく、ライトリクエストの出力も可能にしている。したがって、更なるメモリ使用率の向上を可能にしている。
【００６８】
なお、本実施の形態では、リードデータとライトデータが同一のデータバスを使用する場合を考慮している。そのため、ＲＭＷのリード動作とライト動作との間には、リードリクエストのみ、またはライトリクエストのみを発行させる制御としている。これにより、リード動作からライト動作への切り替え時、及び、ライト動作からリード動作への切り替え時に、データのバスファイトによる待ち時間が発生しない。勿論、リードデータとライトデータのデータバスが異なる場合は、ＲＭＷのリード動作とライト動作との間に、リードリクエストとライトリクエストの両方を発行するように制御することも可能である。
【００６９】
（変形例）
本実施の形態にかかる記憶装置３００の変形例について説明する。変形例にかかる記憶装置３００においては、リードリクエスト個数管理部３−１とライトリクエスト個数管理部３−４のカウント動作を、ＤＤＲ２−ＳＤＲＡＭ（Double-Data-Rate2 Synchronous Dynamic Random Access Memory）や、ＤＤＲ３−ＳＤＲＡＭのようなバンクアドレスを持つメモリ素子に対して工夫している。
【００７０】
記憶装置３００のメモリ１１がバンクアドレスを持つメモリ素子である場合に、リードリクエスト個数管理部３−１またはライトリクエスト個数管理部３−４が、単純にリードリクエストまたはライトリクエストの個数をカウントすると、同一バンクアドレスのリクエストについても複数カウントしてしまう。ＤＤＲ２／ＤＤＲ３−ＳＤＲＡＭ等においては、同一バンクアドレスへの連続アクセスタイムは大きい。このため、ＲＭＷのリード動作とライト動作との間に、同一バンクアドレスのリクエストを複数発行してしまうと、逆にメモリ使用効率が悪化してしまう場合がある。
【００７１】
そのため、変形例にかかる記憶装置３００においては、リードリクエスト個数管理部３−１またはライトリクエスト個数管理部３−４は、バンクアドレス毎に、リードリクエストまたはライトリクエストの個数をカウントする。そして、タイミングコントローラ５−３は、リクエストを受けたバンクアドレスの個数に応じて、ＲＭＷのライト動作を遅延させる。つまり、リードリクエスト（またはライトリクエスト）を受けたバンクアドレスへのリード（またはライト）が完了する時間だけＲＭＷのライト動作を遅延させる。このとき、ＲＭＷ（ライト）タイミングコントローラ３−２は、同一バンクアドレスのリクエストが複数発行されないように制御する。このように、ＲＭＷのリード動作とライト動作との間のリクエスト発行パターンが、異なるバンクアドレスのインタリーブになるように制御する。その結果、メモリ使用効率の悪化を回避でき、システム性能を向上させることができる。
【００７２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更及び組み合わせをすることが可能である。
【符号の説明】
【００７３】
１  リクエストバッファ
２  データバッファ
３  リクエスト発行制御部
３−１  リードリクエスト個数管理部
３−２  ＲＭＷ（ライト）タイミングコントローラ
３−３  アドレス比較回路
３−４  ライトリクエスト個数管理部
５  メモリ制御信号生成部
５−１  メモリアクセスコマンド制御部
５−２  ＲＭＷコマンド制御部
５−３  タイミングコントローラ
５−４  セレクタ
６  メモリ制御信号レジスタ
７  ＲＭＷデータ制御部
８  セレクタ
９  ＥＣＧ回路
１０  ライトデータレジスタ
１１  メモリ
１２  リードデータレジスタ
１３  ＥＣＣ回路
１００〜３００  記憶装置
１０１  リクエストバッファ
１０２  ＲＭＷ実行部
１０３  メモリ
１０４  リクエスト個数管理部
１０５  ＲＭＷタイミング制御部
【図１】
0006004463.tif 000002
【図２】
0006004463.tif 000003
【図３】
0006004463.tif 000004
【図４】
0006004463.tif 000005
【図５】
0006004463.tif 000006
【図６】
0006004463.tif 000007