(57)【要約】  プロセッサ回路を含む集積回路（ＩＣ）（１０２）は、ＩＣのストレージインターフェイス回路（１０４）を使用して不揮発性メモリチップから第１のブートイメージを受信することによって、ブートされ得る。第１のブートイメージは、複数のデバイスをＩＣ（１０２）にリンクする通信バスを介してホストデバイス（１１８）と通信するように設計されるバスインターフェイスモジュール（１１６）を構成するようにＩＣ（１０２）のプロセッサ回路上で実行される。バスインターフェイスモジュール（１１６）を使用して、第２のブートイメージは、ホストデバイス（１１８）のメモリからＩＣ（１０２）のメモリに受信される。ＩＣ（１０２）は第２のブートイメージを実行することによりブートされる。
2018531461.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサ回路を含む集積回路（ＩＣ）をブートするための方法であって、
前記ＩＣのストレージインターフェイス回路を使用して不揮発性メモリチップから第１のブートイメージを受信することと、
前記ＩＣのプロセッサ回路上で前記第１のブートイメージを実行することによって、複数のデバイスを前記ＩＣにリンクする通信バスを介してホストデバイスと通信するように設計されるバスインターフェイスモジュールを構成することと、
前記バスインターフェイスモジュールを使用して前記ホストデバイスのメモリから前記ＩＣのメモリに第２のブートイメージを通信することと、
前記第２のブートイメージを実行することによって前記ＩＣをブートすることとを含む、方法。
【請求項２】
前記バスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、前記ホストデバイスと前記ＩＣとの間のポイントツーポイントリンクを介して、前記ホストデバイスと通信するように設計されており、前記パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義する、請求項１に記載の方法。
【請求項３】
前記第２のブートイメージおよび前記ＩＣの前記プロセッサ回路を提供するよう、前記ホストデバイスとのハンドシェイクプロトコルを実現することをさらに含む、請求項１に記載の方法。
【請求項４】
ブートリードオンリメモリ（ＲＯＭ）イメージをロードすることと、
前記第１のブートイメージを受信するように前記ＩＣに命令するために前記ブートＲＯＭイメージを実行することとをさらに含む、請求項３に記載の方法。
【請求項５】
前記通信バスは、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）通信バスであり、前記ＩＣはプログラマブルロジックタイルを含む、請求項１に記載の方法。
【請求項６】
前記バスインターフェイスモジュールを構成することは、前記ホストデバイスのルートコンプレックスモジュールとの通信のために前記バスインターフェイスモジュールを列挙することを含む、請求項５に記載の方法。
【請求項７】
前記バスインターフェイスモジュールの列挙の完了に応答して、スクラッチパッドメモリスペースにおいて値をセットすることをさらに含む、請求項６に記載の方法。
【請求項８】
前記第１のブートイメージはブートリードオンリメモリ（ＲＯＭ）イメージであり、前記第２のブートイメージは、第１のステージブートローダ（ＦＳＢＬ）イメージであり、または、前記第１のブートイメージは第１のステージブートローダ（ＦＳＢＬ）イメージであり、前記第２のブートイメージは第２のステージブートローダ（ＳＳＢＬ）イメージである、請求項１に記載の方法。
【請求項９】
ＩＣを含み、
前記ＩＣは、
複数のデバイスを前記ＩＣにリンクする通信バスを介してホストデバイスと通信するように構成されるバスインターフェイスモジュールと、
不揮発性メモリチップから第１のブートイメージを受信するように構成されるストレージインターフェイス回路と、
プロセッサ回路とを含み、
前記プロセッサ回路は、
前記ホストデバイスのメモリから前記ＩＣに第２のブートイメージを転送するよう前記バスインターフェイスモジュールを構成するために前記第１のブートイメージを実行することと、
前記第２のブートイメージを実行することによって前記ＩＣをブートすることとを行うように構成される、システム。
【請求項１０】
前記バスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、前記ホストデバイスと前記ＩＣとの間のポイントツーポイントリンクを介して、前記ホストデバイスと通信するように設計されており、前記パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義する、請求項９に記載のシステム。
【請求項１１】
前記プロセッサ回路はさらに、前記第２のブートイメージを提供する前記ホストデバイスとのハンドシェイクプロトコルを実現するように構成される、請求項９に記載のシステム。
【請求項１２】
前記ストレージインターフェイス回路はさらに、ブートリードオンリメモリ（ＲＯＭ）イメージをロードするように構成され、
前記ブートＲＯＭイメージは、前記不揮発性メモリチップからの前記第１のブートイメージの受信を行うよう前記ＩＣのための命令を含む、請求項１１に記載のシステム。
【請求項１３】
前記通信バスは、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）通信バスであり、前記ＩＣはプログラマブルロジックタイルを含み、前記プロセッサ回路は、前記ＰＣＩｅ通信バスについての列挙プロセスの部分として前記バスインターフェイスモジュールを構成するように構成される、請求項９に記載のシステム。
【請求項１４】
前記プロセッサ回路は、前記バスインターフェイスモジュールの列挙の完了に応答して、スクラッチパッドメモリスペースにおいて値をセットするように構成される、請求項１３に記載のシステム。
【請求項１５】
前記第１のブートイメージは第１のステージブートローダ（ＦＳＢＬ）イメージであり、前記第２のブートイメージは第２のステージブートローダ（ＳＳＢＬ）イメージである、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示は一般に、ブートイメージのロードと、プログラマブルロジックデバイスの構成とに関する。
【背景技術】
【０００２】
背景
メモリ回路を使用し得るさまざまな異なる用途が存在しており、当該用途は、プログラマブルロジックデバイス（ＰＬＤ： programmable logic device）を含むがこれに限定されない。ＰＬＤは、特定されたロジック機能（logic function）を実行するようにプログラムされ得る周知のタイプのプログラマブル集積回路（ＩＣ）である。１つのタイプのＰＬＤであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）は典型的に、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、さまざまなタイプのロジックブロックを含んでおり、当該ロジックブロックはたとえば、入出力ブロック（ＩＯＢ）と、コンフィギュラブルロジックブロック（ＣＬＢ）と、専用ランダムアクセスメモリブロック（ＢＲＡＭ）と、マルチプライヤと、デジタル信号処理ブロック（ＤＳＰ）と、プロセッサと、クロックマネージャと、遅延ロックループ（ＤＬＬ）と、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）およびイーサネット（登録商標）のようなバスまたはネットワークインターフェイスなどとを含み得る。
【０００３】
いくつかのＰＬＤは、単一のＩＣチップ上で全コンピュータシステムとして有効に機能するのに十分なコンポーネントおよび機能を含む。そのような機能を有するＰＬＤは、システムオンチップ（ＳＯＣ： system on a chip）と称される場合がある。ＳＯＣは、異なる機能を実行するためにソフトウェア命令を実行する１つ以上のプロセッサ回路を含み得る。起動（たとえば、ハードのパワーオンまたはハードのリセット）時には、ＳＯＣによって実行される命令のうちの最も初めのセットのうちのいくつかが、ＳＯＣをどのようにブートするかについて命令を提供する。たとえば、ＳＯＣは最初に、第１のステージブートローダ（ＦＳＢＬ： first-stage boot loader）イメージをロードするようにＳＯＣを構成するブートリードオンリメモリ（ＲＯＭ）を実行し得る。ＦＳＢＬ命令は、ＳＯＣの周辺機能ブロックがどのように構成されるかを特定し得、構成ビットストリームを制御および実現し得、オペレーティングシステム（ＯＳ）および他のブート関連機能をセットアップおよび実行し得る。ＳＯＣについてのブートイメージはしばしば、リードオンリメモリ（ＲＯＭ）回路のような不揮発性メモリからロードされ得る。
【０００４】
ＳＯＣによって使用されるブートイメージのサイズが増加すると、ブートイメージについてのストレージ位置のサイズが増加する。ブートイメージをロードするのに必要な時間も増加し得る。したがって、ＳＯＣが完全に構成および動作される前の時間が増加し得る。電源投入時または同様の状況に関わらず、ＳＯＣを迅速に利用可能にすることが望ましい場合には、ロード時間の増加は問題であり得る。これらの問題および他の問題は、ＳＯＣ設計およびそれらの使用について問題であり得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
ある実現例は、プロセッサ回路を含む集積回路（ＩＣ）をブートするための方法に関する。当該方法は、ＩＣのストレージインターフェイス回路を使用して不揮発性メモリチップから第１のブートイメージを受信することを含み得る。バスインターフェイスモジュールは、ＩＣのプロセッサ回路上で第１のブートイメージを実行することにより構成され得る。バスインターフェイスモジュールは、複数のデバイスおよびＩＣをリンクする通信バスを介してホストデバイスとの間でインターフェイス接続するように設計され得る。バスインターフェイスモジュールは、ホストデバイスのメモリからＩＣのメモリへ第２のブートイメージを通信するために使用され得る。ＩＣは第２のブートイメージを実行することによりブートされ得る。
【０００６】
随意に、バスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、ホストデバイスとＩＣとの間のポイントツーポイントリンクを介して、ホストデバイスと通信するように設計され得る。
【０００７】
随意に、パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義する。
【０００８】
随意に、上記方法は、第２のブートイメージおよびＩＣのプロセッサ回路を提供するよう、ホストデバイスとのハンドシェイクプロトコルを実現することをさらに含む。
【０００９】
随意に、上記方法は、ブートリードオンリメモリ（ＲＯＭ）イメージをロードすることと、第１のブートイメージを受信するようにＩＣに命令するためにブートＲＯＭイメージを実行することとをさらに含む。
【００１０】
随意に、通信バスは、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）通信バスであり得、ＩＣはプログラマブルロジックタイルを含み得る。
【００１１】
随意に、バスインターフェイスモジュールを構成することは、ホストデバイスのルートコンプレックスモジュールとの通信のためにバスインターフェイスモジュールを列挙することを含み得る。
【００１２】
随意に、上記方法は、バスインターフェイスモジュールの列挙の完了に応答して、スクラッチパッドメモリスペースにおいて値をセットすることをさらに含み得る。
【００１３】
随意に、第１のブートイメージはブートリードオンリメモリ（ＲＯＭ）イメージであり得、第２のブートイメージは第１のステージブートローダ（ＦＳＢＬ）イメージであり得る。
【００１４】
随意に、第１のブートイメージは第１のステージブートローダ（ＦＳＢＬ）イメージであり得、第２のブートイメージは第２のステージブートローダ（ＳＳＢＬ）イメージであり得る。
【００１５】
さまざまな実現例に従うと、システムはＩＣを含む。ＩＣは、複数のデバイスをＩＣにリンクする通信バスを介してホストデバイスと通信するように構成されるバスインターフェイスモジュールを含む。ストレージインターフェイス回路は、不揮発性メモリチップから第１のブートイメージを受信するように構成される。プロセッサ回路は、ホストデバイスのメモリからＩＣに第２のブートイメージを通信するようバスインターフェイスモジュールを構成するために第１のブートイメージを実行することと、第２のブートイメージを実行することによってＩＣをブートすることとを行うように構成される。
【００１６】
随意に、バスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、ホストデバイスとＩＣとの間のポイントツーポイントリンクを介して、ホストデバイスと通信するように設計され得る。
【００１７】
随意に、パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義する。
【００１８】
随意に、プロセッサ回路はさらに、第２のブートイメージを提供するホストデバイスとのハンドシェイクプロトコルを実現するように構成され得る。
【００１９】
随意に、ストレージインターフェイス回路はさらに、ブートリードオンリメモリ（ＲＯＭ）イメージをロードするように構成され得、ブートＲＯＭイメージは、不揮発性メモリチップからの第１のブートイメージの受信を行うようＩＣのための命令を含み得る。
【００２０】
随意に、通信バスは、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）通信バスであり得、ＩＣはプログラマブルロジックタイルを含み得る。
【００２１】
随意に、プロセッサ回路は、ＰＣＩｅ通信バスについての列挙プロセスの部分として、バスインターフェイスモジュールを構成するように構成され得る。
【００２２】
随意に、プロセッサ回路は、バスインターフェイスモジュールの列挙の完了に応答して、スクラッチパッドメモリスペースにおいて値をセットするように構成され得る。
【００２３】
随意に、バスインターフェイスモジュールは８Ｂ／１０Ｂエンコーディングを使用するように構成され得る。
【００２４】
随意に、第１のブートイメージは第１のステージブートローダ（ＦＳＢＬ）イメージであり得、第２のブートイメージは第２のステージブートローダ（ＳＳＢＬ）イメージであり得る。
【００２５】
ある実現例は、プログラマブル集積回路（ＩＣ）を構成するための方法に関する。上記方法は、プログラマブルＩＣのストレージインターフェイス回路を使用して、ストレージ回路とプログラマブルＩＣとの間の構成データの第１のセットを通信することを含む。構成データの第１のセットを使用して、プログラマブルＩＣは、複数のデバイスをリンクする通信バスを介してホストデバイスとインターフェイス接続するように設計されるバスインターフェイスモジュールと、バスインターフェイスモジュールとプログラマブルＩＣのプログラマブルロジックとの間でインターフェイス接続するように設計される内部構成アクセスインターフェイスとを含むように、構成される。バスインターフェイスモジュールを通じて、ダイレクトメモリアクセス（ＤＭＡ）転送を使用して、構成データの第２のセットは、メインメモリ回路とプログラマブルＩＣとの間で通信される。構成データの第２のセットを使用して、プログラマブルＩＣのプログラマブルロジックが構成される。
【００２６】
随意に、バスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、ホストデバイスとプログラマブルＩＣとの間のポイントツーポイントリンクを介して、ホストデバイスとインターフェイス接続するように設計され得る。
【００２７】
随意に、パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義する。
【００２８】
随意に、構成データの第１のセットを使用してプログラマブルＩＣを構成することは、ＤＭＡエンジンを含むようにプログラマブルＩＣを構成することをさらに含み得る。
【００２９】
随意に、上記方法は、ホストデバイスのメモリにおける特定の位置について少なくとも１つの読出コマンドをホストデバイスからＤＭＡエンジンに通信することをさらに含み得、当該特定の位置は、構成データの第２のセットを格納する。
【００３０】
随意に、ダイレクトメモリアクセス（ＤＭＡ）転送を使用して、構成データの第２のセットをバスインターフェイスモジュールに通信することは、ホストデバイスのメモリにおける特定の位置へのＤＭＡアクセスを実行するよう、ホストデバイスのルートコンプレックスモジュールを構成することをさらに含み得、当該特定の位置は、構成データの第２のセットを格納する。
【００３１】
随意に、上記方法は、ＤＭＡ転送のためにバスインターフェイスモジュールのベースアドレスレジスタを構成することをさらに含む。
【００３２】
随意に、上記方法はさらに、バスインターフェイスモジュールを通じて、ダイレクトメモリアクセス（ＤＭＡ）転送を使用して、構成データの第２のセットを通信するようホストデバイス上でソフトウェアドライバを実行することを含む。
【００３３】
随意に、上記方法はさらに、バッファアドレスレジスタおよび構成データの第２のセットのサイズに関する情報を含むバッファ記述子チェーンをセットアップすることを含む。
【００３４】
ある実現例に従うと、システムはプログラマブル集積回路（ＩＣ）を含む。プログラマブルＩＣは、ストレージ回路に接続されストレージ回路から構成データを受信するように構成される第１のインターフェイス回路と、複数のデバイスをリンクする通信バスに接続される第２のインターフェイス回路とを含む。ストレージ回路は、構成データの第１のセットを格納しており、構成データの第１のセットは、第１のインターフェイス回路を通じてプログラマブルＩＣへロードする際、通信バスを介してホストデバイスとインターフェイス接続するように設計されるバスインターフェイスモジュールと、バスインターフェイスモジュールとプログラマブルＩＣのプログラマブルロジックとの間でインターフェイス接続するように設計される内部構成アクセスインターフェイスと、バスインターフェイスモジュールを通じて、ダイレクトメモリアクセス（ＤＭＡ）転送を使用して、メインメモリ回路とプログラマブルＩＣとの間で構成データの第２のセットを通信するように設計されるダイレクトメモリアクセス（ＤＭＡ）モジュールとを作り出すように構成される。
【００３５】
随意に、バスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、ホストデバイスとプログラマブルＩＣとの間のポイントツーポイントリンクを介して、ホストデバイスとインターフェイス接続するように設計され得る。
【００３６】
随意に、パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義し得る。
【００３７】
随意に、バスインターフェイスモジュールはＤＭＡエンジンを含み得る。
随意に、ＤＭＡエンジンは、構成データの第２のセットについてホストデバイスのメモリにおける特定の位置を特定する少なくとも１つの読出コマンドを受信することに応答して、メインメモリにアクセスするように構成され得る。
【００３８】
ある実現例では、システムは、プログラマブル集積回路（ＩＣ）を含む。プログラマブル集積回路（ＩＣ）は、ストレージ回路に接続されストレージ回路から構成データを受信するように構成される第１のインターフェイス回路と、複数のデバイスをリンクする通信バスに接続される第２のインターフェイス回路とを含む。システムは、構成データの第１のセットを格納するストレージ回路を含む。構成データの第１のセットは、第１のインターフェイス回路を通じてプログラマブルＩＣへロードする際に、通信バスを介してホストデバイスとインターフェイス接続するように設計されるバスインターフェイスモジュールと、バスインターフェイスモジュールとプログラマブルＩＣのプログラマブルロジックとの間でインターフェイス接続するように設計される内部構成アクセスインターフェイスとを作り出すように構成される。上記システムはさらに、バスインターフェイスモジュールを通じて、ダイレクトメモリアクセス（ＤＭＡ）転送を使用して、メインメモリ回路とプログラマブルＩＣとの間で構成データの第２のセットを通信するように設計されるダイレクトメモリアクセス（ＤＭＡ）エンジンを有するホストデバイスを含む。
【００３９】
随意に、バスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、ホストデバイスとプログラマブルＩＣとの間のポイントツーポイントリンクを介して、ホストデバイスとインターフェイス接続するように設計され得る。
【００４０】
随意に、パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義し得る。
【００４１】
随意に、ホストデバイスは、ホストデバイスのメモリにおいて特定の位置を特定する少なくとも１つの読出コマンドをＤＭＡエンジンに通信するように構成され得、特定の位置は、構成データの第２のセットを格納し得る。
【００４２】
随意に、ＤＭＡエンジンはルートコンプレックスデバイスの部分であり得る。
随意に、ホストデバイスおよびダイレクトメモリアクセス（ＤＭＡ）エンジンは、ホストデバイスのプロセッサ回路上で実行されるソフトウェアドライバを使用して構成データの第２のセットを通信するように構成され得る。
【００４３】
他の特徴は、以下の詳細な説明および添付の請求の範囲を考慮して認識されるであろう。
【００４４】
以下の詳細な説明を検討し、添付の図面を参照すると、方法、デバイスおよびシステムのさまざまな局面および特徴が明白になるであろう。
【図面の簡単な説明】
【００４５】
【図１】ある実現例に従った、シリアルバスを使用してブートイメージデータを転送するためのシステムのブロック図を示す図である。
【図２】本開示の実現例に従った、ＰＣＩｅを介してＦＳＢＬまたはプライマリブートを実行するように構成されるシステムのブロック図を示す図である。
【図３】本開示の実現例に従った、ＰＣＩｅを介してＳＳＢＬまたはセカンダリブートを実行するように構成されるシステムのブロック図を示す図である。
【図４】さまざまな実現例に従った、ＰＣＩｅコンポーネントを有するコンピュータシステムのシステム図を示す図である。
【図５】ある実現例に従った、構成シリアルデータバスを使用してＦＳＢＬイメージを転送するためのシステムとの使用のためのフロー図を示す図である。
【図６】ある実現例に従った、構成シリアルデータバスを使用して、セカンダリブートイメージを転送するためのシステムとの使用のためのフロー図を示す図である。
【図７】ある実現例に従った、ＰＣＩｅリンクを使用してＦＳＢＬイメージを転送する文脈において有用であるハンドシェイクプロセスについてのフロー図を示す図である。
【図８】ある実現例に従った、ＤＭＡを使用して構成データを転送するためのシステムのブロック図を示す図である。
【図９】本願明細書において議論される実現例に従った、ＤＭＡ能力を含むルートコンプレックスとして使用されるシステムオンチップ（ＳｏＣ）を有するシステムのブロック図を示す図である。
【図１０】本願明細書において議論される実現例に従った、ＰＣＩｅエンドポイントにおけるＤＭＡ能力を有するように構成されるステージ１ロジックを有するシステムのブロック図を示す図である。
【図１１】さまざまな実現例に従った、ＰＣＩｅコンポーネントを有するコンピュータシステムのシステム図を示す図である。
【図１２】ある実現例に従った、ＤＭＡを使用して構成データを転送するためのシステムとの使用についてのフロー図を示す図である。
【図１３】開示された回路およびプロセスが実現され得るプログラマブル集積回路（ＩＣ）を示す図である。
【発明を実施するための形態】
【００４６】
詳細な説明
以下の記載では、本願明細書において提示される特定の例を説明するために多くの特定の詳細が記載されている。しかしながら、以下に与えられるすべての特定の詳細がなくても１つ以上の他の例および／またはこれらの例の変形例が実施され得るということは当業者に明白であるはずである。他の場合において、本願明細書における例の記載を不明瞭にしないために、周知の特徴は詳細に記載されていない。例示の容易さのために、同じ参照番号は、同じ要素または同じ要素の付加的なインスタンスを指すように異なる図において使用され得る。
【００４７】
さまざまな実現例は、ブートイメージ（たとえばＦＳＢＬ、ＳＳＢＬまたは両方）をロードするためにシリアルバスインターフェイス（たとえばＰＣＩｅ）モジュールを使用するように構成されるシステムに関する。ブートプロセスは、シリアルバスインターフェイスモジュールおよびプログラマブルロジックデバイスを構成するように初期ステージが使用され得るように複数のブートステージに分割され得る。その後のステージの間、当該シリアルバスインターフェイスモジュールを介して、ブートイメージが外部ソースからロードされ得る。ある実現例において、シリアルバスインターフェイスは、（たとえばエンコーディングおよび/またはデータスクランブリング技術を用いて）ブートイメージに含まれるデータを読み出すことを望むサードパーティに対してあるレベルのセキュリティを提供するプロトコルを使用し得る。さまざまな実現例は、高速シリアルインターフェイスの使用による高スループットを活用し得る。
【００４８】
シリアルバスインターフェイスがＰＣＩｅである実現例の場合、ＰＣＩｅリンクを介して転送されるデータは、スクランブルされ８Ｂ／１０Ｂエンコードされ得、これにより、外部侵入者が容易にシリアルストリームをデコードすることが困難になる。たとえば、外部侵入は、ＰＣＩｅリンクパートナーがシリアルデータパスに挿入されることを必要とし得る。さらに、ＰＣＩｅインターフェイスは、相対的に高速度データ転送（たとえば、使用されるＰＣＩｅ世代に依存して、レーン（lane）当たり２．５Ｇｂｐｓ、５Ｇｂｐｓおよび８Ｇｂｐｓ）を提供するように構成され得る。高速データ転送は、ブートイメージの高速ローディングを提供するため、および、ブートプロセス全体をスピードアップするために、特に有用であり得る。
【００４９】
いくつかの実現例では、シリアルバスインターフェイスを構成する初期ステージは、完全にブートＲＯＭ内から実行され得る一方、第２のステージは、ＦＳＢＬイメージ全体を転送し得る。したがって、ブートＲＯＭは、ＦＳＢＬプロセスに使用されるＦＳＢＬブートイメージ全体を転送するようＳＯＣプロセッサ回路およびシリアルバスインターフェイスモジュールを構成するための命令を含み得る。
【００５０】
ある実現例では、初期ステージは、ブートＲＯＭイメージとＦＳＢＬイメージとを実行することを含み得、第２のステージは、第２のステージブートローダ（ＳＳＢＬ： second stage bootloader）プロセスに使用されるブートイメージの転送を含み得る。ブートイメージの第１の部分は、その後のステージの間にＳＳＢＬブートイメージを転送するようＳＯＣプロセッサ回路およびシリアルバスインターフェイスモジュールを構成するための命令を含み得る。
【００５１】
ある実現例では、第１のステージは、複数のデバイスを一緒にリンクする通信バスを介してホストデバイスとインターフェイス接続するように設計されるバスインターフェイスモジュールをセットアップおよび構成するのに十分な構成データを含み得る。次いで、システムは、バスインターフェイスモジュールを通じてブートイメージ（全体または部分）をロードし得る。これにより、第２のステージは、ブートイメージを格納する回路とＳＯＣとの間でブートイメージを転送する。次いで、ＳＯＣは、ブートプロセスを継続するために、ブートイメージ内に含まれる命令を実行し得る。
【００５２】
さまざまな実現例に従うと、バスインターフェイスモジュールは、ポイントツーポイントトポロジーおよびパケットベースのプロトコルに基づく高速シリアルバスプロトコルを使用して通信するように構成され得る。ポイントツーポイントトポロジーは、デバイス同士間で多くの専用接続を使用し得、共用バストポロジーは、３つ以上のデバイスと共有される接続を使用し得る。パケットベースの通信プロトコルは、データが、各パケットにおいて特定される宛先へ別個の（小さな）ブロックで送信されることを可能にする。必要であり得るように、特定の通信ストリームについてのパケットは、宛先での受信の際に再集合され得る。
【００５３】
パケットを使用するポイントツーポイントトポロジーの特定の例は、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ： Peripheral Component Interconnect Express）である。議論の容易さのために、さまざまな実現例がＰＣＩｅの文脈で議論されるが、他のプロトコル、トポロジーおよび構成も可能であることが理解される。
【００５４】
ある実現例において、初期ステージに対応するデータのサイズは、たとえば１つ以上の設計制約条件に合致するよう相対的に小さいままにされ得る。設計制約条件は、ブートＲＯＭメモリ回路のサイズと、初期ステージ命令についての所望のロード時間に合致することとを含み得るが必ずしもこれらに限定されない。さまざまな場合において、初期ステージについての命令は、プログラマブルＩＣ（ＰＬＤ／ＦＰＧＡ）のデフォルト／構成インターフェイスを介してアクセス可能なメモリ回路に格納され得る。メモリ回路へのインターフェイスは、最初に構成されることなく電源投入時に利用可能なプログラマブルＩＣにおける回路を使用して実現され得る。このタイプのインターフェイスは時に、ハードインターフェイスと称され得る。たとえば、構成データ（たとえばブートＲＯＭイメージおよび恐らくＦＳＢＬイメージ）の第１のセットは、フラッシュメモリ回路のような永続メモリ回路に格納され得る。したがって、第１のステージについての構成データのサイズは、ハードインターフェイスを使用して構成データがロードされることを可能にするとともに、ブートイメージの後の部分がバス上で利用可能になることを可能にするよう十分に小さいままにされ得る。
【００５５】
さまざまな実現例に従うと、プログラマブルＩＣは、エンドポイント（ＥＰ： endpoint）デバイスとして動作するように構成され得、第２のステージイメージのソースはホストデバイスであり得る。たとえば、高速バスはＰＣＩｅであり得、プログラマブルＩＣはＰＣＩｅ  ＥＰデバイスとして機能するＳｏＣであり得、第２のステージのソースは、中央処理装置（ＣＰＵ）を有し、ＰＣＩｅルートコンプレックス（ホスト）として構成されるリモートコンピュータであり得る。ＥＰデバイスは、リモートＣＰＵによって制御されるＰＣＩｅスレーブとして作動し得る。ＳｏＣがマルチプロセッサ（ＭＰ： multiprocessor）デバイスである場合、ホストＣＰＵは、ＭＰＳｏＣのブートおよび共処理（co-processing）機能を制御し得るアプリケーションプロセッシングユニット（ＡＰＵ：application processing unit）を制御し得る。
【００５６】
ここで図面を参照して、図１は、ある実現例に従った、シリアルバスを使用してブートイメージデータを転送するためのシステムのブロック図を示す。当該ブロック図は、多くの回路コンポーネントを有するＳｏＣデバイス１０２を含む。図１に示される特定のＳｏＣアーキテクチャは、例として提供される。多くの異なるＳｏＣアーキテクチャが本願明細書において議論される局面および機能に関連して使用され得るということが理解される。ＳｏＣデバイス１０２は１つ以上のプロセッサコア１１０を含むのが示されている。プロセッサコアはさらにキャッシュおよび他のロジック回路を含み得る。本願明細書において議論されるように、ＳｏＣデバイス１０２は１つ以上のＡＰＵを含み得る。ある実現例では、ＡＰＵのうちの１つはブートプロセッサとしての使用のために構成され得る。
【００５７】
プロセッサインターコネクト１０８は、プロセッサコア１１０とさまざまな他のインターフェイス回路との間のインターフェイスを提供し得る。これらの付加的な回路は、フラッシュコントローラロジック回路１０４のようなストレージインターフェイス回路を含み得る。当該ストレージインターフェイス回路は、ＳｏＣの電源投入の際に、不揮発性メモリ回路（たとえばフラッシュメモリ回路）から第１のブートイメージをロードするように構成される。ＤＲＡＭコントローラロジック回路１０６は、ダイナミックメモリ回路へのアクセスを提供するように構成され得る。ダイナミックメモリ回路は、異なるバージョンのダブルデータレート（ＤＤＲ）（たとえばＤＤＲ２、ＤＤＲ３、ＤＤＲ３Ｌ）に従って動作するように構成されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）回路を含み得るがこれらに限定されない。他のタイプのＲＡＭ回路も可能である。
【００５８】
プログラマブルロジック回路ブロック１１２は、アレイにおいて配されるいくつかの異なるタイプのプログラマブルロジックブロックを含み得る。たとえば、プログラマブルロジックは、マルチギガビットトランシーバ（ＭＧＴ）、コンフィギュラブルロジックブロック（ＣＬＢ）、ランダムアクセスメモリブロック（ＢＲＡＭ）、入出力ブロック（ＩＯＢ）、構成およびクロッキングロジック、デジタル信号処理ブロック、たとえばクロックポートのような特殊化入出力ブロック、ならびに、デジタルクロックマネージャ、アナログ―デジタル変換器およびシステム監視ロジックなどのような他のプログラマブルロジックといった多くの異なるプログラマブルタイルを含み得る。なお、さまざまなＳｏＣアーキテクチャはプログラマブルロジックを含まなくてもよい。議論の容易さのために、さまざまな実施形態はプログラマブルロジックを有するＳｏＣの文脈で議論されるが、対応する実施形態は必ずしもそれに限定されない。
【００５９】
ある実現例に従うと、ＳｏＣデバイス１０２は１つ以上の付加的なハード入出力（Ｉ／Ｏ）インターフェイスモジュール１１４を含み得る。これらのＩ／Ｏインターフェイスモジュールは、電源投入の際に、対応するビットストリームから、最初にプログラマブルロジックにおいて構成されることなく、利用可能であるプログラマブルＩＣにおいて回路を使用して実現されるハードインターフェイスモジュールであり得る。ハードＩ／Ｏインターフェイスモジュール１１４は、１つ以上のシリアルバスインターフェイスモジュール１１６（たとえばＰＣＩｅインターフェイスモジュール）を含み得る。本願明細書においてより詳細に議論されるように、ハードＰＣＩｅインターフェイスモジュールの存在は、第１のステージブートローダ（ＦＳＢＬ）イメージがＰＣＩｅを介してロードされることを可能にするために特に有用であり得る。さまざまな実現例において、ソフトＰＣＩｅインターフェイスモジュールは、プログラマブルロジック回路ブロック１１２においてロジックの構成によって使用され得る。さらに本願明細書においてより詳細に議論されるように、ソフトウェアＰＣＩｅインターフェイスモジュールの使用は、ＦＳＢＬがプログラマブルロジック内でＰＣＩｅインターフェイスモジュールを構成するために最初に使用された後、第２のステージブートローダ（ＳＳＢＬ）イメージのロードに有用であり得る。
【００６０】
シリアルバスインターフェイスモジュール１１６は（リモート）ホストデバイス１１８と通信するように構成され得る。ホストデバイス１１８は、Ｘ−８６コンピュータシステムを含むがこれに限定されないさまざまな異なるコンピュータシステムを使用して実現され得る。ホストデバイス１１８は、ＣＰＵ１２４、ホストインターフェイスモジュール１２２およびストレージ回路１２０を含み得る。さまざまな実現例に従うと、ホストインターフェイスモジュール１２２は、ホストデバイスと、スレーブデバイスとして機能し得るＳｏＣとの間のデータフローを制御し得る。ＰＣＩｅ実現例では、ホストインターフェイスモジュール１２２は、ＰＣＩｅ階層のルートコンプレックスとして機能し得る。
【００６１】
さまざまな実現例に従うと、ＣＰＵ１２４上で実行されるソフトウェアドライバは、ＦＳＢＬプロセスのための使用のためにブートイメージの第２の部分の転送を開始および制御し得る。本願明細書において議論されるように、当該転送は、いつ転送がスタートしたかと、いつ転送が完了したかとをＳｏＣに示すハンドシェイクプロトコルの使用を伴い得る。ＳｏＣは、ハンドシェイクプロトコルと、転送の完了の際のブートイメージの第２の部分の実行とを使用するように構成されるソフトウェアドライバを実行し得る。
【００６２】
さまざまな実現例に従うと、最初にブートＲＯＭ（BootROM）、次いで第１のステージブートローダ（ＦＳＢＬ）が実行される。ＰＣＩｅリンクが構成され、次いで、ユニバーサルブートローダ（ｕブート）が、ＰＣＩｅリンクを介して外部ホストマシンからＳｏＣのローカルメモリに転送され得る。
【００６３】
図２は、本開示の実現例に従った、ＰＣＩｅを介してＦＳＢＬまたはプライマリブートを実行するように構成されるシステムのブロック図を示す。ある実現例に従うと、ＳｏＣ２１４は、ＰＣＩｅインターフェイスを介してＦＳＢＬイメージ全体を抽出するように構成され得る。ＡＰＵ２０２は、電源投入の際に不揮発性メモリからブートＲＯＭをロードするブートプロセッサとして機能し得、そうでなければメインプロセッサ２０４を使用して実行するようシステムをセットアップすることを支援する。ブートＲＯＭは、ＰＣＩｅエンドポイント（ＥＰ）モジュール２１０およびアドバンストエクステンシブルインターフェイス（ＡＸＩ： Advanced eXtensible Interface）−ＰＣＩｅブリッジ２０６の構成を含むＳｏＣ２１４の初期構成を可能にする命令を含み得る。当該命令はさらに、スクラッチパッドメモリ領域２０８としての使用のためにメモリの部分を確保し得る。ＡＰＵ２０２がひとたびＦＳＢＬイメージの転送について準備ができると、ＡＰＵ２０２は、スクラッチパッドメモリ領域２０８においてフラグをセットすることによりホストシステム２１６に信号送信し得る。
【００６４】
ホストシステム２１６は、プロセッサ回路２２４およびローカルメモリ２２０を含み得る。ある実現例では、プロセッサ回路２２４およびローカルメモリはＸ−８６システムの部分であり得るが、他のタイプのプロセッサシステムも可能である。ホストシステムは、システム全体について（ホストシステム２１６およびＳｏＣ２１４の両方について）のルートコンプレックスとして動作するように構成されるＰＣＩｅルートモジュール２１８を含み得る。起動の後に、ＰＣＩｅルートモジュールは、ＳｏＣ２１４を含む全体のシステムにおけるすべてのＰＣＩｅエンドポイントデバイスを列挙（enumerate）し得る。列挙プロセスは、（ＳｏＣ２１４を含む）ＰＣＩｅエンドポイントデバイスおよびＰＣＩｅルートモジュールが通信することを可能にするアドレシングマッピングを定義することを含む。
【００６５】
ＡＰＵ２０２およびプロセッサ回路２２４の両方はそれぞれ、ブリッジ２０６および２２２とインターフェイス接続するのが示される。アドバンスドエクステンシブルインターフェイス（ＡＸＩ）は、プロセッサによって使用され得るローカルバスインターフェイスの例であるが、さまざまな実現例は特定のバスインターフェイスの使用に限定されない。
【００６６】
いくつかの実現例に従うと、ホストシステム２１６上で実行されるソフトウェアドライバは、スクラッチパッドメモリ領域２０８においてフラグがセットされるときを検出するように構成され得る。この検出はたとえば、スクラッチパッドメモリ領域２０８をポーリングすることを含み得る。ソフトウェアドライバは、ＰＣＩｅトランザクションを使用してオンチップメモリ２１２にＦＳＢＬイメージを転送することによりフラグの検出に応答し得る。ホストシステム２１６のソフトウェアドライバは、転送が完了したことをＡＰＵ２０２のソフトウェアドライバに通知するように構成され得る。ＡＰＵ２０２への通知は異なるソリューションを使用して実行され得る。たとえば、ホストシステム２１６上で実行されるソフトウェアドライバがひとたびブートローダイメージの転送を完了すると、ＡＸＩ−ＰＣＩｅブリッジ２０６は、ＡＰＵ２０２へのローカル共有周辺割込（local shared peripheral interrupt）を生成し得る。代替的には、ＡＰＵは、スクラッチパッドメモリ領域２０８における転送完了ビットについて監視し得る。たとえば、ＡＰＵは、対応するビット（またはビットのセット）の設定を検出するよう、メモリにおける適切な位置を周期的にポーリングし得る。いくつかの実現例では、ホストシステムのソフトウェアドライバは、転送が完了すると、転送が、フラグを開始およびクリア（または異なるフラグをセットする）したことを示すフラグをセットするように構成され得る。ＡＰＵブートプロセッサのソフトウェアドライバは、転送が完了したときを検出し得る。その後、完了した転送の検出に応答して、ＦＳＢＬイメージがメインプロセッサによって実行され得る。
【００６７】
図３は、本開示の実現例に従った、ＰＣＩｅを介してＳＳＢＬまたはセカンダリブートを実行するように構成されるシステムのブロック図を示す。ＳｏＣ３０２は、ＰＣＩｅを使用して第２のステージブートローダ（ＳＳＢＬ）を転送するように構成され得る。ＳｏＣ３０２は、メインプロセッサ３１０と、メモリコントローラ回路３１２を通じてアクセス可能であるメインメモリ回路（たとえばＤＤＲメモリ）３１４とを含む。ＡＸＩモジュール３０６は、メインプロセッサがさまざまなモジュールおよびデバイスとインターフェイス接続することを可能にするように設計されるロジック回路を含み得る。たとえば、ＡＸＩモジュール回路は、ＰＣＩｅモジュール３０４と通信するＡＸＩ−ＰＣＩｅブリッジとして機能し得る。
【００６８】
本願明細書において議論されるように、ＰＣＩｅモジュール３０４はプログラマブルロジックを使用して実現されるソフトインターフェイスであり得る。たとえば、ＦＳＢＬは、ＳｏＣ３０２の不揮発性メモリ回路からロードされ得る。ＦＳＢＬは、ＰＣＩｅモジュール３０４を含むようにプログラマブルロジックをプログラムするために使用されるビットストリームデータを含み得るか、または、当該ビットストリームデータにアクセスし得る。ＰＣＩｅモジュール３０４がひとたび適切にプログラマブルロジックハードウェアにおいてセットアップされると、ＦＳＢＬは、ＳＳＢＬの転送および完了について監視するように構成され得る。たとえば、ＦＳＢＬは、より詳細に本願明細書において議論されるハンドシェイクプロシージャを実現するソフトウェアドライバを実行し得る。
【００６９】
ある実現例に従うと、ＦＳＢＬおよび対応するビットストリームはさらに、ＳｏＣ３０２のプログラマブルロジックにおいてインターフェイスハンドシェイキングブロック３０８を作成するように構成され得る。
【００７０】
さまざまな実現例に従うと、ＳｏＣ３０２は、ホストシステム３１６と通信するＰＣＩｅエンドポイントデバイスとして動作するように構成され得る。ホストシステム３１６は、ホストデバイスとして動作するように構成され得る。たとえば、ＰＣＩｅアーキテクチャにおけるホストデバイスは、ＰＣＩｅルートコンプレックスモジュール３１８を含む。ローカルプロセッサ回路３２４は、ルートコンプレックスモジュール３１８を通じてすべてのＰＣＩｅエンドポイントデバイスに接続するＡＸＩ−ＰＣＩｅブリッジ３２２を通じて異なるＰＣＩｅエンドポイントデバイスと通信し得る。
【００７１】
多くの実現例では、図３のシステムは、システム初期化が第１のステージブートローダ（ＦＳＢＬ）によって行われた後に開始されるＳｏＣベースのアプリケーションによってロードされ得るセカンダリブートイメージとの使用のために構成され得る。ＰＣＩｅまたは同様のバスを介するセカンダリブートイメージのロードは、ＦＳＢＬと共に対応する（セカンダリブートイメージとしての）アプリケーションをフラッシュ（flash）する必要性を除去するために有用であり得る。たとえば、セカンダリブートイメージ（たとえばｕブート）は最初は、ホストシステム３１６のメモリ３２０に格納され得る。イメージは、ホストシステム３１６上で実行されるソフトウェアドライバアプリケーションによってダブルワード（ＤＷ： double words）へとパースされ得、ＰＣＩｅを介して送信され得る。ＤＷは、ＡＸＩモジュール３０６によってメモリ３１４における予め規定される位置に書き込まれ得る。いくつかの実現例では、ＡＸＩモジュールは、ＰＣＩｅを介してＤＷとして受信されるデータを格納するためにメモリ３１４へのマッピングを使用するＡＸＩメモリマッピングプロトコルを実現するカスタムロジックを含み得る。
【００７２】
セカンダリブートイメージの転送の開始時において、メインプロセッサ３１０上で作動するアプリケーションは、ＳｏＣ３０２がセカンダリブートイメージを受信する準備ができていることの指示を提供し得る。たとえば、メインプロセッサ３１０上で実行されるアプリケーションは、インターフェイスハンドシェイキングブロック３０８にマッピングされるデータ位置（レジスタ）に書き込むように構成され得る。たとえば、データ位置は、ＰＣＩｅを介してＡＸＩモジュール３０６を通じてアクセス可能なデータレジスタに対応し得る。データレジスタのアクセシビリティを促進するために、ＰＣＩｅモジュール３０４のＰＣＩｅスペースの部分は、インターフェイスハンドシェイキングブロック３０８にマッピングされ得る。ホストシステム３１６上で実行されるソフトウェアドライバは、このメモリマッピングされた位置から周期的に読み出すことによって、ＳｏＣ３０２のステータスについてポーリングし得る。データレジスタが書き込まれたことを検出すること（それは、ＳｏＣ３０２がセカンダリブートイメージを受信する準備ができていることを示す）に応答して、ホストシステム３１６のソフトウェアドライバは、ＰＣＩｅモジュール３０４と３１８との間のＰＣＩｅリンクを使用してＳｏＣ３０２にセカンダリブートイメージを転送し始めるように構成され得る。セカンダリブートイメージの転送が完了すると、ホストシステム３１６のソフトウェアドライバは、インターフェイスハンドシェイキングブロック３０８にマッピングされるメモリ位置に書き込むように構成され得る。インターフェイスハンドシェイキングブロック３０８は、割込をアサートすることによって、または、メインプロセッサ３１０によってポーリングされ得るレジスタにデータを格納することによって、データ書込に応答し得る。その後、メインプロセッサ３１０は、セカンダリブートイメージ（たとえばｕブートイメージ）の実行を開始し得る。
【００７３】
図４は、さまざまな実現例に従った、ＰＣＩｅコンポーネントを有するコンピュータシステムのシステム図を示す。ＣＰＵ４０２は１つ以上のプロセッサコア４０４を含む。ホストブリッジ４０６（ノースブリッジ（North Bridge）とも称される場合がある）は、プロセッサコアと他のシステムコンポーネントとの間の通信を促進し、かつ、プロセッサコアにインターフェイスを提供するフロントサイドバス（ＦＳＢ： front-side bus）モジュール４０８を含む。ホストブリッジ４０６は、ＰＣＩｅルートコンプレックス（デバイス／モジュール）４１０として機能するように構成され得る。ＰＣＩｅルートコンプレックスモジュール４１０は、ＰＣＩｅデバイスツリーを、メインメモリ４１６と、プロセッサコア４０４と、グラフィックスプロセッシングユニット（ＧＰＵ： graphics processing unit）（図示せず）のような他のデバイスとに接続する。ルートコンプレックスは、ＣＰＵとは別個の物理的なチップの部分として実現され得るが、ルートコンプレックスはＣＰＵチップに統合することも可能である。メインメモリ４１６は、メモリコントローラ回路４１４を使用してアクセスされ得る。
【００７４】
いくつかの実現例では、チップセットインターフェイスモジュール４１２は、異なる通信プロトコル（たとえばプロプラエタリチップセットプロトコル）を使用してチップセット４１８と通信するために使用され得る。対応するチップセットインターフェイスモジュール４２０は、チップセットに特有の通信プロトコルと１つ以上のＰＣＩｅスイッチ４２２との間のインターフェイスを提供し得る。多くのＰＣＩｅエンドポイント（ＥＰ）デバイス４２４，４２６は、ＰＣＩｅスイッチを通じてアクセス可能であり得る。各ＰＣＩｅ  ＥＰは、専用の高速シリアル接続を通じてＰＣＩｅスイッチに接続され得る。これにより、システムはポイントツーポイントトポロジーを使用して構成される。さらに、データはパケットベースのプロトコルを使用して送信され得る。たとえば、ＣＰＵは、ＰＣＩｅ  ＥＰに対応する宛先アドレスを特定するパケットのセットにおいてデータをカプセル化するソフトウェアドライバを実行し得る。ルートコンプレックスと、送信パスにおける各その後のモジュールとは、パケットを受信し得、ルーティングテーブルと宛先アドレスとを使用してポイントツーポイント接続（ポート）を識別し得る。パケットは、送信パスにおいて次のモジュールによって受信され得るように、識別されたポート上で送信され得る。
【００７５】
本願明細書において議論されるさまざまな実現例に従うと、ＰＣＩｅ  ＥＰデバイス４２４，４２６のうちの１つ以上は、本願明細書において議論されるプライマリまたはセカンダリブートイメージ転送ソリューションとともに、プログラマブルＩＣを使用して実現され得る。
【００７６】
図５は、ある実現例に従った、構成シリアルデータバスを使用して、ＦＳＢＬイメージを転送するためのシステムとの使用のためのフロー図を示す。当該フローは、ブロック５０２について、パワーオンリセットイベントから開始する。たとえば、パワーオンリセットイベントは、ホストシステムおよびＳｏＣエンドポイントデバイスに動作電力が提供された後に、発生し得る。ホストシステムは、そのブートサイクル内のあるポイントに到達するまで、リセット状態を維持し得る。
【００７７】
ＳｏＣエンドポイントデバイスは、ホストシステムによってリセット状態から解放されると、ブロック５０４について、ブートＲＯＭコードを抽出し実行し始め得る。ブートＲＯＭコードはたとえば、フラッシュメモリ回路、ＰＲＯＭまたは同様のストレージ回路のようなローカルの不揮発性メモリ回路に格納され得る。さまざまな実現例に従うと、ブートＲＯＭは、たとえばブート媒体を選択しＦＳＢＬイメージをロードすることによって、初期のブートプロセスを管理するように設計される命令を含み得る。本願明細書において議論されるように、ブートＲＯＭコードは、ハードＰＣＩｅインターフェイスモジュールのようなローカルシリアルバスモジュールまたはインターフェイスを構成する命令を含み得る。したがって、ＦＳＢＬイメージは、ブロック５０６について、ＰＣＩｅまたは同様のバスプロトコルを使用してロードされ得る。ＦＳＢＬは、ＰＬＬ係数をセットするといったような、重要な初期のシステム初期化機能を実行し得る。ＳＳＢＬを含むその後の情報も、ブロック５０８について、ＰＣＩｅを使用して転送され得る。
【００７８】
さまざまなバスプロトコルは、ＦＳＢＬおよびＳＳＢＬイメージを転送するために多くの異なる利点を提供する。たとえば、ＰＣＩｅは、相対的に高速のデータ転送速度（たとえばｘ４Ｇｅｎ２構成について２０Ｇｂｐｓのシリアルスループットまで）を有しており、８Ｂ／１０Ｂエンコーディングのオーバーヘッドでも、実効スループットは高くあり得る（たとえば１６Ｇｂｐｓまで）。高速通信バスの使用は、大きなブートイメージの場合でも速い転送時間を提供し得る。ＰＣＩｅはさらに、あるデータトランザクションにプライオリティを提供することにより転送時間に対して保証を提供するサービス品質（ＱｏＳ： quality of service）オプションの使用を可能にする。したがって、ＱｏＳオプションは、ブートイメージ転送タイミングにおいて既知のレイテンシを提供するために有効化され得る。さらに、ＰＣＩｅは、シリアルに送信される符号（character）をスクランブルし８Ｂ／１０Ｂエンコーディングを使用する。データをスクランブルすることによって、たとえば外部プローブによりバストランザクションを詮索することを試み得るサードパーティが送信データを読み出す試みが妨げられ得る。したがって、ＰＣＩｅの使用はセキュリティの向上を提供し得る。さらに、ＰＣＩｅの使用は、転送されたブートイメージのリモートアップグレーディングのための機会を与える。たとえば、イーサネットインターフェイスは、ホストデバイスのイメージを更新するために使用され得る。システムのその後のブートの際に、新しく更新されるイメージが展開され得る。ある実現例では、更新されたイメージの真正性は、たとえばデジタル署名、暗号化および他の認証ソリューションならびにそれらの組み合わせを使用して、照合され得る。
【００７９】
図６は、ある実現例に従った、構成シリアルデータバスを使用して、セカンダリブートイメージを転送するためのシステムとの使用のためのフロー図を示す。フロー図は、ブロック６５２について、パワーオンリセットイベントの発生から開始する。ＳｏＣエンドポイントデバイスは、ホストシステムによってリセット状態から解放されると、ブロック６５４について、ブートＲＯＭコードを抽出および実行し始め得る。ＲＯＭコードは、ブロック６５６について、ＦＳＢＬイメージを抽出するための命令（どこでおよびどのように）を提供し得る。たとえば、ＦＳＢＬイメージが、ローカルストレージ回路（たとえばフラッシュメモリ回路またはＰＲＯＭメモリ回路）から抽出され得る。
【００８０】
さまざまな実現例に従うと、ＦＳＢＬイメージは、ＳｏＣのハードＰＣＩｅインターフェイスモジュールのようなローカルシリアルバスモジュールまたはインターフェイスを構成するための命令を含み得る。したがって、ＳＳＢＬイメージは、ブロック６５８について、ＰＣＩｅまたは同様のバスプロトコルを使用してロードされ得る。ＳＳＢＬの特定の例はｕブートである。Ｕブートは「ユニバーサルブートローダ」を表わしており、Ｌｉｎｕｘ（登録商標）のようなオペレーティングシステムをブートする目的で埋込デバイスにおいて使用され得るオープンソースブートローダである。
【００８１】
図７は、ある実現例に従った、ＰＣＩｅリンクを使用してＦＳＢＬイメージを転送する文脈において有用であるハンドシェイクプロセスについてのフロー図を示す。ブートＲＯＭコードは、ブロック７０２について、実行を開始し得る。ブートＲＯＭコードは、ローカルストレージ回路からロードされ得、ブートＲＯＭコードの実行によって、ブロック７０４について、ＳｏＣが低レベルの局面を構成することが可能になり得、かつ、ＳｏＣがローカルＰＣＩｅモジュールとホストデバイスのＰＣＩｅルートコンプレックスとの間でリンクが確立されるのを監視および待機するアプリケーションの実行を開始することが可能になり得る。ホストデバイスがシステムにおけるＰＣＩｅエンドポイントデバイスを列挙すると、リンクが発生し得る。列挙プロセスは、ＰＣＩｅエンドポイントデバイスおよびＰＣＩｅルートコンプレックスモジュールが通信することを可能にするアドレシングマッピングを定義することを含む。
【００８２】
リンクがひとたび確立されると、システムのＰＣＩｅモジュールは、ブロック７０６について、初期化および構成され得る。ブロック７０６に対応するプロセスは、ルートコンプレックスとエンドポイントデバイスのメモリおよびメインプロセッサとの間の任意のＰＣＩｅブリッジの初期化および構成を含み得る。たとえば、ＰＣＩｅブリッジは、スクラッチパッドとして使用されるローカルメモリの第１の部分にマッピングされるアドレス範囲と、ＦＳＢＬイメージを格納するために使用されるエンドポイントデバイスの第２の部分にマッピングされる別のアドレス範囲とを有し得る。ＰＣＩｅモジュールがひとたび初期化され適切に構成されると、ＳｏＣエンドポイントデバイスのメインプロセッサは、ブロック７０８について、当該ＳｏＣエンドポイントデバイスがＦＳＢＬイメージを受信する準備ができていることを示すスクラッチパッドメモリの位置を更新し得る。
【００８３】
ホストデバイス上で実行されるアプリケーション／ドライバは、スクラッチパッドメモリの位置がＦＳＢＬイメージが転送され得ることを示すように更新されたことを検出し得る。ブロック７１０によって示されるように、ドライバは、ＦＳＢＬイメージの転送がいつ完了したかを決定し得る。ＦＳＢＬイメージの転送が完了したと決定すると、ドライバは、ブロック７１２について、転送が完了したことを示すようスクラッチパッドメモリ内の第２の位置を更新し得る。その後、ＦＳＢＬイメージは、スクラッチパッドメモリにおける指示を検出すると、ＳｏＣエンドポイントによって実行され得る。ＳＳＢＬイメージのような付加的なイメージは、図７に関して記載されるのと同じ（または同様の）プロセスを使用して転送され得る。
【００８４】
さまざまな他の実現例は、プログラマブルＩＣ（ＰＬＤ  ＩＣと称される場合がある）のための構成データ（構成「ビットストリーム」とも称される場合がある）のロードを２つの異なるステージに分割するように構成されるシステムに関する。２つの異なるステージへロードを分割することによって、プログラマブルＩＣが構成の間に、時間対可用性要件（time-to-availability requirements）を満たすことが可能になり得る。さらに、第２のステージ構成データについての転送は、本願明細書においてより詳細に議論されるように、ダイレクトメモリアクセス（ＤＭＡ： direct memory access）転送を使用して促進され得る。ＤＭＡ転送は、中央演算処理装置（ＣＰＵ）によって使用されＣＰＵから独立しているメインメモリへのアクセスを伴う（たとえば、ＣＰＵからメインメモリおよびＰＬＤ  ＩＣへ個々の読出または書込コマンドなしで）。たとえば、ＣＰＵは、ＤＭＡエンジンへメモリアクセスコマンドを送信するデバイスドライバソフトウェアを実行し得、ＤＭＡエンジンは次いで、メインメモリへアクセスすることと、アクセスされたデータをプログラマブルＩＣに転送することとを扱う。
【００８５】
ある実現例では、第１のステージは、複数のデバイスをともにリンクする通信バスを介してホストデバイスとインターフェイス接続するように設計されるバスインターフェイスモジュールを確立するために十分な構成データを含み得る。バスインターフェイスモジュールとプログラマブルＩＣのプログラマブルロジックとの間のインターフェイスを提供するために内部構成アクセスインターフェイスも含まれ得る。システムはその後、バスインターフェイスモジュールを通じてＤＭＡ転送を使用して残りの構成データをロードするように構成される。これにより、構成データの第２のセットは、低いＣＰＵ利用で、メインメモリ回路とプログラマブルＩＣとの間で直接的に移動され得る。次いで、ＰＬＤのプログラマブルロジックはさらに、構成データの第２のセットを使用して構成され得る。
【００８６】
さまざまな実現例に従うと、バスインターフェイスモジュールは、ポイントツーポイントトポロジーおよびパケットベースのプロトコルに基づく高速シリアルバスプロトコルを使用して通信するように構成され得る。ポイントツーポイントトポロジーは、デバイス同士間で多くの専用接続を使用し得、共用バストポロジーは、３つ以上のデバイスと共有される接続を使用し得る。パケットベースの通信プロトコルは、データが、各パケットにおいて特定される宛先へ別個の（小さな）ブロックで送信されることを可能にする。必要であり得るように、特定の通信ストリームについてのパケットは、宛先での受信の際に再集合され得る。
【００８７】
パケットを使用するポイントツーポイントトポロジーの特定の例は、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ： Peripheral Component Interconnect Express）である。議論の容易さのために、さまざまな実現例がＰＣＩｅの文脈で議論されるが、他のプロトコル、トポロジーおよび構成も可能であることが理解される。
【００８８】
ある実現例では、第１のステージについての構成データのサイズは、初期の所望の構成タイミングに合致するよう十分小さいままである。たとえば、ＰＣＩｅの仕様は、ＰＣＩｅに準拠するエンドポイントデバイスが１００ｍｓのブート時間を満たすという要件を含む。さまざまな場合において、構成データの第１のセットは、プログラマブルＩＣ（ＰＬＤ／ＦＰＧＡ）のデフォルト／構成インターフェイスを介してアクセス可能なメモリ回路に格納され得る。このインターフェイスは、電源投入時に、最初に構成されることなく利用可能なプログラマブルＩＣにおける回路を使用して実現され得る。たとえば、構成データの第１のセットは、フラッシュメモリ回路のような永続メモリ回路に格納され得る。したがって、第１のステージについての構成データのサイズは、構成データがハードインターフェイスを使用してロードされることを可能にするとともにプログラマブルＩＣが所望の時間（たとえば１００ｍｓ）内でバス上で利用可能に構成されることを可能にするよう十分小さいままであり得る。
【００８９】
ある実現例に従うと、プログラマブルＩＣは、バスインターフェイスモジュールと、プログラマブルＩＣのプログラマブルロジックとの間でインターフェイス接続するように設計される内部構成アクセスインターフェイスを含み得る。この内部構成アクセスインターフェイスは、プログラマブルＩＣの構成ロジックへのアクセスを提供するよう、バスインターフェイスに統合され得る。一方、いくつかの場合において、内部構成アクセスインターフェイスは、プログラマブルＩＣへの（デバイスドライバによって制御される）構成メモリ書込を使用して、第２のステージ構成データを転送するように構成され得る。構成データは、各々がＣＰＵに由来する多くの異なる書込コマンドに書き込まれている。書込コマンドは、貴重なホストプロセッサ時間を使用し得、それでも、全データ転送を完了するのに有意な量の時間をかけ得る。さまざまな実現例の特定の局面は、同様のメカニズムの構成メモリ書込を使用するのではなく、ＤＭＡ転送を第２のステージ転送に使用するように構成されるシステムに関する。これは、プロセッサ負荷を低減または除去するため、かつ、第２のステージ転送の速度を増加させるために特に有用であり得る。
【００９０】
図８は、ある実現例に従った、ＤＭＡを使用して構成データを転送するためのシステムのブロック図を示す。システム８０６は、ストレージ回路８２０から構成データの第１のステージをロードするように構成される、プログラマブルＩＣ８０８を有し得る（ＰＣＩｅ）エンドポイントカード８２２を含み得る。ストレージ回路８２０は、ＰＲＯＭ（プログラマブルリードオンリメモリ）、フラッシュメモリまたは別のタイプのメモリ回路として実現され得る。初期の（ストレージ）構成インターフェイス８１８は、プログラマブルＩＣのプログラマブルロジックの第１の部分を構成するために、ストレージ回路８２０から構成データを抽出するように構成され得る。
【００９１】
本願明細書において議論されるように、初期構成プロセスについてのデータ転送速度は、所望の時間内（たとえばＰＣＩｅエンドポイントデバイスの場合１００ｍｓ）でプログラマブルＩＣについての構成データのすべてを転送するのに不十分であり得る。したがって、構成データは２つ以上のステージへ分割され得、これにより、異なる時間で対応するロジックの構成が可能になる。たとえば、構成データの第１のステージは、プライマリプログラマブルロジック８１４であると識別されるプログラマブルロジックの部分を構成するためのデータを含み得る。プライマリプログラマブルロジック８１４は、バスインターフェイスモジュール８１０と内部構成アクセスインターフェイス８１２とを含み得るが必ずしもこれらに限定されない。ある実現例では、バスインターフェイスモジュール８１０は、ルートコンプレックス８０２、プロセッサ回路８２４およびメモリ回路８０４を含むホストデバイスとのポイントツーポイントリンクを使用するように構成され得る。特定の実現例において、ポイントツーポイントリンクは、ルートコンプレックス８０２を介してホストデバイスと通信するためにＰＣＩｅプロトコルを使用する。
【００９２】
メモリ回路８０４は、セカンダリプログラマブルロジック８１６を構成するための（セカンダリ）構成データを格納し得る。このセカンダリ構成データは、ＤＭＡ転送を使用して、バスインターフェイスモジュール８１０を使用してアクセスされ得る。ＰＣＩｅプロトコルの場合、ＤＭＡ転送は、直接的にメモリ回路８０４にアクセスするＤＭＡ対応バスマスタとしてルートコンプレックス８０２を使用することによって促進され得る。特定の実現例において、本願明細書においてより詳細に説明されるように、ホストデバイスは、ＰＣＩｅデバイスツリーのルートコンプレックスデバイスとして機能し得る。ＤＭＡ転送は、メモリ回路８０４へのＤＭＡ転送を実現するバスマスタとしてバスインターフェイスモジュール８１０が機能することを可能にするＤＭＡエンジンを有するバスインターフェイスモジュール８１０を設計することによって、促進され得る。デバイスドライバソフトウェアは、ＤＭＡ転送に使用されるバッファのための物理アドレスを構成および識別することにより、ＤＭＡ転送を促進し得る。ＰＣＩｅの文脈では、これは、バスインターフェイスモジュール８１０のＢＡＲマッピングされたレジスタを識別および使用することを含み得る。
【００９３】
図９は、本願明細書において議論される実現例に従った、ＤＭＡ能力を含むルートコンプレックスとして使用されるシステムオンチップ（ＳｏＣ）を有するシステムについてのブロック図を示す。（ＰＣＩｅ）エンドポイントカード９０４はプログラマブルＩＣ（ＦＰＧＡ）９３２を含み得る。プログラマブルＩＣ９３２はステージ１（プログラマブル）ロジックインターフェイス９２８を含み得る。ステージ１ロジックインターフェイス９２８は、ステージ１ロジック９１６を構成する目的で、ステージ１構成データにアクセスしロードするように設計され得る。プログラマブルＩＣ９３２の初期化（たとえばパワーオン）の際、ステージ１ロジックインターフェイスはステージ１構成データ９３０を抽出し始める。ステージ１構成データは、（たとえば内部の不揮発性メモリとしての）プログラマブルＩＣ９３２に格納され得るか、または、（たとえば外部の不揮発性メモリ回路としての）別個のＩＣ９３０に格納され得る。ステージ１構成データのサイズは、相対的に小さくされたままであり得、これにより、ロードおよびその後の構成が所定の時間（たとえばＰＣＩｅの場合１００ｍｓ）内で実行されることが可能になる。
【００９４】
対応するプログラマブルロジックの構成の後、ステージ１ロジック９１６は、たとえばＰＣＩｅを使用するように構成され得るバスインターフェイスモジュール９１８を含み得る。ステージ１ロジック９１６はさらに、バスインターフェイスモジュール９１８とプログラマブルロジックとの間でのステージ２内部構成アクセスインターフェイス９２２を含むように構成され得る。当該２つのインターフェイスを介して受信されるデータは、ステージ２ロジック９２６をプログラムするために使用され得る。いくつかの場合では、ブリッジ９２０は、ブリッジのいずれかの側上で使用される通信プロトコル同士間のインターフェイスを提供するよう、バスインターフェイスモジュール９１８との間で実現され得る。ＰＣＩｅインターフェイス９１０はバスインターフェイスモジュール９１８と通信するように構成され得る。
【００９５】
いくつかの実現例では、ＳｏＣ９０２はシステムのＰＣＩｅルートコンプレックスを有するホストデバイスとして機能するように構成され得る。ＣＰＵ９０６は、通常動作の間に、メインメモリ９１２にアクセスするように構成され得る。メインメモリ９１２はさらに、メインメモリ９１２へのＤＭＡトランザクションを使用するように構成されるＤＭＡエンジンを含むブリッジ９０８によってアクセス可能であるように構成され得る。これにより、メインメモリおよび他のデバイスへの読出および書込要求によりＣＰＵ９０６に負担をかけることなく、ＳｏＣ９０２がメインメモリからステージ２構成データを直接的に抽出することが可能になり得る。
【００９６】
いくつかの実現例に従うと、ステージ２構成データは、（たとえば、イーサネットを使用して）外部インターフェイス９１４から提供され得る。特定の実現例において、ステージ１ロジック９１６は、ステージ２ロジック９２６の再構成を可能にするように構成され得る。したがって、プログラマブルＩＣ９３２は、ステージ２ロジック９２６へのリモートアップグレードを可能にするように構成され得る。たとえば、ステージ１ロジック９１６は、ステージ２構成ロジックがＤＭＡ転送を使用して受信される構成モードに（再び）入ることにより特定の通信に応答するように構成され得る。次いで、ステージ２ロジック９１６は、新しく受信された構成データ３０８に従って構成され得る。
【００９７】
図１０は、本願明細書において議論される実現例に従った、ＤＭＡ能力を有するように構成されるステージ１ロジックを有するシステムについてのブロック図を示す。図９における議論と同様に、（ＰＣＩｅ）エンドポイントカード１００４はプログラマブルＩＣ１０２６を含み得る。プログラマブルＩＣ１０２６はステージ１（プログラマブル）ロジックインターフェイス１０２２を含み得る。ステージ１プログラマブルロジックインターフェイス１０２２は、ステージ１（プログラマブル）ロジック１０１８を構成する目的で、ステージ１構成データ１０２４にアクセスしロードするように設計され得る。プログラマブルＩＣ１０２６の初期化（たとえばパワーオン）の際、ステージ１ロジックインターフェイス１０２２はステージ１構成データ１０２４を抽出し始める。ステージ１構成データ１０２４は、（たとえば内部の不揮発性メモリとしての）プログラマブルＩＣ１０２６上に格納され得るか、または、（たとえば外部の不揮発性メモリＩＣとしての）別個のＩＣ９３０上に格納され得る。ステージ１構成データ１０２４のサイズは、相対的に小さくされたままであり得、これにより、ロードおよびその後の構成が所定の時間（たとえばＰＣＩｅの場合１００ｍｓ）内で実行されることが可能になる。
【００９８】
対応するプログラマブルロジックの構成の後、ステージ１ロジック１０１８は、たとえばＰＣＩｅを使用するように構成され得るバスインターフェイスモジュール１０１２を含み得る。ステージ１ロジック１０１８はさらに、バスインターフェイスモジュール１０１２と、その後ステージ２ロジック１０２０をプログラムするために使用され得る残りのプログラマブルロジックとの間での内部構成アクセスインターフェイス１０１６を含むように構成され得る。ブリッジ１０１４は、ブリッジのいずれかの側上で使用される通信プロトコル同士の間のインターフェイスを提供するとともに、メインメモリからＤＭＡ転送を開始する目的のためにバスマスタとして機能し得るＤＭＡエンジンとして機能するように設計され得る。ブリッジ１０２８は、ＳｏＣ１００２上で同様のインターフェイスを提供するように設計され得る。
【００９９】
ある実現例に従うと、ＤＭＡ構成レジスタは、ＰＣＩｅエンドポイントの任意のＢＡＲ（ベースアドレスレジスタ（Base Address Register））にマッピングされ得、ホストＣＰＵはＢＡＲを通じてそれらのレジスタにアクセスし得る。このように、ＳｏＣ１００２は、ＤＭＡエンジンの機能を提供するように構成される必要はない。ステージ１ロジック１０１８は、ＣＰＵ１００６から独立して、直接的にバス（ＰＣＩｅ）インターフェイスモジュール１０１０を通じてメインメモリ回路１００８にアクセスするように構成され得る。
【０１００】
さまざまな実現例に従うと、ＤＭＡエンジンはソフトウェアデバイスドライバによって構成および管理され得る。たとえば、デバイスドライバは、ＤＭＡエンジンに送信されるとともに、使用されているオペレーティングシステムに対する特定のメモリ領域についてのメモリマッピングに関するコマンドを生成し得る。このコマンドはたとえば、ソースアドレス、宛先アドレスおよび長さを有する読出コマンドであり得る。これは、ＢＡＲを通じて、必要な情報によりＤＭＡエンジンを構成することによって行なわれ得る。ＤＭＡエンジンは、第２のステージ構成データに関連付けられるタスクについてＤＭＡ転送を実行するよう、ソフトウェアドライバによってセットアップされ得る。
【０１０１】
第２の構成データのサイズと、ＤＭＡエンジンが１つのトランザクションで転送し得るバイト数とに依存して、デバイスドライバは、複数のチャンクで構成データを転送するようにＤＭＡをセットアップする。構成データはホストＰＣメインメモリにおいて点在し得、したがって、ＤＭＡは、異なる位置から構成データをフェッチし得るように、ソフトウェアドライバによって適切にセットアップされ得る。
【０１０２】
図１１は、さまざまな実現例に従った、ＰＣＩｅコンポーネントを有するコンピュータシステムのシステム図を示す。ＣＰＵ１１０２は１つ以上のプロセッサコア１１０４を含む。ホストブリッジ１１０６（ノースブリッジ（North Bridge）とも称される場合がある）は、プロセッサコアと他のシステムコンポーネントとの間の通信を促進し、かつ、プロセッサコアにインターフェイスを提供するフロントサイドバス（ＦＳＢ：front-side bus）モジュール１１０８を含む。ホストブリッジ１１０６は、ＰＣＩｅルートコンプレックス（デバイス／モジュール）１１１０として機能するように構成され得る。ＰＣＩｅルートコンプレックス１１１０は、ＰＣＩｅデバイスツリーを、メインメモリ１１１６と、プロセッサコア１１０４と、グラフィックスプロセッシングユニット（ＧＰＵ：graphics processing unit）（図示せず）のような他のデバイスとに接続する。ルートコンプレックスは、ＣＰＵとは別個の物理的なチップの部分として実現され得るが、ルートコンプレックスはＣＰＵチップに統合することも可能である。メインメモリ１１１６は、メモリコントローラ回路１１１４を使用してアクセスされ得る。
【０１０３】
いくつかの実現例では、チップセットインターフェイスモジュール１１１２は、異なる通信プロトコル（たとえばプロプラエタリチップセットプロトコル）を使用してチップセット１１１８と通信するために使用され得る。対応するチップセットインターフェイスモジュール１１２０は、チップセットに特有の通信プロトコルと１つ以上のＰＣＩｅスイッチ１１２２との間のインターフェイスを提供し得る。多くのＰＣＩｅエンドポイント（ＥＰ）デバイス１１２４，１１２６は、ＰＣＩｅスイッチを通じてアクセス可能であり得る。各ＰＣＩｅ  ＥＰは、専用の高速シリアル接続を通じてＰＣＩｅスイッチに接続され得る。これにより、システムはポイントツーポイントトポロジーを使用して構成される。さらに、データはパケットベースのプロトコルを使用して送信され得る。たとえば、ＣＰＵは、ＰＣＩｅ  ＥＰに対応する宛先アドレスを特定するパケットのセットにおいてデータをカプセル化するソフトウェアドライバを実行し得る。ルートコンプレックスと、送信パスにおける各その後のモジュールとは、パケットを受信し得、ルーティングテーブルと宛先アドレスとを使用してポイントツーポイント接続（ポート）を識別し得る。パケットは、送信パスにおいて次のモジュールによって受信され得るように、識別されたポート上で送信され得る。
【０１０４】
本願明細書において議論されるさまざまな実現例に従うと、ＰＣＩｅ  ＥＰデバイス１１２４，１１２６のうちの１つ以上は、メインメモリ１１１６から第２の構成データにアクセスするためにＤＭＡ転送を使用する第２の構成ステージを有するプログラマブルＩＣを使用して実現され得る。これにより、データがメモリからルートコンプレックスを通る方向にアクセスされ得るので、ＣＰＵは各転送を開始する必要はない。
【０１０５】
図１２は、ある実現例に従った、ＤＭＡを使用して構成データを転送するためのシステムとの使用についてのフロー図を示す。当該フローは、ブロック１２０２について、スタートイベントの発生から開始する。スタートイベントは、プログラマブルＩＣおよびホストマシンの電源投入であり得る（がこれに限定されない）。たとえば、ＰＣＩｅを使用するシステムは、同じ電源からホストマシンおよびＰＣＩｅエンドポイントに、両者がほとんど同時に起動するように、電力を供給し得る。ホストマシンはリセットからＰＣＩｅエンドポイントを解放し得、次いで、ＰＣＩｅエンドポイントが設定された量の時間（たとえば１００ｍｓ後）内に利用可能になると予想し得る。
【０１０６】
電源投入／スタートイベントに応答して、初期の（第１ステージ）構成データは、ブロック１２０４について、第１のステージプログラマブルロジックインターフェイスを介してプログラマブルＩＣに通信され得る。本願明細書において議論されるように、これは、フラッシュメモリ回路、ＰＲＯＭまたは同様のストレージ回路のような不揮発性メモリから構成データを読み出すことを含み得る。ある実現例では、ブロック１２０６においてロードされる第１のステージビットストリームは、相対的に小さくされたままであり得、これにより、リセット後１００ｍｓ内でＰＣＩｅインターフェイスモジュールの構成がＰＣＩｅエンドポイントにリリースされることが可能になる。このタイミングを満たすことで、ＰＣＩｅインターフェイスモジュールがその後のリブートまたはリセットなしで列挙されることが可能になる。
【０１０７】
第１のステージ構成データは、ブロック１２０６について、プログラマブルＩＣ内のプログラマブルロジックの第１の部分をプログラムするために使用される。この第１の部分はバスインターフェイスモジュールを含み得る。特定の実現例において、バスインターフェイスモジュールは、コンピュータシステムにインターフェイス接続するとともにＰＣＩｅエンドポイントデバイスとしてコンピュータシステムに現われるように設計されるＰＣＩｅインターフェイスモジュールであり得る。
【０１０８】
ブロック１２０７について、ホストマシン（またはＳｏＣ基板）は、そのブートプロセスを実行および完了し得る。ブートプロセスはたとえば、エンドポイントデバイスの構成と、オペレーティングシステムのロードとを含み得る。ＰＣＩｅでは、エンドポイントデバイスの構成は列挙とも称される。列挙の間、各ＰＣＩｅエンドポイントデバイスが検出され、アドレススペースが割り当てられる。したがって、列挙が開始する際に特定のＰＣＩｅエンドポイントデバイスがまだ利用可能でなければ、アドレススペースが割り当てられなくてもよい。ホストマシンは、列挙が再発生することを可能にするためにリセットされ得るが、これは、追加のブート時間によって著しい遅延に帰着し得る。本願明細書において議論されるように、ＰＣＩｅ仕様は、リセット状態が除去された時と、エンドポイントが列挙に利用可能であるべき時との間を１００ｍｓにすることを可能にする。小さな第１のステージ構成データの使用は、そのような要件を満たすのに特に有用であり得る。
【０１０９】
ホストマシンがひとたびブートプロセスを完了すると、ブロック１２０８について、コンピュータシステムは次に、コンピュータシステムのメインメモリから第２のステージ構成データにアクセスするＤＭＡ転送のためにコンピュータシステムをセットアップするように構成されるソフトウェアドライバを実行し得る。本願明細書において議論されるように、ＤＭＡエンジンはプログラマブルＩＣのＰＣＩｅインターフェイスモジュール内またはＰＣＩｅルートコンプレックス内に配置され得る。いずれかの状況において、ホストコンピュータシステム上で実行されるソフトウェアドライバモジュールは、ＤＭＡエンジンを構成し、ＤＭＡ転送を開始し得る。これは、バスマスタとしてＰＣＩｅ  ＤＭＡエンジンをセットすることと、ＤＭＡ転送についてバッファアドレスを識別することとを含み得る。ＤＭＡエンジンの構成は、第２のステージ構成データについてＤＭＡ転送のバッファアドレスおよびサイズに関する情報を含むバッファ記述子チェーン（Buffer Descriptor chain）をセットアップすることを含み得る。
【０１１０】
ひとたび構成されると、ブロック１２１０によって示されるように、ステージ２構成データは、ＤＭＡ転送を使用してコンピュータシステムのメインメモリからプログラマブルＩＣに転送され得る。その後、ブロック１２１２について、プログラマブルロジックの第２の部分が、ステージ２構成データを使用して構成され得る。
【０１１１】
いくつかの実施形態に従うと、プログラマブルロジックの第２の部分は、プログラマブルＩＣが動作している間に（たとえば、第２の部分がプログラムされた後で、かつ、プログラマブルロジックの第１の部分のシャットダウンおよび再構成を必要することなく）更新され得る。ブロック１２１４について、コンピュータシステムは、更新要求が受信されたかどうか決定し得る。更新要求は、たとえばイーサネット接続を介して、外部位置から由来し得る。これにより、たとえば、リモート更新がインターネットを介してプログラマブルＩＣにプッシュされることが可能になり得る。更新要求がある場合、新しい／更新される第２のステージ構成データについて、ブロック１２０８〜１２１２によって示されるＤＭＡ転送フローが繰り返され得る。
【０１１２】
図１３は、開示された回路およびプロセスが実現され得るプログラマブル集積回路（ＩＣ）６００を示す。プログラマブルＩＣはさらに、他のプログラマブルリソースと共にフィールドプログラマブルゲートアレイロジック（ＦＰＧＡ）を含むシステムオンチップ（ＳＯＣ）と称され得る。ＦＰＧＡロジックは、アレイにおいていくつかの異なるタイプのプログラマブルロジックブロックを含み得る。たとえば、図１３はプログラマブルＩＣ６００を示しており、当該プログラマブルＩＣ６００は、マルチギガビットトランシーバ（ＭＧＴ）６０１、コンフィギュラブルロジックブロック（ＣＬＢ）６０２、ランダムアクセスメモリブロック（ＢＲＡＭ）６０３、入出力ブロック（ＩＯＢ）６０４、構成およびクロッキングロジック（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）６０５、デジタル信号処理ブロック（ＤＳＰ）６０６、たとえばクロックポートのような特殊化入出力ブロック（Ｉ／Ｏ）６０７、ならびに、デジタルクロックマネージャ、アナログ―デジタル変換器およびシステム監視ロジックなどのような他のプログラマブルロジック６０８を含む多くの異なるプログラマブルタイルを含み得る。ＦＰＧＡロジックを有するいくつかのプログラマブルＩＣはさらに、専用プロセッサブロック（ＰＲＯＣ）６１０ならびに内部および外部の再構成ポート（図示せず）とを含む。
【０１１３】
いくつかのＦＰＧＡロジックにおいて、各プログラマブルタイルは、各隣接したタイルにおける対応するインターコネクト要素への標準化された接続および当該対応するインターコネクト要素からの標準化された接続を有するプログラマブルインターコネクト要素（ＩＮＴ）６１１を含む。したがって、一緒にされたプログラマブルインターコネクト要素は、示されるＦＰＧＡロジックのためのプログラマブルインターコネクト構造を実現する。プログラマブルインターコネクト要素ＩＮＴ６１１はさらに、図１３の一番上に含まれる例によって示されるように、同じタイル内のプログラマブルロジック要素への接続および当該プログラマブルロジック要素からの接続を含む。
【０１１４】
たとえば、ＣＬＢ６０２は、ユーザロジックを実現するようにプログラムされ得るコンフィギュラブルロジック要素ＣＬＥ６１２と、単一のプログラマブルインターコネクト要素ＩＮＴ６１１とを含み得る。ＢＲＡＭ６０３は、１つ以上のプログラマブルインターコネクト要素に加えてＢＲＡＭロジック要素（ＢＲＬ）６１３を含み得る。典型的に、タイルに含まれるインターコネクト要素の数は、タイルの高さに依存する。示される実現例において、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有しているが、他の数（たとえば４つ）も使用され得る。ＤＳＰタイル６０６は、適切な数のプログラマブルインターコネクト要素に加えて、ＤＳＰロジック要素（ＤＳＰＬ）６１４を含み得る。ＩＯＢ６０４はたとえば、プログラマブルインターコネクト要素ＩＮＴ６１１の１つのインスタンスに加えて、入出力ロジック要素（ＩＯＬ）６１５の２つのインスタンスを含み得る。当業者に明らかであろうように、たとえばＩ／Ｏロジック要素６１５に接続される実際のＩ／Ｏボンドパッドは、さまざまな示されるロジックブロックの上に積層される金属を使用して製造され、典型的には入出力ロジック要素６１５のエリアに制限されない。
【０１１５】
示される実現例において、（図１３においてシェードがつけられて示されている）ダイの中心の近くのカラム状のエリアは、構成、クロックおよび他の制御ロジックのために使用される。カラムから延在する水平エリア６０９は、プログラマブルＩＣの幅にわたって、クロック信号および構成信号を分配するために使用される。なお、「カラム状の」エリアおよび「水平」エリアへの参照は、縦長の向きで図面を見ることに対するものである。
【０１１６】
図１３に示されるアーキテクチャを利用するいくつかのプログラマブルＩＣは、プログラマブルＩＣの大部分を構成する規則的なカラム状構造を中断させる付加的なロジックブロックを含む。付加的な論理ブロックは、プログラマブルブロックおよび／または専用ロジックであり得る。たとえば、図１３に示されるプロセッサブロックＰＲＯＣ６１０は、ＣＬＢおよびＢＲＡＭのいくつかのカラムにわたる。
【０１１７】
なお、図１３は、例示的なプログラマブルＩＣアーキテクチャのみを示すように意図される。カラムにおけるロジックブロックの数、カラムの相対的な幅、カラムの数および順序、カラムに含まれるロジックブロックのタイプ、ロジックブロックの相対的なサイズ、および、図１３の一番上に含まれるインターコネクト／ロジック実現例は、単に例である。たとえば、実際のプログラマブルＩＣにおいて、ＣＬＢが現われる場合はいつでも、ＣＬＢの隣接した１つより多いカラムが典型的に含まれており、これにより、ユーザロジックの効率的な実現例が促進される。
【０１１８】
本願明細書において示されるさまざまなフロー図について、ブロックの特定の順序および関連付けられる機能は例として提供されている。順序は必ずしも限定ではなく、さまざまな実現例に従って変動され得る。
【０１１９】
１つ以上のプロセッサとプログラムコードを有するように構成されるメモリ構成とを含むさまざまな代替的なコンピューティング構成が、本願明細書において開示される機能を実行し得るプロセスおよびデータ構造をホスティングするのに好適であるということを当業者は認識するであろう。さらに、プロセスは、磁気ディスク、光学ディスクもしくはテープ、電子ストレージデバイス、または、ネットワークを介するアプリケーションサービスといったさまざまなコンピュータ読取可能記憶媒体または送達チャネルを介して提供され得る。
【０１２０】
いくつかの場合において、局面および特徴は個々の図に記載されている場合があるが、１つの図からの特徴と別の図の特徴との組み合わせが明示的に示されていないかまたは明示的に組み合わせとして記載されていなくても、１つの図からの特徴が別の図の特徴と組み合わせられ得るということが認識されるであろう。
【０１２１】
方法およびシステムは、ＲＡＭ回路を使用するさまざまなシステムに適用可能であると考えられる。他の局面および特徴は、明細書の考慮から当業者に明白になるであろう。方法およびシステムの部分は、特定用途向け集積回路（ＡＳＩＣ： application specific integrated circuit）として、または、プログラマブルロジックデバイス上のロジックとして、ソフトウェアを実行するように構成される１つ以上のプロセッサとして実現され得る。さらに、本願明細書において識別されるさまざまな回路は、共通のコンピュータ処理ユニットまたはデジタル処理ユニットを使用するといったように、ハードウェア回路を共有し得る。明細書および図面は単に例であると考えられることが意図されており、本発明の実際の範囲は、添付の請求の範囲によって示される。
【図１】
2018531461.tif 000003
【図２】
2018531461.tif 000004
【図３】
2018531461.tif 000005
【図４】
2018531461.tif 000006
【図５】
2018531461.tif 000007
【図６】
2018531461.tif 000008
【図７】
2018531461.tif 000009
【図８】
2018531461.tif 000010
【図９】
2018531461.tif 000011
【図１０】
2018531461.tif 000012
【図１１】
2018531461.tif 000013
【図１２】
2018531461.tif 000014
【図１３】
2018531461.tif 000015
【手続補正書】
【提出日】平成30年4月11日(2018.4.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサ回路を含むシステムオンチップ（ＳｏＣ）をブートするための方法であって、
前記ＳｏＣのストレージインターフェイス回路を使用して不揮発性メモリチップから第１のブートイメージを受信することと、
前記ＳｏＣのプロセッサ回路上で前記第１のブートイメージを実行することによって、複数のデバイスを前記ＳｏＣにリンクする通信バスを介してホストデバイスと通信するように設計されるソフトバスインターフェイスモジュールを構成することとを含み、
前記ソフトバスインターフェイスモジュールを構成することは、前記ソフトバスインターフェイスモジュールを実現するよう、ビットストリームデータを使用して前記ＳｏＣのプログラマブルロジックをプログラムすることを含んでおり、前記方法はさらに、
前記ソフトバスインターフェイスモジュールを使用して前記ホストデバイスのメモリから前記ＳｏＣのメモリに第２のブートイメージを通信することと、
前記第２のブートイメージを実行することによって前記ＳｏＣをブートすることとを含む、方法。
【請求項２】
前記ソフトバスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、前記ホストデバイスと前記ＳｏＣとの間のポイントツーポイントリンクを介して、前記ホストデバイスと通信するように設計されており、前記パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義する、請求項１に記載の方法。
【請求項３】
前記第２のブートイメージを前記ＳｏＣの前記プロセッサ回路に提供するよう、前記ホストデバイスとのハンドシェイクプロトコルを実現することをさらに含む、請求項１に記載の方法。
【請求項４】
ブートリードオンリメモリ（ＲＯＭ）イメージをロードすることと、
前記第１のブートイメージを受信するように前記ＳｏＣに命令するために前記ブートＲＯＭイメージを実行することとをさらに含む、請求項３に記載の方法。
【請求項５】
前記通信バスは、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）通信バスであり、前記ＳｏＣはプログラマブルロジックタイルを含む、請求項１に記載の方法。
【請求項６】
前記ソフトバスインターフェイスモジュールを構成することは、前記ホストデバイスのルートコンプレックスモジュールとの通信のために前記ソフトバスインターフェイスモジュールを列挙することを含む、請求項５に記載の方法。
【請求項７】
前記ソフトバスインターフェイスモジュールの列挙の完了に応答して、スクラッチパッドメモリスペースにおいて値をセットすることをさらに含む、請求項６に記載の方法。
【請求項８】
前記第１のブートイメージはブートリードオンリメモリ（ＲＯＭ）イメージであり、前記第２のブートイメージは、第１のステージブートローダ（ＦＳＢＬ）イメージであり、または、前記第１のブートイメージは第１のステージブートローダ（ＦＳＢＬ）イメージであり、前記第２のブートイメージは第２のステージブートローダ（ＳＳＢＬ）イメージである、請求項１に記載の方法。
【請求項９】
システムオンチップ（ＳｏＣ）を含み、
前記ＳｏＣは、
プログラマブルロジックと、
不揮発性メモリチップから第１のブートイメージを受信するように構成されるストレージインターフェイス回路と、
プロセッサ回路とを含み、
前記プロセッサ回路は、
前記第１のブートイメージを実行して、
複数のデバイスを前記ＳｏＣにリンクする通信バスを介してホストデバイスと通信するように構成されるソフトバスインターフェイスモジュールを実現するよう、ビットストリームデータを使用して前記プログラマブルロジックをプログラムすること、および、
前記ホストデバイスのメモリから前記ＳｏＣに第２のブートイメージを転送するよう前記ソフトバスインターフェイスモジュールを構成することと、
前記第２のブートイメージを実行することによって前記ＳｏＣをブートすることとを行うように構成される、システム。
【請求項１０】
前記ソフトバスインターフェイスモジュールはさらに、パケットベースのプロトコルを使用して、前記ホストデバイスと前記ＳｏＣとの間のポイントツーポイントリンクを介して、前記ホストデバイスと通信するように設計されており、前記パケットベースのプロトコルは、データをカプセル化するとともに宛先アドレスを特定するパケットを定義する、請求項９に記載のシステム。
【請求項１１】
前記プロセッサ回路はさらに、前記第２のブートイメージを提供する前記ホストデバイスとのハンドシェイクプロトコルを実現するように構成される、請求項９に記載のシステム。
【請求項１２】
前記ストレージインターフェイス回路はさらに、ブートリードオンリメモリ（ＲＯＭ）イメージをロードするように構成され、
前記ブートＲＯＭイメージは、前記不揮発性メモリチップからの前記第１のブートイメージの受信を行うよう前記ＳｏＣのための命令を含む、請求項１１に記載のシステム。
【請求項１３】
前記通信バスは、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）通信バスであり、前記ＳｏＣはプログラマブルロジックタイルを含み、前記プロセッサ回路は、前記ＰＣＩｅ通信バスについての列挙プロセスの部分として前記ソフトバスインターフェイスモジュールを構成するように構成される、請求項９に記載のシステム。
【請求項１４】
前記プロセッサ回路は、前記ソフトバスインターフェイスモジュールの列挙の完了に応答して、スクラッチパッドメモリスペースにおいて値をセットするように構成される、請求項１３に記載のシステム。
【請求項１５】
前記第１のブートイメージは第１のステージブートローダ（ＦＳＢＬ）イメージであり、前記第２のブートイメージは第２のステージブートローダ（ＳＳＢＬ）イメージである、請求項９に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
随意に、上記方法は、第２のブートイメージをＩＣのプロセッサ回路に提供するよう、ホストデバイスとのハンドシェイクプロトコルを実現することをさらに含む。
【国際調査報告】
2018531461.tif 000016
2018531461.tif 000017