【解決手段】 本発明は、バスIPを介してリクエスト/レスポンスに基づくバスプロトコルに従いデータ転送可能に接続された、プロセッサと、メモリと、DMAコントローラ(DMAC)とを含む半導体装置である。該半導体装置は、該バスIPと同じ挙動をするように構成されたダミーバスIPと、該ダミーバスIPに接続され、該メモリと同じ挙動をするように構成されたダミーメモリと、該DMACと該バスIP及び該ダミーバスIPとの間に設けられたバス制御回路とを備える。該ダミーバスIPは、該DMACにより発行されたライトリクエストに基づく先行レスポンスを該バス制御回路に送出し、該バス制御回路は、該先行レスポンスに基づいて、該ライトリクエストに対するライトレスポンスを該DMAコントローラに送出する。
バスIPを介してリクエスト/レスポンスに基づく所定のバスプロトコルに従いデータ転送可能に接続された、バスマスタとして動作する少なくとも1つのプロセッサと、バススレーブとして動作する少なくとも1つのメモリと、前記バスマスタとして動作するDMAコントローラとを含む半導体装置であって、
前記少なくとも1つのプロセッサ及び前記DMAコントローラに接続され、前記バスIPと同じ挙動をするように構成されたダミーバスIPと、
前記ダミーバスIPに接続され、前記メモリと同じ挙動をするように構成されたダミーメモリと、
前記DMAコントローラと、前記バスIP及び前記ダミーバスIPとの間に設けられたバス制御回路と、を備え、
前記ダミーバスIPは、前記DMAコントローラにより発行されたリクエストに基づく先行レスポンスを前記バス制御回路に送出し、
前記バス制御回路は、前記ダミーバスIPから送出された前記先行レスポンスに基づいて、前記リクエストに対するレスポンスを前記DMAコントローラに送出する、
半導体装置。
前記DMAコントローラは、前記ライトリクエストに対する前記ライトレスポンスを受け取った場合に、前記プロセッサに対して割り込みをかける、請求項2記載の半導体装置。
前記ダミーバスIPは、前記バスIPが前記バスマスタにより発行されたリクエストに基づいて前記メモリに対して該リクエストを発行するタイミングと同一のタイミングで、前記先行レスポンスを前記バス制御回路に送出する、請求項1記載の半導体装置。
前記ダミーメモリは、前記バスマスタにより発行されたリクエストに従うデータ本体を記憶する記憶セルを有しないように構成される一方で、該リクエストに対するレスポンスを前記ダミーバスIPに発行するように構成される、請求項5記載の半導体装置。
前記少なくとも1つのプロセッサ及び前記DMAコントローラと前記ダミーバスIPとの間に設けられた第1のタイミング調整回路をさらに備える、請求項1記載の半導体装置。
前記バス制御回路は、前記先行レスポンスに基づく前記ライトレスポンスを前記DMAコントローラに送出した後、前記バスIPを介して、前記メモリにより発行された前記リクエストに対する真のライトレスポンスを受け取った場合、該真のライトレスポンスが前記DMAコントローラに送出されないように制御する、請求項2記載の半導体装置。
前記バス制御回路は、前記ダミーバスIPから送出される前記先行レスポンスを受け取った場合に、前記ライトリクエストに先行する、前記バスマスタにより発行された他のリクエストが存在すると判断する場合には、前記先行レスポンスに基づく前記ライトリクエストに対するライトレスポンスに代えて、前記バスIPを介して受け取った、前記メモリにより発行された前記ライトリクエストに対する真のライトレスポンスを前記DMAコントローラに送出する、請求項8記載の半導体装置。
前記バス制御回路は、前記他のリクエストに対するレスポンスを前記バスマスタに送出した後、前記真のライトレスポンスを前記DMAコントローラに送出する、請求項9記載の半導体装置。
前記バス制御回路は、前記バスマスタにより発行されたリクエストを前記バッファに格納するためのタイミングを調整する第2のタイミング調整回路をさらに備える、請求項11記載の半導体装置。
前記少なくとも1つのプロセッサにより発行されるライトリクエストの数と、前記ダミーバスIPを介して受け取った前記ダミーメモリにより発行されたライトレスポンスの数とを監視する少なくとも1つのバス監視回路をさらに備え、
前記バス制御回路は、前記バス監視回路により前記少なくとも1つのプロセッサから前記メモリに対する現在処理中のライトリクエストが存在しないと判断される場合に、前記DMAコントローラにより一のライトリクエストが発行された時点で、該一のライトリクエストに対するライトレスポンスを前記DMAコントローラに送出する、請求項2記載の半導体装置。
複数の前記バス監視回路のそれぞれは、複数の前記プロセッサのうちの対応する一のプロセッサにより発行されるライトリクエストの数を監視する、請求項13記載の半導体装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
バスマスタとして動作するプロセッサ又はDMAコントローラが、例えば、バスIPを介して、SRAM等のメモリにアクセスする場合、バスIPの競合が発生し得る。すなわち、プロセッサのアクセス(例えば、リード/ライト)は、典型的には、DMAコントローラのそれよりも優先度が高く、プロセッサのアクセス中に発生したDMAコントローラのアクセスは、プロセッサのアクセスの終了後に実行される。また、データの整合性を保証するため、DMAコントローラによるメモリへのライトアクセス制御が発生する場合、プロセッサは、該ライトアクセス制御が終了し、割り込みがかかるまで、ウェイト状態になる必要がある。DMAコントローラは、メモリへのデータ転送終了の通知をバスIPから受け取ると、プロセッサに対して割り込みをかけ、プロセッサは、これを受けて、実行を再開する。
【0006】
しかしながら、DMAコントローラが、メモリに対するデータのライトアクセス制御を行ってから、バスIPからデータ転送終了の通知を受け取るまで、典型的には、数クロックを要する場合があり、プロセッサへの割り込みや次のライトアクセス制御に対してレイテンシーが発生するのが実情である。
【0007】
また、DMAコントローラが、プロセッサとの間で競合せず、所定の時間内にアクセスが終了することがわかっている場合であっても、DMAコントローラは、バスIPからのデータ転送終了の通知に基づいて割り込みをかけていたため、同様に、望ましくないレイテンシーが発生していた。
【0008】
そこで、本発明は、DMA転送におけるレイテンシーの改善を図ることのできる半導体装置を提供することを目的とする。
【0009】
より具体的には、本発明は、バスIPを介して接続されるDMAコントローラとメモリとの間のDMA転送によるライトアクセス制御において、データ転送終了の通知を早期に送ることで、レイテンシーの改善を図ることのできる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するための本発明は、以下に示す発明特定事項乃至は技術的特徴を含んで構成される。
【0011】
ある観点に従う本発明は、バスIPを介してリクエスト/レスポンスに基づく所定のバスプロトコルに従いデータ転送可能に接続された、バスマスタとして動作する少なくとも1つのプロセッサと、バススレーブとして動作する少なくとも1つのメモリと、前記バスマスタとして動作するDMAコントローラとを含む半導体装置である。前記半導体装置は、前記少なくとも1つのプロセッサ及び前記DMAコントローラに接続され、前記バスIPと同じ挙動をするように構成されたダミーバスIPと、前記ダミーバスIPに接続され、前記メモリと同じ挙動をするように構成されたダミーメモリと、前記DMAコントローラと、前記バスIP及び前記ダミーバスIPとの間に設けられたバス制御回路とを備える。前記ダミーバスIPは、前記DMAコントローラにより発行されたリクエストに基づく先行レスポンスを前記バス制御回路に送出する。また、前記バス制御回路は、前記ダミーバスIPから送出された前記先行レスポンスに基づいて、前記リクエストに対するレスポンスを前記DMAコントローラに送出する。
【0012】
とりわけ、前記ダミーバスIPは、前記バスマスタにより発行されたライトリクエストに基づいて前記先行レスポンスを前記バス制御回路に送出し、前記バス制御回路は、前記ダミーバスIPから送出された前記先行レスポンスに基づいて、前記ライトリクエストに対するライトレスポンスを前記DMAコントローラに送出し得る。
【0013】
これにより、前記半導体装置では、前記DMAコントローラから前記メモリに対してライトアクセスが発行された場合に、前記メモリからのライトレスポンスを待つことなく、擬似的なライトレスポンスを前記DMAコントローラに返すことができるようになる。したがって、前記DMAコントローラは、前記メモリに対するライトアクセスを直ちに終了させることができ、レイテンシーが改善されることになる。
【0014】
前記DMAコントローラは、前記ライトリクエストに対する前記ライトレスポンスを受け取った場合に、前記プロセッサに対して割り込みをかけ得る。
【0015】
前記ダミーバスIPは、前記バスIPが前記バスマスタにより発行されたリクエストに基づいて前記メモリに対して該リクエストを発行するタイミングと同一のタイミングで、前記先行レスポンスを前記バス制御回路に送出し得る。
【0016】
前記ダミーバスIPは、前記バスマスタにより発行されたリクエストに従うデータ本体を無視するように構成され得る。また、これに伴い、前記ダミーメモリは、前記バスマスタにより発行されたリクエストに従うデータ本体を記憶する記憶セルを有しないように構成される一方で、該リクエストに対するレスポンスを前記ダミーバスIPに発行するように構成され得る。
【0017】
前記半導体装置は、前記少なくとも1つのプロセッサ及び前記DMAコントローラと前記ダミーバスIPとの間に設けられた第1のタイミング調整回路をさらに備え得る。
【0018】
また、前記バス制御回路は、前記先行レスポンスに基づく前記ライトレスポンスを前記DMAコントローラに送出した後、前記バスIPを介して、前記メモリにより発行された前記リクエストに対する真のライトレスポンスを受け取った場合、該真のライトレスポンスが前記DMAコントローラに送出されないように制御し得る。
【0019】
さらに、前記バス制御回路は、前記ダミーバスIPから送出される前記先行レスポンスを受け取った場合に、前記ライトリクエストに先行する、前記バスマスタにより発行された他のリクエストが存在すると判断する場合には、前記先行レスポンスに基づく前記ライトリクエストに対するライトレスポンスに代えて、前記バスIPを介して受け取った、前記メモリにより発行された前記ライトリクエストに対する真のライトレスポンスを前記DMAコントローラに送出し得る。
【0020】
さらにまた、バス制御回路は、前記他のリクエストに対するレスポンスを前記バスマスタに送出した後、前記真のライトレスポンスを前記DMAコントローラに送出し得る。
【0021】
また、前記バス制御回路は、前記バスマスタにより発行されたリクエストを一時的に格納するバッファと、前記メモリにより発行され前記バスIPを介して受け取ったレスポンスと前記バッファに格納された前記リクエストとの対応関係に従って、前記バスマスタにより発行された前記リクエストに対する所定のレスポンスを前記バスマスタに送出するように制御するレスポンス制御部とを備え得る。
【0022】
また、前記バス制御回路は、前記バスマスタにより発行されたリクエストを前記バッファに格納するためのタイミングを調整する第2のタイミング調整回路をさらに備え得る。
【0023】
また、前記半導体装置は、前記少なくとも1つのプロセッサにより発行されるライトリクエストの数と、前記ダミーバスIPを介して受け取った前記ダミーメモリにより発行されたライトレスポンスの数とを監視する少なくとも1つのバス監視回路をさらに備え得る。前記バス制御回路は、前記バス監視回路により前記少なくとも1つのプロセッサから前記メモリに対する現在処理中のライトリクエストが存在しないと判断される場合に、前記DMAコントローラにより一のライトリクエストが発行された時点で、該一のライトリクエストに対するライトレスポンスを前記DMAコントローラに送出し得る。
【0024】
また、前記半導体装置に複数のバス監視回路が設けられた場合、前記複数のバス監視回路のそれぞれは、複数の前記プロセッサのうちの対応する一のプロセッサにより発行されるライトリクエストの数を監視し得る。
【0025】
また、前記半導体装置は、複数の前記メモリと、該複数のメモリのそれぞれに対応する複数のダミーメモリとを備え得る。前記ダミーバスIPは、前記バスマスタにより発行された前記複数のダミーメモリのそれぞれに対するライトアクセスに基づいて、前記先行レスポンスを前記バス制御回路にそれぞれ送出し得る。
【0026】
また、別の観点に従う本発明は、方法の発明としても把握することができる。
【0027】
なお、本明細書等において、手段とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。また、1つの手段が有する機能が2つ以上の物理的手段により実現されても、2つ以上の手段の機能が1つの物理的手段により実現されても良い。
【発明の効果】
【0028】
本発明によれば、DMA転送におけるレイテンシーの改善を図ることのできる半導体装置が実現される。
【0029】
より具体的には、本発明によれば、DMAコントローラからメモリに対してライトリクエストが発行された場合に、該メモリからのライトレスポンスを待つことなく、擬似的なライトレスポンスを該DMAコントローラに返すため、該DMAコントローラは、該メモリに対するライトアクセスを直ちに終了させることができ、したがって、半導体装置におけるレイテンシーを改善することができるようになる。
【0030】
また、本発明によれば、レイテンシー改善のために導入したダミーバスIP及びダミーメモリは、本来のバスIP及びメモリの回路構成を全て再現する必要はなく、したがって、回路規模の増大を回避しつつ、レイテンシーの改善を図ることのできる半導体装置が実現される。
【0031】
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【発明を実施するための形態】
【0033】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形(例えば各実施形態を組み合わせる等)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【0034】
本発明は、バスIPを介してリクエスト/レスポンスに基づくバスプロトコルに従いデータ転送可能に接続された、プロセッサと、メモリと、DMAコントローラ(DMAC)とを含む半導体装置である。該半導体装置は、該バスIPと同じ挙動をするように構成されたダミーバスIPと、該ダミーバスIPに接続され、該メモリと同じ挙動をするように構成されたダミーメモリと、該DMACと該バスIP及び該ダミーバスIPとの間に設けられたバス制御回路とをさらに備える。該ダミーバスIPは、該DMACにより発行されたライトリクエストに基づく先行レスポンスを該バス制御回路に送出し、該バス制御回路は、該先行レスポンスに基づいて、該ライトリクエストに対するライトレスポンスを該DMAコントローラに送出する。
【0035】
[第1の実施形態]
図1は、本発明の一実施形態に係る半導体装置の概略構成の一例を説明するブロックダイアグラムである。同図に示すように、半導体装置100は、例えば、プロセッサ110と、メモリ120と、バスIP130と、DMAコントローラ(以下、「DMAC」という。)140とを含んで構成される。すなわち、プロセッサ110、メモリ120、及びDMAC140との間は、いわゆるバスが形成されている。本実施形態ではさらに、半導体装置100は、例えば、ダミーバスIP150と、ダミーメモリ160と、タイミング調整回路170と、バス制御回路180とを含む。すなわち、ダミーパスIP、ダミーメモリ、及びタイミング調整回路によりダミーブロックが形成されている。
【0036】
プロセッサ110は、プログラムとして記述された命令コードを解釈することにより所定の処理を実行するコンポーネントである。ここでは、「プロセッサ」という語は、CPUやMPU、コプロセッサ、マイクロコントローラ等と同義のものとして扱われ、また、マルチコアプロセッサを意味するものであっても良い。プロセッサ110は、図示されていないが、例えば、演算回路と、デコーダと、各種のレジスタと、プログラムカウンタとを含んで構成される。プロセッサ110はまた、キャッシュメモリを含んで良い。プロセッサ110は、例えば、バスIP130を介して、メモリ120と接続される。プロセッサ110は、例えば、バスマスタとして、バススレーブであるメモリ120にアクセスするため、所定のリクエスト(例えばライトリクエストやリードリクエスト)を発行する。リクエストは、半導体装置100において例えば固有のアクセスIDによって一意に識別される。
【0037】
メモリ120は、例えば、揮発性メモリ及び/又は書き換え可能な不揮発性メモリを含んで構成されるコンポーネントである。揮発性メモリの例としては、DRAMやSRAMが挙げられ、また、書き換え可能な不揮発性メモリの例としては、フラッシュメモリが挙げられるが、これらに限られるものではない。図中、1つのメモリ120のみが示されているが、複数のメモリ120が設けられていても良い。
【0038】
バスIP130は、所定のバスプロトコルに従って、バスマスタとバススレーブとの間のデータ転送(バス通信)を実現するためのインターフェース回路である。バスプロトコルでは、例えば、リクエスト及びレスポンスというアクセスがそれぞれ定義される。リクエストは、バスマスタからバススレーブに対して送られるデータユニットであり、リクエストには、例えば、リードコマンドやライトコマンド等がある。レスポンスは、バススレーブからバスマスタに対して送られるデータユニットであり、リクエストには、例えば、リードデータやライト終了メッセージ等がある。本実施形態では、プロセッサ110及びDMAC140のそれぞれがバスマスタとして動作し、メモリ120がバススレーブとして動作する例を示している。したがって、本例では、バスIP130は、バスマスタと通信するための2つのイニシエータエージェント(IA)131と、メモリ120と通信するための1つのターゲットエージェント(TA)132とを含んで構成されている。
【0039】
図2は、本発明の一実施形態に係る半導体装置のバスIPの概略構成の一例を示すブロックダイアグラムである。同図では、2つのイニシエータエージェント131A及び131Bと、1つのターゲットエージェント132とを含むバスIP130の概略構成が示されている。また、同図に示すように、バスIP130の内部では、バスプロトコルのリクエストとレスポンスとを別々に管理するように、それぞれ異なる経路が形成されている。
【0040】
イニシエータエージェント131A及び131Bのそれぞれは、プロトコル変換部1311と、各種のバッファ1312a〜1312dと、アドレスデコーダ1313とを含んで構成される。プロトコル変換部1311は、外部から受け取ったデータを、所定のバスプロトコルに従って、順次に、内部データに変換し、対応するバッファ1312a又は1312bに送出する一方、対応するバッファ1312c又は1312dから受け取った内部データを、所定のバスプロトコルに従って、外部のデータに変換する。リクエストバッファ1312aは、データユニットとしてのリクエストを格納するFIFO形式のバッファ回路であり、ライトデータバッファ1312bは、ライトリクエストに従うライトデータを格納するFIFO形式のバッファ回路である。リクエストバッファ1312aから送出されるリクエストは、アドレスデコーダ1313に入力される。また、レスポンスバッファ1312cは、ターゲットエージェント132から受け取ったレスポンスを格納するFIFO形式のバッファ回路であり、リードデータバッファ1312dは、ターゲットエージェント132から受け取ったリードデータを格納するFIFO形式のバッファ回路である。アドレスデコーダ1313は、リクエストバッファ1312aから受け取ったリクエストが示すアドレスに基づいて、アクセス先のバススレーブ及びそのアドレスを特定する。
【0041】
また、プロトコル変換部1311は、バスマスタから受け取ったリクエストが互いに識別可能なように、該受け取ったリクエストに対してバスマスタに固有のアクセスIDを付与し得る。アクセスIDは、リクエストに対するレスポンスに引き継がれ、これによって、バスIP130は、バススレーブから受け取ったレスポンスがどのリクエストに対応するかを認識することができる。
【0042】
ターゲットエージェント132は、プロトコル変換部1321と、各種のバッファ1322a〜1322dとを含んで構成される。ターゲットエージェント132は、アドレスレコーダを含まない点でイニシエータエージェント131と異なりが、その他は同じであるため、説明を省略する。
【0043】
図1に戻り、DMAC140は、指定されたコンポーネント間で、直接的にデータを転送するためのコンポーネントである。例えば、DMAC140は、自身がバスマスタとして、バススレーブであるメモリ120に対してアクセスするため、リクエスト(例えばライトリクエストやリードリクエスト)を発行する。例えば、DMAC140は、プロセッサ110によって、内部のレジスタ(図示せず)に、転送元のアドレス、転送先のアドレス、及び転送すべきデータの長さを示すパラメータを含むデータ転送命令がセットされると、該命令に従ってデータ転送を実行する。プロセッサ110からデータ転送命令を受けたバスマスタであるDMAC140は、バススレーブからデータ転送終了の通知を受けると、プロセッサ110に割り込みをかける。
【0044】
ダミーバスIP150は、バスIP130と同じ挙動を示すように構成されたダミー回路である。すなわち、ダミーバスIP150は、バスIP130と同一の回路構成であっても良いが、リクエスト/レスポンスに関する機能を再現するために必要な最小限の回路構成によって実現され得る。したがって、ダミーバスIP150は、必要最小限の回路のみ実装しているため、バスIP130と比較して回路規模は非常に小さくかつシンプルなものになる。ダミーバスIP150は、メモリ120に対してライトアクセスが可能になったタイミングで、先行レスポンス(先行レスポンス状態信号)PRを先行レスポンス信号線Lを介して、バス制御回路180に送出する。先行レスポンスPRは、DMAC140がライトアクセスを行った場合に有効なレスポンスである。例えば、ダミーバスIP150は、例えばバス上に現れるマスタIDに基づいて、どのバスマスタ(例えばプロセッサ110又はDMAC140のいずれか)がライトアクセスを行ったかを判断し、DMAC140からのライトアクセスであると判断する場合に、先行レスポンスPRを送出する。
【0045】
ダミーメモリ160は、メモリ120と同じ挙動を示すように構成されたダミー回路である。ダミーメモリ160もまた、ダミーバスIP150からのリクエストに対してレスポンスを返すという機能を再現するために必要な最小限の回路によって構成され得る。すなわち、ダミーメモリは、個々のデータセグメントを記憶する記憶セル及び該記憶セルにアクセスするための構成を有していない。したがって、メモリ120と比較して回路規模は非常に小さくかつシンプルなものになる。
【0046】
図3は、本発明の一実施形態に係る半導体装置のダミーバスIPの概略構成の一例を示すブロックダイアグラムである。
【0047】
ダミーバスIP150は、上述した通り、バスIP130のリクエスト/レスポンス機能を再現する可能に構成された回路であり、イニシエータエージェント151A及び151B並びにターゲットエージェント152を含んで構成される。
【0048】
より具体的には、ダミーバスIP150は、プロトコル変換部1511と、リクエストバッファ1512a及びレスポンスバッファ1512cと、アドレスデコーダ1513とを含んで構成される。すなわち、ダミーバスIP150では、リクエスト及びレスポンスに従うデータ本体を無視することができるため、それらを格納するバッファが省略され得るとともに、アクセス先バススレーブ内のアドレスを特定する必要がないため、アドレスを特定するための回路が省略され得る。したがって、プロトコル変換部1511及びアドレスデコーダ1513もまた、データ本体及びアドレスに関する回路が省略されて構成され得る。これにより、ダミーバスIP150もまた、必要最小限の回路のみ実装しているため、バスIP130と比較して回路規模は非常に小さくかつシンプルなものになる。
【0049】
図1に戻り、タイミング調整回路170は、バスマスタとバススレーブとの間のバス配線を分岐したことによる、設計上のタイミング収束(タイミングクロージャ)の問題を保証するための回路であり、例えば、フリップフロップを含んで構成される。図示されていないが、タイミング調整回路170は、バスプロトコルを遵守する制御回路を含む。例えば、プロセッサ110とダミーバスIP150との間のアクセスは、FF1を介して行われ、また、DMAC140とダミーバスIP150との間のアクセスは、FF2を介して行われる。なお、タイミング調整回路170は、タイミング収束の問題を考慮する必要がない場合、省略され得る。
【0050】
バス制御回路180は、バススレーブ側から送られてくるレスポンスに基づく制御を行う回路である。具体的には、バス制御回路180は、バスマスタにより発行されたリクエストをバッファに一時的に格納するとともに、メモリ120により発行され、バスIP130を介して受け取ったレスポンスの内容と該バッファに格納されたリクエストの内容との対応関係が維持されるように管理することによって、バスマスタに対してリクエストに対する適切なレスポンスを送出するように制御する。また、バス制御回路180は、複数のバスマスタによるそれぞれのアクセス(すなわち、リクエスト/レスポンス)を例えばマスタIDによって一意に管理する。
【0051】
なお、本例では、バス制御回路180は、ダミーメモリ160によるレスポンスを直接的に受けるように、レスポンス信号線Lによりダミーメモリ160と接続されている。なお、実装においては、ダミーバスIP150及びダミーメモリ160の回路規模は小さいため、レスポンス信号線Lの配線長も短くなり、したがって、この点でタイミング収束を考慮する必要はない。
【0052】
図4は、本発明の一実施形態に係る半導体装置の概略的動作の一例を説明するためのタイミングチャートである。
【0053】
半導体装置100において、DMAC140がメモリ120に対してライトアクセスするためにライトリクエストを発行すると、該ライトアクセスは、バスIP130のイニシエータエージェント131B及びダミーバスIP150のイニシエータエージェント151Bに伝えられる。バスIP130とダミーバスIP150とは、同じ挙動をするため、それぞれのターゲットエージェント132及び152にも、同じタイミングでライトアクセスが現れる。そこで、バス制御回路180は、ダミーバスIP150のターゲットエージェント152に該ライトアクセスが現れたタイミングで直ちに、該ライトリクエストに対するライトレスポンスをDMAC140に返戻する。
【0054】
すなわち、同図に示すように、例えば、DMAC140が、nクロック目で、ライトリクエストを発行したとする。該ライトリクエストは、バスIP130(及びダミーバスIP150)のレイテンシーによりn+4クロック目に、ターゲットエージェント132及び152に現れるとする。メモリ120は、したがって、次のクロックタイミング(n+5クロック目)で、該ライトリクエストに対するライトレスポンス(ライト終了ステータス)を返戻し、これが、バスIP130を介して、その3クロック後(n+8クロック目)に現れることになる。
【0055】
本実施形態では、ターゲットエージェント152にライトリクエストが現れたタイミングで、先行レスポンスPRがバス制御回路180に発行される。バス制御回路180は、後述するように、該先行レスポンスPRを受けて、所定の条件の下、DMAC140に対して、該ライトリクエストに対するライトレスポンスを送出する。なお、リクエストとレスポンスとは、シングルリクエストによるバーストアクセスがない限り、通常は、1対1に対応する。したがって、バス制御回路180は、先行レスポンスに従ってライトレスポンスを送出した場合には、メモリ120からバスIP130を介して真のライトレスポンスを受け取ったとしても、これを無視することで、リクエストとレスポンスとの間の整合性を保つようにしている。
【0056】
なお、
図5に示すように、バス制御回路180がライトリクエストに対する先行レスポンスPRを受け取った場合であっても、該ライトリクエストに対して先行する他のリクエストが既に存在する場合には、バス制御回路180は、先行レスポンスPRに基づくライトレスポンスを発行せず、該他のリクエストに対するレスポンスをバスマスタに送出した後、メモリ120から送られる該ライトリクエストに対するライトレスポンスをバスマスタに送出する。
【0057】
以上のように、半導体装置100は、DMAC140からメモリ120に対してライトアクセスが発行された場合に、メモリ120からのライトレスポンスを待つことなく、擬似的なライトレスポンスをDMAC140に返戻するため、DMAC140は、メモリ120に対するライトアクセスを直ちに終了させることができ、したがって、レイテンシーを改善することができるようになる。
【0058】
次に、バス制御回路180の詳細について説明する。
図6は、本発明の一実施形態に係る半導体装置のバス制御回路の概略構成の一例を示すブロックダイアグラムである。同図に示すように、バス制御回路180は、例えば、バッファ181と、ORゲート182と、レスポンス制御回路183とを含んで構成される。
【0059】
バッファ181は、FIFO形式のバッファ回路であり、バスマスタ(すなわち、DMAC140)から送られてくるリクエストを一時的に格納する。バッファ181に格納されているリクエストの数は、図示しないカウンタによってカウントされている。バッファ181は、バススレーブ側からORゲート182を介して何らかのレスポンスを受けるごとに、FIFO取り出しブロック181aから順次にリクエストがレスポンス制御回路183によって取り出されるように動作する。
【0060】
レスポンス制御回路183は、バススレーブ側から受け取った先行レスポンスに関する2つの値をそれぞれカウントするカウンタ183aを含み、カウンタ183aによるカウント値のそれぞれに従って、バススレーブ側から受け取ったレスポンスに応じた処理を行う。カウンタ183aは、例えば、バススレーブ側から受け取った先行レスポンスPRに対してバスマスタにライトレスポンスを返した回数(以下、「レスポンス返戻回数」という。)、及びバススレーブ側から受け取った先行レスポンスPRの数に対してバスマスタにライトレスポンスを未だ返していない数(以下、「レスポンス残数」という。)をそれぞれカウントする。
【0061】
具体的には、レスポンス制御回路183は、先行レスポンス信号線Lを介して先行レスポンスPRを受け取った場合、バッファ181を参照し、取り出されるべきリクエストがライトリクエストである場合に、バッファ181からリクエストを1つ取り出して、バスIP130からのレスポンスとは無関係に、バスマスタに対してライトリクエストに対するレスポンスを送出し、これに伴って、カウンタ183aのカウンタ値をそれぞれ更新する。その後、レスポンス制御回路183は、バスIP130からライトリクエストに対する真のレスポンスを受け取った場合、レスポンス残数のカウント値が0でなければ、これをデクリメントし、バスIP130から送られてきた該レスポンスを無視する(つまり、バスマスタ側に転送しない)。すなわち、一例では、レスポンス制御回路183は、バスIP130からレスポンスを受け取っても、先行レスポンスPRを受け取ってバスマスタにライトレスポンスを返した回数だけ、無視するようになっている。一方、レスポンス制御回路183は、該レスポンス残数のカウント値が0であれば、バスIP130から送られてきたレスポンスをそのままバスマスタに渡す。
【0062】
図7A乃至
図7Cは、本発明の一実施形態に係る半導体装置のバス制御回路におけるレスポンス処理を説明するためのフローチャートである。なお、バス制御回路180は、かかるレスポンス処理とは別に、バスマスタ(すなわち、DMAC140)からリクエストを受け取るごとに、これをバッファ181に格納している。
【0063】
同図に示すように、バス制御回路180は、バススレーブ側からレスポンスがあったか否かを監視している(S701)。バス制御回路180は、バススレーブ側からレスポンスを受けると(S701のYes)、該レスポンスが先行レスポンスPRであるか否かを判断するとともに(S702)、先行レスポンスPRに関するレスポンス残数が0でない(≠0)か否かを判断する(S703及びS704)。すなわち、バス制御回路180は、レスポンスが先行レスポンスPRでなく(S702のNo)、レスポンス残数が0であると判断する場合(S703のNo)、通常レスポンスに関する処理を行う(S705)。通常レスポンスに関する処理は、
図7Bを参照して説明される。
【0064】
また、バス制御回路180は、レスポンスが先行レスポンスPRでなく(S702のNo)、レスポンス残数が0でないと判断する場合(S703のYes)、又はレスポンスが先行レスポンスPRであり(S702のYes)、レスポンス残数が0であると判断する場合(S704のNo)、先行レスポンスに関する処理を行う(S706)。つまり、バス制御回路180は、レスポンスが先行レスポンスPRであるか、又は先行レスポンスPRに関するレスポンス残数が0でなければ、通常レスポンスに関する処理に代えて、先行レスポンスPRに関する処理を行うことになる。先行レスポンスに関する処理は、
図7Cを参照して説明される。
【0065】
さらに、バス制御回路180は、レスポンスが先行レスポンスPRであり(S702のYes)、先行レスポンスPRに対するレスポンス数が0でないと判断する場合(S704のYes)、先行レスポンスに関する処理を行った後(S707)、通常レスポンスに関する処理を行う(S708)。
【0066】
図7Bを参照し、通常レスポンスに関する処理では、バス制御回路180は、バッファ181を参照し、FIFO取り出しブロック181aに格納されているリクエストがライトリクエストであるか否かを判断する(S7051)。バス制御回路180は、FIFO取り出しブロック181aにあるデータがライトレスポンスでないと判断する場合には(S7051のNo)、FIFO取り出しブロック181aに格納されているリクエスト(例えばリードリクエスト)を取り出して破棄する(S7052)。続いて、バス制御回路180は、バススレーブ側から受け取ったレスポンス(例えばリードレスポンス)をバスマスタに送出し(S7053)、通常レスポンスに関する処理を終了する。これにより、バス制御回路180は、バススレーブ側からのレスポンスの監視に戻る。
【0067】
これに対して、バス制御回路180は、FIFO取り出しブロック181aにあるデータがライトレスポンスであると判断する場合(S7051のYes)、続いて、先行レスポンスPRに関するレスポンス返戻数が0であるか否かを判断する(S7054)。バス制御回路180は、レスポンス返戻数が0でないと判断する場合(S7054のYes)、カウンタ値の値を1つデクリメントし(S7055)、通常レスポンスに関する処理を終了する。これにより、バス制御回路180は、バススレーブ側からのレスポンスの監視に戻る。
【0068】
次に、
図7Cを参照し、先行レスポンスに関する処理では、バス制御回路180は、まず、先行レスポンスに関するレスポンス残数を1つインクリメントする(S7061)。続いて、バス制御回路180は、バッファ181を参照し、FIFO取り出しブロック181aに格納されているリクエストがライトリクエストであるか否かを判断する(S7062)。バス制御回路180は、FIFO取り出しブロック181aに格納されているリクエストがライトリクエストでないと判断する場合には(S7062のNo)、先行レスポンスに関する処理を終了する。
【0069】
一方、バス制御回路180は、FIFO取り出しブロック181aに格納されているリクエストがライトリクエストであると判断する場合には(S7062のYes)、FIFO取り出しブロック181aに格納されている該ライトリクエストを取り出して(S7063)、該取り出したライトリクエストをバスマスタに送出する(S7064)。続いて、バス制御回路180は、レスポンス返戻数を1つインクリメントし(S7065)、さらに、レスポンス残数を1つデクリメントし(S7066)、先行レスポンスに関する処理を終了する。これにより、バス制御回路180は、バススレーブ側からのレスポンスの監視に戻る。
【0070】
また、バス制御回路180は、レスポンスが先行レスポンスPRであり(S702のYes)、レスポンス残数が0でないと判断する場合(S704のYes)、上述した先行レスポンスに関する処理を行い(S707)、さらに、上述した通常レスポンスに関する処理を行う(S708)。
【0071】
即ち、かかる処理は、バス制御回路180が先行レスポンスPRを受けるとともに、バスIP130からレスポンスを受け取る場合に実行される。例えば、バス制御回路180が先行レスポンスPR及びこれと全く独立したレスポンスを受け取る場合と、先行レスポンスPR及びこれに対応する真のライトレスポンスを受け取る場合が、想定されうる。
【0072】
前者の場合、バス制御回路180は、先行レスポンスに関する処理(S707)においては、所定の条件に合致すればライトレスポンスを返戻し、合致しなければレスポンスを返戻することはない。バス制御回路180は、次の通常レスポンスに関する処理においては、レスポンス返戻数が0であれば、レスポンスを返戻する。また、後者の場合、バス制御回路180は、先行レスポンスに関する処理(S707)においては、所定の条件に合致すればライトレスポンスを返戻し、合致しなければレスポンスを返戻することはない。バス制御回路180は、次の通常レスポンスに関する処理においては、先行レスポンスに関する処理(S707)によりライトレスポンスを返戻することでレスポンス返戻数が0以上になっているので、レスポンスを返戻することはない。つまり、バス制御回路180は、先行レスポンスに関する処理において所定の条件に合致しない場合には、何もレスポンスを返戻せず、次の通常レスポンスに関する処理においてレスポンスを返戻することになる。
【0073】
図8は、本発明の一実施形態に係る半導体装置のバス制御回路の概略構成の他の例を示すブロックダイアグラムである。同図に示すバス制御回路180は、タイミング調整回路184をさらに含む。タイミング調整回路184は、バス制御回路180を設けたことによる設計上のタイミング収束の問題を保証するための回路である。すなわち、バス制御回路180自体は、レスポンス信号線Lを介した先行レスポンスに基づいて、バスマスタ側に所定のレスポンスを返戻する機能を有すれば良く、通常は、タイミング収束の問題は考慮する必要がないと考えられる。しかしながら、タイミング収束の問題を考慮したい場合には、同図に示すように、例えば、バッファ181の前段にタイミング調整回路184を配置しても良い。タイミング調整回路184は、例えば、フリップフロップを含んで構成される。
【0074】
次に、バス制御回路180の動作の一例について説明する。
図9乃至
図10は、本発明の一実施形態に係る半導体装置のバス制御回路の動作の一例を説明するためのタイミングチャートである。
【0075】
図9に示すように、クロックCLKに従って、バスマスタ(すなわち、DMAC140)からバス制御回路180に送られたリクエストは、順次に、バッファ181に格納される。このとき、バッファ181内の格納されたリクエストの数はカウントされている。同図は、nクロック目でライトリクエストが送られ、続いて、リードリクエスト及びリードリクエストが送られ、その2クロック後(n+5クロック目)に、ライトリクエストが送られてきたことを示している。また、FIFO取り出しブロック181aには、次に取り出されるべきリクエストがセットされている。
【0076】
ここでは、バス制御回路180は、バスマスタからリクエストを受け取ってから、該リクエストに対応する真のレスポンスをバススレーブ(すなわち、メモリ120)から受け取るまで、8クロック要するものとする。また、ダミーバスIP150は、ライトリクエストに対して、5クロック後に先行レスポンスPRをバス制御回路180に送出することができるものとする。
【0077】
したがって、バス制御回路180は、n+5クロック目で、先行レスポンスPRを受け取ると、次のクロックタイミング(n+6クロック目)でライトレスポンスをバスマスタに送出する。このとき、カウンタ183aによるカウンタ値は“1”となる。したがって、図から明らかなように、本例では、バス制御回路180は、3クロック先行してレスポンスをバスマスタに返戻することができることになる。
【0078】
バス制御回路180は、例えば、最初のライトリクエストを受け取った後、n+8クロック目で、それに対応する真のレスポンスを受け取ることになる。しかしながら、バス制御回路180は、該最初のライトリクエストに対するレスポンスを、先行レスポンスPRに基づいて、バスマスタに送出していることから、該真のレスポンスを無視し、したがって、カウンタ183aによるカウンタ値は“0”となる。バス制御回路180は、続いて受け取ったリードリクエストについては、次のクロックタイミングでそのままバスマスタに送出する。
【0079】
なお、n+10クロック目において、バス制御回路180は、先行レスポンスPRを受け取ったとすると、次のクロックタイミングでは、リードレスポンスとライトレスポンスとが競合することになるが、本例では、バス制御回路180は、リードレスポンスを先に送出するものとしている。
【0080】
また、別の例として、
図10に示すような順番で、バス制御回路180は、リードリクエスト及びライトリクエストを受け取ったとする。n+4クロック目で受け取ったライトリクエストに対して、バス制御回路180は、n+9クロック目で、先行レスポンスPRを受け取ると、次のクロックタイミングでライトレスポンスを送出するのではなく、バッファ181に先に格納されたリードリクエストが取り出された後に、ライトレスポンスを送出する。すなわち、バス制御回路180は、n+13クロック目で、n+4クロック目で受け取ったライトリクエストに対するライトリクエストを受け取るため、これをバスマスタに送出する。
【0081】
[第2の実施形態]
本実施形態は、メモリ120に対するライトリクエストの数と、ダミーバスIP150を介して受け取ったダミーメモリにより発行されたライトレスポンス(ライト終了ステータス)の数とに基づいて、DMAC140以外のバスマスタ(すなわち、プロセッサ110)からメモリ120に対する現在処理中のライトリクエストが存在するか否かを判断し、現在処理中のライトリクエストが存在しない場合には、DMAC140からのライトリクエストが発行された時点で、直ちに、該ライトリクエストに対するライトレスポンスを返すことのできる半導体装置を開示する。
【0082】
図11は、本発明の一実施形態に係る半導体装置の概略構成の一例を示すブロックダイアグラムである。同図に示すように、半導体装置1100は、バスIP130に入力されるライトリクエストを監視するバス監視回路1110をさらに備える。また、半導体装置1100では、バス制御回路180に代えて、バス制御回路1120が設けられている。なお、以下では、
図1に示した半導体装置100と同じコンポーネントについては、説明を省略する。
【0083】
バス監視回路1110は、プロセッサ110からメモリ120に対するライトアクセスが入力されると、カウント値を1つインクリメントし、また、ダミーバスIP150から該ライトアクセスに対するライトレスポンスが入力されると、カウント値を1つデクリメントするカウンタ1111を含む。該カウンタ1111は、カウント値が0になった場合に、ongoing信号の値を“H”にし、カウント値が0以外の場合に、ongoing信号の値を“L”にして送出する。
【0084】
図12は、本発明の一実施形態に係る半導体装置のバス制御回路の概略構成の一例を示すブロックダイアグラムである。
【0085】
同図に示すように、本実施形態のバス制御回路1120は、先行レスポンス制御回路1121をさらに備える。先行レスポンス制御回路1121には、バスマスタからのリクエストが入力されるとともに、バス監視回路1110から送出されるongoing信号及び先行レスポンスPRが入力される。
【0086】
先行レスポンス制御回路1121は、バスマスタからのリクエストがライトリクエストである場合に、該ライトリクエストに対してダミーバスIP150から受け取った先行レスポンスの送出制御を行う。先行レスポンス制御回路1121は、図示しないカウンタを有し、該カウンタによって、先行レスポンスPRを送出した回数をカウントする。
【0087】
すなわち、先行レスポンス制御回路1121は、バスマスタからのリクエストがライトリクエストである場合に、まず、ongoing信号の値が“H”であるか否かを判断する。先行レスポンス制御回路1121は、ongoing信号の値が“H”であると判断する場合、次に、カウント値が0であるか否かを判断し、該カウント値が0であると判断する場合に、受け取った先行レスポンスPRをORゲート182及びレスポンス制御回路183に送出する。先行レスポンスPRを受けたレスポンス制御回路183は、上述した処理を行うことになる。一方、先行レスポンス制御回路1121は、ongoing信号の値が“H”であると判断する場合であっても、カウント値が0でないと判断する場合には、カウンタのカウント値を1つデクリメントさせ、先行レスポンスPRに対する処理を何も行わない。これにより、先行レスポンス制御回路1121は、現在処理中のライトアクセスがない場合に限り、先行レスポンスを通過させることができるようになる。
【0088】
[第3の実施形態]
本実施形態は、第2の実施形態の変形であり、バススレーブとして動作するメモリ120にアクセス可能なバスマスタがDAMC140に加え2つ以上存在する場合に適応された半導体装置を開示する。
【0089】
図13は、本発明の一実施形態に係る半導体装置の概略構成の一例を示すブロックダイアグラムである。同図に示すように、本実施形態の半導体装置1300は、バスマスタとして、プロセッサ110A及び110Bと、DMAC140とを備える。また、プロセッサ110Bが追加されたことに伴い、3つのフリップフロップを含むタイミング調整回路170’と、2つのバス監視回路1110A及び1110Bが設けられている。バス監視回路1110A及び1110Bの構成は、第2の実施形態に示されたものと同様である。
【0090】
バス制御回路1120’もまた、これらの変更に適応するように変更されている。すなわち、バス制御回路1120’は、バス監視回路1110A及び1110Bがそれぞれ送出するongoing信号の値が、ともに“H”の場合のみ、先行レスポンスPRを送出するように制御される。
【0091】
このように、バススレーブであるメモリ120にアクセス可能なバスマスタがDAMC140に加え2つ以上存在する場合であっても、メモリ120に対するそれぞれのバスマスタからのライトアクセスを監視することによって、適切な先行レスポンスPRに基づくライトレスポンスを発行することができるようになる。
【0092】
[第4の実施形態]
本実施形態は、第2の実施形態の変形であり、複数のメモリ120が存在する場合に適応された半導体装置を開示する。
【0093】
図14は、本発明の一実施形態に係る半導体装置の概略構成の一例を示すブロックダイアグラムである。同図に示すように、本実施形態の半導体装置1400は、バススレーブとして動作する複数のメモリ120A及び120Bに、バスIP130を介してアクセス可能に構成されている。したがって、半導体装置1400は、かかる構成に対応するように、ダミーバスIP150及び複数のダミーメモリ160A及び160Bを備えている。
【0094】
バス制御回路1120’は、ダミーバスIP150のターゲットエージェント152A及び152Bのいずれかにより発行される先行レスポンスを監視する。また、バス監視回路1110’は、バスマスタのアクセス先ごとに、発行されたライトアクセスの数及び該ライトアクセスに対するライトレスポンス(ライト終了ステータス)の数をそれぞれ管理するように構成される。
【0095】
このように、半導体装置100が複数のメモリ120を備える場合であっても、それぞれのメモリ120に対するアクセスのレイテンシーを改善することができるようになる。
【0096】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
【0097】
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで1つのものとしても良く、また、他のステップ、動作又は機能を追加しても良い。
【0098】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。