(57)【要約】【課題】CPUのキャッシュメモリがディスエーブルされている領域に対して、メインメモリのアクセス速度の低下を防止する。【解決手段】バスブリッジ回路３は、データバッファ１３と、データバッファ１３に記憶するデータのアドレスを一時保存するアドレスタグ１２と、第１のシステムバス２から供給される特定のリードアクセスを判別した場合に、アドレスタグ１２に保存したアドレスと、リードアクセスのアドレスを比較し、比較結果が不一致の場合には、第２のシステムバス５に対してリードアクセスを発生させ、SDRAM８から読み出したデータをデータバッファ１３に格納し、比較結果が一致の場合には、データバッファ１３に格納されたデータを、第１のシステムバス２に受け渡す制御を行う制御部１６とを備える。【選択図】  図２
2005338900.tif 000002
【特許請求の範囲】
【請求項１】
第１のシステムバスと第２のシステムバスとの間に設けられるバスブリッジ回路であって、
前記第１のシステムバスから供給される特定のリードアクセスを判別する判別手段と、
データバッファと、
前記データバッファに記憶するデータのアドレスを一時保存するアドレスタグと、
前記第１のシステムバスから供給される特定のリードアクセスを判別した場合に、前記アドレスタグに保存したアドレスと、前記リードアクセスのアドレスを比較し、比較結果が不一致の場合には、前記第２のシステムバスに対して前記リードアクセスを発生させ、前記メインメモリから読み出したデータを前記データバッファに格納し、前記比較結果が一致の場合には、前記第１のデータバッファに格納されたデータを、前記第１のシステムバスに受け渡す制御を行う制御部と、
を備えるバスブリッジ回路。
【請求項２】
請求項１記載のバスブリッジ回路であって、前記制御部は、
前記アドレスタグに保存したアドレスと前記リードアクセスのアドレスとを比較する比較器と、
前記比較器の比較結果が不一致の場合には、前記第２のシステムバスに対して前記リードアクセスを発生させ、前記メインメモリから読み出したデータを前記データバッファに格納し、前記比較結果が一致の場合には、前記データバッファに格納されたデータを前記第１のシステムバスに受け渡す制御を行う制御回路と、
を備えるバスブリッジ回路。
【請求項３】
請求項１記載のバスブリッジ回路であって、前記判別手段は、
前記メインメモリの特定範囲のアドレスに対するリードアクセスを前記特定のリードアクセスとして判別するバスブリッジ回路。
【請求項４】
請求項１記載のバスブリッジ回路であって、前記判別手段は、
前記第１のシステムバスから供給される制御情報により前記特定リードアクセスを判別するバスブリッジ回路。
【請求項５】
請求項１記載のバスブリッジ回路であって、前記制御部は、
前記第１のシステムバスのプロトコルを前記第２のシステムバスのプロトコルに変換する機能を有するバスブリッジ回路。
【請求項６】
請求項１記載のバスブリッジ回路であって、前記制御部は、
前記第１のシステムバスと前記第２のシステムバスとの動作周波数を整合させる機能を有するバスブリッジ回路。
【請求項７】
請求項１ないし６のいずれか一項記載のバスブリッジ回路であって、前記判別手段は、
前記第1のシステムバスに接続されたＣＰＵから前記第２のシステムバスに接続されたメインメモリへの命令フェッチアクセスを前記特定のリードアクセスとして判別するバスブリッジ回路。
【請求項８】
請求項７記載のバスブリッジ回路であって、
前記CPUからデータアクセスが発行される場合に、前記メインメモリに対するリードデータおよびライトデータを一時保存するバッファを備えるバスブリッジ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のシステムバスと第２のシステムバスとの間に設けられるバスブリッジ回路に関する。
【背景技術】
【０００２】
近年、携帯電話に搭載されるシステムLSIでは、リアルタイム性が要求されるアプリケーションの実現が要望されている。リアルタイム性が要求される主なアプリケーションとしては、動作処理などが代表的である。リアルタイム性が要求されるアプリケーションの場合には、ある特定の処理を一定期間内に終了させる必要があるので、キャッシュを用いたCPUにそのような処理を行わせる場合には、キャッシュのヒット率を正確に見積もるか、十分に余裕をもって見積もることが必要となる。しかしながら、キャッシュのヒット率を、ソフト開発が全く行われていないLSI設計開発の段階で正確に見積もることは難しく、また十分な容量のキャッシュを搭載することもコストや消費電力の問題から困難である。
【０００３】
そのような場合においての解決策として、高いリアルタイム性が要求されるプログラム領域についてのみ、CPUのキャッシュをイネーブルとし、それ以外のリアルタイム性がそれほど要求されないプログラム領域についてはCPUのキャッシュをディスエーブルすることにより、キャッシュがイネーブルにされるメインメモリの領域を限定し、その範囲内でのキャッシュヒット率を向上させる、という手段が考えられる。
【０００４】
この手段であれば、LSI設計終了後においても、ソフト設計による工夫である程度の柔軟な対応が可能である。しかしながら、このような手法であっても、以下のような課題が生じる。それは、組み込み機器向けのリアルタイムOSで動作するようなCPUは、キャッシュを搭載するとしても、バス制御部は、Linux等が搭載されるようなMMU（メモリ管理ユニット）が搭載されているCPUに比べ、貧弱な構成であることが多く、キャッシュがイネーブルされていれば、CPUからのアクセスは連続的（バースト転送）となるが、ディスエーブルされている領域に対しては、単発的（シングル転送）となってしまう場合が多い。
【０００５】
一方、メインメモリとしては、システムLSIの処理能力向上に伴い、それに見合った大容量のメモリが要望されている。しかしながら、システムLSI内部でそのような大容量のメモリを持つことは難しく、一般には外付けのSDRAM(Synchronous Dynamic Random Access Memory)が使用されることが多い。SDRAMはクロックに同期して動作するDRAMであり、いわゆるバーストアクセスによって高速アクセスを実現する。具体的には、コマンドを一回入力すれば、連続する複数のアドレスからデータを順次読み出すことができる。しかしながら、とびとびのアドレスに対してランダムにアクセスするような場合には、バースト転送を有効に使用することはできず、アクセス速度は大幅に低下してしまう特性を持っている。
【０００６】
これらのCPUの特性およびメインメモリの特性を考慮すると、上述のように高いリアルタイム性が要求されるプログラム領域のみCPUのキャッシュをイネーブルとし、それ以外のリアルタイム性がそれほど要求されないプログラム領域についてはCPUのキャッシュをディスエーブルすることにより、高いリアルタイム性が要求される領域に対してのキャッシュヒット率を向上させることができたとしても、それ以外の領域に対しては、キャッシュがディスエーブルされていることから、単発的(シングル転送)アクセスとなってしまい、SDRAMへのアクセス効率が大幅に低下してしまう、という副作用が生じることになる。
【０００７】
上記課題を解決する手段として、例えば、メモリ制御回路内部にバッファリング機能を設け、アクセス速度向上を図る手段がある（例えば、特許文献１参照）。またCPUを高性能化し、キャッシュの補助機能としてCPU内部にプリフェッチバッファを設ければ、システムバスに対しての連続転送を確保できる（例えば、特許文献２参照）。同様にCPUを高性能化するため、CPU外部に２次キャッシュを設ければ、システムバスに対しての連続転送を確保できる（例えば、特許文献３参照）。
【特許文献１】特開２００１−１７５５３４号公報
【特許文献２】特開平６−２８１８０号公報
【特許文献３】特開平１０−１８７５３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載された手段では、CPUの命令アクセス特有のシーケンシャルに変化するアドレスをうまく利用することができないという事情がある。また、特許文献２，３に記載された手段では、キャッシュをディスエーブルした場合の考慮はされていないし、CPUの高性能化に伴う面積増加のデメリットが大きいという事情がある。本発明はアクセス速度の低下を防止することができるバスブリッジ回路を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のバスブリッジ回路は、第１のシステムバスと第２のシステムバスとの間に設けられるバスブリッジ回路であって、前記第１のシステムバスから供給される特定のリードアクセスを判別する判別手段と、データバッファと、前記データバッファに記憶するデータのアドレスを一時保存するアドレスタグと、前記第１のシステムバスから供給される特定のリードアクセスを判別した場合に、前記アドレスタグに保存したアドレスと、前記リードアクセスのアドレスを比較し、比較結果が不一致の場合には、前記第２のシステムバスに対して前記リードアクセスを発生させ、前記メインメモリから読み出したデータを前記データバッファに格納し、前記比較結果が一致の場合には、前記第１のデータバッファに格納されたデータを、前記第１のシステムバスに受け渡す制御を行う制御部とを備える。
【００１０】
上記構成によれば、第１のシステムバスから供給される特定のリードアクセスを判別した場合に、アドレスタグに保存したアドレスとリードアクセスのアドレスとを比較し、比較結果が一致の場合には、データバッファに格納されたデータを第１のシステムバスを介して受け渡す制御を行うことにより、第2のシステムバスへのアクセスすることなくデータバッファに格納されたデータの受け渡しが可能となるためアクセス速度の低下を防止することができる。
【００１１】
本発明において、前記制御部は、前記アドレスタグに保存したアドレスと、前記リードアクセスのアドレスを比較する比較器と、前記比較器の比較結果が不一致の場合には、前記第２のシステムバスに対して前記リードアクセスを発生させ、前記メインメモリから読み出したデータを前記データバッファに格納し、前記比較結果が一致の場合には、前記第１のデータバッファに格納されたデータを前記第１のシステムバスに受け渡す制御を行う制御回路とを備える。
【００１２】
本発明において、前記判別手段は、前記メインメモリの特定範囲のアドレスに対するリードアクセスを前記特定のリードアクセスとして判別する。また、前記判別手段は、前記第１のシステムバスから供給される制御情報により前記特定リードアクセスを判別する。
【００１３】
本発明において、前記制御部は、前記第１のシステムバスのプロトコルを前記第２のシステムバスのプロトコルに変換する機能や、前記制御部は、前記第１のシステムバスと前記第２のシステムバスとの動作周波数を整合させる機能を有する。
【００１４】
本発明において、前記判別手段は、前記第1のシステムバスに接続されたＣＰＵから前記第２のシステムバスに接続されたメインメモリへの命令フェッチアクセスを前記特定のリードアクセスとして判別する。
【００１５】
本発明において、前記CPUからデータアクセスが発行される場合に、前記メインメモリに対するリードデータおよびライトデータを一時保存するバッファを備えることが好ましい。
【発明の効果】
【００１６】
本発明によれば、第2のシステムバスへのアクセスすることなくデータバッファに格納されたデータの受け渡しが可能となるためアクセス速度の低下を防止することができる。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明の実施の形態にかかるバスブリッジ回路３が適用されるバス構成システムの例を示す。第１のシステムバス２と第２のシステムバス５は、本実施形態のバスブリッジ回路３を介して接続されている。第１のシステムバス２には、キャッシュメモリ９を内蔵するCPU１およびブロックA４が接続されており、第２のシステムバス５には、SDRAMコントローラ６を介してメインメモリであるSDRAMメモリ８が接続され、またブロックB７が接続されている。このシステムにおいては、CPU１のプログラムは、SDRAM８に配置されており、CPU１は、SDRAM８から命令データをフェッチすることにより動作することになる。
【００１８】
ここで、第１のシステムバス２と第２のシステムバス５について説明すると、第１のシステムバス２と第２のシステムバス５は、その使用目的によって、バスプロトコルが相違している場合や、バス周波数が異なる場合がある。そのため、第１のシステムバス２と第２のシステムバス５との間のバスブリッジ回路３は、プロトコルの整合や、異なる動作周波数の整合をとるために、通常、ある程度のデータのバッファリングが必要となる。
【００１９】
一方、第１のシステムバス２に接続されるCPU１は、キャッシュメモリ９を内蔵しており、ある領域毎にキャッシュ可能、キャッシュ不可能を選択することができる。また内部で命令バスとデータバスが分離されており、命令、データそれぞれにキャッシュメモリ９を持っているが、双方のバスがまとめられた形で、第１のシステムバス２に接続されている。キャッシュ可能な領域に対しては、キャッシュが機能することにより、第１のシステムバス２に対してはバースト転送が実行されるが、キャッシュ不可能な領域に対しては、キャッシュは機能せず、第１のシステムバス２に対してはシングル転送になる。
【００２０】
図２は、本発明の実施の形態を説明するためのバスブリッジ回路３の概略構成を示すブロック図である。図１および図２に示すように、本実施形態のバスブリッジ回路３は、キャッシュメモリ９を有するCPU１が接続される第１のシステムバス２と、SDRAMコントローラ６を介してSDRAM８が接続される第２のシステムバス５との間に設けられ、第１のシステムバスから供給される特定のリードアクセスを判別する判別機能を備える第1バスインターフェース１０と、キャッシュメモリ９の１ライン分の容量を有するデータバッファ１３と、データバッファ１３に記憶するデータのアドレスを一時保存するアドレスタグ１２と、第１のシステムバス２から供給される特定のリードアクセスを判別した場合に、アドレスタグ１２に保存したアドレスと、リードアクセスのアドレスを比較し、比較結果が不一致の場合には、第２のシステムバス５に対してリードアクセスを発生させ、SDRAM８から読み出したデータをデータバッファ１３に格納し、比較結果が一致の場合には、データバッファ１３に格納されたデータを、第１のシステムバス２に受け渡す制御を行う制御部１６とを備える。
【００２１】
また、制御部１６は、アドレスタグ１２に保存したアドレスと、リードアクセスのアドレスを比較する比較器１１と、比較器１１の比較結果が不一致の場合には、第２のシステムバス５に対してリードアクセスを発生させ、SDRAM８から読み出したデータをデータバッファ１３に格納し、比較結果が一致の場合には、データバッファ１３に格納されたデータを、第１のシステムバス２に受け渡す制御を行う制御回路１４とを備える。
【００２２】
バスブリッジ回路３は、第１のシステムバス２に接続される第１バスインターフェース１０と、第２のシステムバス５に接続される第２バスインターフェース１５とによりバスのコントロールを行う。
【００２３】
第１バスインターフェース１０によって受け付けられたアドレスは、比較回路１１に送られ、アドレスタグ１２と比較される。比較回路１１の比較結果は、制御回路１４に伝達され、制御回路１４はその情報をもとに、第２バスインターフェース１５、第１バスインターフェース１０を操作し、データバッファ１３へデータを書き込み、あるいはデータの読み出しを行う。
【００２４】
次に、図１および図２を参照して、バスブリッジ回路３の動作について説明する。まずSDRAM８のキャッシュ不可能領域に対してCPU1がアクセスした場合、バスブリッジ回路３は、第１バスインターフェース１０により受け付け、そのアクセス種類がどのようなものであるかを判別する。
【００２５】
具体的には、ライトであるか、リードであるか、もしくは命令フェッチであるか、データアクセスであるかを、第１のシステムバス２上の制御情報により判別する。もし、第１のシステムバス２のプロトコルにそのような情報がないのであれば、アドレスを観測し、該当するアクセス領域であるかにより、内部のアドレスタグ１２等を動作させるかを判別する。
【００２６】
上記のように特定のアクセスを判別した後、所望のアクセスであること、具体的には、CPU1からの命令フェッチであることを判別した場合は、内部のアドレスタグ１２と第１のシステムバス２のアクセスアドレスを比較回路１１で比較する。
【００２７】
ここで命令フェッチであることを判別する理由は、命令フェッチのみであれば、アドレス変化がおおよそシーケンシャルであって、アドレスタグ１２と一致する確率が高いためである。もしデータアクセスと混在して扱ってしまった場合には、それぞれのアクセスアドレスが異なるため、毎回のようにアドレスタグ１２とアクセスアドレスは不一致となっていまい、効率が大幅に低下してしまうことが予想される。またデータアクセスの場合は、バスブリッジ回路３内部のデータバッファ１３とSDRAM８との間のコヒーレンシ（coherency）の問題を解決しなければならない。
【００２８】
アドレスの比較結果は、制御回路１４に伝達され、比較一致の場合と比較不一致の場合で異なる制御を行う。比較一致の場合は、第２バスインターフェース１５を起動することはなく、データバッファ１３内部のデータを第１バスインターフェース１０に受け渡す。このとき、データバッファ１３は、CPU1内部のキャッシュメモリ９の１ラインと同等のワード数を保持する。それにより、キャッシュ可能領域に対しても同様の動作を行うことが可能である。比較不一致の場合には、第２バスインターフェース１５を起動し、第２のシステムバス５においてリードアクセスを行う。第２のシステムバス５から読み出してきたデータは、データバッファ１３に格納され、その後、第１バスインターフェース１０にそのデータを受け渡す。
【００２９】
この時、第２のシステムバス５に対してのリードアクセスは、データバッファ１３の容量分のデータを一度に読み出してくるため、バースト転送となる。第１バスインターフェース１０からのアクセスがデータバッファ１３の容量に満たない要求、例えばシングル転送であっても、第２のシステムバス５に対しては、バースト転送となる。これにより、第２のシステムバス５にSDRAM８のようなバースト転送方式を採用するメモリが接続されている場合であっても、転送効率を低下させることなくアクセスすることが可能となる。
【００３０】
図３は、第１のシステムバス２および第２のシステムバス５のタイミングチャートである。図３に示すタイミングチャートを用いてより具体的な動作について説明する。まず、図３に示す各信号について説明すると、クロック(1)とクロック(2)は、それぞれ第１のシステムバス２と第２のシステムバス５のクロック信号であり、本実施形態においては、第１のシステムバス２に対して第２のシステムバス５の動作周波数は２倍となっている。
【００３１】
アドレス(1)およびアドレス(2)は、アクセス対象のアドレスを表示している。ライト(1)およびライト(2)は、“Ｈ”の時にライトであることを示す信号である。また、転送タイプ(1)、転送タイプ(2)は、そのアクセスが、シングル転送であるか、バースト転送であるか、バースト長は幾つかを示す信号である。
【００３２】
ウエイト（１）、ウエイト（２）は、スレーブ側から出力する信号で“Ｌ”の時、マスタ側はウエイトする必要がある。データ（１）、データ（２）は、リードデータであってアドレスAに対してのリードデータをD(A)として表記している。また、アドレスタグ(1)は、バスブリッジ回路３内部のアドレスタグ１２の値である。
【００３３】
次に図３における動作について時系列にクロックサイクル単位で説明する。１サイクル目は、第１のシステムバス２においてアドレスAに対するリードアクセスが開始されている。バスブリッジ回路３内部においては、まずこのアクセスが特定のアクセスであるか、つまり命令アクセスであるかを判断する。
【００３４】
この判断手法については、タイミングチャートには記載していないが別途、制御情報信号をもらっているのであれば、その制御信号により判断し、もらっていないのであれば、アドレスAの値が、特定領域であるか否かによって判断する。
【００３５】
この特定領域については、アドレス空間に写像領域があるのであれば、メモリの同一番地について２種類以上のアドレスが割り振られているのであるから、そのどちらを用いるかによって、このバスブリッジ回路３の特定アクセス判別機能をソフトで操作することができる。
【００３６】
また特定アクセスであることが認定できた場合は、内部のアドレスタグ(1)と現在アクセスしようとしているアドレス(1)とを比較する。今回の場合は、アドレスタグ(1)にはBアドレスが保持されているので不一致となる。
【００３７】
ただし、ここでアドレスタグは、アドレス(1)のビット数に対して、バスブリッジ回路３に内蔵されているデータバッファ１３の容量分だけ少ないことに注意する。つまり、データバッファ１３の容量が例えば8ワード（１ワード=４バイト）である場合には、アドレス(1)の下位5ビット分だけ少ないビット数がアドレスタグ(1)のビット数となる。
【００３８】
2サイクル目では、アドレス比較結果が不一致であったので、データバッファ１３の入れ替えを行うため、第１のシステムバス２については、バスブリッジ回路３からウエイト(1)を“Ｌ”にすることで、待機状態とする一方で、第２のシステムバス５については、データバッファ１３の容量分のバースト転送を開始する。
【００３９】
ここでは、データバッファ１３の容量を８ワードとしているので、転送タイプ（２）は８バーストとしている。この点、第１のシステムバス２へのアクセスの転送タイプ（１）がシングルであったにもかかわらず、第２のシステムバス５のアクセスは、バースト転送となっており、SDRAM８を効率的に使用できる転送形態となっている。
【００４０】
3サイクル目以降は、第２のシステムバス５のリード転送が終了するまで、第１のシステムバス２は待機状態となっている。
【００４１】
７サイクル目において、第２のシステムバス５のリード転送が終了し、第１のシステムバス２へは、データバッファ１３からデータが出力されている。ここでデータバッファ１３は、８ワードの容量があり、どのワードを取り出すかが問題となるが、それは、アドレス(1)に依存している。
【００４２】
つまり前サイクルのアドレスAの下位５ビットにより、データバッファ１３のどこのデータを取り出すかを決定しており、本サイクルの場合は、データバッファ１３の最初のデータD(A)が取り出されている。
【００４３】
また７サイクル目において注目が必要なのは、アドレスA+4に対してのアクセスが第１のシステムバス２に対して開始されており、１サイクル目と同様に特定アクセスであることが判別され、アドレスタグ（１）と比較されているが、この場合、１サイクル目と異なり、比較結果が一致となっている点である。
【００４４】
このように一致の場合は、すぐ次のサイクルでデータバッファ１３に蓄積されているD(A+4)のデータをデータ(1)に出力することができる。また第２のシステムバス５へのアクセスは開始されない。
【００４５】
８サイクル目以降においても明らかになるように、後続するアクセスはすべて内部のアドレスタグ(1)と一致するため（下位５ビットは比較されない点に注意）、同様に第２のシステムバス５へのアクセスは発生していない。
【００４６】
このように、第２のシステムバス５へのアクセスは、必ずバースト転送を形成し、またアドレスタグ１２により比較を行うことで、第２のシステムバス５に無駄なアクセスを発生させることがなくCPU１の性能の向上を図ることができる。
【００４７】
このように本実施形態のバスブリッジ回路３によれば、第１のシステムバス２から供給される特定のリードアクセスを判別した場合に、アドレスタグ１２に保存したアドレスと、リードアクセスのアドレスを比較し、比較結果が一致の場合には、データバッファ１３に格納されたデータを、第１のシステムバス２を介してCPU１に受け渡す制御を行うので、CPU１のキャッシュメモリ９がディスエーブルされている領域に対して、SDRAM８のアクセス速度の低下を防止することができる。
【００４８】
また、本実施形態のバスブリッジ回路３によれば、特定のリードアクセスを、SDRAM８の特定範囲のアドレスに対するリードアクセスであるかどうかにより判別するので、CPU１のキャッシュメモリ９がディスエーブルされている領域を容易に判別することができ、SDRAM８のアクセス速度の低下を防止することができる。
【００４９】
また、本実施形態のバスブリッジ回路３によれば、制御部１６は、第１のシステムバス２から供給される制御情報により、特定リードアクセスを判別するので、CPU１のキャッシュメモリ９がディスエーブルされている領域を容易に判別することができ、SDRAM８のアクセス速度の低下を防止することができる。
【産業上の利用可能性】
【００５０】
本発明のバスブリッジ回路は、第2のシステムバスへのアクセスすることなくデータバッファに格納されたデータの受け渡しが可能となるためアクセス速度の低下を防止することができるという効果を有し、第１のシステムバスと第２のシステムバスとの間に設けられるバスブリッジ回路等として有用である。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施の形態のバスブリッジ回路が適用されるバス構成を示すシステム構成図。
【図２】本発明の実施の形態のバスブリッジ回路の概略構成を示すブロック図。
【図３】第１のシステムバスおよび第２のシステムバスのアクセスタイミングを示すタイミングチャート。
【符号の説明】
【００５２】
１  CPU
２  第１のシステムバス
３  バスブリッジ回路
４  ブロックA
５  第２のシステムバス
６  SDRAMコントローラ
７  ブロックB
８  SDRAM
９  キャッシュメモリ
１０  第１バスインターフェース
１１  比較回路
１２  アドレスタグ
１３  データバッファ
１４  制御回路
１５  第２バスインターフェース
１６  制御部
【図１】
2005338900.tif 000003
【図２】
2005338900.tif 000004
【図３】
2005338900.tif 000005