説明

クロックゲーティング回路およびバスシステム

【課題】トランザクションを単位として扱うバスシステムにおいて消費電力を低減する。
【解決手段】クロックゲーティング回路は、クロックイネーブル信号生成部とマスククロック生成部とを備える。クロックイネーブル信号生成部は、バスシステムを複数のリージョンに分割した各々においてアウトスタンディングトランザクションの数を計数することにより複数のリージョンの各々のためのクロックイネーブル信号を生成する。マスククロック生成部は、複数のリージョンの各々のためのクロックイネーブル信号によってクロックをマスクしてマスククロックを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、バスシステムに関し、特にバスシステムのためのクロックゲーティング回路に関する。
【背景技術】
【0002】
バスシステムでは、接続されるマスタおよびスレーブの増加や、スプリットバスプロトコルの導入等によるゲート規模の増大に伴い、消費電力も増大する傾向にある。そこで、従来よりバスシステムにおいて消費電力を抑制するために、クロックの供給を制御する技術が提案されている。例えば、複数のバスを用いた計算機システムにおいて、データが通るバスのみにクロックを供給するようにした技術が提案されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−305215号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述の従来技術では、前段からのリクエスト信号とクロックの論理積を生成することにより各段にクロックを供給している。すなわち、データ入力が行われるタイミングのみクロックが供給されるように構成している。しかしながら、近年のバスシステムにおいて採用されるスプリットバスプロトコルでは、1つのトランザクションにおいてリクエストとそのリクエストに対するレスポンスとが分離して非同期に実行されるため、それぞれを個別に扱うのは非効率である。
【0005】
本技術はこのような状況に鑑みて生み出されたものであり、トランザクションを単位として扱うバスシステムにおいて消費電力を低減することを目的とする。
【課題を解決するための手段】
【0006】
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、バスシステムを複数のリージョンに分割した各々においてアウトスタンディングトランザクションの数を計数することにより上記複数のリージョンの各々のためのクロックイネーブル信号を生成するクロックイネーブル信号生成部と、上記複数のリージョンの各々のためのクロックイネーブル信号によってクロックをマスクしてマスククロックを生成するマスククロック生成部とを具備するクロックゲーティング回路である。これにより、トランザクション単位で各リージョンのクロックを制御させるという作用をもたらす。
【0007】
また、この第1の側面において、上記クロックイネーブル信号生成部は、上記複数のリージョンの各々に対してリクエストが入力された時点で上記アウトスタンディングトランザクションの数を加算し、上記リクエストに対するレスポンスが出力された時点で上記アウトスタンディングトランザクションの数を減算することにより上記アウトスタンディングトランザクションの数を計数し、上記マスククロック生成部は、上記アウトスタンディングトランザクションの数が0であれば上記クロックをマスクして上記マスククロックを出力し、上記アウトスタンディングトランザクションの数が1以上であれば上記クロックをそのまま上記マスククロックとして出力するように構成してもよい。これにより、アウトスタンディングトランザクションの数に応じて各リージョンのクロックを制御させるという作用をもたらす。
【0008】
また、この第1の側面において、上記クロックイネーブル信号生成部は、上記複数のリージョンの各々に対してリクエストが入力された時点で上記アウトスタンディングトランザクションの数を加算し、上記リクエストに対するレスポンスが出力された時点で上記アウトスタンディングトランザクションの数を減算することにより上記アウトスタンディングトランザクションの数を計数するカウンタを備え、上記マスククロック生成部は、上記アウトスタンディングトランザクションの数が0であれば上記クロックをマスクして上記マスククロックを出力し、上記アウトスタンディングトランザクションの数が1以上であれば上記クロックをそのまま上記マスククロックとして出力するクロックイネーブラを備えてもよい。これにより、カウンタにより計数されたアウトスタンディングトランザクションの数に応じて各リージョンのクロックを制御させるという作用をもたらす。
【0009】
また、本技術の第2の側面は、複数のマスタの各々に対応して設けられ、対応するマスタからのリクエストをデコードする複数のリクエストデコーダと、複数のスレーブの各々に対応して設けられ、上記複数のリクエストデコーダによってデコードされたリクエストを調停して対応するスレーブに出力する複数のリクエストアービタと、上記複数のスレーブの各々に対応して設けられ、対応するスレーブからのレスポンスをデコードする複数のレスポンスデコーダと、上記複数のマスタの各々に対応して設けられ、上記複数のレスポンスデコーダによってデコードされたレスポンスを調停して対応するマスタに出力する複数のレスポンスアービタと、上記複数のリクエストデコーダおよび上記複数のレスポンスアービタのうち同じマスタに対応するリクエストデコーダおよびレスポンスアービタまたは複数のリクエストアービタおよび複数のレスポンスデコーダのうち同じスレーブに対応するリクエストアービタおよびレスポンスデコーダが同じリージョンとなるよう複数のリージョンに分類した各々においてアウトスタンディングトランザクションの数を計数することにより上記複数のリージョンの各々のためのクロックイネーブル信号を生成するクロックイネーブル信号生成部と、上記複数のリージョンの各々のためのクロックイネーブル信号によってクロックをマスクしてマスククロックを生成するマスククロック生成部と
を具備するバスシステムである。これにより、バスシステムにおいて、トランザクション単位で各リージョンのクロックを制御させるという作用をもたらす。
【0010】
また、この第2の側面において、上記クロックイネーブル信号生成部は、上記複数のリージョンの各々に対してリクエストが入力された時点で上記アウトスタンディングトランザクションの数を加算し、上記リクエストに対するレスポンスが出力された時点で上記アウトスタンディングトランザクションの数を減算することにより上記アウトスタンディングトランザクションの数を計数し、上記マスククロック生成部は、上記アウトスタンディングトランザクションの数が0であれば上記クロックをマスクして上記マスククロックを出力し、上記アウトスタンディングトランザクションの数が1以上であれば上記クロックをそのまま上記マスククロックとして出力するように構成してもよい。これにより、バスシステムにおいて、アウトスタンディングトランザクションの数に応じて各リージョンのクロックを制御させるという作用をもたらす。
【0011】
また、この第2の側面において、上記クロックイネーブル信号生成部は、上記複数のリージョンの各々に対してリクエストが入力された時点で上記アウトスタンディングトランザクションの数を加算し、上記リクエストに対するレスポンスが出力された時点で上記アウトスタンディングトランザクションの数を減算することにより上記アウトスタンディングトランザクションの数を計数するカウンタを備え、上記マスククロック生成部は、上記アウトスタンディングトランザクションの数が0であれば上記クロックをマスクして上記マスククロックを出力し、上記アウトスタンディングトランザクションの数が1以上であれば上記クロックをそのまま上記マスククロックとして出力するクロックイネーブラを備えてもよい。これにより、バスシステムにおいて、カウンタにより計数されたアウトスタンディングトランザクションの数に応じて各リージョンのクロックを制御させるという作用をもたらす。
【発明の効果】
【0012】
本技術によれば、トランザクションを単位として扱うバスシステムにおいて消費電力を低減することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【0013】
【図1】本発明の実施の形態におけるバスシステムの全体構成例を示す図である。
【図2】本発明の実施の形態におけるインターコネクト300の構成例を示す図である。
【図3】本発明の実施の形態におけるリージョンの分類例を示す図である。
【図4】本発明の実施の形態における各リージョンの動作遷移例を示す図である。
【図5】本発明の実施の形態のクロック制御部におけるクロックゲーティング部40の基本構成例を示す図である。
【図6】本発明の実施の形態のクロックゲーティング部40における対象リージョンの入力開始および出力完了の契機となるイベント例を示す図である。
【図7】本発明の実施の形態におけるクロック制御部400の一構成例を示す図である。
【図8】本発明の実施の形態におけるクロックゲーティング部410の一構成例を示す図である。
【図9】本発明の実施の形態におけるクロックイネーブル信号生成部430の一構成例を示す図である。
【図10】本発明の実施の形態におけるマスククロック生成部470の一構成例を示す図である。
【図11】本発明の実施の形態におけるクロック制御部400の変形例を示す図である。
【発明を実施するための形態】
【0014】
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.実施の形態(トランザクションを単位とした各リージョンのクロック制御)
2.変形例
【0015】
<1.実施の形態>
[バスシステムの全体構成]
図1は、本発明の実施の形態におけるバスシステムの全体構成例を示す図である。このバスシステムでは、バスとして機能するインターコネクト300に、複数の接続機器が接続される。複数の接続機器は、M台のマスタ100とS台のスレーブ200とに分類される。マスタ100はデータ転送を主導する接続機器であり、スレーブ200は受動的に動作する接続機器である。マスタとなる接続機器としては、例えばプロセッサが想定される。スレーブとなる接続機器としては、例えばメモリが想定される。なお、MおよびSは1以上の整数である。
【0016】
図2は、本発明の実施の形態におけるインターコネクト300の構成例を示す図である。ここでは、マスタ100およびスレーブ200がそれぞれ2台ずつのバスシステムを想定して説明する。
【0017】
また、ここでは、データ転送の要求と実際のデータ転送とをそれぞれ独立して制御する(スプリットトランザクション)バスの代表例として、AXI(Advanced eXtensible Interface)プロトコルを想定する。このAXIプロトコルでは、リード動作のためのパスとして、リードアドレスチャネルおよびリードデータチャネルが用意されている。マスタ100からリードアドレスチャネルを介してスレーブ200にリードアドレスを含むリクエストが転送されると、これに応答してリードデータチャネルを介してスレーブ200からマスタ100にリードデータが転送されるようになっている。また、AXIプロトコルでは、ライト動作のためのパスとして、ライトアドレスチャネル、ライトデータチャネルおよびライトレスポンスチャネルが用意されている。マスタ100からライトアドレスチャネルおよびライトデータチャネルを介してスレーブ200にライトリクエストが転送されると、これに応答してスレーブ200においてライト動作が行われる。そして、そのライト動作の結果が、ライトレスポンスチャネルを介してスレーブ200からマスタ100に転送されるようになっている。このようなスプリットトランザクションバスでは、リクエストが発行されてからレスポンスがされていない未解決なトランザクションをアウトスタンディングトランザクションと称する。
【0018】
インターコネクト300は、アドレスチャネルバスマトリックス310と、レスポンスチャネルバスマトリックス320とを備えている。アドレスチャネルバスマトリックス310は、リードアドレスチャネルまたはライトアドレスチャネルおよびライトデータチャネルの伝送を行うチャネルである。レスポンスチャネルバスマトリックス320は、リードデータチャネルまたはライトレスポンスチャネルの伝送を行うチャネルである。
【0019】
アドレスチャネルバスマトリックス310は、デコーダ311および312と、アービタ313および314とを備えている。デコーダ311は、信号線301によるマスタ#1からのリクエストをデコードして、スレーブ#1宛であれば信号線315に、スレーブ#2宛であれば信号線316に、それぞれリクエストを出力するものである。デコーダ312は、信号線305によるマスタ#2からのリクエストをデコードして、スレーブ#1宛であれば信号線317に、スレーブ#2宛であれば信号線318に、それぞれリクエストを出力するものである。アービタ313は、信号線315または316によるデコーダ311または312からのリクエストを調停して信号線303に出力するものである。アービタ314は、信号線317または318によるデコーダ311または312からのリクエストを調停して信号線307に出力するものである。なお、デコーダ311および312は、特許請求の範囲に記載のリクエストデコーダの一例である。また、アービタ313および314は、特許請求の範囲に記載のリクエストアービタの一例である。
【0020】
レスポンスチャネルバスマトリックス320は、アービタ321および322と、デコーダ323および324とを備えている。デコーダ323は、信号線304によるスレーブ#1からのレスポンスをデコードして、マスタ#1宛であれば信号線325に、マスタ#2宛であれば信号線327に、それぞれリクエストを出力するものである。デコーダ324は、信号線308によるスレーブ#2からのレスポンスをデコードして、マスタ#1宛であれば信号線326に、マスタ#2宛であれば信号線328に、それぞれリクエストを出力するものである。アービタ321は、信号線325または326によるデコーダ323または324からのレスポンスを調停して信号線302に出力するものである。アービタ322は、信号線327または328によるデコーダ323または324からのレスポンスを調停して信号線306に出力するものである。なお、アービタ321および322は、特許請求の範囲に記載のレスポンスアービタの一例である。また、デコーダ323および324は、特許請求の範囲に記載のレスポンスデコーダの一例である。
【0021】
すなわち、デコーダ311はマスタ#1に対応して設けられ、デコーダ312はマスタ#2に対応して設けられている。アービタ313はスレーブ#1に対応して設けられ、アービタ314はスレーブ#2に対応して設けられている。デコーダ323はスレーブ#1に対応して設けられ、デコーダ324はスレーブ#2に対応して設けられている。アービタ321はマスタ#1に対応して設けられ、アービタ322はマスタ#2に対応して設けられている。
【0022】
AXIにおいて、リードアドレスチャネルおよびリードデータチャネルの組が1つのトランザクションを形成し、また、ライトアドレスチャネル、ライトデータチャネルおよびライトレスポンスチャネルの組が1つのトランザクションを形成する。
【0023】
AXIプロトコルでは、それぞれのチャネルにおいてバリッド信号(VALID)およびレディ信号(READY)がともにアサートされているときに情報の伝達(例えば、データ転送)が行われる。例えば、リードアドレスチャネルの場合、送信元であるマスタ100はリードアドレス等をセットするとともに、バリッド信号(ARVALID)を「1」にアサートする。このとき、受信側であるスレーブ200は、受信可能となるタイミングにおいてレディ信号(ARREADY)を「1」にアサートする。これにより、バリッド信号(ARVALID)およびレディ信号(ARREADY)がともに「1」にアサートされているときに、リードアドレス等が伝達される。
【0024】
[リージョン]
図3は、本発明の実施の形態におけるリージョンの分類例を示す図である。アドレスチャネルバスマトリックス310およびレスポンスチャネルバスマトリックス320は、クロックの制御を行う単位として4つのリージョンに分割される。リージョン#1(31)およびリージョン#2(32)はイニシエータ(Initiator)が接続されるインターフェースにある領域で、主にイニシエータからのデータの転送先をデコードする機能を有する。リージョン#3(33)およびリージョン#4(34)はターゲット(Target)が接続されるインターフェースにある領域で、主に複数のイニシエータからのデータを調停してその順番通りにターゲットに対して転送する機能を有する。ここで、イニシエータとは転送を開始するマスタまたはスレーブを、ターゲットとは転送を受信するマスタまたはスレーブを、それぞれ意味する。つまり、アドレスのイニシエータはマスタ、ターゲットはスレーブで、レスポンスのイニシエータはスレーブ、ターゲットはマスタである。
【0025】
この例では、デコーダ311およびアービタ321がリージョン#1(31)に分類され、デコーダ312およびアービタ322がリージョン#2(32)に分類される。また、デコーダ323およびアービタ313がリージョン#3(33)に分類され、デコーダ324およびアービタ314がリージョン#4(34)に分類される。
【0026】
各リージョンには、後述するクロック制御部によって独立したクロックが供給される。したがって、あるリージョンに属するデコーダまたはアービタは、他のリージョンに属するデコーダまたはアービタとは異なるクロックにより動作する。すなわち、各リージョンに対するクロックを制御することにより、各リージョンにおいて消費される電力を制御することができる。
【0027】
なお、リージョンの分類の際には、リージョン毎のフリップフロップの数の均衡を保つように分類されることが望ましい。
【0028】
図4は、本発明の実施の形態における各リージョンの動作遷移例を示す図である。例えば、マスタ#1からスレーブ#2への転送が開始された場合、同図(a)のように、まずマスタ#1からのアドレス入力信号によりリージョン#1のみへのクロック供給が開始される。このとき、デコーダ311のみならず、アービタ321にもクロックが供給される。
【0029】
デコーダ311においてアドレスはデコードされ、次にクロックを投入する領域がリージョン#4であることが後述のクロック制御部に通知される。これにより、同図(b)のように、アドレスがリージョン#4に到着する前に、リージョン#4に対するクロック供給が開始される。このとき、アービタ314のみならず、デコーダ324にもクロックが供給される。
【0030】
この例ではアドレスチャネルバスマトリックス310およびレスポンスチャネルバスマトリックス320内のリージョンを共通化したため、レスポンスがスレーブから発行される際には、既に使用するリージョン#1および#4にはクロックが供給されている。レスポンスは、同図(c)のようにデコーダ324およびアービタ321を経由してマスタへ伝送される。その後、マスタへのレスポンスが完了し、かつ、リージョン#1および#4を使用しているトランザクションが他にない場合、クロック供給は停止する。
【0031】
[クロックゲーティング]
図5は、本発明の実施の形態のクロック制御部におけるクロックゲーティング部40の基本構成例を示す図である。このクロックゲーティング部40は、リージョン毎に設けられ、それぞれクロックイネーブル信号生成部41と、マスククロック生成部42とを備えている。
【0032】
クロックイネーブル信号生成部41は、対応するリージョンにおけるアウトスタンディングトランザクションの数を計数することにより対応するリージョンのためのクロックイネーブル信号を生成するものである。クロックイネーブル信号生成部41には、入力開始信号および出力完了信号が入力される。入力開始信号は、対応するリージョンへリクエストが入力されたことを示す信号である。出力完了信号は、対応するリージョンへのリクエストに対するレスポンスが出力されたことを示す信号である。クロックイネーブル信号生成部41は、カウンタを保持し、対応するリージョンへリクエストが入力された時点でこのリージョンにおけるアウトスタンディングトランザクションの数を加算(インクリメント)する。そして、クロックイネーブル信号生成部41は、対応するリージョンへのリクエストに対するレスポンスが出力された時点でこのリージョンにおけるアウトスタンディングトランザクションの数を減算(デクリメント)する。
【0033】
このようにして計数されたアウトスタンディングトランザクションの数が0の場合、そのリージョンにはアウトスタンディングトランザクションが存在しないことになるため、クロックイネーブル信号を無効にする。一方、アウトスタンディングトランザクションの数が1以上の場合、そのリージョンにアウトスタンディングトランザクションが少なくとも1つ存在しないことになるため、クロックイネーブル信号を有効にする。
【0034】
マスククロック生成部42は、クロックイネーブル信号生成部41によって生成されたクロックイネーブル信号によりクロックをマスクして、マスククロックを生成するものである。すなわち、クロックイネーブル信号が有効である場合には、マスククロック生成部42はクロックをそのままマスククロックとして出力する。一方、クロックイネーブル信号が無効である場合には、マスククロック生成部42はクロックをマスクしてマスククロックを出力する。したがって、後者の場合、対応するリージョンには有効なクロックが供給されず、そのリージョンに属する回路はクロックに同期した動作を停止する。
【0035】
図6は、本発明の実施の形態のクロックゲーティング部40における対象リージョンの入力開始および出力完了の契機となるイベント例を示す図である。
【0036】
リージョン#1では、マスタ#1からリクエストが発行されることによりトランザクションが開始され、これが入力開始の条件となる。すなわち、マスタ#1からのトランザクションが開始したことを示す信号が入力されると、アウトスタンディングトランザクションの数が加算される。また、リージョン#1では、マスタ#1へレスポンスが到達することによりトランザクションが完了し、これが出力完了の条件となる。すなわち、マスタ#1からのトランザクションが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数が減算される。このように、リージョン#1では、マスタ#1からのトランザクションのうち開始から完了までの状態にあるものを計数して、これが1つ以上あればリージョン#1のクロックを有効にする。
【0037】
リージョン#2では、マスタ#2からリクエストが発行されることによりトランザクションが開始され、これが入力開始の条件となる。すなわち、マスタ#2からのトランザクションが開始したことを示す信号が入力されると、アウトスタンディングトランザクションの数が加算される。また、リージョン#2では、マスタ#2へレスポンスが到達することによりトランザクションが完了し、これが出力完了の条件となる。すなわち、マスタ#2からのトランザクションが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数が減算される。このように、リージョン#2では、マスタ#2からのトランザクションのうち開始から完了までの状態にあるものを計数して、これが1つ以上あればリージョン#2のクロックを有効にする。
【0038】
リージョン#3では、マスタ#1からスレーブ#1へのコマンドが発行されることにより動作が開始され、これが入力開始の条件となる。すなわち、マスタ#1からスレーブ#1へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数が加算される。また、リージョン#3では、マスタ#1からスレーブ#1へのコマンドが完了することにより動作が完了し、これが出力完了の条件となる。すなわち、マスタ#1からスレーブ#1へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数が減算される。このように、リージョン#3では、1つ目の条件として、マスタ#1からスレーブ#1へのコマンドのうち発行から完了までの状態にあるものを計数して、これが1つ以上あればリージョン#3のクロックを有効にする。
【0039】
また、リージョン#3では、マスタ#2からスレーブ#1へのコマンドが発行されることにより動作が開始され、これが入力開始の条件となる。すなわち、マスタ#2からスレーブ#1へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数が加算される。また、リージョン#3では、マスタ#2からスレーブ#1へのコマンドが完了することにより動作が完了し、これが出力完了の条件となる。すなわち、マスタ#2からスレーブ#1へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数が減算される。このように、リージョン#3では、2つ目の条件として、マスタ#2からスレーブ#1へのコマンドのうち発行から完了までの状態にあるものを計数して、これが1つ以上あればリージョン#3のクロックを有効にする。
【0040】
リージョン#3では、スレーブ#1に対してマスタ#1および#2の2つからアクセスが発行される可能性がある。そのため、上述の2つの条件が存在するが、何れか一方の条件が成立すれば、すなわち何れか一方のアウトスタンディングトランザクションが存在すれば、リージョン#3のクロックを有効にする。
【0041】
リージョン#4では、マスタ#1からスレーブ#2へのコマンドが発行されることにより動作が開始され、これが入力開始の条件となる。すなわち、マスタ#1からスレーブ#2へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数が加算される。また、リージョン#4では、マスタ#1からスレーブ#2へのコマンドが完了することにより動作が完了し、これが出力完了の条件となる。すなわち、マスタ#1からスレーブ#2へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数が減算される。このように、リージョン#4では、1つの条件として、マスタ#1からスレーブ#2へのコマンドのうち発行から完了までの状態にあるものを計数して、これが1つ以上あればリージョン#4のクロックを有効にする。
【0042】
また、リージョン#4では、マスタ#2からスレーブ#2へのコマンドが発行されることにより動作が開始され、これが入力開始の条件となる。すなわち、マスタ#2からスレーブ#2へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数が加算される。また、リージョン#4では、マスタ#2からスレーブ#2へのコマンドが完了することにより動作が完了し、これが出力完了の条件となる。すなわち、マスタ#2からスレーブ#2へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数が減算される。このように、リージョン#4では、2つ目の条件として、マスタ#2からスレーブ#2へのコマンドのうち発行から完了までの状態にあるものを計数して、これが1つ以上あればリージョン#4のクロックを有効にする。
【0043】
リージョン#4では、スレーブ#1に対してマスタ#1および#2の2つからアクセスが発行される可能性がある。そのため、上述の2つの条件が存在するが、何れか一方の条件が成立すれば、すなわち何れか一方のアウトスタンディングトランザクションが存在すれば、リージョン#4のクロックを有効にする。
【0044】
[クロック制御部の構成]
図7は、本発明の実施の形態におけるクロック制御部400の一構成例を示す図である。クロック制御部400は、インターコネクト300の内部または外部に存在し、インターコネクト300の内部から必要な情報を取得して、各リージョンのためのクロックを制御するものである。
【0045】
クロック制御部400は、クロックゲーティング部410、420と、クロックイネーブル信号生成部430、440、450、460と、マスククロック生成部470、480とを備える。
【0046】
クロックゲーティング部410は、リージョン#1のためのクロックを供給するものである。クロックゲーティング部410の基本的な構成は図5により説明したクロックゲーティング部40と同様である。クロックゲーティング部410は、マスタ#1からのトランザクションが開始したことを示す信号が信号線301により入力されると、アウトスタンディングトランザクションの数を加算する。また、クロックゲーティング部410は、マスタ#1からのトランザクションが完了したことを示す信号が信号線302により入力されると、アウトスタンディングトランザクションの数を減算する。アウトスタンディングトランザクションの数が1以上の場合、信号線401から入力されたソースクロックをそのままリージョン#1のためのクロックとして出力する。アウトスタンディングトランザクションの数が0の場合、信号線401から入力されたソースクロックがマスクされ、有効なクロックは供給されない。クロックゲーティング部410の詳細構成については図面を参照して後述する。
【0047】
クロックゲーティング部420は、リージョン#2のためのクロックを供給するものである。クロックゲーティング部420の構成は上述のクロックゲーティング部410に準ずるものとなる。クロックゲーティング部420は、マスタ#2からのトランザクションが開始したことを示す信号が信号線305により入力されると、アウトスタンディングトランザクションの数を加算する。また、クロックゲーティング部420は、マスタ#2からのトランザクションが完了したことを示す信号が信号線306により入力されると、アウトスタンディングトランザクションの数を減算する。アウトスタンディングトランザクションの数が1以上の場合、信号線401から入力されたソースクロックをそのままリージョン#2のためのクロックとして出力する。アウトスタンディングトランザクションの数が0の場合、信号線401から入力されたソースクロックがマスクされ、有効なクロックは供給されない。
【0048】
クロックイネーブル信号生成部430および450と、マスククロック生成部470とは、リージョン#3のためのクロックを供給するものである。これらを合わせた基本的な構成は図5により説明したクロックゲーティング部40と同様である。すなわち、クロックイネーブル信号生成部430および450がクロックイネーブル信号生成部41に対応し、マスククロック生成部470がマスククロック生成部42に対応する。
【0049】
クロックイネーブル信号生成部430は、信号線315によりマスタ#1からスレーブ#1へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数を加算する。また、クロックイネーブル信号生成部430は、信号線325によりマスタ#1からスレーブ#1へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数を減算する。アウトスタンディングトランザクションの数が0の場合、クロックイネーブル信号を無効にする。一方、アウトスタンディングトランザクションの数が1以上の場合、クロックイネーブル信号を有効にする。
【0050】
クロックイネーブル信号生成部450は、信号線317によりマスタ#2からスレーブ#1へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数を加算する。また、クロックイネーブル信号生成部450は、信号線327によりマスタ#2からスレーブ#1へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数を減算する。アウトスタンディングトランザクションの数が0の場合、クロックイネーブル信号を無効にする。一方、アウトスタンディングトランザクションの数が1以上の場合、クロックイネーブル信号を有効にする。
【0051】
マスククロック生成部470は、クロックイネーブル信号生成部430または450によって生成されたクロックイネーブル信号の何れかが有効であれば、信号線401から入力されたソースクロックをそのままリージョン#3のためのクロックとして出力する。一方、クロックイネーブル信号生成部430および450によって生成されたクロックイネーブル信号の何れもが無効を示している場合には、信号線401から入力されたソースクロックがマスクされ、有効なクロックは供給されない。
【0052】
クロックイネーブル信号生成部440および460と、マスククロック生成部480とは、リージョン#4のためのクロックを供給するものである。これらを合わせた基本的な構成は図5により説明したクロックゲーティング部40と同様である。すなわち、クロックイネーブル信号生成部440および460がクロックイネーブル信号生成部41に対応し、マスククロック生成部480がマスククロック生成部42に対応する。
【0053】
クロックイネーブル信号生成部440は、信号線316によりマスタ#1からスレーブ#2へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数を加算する。また、クロックイネーブル信号生成部440は、信号線326によりマスタ#1からスレーブ#2へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数を減算する。アウトスタンディングトランザクションの数が0の場合、クロックイネーブル信号を無効にする。一方、アウトスタンディングトランザクションの数が1以上の場合、クロックイネーブル信号を有効にする。
【0054】
クロックイネーブル信号生成部460は、信号線318によりマスタ#2からスレーブ#2へのコマンドが発行されたことを示す信号が入力されると、アウトスタンディングトランザクションの数を加算する。また、クロックイネーブル信号生成部460は、信号線328によりマスタ#2からスレーブ#2へのコマンドが完了したことを示す信号が入力されると、アウトスタンディングトランザクションの数を減算する。アウトスタンディングトランザクションの数が0の場合、クロックイネーブル信号を無効にする。一方、アウトスタンディングトランザクションの数が1以上の場合、クロックイネーブル信号を有効にする。
【0055】
マスククロック生成部480は、クロックイネーブル信号生成部440または460によって生成されたクロックイネーブル信号の何れかが有効であれば、信号線401から入力されたソースクロックをそのままリージョン#4のためのクロックとして出力する。一方、クロックイネーブル信号生成部440および460によって生成されたクロックイネーブル信号の何れもが無効を示している場合には、信号線401から入力されたソースクロックがマスクされ、有効なクロックは供給されない。
【0056】
図8は、本発明の実施の形態におけるクロックゲーティング部410の一構成例を示す図である。このクロックゲーティング部410は、論理積ゲート411、412、414と、カウンタ413と、SRフリップフロップ415と、論理和ゲート416と、クロックイネーブラ417とを備えている。
【0057】
論理積ゲート411は、マスタ#1からのリクエストについて、マスタ側からのバリッド信号(VALID)とスレーブ側からのレディ信号(READY)の論理積を生成するANDゲートである。AXIプロトコルでは、それぞれのチャネルにおいてバリッド信号およびレディ信号がともにアサートされているときに情報の伝達が行われるため、トランザクションの開始を検出するために両者の論理積が生成される。この論理積ゲート411の出力はカウンタ413の加算(INC)端子に入力される。
【0058】
論理積ゲート412は、マスタ#1からのリクエストに対するレスポンスについて、スレーブ側からのバリッド信号(RVALID)とマスタ側からのレディ信号(RREADY)の論理積を生成するANDゲートである。この論理積ゲート412の出力はカウンタ413の減算(DEC)端子に入力される。
【0059】
カウンタ413は、入力された指示に従って計数を行うカウンタである。このカウンタ413は、入力端子として加算(INC)端子および減算(DEC)端子を有する。加算端子がアサートされると内部に保持する計数値を1つ加算する。減算端子がアサートされると内部に保持する計数値を1つ減算する。これら加減算の動作は、クロック(CLK)端子に入力されるクロックと同期して行われる。カウンタ413は、現在のタイミングにおいて内部に保持する計数値が0でない場合、非ゼロ(XEMPTY)端子をアサートする。また、カウンタ413は、次のタイミングにおいて内部に保持する計数値が0でない場合、次非ゼロ(NEXT_XEMPTY)端子をアサートする。
【0060】
論理積ゲート414は、カウンタ413の次非ゼロ端子の反転値と非ゼロ端子の値との論理積を生成するANDゲートである。すなわち、この論理積ゲート414の出力は、現在のタイミングにおいて内部に保持する計数値が1であって、次のタイミングにおいて内部に保持する計数値が0になるタイミングを示している。
【0061】
SRフリップフロップ415は、マスタ#1からのリクエストが有効になったタイミングでセットされ、カウンタ413における計数値が1から0に変化するタイミングでリセットされるフリップフロップである。このSRフリップフロップ415は、クロック(CLK)端子に入力されるクロックと同期して動作して、出力(Q)端子にその状態を出力する。
【0062】
論理和ゲート416は、カウンタ413の非ゼロ端子の値とSRフリップフロップ415の出力端子の値との論理和を生成するORゲートである。すなわち、この論理和ゲート416は、カウンタ413の内部に保持する計数値が非ゼロであるか、または、SRフリップフロップ415がセットされている状態であれば、クロックイネーブル信号を有効にしてクロックイネーブラ417に供給する。
【0063】
クロックイネーブラ417は、論理和ゲート416から供給されたクロックイネーブル信号に従って、ソースクロックをマスクするものである。すなわち、このクロックイネーブラ417は、クロックイネーブル信号が有効であればソースクロックをそのままリージョン#1のためのクロックとして供給し、クロックイネーブル信号が無効であれば供給しない。
【0064】
なお、ここではクロックゲーティング部410の構成例を示したが、クロックゲーティング部420も同様に構成される。
【0065】
図9は、本発明の実施の形態におけるクロックイネーブル信号生成部430の一構成例を示す図である。このクロックイネーブル信号生成部430は、カウンタ431を備えている。
【0066】
カウンタ431は、入力された指示に従って計数を行うカウンタである。このカウンタ431は、入力端子として加算(INC)端子および減算(DEC)端子を有する。加算端子がアサートされると内部に保持する計数値を1つ加算する。減算端子がアサートされると内部に保持する計数値を1つ減算する。これら加減算の動作は、クロック(CLK)端子に入力されるクロックと同期して行われる。クロック端子にはクロックゲーティング部410から供給されたリージョン#1のためのクロックが入力される。信号線315または325がアクティブになるときにはリージョン#1もアクティブであるため、これによりクロックイネーブル信号生成部430自身の消費電力を低減することができる。カウンタ431は、現在のタイミングにおいて内部に保持する計数値が0でない場合、非ゼロ(XEMPTY)端子をアサートする。
【0067】
このクロックイネーブル信号生成部430においては、カウンタ431は、マスタ#1からスレーブ#1へのコマンドが発行されたことを示す信号が加算端子に入力されると、アウトスタンディングトランザクションの数を加算する。また、カウンタ431は、マスタ#1からスレーブ#1へのコマンドが完了したことを示す信号が減算端子に入力されると、アウトスタンディングトランザクションの数を減算する。これらの動作の結果、カウンタ431の内部の計数値が0でない場合、リージョン#3のためのクロックイネーブル信号の一つを有効にする。なお、リージョン#3のためのクロックイネーブル信号はクロックイネーブル信号生成部450においても生成され、マスククロック生成部470においてそれらの論理和が生成される。
【0068】
なお、ここではクロックイネーブル信号生成部430の構成例を示したが、他のクロックイネーブル信号生成部440、450、460も同様に構成される。
【0069】
図10は、本発明の実施の形態におけるマスククロック生成部470の一構成例を示す図である。このマスククロック生成部470は、論理和ゲート471と、クロックイネーブラ472とを備えている。
【0070】
論理和ゲート471は、クロックイネーブル信号生成部430および450によって生成されたクロックイネーブル信号の論理和を生成するORゲートである。この論理和ゲート471の出力はリージョン#3のためのクロックイネーブル信号としてクロックイネーブラ472のクロックイネーブル端子に供給される。
【0071】
クロックイネーブラ472は、論理和ゲート471から供給されたクロックイネーブル信号に従って、ソースクロックをマスクするものである。すなわち、このクロックイネーブラ472は、クロックイネーブル信号が有効であればソースクロックをそのままリージョン#3のためのクロックとして供給し、クロックイネーブル信号が無効であれば供給しない。
【0072】
なお、ここではマスククロック生成部470の構成例を示したが、マスククロック生成部480も同様に構成される。
【0073】
このように、本技術の実施の形態によれば、インターコネクト300の内部をリージョンに分割して、各リージョンに供給するクロックをトランザクション単位で制御することができる。すなわち、マスタからのバスアクセスをトリガにして、トランザクションが必要とするパスのみに対してクロックを動的に供給することにより、バスシステムの消費電力の低減を図ることができる。この手法では、必要最低限の回路部分に対してトランザクションの生存期間のみクロックを供給するため、クロック起因の消費電力を最小限に抑えることができる。
【0074】
<2.変形例>
図11は、本発明の実施の形態におけるクロック制御部400の変形例を示す図である。上述の図7のクロック制御部400では、クロックイネーブル信号生成部430および440にはリージョン#1のクロックを入力し、クロックイネーブル信号生成部450および460にはリージョン#2のクロックを入力していた。これに対し、この変形例では、クロックイネーブル信号生成部430、440、450、460に供給されるクロックを信号線401のソースクロックに統一している。これにより、クロックイネーブル信号生成部430、440、450、460自体の消費電力を要するおそれはあるが、チップ上の回路配置を柔軟に行うことができるようになるという利点がある。
【0075】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【0076】
なお、本技術は以下のような構成もとることができる。
(1)バスシステムを複数のリージョンに分割した各々においてアウトスタンディングトランザクションの数を計数することにより前記複数のリージョンの各々のためのクロックイネーブル信号を生成するクロックイネーブル信号生成部と、
前記複数のリージョンの各々のためのクロックイネーブル信号によってクロックをマスクしてマスククロックを生成するマスククロック生成部と
を具備するクロックゲーティング回路。
(2)前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数し、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力する
前記(1)に記載のクロックゲーティング回路。
(3)前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数するカウンタを備え、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力するクロックイネーブラを備える
前記(1)または(2)に記載のクロックゲーティング回路。
(4)複数のマスタの各々に対応して設けられ、対応するマスタからのリクエストをデコードする複数のリクエストデコーダと、
複数のスレーブの各々に対応して設けられ、前記複数のリクエストデコーダによってデコードされたリクエストを調停して対応するスレーブに出力する複数のリクエストアービタと、
前記複数のスレーブの各々に対応して設けられ、対応するスレーブからのレスポンスをデコードする複数のレスポンスデコーダと、
前記複数のマスタの各々に対応して設けられ、前記複数のレスポンスデコーダによってデコードされたレスポンスを調停して対応するマスタに出力する複数のレスポンスアービタと、
前記複数のリクエストデコーダおよび前記複数のレスポンスアービタのうち同じマスタに対応するリクエストデコーダおよびレスポンスアービタまたは複数のリクエストアービタおよび複数のレスポンスデコーダのうち同じスレーブに対応するリクエストアービタおよびレスポンスデコーダが同じリージョンとなるよう複数のリージョンに分類した各々においてアウトスタンディングトランザクションの数を計数することにより前記複数のリージョンの各々のためのクロックイネーブル信号を生成するクロックイネーブル信号生成部と、
前記複数のリージョンの各々のためのクロックイネーブル信号によってクロックをマスクしてマスククロックを生成するマスククロック生成部と
を具備するバスシステム。
(5)前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数し、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力する
前記(4)に記載のバスシステム。
(6)前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数するカウンタを備え、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力するクロックイネーブラを備える
前記(4)または(5)に記載のバスシステム。
【符号の説明】
【0077】
40 クロックゲーティング部
41 クロックイネーブル信号生成部
42 マスククロック生成部
100 マスタ
200 スレーブ
300 インターコネクト
310 アドレスチャネルバスマトリックス
311、312、323、324 デコーダ
313、314、321、322 アービタ
320 レスポンスチャネルバスマトリックス
400 クロック制御部
410 クロックゲーティング部
411、412、414 論理積ゲート
413 カウンタ
415 フリップフロップ
416、471 論理和ゲート
417 クロックイネーブラ
420 クロックゲーティング部
430、440、450、460 クロックイネーブル信号生成部
431 カウンタ
470、480 マスククロック生成部
472 クロックイネーブラ

