(57)【要約】【課題】データ処理装置用バス相互接続ブロックの設計の修正方法と設計ツールを開示する。【解決手段】バス相互接続ブロックは複数の接続を用意し、該接続を介し１つまたは複数（以下、１つ以上と記す）のマスタデバイスが、スレーブデバイスに対してアクセス可能であり、各接続は１つ以上の経路を含み、各経路は１つ以上の記憶素子により分離される１つ以上の部分経路を含む。本方法は、（ａ）経路から１つ以上の候補経路を選ぶステップと、（ｂ）候補経路ごとに所定の基準を適用し、経路内の記憶素子の数の修正が、選んだ特性を満たすことに役立つか否かを決定するステップと、（ｃ）各候補経路の中の記憶素子の数を修正し、ステップ（ｂ）で、該修正に対して選んだ特性の要求条件を満たすことに役立つと決定されているステップとを含む。本方法は、前に下した決定に一応の影響を与え、設計の修正を繰り返し実行することを可能にする。【選択図】図６
2005004736.tif 000002
【特許請求の範囲】
【請求項１】
バス相互接続ブロックについて選んだ特性の要求条件を満たすため、データ処理装置用バス相互接続ブロックの設計を修正する方法であって、前記バス相互接続ブロックは複数の接続を用意し、該１つまたは複数接続を介して、１つまたは複数のマスタ・デバイスが１つまたは複数のスレーブ・デバイスに対してアクセスすることができ、各接続が１つまたは複数の経路を有し、各経路が前記記憶素子によって分離された１つまたは複数の部分経路を有する方法において、
ａ）  前記経路から１つまたは複数の候補経路を選択するステップと、
ｂ）  候補経路ごとに所定の基準を適用して、前記経路の中の前記記憶素子の数の修正が、前記選んだ特性の前記要求条件を満たすことに役立つか否かを決定するステップと、
ｃ）  各候補経路の中の前記記憶素子の数を修正し、該修正に対して、前記ステップ（ｂ）で、その修正が前記選んだ特性の要求条件を満たすことに役立つと決定されているステップと、
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記選んだ特性がタイミング特性であり、前記要求条件が前記タイミング特性の改善である前記方法において、
前記ステップ（ａ）で、前記１つまたは複数の候補経路として１つまたは複数の経路を選択し、該１つまたは複数の経路を介して、前記バス相互接続ブロックが前記マスタ・デバイスまたはスレーブ・デバイスに対して信号を出力するステップと、
前記ステップ（ｂ）で、前記バス相互接続ブロックから有効信号を出力するためにかかる時間が、第１の所定の閾値を超えているか否か、候補経路ごとに決定するステップと、
超えている場合は、前記ステップ（ｃ）で、その候補経路に対して記憶素子を挿入し、前記候補経路の中の前記部分経路の数を増加させるステップと、
を含む前記方法。
【請求項３】
請求項１に記載の方法において、前記選んだ特性はタイミング特性であり、前記要求条件は前記タイミング特性の改善である前記方法において、
前記ステップ（ａ）で、前記１つまたは複数の候補経路として１つまたは複数の経路を選択し、該１つまたは複数の経路を介して、前記バス相互接続ブロックが前記マスタ・デバイスまたはスレーブ・デバイスから信号を受信するステップと、
前記ステップ（ｂ）で、前記信号を受信するためにかかる前記セットアップ時間が、第２の所定の閾値を超えているか否か、候補経路ごとに決定するステップと、
超えている場合は、前記ステップ（ｃ）で、その候補経路に対して記憶素子を挿入して前記候補経路の中の前記部分経路の数を増加させるステップと、
を含む前記方法。
【請求項４】
請求項１に記載の方法において、前記選んだ特性はタイミング特性であり、前記要求条件は前記タイミング特性の改善である前記方法において、
前記ステップ（ａ）で、前記１つまたは複数の候補経路として、組み合わせ論理を組み込んで１つまたは複数の経路を選択するステップと、
前記ステップ（ｂ）で、その組み合わせ論理によって前記信号を処理するためにかかる時間が、第３の所定の閾値を超えているか否か、候補経路ごとに決定するステップと、
超えている場合は、前記ステップ（ｃ）で、その候補経路に対して記憶素子を挿入して前記候補経路の中の前記部分経路の数を増加させるステップと、
を含む前記方法。
【請求項５】
請求項１に記載の方法において、前記選んだ特性はタイミング特性であり、前記バス相互接続ブロックの前記設計は、除去の候補である複数の仮記憶素子を含み、前記修正の前記要求条件は、所定の最長時間で信号が横断できない部分経路を１つも導入しない前記修正である前記方法において、
前記所定の最長時間として、前記バス相互接続ブロック用クロックサイクルの持続時間を指定するステップと、
前記ステップ（ａ）で、前記１つまたは複数の候補経路として、少なくとも１つの仮記憶素子を含む１つまたは複数の経路を選択するステップと、
前記ステップ（ｂ）で、前記少なくとも１つの仮記憶素子を除去すると、前記クロックサイクルの前記持続時間を超えない時間で信号が横断できる新しい部分経路になるか否かを候補経路ごとに決定するステップと、
新しい部分経路になる場合は、前記ステップ（ｃ）で、その候補経路から前記少なくとも１つの仮記憶素子を除去して前記候補経路の中の前記部分経路の数を減少させるステップと、
を含む前記方法。
【請求項６】
請求項５に記載の方法において、任意の候補経路が１つ以上の仮記憶素子を含む場合、前記ステップ（ｂ）で、その候補経路の中の前記仮記憶素子の選択された部分集合の除去に基づいて前記決定が実行される前記方法。
【請求項７】
請求項１に記載の方法において、前記選んだ特性はタイミング特性であり、前記要求条件は前記タイミング特性の改善である前記方法において、
前記バス相互接続ブロック用クロックサイクルの持続時間を指定するステップと、
前記ステップ（ａ）で、前記１つまたは複数の候補経路として、前記クロックサイクルの前記持続時間で信号が横断できない容認不能な部分経路を含む１つまたは複数の経路を選択するステップと、
前記ステップ（ｂ）で、所定の基準を適用し、容認不能部分経路の中に少なくとも１つの記憶素子を挿入して修正後の設計を発生することを前提として、前記修正後の設計のタイミング特性が、修正前の設計のタイミング特性を基準として改善されているか否かを候補経路ごとに決定するステップと、
改善されている場合は、前記ステップ（ｃ）で、容認不能な部分経路の中に前記少なくとも１つの記憶素子を挿入して、前記候補経路の中の前記部分経路の前記数を増加させるステップと、
を含む前記方法。
【請求項８】
請求項７に記載の方法において、所定の基準を適用する前記ステップは、前記修正後の設計の中の前記最長容認不能部分経路を信号が横断するためにかかる前記時間が、前記修正前の設計の中の前記最長容認不能部分経路を信号が横断するためにかかる前記時間よりも短いか否かを決定することを含む前記方法。
【請求項９】
請求項７に記載の方法において、前記所定の基準を適用するステップは、前記修正後の設計の中の前記容認不能部分経路の数が、前記修正前の設計の前記容認不能部分経路の数よりも少ないか否かを決定することを含む前記方法。
【請求項１０】
請求項１に記載の方法であって、
候補経路をさらに選択するため、前記ステップ（ａ）から（ｃ）を繰り返すステップをさらに含む前記方法。
【請求項１１】
請求項７に記載の方法であって、候補経路をさらに選択するため、前記ステップ（ａ）から（ｃ）を繰り返す前記ステップをさらに含む前記方法において、前記ステップ（ａ）から（ｃ）は、容認不能部分経路が存在しない修正後の設計が発生するまで繰り返される前記方法。
【請求項１２】
請求項１に記載の方法であって、前記選んだ特性は消費電力であり、前記要求条件は前記消費電力の低減である前記方法において、
前記ステップ（ａ）で、前記１つまたは複数の候補経路として１つまたは複数の経路を選択し、該１つまたは複数の経路を介して、前記バス相互接続ブロックが前記マスタ・デバイスまたはスレーブ・デバイスとインタフェースをとるステップと、
前記ステップ（ｂ）で、所定の基準を適用し、前記マスタ・デバイスまたはスレーブ・デバイスを分離して消費電力を低減させることが適切であるか否かを候補経路ごとに決定するステップと、
適切である場合は、前記ステップ（ｃ）で、その候補経路に対して記憶素子を挿入し、前記マスタ・デバイスまたはスレーブ・デバイスを分離して、その候補経路の中の部分経路の数を増加させるステップと、
を含む前記方法。
【請求項１３】
請求項１２に記載の方法において、前記所定の基準を適用するステップは、その候補経路の前記関連するマスタ・デバイスとスレーブ・デバイスの数と、前記マスタ・デバイスまたはスレーブ・デバイスによって使用される前記相互接続ブロックの帯域幅との関数に基づいて、そのマスタ・デバイスまたはスレーブ・デバイスを分離することが適切であるか否かを決定することを含む前記方法。
【請求項１４】
請求項１に記載の方法において、前記記憶素子は、関連する部分経路を介して受信した信号のグループを格納するように動作可能である前記方法。
【請求項１５】
請求項１に記載の前記方法を実行するコンピュータを構成するように動作可能な計算機プログラム。
【請求項１６】
請求項１５に記載の計算機プログラムを運ぶ計算機プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関し、とくにこのようなデータ処理装置に用いるバス相互接続ブロックの設計に関するフレキシビリティを改善する手法に関する。
【背景技術】
【０００２】
データ処理装置の構成要素の設計は労働集約的な仕事であり、データ処理装置の複雑さが増えるのに伴って、さらに複雑さを増している。このような１つの構成要素は、データ処理装置の中の他の各種要素の間のバス接続を定義するために使用する、バス相互接続ブロックである。とくにバス相互接続ブロックは、いくつかのマスタ・デバイスが、いくつかのスレーブ・デバイスに対してアクセスすることを可能にするバスのインフラストラクチャを定義する。データ処理装置の複雑さが増えると、データ処理装置がこれらのマスタ・デバイスとスレーブ・デバイスを接続することができる方法の数も増加するので、相互接続するマスタ・デバイスとスレーブ・デバイスの数も増加する。これによってバス相互接続ブロックの設計の複雑さがかなり増大するが、バス相互接続ブロックによって指定される各種接続がとくに複雑になる。バス相互接続ブロックを設計する場合に考慮すべきことは、バス相互接続ブロックの各種特性、たとえば、タイミング特性、消費電力特性などが存在することである。とくに選んだ特性の要求条件を満たすこと（たとえばタイミング特性を向上させる事）を追求するために、バス相互接続ブロックの設計中になされる設計上の選択は、バス相互接続ブロックによって指定されるすべての接続にわたって繰り返されるのが普通であり、この繰り返しが選んだ特性の要求条件を満たすことに役立つのであるが、この設計上の選択は最適状態以下であり、対処することを必要とする他の望ましくない特性を導入することになる。
【０００３】
したがって、バス相互接続ブロックの設計に役立つとともに、前になされた設計に一応の影響を与え、設計の修正を繰り返して実行することを可能にする方法論と設計ツールを提供することが望ましい。
【０００４】
本発明の第１の態様から見ると、本発明は、バス相互接続ブロックのために選んだ特性の要求条件を満たすため、データ処理装置用バス相互接続ブロックの設計を修正する方法を提供している。このバス相互接続ブロックは、複数の接続を用意し、該複数の接続を介して、１つまたは複数のマスタ・デバイスが１つまたは複数のスレーブ・デバイスに対してアクセスすることができ、各接続は１つまたは複数の経路を有し、各経路は記憶素子によって分離された１つまたは複数の部分経路を有する。この方法は、（ａ）前記経路から１つまたは複数の候補経路（candidate path）を選択するステップと、（ｂ）候補経路ごとに所定の基準を適用して、前記経路の中の記憶素子の数の修正が、前記選んだ特性の要求条件を満たすことに役立つか否かを決定するステップと、（ｃ）各候補経路の中の前記記憶素子の数を修正し、該修正に対して、前記ステップ（ｂ）で、その修正が前記選んだ特性の要求条件を満たすことに役立つと決定されているステップとを含む。
【０００５】
本発明のこの態様によれば、記憶素子は、たとえば、タイミングの改善、消費電力の低減などのようなバス相互接続ブロックに対して選んだ特性の要求条件を満たすことを目的として、これらの経路を明瞭な部分経路に分離するため、バス相互接続ブロックの中の経路に対して記憶素子を選択的に導入する。このような記憶素子をどこに配置するかを決定するために使用する方法は、バス相互接続ブロックの中に用意された各種経路から１つまたは複数の候補経路を選択することを含む。このような選択は、満足させることを追求中の選んだ特性の要求条件に依存して決まるので、候補経路ごとに所定の基準を適用して、その経路の中の記憶素子の数の修正（記憶素子の数を増やすか減らすか）が、選んだ特性の要求条件を満たすことに役立つか否かを決定する。この場合も、適用すべき所定の基準は、満足させることを追求中の選んだ特性の要求条件に依存して決まることは理解されるであろう。記憶素子の数の修正が選んだ特性の要求条件を満たすことに役立つと決定されることを想定すると、設計が改定され、記憶素子の数が修正される。この方法は、選んだ特性の要求条件が所望のレベルを満たしてしまうまで反復的に繰り返される。その上、このような方法によって、設計の修正を１接続ずつ検討しかつ実施することができることは、さらに理解されるであろう。
【０００６】
選んだ特性がタイミング特性であり、要求条件が前記タイミング特性の改善である１つの実施例における方法には、前記ステップ（ａ）で、前記１つまたは複数の候補経路として１つまたは複数の経路を選択し、該１つまたは複数の経路を介してバス相互接続ブロックが前記マスタ・デバイスまたはスレーブ・デバイスに対して信号を出力するステップと、前記ステップ（ｂ）で、バス相互接続ブロックから有効信号を出力するためにかかる時間が第１の所定の閾値を超えているか否かを候補経路ごとに決定するステップと、超えている場合は、前記ステップ（ｃ）で、その候補経路に記憶素子を挿入し、その候補経路の中の部分経路の数を増加させるステップと、が含まれる。信号がバス相互接続ブロックからマスタ・デバイスまたはスレーブ・デバイスのいずれかに対して出力されると、信号が発行されるクロックサイクルの終わりで、マスタ・デバイスまたはスレーブ・デバイスによって、その信号が安全に受信されることを必要とすることは理解されるであろう。各マスタ・デバイスまたはスレーブ・デバイスは、その信号が有効に立ち上げられていると、その信号を受信するために或る長さの時間を必要とする。したがって、有効信号を出力するため、クロックサイクルのバス相互接続ブロックがもつ部分が指示される。これにより、バス相互接続ブロックによって有効信号を出力するために要する所定の閾値時間が提供され、その閾値時間を超えていることが決定されると、この実施例によれば、候補経路に対して記憶素子を挿入して、その候補経路の中の部分経路の数を増加させる。これは、候補経路を示す接続を介して送信される特定の信号すべてに対してクロックサイクルの数を増やすことになるが、その有効信号が発行されるクロックサイクル以内で、その有効信号が適切なマスタ・デバイスまたはスレーブ・デバイスによって受信されることを可能にするため、バス相互接続ブロックが有効信号を出力するために十分な時間が利用可能であることを保証する。
選んだ特性がタイミング特性であり、要求条件が前記タイミング特性の改善である１つの実施例における方法には、前記ステップ（ａ）で、前記１つまたは複数の候補経路として１つまたは複数の経路を選択し、該１つまたは複数の経路を介して、バス相互接続ブロックが前記マスタ・デバイスまたはスレーブ・デバイスから信号を受信するステップと、前記ステップ（ｂ）で、バス相互接続ブロックから有効信号を受信するために要するセットアップ（ｓｅｔｕｐ）時間が、第２の所定の閾値を超えているか否かを候補経路ごとに決定するステップと、超えている場合は、前記ステップ（ｃ）で、その候補経路に対して記憶素子を挿入し、その候補経路の中の部分経路の数を増加させるステップとが含まれる。
【０００７】
マスタ・デバイスまたはスレーブ・デバイスから信号を受信する場合、マスタ・デバイスまたはスレーブ・デバイスによってそれらの信号が有効に立ち上げられていると、さらにそのクロックサイクルの持続時間とマスタ・デバイスまたはスレーブ・デバイスによって、それらの信号を有効に立ち上げるために必要とする時間に基づいて、このようなセットアップに利用可能な所定の最長閾値時間が存在するであろう。したがって、特定の候補経路に対しセットアップ時間がその所定の閾値を超えていることが決定されると、その候補経路に対して記憶素子を挿入し、その候補経路の中の部分経路の数を増加させる。
選んだ特性がタイミング特性であり、要求条件が前記タイミング特性の改善である１つの実施例における方法には、前記ステップ（ａ）で、組み合わせ論理を組み込んで前記１つまたは複数の候補経路として、１つまたは複数の経路を選択するステップと、前記ステップ（ｂ）で、その組み合わせ論理によって信号を処理するためにかかる時間が、第３の所定の閾値を超えているか否かを候補経路ごとに決定するステップと、超えている場合は、前記ステップ（ｃ）で、その候補経路に対して記憶素子を挿入し、その候補経路の中の部分経路の数を増加させるステップとが含まれる。
【０００８】
バス相互接続ブロックの中では、バス相互接続ブロックによって受信された信号に関するある種の処理機能を実行するために、各種組み合わせ論理が用意されるのが普通である。どの特定のクロックサイクル以内でも、処理すべき信号は、そのクロックサイクル中にそのバス相互接続ブロックに対して転送され、処理された後、マスタ・デバイスまたはスレーブ・デバイス、あるいはバス相互接続ブロックの中の何らかの記憶素子のどれかである宛先に対して出力される必要があるので、その組み合わせ論理が処理機能を実行することを可能にする所定の最長時間が存在するであろう。したがって、ステップ（ｂ）でその組み合わせ論理によって信号を処理するためにかかる時間が、その所定の閾値時間を超えていると、候補経路に対して記憶素子を挿入し、候補経路の中の部分経路の数を増加させる。
上に説明したバス相互接続ブロックの中に記憶素子の配置を選択的に決定する３つの方法は、そのどれかを別々に適用してもよいし、相互に組み合わせて適用してもよい。
選んだ特性がタイミング特性であり、バス相互接続ブロックの設計には、除去の候補である複数の仮記憶素子が含まれ、修正に対する要求条件が、信号が所定の最長時間で横断不能な部分経路をひとつも導入しないことである１つの実施例における方法には、所定の最長時間として、バス相互接続ブロック用クロックサイクルの持続時間を指定するステップと、前記ステップ（ａ）で、前記１つまたは複数の候補経路として、少なくとも１つの仮記憶素子を含む１つまたは複数の経路を選択するステップと、前記ステップ（ｂ）で、前記少なくとも１つの仮記憶素子の除去が、クロックサイクルの持続時間を超えない時間で信号が横断できる新しい部分経路になるか否かを候補経路ごとに決定するステップと、新しい部分経路になる場合は、前記ステップ（ｃ）で、その候補経路から少なくとも１つの仮記憶素子を除去し、その候補経路の中の部分経路の数を減少させるステップとが含まれる。
【０００９】
バス相互接続ブロックの開発は、いくつかの段階で実行されるのが普通である。たとえば、レジスタ・トランスファ・ランゲージ（Register Transfer Language:RTL）を使用して、最初にバス相互接続ブロックの機能動作／挙動が定義される。よくする２つのＲＴＬはＶＨＤＬとＶｅｒｉｌｏｇである。さらにこのようなＲＴＬのコーディングを実行する前に、業務レベル（at a transactional level）で設計の意図が正しいことを立証するモデル化言語、たとえば、ＳｙｓｔｅｍＣを使用して行動モデル（behavioural model）を構築してもよい。
【００１０】
ハードウエア構成要素のＲＴＬによる表現が開発されると、１つまたは複数の合成ツールとレイアウトツールを通過して、実際のバス相互接続ブロックの設計レイアウトを指定する一連の相互接続されたハードウエア素子の系列を発生する。この合成処理は、たとえば、論理ゲートのリストと、回路網、つまり、相互接続のリストになるネット・リスト（Ｎｅｔｌｉｓｔ）を生成するのが普通である。このレイアウト段階は、ゲートと相互接続の最適レイアウトを試行して見付けるために使用される。
【００１１】
上に説明した実施例では、バス相互接続ブロックの設計で仮記憶素子が配置されるが、普通はＲＴＬ段階で配置され、これらの仮記憶素子は除去の候補であり、上に説明した方法は、このような除去を実行すべきか否かを決定するために使用される。この方法は、レイアウト段階で実行できるのが普通である。この方法の利点は、レイアウト設計の他の領域に混乱を与えることを必要とせずに仮記憶素子を除去し、レイアウト段階の他の領域に不都合な連鎖反応が生じる可能性が皆無な状態で修正の実行を可能にすることができることである。仮記憶素子を除去すると、クロックサイクルの持続時間を超えない時間で信号が横断できる新しい部分経路になるか否かを決定する場合、通常、その特定の記憶素子の周囲のすべての経路、つまり、その記憶素子を通過する経路でタイミング解析を実行する。
【００１２】
候補経路のどれかに１つ以上の仮記憶素子が含まれていると、第１の繰り返しで、その経路の中のすべての仮記憶素子を除去することを追求することは適切ではないが、その代わりにステップ（ｂ）における決定が、たとえば、その経路の中の仮記憶素子の１つのような選択された部分集合（subset）の除去に基づいて実行されることは理解されるであろう。さらに、候補経路の中の各部分経路を介して、実際のタイミングの信号が供給されると、除去すると考えられる選択した部分集合の中に、どの仮記憶素子を含めるべきか否かを決定するための基準を用意してもよいことは理解されるであろう。
【００１３】
複数の仮記憶素子を与えた後、それの除去を追求する代替方法として、代替可能な実施例における選んだ特性は、時間特性であり、要求条件は前記タイミング特性の改善であって、この方法には、バス相互接続ブロックに対してクロックサイクルの持続時間を指定するステップと、前記ステップ（ａ）で、前記１つまたは複数の候補経路として、クロックサイクルの持続時間で信号が横断できない容認不能部分経路を含む１つまたは複数の経路を選択するステップと、前記ステップ（ｂ）で、容認不能部分経路の中に少なくとも１つの記憶素子を挿入して修正後の設計を発生することを前提として、修正後の設計のタイミング特性が、容認不能部分経路のタイミング特性を基準として改善されているか否かを決定するために、候補経路ごとに所定の基準を適用するステップと、改善されている場合は、前記ステップ（ｃ）で、その容認不能部分経路の中に少なくとも１つの記憶素子を挿入して、候補経路の中の部分経路の数を増加させるステップが含まれる。ここでも、このような方法をレイアウト設計で実行することができる。その場合、１つの実施例では、この方法を実行した結果、１つまたは複数の記憶素子を挿入することが適切だと決定されることになっても記憶素子を挿入するために利用できるスペースがいくつかあるように、いくつかの利用可能なスペース、つまり、いくつかの「遊び（slack）」のあるオリジナル・レイアウトが設計される。
【００１４】
修正後の設計のタイミング特性が、修正前の設計のタイミング特性を基準として改善されているか否かを決定するために適用される所定の基準は、いろいろな型式をとってもよい。たとえば、１つの実施例における修正後の設計で、最長（つまり、持続時間が最長の）容認不能部分経路を信号が横断するためにかかる時間が、修正前の設計で最長（つまり、持続時間が最長の）容認不能部分経路を信号が横断するためにかかる時間よりも短いか否かを決定することができるが、その場合は修正後の設計のタイミング特性が修正前の設計のタイミング特性を基準として改善されていると考えてもよいであろう。代替可能な実施例において、所定の基準を適用するステップには、修正後の設計で容認不能部分経路の数が、修正後の設計で容認不能部分経路の数よりも小さいか否かを決定し、その場合は修正後の設計のタイミング特性が、修正前の設計のタイミング特性を基準として改善されていると考えてもよいことを含めてもよい。
【００１５】
さらには、このような決定をする場合、たとえば、上記２つの基準の例の組み合わせのように、いくつかの基準の組み合わせを考えてもよいであろう。
【００１６】
前述したように、１つの実施例におけるステップ（ａ）から（ｃ）は、候補経路の選択のために繰り返され、既になされた設計の決定に一応の影響を与え、設計の処理が繰り返して処理されることになる。
【００１７】
前に説明した実施例では、修正後の設計を発生するため、記憶素子を挿入することが適切か否かがレイアウト段階で決定され、容認不能部分経路が存在しない修正後の設計が発生するまで、ステップ（ａ）から（ｃ）が繰り返される。
選んだ特性が消費電力であり、要求条件が前記消費電力の低減である１つの実施例における方法には、前記ステップ（ａ）で、前記１つまたは複数の候補経路として１つまたは複数の経路を選択し、該１つまたは複数の経路を介して、バス相互接続ブロックが関連するマスタ・デバイスまたはスレーブ・デバイスとインタフェースをとるステップと、前記ステップ（ｂ）で、所定の基準を適用し、関連するマスタ・デバイスまたはスレーブ・デバイスを分離して消費電力を低減させることが適切であるか否かを候補経路ごとに決定するステップと、適切である場合は、前記ステップ（ｃ）で、その候補経路の中に記憶素子を挿入し、関連するマスタ・デバイスまたはスレーブ・デバイスを分離して、その候補経路の中の部分経路の数を増加させるステップとが含まれる。
【００１８】
或る状態では、他のマスタ・デバイスまたはスレーブ・デバイスよりも使用頻度が少ないマスタ・デバイスまたはスレーブ・デバイスがあるので、たとえば、特定のスレーブ・デバイスが、或るマスタ・デバイスから発行される転送要求の大多数の意図的な受け手である場合、これらの転送要求を他のスレーブ・デバイスに対しても送信することは非効率であることは理解されるであろう。したがって、この実施例によれば、消費電力を低減させるために特定の候補経路に関連するマスタ・デバイスまたはスレーブ・デバイスを分離することが適切であるか否かを決定し、適切な場合は、関連するマスタ・デバイスまたはスレーブ・デバイスを分離するために、その候補経路に対して記憶素子を挿入するため、所定の基準を適用することができる。
関連するマスタ・デバイスまたはスレーブ・デバイスを分離することが適切であるか否かを決定するために適用される所定の基準が、いろいろな型式をとりうることは理解されるであろう。しかし、１つの実施例における所定の基準を適用するステップは、その候補経路に関連するマスタ・デバイスとスレーブ・デバイスの数と、これらの関連するマスタ・デバイスまたはスレーブ・デバイスによって使用される相互接続ブロックの帯域幅の関数（function）に基づいて、その関連するマスタ・デバイスまたはスレーブ・デバイスを分離することが適切であるか否かを決定することを含めることができる。関連するマスタ・デバイスまたはスレーブ・デバイスの数が増加するとともに、これらのデバイスによって使用される帯域幅が狭くなると、これらの関連するマスタ・デバイスとスレーブ・デバイスを分離するために記憶素子を挿入することが、結果としてかなりの電力の節減になる可能性が増大する。
記憶素子がいろいろな型式をとりうることは理解されるであろう。しかし、１つの実施例における記憶素子は、関連する部分経路を介して受信した信号のグループを格納するように動作可能なレジスタ・スライスである。
【００１９】
第２の態様から見ると、本発明は、本発明の第３の態様による方法を実行するコンピュータを構成するように動作可能な計算機プログラムを提供する。第３の態様から見ると、本発明は、本発明の第３の態様による計算機プログラムを運ぶ計算機プログラム製品を提供する。
【００２０】
添付の図面に示す好適実施例を参照し、例示するのみの方法で本発明を詳細に説明する。
【００２１】
図１Ａは、レジスタ・スライス記憶部１０と、ある種の関連する制御論理２０から構成されたレジスタ・スライス１を模式的に示すブロック図である。本明細書では信号グループと呼ばれる、点Ａから点Ｂまで流れる情報のチャネルが与えられているので、チャネルの中の各情報信号の発信元と宛先の間にレジスタを挿入するためにレジスタ・スライス１を使用することができる。したがって、図１を参照すると、個々の信号のグループとしてアドレスを指定する転送要求、その要求が書き込み転送要求であることの表示、データのサイズ、およびバースト・サイズに関する情報が宛先に伝搬される前に、レジスタ・スライス記憶部１０の中に一時的に格納される。上記信号のほか、他の信号が有効として処理すべきか否かを示す有効信号（valid signal）が発行されるのが普通である。この有効信号が制御論理２０で受信されると、制御論理２０は、たとえばスレーブ・デバイスのような宛先からレディ信号を受信する。このレディ信号は、レジスタ・スライス記憶部１０の中に格納済みのどんな信号でも、とにかくその宛先が受信する準備ができていることを識別するように設定されている。したがって、レジスタ・スライス記憶部１０に新しいデータを書き込んでも安全なことを示している。たとえば、特定のクロックサイクル中に新しい値をレジスタ・スライス記憶部１０に格納しながら、レジスタ・スライス記憶部１０の現在の内容を宛先に出力することができる。したがって、レジスタ・スライス記憶部１０に既にデータが含まれている場合、制御論理２０を使用してセット・レディ信号が受信されるときまで有効データがレジスタ・スライス記憶部１０に対して伝搬されることを防止する。レジスタ・スライス記憶部１０は有効信号が設定される場合には受信信号をレジスタ・スライス記憶部１０の中に格納するためだけに配置される。しかし、レジスタ・スライス記憶部によって出力される有効信号の値が表示する有効データをレジスタ・スライス記憶部が１つも含んでいない場合、有効データをレジスタ・スライス記憶部１０に伝搬する前に立ち上げられるセット・レディ信号を制御論理２０が待ち合わせる必要はない。
【００２２】
図１Ｂは、レジスタ・スライスの代替可能な実施例を示している。この実施例におけるレジスタ・スライス２には、主経路の中に含まれる２セットのレジスタ・スライス記憶素子１２、１４がある。以下、詳細に説明するように、この方法によると、レジスタ・スライスを通じて利用可能な帯域幅に影響を及ぼさずに戻ってくるレディ信号の経路の中にレジスタ２２を配置することが可能になる。
【００２３】
レディ信号の戻り経路が、１クロックサイクルで横断するには長すぎる状態のとき、図１Ｂのレジスタ・スライスの実施例を使用して戻り経路にレジスタ・スライスを挿入することができる。しかし、この条件以外でもこうむることがある性能の欠点を除く狙いから、制御論理２０は、次のサイクルでレディ信号の値（つまり、設定されているか否か）を予測するように調整され、その予測値をレジスタ２２に格納する。レジスタ・スライス記憶素子１２、１４の少なくとも１つが空きの状態のとき、制御論理は、レディ信号が次のサイクルで設定されることを予測するように調整される。何故ならば、その予測が間違っているとしても、レジスタ・スライス２には、予測値と関係なく動作する論理からそれに対して転送される信号をレジスタ・スライス記憶素子１２、１４のどちらか１つの中に格納する容量があるからである。現在、レジスタ・スライス記憶素子の両方に有効データ信号が含まれている場合に限り、制御論理は、レディ信号が次のサイクルで設定されないことを予測する。何故ならば、そのときレディ信号が実際に設定されていなかった場合、制御論理はいかなる入力信号も受信できないからである。
【００２４】
図１Ａの例と同様、制御論理は、受信したレディ信号に関係なく、それぞれ経路１３または１５を介して、レジスタ・スライス記憶素子１２、１４の選択された１つに有効信号を伝搬するように調整され、たとえば、それぞれ連続する受信した信号セットが異なるレジスタ・スライス記憶素子に送られるラウンドロビン方式を利用することができる（たとえば、信号の第１のセットは記憶素子１２に、第２のセットは記憶素子１４に、第３のセットは記憶素子１２にというように、以下同様に送られる）。さらに制御論理２０は、レジスタ・スライス記憶素子１２、１４の適切な１つから信号が出力され、レジスタ・スライス２からの出力が、信号を受信した順序と同じ順序になることを保証するように、制御経路１７を介してマルチプレクサ１６を制御する。
【００２５】
図１Ａおよび１Ｂに示すレジスタ・スライス１、２は、点Ａから点Ｂまで信号を転送するために必要なサイクルの数を増やす効果を有しているが、１クロックサイクルでカバーしなければならない部分経路の最大の長さを減らすという利点により、設計した装置が動作する最高クロック周波数が上昇する。
【００２６】
レジスタ・スライスを使用する１つの特殊な利点は、図２、３を参照して示すように、バーストを使うシステムで発生する。最初に図２を検討すると、マスタ・デバイス３０がちょうど１つのデータ項目を読み出すことを要求すると、この処理は、経路３５を介してスレーブ・デバイス４０にアドレスを送る１サイクルと、経路３５を介して戻されるデータに対する第２のクロックサイクルと２サイクルを必要とする。図３に示すシステムのレジスタ・スライスは、アドレス経路とデータ経路の両方で使用され、この同じ処理に４クロックサイクルが必要である。すなわち、経路７０を介してレジスタ・スライス５０にアドレスを報知するマスタ・デバイス３０のための１サイクル、経路７５を介してスレーブ・デバイス４０にアドレスを転送する第２のサイクル、データを発生し、そのデータを経路８０を介してレジスタ・スライス６０に出力するスレーブのための第３のサイクル、および経路８５を介してマスタ・デバイス３０に送り返されるデータのための第４のサイクルである。したがって、このような転送を実行するためにこのような時間を減らすため、レジスタ・スライスは、クロック周波数を１００％以上、上昇させることを可能にしなければならない。
【００２７】
しかし、その代わりとして転送が８つのデータ項目のバーストを指定したとすれば、図２のシステムでは、このことは、経路３５を介してアドレスを発行する１サイクルと、経路４５を介して８個のデータを受信する８サイクルの、全部で９サイクルを必要とすることは明白である。図３のシステムにおける同じ処理は、１１個のサイクル、すなわち、経路７０、７５を介してアドレスを発行する２サイクルと経路８０、８５を介してデータを受信する９サイクルを必要とする。このシナリオにおけるレジスタ・スライスは、必要とする時間を減らすためにクロック周波数を２２％以上、上昇させる必要があるにすぎない。
【００２８】
上記考察は、伝統的にレジスタ・スライス、またはパイプライン型手法が今日まで使用されてきた場合の簡単なポイント・ツー・ポイント接続に注目してきた。しかし、すべてのシステムがこのような簡単なポイント・ツー・ポイント接続を採用するとは限らない。
【００２９】
たとえば、図４は、パーソナル・オーガナイザ、移動電話機、テレビ用セットトップボックスなどのようなシステム・オン・チップ（System-on-Chip：SoC）の形をしたデータ処理装置を示している。ＳｏＣ設計１００には、バスの配置によって相互接続された複数の構成要素１２０、１３０、１４０、１６０、１７０、１８０がある。これらのバスの実際の相互接続は、相互接続ブロック１５０の中で指定される。相互接続ブロック１５０は、複数のバス・マスタ・デバイスとバス・スレーブ・デバイスを相互接続する接続のマトリックスを含む。したがって、各種バスを相互接続する相互接続ブロック１５０によって、各マスタ・デバイス１２０、１３０、１４０は、それぞれ対応するバス１２５、１３５、１４５に接続され、各スレーブ・デバイス１６０、１７０、１８０も、それぞれ対応するバス１６５、１７５、１８５に接続されうる。
【００３０】
各種要素を相互接続するバスは、指定されたバスプロトコルによって動作するのが普通であるから、たとえば、ＡＲＭ社によって開発された「高度マイクロコントローラ・バス・アーキテクチャ」（Advanced Microcontroller Bus Architecture：AMBA）にしたがって動作することができる。
【００３１】
したがって、相互接続ブロック１５０が、各種マスタ・デバイスとスレーブ・デバイス間の相互接続の複雑な配列を説明することは理解されるであろう。この複雑な配列は、情報のいくつかの一方向チャネルを含む。図５を参照して次に説明する１つの実施例によれば、タイミング特性の改善、電力消費特性の低減などのようなバス相互接続に選ばれた特性の要求に一致することを追求するため、相互接続ブロックの中でレジスタ・スライスを選択的に配置する方法論とツールが提供されている。
【００３２】
図５は、これらの間に相互接続ブロックがある２つのマスタ・システムと４つのスレーブ・システムを示している。図５の相互接続ブロックは、易しく示すために簡単にしてあるが、代表的な実施例における相互接続ブロックは、図５に示す配列よりもかなり複雑であることは理解されるであろう。図５から判るように、マスタ１  ２００またはマスタ２  ２１０が４個のスレーブ・デバイス２２０、２３０、２４０、２５０のどれとでも接続できるように、バス相互接続ブロックによっていくつかの経路が与えられる。マスタ・デバイスによって転送要求が発行されると、通常、スレーブ・デバイスへのアクセスがどのマスタに許可されるべきかを決定するためアービタが使用され、そのアービタはマルチプレクサ２６０に制御信号を送って、どの転送要求がスレーブ・デバイスに対して出力されるかを制御する。簡単にするため、図５にはアドレスバスだけが示されているが、マスタ・デバイスとスレーブ・デバイスの間に双方向のデータ経路が与えられていることは理解されるであろう。
【００３３】
輪郭が点線になっているボックス２０５、２１５、２２５、２３５、２４５、２５５および２６５は、レジスタ・スライス用の潜在的な場所を示している。場所２６５はすべてのマスタ・デバイスとスレーブ・デバイスの間の経路を中断しているから、共通の場所であることが判る。この場所のレジスタ・スライスは、レジスタの後にバスレベルマルチプレクサ２６０の組み合わせ的遅れを効果的に置く。１つの実施例における処理は、場所２６５のような潜在的な場所を識別するために実行され、これらの場所にレジスタ・スライスを追加することが適切か否かを決定する。この方法は、マルチプレクサ２６０を通過する経路のような組み合わせ論理を組み込んだこれら経路を、１つまたは複数の候補経路として選択することを含む。このような候補経路がマスタとスレーブの間の接続の全体、または、たぶんその接続の一部を形成することは理解されるであろう。
【００３４】
候補経路が選択されてしまうと、組み合わせ論理によって信号を処理するためにかかる時間が所定の閾値を超えるか否かが決定される。特定のクロックサイクルで、組み合わせ論理によって処理される信号は、記憶素子から組み合わせ論理に送られ、組み合わせ論理によって処理された後、出力信号が他の記憶素子に送られることが必要であることは理解されるであろう。したがって、組み合わせ論理の時間は、必要な処理機能を実行するために使用可能なクロックサイクル周期のある一部分であるにすぎないことは明白であるから、その組み合わせ論理によって信号を処理するためにかかる時間が、使用可能な時間を超過するか、超過しそうであるか否かに関する決定を実行することができる。イエスであれば、その候補経路の部分経路の数を増加するために、候補経路の中に記憶素子を挿入するように処理を調整する。この処理は、たとえば、ＲＴＬ定義段階のような設計段階中の何らかの適切な段階、で実行されうる。
【００３５】
バス相互接続ブロックの中の他の場所でレジスタ・スライスを使用することは、タイミング特性を改善することに役立つ。たとえば、相互接続ブロック内に用意されている記憶素子のどれかと、マスタ２  ２１０との間の経路のような経路を候補経路として選択し、該経路を介してバス相互接続ブロックがマスタ・デバイスまたはスレーブ・デバイスから信号を受信するように処理を実行してもよい。つぎに信号を受信するために要するセットアップ時間が、所定の閾値を超過するか否かを決定することができる。マスタ・デバイスまたはスレーブ・デバイスが信号を有効に立ち上げるために、或る量のクロックサイクルが必要であり、このためにバス相互接続ブロックによる信号の受信に使用される使用可能なクロック周期の一部分だけが残ることは理解されるであろう。信号を受信するために要するセットアップ時間が使用可能な時間を超過する場合、処理を調整して候補経路にレジスタ・スライスを挿入することができるので、たとえば、場所２１５にレジスタ・スライスを導入することを決定することができる。場所２１５のレジスタ・スライスは、何らかの大きな出力遅れをマスタ２  ２１０から隠すであろう。
【００３６】
それだけでなく、たとえば、相互接続ブロック内に用意されている記憶素子のどれかと、スレーブ・デバイス４  ２５０との間の経路のような経路を候補経路として選択し、該経路を介して、バス相互接続ブロックがマスタ・デバイスまたはスレーブ・デバイスに対して信号を出力するように処理を調整してもよい。バス相互接続ブロックがマスタ・デバイスまたはスレーブ・デバイスに対して信号を出力する経路、たとえば、相互接続ブロックの中の内部記憶素子のどれかとスレーブ・デバイス４  ２５０との間の経路のような経路を候補経路として選択することができる。つぎに処理を調整して、その候補経路に対してバス相互接続ブロックから有効な信号を出力するためにかかる時間が所定の閾値を超過するか否かを決定することができる。そのときこれらの信号を有効に受信している受信装置に対して十分な時間を残すために、出力信号を有効に立ち上げるクロック周期の一部分だけが相互接続ブロックに対して使用可能であることは理解されるであろう。したがって、有効信号を出力するためにかかる時間が使用可能な時間を超過することが決定されると、この処理を調整して候補経路の中にレジスタ・スライスを挿入し、その候補経路の中の部分経路の数を増加させることができる。したがって、一例として、この処理は、スレーブ・デバイス４  ２５０の大きな入力セットアップ時間を隠すために場所２５５にレジスタ・スライスを挿入することを決定することができる。
【００３７】
特定のマスタ・デバイスまたはスレーブ・デバイスを備えたインタフェースに対してローカルにレジスタ・スライスを配置する利点は、すべてのアクセスに対して必要なサイクル数に大きな影響を与えないことである。たとえば、マスタ・デバイス２  ２１０に関連して場所２１５にレジスタ・スライスを配置すれば、この配置は、スレーブ・デバイス２２０、２３０、２４０または２５０のどれかにアクセスするためにマスタ・デバイス１  ２００によって必要とされるサイクル数にまったく影響を与えない。さらにマスタ・デバイス１  ２００がバスのトラヒックの大部分、たとえば９０％を担当しているとすれば、場所２１５のレジスタ・スライスは全システムのクロック周波数を１０％以上上昇させて、アドレスを発行する総合速度に利点を生じることが必要であるにすぎない。
【００３８】
上に説明した手法によれば、レジスタの場所のいかなる組み合わせも適切であると思われるので、たとえは、レジスタ・スライスを場所２０５、２６５、２３５、および２５５に配置してもよい。
【００３９】
個々のマスタ・デバイスまたはスレーブ・デバイスが相互接続ブロックの中でレジスタ・スライスを使用することから得る利点の例は、次の通りである。
１．マスタまたはスレーブ構成要素の設計が、入力経路または出力経路で組み合わせ論理を含んでいる場合。
２．マスタ・デバイスまたはスレーブ・デバイスが、バスの他の構成要素から遠い距離に物理的に配置されている場合。
３．マスタ・デバイスまたはスレーブ・デバイスが異なる電力領域で動作中であり、デバイスとシステムの残り部分との間に電圧レベル・シフターが必要な場合。
４．マスタ・デバイスまたはスレーブ・デバイスが、出力デバイスの能力が固定された「ハードウエア化された」構成要素として供給される場合。
５．マスタまたはスレーブ構成要素が、クロックツリーの異なる分岐に配置され、クロック配分のアンバランスが、その構成要素の出力された有効時間または入力されたセットアップ時間（the output valid or input setup time of that component）を効率的に増加している場合。
【００４０】
バス相互接続ブロック内でレジスタ・スライスを使用する考えのさらなる拡張は、レジスタ・スライスのレイアウト段階の最適化を実行することである。１つの実施例では、このことは初期設計の中で、設計のレイアウト段階中に除去の候補となるいくつかの仮（provisional）レジスタ・スライスを含めることによって達成されるのであるが、これらのレジスタ・スライスを除去してもシステムのクロック周波数が所要速度に到達することを防止しないと決定されると、これらのレジスタ・スライスは除去される。
【００４１】
図６は、レイアウト段階で実行されるとともに、レイアウトツールで実行される処理を示している。
【００４２】
ステップ３００で、レイアウトツールを使用し、設計処理の初期段階、たとえば、ＲＴＬ段階で含まれる仮レジスタ・スライスを含めて現在のレイアウトが生成される。ｎＭＡＸが、除去すると考慮（considered for removal）されている仮レジスタ・スライスの全数を表す場合、各仮レジスタ・スライスには、１からｎＭＡＸまでの関連番号が与えられる。この番号ｎＭＡＸは、仮レジスタ・スライスの全数、またはその全数の何らかの部分集合を含むことができることは理解されるであろう。ステップ３０５で、ｎは１に設定された後、処理はステップ３１０に進み、試作レイアウトを作るために、ここでレジスタ・スライスｎが除去される。
【００４３】
次にステップ３１５で、レジスタ・スライスｎを除去した結果生じた新しい各部分経路に対して、クロックサイクル周期より短いかクロックサイクル周期に等しい時間でこの部分経路を信号が伝搬するか否かを決定するため、レジスタ・スライスｎの周囲の経路でタイミング解析が実行される。本明細書ではこのクロックサイクル周期をＴＭＡＸと呼称する。部分経路でタイミング解析を実行するいくつかの既知の手法が存在しており、普通、このような処理は、識別した各部分経路でゲートによる遅れと配線遅れと配線による遅れ（wire delay）を計算し、対応する部分経路を介して信号が転送されることを決定することを含むことは理解されるであろう。
【００４４】
この後ステップ３２０で、レジスタ・スライスｎの周囲のこれらの経路のタイミングがすべて、ＴＭＡＸより小さいか、ＴＭＡＸに等しいか否か決定され、イエスであれば、ステップ３２５で試作レイアウトが、新しい現在のレイアウトとして採用される。これ以外の場合、処理はステップ３３０に分岐し、ここで試作レイアウトが廃棄されその代わりに既存の現レイアウトが使用される。
【００４５】
次に処理はブロック３２５またはブロック３３０からブロック３４０に進み、ここでｎがｎＭＡＸに等しいか否か決定され、イエスであれば、すべてのレジスタ・スライスを除去すると考えられていることを示しているので、処理はステップ３４５で終了する。しかし、ｎがｎＭＡＸに等しくなければ、ステップ３５０でｎを１だけ増分した後、処理はステップ３１０に戻り、次のレジスタ・スライスの除去を考慮する。
【００４６】
各仮レジスタ・スライスに１とｎＭＡＸの間の番号を付与する方法は、いろいろな方法で調整され、たとえば、（たとえば、各種既存部分経路のタイミング情報に基づいて）除去される可能性が最も高い仮レジスタ・スライスが最初に考慮される。代替方法として、高帯域幅のマスタ・デバイスに関連するレジスタ・スライスを最初に除去すると考慮されるように、レジスタ・スライスに番号を付与することを決定してもよい。
【００４７】
図７Ａ、７Ｂは、このような仮レジスタ・スライスの除去を実行する代替可能な処理を示しており、ここではいくつかのステップが平行して実行される。より詳細には、ステップ４００で仮レジスタ・スライスを含む現レイアウトが生成され、その後、ステップ４０５で除去すると考慮されるｎＭＡＸ個のレジスタ・スライスが選択されることは理解されるであろう。この番号ｎＭＡＸは、仮レジスタ・スライスの全数または部分集合を含むことができることは理解されるであろう。たとえば、いくつかの候補経路は、該経路に沿って与えられ候補経路を複数の部分経路に分割する複数の仮レジスタ・スライスを有し、この処理の同じ繰り返し中に、これらの仮レジスタ・スライスのすべてを除去することを考えることは適切ではないであろう。
【００４８】
図７Ａ、７Ｂの次の説明から、この実施例が繰り返し処理となるように意図されているので、ｎＭＡＸの選択は、図６の実施例で実行されたｎＭＡＸの選択とはたぶん異なっていることは理解されるであろう。図６の実施例では、設計における各仮レジスタ・スライスには独自の番号が付与されると予見されたので、ｎＭＡＸは、除去すると考慮された仮レジスタ・スライスの全数に等しく選択された。しかし、図７Ａ、７Ｂにおける仮レジスタ・スライスのグループは、処理の異なる繰り返しの中にあると考慮することができるので、どの特定の繰り返しの中でも、ｎＭＡＸは、その繰り返しの中で除去すると考慮されている仮レジスタ・スライスの全数に選ばれる。さらに仮レジスタ・スライスに割り当てられた番号はユニークではないが、その代わり、その繰り返しの中で考慮されているレジスタ・スライスは、１からｎＭＡＸの番号が割り当てられる。しかし、代替可能な実施例におけるユニークな番号は依然として全仮レジスタ・スライスに割り当てられ、特定のグループのレジスタ・スライスが各繰り返しで考慮されるように各繰り返しではｎＭＩＮ値とｎＭＡＸ値の両方が存在している。
【００４９】
ステップ４０５でレジスタ・スライスの番号ｎＭＡＸが選択されていると、ステップ４１０でテストが実行され、ｎＭＡＸがゼロに等しいか否かを決定する。普通、これは、図７Ａ、７Ｂを通じて最初の繰り返し中のケースではないが、何らかの後続繰り返しの中のステップ４０５で現実に除去される仮レジスタ・スライスがもはや皆無であると決定されると、最終的に起こるケースにある。ステップ４１０でｎＭＡＸがゼロであると決定されると、処理はステップ４１５に進み、ここで、１クロックサイクル以内に信号が部分経路を横断することができる部分経路は存在しないことを保証するために、バス相互接続ブロックの経路のタイミングで最終のダブルチェックが実行される。これはそのケースであってはならない。何故ならば、当初、信号はクロックサイクルの周期を超過することなく、すべての部分経路を横断することができたからであり、図７Ａ、７Ｂの処理を使用してレジスタ・スライスが除去されるたびに、影響を受ける部分経路でチェックが実行されるからである。設計で他の部分経路は影響されないのが普通である。何故ならば、レジスタ・スライスの除去には、残りの設計のレイアウトに、いかなる修正も含まれないからである。しかし、ステップ４１５でダブルチェックが実行されることによって現れるいかなるタイミングの問題も識別することができる。
【００５０】
ｎＭＡＸがゼロに等しくないと仮定すると、処理はステップ４２０に進み、ここでｎは１に等しく設定された後、ステップ４２５でレジスタ・スライスｎが設計から除去される。
【００５１】
この後ステップ４３０で、ｎがｎＭＡＸに等しいか否か決定され、ノーであれば、ステップ４３５でｎが１だけ増分された後、次のレジスタ・スライスｎがステップ４２５で除去される。
【００５２】
ステップ４３０でｎがｎＭＡＸに等しいと決定されると、処理はステップ４４０に進み、ここで再びｎが１に等しく設定された後、ステップ４４５でレジスタ・スライスｎの周囲の経路でタイミング解析が実行される。この処理は、図６を参照して前に説明した処理３１５に似ている。この後で処理はステップ４６０に進み、ここでレジスタ・スライスｎの周囲の経路のタイミングがＴＭＡＸより小さいかＴＭＡＸに等しいこと、つまり、信号が１クロックサイクルですべての影響を受けた部分経路を横断することができるか否か決定される。この処理は、図６を参照して前に説明した処理３２０に似ている。新しいタイミングのすべてがＴＭＡＸより小さいと仮定すると、処理はステップ４７０に進み、ここでレジスタ・スライスｎを除去するとして予定に入れる。次に処理はステップ４８０に進み、影響を受けた部分経路のすべてのタイミングがＴＭＡＸより小さいとは限らない場合は、ステップ４６０からステップ４８０に直接進み、ステップ４８０でｎがｎＭＡＸに等しいか否か決定される。ノーであれば、ステップ４８５でｎが１だけ増分された後、処理はステップ４４５に戻る。
【００５３】
ｎがｎＭＡＸに等しいと決定されると、処理はステップ４９０に進み、ここで再びｎが１に等しく設定された後、ステップ４９５でレジスタ・スライスｎを除去する必要があるか否か決定される。このことは、スケジュールをつくるステップ４７０で格納された情報によって示されている。レジスタ・スライスｎが除去されると、そのレジスタ・スライスはステップ５００で除去されて、改訂されたレイアウトを生成し、その後でその改訂されたレイアウトはステップ５０５で新しい現用レイアウトになる。次に処理はステップ５１０に進むか、またはレジスタ・スライスｎが除去されないと決定された場合はステップ５１０からステップ４９５に直接進む。ステップ５１０でｎがｎＭＡＸに等しいか否か決定され、ノーであれば、ステップ５１５でｎが１だけ増分された後、処理はステップ４９５に戻る。ステップ５１０でｎがｎＭＡＸ等しいと決定されると、処理はステップ４０５に戻り、処理の他の繰り返しで考慮される何らかの残りの仮レジスタ・スライスを選択が実行される。前述の通り、或る繰り返しで次の繰り返しのｎＭＡＸがゼロであると決定されると処理は終了し、ステップ４１５でバス相互接続ブロックのタイミングがダブルチェックされる。
【００５４】
上で説明した、設計の中で既に与えられている仮レジスタ・スライスを除去する方法には利点がある。何故ならば、上記方法は、空間が多く最適とはいえないレイアウトが得られるにすぎない結果となる設計の他の領域に混乱を与えることを必要とせずにレジスタ・スライスを除去できるからである。それだけでなく、レジスタ・スライスを除去するこの方法は、相互接続の性能として最悪ケースのモデルを仮定して、システムの性能に関する重要な解析を実施するこを可能にするとともに、この方法がシステム性能の総合特性の改善になるだけのはずであるということが判っているので、どのレジスタ・スライスを除去しても安全である。しかし、設計の中で仮レジスタ・スライスを追加するためと、これらのレジスタ・スライスをレイアウト段階中に除去することを追求するための代替方法として、レイアウト段階で処理を実行し、新しいレジスタ・スライスを導入すべきか否かを決定することが可能である。図８の流れ図を参照し、例を示してこのような処理を説明する。
【００５５】
ステップ６００で、現在の設計に基づき現用レイアウトが生成される。次にステップ６０５でどの経路が許容不能であるか否か、つまり、信号がこれらの部分経路を横断するためにかかる時間がクロックサイクル周期ＴＭＡＸより大きい部分経路がどの経路に含まれているか否か決定される、ノーであれば、訂正処置は不要であり、処理はステップ６１０で終了する。しかし、許容不能経路が存在していることが想定されると、処理はステップ６１５に進み、ここで選んだ基準が適用され許容不能経路を選択する。この処理を実行する方法がいくつかあることは理解されるであろう。たとえば、タイミングが最も長い、つまり、最も受け入れがたい許容不能経路を選択してもよいし、代替方法としてこの選択をランダムに実施してもよい。
【００５６】
この後で、処理はステップ６２０に進み、ここで経路にレジスタ・スライスが追加され試作レイアウトを生成した後、ステップ６２５でタイミング解析が実行され、相互接続ブロックの中に容認不能経路がいまも存在しているか否か決定する。ステップ６１５で選択された容認不能経路の中にレジスタ・スライスを追加することは、その経路のタイミング特性を改善することは明白であるが、その経路は依然として容認不能な経路である。さらにシステムの中には他の容認不能経路がたぶん存在しており、事実、レイアウト設計に付随する動きによって、このようなレジスタ・スライスを導入すると、いくつかの経路のタイミングに不都合な連鎖反応（knock-on adverse effect）が生じる可能性がある。ステップ６２５で相互接続ブロックの中に容認不能経路が１つも残っていないことが決定されると、処理はステップ６３０で終了するが、それ以外の場合、処理はステップ６３５に進み、ここで所定の基準が適用され、現用レイアウトに優先して試作レイアウトを受け入れるか否か決定する。いくつかの基準を使用してこの決定が実行されることは理解されるであろう。たとえば、試作レイアウトの中の最長容認不能経路（つまり、タイミングが最長の経路）のタイミングが、現用レイアウトの中の最長容認不能経路よりも小さい場合、試作レイアウトを受け入れると決定してもよい。代替方法として、またはそれに加えて、現用レイアウトの中の容認不能経路の総数に比較して試作レイアウトの中の容認不能経路の総数を検討してもよい。現用レイアウトと比較して試作レイアウトのタイミング特性が改善されているか否かを決定する場合、他の各種基準を検討してもよいことは理解されるであろう。
【００５７】
ステップ６３５で所定の基準を適用したことの次に、ステップ６４０で、所定の基準の適用の結果得られた決定に基づいて試作レイアウトを受け入れるか否か決定される。試作レイアウトを受け入れるべき場合、処理はステップ６４５に進み、ここで試作レイアウトが現用レイアウトになった後、処理はステップ６１５に戻って、さらなる容認不能経路を選択する。ステップ６４０で試作レイアウトを受け入れるべきではないと決定されると、処理はステップ６５０に分岐し、ここで試作レイアウトが廃棄され、かわりに以前の現用レイアウトが使用された後、処理はステップ６１５に進み異なる容認不能経路を選択する。ステップ６１５で適用された選んだ基準は、以前に選択されたが、バス相互接続ブロック全体のタイミング特性を改善しないと考えられる容認不能経路の記録をとっておくのが普通であることは理解されるであろう。
【００５８】
設計の中でレジスタ・スライスを追加する場合、レイアウトを修正してレジスタ・スライスを挿入する余地をつくらなければならないので、レジスタ・スライスを挿入すると、そのときレジスタ・スライスを選択的に除去した図６、７の代替的方法を使用していた設計の他の領域で連鎖反応が生じる可能性が大きいことは理解されるであろう。それにもかかわらず、どんな特定の実施例でも２つの方法を使用することができることは理解されるであろう。たとえば、設計のときに仮レジスタ・スライスを与え、後でこれらのレジスタ・スライスを選択的に除去する方法は、そのとき、必要なタイミング特性に合致するために必要と思われる何らかのレジスタ・スライスを選択的に挿入するために使用される図８の処理とともに、基本処理として使用されうる。
【００５９】
バス相互接続ブロックの中でレジスタ・スライスを使用する他の可能性は、システムの中のいくつかのマスタおよびスレーブ構成要素を分離することである。どの時点でどのマスタ・デバイスがスレーブ・デバイスにアクセスできるようにするかを制御するために使用されるマルチプレクサ７２０とともに、４個のスレーブ・デバイス７３０、７４０、７５０、７６０と相互接続される２つのマスタ・デバイス７００、７１０を示す図９を参照して、この可能性をさらに考察する。ここでも判りやすくするため、図９にはアドレス経路だけが示されている。電力消費を改善することを追求するため、或る経路を候補経路として選択し、該経路を介してバス相互接続ブロックがマスタ・デバイスとスレーブ・デバイスのインタフェースをとることを含む処理を実行してもよい。つぎに所定の基準を適用し、その候補経路の中のレジスタ・スライスの存在（provision）によって関連するマスタ・デバイスまたはスレーブ・デバイスを他の構成要素から分離することが適切であるか否かを決定する。このステップでいくつかの基準を使用できることは理解されるであろう。通常、その経路に接続されたマスタ・デバイスまたはスレーブ・デバイスの数が多くなればなるほど、これらのマスタ・デバイスまたはスレーブ・デバイスによって使用される相互接続ブロックの帯域幅が小さくなって、電力消費のより大幅な節約が達成される。
【００６０】
一例として、図９のシステムを検討すると、システムの帯域幅の大部分はスレーブ・デバイス１  ７３０に対するものであることが判る。次に、スレーブ・デバイス７４０、７５０および７６０に与えられた経路にレジスタ・スライス７７０を挿入することは利点があると考えられる。マスタ・デバイスから転送要求が発信されると、その転送要求は、マルチプレクサ７２０を介してスレーブ・デバイス１  ７３０とレジスタ・スライス７７０の双方に接続される。バス相互接続ブロックの中の復号器によって何らかの初期アドレスの復号が実行され、その要求が、スレーブ・デバイス１またはスレーブ・デバイス２，３および４の１つに行くことになっているか否かを決定する。アクセス要求がスレーブ・デバイス２，３および４の１つに行くことになっている場合にのみ、レジスタ・スライス７７０はアドレスの有効信号（address valid signal）を受信して、受信した信号をレジスタ・スライスの中に格納する原因となる。したがって、レジスタ・スライスがなければ、その転送要求は、アドレス有効信号を受信するスレーブ・デバイスの１つがある４個のスレーブ・デバイスのすべてに対して伝搬してしまうであろうが、レジスタ・スライス７７０が存在すると、これらのスレーブ・デバイスの１つがアクセス要求の意図した受け手でない限り、スレーブ・デバイス２，３または４に対するアクセスをすべて回避することによって、電力消費が大幅に減少した。この利点の代償（trade-off）は、スレーブ・デバイス２，３または４にアクセスするためにより多くのクロックサイクルが必要なことであるが、これらのスレーブ・デバイスは比較的まれにアクセスされると仮定すると、電力節減の利点は、レジスタ・スライス７７０の存在を正当化することができることは理解されるであろう。
【００６１】
これまでに考察してきた実施例のすべては、設計の中でレジスタ・スライスを含めるか含めないかを設計時点で決定する手法に関連している。このような手法は、予見される（たとえば、動作条件、動作環境などの）動作特性の最悪ケースのセットを検討した設計をする場合に役立つが、その設計の通りにつくられた装置の１台１台は異なる動作条件で使われるとともに、異なる動作環境に置かれるので、装置は最適状態以下で使用されることになる。たとえば、特定のどの実施例における装置も、設計中に検討された目標クロック速度よりも遅いクロック速度で動作し、設計中に検討された電圧レベルとは異なる電圧レベルで使用される等々である。その上、製造公差は設計の通りにつくられた装置の１台１台の間の差異となり、このため各装置の動作環境と同様、動作特性の変動を発生させる。
【００６２】
このような異なる動作条件と動作特性にデータ処理装置が適応できるようにするため、１つの実施例におけるデータ処理装置は、図１０に示すような、１つまたは複数の選択可能レジスタ・スライスを含む。図１０から判るように、このような各選択可能レジスタ・スライス８００には、選択可能レジスタ・スライス８００を通る経路、または迂回経路８１０のいずれかの選択を可能にするために用意されているマルチプレクサ８２０とともに、迂回経路８１０が付随している。マルチプレクサ８２０は、セットアップ情報に基づき、選択可能レジスタ・スライス８００または該レジスタ・スライスに付随する迂回経路８１０のいずれかの選択を制御するコントローラにより、コントローラから供給されるイネーブル信号によって駆動され、選択可能レジスタ・スライス８００を使用すべきか否かについて、実行時に動的に決定することを可能にする。
【００６３】
レジスタ・スライス８００を迂回することにより、信号が特定の接続を横断するために要するクロックサイクルの数を減らすことができるが、このことは、特定のクロックサイクル中に信号がさらに遠くまで横断することを必要とする。１つの動作モードにおけるデータ処理装置は、たとえば、リセットの後で各選択可能レジスタ・スライスを使用する初期設定になる。何故ならば、このことは、データ処理装置があらゆる条件で機能的に動作できることが保証されると、データ処理装置は、コントローラの制御のもとに動作を迂回モードへ切り替えて、その場合の動作条件が迂回モードの使用を可能にすると決定されると、選択可能レジスタ・スライス８００は選択的に迂回されるからである。
【００６４】
図１１は、データ処理装置がバス相互接続ブロックである状態における選択可能レジスタ・スライスの手法の代表的な実施例を示している。図１１に示すように、２つのマスタ・デバイス８３０、８４０は、バス相互接続ブロックを介してそれぞれ４つのスレーブ・デバイス８６０、８７０、８８０、８９０と相互接続されている。基本的構造は、図５を参照して以前に説明した構造と同じであり、図５と同様、判りやすくするためにアドレス経路だけが示されている。しかしこの例では、選択可能レジスタ・スライス、８３５、８４５、８５５、８６５、８７５、８８５および８９５は、各マスタ・デバイスとスレーブ・デバイスに対するインタフェースとマルチプレクサ８５０の出力とに関連するバス相互接続ブロックの中に組み込まれている。コントローラ８２５は各選択可能レジスタ・スライスの一部を形成するマルチプレクサに対して必要な制御信号を発生するために用意されている。
【００６５】
選択可能レジスタ・スライスのすべてが使用されているので、信号がマスタ・デバイスからスレーブ・デバイスまで伝搬するために４クロックサイクル要することが図１１から判る。しかし、一例として、コントローラによって使用されるセットアップ情報に基づいて、スレーブ・デバイス８８０に付随するレジスタ・スライス８８５を迂回できることが決定されると、これによってスレーブ・デバイス８８０に対するアクセスにかかる時間が１サイクルだけ少なくなる。同様に、マスタ・デバイス８３０に付随する選択可能レジスタ・スライス８３５を迂回できることをセットアップ情報が示していると、これによってそのスレーブ・デバイスからスレーブ・デバイスに転送要求を送るためにかかる時間が１サイクルだけ少なくなる。さらに選択可能レジスタ・スライス８５５を迂回できることをセットアップ情報が示していると、これによってスレーブ・デバイスからスレーブ・デバイスにあらゆる転送要求を送るためにかかる時間が、１サイクルだけ少なくなる。
【００６６】
図１１に示すアドレス経路に加えて、マスタ・デバイスとスレーブ・デバイスの間に、上に説明したように両方向のデータ経路が用意されており、上に説明したような選択可能レジスタ・スライスがデータ経路に挿入されると、マスタ・デバイスからスレーブ・デバイスまで、またはスレーブ・デバイスからマスタ・デバイスまでの特定の接続の中の部分経路の数を変更できることは理解されるであろう。
【００６７】
したがって、このような設計により、実際の動作条件を検討してデータ処理装置の動作効率の改善を追求するために、生産後の装置に大幅なフレキシビリティが使用できることが判るであろう。
【００６８】
コントローラ８２５によるレジスタ・スライスの制御について、採用することができるいくつかの異なる方法がある。第１の実施例では、所定のセットアップ情報を使用するコントローラによって起動時のレジスタ・スライスの構成を実行することができる。この実施例におけるデータ処理装置、図１１の例の中のバス相互接続ブロックは、その装置を使用する特定の実施例に注意して必要なレジスタ・スライスだけを含むように起動時に構成される。この所定のセットアップ情報は、各種実施例、たとえば、研究所の中の環境で特徴付けされたような（laboratory characterisation environment）実施例に対して決定されているのが普通である。したがって、図１１の例を考えると、バス相互接続ブロックが移動電話機の中にあるシステムで使用され、比較的低クロック速度または比較的停電力で走行するとすれば、所定のセットアップ情報をその実施に対して使用することができ、起動時にコントローラを使用して選択すべき適切なレジスタ・スライスと、どのレジスタ・スライスを迂回すべきかを決定することができる。代替方法として、高速のクロック速度と大電力、またはそのいずれかで動作するコンピュータの中で実施されるシステムの中で同じバス相互接続ブロックが使用されることになっていると、選択可能レジスタ・スライスの適切な選択を決定するため、コントローラは、起動時に異なるセットの所定のセットアップ情報を参照することができる。
【００６９】
第２の実施例では、起動時にレジスタ・スライスの構成を再度実行することができるが、適切なセットアップ情報を決定するため実行する動的テストと一緒に実行される。この方法によれば、どの経路がレジスタ・スライスの使用を必要とするかを決定するために実行するテスト処理を起動シーケンスに含めることができる。普通、このテスト処理には、選択可能レジスタ・スライスを挿入するか除去するかによって影響を受ける経路を介して送られる各種信号の、タイミングテストの性能が含まれる。一例として図１１を考えると、このテスト処理には、各種選択可能レジスタ・スライスのいくつかの異なる選択構成（たとえば、全レジスタ・スライスを選択する、いくつかのレジスタ・スライスを選択する、いくつかのレジスタ・スライスを迂回する、またはすべてのレジスタ・スライスを迂回する等々）を採用することと、選択構成ごとに、特定のレジスタ・スライスを迂回することによって影響を受ける経路を介して各種信号を送り、これらの信号が１クロックサイクル以内に影響を受けた部分経路を安全に横断することができるか否かを決定することを含むのが普通である。各選択構成は、データ処理装置のユニークな設計を効率的に定義し、特定の設計に関連するタイミングテストの性能は当業者によってよく理解されるであろうから、ここでさらに詳細に考察することはしない。テスト信号がそのレジスタ・スライスの迂回から生じる拡張された部分経路を１サイクル以内で横断できることをタイミングテストが確認すると、どの選択可能レジスタ・スライスも迂回できるにすぎないことは理解されるであろう。
【００７０】
動的テスト方法を使用する利点は、この方法によって各装置が、その動作環境に適応できるようになることである。しかし、１つの潜在的欠点は、動作温度や供給電圧のような動作特性の小さな変化でも機能的障害を発生させることができることである。しかし、これが発生する可能性は、テスト手続きを実行する場合にこのような変動を考慮することによって少なくなりうる。たとえば、データ処理装置が特定のクロック速度で動作することになっていると、テスト手続きを実行する場合、若干速くしたクロック速度を使用してもよいので、テスト手続きに合格したレジスタ・スライスの特定の構成が選択された場合、温度変化に起因するような動作特性の小変化によって生じる変動では機能的障害を発生しないと確信できるであろう。
【００７１】
たとえば、データ処理装置の製造前のタイミング特性の中に不確定性が存在する場合や、データ処理装置の信号完全性特性の中に不確定性が存在する場合のように、いくつかの異なるケースで、起動時の構成が適用可能なことは理解されるであろう。
【００７２】
第３の実施例では、第１の実施例を参照して以前に考察したように、所定のセットアップ情報を使用することができるが、動作条件が変化すると構成を動的に実行することができる。たとえば、各種クロック速度、各種供給電圧などに対して、異なる所定のセットアップを定義することができる。つぎに動作中に動作条件の変化が起こることになっていると、たとえば、正規の動作モードからスタンバイ動作モードに変化すると、コントローラを動的に呼び出し、新しい動作条件に適切な選択可能レジスタ・スライスだけを選択するために、新しい動作条件に適切な所定のセットアップ情報を適用する。この処理は、動作条件の変化がクロック速度の変化を含む場合の例を示す図１２の流れ図によって模式的に示されている。
【００７３】
ステップ９００でクロック速度の変化が必要か否かが決定され、イエスであれば、処理はステップ９０５に進み、ここでクロック速度が上昇しているか低下しているかが決定される。クロック速度が上昇していると、処理はステップ９１０に進み、ここでレジスタ・スライスコントローラ８２５が新しいクロック速度に適した新しい値でプログラムされる。これらの新しい値は、新しいクロック速度に適した所定のセットアップ情報から取り出される。これによって、コントローラが各種選択可能レジスタ・スライスに改訂したセットのイネーブル信号を出力し、これらの値に依存して各レジスタ・スライスを選択するか、迂回する。この後ステップ９１５で、クロック速度を新しいクロック速度に変更する。
【００７４】
クロック速度が上昇している時、クロック速度の変化に先立ち、レジスタ・スライスの選択を実行することが適切なことは明らかである。それ以外の場合はその間に機能的障害が発生するからである。しかし、クロック速度が低下している時、処理はステップ９０５からステップ９２０に分岐し、ここで第１にクロック速度が新しいクロック速度に変更される。いかなるクロック速度の低下も、信号が各部分経路を横断するために利用可能な時間を増やすので、この点でいかなる機能的障害にもならないから、クロック速度のこの変更を第１に実行することは安全である。この後ステップ９２５で、新しいクロック速度に用意された適切な所定のセットアップ情報から決定される新しいクロック速度に適した新しい値で、コントローラ８２５をプログラムすることができる。前に考察したように、これらの値は、改訂したイネーブル信号のセットになり選択可能レジスタ・スライスに送られると、これらの値によって定義されるとおり各レジスタ・スライスを選択するか、迂回する。
【００７５】
次に処理はステップ９００に戻り、後に続くクロック速度の変化の検出を待つ。
【００７６】
図１２は、クロック速度の変化について示しているが、同様なシーケンスの流れは、たとえば、供給電圧の変化のような他の動作条件の変化に対しても実行されうる。供給電圧が変化していれば、ステップ９０５に相当して実行する適切な決定は、供給電圧が低下しているか否かに関する決定であることは理解されるであろう。供給電圧が低下していると、これによって信号が特定の接続を横断する速度が遅くなるので、電圧が変化する前に新しい値でコントローラ８２５をプログラムしない限り、機能的障害が発生する可能性があることになる。
【００７７】
第４の実施例では、第２の実施例を参照して以前に説明したように、セットアップ情報を決定するため動的テスト手続きが実行されるが、この場合、動的テストは起動時にちょうど実行されるのではなく、動作条件が変化する場合と、動作条件を変更することになっている場合に動的に実行される。この方法の利点は、各装置が自装置の動作環境に適応できるようにするとともに、さらに異なる動作条件ごとに適切なセットアップを使用することを保証するため、動作条件の各種変化に注意することである。動的テスト手続きを使用して、このような動的構成を可能にするように実行することができる処理の例を、図１３を参照してさらに考察する。
【００７８】
起動時に、あるいはクロック速度、供給電圧などのような動作条件の変更が要求されると、いつでも図１３のテスト手続きが採用される。ステップ９３０でテスト手続きが開始すると、その後のステップ９３５で、すべての選択可能レジスタ・スライスに対して迂回経路がオフに切り替えられる。したがって、このため第１の繰り返しで構成はテスト手続きに合格することが保証される。何故ならば、選択可能レジスタ・スライスは設計の中で含まれており、たとえば、最高のクロック速度／最低の供給電圧の組み合わせのような信号タイミングに対して最悪の場合のシナリオが考慮されているからである。
【００７９】
ステップ９４０で変数ｎを１に等しく設定した後、ステップ９４５でレジスタ・スライスｎの迂回経路をオンに切り替える。迂回することをテストすることが決まっている候補であるレジスタ・スライスの全数があり、ここではｎＭＡＸと呼ぶことにするが、このような各レジスタ・スライスの値は、ｎのユニークな値である。各レジスタ・スライスに付随するｎの値は勝手に決めても良く、あるいは代替方法として、ｎが最低値のレジスタ・スライスが迂回の候補になる可能性が最も高いように選ぶことができることは理解されるであろう。
【００８０】
この後のステップ９５０で、レジスタ・スライスｎの迂回経路を通過するすべての接続がタイミングテストを受ける。前に考察したように、普通、これには、これらの接続を介していろいろな信号を送信し、これらの信号が、１クロックサイクル以内に影響を受けた部分経路を安全に横断できる否かを決定することが含まれる。ステップ９５５で、すべての接続がテスト手続きに合格するか否か、つまり、すべての信号が１クロックサイクルで必要な部分経路を横断したか否かが決定される。イエスであれば、処理はステップ９６５に進み、ここでｎがｎＭＡＸに等しいか否かが決定される。代替方法として、すべての接続がテスト手続きに合格するとは限らない場合、処理はステップ９６０を介してステップ９６５に進み、ここでレジスタ・スライスｎの迂回経路をオフに切り替える。特定の接続に対するテストが失敗したとすれば、このことは、考慮中のレジスタ・スライスが迂回すべき適切なレジスタ・スライスではないことを示しているので、ステップ９６０で迂回経路をオフに切り替えることは、処置の適切な過程である。
【００８１】
ステップ９６５でｎがｎＭＡＸに等しいことが決定されると、処理はステップ９７５で終了する。何故ならば、この場合、テストすることが適切であると考えられる選択可能レジスタ・スライスのすべては、テストが終わっているはずだからである。ステップ９６５でｎがｎＭＡＸに等しくないことが決定されると、ステップ９７０でｎが１だけ増分された後、処理はステップ９４５に戻る。
【００８２】
この方法により、特定の動作条件に適用できるレジスタ・スライスの適切な選択を決定するため、各レジスタ・スライスの迂回を順番にテストできることが判る。テスト手続きは遷移中の新しい条件に対して実行され、以前に説明したように、このテスト手続きを調整して、装置の動作環境の変動の結果として発生することがある何らかのタイミング変動の余裕をみておくことができることは理解されるであろう。
【００８３】
レジスタ・スライスまたは迂回経路のいずれかを動的に選択する考え方は、図１１を参照して示したようなバス相互接続ブロックを組み込んだデータ処理装置に対してだけでなく、データ処理装置の他の構成要素に対しても適用可能である。たとえば、使う方法をパイプラインの各ステージで論理の量にアンバランスが存在するパイプライン型データ処理装置で、この選択可能レジスタ・スライスを使用することができる。このようなデータ処理装置が図１４に示されており、この中で乗加算動作（multiply-accumulate operation）を実行するパイプラインが示されている。各パイプライン・ステージは、レジスタ・スライス１０００、１０１０、１０２０、１０３０、１０４０によってそれぞれ区切られている。図から判るように、論理素子１００５は、必要なオペランドの値をフェッチするために１つのパイプライン・ステージに用意されており、その後の論理素子１０１５および１０２５は乗算演算を実行するために用意されている。選択可能レジスタ・スライス１０２０が選択されると、この乗算は２つのパイプライン・ステージで実行される。しかし、選択可能レジスタ・スライス１０２０が迂回される場合、この乗算処理は１つのパイプライン・ステージで実行される。この後、論理素子１０３５は、さらにパイプライン・ステージで使用され累積演算を実行する。
【００８４】
図記１４を参照して示すように選択可能なパイプライン・ステージを使用すると、パイプラインの深さがシステムの要求条件に合致するようになる。このような方法の利点は、この方法によると、１回の設計でいろいろな顧客の要求条件に合致するようになることである。たとえば、一人の顧客は「命令当たりのサイクル数（cycles per instruction：CPI）」を所望することがありうるが、低いクロック周波数を所望しているにすぎないこともありうる。つまり、この顧客は、完全な速度というよりもむしろ効率を所望しているのかもしれない。しかし、他の顧客は高いクロック周波数を所望することがあり、目標クロック速度を満足たすためＣＰＩの増加を受け入れる準備がなされている。このような選択可能レジスタ・スライスの使用を通じて、両要求条件を満たすことができるので、要求条件に応じてこれらの選択可能レジスタ・スライスを選択してもよいし、迂回してもよい。
【００８５】
さらにこのような選択可能レジスタ・スライスを用意すると、動作条件にしたがってパイプラインの深さを動的に適応させることが可能になるが、とくに電圧とクロック速度に対するパイプラインの深さ（つまり、各演算を実行するためのクロックサイクルの数）の代償が不能される。動作条件を検討することが適切であると決定された場合は、このような変化が成立する方法がいくつか存在している。１つの実施例におけるパイプライン型データ処理装置は、最初に命令が排出された後、パイプライン型データ処理装置がさらに命令を受信する前に、選択可能レジスタ・スライスを適切に選択または迂回することによってステージの数を変えることができる。しかし、代替可能な実施例では、パイプラインの中に特定の命令が発行されると、変更を呼び出すことができる。
【００８６】
動作条件にしたがってパイプラインが動的に適応することが所望される２つの例は次の通りである。
１．システムが所定のクロック速度で動作することが必要であるが、（たとえば、完全な供給電圧を必要とするいくつかの構成要素が、現在電力消費量が下げられているため）電圧を下げることが所望される場合、パイプラインの深さを動的に大きくすると、プロセッサは、低下した電圧と同じクロック速度で動作できるようになる。
２．システムが一定の電圧で動作しているが、（たとえば、システムの現在の性能の要求条件が低くされているため）クロック周波数を下げることが可能になると、各サイクルで利用できる時間が増えるので、パイプラインの深さを動的に小さくすることが可能になり、したがってＣＰＩを少なくしてシステムのエネルギ消費を改善する。
【００８７】
図１５は、計算機プログラムを実行して上に説明した設計機能を実行するために使用される型式のコンピュータ２０００を示している。コンピュータ２０００は、中央処理装置２０２０、ランダム・アクセス・メモリ２０４０、読み取り専用メモリ２０６０、ハードディスクドライブ２０８０、ディスプレイドライバ２１００とディスプレイ２１２０、ユーザ用入出力回路２１４０、キーボード２１６０、マウス２１８０およびネットワークインタフェース装置２２００と、これらすべてを結合する共有バス２２２０を含む。動作する場合、中央処理装置２０２０は、自装置のワーキングメモリとしてランダム・アクセス・メモリ２０４０を使用して計算機プログラムを実行する。計算機プログラムは、読み取り専用メモリ２０６０、ハードディスクドライブ２０８０に格納されるか、あるいはネットワークインタフェース装置２２００を介して遠隔発信元（remote source）から取り出される。コンピュータ２０００はディスプレイドライバ２１００とディスプレイ２１２０を介して、ユーザに処理動作の結果を表示する。コンピュータ２０００は、ユーザ用入出力回路２１４０、キーボード２１６０およびマウス２１８０を介してユーザから制御入力を受信する。
【００８８】
本明細書で説明したバス相互接続ブロックの設計を修正するために使用するツールは、ハードディスクドライブ２０８０上のコンピュータシステム２０００の中、ランダム・アクセス・メモリ２０４０の中、読み取り専用メモリ２０６０の中に格納された、あるいはネットワークインタフェース装置２２００を介してダウンロードした１つまたは複数の計算機プログラムの形をとる。この計算機プログラムは、配布のために使用できるコンパクトディスクやフロッピー（登録商標）ディスクドライブのような記録媒体で提供される。上に説明した計算機プログラムに制御されて動作する場合、コンピュータ２０００の各種構成要素は、上に説明した機能と動作を実行するための適切な回路と論理を提供する役目をする。図１５に示すコンピュータ２０００は、計算機プログラムと上に説明した方法を実行する型式のコンピュータの１つの例にすぎないことは理解されるであろう。
【００８９】
本明細書の中で特定の実施例を説明してきたが、本発明はこれらの実施例に限定されるものではなく、本発明の範囲内でこれらの実施例に対して修正や追加を実行できることは理解されるであろう。たとえば、本発明の範囲を逸脱することなく、独立請求項の特徴を用いて以下の従属請求項の特徴の各種組み合わせをつくることができるのである。
【図面の簡単な説明】
【００９０】
【図１】レジスタ・スライスの実施例を模式的に示す図である。
【図２】レジスタ・スライスを使用しないシステム例を示す図である。
【図３】レジスタ・スライスを組み込んだシステム例を示す図である。
【図４】データ処理装置の中でバス相互接続ブロックの使用を示すブロック図である。
【図５】１つの実施例にしたがってバス相互接続ブロックの使用を示すブロック図である。
【図６】１つの実施例にしたがって一時的レジスタ・スライスを除去するために使用する手法を示す流れ図である。
【図７Ａ】他の実施例にしたがって一時的レジスタ・スライスを除去するために実行する処理を示す流れ図である。
【図７Ｂ】他の実施例にしたがって一時的レジスタ・スライスを除去するために実行する処理を示す流れ図である。
【図８】１つの実施例にしたがって特定の経路の中にレジスタ・スライスを挿入することが適切か否かを決定するために採用する手法を示す流れ図である。
【図９】電力消費を減らすため１つの実施例にしたがってバス相互接続ブロックの中のレジスタ・スライスの使用を模式的に示すブロック図である。
【図１０】１つの実施例にしたがって選択可能レジスタ・スライスの実施を模式的に示す図である。
【図１１】内部に選択可能レジスタ・スライスが使用されているバス相互接続ブロックの１つの実施例を示すブロック図である。
【図１２】このような選択可能レジスタ・スライスを使用することが、図１１のバス相互接続ブロックの動的構成を可能にして、動作条件の変化を検討できるようにする方法を示す流れ図である。
【図１３】図１１のバス相互接続ブロックの動的構成を可能にして、動作条件の変化を検討できるようにし、選択可能レジスタ・スライスの適切なセットアップを決定するため、その動作条件でテスト手続きを実行できるようにする代替方法を示す流れ図である。
【図１４】内部に選択可能レジスタ・スライスが用意され、動作条件に依存するパイプライン・ステージの数の変更を可能にするパイプライン型データ処理装置を示す流れ図である。
【図１５】内部で各種実施例の設計過程を実行することができるコンピュータシステムのブロック図である。
【符号の説明】
【００９１】
１、２、７７０、８００  レジスタ・スライス
１０、１２、１４  レジスタ・スライス記憶素子
８３５、８４５、８５５、８６５、８７５、８８５、８９５、１０００、１０１０、１０２０、１０３０、１０４０  選択可能レジスタ・スライス
２０、１００５、１０１５、１０２５、１０３５  論理素子
８１０  迂回経路
２２  レジスタ
２０５、２１５、２２５、２３５、２４５、２５５、２６５  レジスタ・スライスの潜在的設置場所
１６、２６０、７２０、８２０、８５０  マルチプレクサ
８２５  コントローラ
１３、１５  経路
３５、７０  アドレス経路
４５、８０  データ経路
１７  制御経路
１００  シリコンオンチップ設計
３０、１２０、１３０、１４０、２００、２１０、７００、７１０、８３０、８４０  マスタ・デバイス
４０、１６０、１７０、１８０、２２０、２３０、２４０、２５０、７３０、７４０、７５０、７６０、８６０、８７０、８８０、８９０  スレーブ・デバイス
１２５、１３５、１４５、１６５、１７５、１８５  マスタ、スレーブ間のバス
１５０  相互接続ブロック
１５  バス相互接続ブロック
２０００  コンピュータ
２０２０  ＣＰＵ
２０４０  ＲＡＭ
２０６０  ＲＯＭ
２０８０  ＨＤＤ
２１００  ディスプレイドライバ
２１２０  ディスプレイ
２１４０  ユーザ用入出力ユニット
２１６０  キーボード
２１８０  マウス
２２００  ネットワークインタフェース
２２００  共通バス
【図１】
2005004736.tif 000003
【図２】
2005004736.tif 000004
【図３】
2005004736.tif 000005
【図４】
2005004736.tif 000006
【図５】
2005004736.tif 000007
【図６】
2005004736.tif 000008
【図７Ａ】
2005004736.tif 000009
【図７Ｂ】
2005004736.tif 000010
【図８】
2005004736.tif 000011
【図９】
2005004736.tif 000012
【図１０】
2005004736.tif 000013
【図１１】
2005004736.tif 000014
【図１２】
2005004736.tif 000015
【図１３】
2005004736.tif 000016
【図１４】
2005004736.tif 000017
【図１５】
2005004736.tif 000018