(57)【要約】【課題】調停回路を用いずに、バスクロックを適切に選択することができる。【解決手段】ホストインターフェースがバスに接続されているデータ通信装置において、前記バスに転送されるデータのデータ量を検出する検出部と、前記検出されたデータ量に基づいて、前記バスのクロック数を変更する変更部と、を有するデータ通信装置を提供する。また、前記バスに接続されているバッファメモリを有し、複数の前記ホストインターフェースが前記バスに接続され、前記検出部は、前記ホストインターフェース毎のデータ量を検出し、該検出された前記ホストインターフェース毎のデータ量に基づいて、前記ホストインターフェース毎の前記バッファメモリのサイズの割り当てを行う割り当て部を有してもよい。【選択図】図１
2011199461.tif 000002
【特許請求の範囲】
【請求項１】
ホストインターフェースがバスに接続されているデータ通信装置において、
前記バスに転送されるデータのデータ量を検出する検出部と、
前記検出されたデータ量に基づいて、前記バスのクロック数を変更する変更部と、を有するデータ通信装置。
【請求項２】
前記バスに接続されているバッファメモリを有し、
複数の前記ホストインターフェースが前記バスに接続され、
前記検出部は、前記ホストインターフェース毎のデータ量を検出し、該検出された前記ホストインターフェース毎のデータ量に基づいて、前記ホストインターフェース毎の前記バッファメモリのサイズの割り当てを行う割り当て部を有することを特徴とする請求項１記載のデータ通信装置。
【請求項３】
ＣＰＵを有し、
前記変更部は、前記検出されたデータ量に基づいて、前記ＣＰＵのクロック数を変更させることを特徴とする請求項１または２記載のデータ通信装置。
【請求項４】
複数のホストインターフェースがバスに接続されているデータ通信装置において、
前記バスに接続されているバッファメモリと、
前記ホストインターフェース毎のデータ量または、前記ホストインターフェース毎のデータ量の比率を検出する検出部と、
前記検出された、前記ホストインターフェース毎のデータ量または前記ホストインターフェース毎のデータ量の比率に基づいて、前記バッファメモリのサイズの割り当てを行う割り当て部を有することを特徴とするデータ通信装置。
【請求項５】
ＣＰＵを有し、
前記検出されたデータ量に基づいて、前記ＣＰＵのクロック数を変更させる変更部を有することを特徴とする請求項４記載のデータ通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
データを送受信するデータ通信装置に関する。
【背景技術】
【０００２】
組み込み機器等に利用されるＣＰＵ（Central Processing Unit）を搭載したシステムオンチップ（ＳｏＣ）には、例えばイーサネット（登録商標）、ＰＣＩ−ＥＸＰＲＥＳＳ、ＵＳＢ、ＳＤＩＯなどのホストインターフェースが複数実装されている。また、これらのホストインターフェースは常に送受信を行っているわけでも無いため、送受信用のバッファメモリとしてバス上にメモリを共有して使用し、メモリの削減と使用効率をあげているのが一般的である。
【０００３】
バス上のバスクロックは、ホストインターフェースが転送に要する時間とバッファメモリ上のデータをＣＰＵなどが処理するのに要する時間に応じて決める必要がある。即ち、ホストインターフェースからデータを送信する場合、バッファメモリにＣＰＵなどが送信データを書き込む時間とホストインターフェース機能ブロックがバッファメモリからデータを読み出してホストへ送信する時間に合わせる必要がある。
【０００４】
ホストインターフェースの転送レートが小さい場合は、バスクロックは遅くなり、転送レートが高い場合は、バスクロックは速くなる。ここで、必要以上に遅いバスクロックを使用すると、バス上の転送処理が追いつかなくなりホストインターフェースの転送性能（スループット）が落ちてしまう。また、必要以上に速いバスクロックを使用すると転送性能は落ちないものの、消費電力が大きくなってしまう。
【０００５】
そこで、動作しているホストインターフェース機能ブロックに応じてバスクロックを変更する技術が既に知られている（例えば、特許文献１参照）。
【０００６】
この技術では、バス上に調停回路を設け、ホストインターフェース機能ブロックが動作する際にバスを使用する要求を調停回路に送る。調停回路は優先順位等を考慮してホストインターフェース機能ブロックにバスの使用を許可する。その際に使用を許可したホストインターフェース機能ブロックに応じたクロック数に変更する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１記載の技術ではバスを使用するホストインターフェース機能ブロック自身がバスを使用する要求を出す必要がある。ＳｏＣの様にＣＰＵやＤＭＡコントローラなどを含めてバス上に多くの回路が存在する場合、各回路からの要求信号を調停するには調停回路自体が大規模なものになってしまい、かつ動作速度も遅くなる。
【０００８】
そこで、本発明は、調停回路を用いずに、バスクロックを適切に選択するデータ通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記目的を達成するため、ホストインターフェースがバスに接続されているデータ通信装置において、前記バスに転送されるデータのデータ量を検出する検出部と、前記検出されたデータ量に基づいて、前記バスのクロック数を変更する変更部と、を有するデータ通信装置を提供する。
【発明の効果】
【００１０】
本発明のデータ通信装置であれば、調停回路を用いずに、バスクロックを適切に選択することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施例のデータ通信装置の機能構成例を示した図。
【図２】ＩＰヘッダのフォーマットの一例を示した図。
【図３】ＴＬＰヘッダのフォーマットの一例を示した図。
【図４】クロック生成部の機能構成例を示した図。
【図５】変更部が保持しているテーブル表の一例を示した図。
【図６】バスクロックの選択を模式的に示した図。
【図７】検出部がホストインターフェース毎にデータ量を検出する場合の図。
【図８】バッファメモリの割り当てについて模式的に示した図。
【発明を実施するための形態】
【００１２】
［実施形態１］
本実施例のデータ通信装置は、例えば、１以上のホストインターフェース（以下では、「ホストインターフェース群２５」という場合もある。）を搭載するシステムオンチップであるとして説明する。図１に実施形態１のデータ通信装置の機能構成例を示す。図１の例では、バス１０に、ＣＰＵ１２、ＤＭＡコントローラ１４、バッファメモリ１６、パケット監視部２１、クロック生成部２６、ホストインターフェース群２５とが接続されている。この例では、ホストインターフェース群２５は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ Ｂｕｓ）２０、イーサネット（登録商標）２２、ＰＣＩｅ（ＰＣＩ Ｅｘｐｒｅｓｓ）２４であるが、他のホストインターフェースでもよい。以下の説明では、ホストインターフェース群のうちの１つを単に、ホストインターフェース２５という場合もある。また、パケット監視部２１は、割り当て部２３、検出部１８、変更部１９とで構成されている。また、「データ」とは、「パケット」や「フレーム」などを意味するが、以下の説明では、「データ」を「パケット」であるとして説明する。また、バス１０のクロックをバスクロックという場合もある。
【００１３】
ＣＰＵ１２は、各装置の制御やデータの計算・加工を行なうものである。
【００１４】
ＤＭＡコントローラ１４とは、データ通信装置上にある各種の装置やメモリがＣＰＵ１２を介すことなくデータ転送を行なうＤＭＡ転送において、通信の制御を行なうものである専用ＬＳＩである。
【００１５】
クロック生成部２６は、バス１０のバスクロックを生成する。クロック生成部２６の詳細については、後述する。
【００１６】
ホストインターフェース群２５のうちの１つからパケット（以下、「送信用パケット」という。）が送信される場合には、ＣＰＵ１２またはＤＭＡコントローラ１４で該送信用パケットが作成される。図１の例では、ＣＰＵ１２およびＤＭＡコントローラ１４の両方を記載しているが、どちらか片方を備えておけばよい。
【００１７】
バッファメモリ１６は、ホストインターフェース群２５が、データの送受信の際に使用されるものである。以下、具体的に説明する。
【００１８】
ＣＰＵ１２または、ＤＭＡコントローラ１４により作成された送信パケットは、バッファメモリ１６に一旦、蓄積される。そして、送信用パケットが送信準備されると、ホストインターフェース群２５は、バッファメモリ１６から、送信用パケットを読み出して、外部機器に送信する。
【００１９】
また、外部機器からパケット（以下、「受信用パケット」という。）を受信する場合には、ホストインターフェース２５で受信したデータは一端、バッファメモリ１６に蓄積される。その後、ＣＰＵ１２やＤＭＡコントローラ１４により受信データが処理される。このようにして、送信用データまたは受信用データは、バス１０上を流れる。
【００２０】
ここで、本実施例のパケット監視部２１は、バス上を流れるパケットのヘッダを監視する。詳細には、本実施例のパケット監視部２１中の検出部１８は、バス上を流れるパケットのヘッダを監視する。イーサネット（登録商標）に出力されるパケットのＩＰヘッダのフォーマットの一例を図２に示す。また、ＰＣＩ−ＥｘｐｒｅｓｓのＴＬＰヘッダのフォーマットの一例を図３に示す。
【００２１】
図２のαに示すように、ＩＰヘッダには、パケット長（つまり、パケットのデータ量）が格納されている。また、図３のβに示すように、ＴＬＰヘッダには、データペイロード長（つまり、データ量）が格納されている。
【００２２】
検出部１８は、バスに転送されるパケット（データ）のヘッダ情報（つまり、図２記載のＩＰヘッダや図３記載のＴＬＰヘッダ）を監視することで、データ量を検出する。ヘッダを識別する手法例として、例えば、ヘッダ部分に識別子（フラグ）を用いて判別する方法や、バス１０上を転送される際に使用される転送元アドレスあるいは、転送先アドレスからヘッダ位置を判断する方法がある。
【００２３】
そして、変更部１９は、検出したデータ量に基づいて、バスのクロック数を変更する。変更の手法の説明の前に、まず、クロック生成部２６の詳細について説明する。
【００２４】
図４に、クロック生成部２６の機能構成例を示す。図４の例では、逓倍回路２６２、文周回路２６４、クロックセレクタ２６６とで構成されている。まず、外部から逓倍回路２６２に、基準クロックが入力される。そして、逓倍回路２６２は、基準クロックのＮ（Ｎは自然数）倍の周波数を生成する。逓倍回路２６２とは、例えば、ＰＬＬ（Ｐｈａｓｅ−ｌｏｃｋｅｄ−ｌｏｏｐ）により構成される。そして、分周回路２６４が逓倍回路２６２に接続されており、分周回路２６４は、複数（Ｍ１，...，Ｍｎ，．．，ＭＮ）の分周比により分周クロックｆ１，...，ｆｎ，．．，ｆＮを生成する。そして、ｆ１，...，ｆｎ，．．，ｆＮをクロックソース（つまり、生成されるバス１０のクロック数）とする。クロック生成部２６はクロック選択信号のタイミングを微小な幅のクロックが生成されないように制御されているので、微小な幅のクロックが生成されなくなる。クロック選択信号とは、変更部１９が、クロックを選択するための信号である。クロック生成部２６の構成は、図４の例に限られない。
【００２５】
変更部１９は、検出部１８により、検出されたデータ量に基づいて、バス１０のクロック数を変更する。具体的に簡略化して説明すると、変更部１９は、検出されたデータ量が多ければ、クロック数を大きく変更し、検出されたデータ量が少なければ、クロック数を小さく変更する。このように、変更することで、バス上のパケットを適切に走行させつつ、無駄な消費電力を削減することができる。
【００２６】
変更部１９の具体的な変更手法について説明する。検出部１８が検出したデータ量に基づいて、クロック選択信号を生成する。ここで、クロック選択信号の生成手法例について説明する。変更部１９は、図５に示すテーブル表を保持している。本実施例のテーブル表は、パケットのデータ合計量が対応付けられているものである。図５に示すテーブル表は、データ量Ｄｎ（ｎ＝１、...、Ｎ）とクロック選択信号αｎとが対応付けられている。
【００２７】
そして、検出部１８が、バス上を流れているパケットのデータの合計量Ｄを求める。そして、変更部１９は、図５に示すテーブル表を用いて、検出部１８により検出されたデータの合計量Ｄと対応するクロック数のクロック選択信号αを生成して、クロック生成部２６に送信する。合計量Ｄが、テーブル表にない場合には、合計量Ｄに最も近いデータ量Ｄｎを選択すればよい。
【００２８】
クロック生成部２６は、受信したクロック選択信号αに基づいて、クロック数を選択する。クロックセレクタ２６６が、クロック選択信号αｎ（ｎ＝１、...、Ｎ）を受信すると、クロック選択信号αｎに対応したクロックｆｎを出力する。
【００２９】
ここで、上記データ量Ｄｎとクロックｆｎとの関係について、Ｄ１＜・・・Ｄｎ・・・＜ＤＮとし、ｆ１＜・・・ｆｎ・・・＜ｆＮとする。つまり、上述したように、変更部１９は、検出されたデータ量が多ければ、クロック数を大きく変更し、検出されたデータ量が少なければ、クロック数を小さく変更する。
【００３０】
図６に、バス上のパケットの合計データ量が変化した場合のタイムチャートを示す。図６のＸは、パケットが流される構成部（例えば、イーサネット（登録商標））について示し、図６のＹは、クロック数の高低について示す。図６中の状態Ａは、パケットが流れていない状態（アイドル状態）である。状態Ａでは、バス上を流れているデータのデータ量は少ないため、変更部１９は、クロック数を低く設定する。
【００３１】
次に、図６中の状態Ｂは、イーサネット（登録商標）２２に転送するパケットがバス１０上を流れている状態である。状態Ｂの場合には、アイドル状態（状態Ａ）と比較して、バス１０上を流れるデータ量が多くなるため、変更部１９は、クロック生成部２６に対して、クロック数を多く変更する。
【００３２】
図６中の状態Ｃでは、イーサネット（登録商標）２２、ＰＣＩｅ２４など、どの箇所にもパケットを送信していない状態（アイドル状態）である。状態Ｃでは、バス上を流れているデータのデータ量は少ないため、状態Ａ同様、変更部１９は、クロック数を低く変更する。
【００３３】
次に図６中の状態Ｄでは、イーサネット（登録商標）２２用のパケットおよびＰＣＩｅ２４用のパケットがバス上を流れるようになった状態である。状態Ｄでは、状態Ｂと比較して、バス１０上を流れるデータの合計データ量が多くなる。従って、変更部１９は、クロック数を状態Ｂよりも多く変更させる。
【００３４】
図６中の状態Ｅでは、ＰＣＩｅ用のパケットの処理が終了し、ＰＣＩｅ用のパケットがバス１０上を流れず、イーサネット（登録商標）２２に転送するパケットのみがバス１０上を流れている状態である。状態Ｄは、状態Ｂと比較して、バス１０上を流れるデータ量が同じであることから、変更部１９は、クロック数をＢの状態に戻す。
【００３５】
また、状態Ｆは、イーサネット（登録商標）２２に転送するパケットの処理が終了し、該パケットが、バス１０上を流れていない状態である。つまり、状態Ｆのデータ量と、状態Ａのデータ量とは等しいので、変更部１９は、状態Ａと同じクロック数に変更する。
【００３６】
このようにして、検出部１８が、バス１０上を流れるデータの合計データ量を検出する。そして、変更部１９が、検出されたデータ量に応じて、バス１０のクロック数を変更する。従って、調停回路を用いずに、ホストインターフェースの転送性能を落とさずに、適切にバス１０上をパケット等のデータを流しつつ、かつ、データ通信装置の消費電力を低減できる。
【００３７】
また、ホストインターフェース群２５の中には、ＵＳＢ２０のように、パケット中のデータサイズ情報を持たないものもある。この場合には、検出部１８は、最大パケットサイズの規定を利用して、判断できる。
［実施形態２］
この実施形態２では、バッファメモリ１６を更に有効に利用するデータ通信装置について説明する。
【００３８】
検出部１８は、ホストインターフェース毎のデータ量を検出する。また、検出部１８は、ホストインターフェース毎のデータ量の比率を検出しても良い。図７に、検出部１８による、ホストインターフェース毎のデータ量の検出例を示す。図７の例では、検出部１８は、ＵＳＢ２０用のデータ量はＤＵであると検出し、イーサネット（登録商標）２２用のデータ量はＤＥであると検出し、ＰＣＩｅ２４用のデータ量はＤＰであると検出する。
【００３９】
このように、検出部１８は、動的に、ホストインターフェース毎の、バス１０上を流れるデータ（パケット）のデータ量を検出する。そして、割り当て部２３は、検出されたホストインターフェース毎のデータ量（図７参照）または、ホストインターフェース毎のデータ量の比率に基づいて、前記ホストインターフェース毎のバッファメモリのサイズの割り当てを行う。
【００４０】
検出部１８が、バス１０上を流れるデータ（パケット）のデータ量を検出する場合には、割り当て部２３は、ホストインターフェース毎のデータ比率を求める。また、検出部１８が、ホストインターフェース毎のデータ量の比率を、直接、検出した場合には、割り当て部２３は、該直接検出されたデータ量の比率を用いる。
【００４１】
図８に、バッファメモリの割り当ての変化について、模式的に示す。図８Ａの例では、ＤＵ＝０であり、ＤＥ＝ＤＰの場合を示す。この場合には、図８Ａに示すように、割り当て部２３は、バッファメモリ１６の全メモリサイズのうち、１／２をイーサネット（登録商標）２２用のデータ用のサイズに割り当て、１／２をＰＣＩｅ２４用のデータ用のサイズに割り当てる。
【００４２】
次に、図８Ｂに示すように、ＤＵ＝０のままであり、データ量ＤＥが減少したとする。この場合には、図８Ｂに示すように、データ量ＤＥの比率が、データ量ＤＰの比率より小さくなる。従って、データ量ＤＥ用のメモリサイズを、データ量ＤＰ用のメモリサイズよりも小さくする。
【００４３】
このように、ホストインターフェース毎のバス１０上のデータ量の比率を求め、割り当て部２３が、該比率に応じたバッファメモリのサイズの割り当てを行う。従って、バッファメモリの使用効率を向上させることができる。
［実施形態３］
この実施形態３のデータ通信装置では、ＣＰＵ１２のクロック数（ＣＰＵコアクロック数）を制御する。また、この実施形態３では、クロック生成部２８が、ＣＰＵのクロックを生成しているとする。
【００４４】
ＣＰＵ１２のクロック数の変更については、大略、実施形態１で説明したバス１０のクロック数の変更と同じであり、簡単に説明する。
【００４５】
検出部１８は、バスに転送されるパケット（データ）のヘッダ情報（つまり、図２記載のＩＰヘッダや図３記載のＴＬＰヘッダ）を監視することで、データ量を検出する。ヘッダを識別する手法例として、例えば、ヘッダ部分に識別子（フラグ）を用いて判別する方法や、バス１０上を転送される際に使用される転送元アドレスあるいは、転送先アドレスからヘッダ位置を判断する方法がある。
【００４６】
そして、変更部１９は、検出したデータ量に基づいて、ＣＰＵ１２のクロック数を変更する。具体的に簡略化して説明すると、変更部１９は、検出されたデータ量が多ければ、クロック数を大きく変更し、検出されたデータ量が少なければ、クロック数を小さく変更する。このように、ＣＰＵ１２のクロック数を変更することで、ＣＰＵ１２を適切に機能させつつ、無駄な消費電力を削減することができる。
【００４７】
変更部１９の具体的な変更手法について説明する。検出部１８が検出したデータ量に基づいて、クロック選択信号β（図５のカッコ書き）を生成する。クロック選択信号とは、変更部１９が、ＣＰＵ１２のクロック数を選択するための信号である。
【００４８】
ここで、クロック選択信号βの生成手法例について説明する。変更部１９は、図５に示すテーブル表を保持している。本実施例のテーブル表は、パケットのデータ合計量が対応付けられているものである。図５に示すテーブル表は、データ量Ｄｎ（ｎ＝１、...、Ｎ）とクロック選択信号βｎとが対応付けられている。
【００４９】
そして、検出部１８が、バス上を流れているパケットのデータの合計量Ｄを求める。そして、変更部１９は、図５に示すテーブル表を参照して、検出部１８により検出されたデータの合計量Ｄと対応するクロック数のクロック選択信号βを生成して、クロック生成部２６に送信する。合計量Ｄが、テーブル表にない場合には、合計量Ｄに最も近いデータ量Ｄｎを選択すればよい。
【００５０】
クロック生成部２６は、受信したクロック選択信号βに基づいて、クロック数を選択する。クロックセレクタ２６６が、クロック選択信号βｎ（ｎ＝１、...、Ｎ）を受信すると、クロック選択信号βｎに対応したクロック数ｆｎを出力する。
【００５１】
ここで、上記データ量Ｄｎについて、Ｄ１＜・・・Ｄｎ・・・＜ＤＮとし、ｆ１＜・・・ｆｎ・・・＜ｆＮとする。つまり、上述したように、変更部１９は、検出されたデータ量が多ければ、クロック数を大きく変更し、検出されたデータ量が少なければ、クロック数を小さく変更する。
【００５２】
また、タイムチャートについては、図６と同様なので、説明は省略する。
【００５３】
このようにして、検出部１８が、バス１０上を流れるデータの合計データ量を検出する。そして、変更部１９が、検出されたデータ量に応じて、ＣＰＵ１２のクロック数を変更する。従って、適切にＣＰＵ１２を機能させつつ、データ通信装置の消費電力を低減できる。
【００５４】
上記では、実施形態１では、バスクロックの変更について説明し、実施形態２では、バッファメモリ１６のメモリ割り当ての変更について説明し、実施形態３では、ＣＰＵ１２のクロック数の変更について説明した。これらの実施形態１〜３のうちの少なくとも１を選択して、本実施例のデータ通信装置を実施できる。
【００５５】
また、図１には記載していないが、バス１０上には、複数のマスタとなる回路が存在しているため、通常のアービター回路も接続されるようにしても良い。
【００５６】
また、図１には記載していないが、バス１０上には、タイマや割り込みコントローラなどの小規模な回路（周辺回路）も接続しても良い。
【符号の説明】
【００５７】
１０・・・バス
１２・・・ＣＰＵ
１４・・・ＤＭＡコントローラ
１６・・・バッファメモリ
２１・・・パケット監視部
２５・・・ホストインターフェース群
２６・・・クロック生成部
【先行技術文献】
【特許文献】
【００５８】
【特許文献１】特開２００６‐７２５９７号公報
【図１】
2011199461.tif 000003
【図２】
2011199461.tif 000004
【図３】
2011199461.tif 000005
【図４】
2011199461.tif 000006
【図５】
2011199461.tif 000007
【図６】
2011199461.tif 000008
【図７】
2011199461.tif 000009
【図８】
2011199461.tif 000010