(57)【要約】【課題】複数のバンクで構成されるメモリへのアクセスに対する複数マスタのアクセスを調停し、優先度の高いアクセスのレイテンシ増加を抑えつつ効率的な転送を行うことができるメモリアクセス装置を提供すること。【解決手段】本発明のメモリアクセス装置は、マスタからメモリに対するアクセスコマンドを各バンクに対するアクセスコマンドであるマイクロコマンドに分割するコマンド分割部と、マスタ毎に存在するコマンド分割部により分割されたマイクロコマンドの中で同一バンクに対するマイクロコマンドのいずれか一つを選択するマスタ間調停部と、マスタ間調停部によりバンク毎に選択された複数のマイクロコマンドのいずれか一つを選択してメモリアクセスを行うメモリ制御部とを備え、ページミスヒットなどによる効率低下の少ないマイクロコマンドを選択してアクセスすることにより、効率的なアクセスを実現する。【選択図】図１
2009193107.tif 000002
【特許請求の範囲】
【請求項１】
複数のマスタによる共通のメモリへのアクセスを制御するメモリアクセス装置であって、
前記メモリは複数のバンクを有し、
前記複数のバンクの各々は複数のページを有し、
前記メモリアクセス装置は、
前記複数のマスタに対応して設けられた複数のコマンド分割部と、
前記複数のバンクに対応して設けられた複数のマスタ間調停部と、
メモリ制御部とを備え、
前記複数のコマンド分割部の各々は、
対応するマスタにより発行されるコマンドのアクセス領域が前記複数のバンクのうちの２つ以上のバンクに跨るとき、当該コマンドを、各々が前記２つ以上のバンクのいずれか１つにのみアクセスするコマンドである複数のマイクロコマンドに分割し、各マイクロコマンドを、そのマイクロコマンドのアクセス領域を含むバンクに対応するマスタ間調停部に与え、
前記複数のマスタ間調停部の各々は、
前記複数のコマンド分割部から与えられるマイクロコマンドを調停していずれか１つを選択し、
前記メモリ制御部は、
前記複数のマスタ間調停部により選択された複数のマイクロコマンドのいずれか１つを選択してメモリアクセスを行う、
ことを特徴とするメモリアクセス装置。
【請求項２】
請求項１において、
前記複数のマスタ間のアクセス優先度情報を保持する優先度指定部をさらに備え、
前記優先度指定部は、
前記複数のマスタ間調停部の全てに同じ優先度情報を通知し、
前記複数のマスタ間調停部の各々は、
前記優先度情報に従って前記マイクロコマンドを調停する、
ことを特徴とするメモリアクセス装置。
【請求項３】
請求項１において、
前記メモリ制御部に対しリフレッシュ要求コマンドを発行するリフレッシュ生成部をさらに備え、
前記メモリ制御部は、
前記マイクロコマンドを調停する際に、前記リフレッシュ要求コマンドと前記マイクロコマンドとを調停する、
ことを特徴とするメモリアクセス装置。
【請求項４】
請求項１において、
前記複数のマスタに対応して設けられた複数のマスタ用優先度管理部をさらに備え、
前記複数のマスタ間調停部の各々は、
前記マイクロコマンドを調停する際に、前記複数のマスタ用優先度管理部により与えられる優先レベルを参照してマイクロコマンドを選択する、
ことを特徴とするメモリアクセス装置。
【請求項５】
請求項４において、
前記複数のマスタ間調停部に対しリフレッシュ要求コマンドを発行するリフレッシュ生成部と、
リフレッシュ用優先度管理部とをさらに備え、
前記複数のマスタ間調停部の各々は、
前記マイクロコマンドを調停する際に、前記複数のマスタ用優先度管理部により与えられる優先レベルおよび前記リフレッシュ用優先度管理部により与えられる優先レベルを参照し、前記マイクロコマンドおよび前記リフレッシュ要求コマンドを調停する、
ことを特徴とするメモリアクセス装置。
【請求項６】
請求項４において、
前記複数のマスタ間調停部の各々は、
選択したマイクロコマンドを発行しているマスタに対応するマスタ用優先度管理部により与えられる優先レベルを前記メモリ制御部に通知し、
前記メモリ制御部は、
マイクロコマンドを調停する際に前記優先レベルを参照し、優先レベルが既定のレベルより高いマイクロコマンドを優先して調停する、
ことを特徴とするメモリアクセス装置
【請求項７】
請求項１において、
前記メモリ制御部は、
選択したマイクロコマンドがリードかライトかを示すアクセス方向の情報を前記複数のマスタ間調停部に送り、
前記複数のマスタ間調停部の各々は、
前記マイクロコマンドの調停を行う際に、前記アクセス方向の情報と同じアクセス方向のマイクロコマンドを優先して選択する、
ことを特徴とするメモリアクセス装置。
【請求項８】
請求項１において、
前記複数のコマンド分割部の各々は、
複数のアクセスコマンドを保持し、
受け付けたアクセスコマンドから生成したマイクロコマンドを、前記受け付けたアクセスコマンドより先に受け付けたアクセスコマンドが使用しないバンクまたは既に前記メモリ制御部に受け付けられたバンクに対応するマスタ間調停部に発行する、
ことを特徴とするメモリアクセス装置。
【請求項９】
請求項３または５において、
前記メモリは、１以上のバンク単位で個別にリフレッシュ可能であり、
前記リフレッシュ生成部は、
個別にリフレッシュ可能な前記バンク単位でリフレッシュ要求コマンドを発行する、
ことを特徴とするメモリアクセス装置。
【請求項１０】
複数のマスタと請求項１〜９のいずれか１項に記載のメモリアクセス装置とを含むシステムＬＳＩと、
複数のバンクで構成され、前記システムＬＳＩに接続されたメモリとを有し、
前記メモリアクセス装置は、前記マスタから前記メモリのバンク毎へのアクセスを調停する、
ことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各バンクが複数ページを持つ複数バンクで構成される共通のメモリへの複数のマスタによるアクセスを制御するメモリアクセス装置に関し、特にデータ転送の高効率化技術に関するものである。
【背景技術】
【０００２】
システムＬＳＩでは、プロセッサやハードウェアエンジンなどの複数のマスタが共通のメモリにアクセスするユニファイドメモリ技術と呼ばれる構成を取る場合が知られている。このとき使用されるメモリとして、SDRAM(Synchronous Dynamic Random Access Memory)等が用いられる。SDRAMは複数のバンクで構成されており、さらに各バンクは複数のページで構成されている。SDRAMをアクセスするには、ページをアクティブ化した後に、一定期間を空けてアクセスコマンドを発行する必要がある。また、同じバンクの異なるページにアクセスする場合には、アクセスするバンクにプリチャージという処理を行った後に、改めてアクセスするバンクをアクティブ化する必要がある。このようにSDRAMアクセスでは、同じバンクで異なるページへのアクセスを連続で行うとページミスヒットが発生し、アクセス効率が低下することになる。一方、あるバンクに対するプリチャージやアクティブ化の処理中でも他のバンクへのアクセスは可能であるため、異なるバンクへのアクセスが連続するようアクセスすることができればSDRAMのアクセス効率を高くすることができる。また、SDRAMでは、リードアクセスとライトアクセスの切り替え時や、一定期間毎に必要となるリフレッシュ処理を行う場合にもアクセス効率が低下する。
【０００３】
このような性質を考慮してSDRAMの効率を高める方法として例えば次のような技術が開示されている。
【０００４】
特許文献１では、複数のマスタから送られてくるコマンドのアクセスするバンクやリードかライトかの情報を調べ、マスタ間で調停する際にSDRAMの状態を考慮し、ページミスヒットやリードとライトの切り替えが少なくなるようにアクセスを選択するという手法が開示されている。
【０００５】
ただし、この手法では１つのマスタから送られてくるコマンドは１つのバンクへのアクセスに限定されるため、マスタが複数バンク領域に跨る転送を行いたい場合でも、コマンドの発行順序はマスタ動作に依存して決定されるため、必ずしもメモリアクセスが効率的に行える発行順序で行われるとは限らない。
【０００６】
これを解決する手法として、特許文献２では、マスタから送られてきたコマンドをバンク別に受け付け、ページミスヒットが少なくなるようにバンク間の調停を行うという手法が開示されている。
【０００７】
また、特許文献３では、マスタが複数バンクに跨るコマンドを発行する場合に、マスタ間での調停を行ったあと、各バンクに対するアクセス毎のマイクロコマンドに分割し、バンク毎のキューに入れて管理するという手法が開示されている。
【０００８】
また、特許文献４では、マスタが発行した複数バンクに跨るコマンドをバンク毎のコマンドに分割しページミスヒットが少なくなる順序に並び替えることによりメモリアクセス効率を向上する手法が開示されている。
【０００９】
なお、特許文献３および特許文献４では、マスタが発行するコマンドが複数バンクに跨るように、小さなメモリ単位毎にバンクが切り替わる、インターリーブと呼ばれるアドレスマッピングの使用方法についても言及されている。
【００１０】
また、動画処理などのリアルタイム性の高い処理を行う場合やレイテンシが性能に直接影響を与えるプロセッサ等の処理では、緊急度に応じて高速なレスポンスが求められるため、メモリアクセス効率を高めると同時に緊急度の高いアクセスについてはレイテンシが短いことも求められる。
【特許文献１】特開2001-356961号公報
【特許文献２】特開2004-310394号公報
【特許文献３】特開2002-268942号公報
【特許文献４】特開2006-260472号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
特許文献２に開示されている手法では、マスタ間での調停において同一バンクを使用するコマンドが連続して選択され、効率が低下する場合がある。
【００１２】
また、バンク毎の受付個数を多くすることにより、効率を向上させることができるが、その後に優先度の高いアクセスが発生した場合に、マスタ間の調停での優先順位を高くしても、既に受け付けられた多数のコマンドの処理を待つことになり、レイテンシが大きくなってしまう。
【００１３】
また、特許文献３および特許文献４に開示されている手法では、各マスタのコマンドが常に複数のバンクを跨ぐ場合には効率良くアクセスできるが、マスタによってはプロセッサのように小さなサイズでのランダムアクセスを行う場合もあるため、常に複数のバンクを跨ぐアクセスにすることができるわけではない。
【００１４】
特許文献４に開示されている手法では、複数のマスタによるアクセスを調停した結果、このようなアクセスが連続し、しかも同一のバンクを用いる場合にはページミスヒットの発生が避けられなくなる。
【００１５】
また、特許文献３に示す手法では、バンク毎のキューの段数を多くすることにより、ページミスヒットしないコマンドを受け付ける可能性を高くすることができるが、この場合特許文献２の場合と同様に優先順位の高いコマンドのレイテンシが大きくなるという問題がある。
【００１６】
また、バンクの切り替わり単位を極端に小さくすることにより複数のバンクを跨ぐように構成したとしても、小さなアクセス単位ではページミスヒットによるアクセス間隔を他のバンクのアクセスで隠蔽することができないため効果はない。
【００１７】
以上、多様な性能要求とメモリアクセスサイズをもつシステムにおいて、緊急度の高い処理に対するレスポンス性能とメモリアクセスの効率化を達成するためには、従来の手法ではそれぞれに課題がある。
【００１８】
本発明は、上記課題に鑑みてなされたもので、複数のマスタがメモリに対して多様なアクセスを行うシステムにおいて、緊急度の高いアクセスに対するレイテンシを抑えながら効率の高いアクセスを行うメモリアクセス装置を提供することにある。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、請求項１記載の発明に係るメモリアクセス装置は、プロセッサやDMA(Direct Memory Access)装置など複数マスタのアクセスを調停し、SDRAMなどのそれぞれが複数ページを持つ複数バンクで構成されるメモリへのアクセスを制御するメモリアクセス装置であって、前記マスタから前記メモリに対するアクセスコマンドであって前記メモリの複数バンク領域に跨るアクセスコマンドを前記メモリの各バンクのいずれか一つのバンクに対するアクセスコマンドであるマイクロコマンドに分割するコマンド分割部と、前記マスタ毎に存在する前記コマンド分割部により分割された前記マイクロコマンドの中で同一バンクに対する前記マイクロコマンドを調停していずれか一つを選択するマスタ間調停部と、前記複数のマスタ間調停部により前記複数のバンクの各々に対応して１つずつ選択された複数のマイクロコマンドのいずれか一つを選択してメモリアクセスを行うメモリ制御部を備えており、マスタ間調停部で同一バンク同一ページへのアクセスが連続することにより発生するアクセス発行遅延が少なくなるマイクロコマンドを優先して選択することにより、効率の良いメモリアクセスが可能となる。
【００２０】
また、請求項２記載の発明に係るメモリアクセス装置は、請求項１記載の発明に係るメモリアクセス装置の構成に加え、各マスタ同士のアクセス優先度情報を保持する優先度指定部をさらに備え、前記優先度指定部が前記マスタ間調停部の全てに同じ優先度情報を通知し、前記マスタ間調停部が前記マイクロコマンドを調停する際に前記優先度指定部により指示される優先度情報に従い調停を行うことにより、マスタ毎の優先順位を指定することができ、効率的なメモリアクセスを行いながら、優先度の高いマスタのレイテンシを抑えることができる。
【００２１】
また、請求項３記載の発明に係るメモリアクセス装置は、請求項１記載のメモリアクセス装置の構成に加え、前記メモリ制御部にリフレッシュ要求コマンドを発行するリフレッシュ要求発生部を備え、前記メモリ制御部が前記マイクロコマンドを調停する際に、前記リフレッシュ要求コマンドと前記マイクロコマンドとを調停することにより、メモリアクセスを効率的に行いながら、リフレッシュを適切に挿入することができる。
【００２２】
また、請求項４記載の発明に係るメモリアクセス装置は、請求項１記載の発明に係るメモリアクセス装置の構成に加え、マスタ毎に優先度管理部を備え、前記マスタ間調停部が前記マイクロコマンドを調停する際に、マスタ毎の前記優先度管理部により与えられる優先レベルを参照して選択するマイクロコマンドを決定する。
【００２３】
この構成によれば、待ち時間が長くなるほどマスタ毎の優先度管理部が出力する優先レベルを高くするなど、優先度管理部が与える優先度を制御することにより、各マスタの待ち時間を制御することができる。
【００２４】
また、請求項５記載の発明に係るメモリアクセス装置は、請求項４記載の発明に係るメモリアクセス装置の構成に加え、前記マスタ間調停部にリフレッシュ要求コマンドを発行するリフレッシュ要求発生部およびリフレッシュ要求の優先度管理部を備え、前記マスタ間調停部が前記マイクロコマンドを調停する際に、マスタ毎の前記優先度管理部により与えられる優先レベルと、リフレッシュ要求の前記優先度管理部により与えられる優先レベルを参照し、前記マイクロコマンドと前記リフレッシュ要求コマンドを調停することにより、リフレッシュの緊急度が低い場合には、より優先度の高いアクセスを優先することができ、優先度の高いアクセスのレイテンシを抑えることができる。
【００２５】
また、請求項６記載の発明に係るメモリアクセス装置は、請求項４記載の発明に係るメモリアクセス装置の構成に加え、前記マスタ間調停部は、選択したマイクロコマンドを発行するマスタの前記優先度管理部により与えられる優先レベルを前記メモリ制御部に通知し、前記メモリ制御部はマイクロコマンドを調停する際に前記優先レベルを参照し、優先レベルが既定のレベルより高いマイクロコマンドを優先して調停することにより、メモリ使用効率の向上よりも優先される緊急度の高いコマンドを優先処理することができる。
【００２６】
また、請求項７記載の発明に係るメモリアクセス装置は、請求項１記載の発明に係るメモリアクセス装置の構成に加え、選択したマイクロコマンドがリードかライトかというアクセス方向を判定して前記マスタ間調停部に前記アクセス方向の情報を送り、前記マスタ間調停部は前記アクセス方向の情報を参照し、前記マイクロコマンドの調停を行う際に、前記バンク毎のアクセス方向と同じアクセス方向のマイクロコマンドを優先して選択することにより、ページミスヒットによるメモリ使用効率低下だけではなく、リードとライト切り替えによるメモリ使用効率の低下も抑えることができる。
【００２７】
また、請求項８記載の発明に係るメモリアクセス装置は、請求項１記載の発明に係るメモリアクセス装置の構成に加え、前記コマンド分割部は複数のコマンドを保持し、先に受け付けたコマンドが使用しないバンクまたは既に前記メモリ制御部に受け付けられたバンクに対し、後に受け付けたコマンドがアクセスする場合には、後に受け付けたコマンドを分割して生成したマイクロコマンドを当該バンクのマスタ間調停部に発行することにより、一つのマスタが発行した複数のコマンド間でもメモリアクセスの効率化が可能となり、よりメモリ使用効率が向上できる。
【００２８】
また、請求項９記載の発明に係るメモリアクセス装置は、請求項３または請求項５記載の発明に係るメモリアクセス装置の構成に加え、それぞれが複数ページを持つ複数バンクで構成されており１つまたは複数バンク単位で個別にリフレッシュ可能なメモリへのアクセスを制御するメモリアクセス装置であって、前記リフレッシュ要求発生部が前記メモリの個別にリフレッシュ可能な１つまたは複数バンク毎にリフレッシュ要求コマンドを発行することにより、メモリアクセスが行われていないバンクに対してリフレッシュが行えるようになり、リフレッシュによるメモリアクセス効率の低下を抑えることができる。
【００２９】
また、請求項１０記載の発明に係るシステムは、複数のマスタと請求項１〜請求項９記載のメモリアクセス装置とを含むシステムLSIと、それぞれが複数ページを持つ複数バンクで構成されるメモリが接続されており、前記マスタが前記メモリにアクセスする際に、前記メモリアクセス装置を用いて前記メモリのバンク毎のアクセスを調停し、前記メモリにアクセスを行うことにより、メモリアクセス効率が高いシステムを構成することができる。
【発明の効果】
【００３０】
本発明のメモリアクセス装置によれば、マスタが発行するメモリアクセスコマンドが複数バンクに跨る場合でも、ページミスヒットやリードとライトの切り替えやリフレッシュによる効率低下を抑え、メモリアクセス効率を高めることができる。
【００３１】
また、マスタアクセスの緊急度やマスタの待ち時間に応じて優先度を設定することができ、マスタ間の調停後に各バンクに対するコマンドをキューに溜める必要がないため、優先度の高いマスタに対するレイテンシが大きくなることがない。
【００３２】
また、転送効率の高いメモリアクセス装置を使用することで単位時間あたりの有効データ転送量を増加することができ、システムの単位時間あたりの処理量を向上することができ、処理量が同等の場合には処理時間や動作周波数を抑えることができ低消費電力化にも貢献できる。
【００３３】
また、プロセッサ等のレイテンシを抑えることにより、キー入力時などのレスポンス性能の向上などにも貢献することができる。
【発明を実施するための最良の形態】
【００３４】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図面において実質的に同一の構成要素には同じ参照符号を付けてその説明は繰り返さない。
【００３５】
(第１の実施形態)
図１は、本発明の第１の実施形態に係るメモリアクセス装置の構成を示すブロック図である。このメモリアクセス装置１００は、複数のコマンド分割部(１０２〜１０４)，リフレッシュ生成部１０５，複数のマスタ間調停部(１０６〜１０９)，メモリ制御部１１０，優先度指定部１１５，ライトデータバッファ１１６，リードデータバッファ１１７を備えており、SDRAM１１８および複数のマスタ(図示せず)に接続されている。
【００３６】
複数のコマンド分割部(１０２〜１０４)は複数のマスタ(ここではマスタ０，１，２とする)に対応して設けられている。コマンド分割部１０２はマスタ０に対応し、コマンド分割部１０３はマスタ１に対応し、コマンド分割部１０４はマスタ２に対応しているものとする。
【００３７】
SDRAM１１８は複数のバンク(ここではバンク０，１，２，３とする)を有する。各バンクは複数のページを有する。
【００３８】
複数のマスタ間調停部(１０６〜１０９)はSDRAM１１８の複数のバンク(０〜３)に対応して設けられている。マスタ間調停部１０６はバンク０に対応し、マスタ間調停部１０７はバンク１に対応し、マスタ間調停部１０８はバンク２に対応し、マスタ間調停部１０９はバンク３に対応しているものとする。
【００３９】
コマンド分割部(１０２〜１０４)は、対応するマスタ(０〜２)が発行するコマンドを受け付け、そのコマンドを、マスタ間調停部(１０６〜１０９)のうち当該コマンドのアクセス領域を含むバンクに対応するマスタ間調停部に伝える。このとき、コマンドアクセス領域がSDRAM１１８内の複数バンクの領域に跨る場合には、コマンド分割部(１０２〜１０４)は、受け付けたコマンドをいずれか１つのバンクにのみアクセスするマイクロコマンドに分割し、各マイクロコマンドを、当該マイクロコマンドのアクセス領域を含むバンクに対応するマスタ間調停部(１０６〜１０９)に伝える。たとえば、バンク０をアクセス領域とするマイクロコマンドはマスタ間調停部０(１０６)に伝えられ、バンク１をアクセス領域とするマイクロコマンドはマスタ間調停部１(１０７)に伝えられる。また、分割したマイクロコマンド全てがメモリ制御部１１０に受け付けられると、マスタから新たなコマンドを受け付ける。図１では、メモリ制御部１１０がマイクロコマンドを受け付けたことを示す情報はマスタ間調停部(１０６〜１０９)を介してコマンド分割部(１０２〜１０４)に送られることになるが、メモリ制御部１１０からコマンド分割部(１０２〜１０４)に直接通知する構成としても良い。
【００４０】
リフレッシュ生成部１０５は、SDRAM１１８に対するリフレッシュ要求コマンドを生成し、特殊なマイクロコマンドとしてメモリ制御部１１０に伝える。
【００４１】
マスタ間調停部(１０６〜１０９)は、マスタ毎のコマンド分割部(１０２〜１０４)から伝えられたマイクロコマンドを調停し、優先度指定部１１５により与えられる優先順位情報に従い、最も優先順位の高いマイクロコマンドを選択し、メモリ制御部１１０に伝える。
【００４２】
なお、マスタ間調停部(１０６〜１０９)は、一度マイクロコマンドを調停しても、そのマイクロコマンドがメモリ制御部１１０により受け付けられる前に、更に優先度の高いマイクロコマンドが送られてきた場合には、メモリ制御部１１０に伝えるマイクロコマンドを変更する。
【００４３】
メモリ制御部１１０は、バンク間調停部１１１と、コマンド履歴管理部１１３と、マイクロコマンドキュー１１２と、SDRAMアクセス部１１４とを備えており、マスタ間調停部(１０６〜１０９)およびリフレッシュ生成部１０５から送られたマイクロコマンドを調停し、SDRAM１１８へのアクセスを行う。
【００４４】
バンク間調停部１１１は、マイクロコマンドキュー１１２の状態を判定し、空きがある場合には、マスタ間調停部(１０６〜１０９)およびリフレッシュ生成部１０５から送られたコマンドを調停していずれか１つを選択し、マイクロコマンドキュー１１２に入れる。このとき、コマンドの調停は、リフレッシュ要求コマンドがある場合にはリフレッシュ要求コマンドを選択し、リフレッシュ要求コマンドがない場合には、コマンド履歴管理部１１３を参照し、最近選択されたバンクのコマンドの優先順位を低くすることにより同じバンクのコマンドが離れるように選択する。
【００４５】
マイクロコマンドキュー１１２は、バンク間調停部１１１から送られたマイクロコマンドを保持し、保持しているマイクロコマンドの情報をSDRAMアクセス部１１４に伝える。
【００４６】
SDRAMアクセス部１１４は、マイクロコマンドキュー１１２を参照し、SDRAM１１８のタイミング規約に従いSDRAM１１８へのコマンドを発行する。特にマイクロコマンドキュー１１２の先頭のコマンドに対応するアクセスコマンドまたはリフレッシュコマンドが発行可能である場合にはSDRAM１１８に対するアクセスコマンドまたはリフレッシュコマンドを発行する。アクセスコマンドまたはリフレッシュコマンドが発行できない場合には、マイクロコマンドキュー１１２に保持されているコマンドを参照し、先行してアクティブコマンドが発行可能である場合にはアクティブコマンドを発行する。このとき、アクティブコマンドが発行可能である場合とは、コマンドキュー１１２内の該コマンドに先行するコマンドの中に同一バンクにアクセスするコマンドまたはリフレッシュ要求が存在せず、該コマンドに対応するバンクがまだアクティブになっておらず、タイミング規約で禁止されていない場合を意味する。また、同時にアクティブ可能なバンクが複数存在する場合には、最も先頭に近いコマンドの使用するバンクに対してアクティブコマンドを発行する。
【００４７】
コマンド履歴管理部１１３は、バンク間調停部１１２で選択されたコマンドを観測し、バンクアクセス順序を管理し、バンク間調停部１１１に伝える。
【００４８】
優先度指定部１１５は、各マスタアクセスの優先順序情報を保持しており、マスタ間調停部(１０６〜１０９)に優先順序情報を与える。このとき、各マスタ間調停部(１０６〜１０９)には共通の優先順序情報を与える。なお、優先度指定部１１５に保持される優先順序情報は、マスタ毎に固定されていても良いし、プロセッサ等により設定可能なレジスタにより構成し、ソフトウェアにより設定可能な構成としても良い。
【００４９】
ライトデータバッファ１１６は、ライトアクセス時にマスタから送られるライトデータ及び、当該ライトデータとマイクロコマンドの対応情報を保持し、SDRAMアクセス部１１４がSDRAM１１８にライトアクセスするタイミングにあわせて、アクセスするマイクロコマンドに対応するデータを出力する。
【００５０】
リードデータバッファ１１７は、各マスタの発行したコマンドと、SDRAMアクセス部１１４がSDRAM１１８に発行したリードアクセスコマンドの順序と、SDRAMアクセス部１１４がSDRAM１１８にリードアクセスした際にSDRAM１１８から出力されるリードデータを保持し、保持されたリードデータを各マスタのコマンド発行順序に並び替えて各マスタに出力する。
【００５１】
次に、図２を用いて実際の動作について説明する。
【００５２】
図２において、サイクル行は、クロックに同期したサイクルの経過を表している。マスタ０，マスタ１，マスタ２の行は各マスタが発行したコマンドのタイミングとコマンドの内容を示している。ここでは、三角印(△)でコマンドを発行したタイミングを示し、三角印(△)の右にコマンドの内容として順にリードまたはライト，アドレス(１６進数)，アクセスサイズ(byte単位)を表示している。
【００５３】
また、アクセスするメモリであるSDRAM１１８は、16 byte毎に４つのバンクが０，１，２，３の順に切り替わるインターリーブ型のマッピングとなっており、各バンクのページサイズは1024 byteであり、結果として4096 byte(16進数で1000)毎にページが切り替わるものとする。
【００５４】
リフレッシュの行は、リフレッシュ生成部１０５がリフレッシュコマンドを発行するタイミングを示しており、三角印(△)でリフレッシュリクエストを発行したタイミングを示している。
【００５５】
マスタ間調停部の行は、各マスタのコマンドが分割されて各マスタ間調停部(１０６〜１０９)に送られたマイクロコマンドを調停した結果を示しており、選択したマイクロコマンドのマスタ番号を表示している。
【００５６】
ここで、優先度指定部１１５にはマスタ０，マスタ１，マスタ２の順に高い優先度を割当られているものとする。
【００５７】
例えば、サイクル１のマスタ間調停部０(１０６)では、マスタ０，マスタ１，マスタ２のそれぞれのコマンドがバンク０へのアクセスを含んでいるため、各マスタのコマンド分割部(１０２〜１０４)から送られるマイクロコマンドを調停しているが、その中で最も優先度の高いマスタ０のマイクロコマンドを選択し、次のサイクル２で出力している。
【００５８】
その後、サイクル４でマスタ間調停部０(１０６)のマイクロコマンドが選択されると、マスタ０のマイクロコマンドの受付がコマンド分割部１０２に通知され、コマンド分割部１０２にバンク０を用いるマイクロコマンドがなくなるため、次のサイクル５では次に優先度の高いマスタ１のコマンドが調停されて出力されるようになっている。
【００５９】
バンク間調停部の行は、各マスタ間調停部(１０６〜１０９)またはリフレッシュ生成部１０５から送られるマイクロコマンドを調停した結果を表示しており、(Ｘ)によりリフレッシュコマンドを表し、数字によりマスタ間調停部の番号、すなわちマイクロコマンドがアクセスするバンクを表している。
【００６０】
なお、図２に示した例では、初期状態ではコマンド履歴管理部１１３で管理されている履歴として、最も近くにアクセスされたバンクが３であり、順に２，１としてバンク０のアクセス履歴が最も古くなっているとしている。
【００６１】
これにより、サイクル２では最も優先度の高いリフレッシュを選択した後、履歴の古いバンク０(サイクル４，２２)、バンク１(サイクル６，２６)、バンク２(サイクル１４，３０)、バンク３(サイクル１８)の順にマイクロコマンドを選択している。なお、サイクル３４では最も履歴の古いバンクは３であるが、バンク３のマイクロコマンドが存在しないため、次に優先順位の高いバンク０のマイクロコマンドを選択している。
【００６２】
また、図２に示した例ではバンク間調停部１１１は、調停を行った次のサイクルは調停を行わない構成としているため、サイクル３，５，７等では調停結果を示していない。
【００６３】
また、コマンドキュー１１２の段数を２段としているため、サイクル８のようにコマンドキュー１１２にマイクロコマンドが２個入っている状態では次の調停を行っておらず、リードアクセスコマンドが発行されて空きができるサイクル１４まで次の調停は待たされることになる。
【００６４】
最後の、コマンド，バンク，ページの行は、SDRAMアクセス部１１４がSDRAM１１８にアクセスするコマンドの内容を表しており、(Ｘ)はリフレッシュコマンドを、(Ａ)はアクティブコマンドを、(Ｒ)はリードコマンドを表している。
【００６５】
図２の動作例では、SDRAM１１８として、リフレッシュコマンドからアクティブコマンドまでの間隔を７サイクル、アクティブコマンドから別バンクのアクティブコマンドまでの間隔を２サイクル、アクティブコマンドからリードコマンドまでの間隔を３サイクル、リードコマンドから次のアクティブコマンドまでの間隔を９サイクルという規約を持つ場合を例としている。
【００６６】
また、SDRAMではリードアクセスから次のアクティブを行う場合にはプリチャージという処理が必要となるが、ここではリードアクセス後に自動的にプリチャージが行われるオートプリチャージという機能を利用しており、プリチャージコマンドは発行していない。
【００６７】
また、SDRAM１１８のデータバス幅は4 byteとしており、各バンク16 byteのアクセスに４サイクルかかるため、異なるバンク間のリードアクセス間隔は４サイクル必要となっている。
【００６８】
この結果、SDRAM１１８にアクセスするコマンドの並びを見ると、マスタ０，マスタ１，マスタ２のコマンドがマイクロコマンド単位で切り替わりながらバンクを変えて効率よくアクセスできていることがわかる。
【００６９】
なお、本実施の形態で使用したメモリ(SDRAM１１８)の種類やタイミング規約やアドレスに対するバンクやページのマッピングなどは説明のための一例であり本発明の適用範囲を制限するものではない。
【００７０】
また、本実施の形態での、マスタ間調停部(１０６〜１０９)の出力、バンク間調停部１１１の出力、SDRAM１１８へのコマンドの出力をそれぞれ１サイクルずらす、バンク間調停部１１１での調停を１サイクルあけるという構成は、クロック周波数などの回路設計要件から決めることができ、本発明の範囲を制限するものではない。
【００７１】
また、本実施の形態では、マスタのアクセスコマンドとして単純な一次元領域のアクセスを扱っているが、２次元の矩形領域アクセスコマンドの場合でも、同一バンクの同一ページに対するアクセスをまとめて１つのマイクロコマンドとして扱うことにより、同様に扱うことができる。
【００７２】
また、２次元の矩形領域アクセスコマンドを分割して複数の同一バンク同一ページのマイクロコマンドを作成する場合も、マイクロコマンドに同一ページアクセスが継続することを表す情報を付加しておき、マスタ間調停部(１０６〜１０９)およびバンク間調停部１１１で、同一ページアクセスに対しては同じバンクで同じマスタのコマンドを連続して処理するようにでき、１つのマイクロコマンドとする場合と同様に扱うことができる。
【００７３】
また、本実施形態におけるメモリ制御部１１０の構成は単なる一例であり、バンク間調停部１１１での選択ルールやメモリ(SDRAM１１８)へのコマンドの決定方法は本発明の範囲を限定されるものではない。例えば、本実施形態ではアクセス履歴として、各バンクのアクセス順序を記憶しているが、単に直前のバンクだけを記憶する単純なラウンドロビン調停にしても良い。
【００７４】
以上、第１の実施形態によると、マスタが発行するコマンドに複数のバンクに跨るコマンドが含まれる場合、マスタ内でのマイクロコマンドとマスタ間のコマンドの順序を並べ替えることにより、効率の良いSDRAMアクセスを行うことができる。
【００７５】
また、マスタ間調停部１１１以後のバッファ量を少なく抑えられるため、優先順位の高いマスタのアクセスのレイテンシを短く抑えることができる。
【００７６】
(第２の実施形態)
図３は第２の実施形態に係るメモリアクセス装置の構成を表すブロック図である。このメモリアクセス装置３００は、複数のコマンド分割部(３０２〜３０４)，リフレッシュ生成部３０５，複数のマスタ間調停部(３０６〜３０９)，メモリ制御部３１０，ライトデータバッファ３１６，リードデータバッファ３１７，複数の優先度管理部(３２０〜３２３)を備えており、SDRAM３１８および複数のマスタ(図示せず)に接続されている。
【００７７】
複数のコマンド分割部(３０２〜３０４)は複数のマスタ(ここではマスタ０，１，２とする)に対応して設けられている。コマンド分割部３０２はマスタ０に対応し、コマンド分割部３０３はマスタ１に対応し、コマンド分割部３０４はマスタ２に対応しているものとする。
【００７８】
SDRAM３１８は複数のバンク(ここではバンク０，１，２，３とする)を有する。各バンクは複数のページを有する。
【００７９】
複数のマスタ間調停部(３０６〜３０９)はSDRAM３１８の複数のバンク(０〜３)に対応して設けられている。マスタ間調停部３０６はバンク０に対応し、マスタ間調停部３０７はバンク１に対応し、マスタ間調停部３０８はバンク２に対応し、マスタ間調停部３０９はバンク３に対応しているものとする。
【００８０】
優先度管理部(３２０〜３２２)は複数のマスタ(ここではマスタ０，１，２とする)に対応して設けられている。優先度管理部３２０はマスタ０に対応し、優先度管理部３２１はマスタ１に対応し、優先度管理部３２２はマスタ２に対応しているものとする。また、優先度管理部３２３はリフレッシュ生成部３０５に対応して設けられている。
【００８１】
コマンド分割部(３０２〜３０４)は、対応するマスタ(０〜２)が発行するコマンドを受け付け、そのコマンドを、マスタ間調停部(１０６〜１０９)のうち当該コマンドのアクセス領域を含むバンクに対応するマスタ間調停部に伝える。このとき、コマンドアクセス領域がSDRAM３１８内の複数バンクの領域に跨る場合には、コマンド分割部(３０２〜３０４)は、受け付けたコマンドをいずれか１つのバンクにのみアクセスするマイクロコマンドに分割し、各マイクロコマンドを、当該マイクロコマンドのアクセス領域を含むバンクに対応するマスタ間調停部(３０６〜３０９)に伝える。
【００８２】
リフレッシュ生成部３０５は、SDRAM３１８に対するリフレッシュ要求コマンドを生成し、特殊なマイクロコマンドとして全てのマスタ間調停部(３０６〜３０９)に伝える。
【００８３】
優先度管理部(３２０〜３２２)は、カウンタレジスタで構成されており、対応するマスタからのリクエストを受けると、分割して生成されたマイクロコマンド全てがメモリ制御部３１０に受け付けられるまで、サイクル毎にカウンタのカウントダウンを行い、カウンタ値が小さいほど優先度が高いことを示し、待ち時間が長くなるほど優先順位が高くなる。マイクロコマンド全てがメモリ制御部３１０に受け付けられた場合の処理としては、カウンタレジスタの値を初期値にリセットしても良いし、設定した値を加算してマスタからの要求がない場合にも初期値までカウントダウンする構成としても良い。前者の場合、要求毎のレイテンシを常に同程度に保つことができ、後者の場合には、設定した加算値により制御される間隔より短い間隔で要求されるコマンドに対しては優先順位を下げて、他のマスタのアクセスを優先することができる。カウンタレジスタの値は、コマンド分割部(３０２〜３０４)から送るマイクロコマンドと同時にマスタ間調停部(３０６〜３０９)に伝える。
【００８４】
リフレッシュ用の優先度管理部３２３は、マスタ用の優先度管理部(３２０〜３２２)と同様であるが、マスタからのコマンドを受け付ける代わりにリフレッシュ生成部３０５がリフレッシュ要求を生成したときにカウントダウンを開始する点が異なる。
【００８５】
マスタ間調停部(３０６〜３０９)は、マスタ毎のコマンド分割部(３０２から３０４)から伝えられたマイクロコマンドおよびリフレッシュ生成部３０５から伝えられたリフレッシュコマンドを調停し、メモリ制御部３１０に伝える。
【００８６】
マスタ間調停部(３０６〜３０９)は、マイクロコマンドを調停する際に、マイクロコマンドと同時に伝えられる優先度管理部(３２０〜３２３)のカウンタレジスタの値を参照し、値が最も小さいマイクロコマンドを選択する。また、選択したマイクロコマンドをメモリ制御部３１０に伝える際に、選択したマイクロコマンドと同時に伝えられたカウンタレジスタの値も同時に伝える。
【００８７】
なお、マスタ間調停部(３０６〜３０９)は、一度マイクロコマンドを調停しても、メモリ制御部３１０により受け付けられる前に、更に優先度の高いマイクロコマンドが送られてきた場合には、メモリ制御部３１０に伝えるマイクロコマンドを変更する。
【００８８】
また、優先度管理部(３２０〜３２３)のカウンタレジスタの値は毎サイクル更新されるため、メモリ制御部３１０に伝えるカウンタレジスタの値も毎サイクル更新する。
【００８９】
メモリ制御部３１０は、バンク間調停部３１１と、マイクロコマンドキュー３１２と、SDRAMアクセス部３１３とを備えており、マスタ間調停部(３０６〜３０９)から送られたマイクロコマンドを調停し、SDRAM３１８へのアクセスを行う。
【００９０】
バンク間調停部３１１は、マイクロコマンドキュー３１２の状態とSDRAMアクセス部３１３から送られるメモリ状態情報を用いて、マスタ間調停部(３０６〜３０９)から送られたコマンドの調停を行う。このとき、バンク間調停部３１１にはアクセス効率化より優先すべき優先度カウンタの値が予め設定してあり、調停を行う際には各コマンドの優先度カウンタの値と設定値とを参照する。
【００９１】
図４に、バンク間調停部３１１が行う調停処理の１サイクルの動作フローを示す。
【００９２】
バンク間調停部３１１は、まずステップ４０１でマイクロコマンドキュー３１２の空き状態を確認し、空きがある場合にはステップ４０２に進み、空きがない場合には処理を完了する。
【００９３】
次にステップ４０２で、マスタ間調停部(３０６〜３０９)から送られたマイクロコマンドを確認し、全てがリフレッシュ要求になっており、リフレッシュコマンドが発行可能である場合にはステップ４０３に進み、全てのマスタ間調停部(３０６〜３０９)のリフレッシュ要求を受け付け、SDRAMアクセス部３１３にリフレッシュコマンド発行要求を送る。
【００９４】
リフレッシュ要求以外が存在する場合またはリフレッシュコマンドが発行不可能である場合には、ステップ４０４に進み、リフレッシュ要求以外のマイクロコマンドの中に優先度カウンタの値が設定値以下のものがあるか否かを判定する。
【００９５】
優先度カウンタの値が設定値以下のマイクロコマンドが存在する場合には、ステップ４０５に進み、最も優先度カウンタの値が小さいマイクロコマンドが使用するバンクに対するアクティブコマンドが発行可能か否かを判定し、発行可能である場合にはステップ４０６に進み、該マイクロコマンドを受け付け、マイクロコマンドキュー３１２に入れ、SDRAMアクセス部３１３にアクティブコマンド発行要求を行う。
【００９６】
ステップ４０５において、最も優先度カウンタの値が小さいマイクロコマンドが複数存在する場合には、使用するバンクに対するアクティブコマンドが発行可能であるマイクロコマンドを優先的に選択する。
【００９７】
ステップ４０５において、アクティブコマンドが発行可能でない場合には処理を完了する。
【００９８】
また、優先度カウンタの値が設定値以下のマイクロコマンドが存在しない場合には、ステップ４０７に進み、使用するメモリバンクに対するアクティブコマンドが発行可能なマイクロコマンドが存在するか否かを判定し、存在する場合にはステップ４０８に進み、該マイクロコマンドを受け付け、マイクロコマンドキュー３１２に入れ、SDRAMアクセス部３１３にアクティブコマンド発行要求を行う。
【００９９】
ステップ４０７において、アクティブコマンドが発行可能なマイクロコマンドが存在しない場合には処理を完了する。
【０１００】
なお、ステップ４０６，４０８において該当するマイクロコマンドが複数存在する場合には、ラウンドロビン調停論理に従って選択し、特定のバンクにアクセスするマイクロコマンドが偏って選択されないようにする。
【０１０１】
なお、ステップ４０４における設定値は、固定値でも良いし、あるいはプロセッサにより設定可能なレジスタであっても良い。
【０１０２】
マイクロコマンドキュー３１２は、バンク間調停部３１１から送られたマイクロコマンドを保持し、保持しているマイクロコマンドの情報をSDRAMアクセス部３１３に伝える。
【０１０３】
SDRAMアクセス部３１３は、マイクロコマンドキュー３１２を参照し、SDRAM３１８のタイミング規約に従いSDRAM３１８へのアクセスコマンドを発行する。
【０１０４】
また、SDRAMアクセス部３１３は、発行可能なアクセスコマンドが存在しない場合には、バンク間調停部３１１にリフレッシュコマンドが発行可能か否かとアクティブコマンドを発行可能なバンクの情報を通知し、バンク間調停部３１１からリフレッシュコマンド発行要求を受けた場合にはSDRAM３１８に対してリフレッシュコマンドを発行し、アクティブコマンド発行要求を受けた場合にはSDRAM３１８に対して該バンクに対するアクティブコマンドを発行する。このとき、アクティブコマンドを発行可能なバンクとは、マイクロコマンドキュー３１２内のコマンドがアクセスするバンクを除き、SDRAM３１８のタイミング規約に従いアクティブコマンドが発行可能なバンクを意味する。
【０１０５】
ライトデータバッファ３１６は、ライトアクセス時にマスタから送られるライトデータ及び、当該ライトデータとマイクロコマンドの対応情報を保持し、SDRAMアクセス部３１３がSDRAM３１８にライトアクセスするタイミングにあわせて、アクセスするマイクロコマンドに対応するライトデータを出力する。
【０１０６】
リードデータバッファ３１７は、各マスタのコマンドと、SDRAMアクセス部３１３がSDRAM３１８に発行したリードアクセスコマンドの順序と、SDRAMアクセス部３１３がSDRAM３１８にリードアクセスした際にSDRAM３１８から出力されるリードデータを保持し、リードデータを各マスタのコマンド順序に並び替えて各マスタに出力する。
【０１０７】
以上、第２の実施形態によれば、各マスタおよびリフレッシュ毎に優先度管理部(３２０〜３２３)を持つことにより、優先度の低いマスタが極端に長く待たされることを防ぎつつ、リフレッシュを含むSDRAMアクセスを効率よく行うことができる。
【０１０８】
また、優先度管理部(３２０〜３２３)から出される優先度情報を、マスタ間調停部(３０６〜３０９)を介してメモリ制御部３１０にまで伝えることにより、緊急度の高いアクセスを優先することができ、SDRAMアクセスの効率化を行いながらリアルタイム性の高い処理の保証を行うことができる。
【０１０９】
なお、メモリ制御部３１０の構成は多様な構成が考えられ、本実施形態でのメモリ制御部３１０の構成は本発明の適用範囲を制限するものではない。
【０１１０】
例えば、本実施の形態では、メモリ制御部３１０はアクティブを発行したマイクロコマンドをメモリ制御部３１０内のキュー３１２に受け付ける構成としたが、アクティブを発行したマイクロコマンドを送っているマスタ間調停部(３０６〜３０９)に信号を送り、メモリアクセスが可能になるまでマスタ間調停部(３０６〜３０９)に同一マイクロコマンドを送り続けるように指示し、メモリアクセスが可能になった時点でマイクロコマンドを受け付けると同時にメモリアクセスを行うという構成にすることも可能であるし、第１の実施形態と同様な構成をとることもできる。
【０１１１】
また、本実施形態では全てのマスタおよびリフレッシュに優先度管理部(３２０〜３２３)を備え、優先レベルを示すカウンタを備えたが、一部のマスタに対しては固定した優先レベルを与える構成としても良いことは言うまでもない。
【０１１２】
(第３の実施形態)
図５は、第３の実施形態に係るメモリアクセス装置を表すブロック図である。このメモリアクセス装置５００は、複数のコマンド分割部(１０２〜１０４)，リフレッシュ生成部１０５，複数のマスタ間調停部(５０６〜５０９)，メモリ制御部５１０，優先度指定部１１５，ライトデータバッファ１１６，リードデータバッファ１１７を備えており、SDRAM１１８および複数のマスタ(図示せず)に接続されている。同図において、コマンド分割部(１０２〜１０４)，リフレッシュ生成部１０５，優先度指定部１１５，ライトデータバッファ１１６，リードデータバッファ１１７については第１の実施形態(図１)における対応する構成要素と同等の機能を有するため説明を省略する。
【０１１３】
また、メモリ制御部５１０は、バンク間調停部５１１，マイクロコマンドキュー１１２，コマンド履歴管理部１１３，SDRAMアクセス部１１４を備えている。マイクロコマンドキュー１１２，コマンド履歴管理部１１３，SDRAMアクセス部１１４については第１の実施形態(図１)における対応する構成要素と同等の機能を有するため説明を省略する。
【０１１４】
第３の実施形態において、バンク間調停部５１１は、第１の実施形態(図１)におけるバンク間調停部１１１と同様にマイクロコマンドを選択することに加えてさらに、選択したマイクロコマンドがリードであるかライトであるかリフレッシュであるかという情報を、信号線５２４を介してマスタ間調停部(５０６〜５０９)に伝える。
【０１１５】
マスタ間調停部(５０６〜５０９)は、信号線５２４を介して得られるリード・ライト情報を参照し、バンク間調停部５１１で前回受け付けられたマイクロコマンドがリードの場合にはリードの中で最も優先レベルの高いマイクロコマンドを選択し、ライトの場合にはライトの中で最も優先レベルの高いマイクロコマンドを優先して選択する。また、該当するマイクロコマンドがない場合や、前回受け付けられたマイクロコマンドがリフレッシュの場合には、全てのマイクロコマンドの中で最も優先レベルの高いマイクロコマンドを選択する。
【０１１６】
以上、第３の実施形態によると、メモリ制御部５１０で受け付けたマイクロコマンドのリード・ライト情報をマスタ間調停部(５０６〜５０９)に伝えることにより、リードとライトの切り替え頻度を少なくすることができ、より効率の良いメモリアクセスが可能となる。
【０１１７】
なお、本実施の形態では、単純に同一アクセス方向が一致するコマンドを優先しているが、一定レベル以上の優先レベルのコマンドに対しては、アクセス方向が異なっても優先レベルの高いコマンドを選択することにしても良い。
【０１１８】
(第４の実施形態)
図６は第４の実施形態に係るメモリアクセス装置を表すブロック図である。このメモリアクセス装置６００は、複数のコマンド分割部(６０２〜６０４)，リフレッシュ生成部１０５，複数のマスタ間調停部(１０６〜１０９)，メモリ制御部１１０，優先度指定部１１５，ライトデータバッファ１１６，リードデータバッファ１１７を備えており、SDRAM１１８および複数のマスタ(図示せず)に接続されている。同図において、リフレッシュ生成部１０５，マスタ間調停部(１０６〜１０９)，優先度指定部１１５，ライトデータバッファ１１６，リードデータバッファ１１７については第１の実施形態(図１)における対応する構成要素と同等の機能を有するため説明を省略する。
【０１１９】
コマンド分割部(６０２〜６０４)は、対応するマスタ(０〜２)が発行するコマンドを受け付け、そのコマンドを、マスタ間調停部(１０６〜１０９)のうち当該コマンドのアクセス領域を含むバンクに対応するマスタ間調停部に伝える。このとき、コマンドアクセス領域がSDRAM１１８内の複数バンクの領域に跨る場合には、コマンド分割部(６０２〜６０４)は、受け付けたコマンドをいずれか１つのバンクにのみアクセスするマイクロコマンドに分割し、各マイクロコマンドを、当該マイクロコマンドのアクセス領域を含むバンクに対応するマスタ間調停部(１０６〜１０９)に伝える。
【０１２０】
また、コマンド分割部(６０２〜６０４)は、内部に２段のコマンドキュー(６２５〜６２７)を備えており、対応するマスタから送られるアクセスコマンドを２コマンド受け付けることができる。
【０１２１】
コマンド分割部(６０２〜６０４)において、先に受け付けたコマンドがアクセスしないバンクがある場合や、分割したマイクロコマンドの一部がメモリ制御部１１０に受け付けられた場合には、マスタ間調停部(１０６〜１０９)の一部に対してマイクロコマンドを伝えていない状態となる。
【０１２２】
このとき、コマンドキュー(６２５〜６２７)に受け付けられている２番目のコマンドが当該バンクにアクセスする場合には、２番目のコマンドを分割して作成されるマイクロコマンドを当該バンクに対応するマスタ間調停部に伝える。
【０１２３】
これにより、最初のコマンドを分割して作成されたマイクロコマンドと第２のコマンドを分割して作成されたマイクロコマンドを同時に伝えることになり、後者のマイクロコマンドが先にメモリ制御部１１０に受け付けられる場合もある。ただし、同一アドレスに対するアクセスは同一バンクになるため、同一アドレスに対するアクセスの順序が入れ替わることはない。
【０１２４】
そして、コマンドキュー(６２５〜６２７)に受け付けられている各コマンドは、そのコマンドを分割して作成された全てのマイクロコマンドがメモリ制御部１１０に受け付けられた時点でコマンドキュー(６２５〜６２７)から抜き、マスタから新たなコマンドを受け付ける。
【０１２５】
以上、第４の実施形態によれば、コマンド分割部(６０２〜６０４)で複数のコマンドを受け付けることにより、同一マスタからのコマンドの処理順序をマイクロコマンド単位で入れ替えることができ、さらに効率の良いSDRAMアクセスを行うことができる。
【０１２６】
なお、本実施形態では、コマンド分割部(６０２〜６０４)ではマスタから送られるコマンド単位でキューに溜める構成としたが、マイクロコマンドに分割した後で使用バンク毎のキューに溜める構成とすることもできる。
【０１２７】
また、本実施形態では、コマンド分割部(６０２〜６０４)で受け付け可能なコマンド数を２つとしたが、３つ以上を受け付ける構成とすることもできることはいうまでもない。
【０１２８】
なお、本実施形態では、メモリアクセス装置６００内のコマンド分割部(６０２〜６０４)によりマイクロコマンドへの分割を行っているが、マスタ内でマイクロコマンドへの分割を行い、メモリアクセス装置６００内でのコマンド分割部(６０２〜６０４)では分割を行わず、マイクロコマンドのキューを持ちマスタ間調停部(１０６〜１０９)へマイクロコマンドを伝える処理だけを行う構成とすることもできる。
【０１２９】
(第５の実施形態)
図７は第５の実施形態に係るメモリアクセス装置の構成を示すブロック図である。このメモリアクセス装置７００は、複数のコマンド分割部(３０２〜３０４)，リフレッシュ生成部７０５，複数のマスタ間調停部(７０６〜７０９)，メモリ制御部７１０，ライトデータバッファ３１６、リードデータバッファ３１７、複数の優先度管理部(３２０〜３２３)を備えており、SDRAM７１８および複数のマスタ(図示せず)に接続されている。
【０１３０】
図７における各構成要素は、第２の実施形態(図３)における対応する構成要素とほぼ同等の機能を有するため詳細な説明を省略し、動作と構成の異なる部分のみを説明する。
【０１３１】
SDRAM７１８は、２つのバンクにより構成される２つのSDRAM(７２８，７２９)により構成されおり、メモリ制御部７１０からアクセスする場合には、コマンド出力時に各SDRAMに対してコマンドが有効か無効かを示す信号を付加することにより区別し、その他のコマンド情報およびデータを入出力する信号線は共用する。また、SDRAM７２８、７２９のそれぞれに含まれる２つのバンクは別々にリフレッシュすることはできないが、SDRAM７２８とSDRAM７２９を別々にリフレッシュすることは可能となっている。
【０１３２】
マスタ間調停部(７０６〜７０９)は、各SDRAMの各バンクに対応して存在しており、マスタ間調停部７０６，７０７はSDRAM７２８のバンク０，１に対応し、マスタ間調停部７０８，７０９はSDRAM７２９のバンク０，１に対応している。
【０１３３】
リフレッシュ生成部７０５は、リフレッシュ要求をSDRAM７２８に対するリフレッシュ要求コマンドとSDRAM７２９に対するリフレッシュ要求コマンドに分割し、SDRAM７２８に対するリフレッシュ要求コマンドはマスタ間調停部７０６と７０７に伝え、SDRAM７２９に対するリフレッシュ要求コマンドはマスタ間調停部７０８と７０９に伝える。
【０１３４】
バンク間調停部７１１は、第２の実施形態と同様に、図４に示すフローチャートに従うが、ステップ４０２の処理のみ異なる。
【０１３５】
第５の実施形態において、ステップ４０２では、SDRAM７２８またはSDRAM７２９に対応する２つのマスタ間調停部の双方がリフレッシュコマンドを選択しており、かつそのSDRAMへのリフレッシュが可能である場合にステップ４０３に進み、SDRAMアクセス部３１３に対し、当該SDRAMに対するリフレッシュコマンド発行を要求する。
【０１３６】
なお、SDRAM７２８とSDRAM７２９の双方が条件を満たす場合には、双方に対して同時にリフレッシュコマンド発行を要求する。
【０１３７】
なお、本実施形態では、２バンク構成のSDRAM２つの場合を示したが、バンク構成やSDRAMの数に限定されることはなく、また各バンクが独立にリフレッシュ可能であるメモリでも同様に適用可能であることは明らかである。
【０１３８】
以上、第５の実施形態によれば、メモリアクセスとリフレッシュを効率的に調停することができ、メモリアクセス効率を高めることができる。
【０１３９】
(第６の実施形態)
図８は第６の実施形態に係るシステムを表した図である。図８に示したシステムは、DVDドライブなどの入力装置８０２，LCDなどの表示装置８０３，SDRAM８０４，システムLSI８０１を備えている。
【０１４０】
また、システムLSI８０１は、入力装置インタフェース回路８０８，出力装置インタフェース回路８０７，マイコン回路８０５，動画像復号回路８０６，および，第１〜第５の実施形態で示したいずれかのメモリアクセス装置回路８０９を含み、入力装置インタフェース回路８０８，出力装置インタフェース回路８０７，マイコン回路８０５，動画像復号回路８０６がメモリアクセス装置回路８０９に接続されている。
【０１４１】
また、図示していないが、マイコン回路８０５は、入力装置インタフェース回路８０８，出力装置インタフェース回路８０７，動画像復号化回路８０６に接続されており、各回路の制御を行うことができる。
【０１４２】
入力装置インタフェース回路８０８は入力装置８０２に、出力装置インタフェース回路８０７は表示装置８０３に、メモリアクセス装置回路８０９はSDRAM８０４に接続されている。
【０１４３】
図８に示したシステムは、マイコン８０５がSDRAM８０４に格納されたプログラムを読み込みながら実行することにより、入力装置インタフェース回路８０８，表示装置インタフェース回路８０７，動画像復号回路８０６を制御することにより、入力装置インタフェース回路８０８が入力装置８０２から動画ストリームデータをSDRAM８０４に読み込み、SDRAM８０４に読み込まれた動画ストリームデータを動画像復号回路８０６によりデコードして画像データを作成してSDRAM８０４に書き込み、SDRAM８０４に書き込まれた画像データを出力装置インタフェース回路８０７が読み出し表示装置８０３に表示する。
【０１４４】
このとき、入力装置インタフェース回路８０８，出力装置インタフェース回路８０７，マイコン８０５，動画像復号回路８０６がそれぞれメモリアクセス装置８０９を用いてSDRAM８０４にアクセスするため、効率の良いSDRAMアクセスを行うことができる。
【０１４５】
以上、第６の実施形態によると、複数マスタが効率よくSDRAMにアクセスすることができ、システム性能を高めることができる。
【０１４６】
なお、第１の実施形態から第６の実施形態においてメモリとしてSDRAMを用いているが、ダブルデータレートSDRAMやランバスDRAMなど同様の性質を持つメモリに対しても適用できることは言うまでもない。
【産業上の利用可能性】
【０１４７】
本発明に係るメモリアクセス装置は、転送効率の高いメモリアクセスを行うことで単位時間あたりの有効データ転送量を増加することができ、システムの単位時間あたりの処理量を向上することに有用であり、処理量が同等の場合には処理時間や動作周波数を抑えることができ低消費電力化にも有用である。
【０１４８】
また、プロセッサ等のレイテンシを抑えることにより、キー入力時などのレスポンス性能の向上などにも有用である。
【図面の簡単な説明】
【０１４９】
【図１】第１の実施形態におけるメモリアクセス装置のブロック図
【図２】第１の実施形態において行われる調停の動作例
【図３】第２の実施形態におけるメモリアクセス装置のブロック図
【図４】第２の実施形態におけるバンク間調停部の動作フロー
【図５】第３の実施形態におけるメモリアクセス装置のブロック図
【図６】第４の実施形態におけるメモリアクセス装置のブロック図
【図７】第５の実施形態におけるメモリアクセス装置のブロック図
【図８】第６の実施形態におけるシステム構成図
【符号の説明】
【０１５０】
100,300,500,600,700,809  メモリアクセス装置
102〜104,302〜304,602〜604  コマンド分割部
105,305,705  リフレッシュ生成部
106〜109,306〜309,506〜509,706〜709  マスタ間調停部
110,310,510,710  メモリ制御部
115  優先度指定部
320〜322  マスタ毎の優先度管理部
323  リフレッシュ要求の優先度管理部
524  メモリ制御部で選択したコマンドのアクセス情報を伝える信号線
【図１】
2009193107.tif 000003
【図２】
2009193107.tif 000004
【図３】
2009193107.tif 000005
【図４】
2009193107.tif 000006
【図５】
2009193107.tif 000007
【図６】
2009193107.tif 000008
【図７】
2009193107.tif 000009
【図８】
2009193107.tif 000010