(57)【要約】  種々のＰＣＩｅトポロジに対応したシステム構成を実現することが可能な半導体装置が提供される。ＲＡＭ（１４）は、ＰＣＩｅデバイスのファンクション情報を定義するコンフィグレーションレジスタを記憶する。Ｌｉｎｋ制御部（２３）は、ＰＣＩｅホスト（２）から受信したリクエストをデコードし、デコード結果をＣＰＵ（１３）に出力する。ＣＰＵ（１３）は、Ｌｉｎｋ制御部（２３）から受けたデコード結果に応じて対応するコンフィグレーションレジスタをＲＡＭ（１４）から読み出し、リクエストに対するレスポンスを生成してＬｉｎｋ制御部（２３）に送信させる。したがって、種々のＰＣＩｅトポロジに対応したシステム構成を実現することが可能となる。
2012124431.tif 000002
【特許請求の範囲】
【請求項１】
シリアルインタフェースバスのトポロジを構成するデバイスを実現する半導体装置であって、
プロセッサと、
前記プロセッサによって参照されるデータを記憶する記憶部と、
前記シリアルインタフェースバスの物理レイヤおよびデータリンクレイヤを制御するシリアルインタフェースバス制御部とを含み、
前記記憶部は、前記デバイスのファンクション情報を定義するコンフィグレーションレジスタを記憶し、
前記シリアルインタフェースバス制御部は、ホストから受信したリクエストをデコードし、デコード結果を前記プロセッサに出力し、
前記プロセッサは、前記シリアルインタフェースバス制御部から受けたデコード結果に応じて対応するコンフィグレーションレジスタを前記記憶部から読み出し、前記リクエストに対するレスポンスを生成して前記シリアルインタフェースバス制御部に送信させる、半導体装置。
【請求項２】
前記シリアルインタフェースバスは、ＰＣＩｅバスである、請求項１記載の半導体装置。
【請求項３】
前記プロセッサは、前記記憶部に記憶されるコンフィグレーションレジスタの総数および各コンフィグレーションレジスタごとの機能を変更することで、前記半導体装置によって実現されるデバイスを変更する、請求項１または２記載の半導体装置。
【請求項４】
前記半導体装置はさらに、ＰＣＩバスに接続されるデバイスとの間のデータの送受信を制御するＰＣＩバス制御部を含み、
前記シリアルインタフェースバス制御部によるデコード結果が前記ＰＣＩバスに接続されるデバイスの制御に関するリクエストである場合、前記ＰＣＩバス制御部は、前記ＰＣＩバスに接続されるデバイスとの間でデータの送受信を行なうことにより、ブリッジの機能を実現する、請求項１または２に記載の半導体装置。
【請求項５】
前記記憶部は、上流側ポートおよび下流側ポートのそれぞれのコンフィグレーションレジスタを記憶し、
前記シリアルインタフェースバス制御部によるデコード結果が前記上流側ポートまたは下流側ポートのコンフィグレーションリードの場合、前記プロセッサは対応するコンフィグレーションレジスタを前記記憶部から読み出して前記シリアルインタフェースバス制御部に送信させることにより、前記ブリッジおよびスイッチの機能を実現する、請求項４記載の半導体装置。
【請求項６】
前記半導体装置はさらに、汎用バスに接続される汎用デバイスとの間のデータの送受信を制御する汎用バス制御部を含み、
前記記憶部は、前記汎用デバイスに対応するコンフィグレーションレジスタを記憶し、
前記シリアルインタフェースバス制御部によるデコード結果が前記汎用デバイスのコンフィグレーションリードの場合、前記プロセッサは前記汎用デバイスに対応するコンフィグレーションレジスタを前記記憶部から読み出して前記シリアルインタフェースバス制御部に送信させ、前記シリアルインタフェースバス制御部によるデコード結果が前記汎用デバイスの制御に関するリクエストである場合、前記汎用バス制御部は、前記汎用デバイスとの間でデータの送受信を行なうことにより、前記汎用デバイスを擬似的に前記シリアルインタフェースバスのトポロジに接続されたデバイスとして制御する、請求項１または２に記載の半導体装置。
【請求項７】
前記シリアルインタフェースバス制御部は、前記ホストから受信したリクエストのデコード結果に対応する割込み要求を前記プロセッサに出力し、
前記プロセッサは、前記シリアルインタフェースバス制御部から受けた割込み要求に応じて対応するコンフィグレーションレジスタを参照する、請求項１記載の半導体装置。
【請求項８】
前記シリアルインタフェースバス制御部は、前記ホストから受信したリクエストのデコード結果をレジスタに書き込み、
前記プロセッサは、前記レジスタに書き込まれたデコード結果をポーリングすることによって、前記シリアルインタフェースバス制御部から受けたリクエストを判断し、対応するコンフィグレーションレジスタを参照する、請求項１記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｉ／Ｏ（Input／Output）シリアルインタフェースを制御するための技術に関し、例えば、種々のＰＣＩ（Peripheral  Component  Interconnect）Ｅｘｐｒｅｓｓ（以下、ＰＣＩｅと呼ぶ。）トポロジに対応したシステム構成を実現可能な半導体装置に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータなどのデータ処理装置の高機能化、多機能化が進んでおり、様々な種類のインタフェース回路が搭載されるようになってきている。そのようなインタフェースの１つとして、ＰＣＩｅを挙げることができる。【０００３】
ＰＣＩｅは、従来のＰＣＩバスが有していた転送速度不足を解消するための次世代インタフェースとして開発されたシリアルインタフェースであり、ソフトウェアレベルでＰＣＩバスとの完全互換を実現したものである。したがって、ＰＣＩｅは、従来のＰＣＩバスが動作できるＯＳ（Operating  System）であれば、特に新しくサポートしなくてもそのＯＳ上で動作することが可能である。【０００４】
ＰＣＩｅのシステムを構成する要素として、ルートコンプレックス、エンドポイント、スイッチ、ブリッジなどがあり、これらの要素を接続することによって様々なトポロジを実現可能である。これに関連する技術として、以下のようなものが開示されている。【０００５】
特開平１１−２８８４００号公報（特許文献１）には、回路量を低減するＰＣＩブリッジデバイスが開示されている。ＰＣＩブリッジデバイスは、２次側疑似ＰＣＩバスに接続されるデバイスのコンフィグレーション空間を疑似的に実現する。そのため、２次側疑似ＰＣＩインタフェース部は、リセット直後に、上記デバイスの情報（１次側ＰＣＩバスに見せる機能番号）を取得する。デコード部は、デバイスの情報と、２次側疑似ＰＣＩバスに出力するＩＤＳＥＬとを対応づける。そして、１次側ＰＣＩインタフェース部は、コンフィグレーションサイクルを検知すると、２次側疑似ＰＣＩインタフェース部とともに、サイクルの中継を行うとともに、デコード部はデバイスの情報の一部ビットの置き換えを行なう。【０００６】
特開平１１−２３８０３０号公報（特許文献２）には、既存のＢＩＯＳ（Basic  Input／Output  System）により確実にサポートされ、ＤＭＡ（Direct  Memory  Access）コントローラとＬＳＩ（Large  Scale  Integrated  circuit）コアとを同一チップ上に設けたカスタム化ＰＣＩ−ＰＣＩブリッジが開示されている。カスタム化されたＰＣＩ−ＰＣＩブリッジはタイプ「００」ヘッダを用い、ファンクション番号を用いて２次ＰＣＩデバイスを識別しコンフィギュレーションを可能にする。ＰＣＩ−ＰＣＩブリッジは、演算コア、ＰＣＩエージェントとともにＶＧＡデバイスをサポートするために、起動時と起動後とでメモリマップを切換える。また、ＰＣＩ−ＰＣＩブリッジは、２つのＰＣＩバスが同時に駆動されないようにバス駆動を調停する。【０００７】
特開２００２−０２４１６１号公報（特許文献３）には、内蔵されるＰＣＩエージェントの数量に制限がなく、後から追加及び置き換えが容易で、全体の回路規模を小さくすることができ、しかも信号線の伝播遅延を小さくするようにレイアウト設計することが容易なＰＣＩエージェント集積回路及びその通信方法が開示されている。ＰＣＩエージェント集積回路は、複数のＰＣＩエージェントに共通的に使用される１つのＰＣＩバス制御部と、各々のＰＣＩエージェントの機能制御部と、共通的な使用を目的としてこれらの間に接続される内部共通バスとから構成される。これによりＰＣＩエージェントの構成の変更、もしくは新規に追加する際の設計変更が容易となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１１−２８８４００号公報
【特許文献２】特開平１１−２３８０３０号公報
【特許文献３】特開２００２−０２４１６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＰＣＩｅ−ＰＣＩブリッジを有するシステム設計において、ＰＣＩｅデバイスファンクションを増やす場合、製品基板上に複数のＬＳＩを並べるか、またはＬＳＩに内蔵されるＩＰ（Intellectual  Property）数を増やす必要がある。【００１０】
たとえば、ＰＣＩｅスイッチの下流側にＰＣＩｅ−ＰＣＩブリッジとＰＣＩｅエンドポイントとを並べたトポロジを構成する場合、最低でも３種類のＬＳＩまたはＩＰが必要になる。【００１１】
そのため、そのようなトポロジを複数のＬＳＩで実現する場合、基板面積や部品コストが増大するといった問題点があった。また、ＬＳＩに内蔵される複数のＩＰで実現する場合、ゲート数やパッケージサイズが増大するといった問題点があった。これらは、いずれの場合にも開発コストの増大にもつながる。【００１２】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
一実施の形態によれば、ＰＣＩｅのトポロジを構成するデバイスを実現する半導体装置が提供される。ＲＡＭは、ＰＣＩｅデバイスのファンクション情報を定義するコンフィグレーションレジスタを記憶する。Ｌｉｎｋ制御部は、ＰＣＩｅホストから受信したリクエストをデコードし、デコード結果をＣＰＵ（Central  Processing  Unit）に出力する。ＣＰＵは、Ｌｉｎｋ制御部から受けたデコード結果に応じて対応するコンフィグレーションレジスタをＲＡＭから読み出し、リクエストに対するレスポンスを生成してＬｉｎｋ制御部に送信させる。
【発明の効果】
【００１４】
上記一実施の形態によれば、ＣＰＵが、Ｌｉｎｋ制御部から受けたデコード結果に応じて対応するコンフィグレーションレジスタをＲＡＭから読み出し、リクエストに対するレスポンスを生成してＬｉｎｋ制御部に送信させる。これにより、種々のＰＣＩｅトポロジに対応したシステム構成を実現することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】ＰＣＩｅスイッチの下流側にＰＣＩｅ−ＰＣＩブリッジとＰＣＩｅエンドポイントとを並べたトポロジを構成する一例を示す図である。
【図２】第１の実施の形態における半導体装置の構成例を示すブロック図である。
【図３】ＰＣＩｅデバイスハードウェアがリクエストパケットを受け取ったときの、ＰＣＩｅデバイスハードウェアおよびソフトウェアシーケンサの動作を説明するためのフローチャートである。
【図４】第１の実施の形態における半導体装置のさらに詳細な構成を説明するためのブロック図である。
【図５】第１の実施の形態における半導体装置によってＰＣＩｅ−ＰＣＩブリッジの構成が実現される一例を示す図である。
【図６】第１の実施の形態における半導体装置によってＰＣＩｅスイッチおよびＰＣＩｅ−ＰＣＩブリッジの構成が実現される一例を示す図である。
【図７】図４に示す第１の実施の形態における半導体装置によって図５および図６に示すトポロジを実現したときのコンフィグレーションレジスタの読み出しの動作を説明するための図である。
【図８】図４に示す第１の実施の形態における半導体装置によって図５および図６に示すトポロジを実現したときのＰＣＩバスに接続されるデバイスの、コンフィグレーションレジスタの読み出しの動作を説明するための図である。
【図９】図４に示す第１の実施の形態における半導体装置によって図５および図６に示すトポロジを実現したときのＰＣＩバスに接続されるデバイスの、メモリリードの動作を説明するための図である。
【図１０】第２の実施の形態における半導体装置の構成例を示すブロック図である。
【図１１】第２の実施の形態における半導体装置によってＰＣＩｅエンドポイント（汎用デバイス）の構成を実現する一例を示す図である。
【図１２】第２の実施の形態における半導体装置によってＰＣＩｅエンドポイント（汎用デバイス）の構成を実現する他の一例を示す図である。
【図１３】第２の実施の形態における半導体装置によってＰＣＩｅスイッチと、２つのＰＣＩｅエンドポイントとを有するトポロジの構成を実現する一例を示す図である。
【図１４】第２の実施の形態における半導体装置によって３つのＰＣＩｅスイッチと、５つのＰＣＩｅエンドポイントとを有するトポロジの構成を実現する一例を示す図である。
【図１５】第２の実施の形態における半導体装置によって図１１〜図１４に示すトポロジを実現したときのコンフィグレーションレジスタの書き込みの動作を説明するための図である。
【図１６】第２の実施の形態における半導体装置によって図１１〜図１４に示すトポロジを実現したときの汎用バスに接続されるデバイスのメモリライトの動作を説明するための図である。
【発明を実施するための形態】
【００１６】
図１は、ＰＣＩｅスイッチの下流側にＰＣＩｅ−ＰＣＩブリッジとＰＣＩｅエンドポイントとを並べたトポロジを構成する一例を示す図である。図１に示すように、ＰＣＩｅスイッチ１０１の下流側には、ＰＣＩｅ  Ｉ／Ｆ（Interface）を介してＰＣＩｅブリッジ１０２とＰＣＩｅエンドポイント１０３とが接続される。
【００１７】
また、ＰＣＩｅ−ＰＣＩブリッジ１０２の下流側には、ＰＣＩ  Ｉ／Ｆを介してＰＣＩエンドポイントなどが接続される。このようなトポロジを構成する場合、最低でも３種類のＬＳＩやＩＰを用いる必要があり、上述のように開発コストが増大するなどの問題が発生する。
【００１８】
（第１の実施の形態）
図２は、第１の実施の形態における半導体装置の構成例を示すブロック図である。この半導体装置１は、ＰＣＩｅデバイスハードウェア１１と、ソフトウェアシーケンサ１２とを含む。また、ソフトウェアシーケンサ１２は、ＣＰＵ１３と、ワークＲＡＭ（Random  Access  Memory）１４と、コードＲＡＭ／ＲＯＭ（Read  Only  Memory）１５とを含む。半導体装置１は、ＰＣＩｅ  Ｉ／Ｆを介して、ＰＣＩｅホストとの通信を行なう。
【００１９】
ＰＣＩｅデバイスハードウェア１１は、ＰＣＩｅ  Ｉ／Ｆに接続され、主に物理レイヤおよびデータリンクレイヤの制御を行なう。また、ＣＰＵ１３は、コードＲＡＭ／ＲＯＭ１５に記憶されるプログラムを実行することにより、主にトランザクションレイヤの制御を行なう。なお、ワークＲＡＭ１４は、コンフィグレーションレジスタを格納するが、その詳細は後述する。
【００２０】
トランザクションレイヤは、主にトランザクションレイヤパケット（ＴＬＰ：Transaction  Layer  Packet）の生成と、復号とを行なう。ＴＬＰは、リードやライトといったコマンド、アドレス、データなどで構成される。また、トランザクションレイヤは、接続相手とのフロー制御も行なう。
【００２１】
ＰＣＩｅのフロー制御はクレジットベースで行なわれる。クレジットベースとは、予め自分が受信できるバッファのサイズを相手に通知しておき、バッファに空きができるたびにその旨を伝える方式である。送信側は、自身が受信したパケットのサイズを積算してゆき、また送信相手からバッファの空きが伝えられるとその分を減算する。これによって、送信相手のバッファサイズを超えることなく、パケットの転送が可能となる。
【００２２】
トランザクションレイヤは、メモリ空間、Ｉ／Ｏ空間およびコンフィグレーション空間の３つのアドレス空間をサポートする。
【００２３】
ＰＣＩｅ（ＰＣＩ）デバイスを制御する場合、ＰＣＩｅバス（ＰＣＩバス）のコンフィグレーションレジスタの操作によって当該制御が行なわれる。詳細は、ＰＣＩの仕様書などを参照されたい。
【００２４】
図３は、ＰＣＩｅデバイスハードウェア１１がリクエストパケットを受け取ったときの、ＰＣＩｅデバイスハードウェア１１およびソフトウェアシーケンサ１２の動作を説明するためのフローチャートである。
【００２５】
まず、ＰＣＩｅデバイスハードウェア１１が、ＰＣＩｅ  Ｉ／Ｆを介してＰＣＩｅホストからリクエストパケット（Ｒｅｑ  ＴＬＰ）を受けると、そのＴＬＰをデコードしてどのような要求であるかを判断し、要求に応じた割り込み要求をソフトウェアシーケンサ１２のＣＰＵ１３に出力する（Ｓ１１）。なお、リクエストパケットは、メモリに対する読み出し／書き込み要求であるメモリリクエスト、Ｉ／Ｏに対する読み出し／書き込み要求であるＩ／Ｏリクエスト、コンフィグレーション空間に対する読み出し／書き込み要求であるコンフィグレーションリクエストなどを含む。
【００２６】
ソフトウェアシーケンサ１２内のＣＰＵ１３は、ＰＣＩｅデバイスハードウェア１１から割り込み要求を受けると、ＴＬＰのヘッダおよびデータをチェックし（Ｓ１２）、リクエストパケットに対するレスポンスを生成し、レスポンスを生成したことを制御レジスタに設定して通知する（Ｓ１３）。このとき、ワークＲＡＭ１４に格納されるコンフィグレーションレジスタの値が適宜参照される。
【００２７】
ＰＣＩｅデバイスハードウェア１１は、ソフトウェアシーケンサ１２からレスポンスを生成したことを受けると、ＰＣＩｅ  Ｉ／Ｆを介してレスポンス（Ｃｐｌ  ＴＬＰ：コンプリーション）を送信する（Ｓ１４）。このとき、読み出しの場合には、レスポンスにデータも含まれる。
【００２８】
図４は、第１の実施の形態における半導体装置のさらに詳細な構成を説明するためのブロック図である。半導体装置１は、ＣＰＵ１３と、ＲＡＭ１４，１５と、ＰＣＩｅ−Ｐｈｙ部２１と、ＰＣＩｅ−Ｌｉｎｋ部２２と、Ｌｉｎｋ制御部２３と、制御レジスタ２４と、データバッファ２５と、ＰＣＩバス制御部２６と、汎用バス制御部２７と、バス選択部２８とを含む。
【００２９】
ＰＣＩｅ−Ｐｈｙ部２１は、ＰＣＩｅ  Ｉ／Ｆを介してＰＣＩｅホスト２と接続されており、ＰＣＩｅの物理レイヤの機能を有している。ＰＣＩｅ−Ｌｉｎｋ部２２は、ＰＣＩｅのデータリンクレイヤの機能を有している。
【００３０】
Ｌｉｎｋ制御部２３は、ＰＣＩｅ−Ｌｉｎｋ部２２から出力される受信ＴＬＰ（リクエストパケット）をデコードし、どのようなリクエストであるかを判断してＣＰＵ１３に割り込み要求を出力する。また、Ｌｉｎｋ制御部２３は、ＰＣＩｅ−Ｌｉｎｋ部２２およびＰＣＩｅ−Ｐｈｙ部２１を介して、リクエストパケットに対応したレスポンス（コンプリーション）をＰＣＩｅホスト２に送信する。
【００３１】
制御レジスタ２４は、半導体装置１自身の制御のために設けられたレジスタ群であり、コンフィグレーションレジスタとは区別される。
【００３２】
データバッファ２５は、ＰＣＩバスまたは汎用バスを介してデバイスＡ（３）またはデバイスＢ（４）に送信するデータ、およびＰＣＩバスまたは汎用バスを介してデバイスＡ（３）またはデバイスＢ（４）から受信したデータを一時的に格納する。
【００３３】
ＰＣＩバス制御部２６は、リクエストパケットがＰＣＩバスに接続されるデバイスＡ（３）に対するメモリリード、メモリライトなどの場合に、デバイスＡ（３）との間でデータの送受信を行なう。
【００３４】
汎用バス制御部２７は、リクエストパケットが汎用バスに接続されるデバイスＢ（４）に対するメモリリード、メモリライトなどの場合に、デバイスＢ（４）との間でデータの送受信を行なう。
【００３５】
バス選択部２８は、ダウンローダ５、ＣＰＵ１３、ＲＡＭ１４，１５および制御レジスタ２４に接続されており、バスの切り替えを行なう。たとえば、ＣＰＵ１３で実行されるプログラムをダウンローダ５が、ＲＡＭ１５にダウンロードする場合、バス選択部２８は、ダウンローダ５から出力される処理コードがＲＡＭ１５に書き込まれるようにバスを切り替える。
【００３６】
また、ＣＰＵ１３がＲＡＭ１５に格納されるプログラムを実行する場合、バス選択部２８は、ＣＰＵ１３がＲＡＭ１５に格納される処理コードをフェッチできるようにバスを切り替える。また、ＣＰＵ１３が制御レジスタ２４にアクセスする場合、バス選択部２８は、ＣＰＵ１３が制御レジスタ２４に対して読み出し／書き込みが行なえるようにバスを切り替える。
【００３７】
図５〜図６は、第１の実施の形態における半導体装置によって実現されるトポロジの例を示す図である。図５は、第１の実施の形態における半導体装置１によってＰＣＩｅ−ＰＣＩブリッジの構成が実現される一例を示す図である。このＰＣＩｅ−ＰＣＩブリッジ３０は、３つのデバイスファンクション（Ｆｕｎｃ．１〜Ｆｕｎｃ．３）３１〜３３を有しており、それぞれに対応する３つのコンフィグレーションレジスタが、図２および図４に示すＲＡＭ１４に配置される。ＣＰＵ１３がＲＡＭ１５に記憶されるプログラムを実行することによって、デバイスファンクション３１〜３３の機能が実現される。
【００３８】
図６は、第１の実施の形態における半導体装置１によってＰＣＩｅスイッチおよびＰＣＩｅ−ＰＣＩブリッジの構成が実現される一例を示す図である。ＰＣＩｅスイッチ４１は、上流側ポート（Ｕｐｓｔｒｅａｍ）および２つの下流側ポート（Ｄｏｗｎｓｔｒｅａｍ）を有しており、それぞれに対応する３つのコンフィグレーションレジスタが、図２および図４に示すＲＡＭ１４に配置される。また、ＰＣＩｅ−ＰＣＩブリッジ４２は、１つのコンフィグレーションレジスタを有しており、図２および図４に示すＲＡＭ１４に配置される。
【００３９】
ＰＣＩｅホスト２は、システム起動時に各デバイスファンクションに対応するコンフィグレーションレジスタを読み出すことでＰＣＩｅのトポロジを検索する。ＲＡＭ１４に定義されたコンフィグレーションレジスタのデバイスファンクション番号に当該各デバイスファンクションにおけるデバイスファンクション番号がヒットしたときに、ＣＰＵ１３の指示によりＬｉｎｋ制御部２３が、そのデバイスファンクションの存在を意味するコンプリーションを返すことでＰＣＩｅホスト２にデバイスファンクションを認識させる。
【００４０】
図７は、図４に示す第１の実施の形態における半導体装置１によって図５および図６に示すトポロジを実現したときのコンフィグレーションレジスタの読み出しの動作を説明するための図である。
【００４１】
まず、Ｌｉｎｋ制御部２３が、ＰＣＩｅ−Ｐｈｙ部２１およびＰＣＩｅ−Ｌｉｎｋ部２２を介してＰＣＩｅホスト２からリクエストパケットを受けると（図７の（１））、そのＴＰＬをデコードする。そして、そのＴＰＬがコンフィグレーションリードであることを検出すると、Ｌｉｎｋ制御部２３は、ＣＰＵ１３に対してコンフィグレーションリードを受信したことを通知する（図７の（２））。
【００４２】
この通知は、上述のようにＣＰＵ１３に対して割り込み要求を出力するようにしてもよいし、Ｌｉｎｋ制御部２３がコンフィグレーションリードを受信したことを制御レジスタ２４に書き込み、ＣＰＵ１３がそれをポーリングすることによって通知するようにしてもよい。
【００４３】
ＣＰＵ１３は、Ｌｉｎｋ制御部２３から通知を受けると、ＲＡＭ１４から対応するコンフィグレーションレジスタの内容を読み出し（図７の（３））、そのデータをＬｉｎｋ制御部２３に設定する（図７の（４））。そして、Ｌｉｎｋ制御部２３は、ＰＣＩｅ−Ｌｉｎｋ部２２およびＰＣＩｅ−Ｐｈｙ部２１を介してＰＣＩｅホスト２にコンプリーションを送信すると共に、コンフィグレーションレジスタの内容を送信する。
【００４４】
たとえば、本実施の形態における半導体装置１によって図５に示すトポロジが構成された場合、ＲＡＭ１４にデバイスファンクション３１〜３３に対応するコンフィグレーションレジスタが格納されている。ＣＰＵ１３は、ＰＣＩｅホスト２から要求があったデバイスファンクションに対応するコンフィグレーションレジスタの内容をＲＡＭ１４から読み出し、Ｌｉｎｋ制御部２３に設定する。
【００４５】
また、本実施の形態における半導体装置１によって図６に示すトポロジが構成された場合、ＲＡＭ１４に、ＰＣＩｅスイッチ４１の上流側ポート（Ｕｐｓｔｒｅａｍ）および２つの下流側ポート（Ｄｏｗｎｓｔｒｅａｍ）の３つのコンフィグレーションレジスタと、ＰＣＩｅ−ＰＣＩブリッジ４２の１つのコンフィグレーションレジスタとが格納されている。ＣＰＵ１３は、ＰＣＩｅホスト２から要求があったデバイスに対応するコンフィグレーションレジスタの内容をＲＡＭ１４から読み出し、Ｌｉｎｋ制御部２３に設定する。
【００４６】
図８は、図４に示す第１の実施の形態における半導体装置１によって図５および図６に示すトポロジを実現したときのＰＣＩバスに接続されるデバイスのコンフィグレーションレジスタの読み出しの動作を説明するための図である。
【００４７】
まず、Ｌｉｎｋ制御部２３が、ＰＣＩｅ−Ｐｈｙ部２１およびＰＣＩｅ−Ｌｉｎｋ部２２を介してＰＣＩｅホスト２からリクエストパケットを受けると（図８の（１））、そのＴＰＬをデコードする。そして、そのＴＰＬがデバイスＡ（３）のコンフィグレーションリードであることを検出すると、Ｌｉｎｋ制御部２３は、ＣＰＵ１３に対してコンフィグレーションリードを受信したことを通知する（図８の（２））。
【００４８】
ＣＰＵ１３は、Ｌｉｎｋ制御部２３から通知を受けると、ＰＣＩバス制御部２６に対してＰＣＩのコンフィグレーションリードサイクルを要求する（図８の（３））。そして、ＰＣＩバス制御部２６がデバイスＡ（３）に対してコンフィグレーションリードを発行する（図８の（４））。
【００４９】
デバイスＡ（３）は、ＰＣＩバス制御部２６からコンフィグレーションリードを受けると、コンフィグレーションレジスタの内容をＰＣＩバス制御部２６に送信する。そして、ＰＣＩバス制御部２６は、デバイスＡ（３）から受信したリードデータをＣＰＵ１３に通知する（図８の（５））。
【００５０】
次に、ＣＰＵ１３がＰＣＩバス制御部２６から受けたコンフィグレーションレジスタの内容をＬｉｎｋ制御部２３に設定する（図８の（６））。そして、Ｌｉｎｋ制御部２３は、ＰＣＩｅ−Ｌｉｎｋ部２２およびＰＣＩｅ−Ｐｈｙ部２１を介してＰＣＩｅホスト２にコンプリーションを送信すると共に、コンフィグレーションレジスタの内容を送信する。
【００５１】
図９は、図４に示す第１の実施の形態における半導体装置１によって図５および図６に示すトポロジを実現したときのＰＣＩバスに接続されるデバイスのメモリリードの動作を説明するための図である。
【００５２】
まず、Ｌｉｎｋ制御部２３が、ＰＣＩｅ−Ｐｈｙ部２１およびＰＣＩｅ−Ｌｉｎｋ部２２を介してＰＣＩｅホスト２からリクエストパケットを受けると（図９の（１））、そのＴＰＬをデコードする。そして、そのＴＰＬがデバイスＡ（３）のメモリリードであることを検出すると、Ｌｉｎｋ制御部２３は、ＰＣＩバス制御部２６に対してメモリリードを受信したことを通知する（図９の（２））。
【００５３】
ＰＣＩバス制御部２６は、Ｌｉｎｋ制御部２３から通知を受けると、デバイスＡ（３）に対してメモリリードを発行する（図９の（３））。そして、ＰＣＩバス制御部２６がデバイスＡ（３）からリードデータを受けると、それをデータバッファ２５に順次格納する（図９の（４））。
【００５４】
そして、ＰＣＩバス制御部２６は、リードデータの受信を完了すると、Ｌｉｎｋ制御部２３に対してリードデータの完了を通知する（図９の（５））。Ｌｉｎｋ制御部２３がＰＣＩバス制御部２６から通知を受けると、ＰＣＩｅ−Ｌｉｎｋ部２２およびＰＣＩｅ−Ｐｈｙ部２１を介してＰＣＩｅホスト２にコンプリーションを送信すると共に、データバッファ２５に格納されるリードデータを順次送信する。
【００５５】
なお、デバイスＡ（３）に対するメモリライトは、後述の図１６と同様の動作によって行なわれ、ＰＣＩバス制御部２６を介してデバイスＡ（３）にデータを書き込む点のみが異なる。
【００５６】
以上説明したように、本実施の形態における半導体装置は、ＰＣＩｅトポロジを構成するＰＣＩｅデバイスのコンフィグレーションレジスタをＲＡＭ１４に格納し、ＰＣＩｅホスト２からリクエストを受けたときに、ＲＡＭ１４に格納されるコンフィグレーションレジスタを参照してレスポンスをＰＣＩｅホスト２に送信する。これによって、種々のＰＣＩｅトポロジに対応したシステム構成を実現することが可能となった。
【００５７】
また、本実施の形態における半導体装置によって、ＰＣＩｅ−ＰＣＩブリッジ、ＰＣＩｅスイッチ、エンドポイントなどの複数のＰＣＩｅデバイスを任意に組み合わせたトポロジを構成する場合、そのＰＣＩｅデバイス間の物理レイヤやデータリンクレイヤなどを制御するためのハードウェアを削減することができる。したがって、基板面積や部品コストを削減したり、ゲート数やパッケージサイズを削減したりすることが可能となった。
【００５８】
また、半導体装置を出荷した後でも、ＰＣＩｅトポロジやデバイスファンクションを変更することができるため、デバッグ時に判明した不具合の修正や、顧客からの要求仕様の変更などにも対応することが可能となった。
【００５９】
また、本実施の形態における半導体装置においては、所望のトポロジを実現したときはＰＣＩバスに接続されるデバイスのメモリリードの動作はＣＰＵ１３を介さないで実施している。これによってメモリ転送時間の短縮を図っているが、メモリ転送はこの方法に限定されずＣＰＵ１３を介してメモリ転送を行わせてもよい。
【００６０】
（第２の実施の形態）
第２の実施の形態における半導体装置は、汎用バスに接続される汎用デバイスに対応するコンフィグレーションレジスタをＲＡＭ１４に記憶し、そのコンフィグレーションレジスタを用いることによって、汎用デバイスを擬似的にＰＣＩｅのトポロジに接続されたデバイスとして制御するものである。なお、第２の実施の形態における半導体装置の構成は、図４に示す第１の実施の形態における半導体装置の構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００６１】
図１０は、第２の実施の形態における半導体装置の構成例を示すブロック図である。図２に示す第１の実施の形態における半導体装置の構成例と比較して、ＰＣＩｅデバイスハードウェア１１が汎用バスを介して汎用デバイス６および７に接続される点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。ここで、汎用バスとは、上述のＰＣＩｅバスおよびＰＣＩバス以外のバスを指すものとする。
【００６２】
図１１〜図１４は、第２の実施の形態における半導体装置によって実現されるトポロジの例を示す図である。図１１は、第２の実施の形態における半導体装置１によってＰＣＩｅエンドポイント（汎用デバイス）５１の構成を実現する一例を示す図である。このエンドポイントは、１つのデバイスファンクション（Ｆｕｎｃ．１）のみを有しており、対応するコンフィグレーションレジスタが、図２および図４に示すＲＡＭ１４に配置される。
【００６３】
図１２は、第２の実施の形態における半導体装置１によってＰＣＩｅエンドポイント（汎用デバイス）６０の構成を実現する一例を示す図である。このエンドポイントは、３つのデバイスファンクション（Ｆｕｎｃ．１〜Ｆｕｎｃ．３）６１〜６３を有しており、３つのデバイスファンクション６１〜６３のそれぞれに対応するコンフィグレーションレジスタが、図２および図４に示すＲＡＭ１４に配置される。
【００６４】
図１３は、第２の実施の形態における半導体装置１によってＰＣＩｅスイッチ７１と、２つのＰＣＩｅエンドポイント７２および７３とを有するトポロジ７０の構成を実現する一例を示す図である。ＰＣＩｅスイッチ７１と、２つのＰＣＩｅエンドポイント７２および７３のそれぞれに対応するコンフィグレーションレジスタが、図２および図４に示すＲＡＭ１４に配置される。この場合、コンフィグレーションレジスタの総数は５となる。
【００６５】
図１４は、第２の実施の形態における半導体装置１によって３つのＰＣＩｅスイッチと、５つのＰＣＩｅエンドポイントとを有するトポロジ８０の構成を実現する一例を示す図である。３つのＰＣＩｅスイッチ１〜３（８１〜８３）と、５つのＰＣＩｅエンドポイント８４〜８８のそれぞれに対応するコンフィグレーションレジスタが、図２および図４に示すＲＡＭ１４に配置される。この場合、コンフィグレーションレジスタの総数は１４となる。
【００６６】
図１５は、第２の実施の形態における半導体装置１によって図１１〜図１４に示すトポロジを実現したときのコンフィグレーションレジスタの書き込みの動作を説明するための図である。
【００６７】
まず、Ｌｉｎｋ制御部２３が、ＰＣＩｅ−Ｐｈｙ部２１およびＰＣＩｅ−Ｌｉｎｋ部２２を介してＰＣＩｅホスト２からリクエストパケットを受けると（図１５の（１））、そのＴＰＬをデコードする。そして、そのＴＰＬがコンフィグレーションライトであることを検出すると、Ｌｉｎｋ制御部２３は、ＣＰＵ１３に対してコンフィグレーションライトを受信したことを通知する（図１５の（２））。このとき、Ｌｉｎｋ制御部２３は、ＰＣＩｅホスト２からライトデータも受信して、ＣＰＵ１３に転送する。
【００６８】
ＣＰＵ１３は、Ｌｉｎｋ制御部２３から通知を受けると、ＲＡＭ１４にＬｉｎｋ制御部２３から受けたコンフィグレーションレジスタの内容を書き込み（図１５の（３））、必要に応じてＣＰＵ１３が汎用バス制御部２７を介してデバイスＢ（４）に動作設定の変更を通知する（図１５の（４））。
【００６９】
また、ＣＰＵ１３は、そのレスポンスステータスをＬｉｎｋ制御部２３に設定する（図１５の（５））。そして、Ｌｉｎｋ制御部２３は、ＰＣＩｅ−Ｌｉｎｋ部２２およびＰＣＩｅ−Ｐｈｙ部２１を介してＰＣＩｅホスト２にコンプリーションを送信する（図１５の（６））。
【００７０】
なお、汎用デバイスＢ（４）に対するコンフィグレーションリードの動作は、図７に示すコンフィグレーションレジスタの読み出しの動作と同様であるので、詳細な説明は繰り返さない。
【００７１】
図１６は、第２の実施の形態における半導体装置１によって図１１〜図１４に示すトポロジを実現したときの汎用バスに接続されるデバイスのメモリライトの動作を説明するための図である。
【００７２】
まず、Ｌｉｎｋ制御部２３が、ＰＣＩｅ−Ｐｈｙ部２１およびＰＣＩｅ−Ｌｉｎｋ部２２を介してＰＣＩｅホスト２からリクエストパケットを受けると（図１６の（１））、そのＴＰＬをデコードする。そして、そのＴＰＬがデバイスＢ（４）のメモリライトであることを検出すると、Ｌｉｎｋ制御部２３は、ＰＣＩｅホスト２から受けたライトデータをデータバッファ２５に格納する（図１６の（２））。
【００７３】
次に、Ｌｉｎｋ制御部２３は、汎用バス制御部２７に対してメモリライトを受信したことを通知する（図１６の（３））。そして、汎用バス制御部２７は、デバイスＢ（４）に対してメモリライトを発行し、データバッファ２５に格納されるライトデータを順次デバイスＢ（４）に送信する（図１６の（４））。
【００７４】
なお、汎用バスに接続されるデバイスＢ（４）からのメモリリードは、上述の図９と同様の動作によって行なわれ、汎用バス制御部２７を介してデバイスＢ（４）からデータを読み出す点のみが異なる。
【００７５】
以上説明したように、本実施の形態における半導体装置は、汎用バスに接続される汎用デバイスのコンフィグレーションレジスタをＲＡＭ１４に記憶し、ＰＣＩｅホスト２からのコンフィグレーションリードに対してこのコンフィグレーションレジスタの内容を返す。したがって、本実施の形態における半導体装置は、第１の実施の形態において説明した効果に加えて、ＰＣＩｅのトポロジに汎用レジスタを擬似的に接続することが可能である。
【００７６】
以上、本発明者等によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【００７７】
１  半導体装置、２  ＰＣＩｅホスト、３，４  デバイス、５  ダウンローダ、６，７
汎用デバイス、１１  ＰＣＩｅデバイスハードウェア、１２  ソフトウェアシーケンサ、１３  ＣＰＵ、１４  ワークＲＡＭ、１５  コードＲＡＭ／ＲＯＭ、２１  ＰＣＩｅ−Ｐｈｙ部、２２  ＰＣＩｅ−Ｌｉｎｋ部、２３  Ｌｉｎｋ制御部、２４  制御レジスタ、２５  データバッファ、２６  ＰＣＩバス制御部、２７  汎用バス制御部、２８  バス選択部。
【図１】
2012124431.tif 000003
【図２】
2012124431.tif 000004
【図３】
2012124431.tif 000005
【図４】
2012124431.tif 000006
【図５】
2012124431.tif 000007
【図６】
2012124431.tif 000008
【図７】
2012124431.tif 000009
【図８】
2012124431.tif 000010
【図９】
2012124431.tif 000011
【図１０】
2012124431.tif 000012
【図１１】
2012124431.tif 000013
【図１２】
2012124431.tif 000014
【図１３】
2012124431.tif 000015
【図１４】
2012124431.tif 000016
【図１５】
2012124431.tif 000017
【図１６】
2012124431.tif 000018
【手続補正書】
【提出日】平成25年7月26日(2013.7.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
シリアルインタフェースバスのトポロジを構成するデバイスを実現する半導体装置であって、
プロセッサと、
前記プロセッサによって参照されるデータを記憶する記憶部と、
前記シリアルインタフェースバスの物理レイヤおよびデータリンクレイヤを制御するシリアルインタフェースバス制御部と、
汎用バスに接続される汎用デバイスとの間のデータの送受信を制御する汎用バス制御部とを含み、
前記記憶部は、前記デバイスのファンクション情報を定義するコンフィグレーションレジスタを記憶し、
前記シリアルインタフェースバス制御部は、ホストから受信したリクエストをデコードし、デコード結果を前記プロセッサに出力し、
前記プロセッサは、前記シリアルインタフェースバス制御部から受けたデコード結果に応じて対応するコンフィグレーションレジスタを前記記憶部から読み出し、前記リクエストに対するレスポンスを生成して前記シリアルインタフェースバス制御部に送信させ、
前記記憶部は、前記汎用デバイスに対応するコンフィグレーションレジスタを記憶し、
前記シリアルインタフェースバス制御部によるデコード結果が前記汎用デバイスのコンフィグレーションリードの場合、前記プロセッサは、前記汎用デバイスに対応するコンフィグレーションレジスタを前記記憶部から読み出して前記シリアルインタフェースバス制御部に前記コンフィグレーションレジスタの内容を送信させ、
前記シリアルインタフェースバス制御部によるデコード結果が前記汎用デバイスの制御に関するリクエストである場合、前記汎用バス制御部は、前記汎用デバイスとの間でデータの送受信を行なうことにより、前記汎用デバイスを擬似的に前記シリアルインタフェースバスのトポロジに接続されたデバイスとして制御する、半導体装置。
【請求項２】
前記シリアルインタフェースバスは、ＰＣＩｅバスである、請求項１記載の半導体装置。
【請求項３】
前記プロセッサは、前記記憶部に記憶される前記コンフィグレーションレジスタの総数および前記コンフィグレーションレジスタの機能を変更することで、前記半導体装置によって実現されるデバイスを変更する、請求項１または２記載の半導体装置。
【請求項４】
前記半導体装置はさらに、ＰＣＩバスに接続されるデバイスとの間のデータの送受信を制御するＰＣＩバス制御部を含み、
前記シリアルインタフェースバス制御部によるデコード結果が前記ＰＣＩバスに接続されるデバイスの制御に関するリクエストである場合、前記ＰＣＩバス制御部は、前記ＰＣＩバスに接続されるデバイスとの間でデータの送受信を行なうことにより、ブリッジの機能を実現する、請求項１または２記載の半導体装置。
【請求項５】
前記記憶部は、上流側ポートおよび下流側ポートのそれぞれのコンフィグレーションレジスタを記憶し、
前記シリアルインタフェースバス制御部によるデコード結果が前記上流側ポートまたは下流側ポートのコンフィグレーションリードの場合、前記プロセッサは対応するコンフィグレーションレジスタを前記記憶部から読み出して前記シリアルインタフェースバス制御部に前記コンフィグレーションレジスタの内容を送信させることにより、前記ブリッジおよびスイッチの機能を実現する、請求項４記載の半導体装置。
【請求項６】
前記シリアルインタフェースバス制御部は、前記ホストから受信したリクエストのデコード結果に対応する割込み要求を前記プロセッサに出力し、
前記プロセッサは、前記シリアルインタフェースバス制御部から受けた割込み要求に応じて対応するコンフィグレーションレジスタを参照する、請求項１記載の半導体装置。
【請求項７】
前記シリアルインタフェースバス制御部は、前記ホストから受信したリクエストのデコード結果をレジスタに書き込み、
前記プロセッサは、前記レジスタに書き込まれたデコード結果をポーリングすることによって、前記シリアルインタフェースバス制御部から受けたリクエストを判断し、対応するコンフィグレーションレジスタを参照する、請求項１記載の半導体装置。
【国際調査報告】
2012124431.tif 000019
2012124431.tif 000020