(57)【要約】【課題】ＣＭＯＳドライバなどに駆動される同期式バスでは、多数の信号が同時に変化すると大きな電流が流れ電源電圧が変動し、誤動作の原因となることがある。【解決手段】同期式バスにおいて、多数の信号を同時に変化させる場合にはダミーのサイクルを挿入し信号の変化を複数サイクルに分けて行うことで誤動作を防ぐ。同時に変化する信号が少ない場合には、ダミーのサイクルを挿入しないので、ダミーのサイクルが挿入される確立が低い場合には、少ない性能低下で安定性を向上させることができる。【選択図】  図１
2004318450.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも二本以上の信号から構成され、内部クロックを用いて生成したバスクロックに同期してデータ転送を行う同期式のバスにおいて、二つの連続したバスクロックサイクル間の遷移により変化するバス信号の本数があらかじめ定義しておいた閾値を超えることが判明した場合には、一部のバス信号を変化させるタイミングをずらす手段を設けることで、一回の内部クロックサイクル遷移時に、前記の閾値を超える本数のバス信号が同時に変化しないように制御することを特徴としたバス制御装置。
【請求項２】
少なくとも二本以上の信号から構成され、内部クロックを用いて生成したバスクロックに同期してデータ転送を行う同期式のバスにおいて、二つの連続したバスクロックサイクル間の遷移により変化するバス信号の本数があらかじめ定義しておいた閾値を超えることが判明した場合には、バスクロックの周期を長くすることを特徴としたバス制御装置。
【請求項３】
少なくとも二本以上の信号から構成され、内部クロックを用いて生成したバスクロックに同期してデータ転送を行う同期式のバスにおいて、二つの連続したバスクロックサイクル間の遷移により変化するバス信号の本数があらかじめ定義しておいた閾値を超えることが判明した場合には、一部のバス信号のみが変化した状態でバス信号を出力する内部クロックサイクルを挿入し、前記の閾値を超える本数のバス信号が同時に変化しないように制御することを特徴としたバス制御装置。
【請求項４】
バスに転送中のデータが有効であることを示す有効信号を追加し、一部のバス信号のみが変化した状態でバス信号を出力する内部クロックサイクル中は、前記有効信号の値をデータが無効であることを示した値に設定することで、データの受信側が誤ったデータを受信しないようにした請求項３記載のバス制御装置。
【請求項５】
複数の閾値を持ち、どの閾値まで超えたかにより、バス信号を変化させるためのサイクルのずらし方を選択することを特徴とした請求項１記載のバス制御装置。
【請求項６】
複数の閾値を持ち、どの閾値まで超えたかにより、クロック周期の変更量を選択可能であることを特徴とした請求項２記載のバス制御装置。
【請求項７】
前記閾値の値を、変更可能としたことを特徴とした請求項１から６記載のバス制御装置。
【請求項８】
請求項１から７記載のバス制御装置を内蔵したＬＳＩ。
【請求項９】
前記のバスを介して前記のバス制御装置に接続されるデバイスは同期式のメモリであることを特徴とした請求項１から７記載のバス制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バスを使用した情報処理装置に関する。
【０００２】
【従来の技術】
マルチメディアの普及に伴い、動画など多量のデータを処理するために情報処理装置のデータ転送性能を強化する必要性が高まっている。データ転送性能を上げるためには、データバス幅の拡張やデータバス動作周波数の向上が有効である。
【０００３】
現在一般に使用されている論理回路はＣＭＯＳと呼ばれる方式を用いている。これはＮ型のＭＯＳトランジスタとＰ型のＭＯＳトランジスタを使用するもので、定常状態ではほとんど電流が流れず、出力が変化するときにのみ電流が流れるという特徴をもつ。このため、データバスに使用されている複数のＣＭＯＳ回路の出力が同時に変化すると大きな電流が流れ、電源電圧が不安定となりシステムを誤動作させる要因となる。このため、システムを設計する際には、最悪ケースを考慮して、すべての信号が同時に変化しても誤動作しないように、電源系の設計を行う必要がある。
【０００４】
本問題を解決するために、特開平１０−１１１７４３号公報に記載の「集積回路」では、データバスの各信号に異なる遅延を持った遅延素子を挿入することで、同時変化の発生の抑制を図っている。
【０００５】
【特許文献１】
特開平１０−１１１７４３号公報
【０００６】
【発明が解決しようとする課題】
しかし、特開平１０−１１１７４３号公報に記載の手法では、遅延素子を挿入する必要があるため、クロックに同期してデータ転送を行う同期式のバスでは、遅延量が最大となっている信号をもとに動作周波数を決定する必要があり、動作周波数が低下してしまうという問題が発生する。このクロックの低下はデータの内容にかかわらず常に発生するため、クロック周波数の低下に比例して単純にバスのデータ転送性能が低下することになる。また、クロック周期よりも小さな遅延量を持つ遅延素子は非同期回路で構成することになるので、電源電圧や温度の変動により遅延量が変化してしまい、動作条件によらず期待通りの動作をする回路を作成するには困難が伴い、正しく動作させようとマージンを持たせると動作周波数が低下してしまう。
【０００７】
【課題を解決するための手段】
本発明では、バスを構成する信号のうちある閾値よりも多い本数の信号が連続したバスクロックサイクル間で変化する際にのみバスインターフェイス部の動作を変更することでこの問題を解決する。すなわち、閾値よりも多い信号が同時に変化する場合には、一部のバス上の信号を変化させるタイミングをずらし、さらにこの場合のみバスに出力するクロックの周期を一時的に長くすることにより同時に変化する信号の本数を抑える。
【０００８】
閾値が十分に大きければ、それよりも多い本数の信号が一度に変化する可能性は非常に小さくなる。たとえば３２ビットバスにおいて２８ビット以上同時に変化する確率は、（３２＋３２×３１＋３２×３１×３０＋３２×３１×３０×２９）÷２＾３２＝０．０４％程度である。しかし通常の設計では、この０．０４％の場合も正しく動作するように、長めのクロック周期を設定したり、電源系の強化を行ったりする必要がある。
【０００９】
本発明の方式では、この０．０４％の場合にのみクロック周期を長くする。たとえば、この場合だけクロック周期を２倍にしたとすると、平均周期は１．０００４とごくわずかに増えるに過ぎず、性能の低下はほとんどないといえる。しかしな、この場合には同時に変化するバス信号の最大本数は２８本と少なくなるため、出力ドライバ部の電源容量の設計値を、本発明を使用しない場合よりも１２．５％も低く抑えることが可能となる。しかも、これはランダムなデータ列を仮定した場合であるが、自然画の画像データなどでは、データ間の相関が高いので、性能低下はもっと低くなる。
【００１０】
【発明の実施の形態】
図１〜２を用いて本発明の第一の実施例を説明する。図１は本発明のバスを用いたデータ転送のタイムチャートの例、図２は本発明を実現するための回路構成の例である。図２において１０と１１はバスに出力するデータを保持するためのフリップフロップである。本実施例ではデータバスの幅は３２ビットとしており、そのうち上位１６ビットを１６個のフリップフロップ１０に下位１６ビットを１６個のフリップフロップ１１に格納する。実際にはデータ幅は任意であり、バスの分割数も２に限定されるものではない。また分割の方法も上位、下位の他に偶数、奇数などいろいろな方法が可能であり、しかも必ずしもそれぞれが同じ数になるように分割する必要も無い。
【００１１】
１３は同時変化検出回路であり、本実施例では二つの３２ビットの入力を持ち、それぞれに信号１００１と１００４、１００５（１００４が上位１６ビット、１００５が下位１６ビット）が接続されている。両者の間で同じビット位置にある信号同士を比較し、異なるビットの数があらかじめ定義しておいた閾値（ここでは閾値＝１７を想定）以上の時に出力１００２を１、閾値未満の時に０とする回路である。たとえば、信号１００１の最下位ビットであるビット０は信号１００５の最下位ビットであるビット０と比較され、信号１００４の最下位ビットであるビット０は信号の１００１の下から１７ビット目のビット１７と、最上位ビットは信号１００１の最上ビットであるビット３１と比較される。本回路の詳細については後述する。
【００１２】
１４はフリップフロップ１１に対する書き込みクロック１００３を作成する書き込み制御回路である。フリップフロップ１０はクロック１０００の立ち上がりエッジで、フリップフロップ１１は書き込みクロック１００３の立ち上がりでそれぞれの入力データを取り込み内部に保持する。フリップフロップ１０が保持する値はデータ線１００４に出力され、フリップフロップ１１が保持する値はデータ線１００５に出力される。
【００１３】
１２は３２ビットのトライステートバッファであり、信号１０１０を１にすると信号１００４および１００５をデータバス１００７へ出力することができる。バス１００７のデータをバス入力処理回路に取り込む際には、信号１０１０を０にすることでトライステートバッファ１２の出力をハイインピーダンス状態にする。
【００１４】
マスク回路１５は、書き込みクロック１００３の値にもとづいてバスクロック１００６をマスクする回路である。
【００１５】
図１のタイムチャートにおいて横軸は時間である。内部クロック１０００は一定の周期で発振しているクロックである。１００１はバス出力データ生成回路が生成したバス１００７に出力すべきデータ列である。この例ではＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ・・・というデータをバス１００７へ出力することを想定している。同時変化検出回路１３は、現在の入力データ１００１の値がその直前のサイクルにおける入力データ１００１から変化する際に反転したビット数がある閾値以上の場合に１となる。この実施例では閾値＝１７である。ＡとＢの間では反転したビット数は１６以下であることを想定しており、同時変化検出信号１００２は０であるが、ＤとＥの間では反転するビット数が１７以上であることを想定しているため、このときの同時変化検出信号１００２は１となっている。
【００１６】
同時変化検出回路１３は、図３に示すような回路で実現可能である。この回路において１３１はＸＯＲゲートであり、二つの入力信号の値が異なるときに出力２０００は１となり、同じ時に０となる。本実施例では、ＸＯＲゲート１３１は３２個使用され、各ビットごとに入力信号の一致検証を行う。一致検証の結果は３２入力の加算器１３２で加算される。加算器１３３の出力２１００は入力値によって変化し、０から３２の間の値をとる。この出力２１００の値が本来同時に変化するバス信号の本数となる。加算器の出力２１００とあらかじめ決められた閾値２２００を比較器１３３で比較することで同時変化検出回路１３の出力１００２を得る。比較器１３３は入力２１００と入力２２００を比較して、両者が等しいか、入力２１００が大きいときに出力１００２を１にする回路である。また閾値２２００は本実施例では１７となる。
【００１７】
同時変化検出信号１００２が１となると、書き込み制御回路１４により、次のサイクルで書き込み信号１００３がマスクされることになる。書き込み制御回路はラッチやＡＮＤゲートの組み合わせにより実現することが可能であるが、一般的な回路構成なので、ここでは詳細説明を省略する。
【００１８】
入力データ１００１を、クロック１０００および１００３によりフリップフロップ１０、１１へ書き込むことでデータ１００４、１００５は図１のように変化することになる。これらを連結したバスデータ１００７では、上位データ１００４がＥ、下位データ１００５がＤというように、上位と下位が不整合になる期間が生じている。この期間のデータをバスに接続されている他のデバイスが誤って取り込まないようにするために、マスク回路１５によりバスクロックをマスクする。マスク回路１５も一般的な回路で実現できるため詳細説明は省略する。
【００１９】
バス出力データ生成回路２０は図４に示す回路で実現することが可能である。この図において２００はバスに出力するデータを一時的に保持しておくためのＦＩＦＯであり、２０１はＦＩＦＯ２００への書き込みのための制御回路、２０２はＦＩＦＯ２００の読み出しのための制御回路である。２１０はＦＩＦＯ２００へ書き込むデータを転送するためのバスであり、１００１はＦＩＦＯ２００から読み出したデータを転送するためのバスである。１０００は内部クロック信号であり、クロック周波数の設定を変更しない限りは一定の周期で変化する。２１１はＦＩＦＯ書き込み制御回路に対する制御信号であり、書き込み要求信号などが含まれる。２１５はＦＩＦＯ２００のステータスを示す信号で、ＦＩＦＯ２００がいっぱいになった場合に、ＦＩＦＯ２００への書き込みができないことを通知する場合などに用いられる。２１４はＦＩＦＯ書き込み制御回路２０１とＦＩＦＯ２００読み出し制御回路２０２との間で状態の通信を行うための制御信号群であり、これによりＦＩＦＯ２００に有効なデータが無いにもかかわらず、データを読み出すことを抑制したり、ＦＩＦＯ２００に空きが無い時にＦＩＦＯ２００への書き込みを抑制するなどの処理を実現することが可能となる。２１２はＦＩＦＯ２００に対する書き込み制御信号であり、ＦＩＦＯ２００への書き込みアドレス、書き込み要求信号などから構成される。２１３はＦＩＦＯ２００に対する読み出し制御信号であり、ＦＩＦＯ２０００からの読み出しアドレス、読み出し要求信号などから構成されている。
【００２０】
ＦＩＦＯ読み出し回路２０２は、書き込み制御回路１４から書き込みクロック１００３を受け取り、これにより、ＦＩＦＯ読み出しアドレスの更新を行う。すなわち、フリップフロップ１１への書き込みを抑制した場合には、ＦＩＦＯ読み出しアドレスの更新は行われない。この情報は、信号２１６を経由してバス制御回路へも送られ、バス制御回路は送られてきた情報の内容により、バス制御回路内部のステートマシンの更新を一時停止するなどの処理を行う。バス制御回路は、上記の一時停止機能が入っている他は、一般に使用されているバス制御回路と同様のものを使用することが可能であるため詳細説明は省略する。
【００２１】
このように、データバス１００７に出力する信号の同時変化の個数があらかじめ決めてある閾値よりも大きい場合のみ、データ転送に使用するサイクル数を増やすことで、同時変化の個数が少ない場合の高速なデータ転送を実現しつつ、同時変化が多い場合の安定したデータ転送を実現することが可能である。また閾値については、専用のレジスタを設けて、設定値を可変とすることで、電源電圧やクロック周波数の変更などに柔軟に対応させることが可能となる。たとえば、ＡＣ駆動時のように電源容量に余裕がある場合には閾値を高めに設定することで性能を向上させ、バッテリー駆動時のように電源容量に余裕がない場合には、閾値を低く設定して安定性を増すといったことが可能である。
【００２２】
本発明の第二の実施例を、図５、６を用いて説明する。図５は本発明のバス方式を用いたデータ転送のタイムチャートの例、図６は本発明を実現するための回路構成の例である。本実施例では、バスクロック１００６をマスクする代わりに、有効信号１００８を用いてデータバス上のデータ１００７に有効なデータが載っているかを通知する。有効信号１００８は１であるときはバスデータ１００７に有効な値が載っており、０であるときは無効な値が載っていることを示す１ビットの信号である。本実施例では上位データ１００４と下位データ１００５に不整合が生じている期間は、有効信号を０にすることで、バスに接続されているデバイスが有効でないデータを取り込んでしまうことを防ぐ。
【００２３】
この方式では、書き込みクロック１００３とクロック１０００を用いて、有効信号生成回路１６により、有効信号１００８を作成する。この有効信号１００８は図５に示されるように、書き込み信号１００３がマスクされたサイクル期間だけ０となるように生成される。
【００２４】
本実施例の方式は第一の実施例の方式と比較すると、有効信号１００８を追加する必要があるため、信号の本数という点では不利となる。しかしながら、バスクロック１００６を一定の周期で出し続けることができるため、バスクロック受信側でＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）のような回路を使用している場合には、クロックの安定供給という点で有利となる。
【００２５】
次に本発明の方式を、プロセッサと同期式メモリの間のインターフェイスに使用した例を図７を用いて説明する。この図において、１ａは第一の実施例のバス制御装置を内蔵したプロセッサ、２はＳＤＲＡＭのようにクロックに同期してデータ転送を行う同期式メモリである。１００７はプロセッサ１ａと同期式メモリ２の間でデータ転送を行うためのデータバス、１１００はプロセッサ１ａが同期式メモリ２をアクセスする際に使用するアドレスバス、１１０１はアドレスストローブ信号などの制御信号を集めた制御信号バス、１００６はバスクロックである。
【００２６】
図８は、本構成においてプロセッサ１ａからメモリ２に対してバーストライトを行った場合のタイムチャートの例である。この例では、アドレス３００１で指定されるアドレスを先頭に３２ビット幅の４つのデータ３０１０、３０１１、３０１３、３０１４を同期式メモリ２へ書き込むアクセスを実行する。この例では、データ３０１０から３０１１およびデータ３０１３から３０１４の遷移では変化するビット数はあらかじめ設定されている閾値よりも小さな値となっているが、データ３０１１から３０１３への遷移では、変化するビット数は閾値よりも大きな値となっているケースを想定している。
【００２７】
このライトアクセスを行う際にはまずサイクルカウント３０００＝２であるサイクルに、プロセッサ１ａがアドレスバス１１００に対して書き込み領域の先頭アドレスであるアドレス３００１を出力し、同時に制御信号バス１１０１に書き込みコマンドやアドレスストローブ信号、書き込みサイズなどの情報３００２を出力する。その後、サイクルカウント３０００＝４から１サイクルに１データずつデータバス１００７へ書き込みデータを送り出す。ただし、遷移するビット数が閾値を超えるデータ３０１１と３０１３の間に、無効なデータ３０１２を送出するサイクルが挿入している。さらに同期式メモリ２が、誤って無効なデータ３０１２を取り込まないように、サイクルカウント３０００＝７においてバスクロック１００６をマスクしている。
【００２８】
同期式メモリ２は、データフェーズにおいてクロック１００６の立ち上がりエッジで、データバス１００７上のデータを取り込んでいく。サイクルカウント３０００＝７のサイクルでは、クロック１００６は立ち上がらないため、無効なデータ３０１２は同期式メモリに取り込まれること無く、正しいデータのみを取り込むことができる。本説明では、説明を簡略するために簡単なデータ転送プロトコルを例に説明したが、一般に使用されているＳＤＲＡＭなどのプロトコルでも本発明の方法を使用することが可能である。しかも本実施例の方式は、プロセッサ側がクロックをマスクするだけで実現されているので、同期式メモリ側の変更は不要であり一般的な同期式メモリを使用することが可能である。
【００２９】
【発明の効果】
本発明を使用することで、バスの信号が同時に変化する場合でも動作の安定性を確保できるとともに、ほとんどのケースで高速動作との両立を実現することが可能となる。
【図面の簡単な説明】
【図１】第一の実施例におけるタイムチャート。
【図２】第一の実施例におけるシステム構成例。
【図３】同時変化検出回路の構成例。
【図４】バス出力データ生成回路の構成例。
【図５】第二の実施例におけるタイムチャート。
【図６】第二の実施例におけるシステム構成例。
【図７】同期式メモリを接続した場合の構成例。
【図８】同期式メモリを接続した場合のタイムチャート。
【符号の説明】
１…バス制御装置、１ａ…本発明の方式を用いたプロセッサ、２…同期式メモリ、１０…上位データ格納用フリップフロップ、１１…下位データ格納用フリップフロップ、１２…トライステートバッファ、１３…同時変化検出回路、１４…書き込み制御回路、１５…マスク回路、１６…有効信号生成回路、２０…バス出力データ生成回路、１３１…ＸＯＲゲート、１３２…加算器、１３３…比較器、２００…ＦＩＦＯ、２０１…ＦＩＦＯ書き込み制御回路、２０２…ＦＩＦＯ読み出し制御回路、２１０…ＦＩＦＯ書き込みデータ、２１１…ＦＩＦＯ書き込み要求信号群、２１２…ＦＩＦＯ書き込み制御信号群、２１３…ＦＩＦＯ読み出し制御信号群、２１４…回路間連絡信号、２１５…ＦＩＦＯステータス信号、２１６…バス制御回路連絡信号、１０００…内部クロック、１００１…入力データ、１００２…同時変化検出信号、１００３…書き込み信号、１００４…上位データ、１００５…下位データ、１００６…バスクロック、１００７…バスデータ、１００８…有効信号、１７００…不整合なデータ、１０１０…トライステートバッファ制御信号、１１００…アドレスバス、１１０１…制御信号バス、２０００…ＸＯＲ出力信号、２１００…加算器出力信号、２２００…閾値、３０００…サイクルカウント。
【図１】
2004318450.tif 000003
【図２】
2004318450.tif 000004
【図３】
2004318450.tif 000005
【図４】
2004318450.tif 000006
【図５】
2004318450.tif 000007
【図６】
2004318450.tif 000008
【図７】
2004318450.tif 000009
【図８】
2004318450.tif 000010