【特許請求の範囲】
【請求項1】
バスシステムを複数のリージョンに分割した各々においてアウトスタンディングトランザクションの数を計数することにより前記複数のリージョンの各々のためのクロックイネーブル信号を生成するクロックイネーブル信号生成部と、
前記複数のリージョンの各々のためのクロックイネーブル信号によってクロックをマスクしてマスククロックを生成するマスククロック生成部と
を具備するクロックゲーティング回路。
【請求項2】
前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数し、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力する
請求項1記載のクロックゲーティング回路。
【請求項3】
前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数するカウンタを備え、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力するクロックイネーブラを備える
請求項1記載のクロックゲーティング回路。
【請求項4】
複数のマスタの各々に対応して設けられ、対応するマスタからのリクエストをデコードする複数のリクエストデコーダと、
複数のスレーブの各々に対応して設けられ、前記複数のリクエストデコーダによってデコードされたリクエストを調停して対応するスレーブに出力する複数のリクエストアービタと、
前記複数のスレーブの各々に対応して設けられ、対応するスレーブからのレスポンスをデコードする複数のレスポンスデコーダと、
前記複数のマスタの各々に対応して設けられ、前記複数のレスポンスデコーダによってデコードされたレスポンスを調停して対応するマスタに出力する複数のレスポンスアービタと、
前記複数のリクエストデコーダおよび前記複数のレスポンスアービタのうち同じマスタに対応するリクエストデコーダおよびレスポンスアービタまたは複数のリクエストアービタおよび複数のレスポンスデコーダのうち同じスレーブに対応するリクエストアービタおよびレスポンスデコーダが同じリージョンとなるよう複数のリージョンに分類した各々においてアウトスタンディングトランザクションの数を計数することにより前記複数のリージョンの各々のためのクロックイネーブル信号を生成するクロックイネーブル信号生成部と、
前記複数のリージョンの各々のためのクロックイネーブル信号によってクロックをマスクしてマスククロックを生成するマスククロック生成部と
を具備するバスシステム。
【請求項5】
前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数し、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力する
請求項4記載のバスシステム。
【請求項6】
前記クロックイネーブル信号生成部は、前記複数のリージョンの各々に対してリクエストが入力された時点で前記アウトスタンディングトランザクションの数を加算し、前記リクエストに対するレスポンスが出力された時点で前記アウトスタンディングトランザクションの数を減算することにより前記アウトスタンディングトランザクションの数を計数するカウンタを備え、
前記マスククロック生成部は、前記アウトスタンディングトランザクションの数が0であれば前記クロックをマスクして前記マスククロックを出力し、前記アウトスタンディングトランザクションの数が1以上であれば前記クロックをそのまま前記マスククロックとして出力するクロックイネーブラを備える
請求項4記載のバスシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2013−106166(P2013−106166A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2011−248148(P2011−248148)
【出願日】平成23年11月14日(2011.11.14)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】