(57)【要約】【課題】プログラミングフィールドプログラマブルゲートアレイ装置に用いられるシステム及び方法を提供する。【解決手段】深層学習プログラムに用いられる訓練されたモデルが取られてデザイン抽象コードに転換される。デザイン抽象コードは、フィールドプログラマブルゲートアレイ装置をプログラミングするように、論理ブロック回路を定義することに用いられる。論理ブロック回路の各々は、深層学習プログラムの異なるレイヤ間の処理工程を実行する複数のモジュールのうちの１つを示す。【選択図】図１
2019139742.tif 000002
【特許請求の範囲】
【請求項１】
深層学習プログラム用の訓練されたモデルを取る工程と、
前記訓練されたモデルをデザイン抽象コードに転換する工程と、
前記デザイン抽象コードに基づいて、システムでフィールドプログラマブルゲートアレイ装置をプログラミングする工程と、
を含み、
前記デザイン抽象コードは、前記フィールドプログラマブルゲートアレイ装置に含まれて複数の論理ブロック回路のコードをプログラミングすることに用いられ、前記論理ブロック回路の各々は複数のモジュールのうちの１つを示し、前記モジュールは前記深層学習プログラムの異なるレイヤー間の処理工程を実行することに用いられることを特徴とするプログラミング方法。
【請求項２】
前記転換の操作は、前記論理ブロック回路を通するデータフローの指定を含み、且つ前記デザイン抽象コードは前記データフローを提供するように、前記フィールドプログラマブルゲートアレイ装置における前記論理ブロック回路の互いの接続を指定することを特徴とする請求項１に記載のプログラミング方法。
【請求項３】
前記プログラミングの前に、前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断する工程と、
前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断することに対応して、プログラミング期間内に、前記フィールドプログラマブルゲートアレイ装置に用いられる代替プログラミングモードを実行する工程と、
を更に含むことを特徴とする請求項１に記載のプログラミング方法。
【請求項４】
プロセッサと、
前記プロセッサに通信的に結合されるフィールドプログラマブルゲートアレイ装置と、
前記プロセッサに複数の工程を実行させる複数のコマンドを記憶するためのメモリと、
を備え、
前記工程は、深層学習プログラム用の訓練されたモデルを取る工程と、前記訓練されたモデルをデザイン抽象コードに転換する工程と、前記デザイン抽象コードに基づいて、前記フィールドプログラマブルゲートアレイ装置をプログラミングする工程と、を含み、前記デザイン抽象コードは前記フィールドプログラマブルゲートアレイ装置に含まれて複数の論理ブロック回路のコードをプログラミングすることに用いられ、前記論理ブロック回路の各々は複数のモジュールのうちの１つを示し、前記モジュールは前記深層学習プログラムの異なるレイヤー間の処理工程を実行することに用いられるものであることを特徴とするコンピュータシステム。
【請求項５】
前記デザイン抽象コードは、レジスタ転送レベルコードを含むものであることを特徴とする請求項４に記載のコンピュータシステム。
【請求項６】
前記転換の操作は、前記論理ブロック回路を通するデータフローの指定を含み、且つ前記デザイン抽象コードは前記データフローを提供するように、前記フィールドプログラマブルゲートアレイ装置における前記論理ブロック回路の互いの接続を指定するものであることを特徴とする請求項４に記載のコンピュータシステム。
【請求項７】
前記プログラミングの前に、前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断する工程と、
前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断することに対応して、プログラミング期間内に、前記フィールドプログラマブルゲートアレイ装置に用いられる代替プログラミングモードを実行する工程と、
を更に含むものであることを特徴とする請求項４に記載のコンピュータシステム。
【請求項８】
コンピュータ装置に複数の工程を実行させるための複数のコードセグメントを含み且つ前記コンピュータ装置により実行されるコンピュータプログラムを記憶する非一時的なコンピュータ読取可能な媒体において、
前記工程は、
深層学習プログラム用の訓練されたモデルを取る工程と、
前記訓練されたモデルをデザイン抽象コードに転換する工程と、
前記デザイン抽象コードに基づいて、フィールドプログラマブルゲートアレイ装置をプログラミングする工程と、
を含み、
前記デザイン抽象コードが前記フィールドプログラマブルゲートアレイ装置に含まれて複数の論理ブロック回路のコードをプログラミングすることに用いられ、前記論理ブロック回路の各々が複数のモジュールのうちの１つを示し、前記モジュールが前記深層学習プログラムの異なるレイヤー間の処理工程を実行することに用いられるものであることを特徴とする非一時的なコンピュータ読取可能な媒体。
【請求項９】
前記転換の操作は、前記論理ブロック回路を通するデータフローの指定を含み、且つ前記デザイン抽象コードは前記データフローを提供するように、前記フィールドプログラマブルゲートアレイ装置における前記論理ブロック回路の互いの接続を指定するものであることを特徴とする請求項８に記載の非一時的なコンピュータ読取可能な媒体。
【請求項１０】
前記プログラミングの前に、前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断する工程と、
前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断することに対応して、プログラミング期間内に、前記フィールドプログラマブルゲートアレイ装置に用いられる代替プログラミングモードを実行する工程と、
を更に含むものであることを特徴とする請求項８に記載の非一時的なコンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィールドプログラマブルゲートアレイ装置に関し、特に、深層学習、人工ニューラルネットワーク及び機械学習アプリケーションのフィールドプログラマブルゲートアレイ装置をプログラミングするための装置及び方法に関する。
【背景技術】
【０００２】
深層学習アプリケーションの実行には、一般的に、レイヤード・ソフトウェア・スタックが必要であり、使用や管理が比較的に複雑である。深層学習アプリケーションには、ドライバーレスアプリケーション、オブジェクトの検出や認識、及びコンピュータ支援診断システム等があるが、それらに限定されない。従って、ユーザーは、訓練されたモデルに基づく深層学習アプリケーションを開発する場合にも、多種のアプリケーションを支援するために、アーキテクチャ、ライブラリ及びインタフェースのような多くの関連ソフトウェア素子をインストールして呼び出す必要がある。更に、訓練されたモデル又はスタックの如何なる一部を変更する必要がある場合、通常、関連する依頼関係を再構築する必要がある。また、深層学習アプリケーションに組み合わせたソフトウェアスタックがより複雑になるにつれて、追加のコンピューティング負荷が上記のアプリケーションのパフォーマンスに実際に影響する可能性がある。
【０００３】
開発の観点から見れば、複雑なソフトウェアスタックが開発者に負担をかける。例として、現在の開発者は、様々な状況依存型アプリケーション用のための異なるソフトウェアスタックに精通しなければならない。従って、異なる状況を解決できるスタックを開発することは、時間がかかり且つ困難である。パフォーマンスの観点から見れば、余計な計算負荷の原因で、様々な状況依存型アプリケーションに対しては、複雑なソフトウェアは次善であるだけでなく、余計な計算負荷が特定なアプリケーションをより厳しく要求するソフトウェアのスタックにより増加することがある（例えば、多数のレイヤーを含み、レイヤーの各々でより多くの機能を支援する）。
【０００４】
深層学習アプリケーションの実行を最適化するため、従来の解決法として、特殊アプリケーション集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ；ＡＳＩＣ）を利用するものがある。一般的に、特殊アプリケーション集積回路は、特定なタスクを実行するように最適化され、これにより、前記タスクの性能が向上する。しかしながら、上記のように、深層学習モデルのスタック要求には、大きく異なる可能性がある。特殊アプリケーション集積回路は、一般的に、あまり具体的に特定されるので、適用性が制限される。従って、特殊アプリケーション集積回路でも、依然として広範囲のアプリケーションのニーズを解決することができない。
【０００５】
深層学習アプリケーションの実行を最適化するための別の従来の方法としては、フィールドプログラマブルゲートアレイ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ；ＦＰＧＡ）装置を利用するものがある。フィールドプログラマブルゲートアレイ装置は、再プログラムされることができ、様々な訓練されたモデル及びアプリケーションに柔軟に適用されることができるので、開発者により注目される。しかしながら、フィールドプログラマブルゲートアレイ装置の深層学習アプリケーションに対するプログラムは、簡単ではない。従って、深層学習アプリケーションを処理するための開発案は、一般的に限られている。１つの解決策としては、既知のソフトウェアスタックに基づいて深層学習のソフトウェア開発キットを提供するものがある。しかしながら、これにより、上記の議論と実質的に同様であるスタック管理及び計算負担という問題が出る。もう１つの解決策としては、ユーザーが特定な深層学習アプリケーションを支援するためのツールセットを提供する「ターンキー」（ｔｕｒｎ−ｋｅｙ）のアプローチを使用する。しかしながら、このようなアプリケーションに対する限られた支援により、特殊アプリケーション集成回路と同じ問題が発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記に基づいて、フィールドプログラマブルゲートアレイ装置の利点を十分に利用するために、深層学習アプリケーションのためのフィールドプログラマブルゲートアレイ装置に用いられるプログラミングを単純化するシステム及び方法は、当該技術分野において必要とされている。
【課題を解決するための手段】
【０００７】
本発明の実施例は、プログラミングフィールドプログラマブルゲートアレイ装置に用いられるコンピュータシステム、プログラミング方法及びコンピュータプログラムに関する。例示的なプログラミング方法は、深層学習プログラムに用いられる訓練されたモデルを取る工程と、訓練されたモデルをデザイン抽象コードに転換する工程と、を含む。その後、システムにおけるフィールドプログラマブルゲートアレイ装置は、デザイン抽象コードに基づいてプログラミングされてよい。デザイン抽象コードは、複数の論理ブロック回路を定義するように配置され、複数の論理ブロック回路の各々が複数のモジュールのうちの１つのモジュールを示す。これらのモジュールの各々は、深層学習プログラムの異なるレイヤ間に介在する処理工程を示す。ある実際の操作において、デザイン抽象コードは、フィールドプログラマブルゲートアレイ装置をプログラミングするためのレジスタ転送レベルコードである。
【０００８】
ある実施例において、転換工程は、複数の論理ブロック回路を通るデータフローの指定を含んでよい。次に、デザイン抽象コードは、前記データフローを提供するように、フィールドプログラマブルゲートアレイ装置における複数の論理ブロック回路との互いの接続を指定する。
【０００９】
転換工程は、訓練されたモデルの処理工程を識別し及び各処理工程を前記モジュールのうちの１つと関連させることを含んでもよい。その後、処理工程と関連するモジュールに対応するように論理ブロック回路はコーディングされてよい。
【００１０】
ある実施例において、方法は、プログラミングの前に、付加工程を含んでよい。例として、フィールドプログラマブルゲートアレイ装置の空間がデザイン抽象コードに必要な複数の論理ブロック回路を支持することに不十分であると判断してよい。上記判断があると、プログラミング工程期間内に、代替プログラミングモードでフィールドプログラマブルゲートアレイ装置に用いられてよい。
【００１１】
代替プログラミングモードは、重複の論理ブロック回路を取るように重複操作を実行する論理ブロック回路に対応するデザイン抽象コードを識別することを含む。次に、重複領域のうちの１つ以外の重複領域を削除してよい。次に、前記重複の論理ブロック回路における保留される１つによって重複操作を実行するように、デザイン抽象コードを更新してフィールドプログラマブルゲートアレイ装置を配置してよい。
【００１２】
別の代替プログラミングモードは、システムにおける別の素子によって操作を実行するモジュールを代表する論理ブロック回路に対応するデザイン抽象コードを識別して、再び重複の論理ブロック回路を取ることを含む。次に、デザイン抽象コードからの全ての重複の論理ブロック回路を削除してよい。デザイン抽象コードは、フィールドプログラマブルゲートアレイ装置を配置するように更新されて、他の素子によって重複操作を実行してよい。
【００１３】
他の実施例は、プロセッサ、フィールドプログラマブルゲートアレイ装置及びプロセッサを上記方法に実行させるメモリを含むコンピュータシステムに関する。また、他の実施例は、コンピュータ装置を上記方法に実行させるための非一時的なコンピュータ読取可能な媒体を含む。
【図面の簡単な説明】
【００１４】
【図１】実施例による例示的方法を示す工程フロー図である。
【図２】実施例によるフィールドプログラマブルゲートアレイのコンバータシステムを模式的に示す。
【図３】実施例による対応モデルの直列モジュール及びパラメーターを模式的に示す。
【図４】実施例による「完全」のモードでプログラミングされるフィールドプログラマブルゲートアレイ装置を模式的に示す。
【図５】図４のフィールドプログラマブルゲートアレイ装置によるシステム模式図である。
【図６】実施例による「節約」のモードでプログラミングされるフィールドプログラマブルゲートアレイ装置を模式的に示す。
【図７】図６のフィールドプログラマブルゲートアレイ装置によるシステム模式図である。
【図８】実施例によるフィールドプログラマブルゲートアレイ装置及び他のプロセッサを例示的に示し、前記フィールドプログラマブルゲートアレイ装置が「混合」のモードでプログラミングされる。
【図９】図８のフィールドプログラマブルゲートアレイ装置及び他のプロセッサによるシステム模式図である。
【図１０】コンピュータシステム実例を示し、前記コンピュータシステムの素子が互いにバスによって電気的に通信する。
【図１１】チップセット構造を有するコンピュータシステム実例を示し、前記システムが異なる実施例のシステム及び方法の実行に用いられてよい。
【発明を実施するための形態】
【００１５】
添付図面を参照しながら本発明を説明するが、全ての図面において、類似又は同等の素子を明示するために、同じ参照番号を使用する。添付図面は、実際のサイズで描かれたものではなく、単に本発明を説明するためのものである。以下、説明するための実例を参照して、本発明の複数の態様を記述する。理解すべきなのは、挙げられた数多くの特定な細部、関係及び方法は、本発明を全体的に理解させるためのものである。しかしながら、当業者であれば、本発明を１つ又は複数の特定な細部や他の方法で実施できないことを容易に理解することができる。他の例では、本発明を不明瞭にしないように、周知の構造や動作は詳しく示されていない。本発明は、示された行為又はイベントの順序に限定されず、幾つかの行為が異なる順序で及び／又は他の行為又はイベントと併せて行われてもよい。なお、本発明に記載の１つ又は複数の態様又は実施例を実行する場合、示された工程の全てが必要とされるわけではない。
【００１６】
上記のように、フィールドプログラマブルゲートアレイ装置によって深層学習アプリケーションを実行する従来の解決策は、限られており複雑である。上記制限に鑑みて、各実施例は、フィールドプログラマブルゲートアレイ装置において訓練されたモデルを実行可能な新方法に関し、これにより、深層学習に用いられるために一般に従来のフィールドプログラマブルゲートアレイ装置によってプログラミングする解決策に会う複雑さ及び計算上のオーバーヘッド（ｏｖｅｒｈｅａｄ）という問題の発生が低下する。特に、各実施例は、深層学習アプリケーションに用いられる新たなフィールドプログラマブルゲートアレイコンバータのシステム及び方法に関し、且つそれらを実行する。ここで検討されるシステム及び方法は、訓練されたモデルをレジスタ転送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ；ＲＴＬ）コード又は他のデザイン抽象コードに転換するように配置される。他の抽象設計コードは、Ｖｅｒｉｌｏｇ又はＯｐｅｎＣＬコードを含んでもよいが、これらに限定されない。デザイン抽象コードは、直接にフィールドプログラマブルゲートアレイ装置の配置に用いられてよい。上記配置によれば、各実施例における新たなフィールドプログラマブルゲートアレイコンバータは、複雑な開発過程を減少し、更に開発者の体験を改善できるだけでなく、使用しようとする対象のフィールドプログラマブルゲートアレイ装置を調整するように、より簡潔なモデルも提供することができる。
【００１７】
図１は、各実施例の方法全体を示す。図１は、訓練されたモデルをフィールドプログラマブルゲートアレイ装置に伝送する例示的な方法１００を示す工程フロー図である。方法は、工程１０２から始まる。工程１０２において、フィールドプログラマブルゲートアレイ装置に用いられる訓練されたモデルを取得することができる。訓練されたモデルは、如何なるタイプの機械学習モデルであってもよい。以下、幾つかの例として、デシジョンツリーに基づくモデル（ｄｅｃｉｓｉｏｎ  ｔｒｅｅ  ｂａｓｅｄ  ｍｏｄｅｌｓ）、線形回帰に基づくモデル（ｌｉｎｅａｒ  ｒｅｇｒｅｓｓｉｏｎ  ｂａｓｅｄ  ｍｏｄｅｌｓ）、ニューラルネットワークに基づくモデル（ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ  ｂａｓｅｄ  ｍｏｄｅｌｓ）、ベイジアンネットワークに基づくモデル（Ｂａｙｅｓｉａｎ  ｎｅｔｗｏｒｋ  ｂａｓｅｄ  ｍｏｄｅｌｓ）、支援ベクターマシンに基づくモデル（ｓｕｐｐｏｒｔ  ｖｅｃｔｏｒ  ｍａｃｈｉｎｅ  ｂａｓｅｄ  ｍｏｄｅｌｓ）及び最近傍に基づくモデル（ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ  ｂａｓｅｄ  ｍｏｄｅｌｓ）を含むが、これらに限定されない。提供される機械学習モデルは、異なるタイプのモデルの組合せであってよい。また、前記モデルは、如何なるタイプで提供されてもよい。例として、ニューラルネットワークモデルは、ＡｌｅｘＮｅｔ、ＧｏｏｇｌｅＮｅｔ、ＲｅｓＮｅｔ、ＤｅｎｓｅＮｅｔ又は他のニューラルネットワーク形態のタイプのような従来のモデルにより提供されてよい。しかしながら、異なる実施例において、モデルのタイプ及び形態は、上記の説明に限定されない。モデルがある実施例で前処理や訓練が行われてよいが、他の実施例において、訓練されたモデルは普通モデルに必要な全部ファイルを含むので、前処理を必要としない。例として、これらのファイルは、レイヤー数、各レイヤーのタイプ、コア数、コアサイズ等のようなパラメーターのカスタマイズ化されたアーキテクチャを提供するファイル、及び訓練重み等のパラメーターを提供するファイルを含んでよい。
【００１８】
工程１０２で訓練されたモデルを取った後で、モデルは、工程１０４でデザイン抽象コードに転換されてよい。工程１０４は、工程１０２で取られるモデルをフィールドプログラマブルゲートアレイコンバータシステムに提供して処理することを含む。このフィールドプログラマブルゲートアレイコンバータシステムは、深層学習アプリケーションを実行するシステムの一部、又は１つの完全に独立したシステムであってよい。更に、フィールドプログラマブルゲートアレイコンバータシステムは、ソフトウェア素子、ハードウェア素子、又はソフト・ハードウェア素子の組合せとして実行されてよい。
【００１９】
最後、工程１０６において、工程１０４で取られるデザイン抽象コードは、フィールドプログラマブルゲートアレイ装置のプログラミングに用いられてよい。このようなプログラミングは、如何なる既知のフィールドプログラマブルゲートアレイ装置のプログラミング技術により実施されてよい。更に、このようなプログラミングは、深層学習アプリケーションを実行するシステムで実施され、又は１つの完全に独立したシステムで実施されてよい。しかしながら、後の配置が優勢を与えるので、フィールドプログラマブルゲートアレイ装置は、異なるアプリケーションを支援するために、必要に応じて改めてプログラミングすることができる。
【００２０】
図２は、異なる実施例によるフィールドプログラマブルゲートアレイ装置コンバータシステムの１つの例示的な実行を示す。図２に示すように、フィールドプログラマブルゲートアレイコンバータシステム２００は、コンパイラ２０２、デバッガ２０４及びアナライザ２０６のような異なる素子を含んでよい。コンパイラ２０２は、訓練されたモデルをデザイン抽象コードにコンパイル（つまり、転換）するように配置されてよい。デバッガ２０４は、コンパイラ２０２の操作に生じるエラーメッセージを開発者にレビューし検索させて、後でフィールドプログラマブルゲートアレイ装置のデザイン抽象コードに対して如何なる必要なデバッグ又は更新を行うことができる。アナライザ２０６は、診断ツールとして、転換中のモデルのコンパイル時間及び実行時間表現を開発者に分析させることができる。
【００２１】
操作において、コンパイラ２０２は、フィールドプログラマブルゲートアレイコンバータシステム２００のモジュールデータベース２０８からモジュールを選択するように配置され、モジュールの各々が深層学習操作の特定レイヤーの間に介在する操作工程と関連する。これらのモジュールの各々は、対象のフィールドプログラマブルゲートアレイ装置における操作工程の効率を最適化するように配置される。ある実際の操作において、使用中のモデルのタイプに対してモジュールを最適化してよい。モジュールを下記のように選択する。モデルをフィールドプログラマブルゲートアレイコンバータシステム２００に提供する場合、コンパイラ２０２は、まず、モジュールを直列の操作に分解するように、モデルの組成に対して分析を実施する。次に、コンパイラ２０２は、モジュールデータベース２０８の対応する直列の操作から直列のモジュールを識別する。最後、訓練されたモデルに対応する操作を実行できるように、適切なパラメーターをモジュールの各々に接続する。
【００２２】
異なる実行において、モジュールは、畳み込みフィルタを画像に適用する畳み込みモジュール（Ｃ）、開始関数を畳み込みモジュールの出力に適用するリニア整流関数モジュール（Ｒ）、画像データを異なる範囲にスケールする正規化モジュール（Ｎ）、畳み込みモジュールの得られた画像データをダウンサンプリングするプーリングモジュール（Ｐ）、畳み込みモジュールの得られた及びプーリングモジュールがダウンサンプリングして得られた特徴に対して分類を実施する完全接続モジュール（Ｆ）、訓練を中止しようとするノードを選択するドロップアウトモジュール（ｄｒｏｐｏｕｔ  ｍｏｄｕｌｅ）（Ｄ）、入力の値の範囲に基づいて正規化された指数関数Ｓｏｆｔｍａｘモジュール（Ｓ）により出力を生じる工程と、を含んでよいが、これらのモジュールに限定されない。しかしながら、異なる実施例はこの点で制限されなく、且つ異なる実施例のフィールドプログラマブルゲートアレイコンバータシステムによって上記よりも多く又は少ないモジュールタイプを支援するように配置されてよい。
【００２３】
上記から分かるように、異なるモジュールは、異なる操作を実行する。あるモジュールは、ソフトウェア（アルゴリズム）により最適化され又はハードウェア資源の制限を満たしてよい。例として、畳み込み操作は、数多くのベクトル操作に分解されてよく、各操作の何れも独立して動作することができる。このため、操作を展開して、異なる操作を平行して実行してよい（つまり同じ時間で）。別の実例において、精密度を減少することも、表現効率を改善する好適な方法である。また、重みプルーニング、グループ圧縮及び行列分解は、訓練されたモデルを圧縮して推論を加速するための重要なアルゴリズムレベルの方法である。ある実施例において、ハードウェアにより最適化されてよい。例として、ルックアップテーブルは、計算を実施する代わりに、結果をマップすることができる。
【００２４】
そのため、コンパイル過程は、フィールドプログラマブルゲートアレイ装置によって実行するモジュールのコレクションを直列にする。例として、図３は、例示的な直列モジュール３００を示す。説明しやすいために、図３におけるモジュールは、上記に検討されるモジュールに限定される。しかしながら、上記のように、異なる実施例では、上記よりも多く又は少ないモジュールタイプを支援するように配置されてよい。更に、図３に示すように、直列モジュール３００におけるモジュールの各々は、１組のパラメーター３０２における１つのパラメーターと関連してよい。しかしながら、ある実際の操作において、直列モジュール３００における一部又は全部のモジュールは、如何なるパラメーターを必要としないことがある。
【００２５】
上記のように、図１に対応して、デザイン抽象コードが生じると、フィールドプログラマブルゲートアレイ装置又は回路ボードに対してプログラミングし、その後でワークロード又はアプリケーションに対する深層学習に用いられてよい。図４は、１つの例示的なプログラミングされたフィールドプログラマブルゲートアレイ装置を示す。図４に示すように、フィールドプログラマブルゲートアレイ装置４００は、直列された互いに接続論理ブロックを定義するためのプログラミングされたゲートアレイ４０２を含む。特に、図４に示すように、ゲートアレイ４０２における論理ブロックが図３の直列モジュール３００に対応する。図３のパラメーター３０２は、図４の１つ又は複数のレジスタ４０４にプログラミングされ、必要に応じてゲートアレイ４０２における論理ブロックと互いに接続してよい。
【００２６】
次に、図５に示すように、プログラミングのフィールドプログラマブルゲートアレイ装置４００を使用してよい。図５は、深層学習ワークロードを実行するシステム５００のデータフローを模式的に示す。図５に示すように、システムは、中央処理装置５０２及びフィールドプログラマブルゲートアレイ装置４００を含む。操作において、中央処理装置５０２が深層学習タスクに会う場合、前記タスクがフィールドプログラマブルゲートアレイ装置４００に伝送される。次に、フィールドプログラマブルゲートアレイ装置４００は、その中のプログラミングされたモデルに基づいて前記タスクを実行する。その後、フィールドプログラマブルゲートアレイ装置４００は、結果を中央処理装置５０２に提供する。
【００２７】
ある実際の操作において、パラメーターは、プログラミングされているフィールドプログラマブルゲートアレイ装置に記憶される必要がない。深層学習タスクを実行する必要がある場合、これらのパラメーターは、フィールドプログラマブルゲートアレイ装置に伝送されてよい。一方、独立したメモリ装置は、フィールドプログラマブルゲートアレイ装置に用いられるパラメーターを記憶するようにフィールドプログラマブルゲートアレイ装置に結合されてよい。
【００２８】
図５は、フィールドプログラマブルゲートアレイ装置４００の配置及び過程を示し、両者ともフィールドプログラマブルゲートアレイ装置に基づいて「完全」のモードで操作する仮定である。つまり、モデルは、完全にフィールドプログラマブルゲートアレイ装置で実行されることができる。しかしながら、ある状況で、ハードウェアの制約や制限により、前記配置を達成させることはできない。例として、フィールドプログラマブルゲートアレイ装置のゲートアレイには、フィールドプログラマブルゲートアレイ装置でモデルを実行するための各モジュール及び各モジュールの実例を定義する十分なゲート数がない場合がある。ある例において、タスクを実行するために幾つかのフィールドプログラマブルゲートアレイ装置を直列することは可能である。このような配置において、フィールドプログラマブルゲートアレイ装置の各々は、直列する一部を含み、最後の１つのフィールドプログラマブルゲートアレイ装置は最終の結果を中央処理装置にフィードバックする。しかしながら、他の実例において、ただ複数のフィールドプログラマブルゲートアレイ装置のシステム内に十分な実体空間がない可能性がある。このため、異なる実施例において、これらの障害を克服するために、代わりのプログラミングモデルを提供する。
【００２９】
ある実施例において、可能であれば、フィールドプログラマブルゲートアレイ装置は、「節約」のモードで操作するようにプログラミングされてよい。つまり、モデルを実行するための直列モジュールが重複操作を含むことが必要であれば、重複操作に関するモジュールは、フィールドプログラマブルゲートアレイ装置で改めて使用されてよい。このように配置されるフィールドプログラマブルゲートアレイ装置６００を、図６に模式的に示す。
【００３０】
図６に示すように、フィールドプログラマブルゲートアレイ装置６００は、直列された互いに接続論理ブロックを定義するためのプログラミングされたゲートアレイ６０２を含む。特に、図６に示すように、ゲートアレイ６０２における論理ブロックは、第１組６０２ａ及び第２組６０２ｂを含む。第１組６０２ａ及び第２組６０２ｂは、モデルにおける重複の操作に対応する。パラメーターは、１つ又は複数のレジスタ６０４にプログラミングされて、必要に応じてゲートアレイ６０２における論理ブロックと互いに接続してよい。フィールドプログラマブルゲートアレイ装置６００において、第１組６０２ａ及び第２組６０２ｂは、必要に応じてそれらの各々の操作を何度も実施するように配置されてよい（図６に示されるループのように）。
【００３１】
次に、図７に示すように、プログラミングのフィールドプログラマブルゲートアレイ装置６００を使用してよい。図７は、深層学習ワークロードを実施するシステム７００のデータフローを模式的に示す。図７に示すように、システムは、中央処理装置７０２及びフィールドプログラマブルゲートアレイ装置６００を含む。操作において、中央処理装置が深層学習タスクに会う場合、前記タスクは、フィールドプログラマブルゲートアレイ装置６００に伝送される。次に、フィールドプログラマブルゲートアレイ装置６００は、その中にプログラミングされたモデルに基づいて前記タスクを実行し、必要に応じてタスクを重複する（ループに示されるように）。その後、フィールドプログラマブルゲートアレイ装置６００は、結果を中央処理装置７０２に提供する。
【００３２】
ある実施例において、フィールドプログラマブルゲートアレイ装置の重複操作は異なる形態によって管理されてよいと考えられる。例として、ある実施例において、フィールドプログラマブルゲートアレイ装置は、データがフィールドプログラマブルゲートアレイ装置における適切なモジュールへ流れることを確保するように、ハードワイヤードデータフローを有してよく、これにより、重複操作の正確数を確保することができる。他の実施例において、フィールドプログラマブルゲートアレイ装置の一部のゲートアレイは、データフローの制御や管理用のロジックを定義するように配置されてよい。他の実施例において、前記過程は、中央処理装置によって制御されてよい。つまり、第１回の伝送結果が中央処理装置に提供されて、中央処理装置は、重複操作の数を実行するまで、結果をフィールドプログラマブルゲートアレイ装置に伝送して更なる処理をしてよい。また、上記技術の組合せは、異なる実施例に用いられてよい。
【００３３】
ある実施例において、フィールドプログラマブルゲートアレイ装置は、モジュールをスキップ（ｓｋｉｐ）又はバイパス（ｂｙｐａｓｓ）するように配置されてよい。例として、図６は、フィールドプログラマブルゲートアレイ装置が１回又は複数回のモジュールシーケンス「ＣＲＮＰ」を使用し、次に１回又は複数回のモジュールシーケンス「ＦＲＤＳ」を使用するように配置されることを示す。図４のフィールドプログラマブルゲートアレイ装置は、「バイパス」によって同じ効果が達成される。つまり、図４に示すように、２回のシーケンス「ＣＲＮＰ」を使用した。その後、「ＦＲＤＳ」シーケンスを達成させるために、フィールドプログラマブルゲートアレイ装置４００は、前へ「Ｆ」、「Ｒ」、「Ｄ」及び「Ｓ」の次の実例にスキップするように配置されてよい。このような配置において、フィールドプログラマブルゲートアレイ装置４００は、それらのモジュールがバイパスされる追加パラメーターを制御するように配置されてよい。ある実施例において、重複及びバイパス機能は、同じフィールドプログラマブルゲートアレイ装置で共に実行されてよい。このため、また図４を参照されたい。「ＣＲＮＰ」よりも多い２つの実例を必要とすれば、フィールドプログラマブルゲートアレイ装置４００は、必要な機能を提供するために、１つ又は複数の使用可能な実例を重複して配置されてよい。
【００３４】
上記のように、ある実施例において、モデルは、直列された中央処理装置からの入力信号を処理するフィールドプログラマブルゲートアレイ直列装置に記憶されてよく、最後の１つのフィールドプログラマブルゲートアレイ装置は最後の結果を中央処理装置に伝送する。しかしながら、ある実施例において、「混合」のモードが提供される。つまり、必要なフィールドプログラマブルゲートアレイ装置に用いられるモジュールの数及び論理回路ブロックを減少してよく、このようなモジュールがシステムの他の箇所で実行される。例として、システムにおける他のフィールドプログラマブルゲートアレイ装置又はアクセラレータは、このようなモジュールを実行する論理回路ブロックを含むように配置される可能性がある。この場合、フィールドプログラマブルゲートアレイ装置は、他の深層学習タスク装置と互いに組み合わせて使用するように配置されてよい。これを図８及び図９に模式的に示す。
【００３５】
図８は、他のプロセッサ８５０と組み合わせて使用されるプログラミングされたフィールドプログラマブルゲートアレイ装置８００を示す。フィールドプログラマブルゲートアレイ装置８００は、直列された互いに接続論理ブロックを定義するためのプログラミングされたゲートアレイ８０２を含む。パラメーターは、１つ又は複数のレジスタ８０４に入るようにプログラミングされ、必要に応じてゲートアレイ８０２における論理ブロックと互いに接続してよい。他のプロセッサ８５０は、フィールドプログラマブルゲートアレイ装置、アクセラレータ又は他のプロセッサであってもよい。他のプロセッサ８５０は、ゲートアレイ８０２の中で論理ブロックの実施できない操作を実行するための論理ブロック８５２を含んでよい。ある実際の操作において、フィールドプログラマブルゲートアレイ装置８００又は他のプロセッサ８５０における何れの使用不可能な追加の操作を実施するように、追加のフィールドプログラマブルゲートアレイ装置、アクセラレータ又は他のプロセッサを加えてよい。
【００３６】
プログラミングされたフィールドプログラマブルゲートアレイ装置８００及び他のプロセッサ８５０（及び他の如何なる装置）は、図９に示すように使用されてよい。図９は、深層学習ワークロードを実施するシステム９００のデータフローを模式的に示す。図９に示すように、システムは、中央処理装置９０２及び混合処理システム９０４を含む。操作において、中央処理装置９０２が深層学習タスクに会う場合、前記タスクは、混合処理システム９０４に伝送される。タスクが完成すると、混合処理システム９０４は、結果を中央処理装置９０２へ提供する。
【００３７】
システム９００において、混合処理システム９０４は、少なくともフィールドプログラマブルゲートアレイ装置８００及び他のプロセッサ８５０（この場合、アクセラレータとして配置される）からなる。しかしながら、上記のように図８に対応して、フィールドプログラマブルゲートアレイ装置８００及び他のプロセッサ８５０は、他の異なる装置と組み合わせて使用するように配置されてよい。このため、図９に示すように、混合処理システム９０４は、１つ又は複数の追加の装置を含んでよい。
【００３８】
混合処理システム９０４は、下記のように操作される。中央処理装置９０２からタスクを受けた後で、タスクが混合処理システム９０４における１つの素子に伝送される。前記素子は、次に、ある操作を実施して、タスクを混合処理システム９０４における他の素子に伝送する。タスクが完成するまで、この過程を重複する。次に、タスクの最後操作を完成した素子は、最後結果を中央処理装置９０２へ伝送してよい。
【００３９】
例として、フィールドプログラマブルゲートアレイ装置８００はタスクの第１回の操作を実施してよく、他のプロセッサ８５０はタスクの追加の操作を実施してよい。タスクが完成した後で、他のプロセッサ８５０は、次に、タスクを中央処理装置に伝送してよい。タスクが完成していない（つまり、より多くの操作を必要とする）場合、タスクは、タスクを完成する必要に応じて、フィールドプログラマブルゲートアレイ装置８００又は混合処理システム９０４における他の素子に伝送されてよい。
【００４０】
ある実施例において、中央処理装置は、混合処理システムの一部であってよい。つまり、中央処理装置は、ある操作を効率的に実行するロジックを含んでよい。このため、ある例において、データは、全ての操作を完成するように、中央処理装置、フィールドプログラマブルゲートアレイ及び他の素子の間で伝送されてよい。
【００４１】
異なる実施例において、混合処理システムに用いられる異なる素子のパラメーターは、異なる形態で記憶されてよい。ある例において、素子の各々のパラメーターは、各素子と共に記憶されてよい。ある例において、操作を実施する必要がある場合、これらのパラメーターを素子に伝送してよい。これらのパラメーターは、混合オペレーティングシステム内部ソース又は外部ソースから伝送されてよい。例として、パラメーターは、中央処理装置により提供されてよく、一方、独立したメモリ装置は、これらのパラメーターを記憶するように混合処理システムに結合されてよい。
【００４２】
ある実施例において、「混合」及び「節約」のモードを組み合わせて使用してよい。つまり、必要に応じて異なる素子により提供される操作を重複してよい。例として、また図９を参照されたい。フィールドプログラマブルゲートアレイ装置８００、他のプロセッサ８５０又は混合処理システム９０４における他の如何なる素子実施の操作は、必要に応じて操作を重複してタスクを完成するように配置されてよい。
【００４３】
上記のように、異なる形態によって、重複の操作を管理してよい。例として、混合処理システムを使用するある実施例において、混合オペレーティングシステムの素子は、データが適切な素子に流れ、及び重複操作を実施する正確数を確保するように、素子の間のハードワイヤードデータフローを有してよい。他の実施例において、混合処理システムの１つ又は複数の素子は、制御を定義し及び素子の間のデータフローのロジックを管理するように配置されてよい。他の実施例において、過程は、中央処理装置により制御されてよい。つまり、第１回の伝送結果は、中央処理装置により提供されてよく、且つ中央処理装置は重複操作を実施する数に達するまで結果を混合処理システムに伝送して更なる処理を行う。また、上記技術の組合せは、異なる実施例に用いられてよい。
【００４４】
異なる実施例において、モード選択を自動的に選択することが期待される。つまり、コンパイラは、使用しようとするフィールドプログラマブルゲートアレイ装置を検査し、実行可能なモードを判断して、ユーザによる入力を必要としない適切なモードを選択してよい。例として、コンパイラは、フィールドプログラマブルゲートアレイ装置がモデル全体を収納できない（つまり、「完全」のモードが不可能である）と判断すると、「節約」及び「混合」の１つ又は２つのモードを実行できるかを判断する。２つのモードの何れも可能であれば、コンパイラは、次に、何れのモードが必要な操作に最適な表現を提供するように予期されるかを弁別するために、フィールドプログラマブルゲートアレイ装置及び／又は他の素子を検査するように配置されてよい。一方、コンパイラは、モードを優先的に選択することができる。
【００４５】
ある実施例において、ユーザは、所望又は好みのモードを指定してよい。例として、「完全」のモードが可能であれば、ユーザは、コンパイラがこのモードでフィールドプログラマブルゲートアレイ装置を自動的に使用するように配置されるように指示してよい。他の実例において、ユーザは、ある操作を効果的に実行するためにある素子が既にシステムに存在と意識すれば、混合のモードを要求してもよい。ある例において、ユーザは、利用しようとする既存素子を識別してよい。しかしながら、他の例において、コンパイラは、システムにおける素子を自動的に検出するように配置されてよい。このように、ユーザは、システムの既存機能を利用するように選択してよい。他の実例において、ユーザは、「節約」と「混合」との間に介在する好みのモードを指定してよい。
【００４６】
モード選択の実例は、以下の通りである。コンパイラは、訓練されたモデル、検出された素子（中央処理装置、フィールドプログラマブルゲートアレイ又は図形プロセッサ）、必要なリソース（メモリ及びレジスタ）及びモジュールの各々を実行する一番効率的な方法を分析する。例として、一般的に、畳み込み操作をより効率的に実施するように、図形プロセッサを使用する。このため、コンパイラは、コンピュータシステムの図形プロセッサが使用可能であると検出すると、図形プロセッサによって畳み込み操作を実施するように、混合のモードを選択してよい。他の実例において、コンパイラは、フィールドプログラマブルゲートアレイが実行モデルに必要な１つ又は複数のモジュールの要求に達することができないと判断すると、これらのタスクを実行するように、フィールドプログラマブルゲートアレイを中央処理装置、図形プロセッサ又は他の使用可能なフィールドプログラマブルゲートアレイに組み合わせてよい。
【００４７】
システムに関する上記の限定された細部は、例示的な実施例を説明するが、それらは実施され又は他の形態で使用されてもよく、これは説明のためのものだけである。むしろ、異なる実施例は、上記のより多くの要素を含むシステムに実施されてもよいし、他の形態で使用されてもよい。例示的なシステムは、図１０及び図１１に対応して示される。しかしながら、異なる実施例は、この例示的なシステムに限定されない。
【００４８】
図１０は、コンピュータシステム１０００の実例を示し、コンピュータシステムの素子がバス１００２によって互いに電気的に通信する。システム（コンピュータシステム）１０００は、処理ユニット１０３０（中央処理装置又はプロセッサ）及びバス（システムバス）１００２を含む。バス１００２は、メモリ（システムメモリ）１００４（例えば、読み出し専用メモリ１００６及びランダムアクセスメモリ１００８）のような異なるシステム素子をプロセッサ１０３０に結合する。システム１０００は、プロセッサ１０３０に直接接続、緊密隣接又は一体化される高速バッファメモリ（キャッシュメモリ１０２８）を含んでよい。システム１０００は、メモリ１００４及び／又は記憶装置１０１２からのデータをキャッシュメモリ１０２８にコピーして、プロセッサ１０３０により高速にアクセスすることができる。このように、データを待つと共に、キャッシュメモリ１０２８は、プロセッサ１０３０の性能を向上させることができる。これら及び他のモジュールは、異なる動作を実施するためにプロセッサ１０３０を制御するように制御又は配置されてよい。他のシステムメモリ１００４も、使用に用いられてよい。メモリ１００４は、複数の異なるタイプ且つ異なる性能特徴のメモリを含んでよい。プロセッサ１０３０は、例えば、記憶装置１０１２に埋め込まれる第１のモジュール１０１４、第２のモジュール１０１６及び第３のモジュール１０１８のような、如何なる汎用のプロセッサ及びハードウェアモジュール又はソフトウェアモジュールを含んでよい。ハードウェアモジュール又はソフトウェアモジュールは、プロセッサ１０３０及びソフトウェアの指令が実際プロセッサ設計に結合される専用プロセッサを制御するように配置される。プロセッサ１０３０は、実際に自己完結型コンピュータシステムであってもよく、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュメモリ等を含む。マルチコアプロセッサは、対称又は非対称であってよい。
【００４９】
プロセッサ１０３０に加え、他のプロセッサは、システム１０００に整合されてよい。例として、図１０に示すように、フィールドプログラマブルゲートアレイ１０３１又は他のプロセッサを提供してよい。図１０に示すように、フィールドプログラマブルゲートアレイ１０３１は、システム１０００における他の素子と通信及び対話するように、バス１００２に結合されてよい。しかしながら、ある実施例において、フィールドプログラマブルゲートアレイ１０３１は、システム１０００における他の素子に結合されてよい。
【００５０】
ユーザがコンピュータ装置１０００と対話できるように、入力構造として入力装置１０２０を提供する。入力装置１０２０は、音声用のマイクロホン、ジェスチャー又は画像入力用のタッチスクリーン、キーボード、マウス、モーション入力等を含んでよい。ある実例において、マルチモードシステムにより、ユーザは、システム１０００と通信するように、マルチタイプの入力を提供することができる。このような実例において、同様に出力装置１０２２を提供してよい。通信インターフェース１０２４は、ユーザによる入力及びシステム出力を監視し管理することができる。例として、ディスプレイ１０２５によってシステムを出力してよい。
【００５１】
記憶装置１０１２は、コンピュータがアクセス可能なデータを記憶するための不揮発性メモリであってよい。記憶装置１０１２は、磁気カセット、フラッシュメモリカード、ソリッドステートメモリ装置、デジタル多用途ディスク、カセット、ランダムアクセスメモリ１００８、読み出し専用メモリ１００６及びそれらの組み合わせであってよい。
【００５２】
コントローラ１０１０は、例えばベースボード管理コントローラのような、システム１０００における専用のマイクロコントローラ又はプロセッサであってよい。ある例において、コントローラ１０１０は、スマート管理プラットフォームインターフェースの一部であってよい。また、ある例において、コントローラ１０１０は、システム１０００のマザーボード又はメイン回路ボードに埋め込まれてよい。コントローラ１０１０は、システム管理ソフトウェアとプラットフォームハードウェアとの間のインターフェースを管理してよい。下記のように、コントローラ１０１０は、例えばコントローラ又は周辺素子のような異なるシステム装置及び素子（内部及び／又は外部）と通信してよい。
【００５３】
コントローラ１０１０は、通知、アラート、及び／又はイベントに対する特定な応答を生成し、自動ハードウェア応答プログラム等の指示又はコマンドを生成するように、リモート装置又は素子（例えば、電子メールメッセージ、ウェブメッセージ等）と通信してよい。管理者は、更に、特定なハードウェア応答プログラム又は操作を開始又は実施するように、コントローラ１０１０のリモートエンドと通信してよい。その操作を更に下記のように説明する。
【００５４】
コントローラ１０１０は、コントローラ１０１０の受信するイベント、アラート及び通知を管理及びメンテナンスするように、システムイベント記録コントローラ及び／又は記憶装置を含んでもよい。例として、コントローラ１０１０又はシステムイベント記録コントローラは、１つ又は複数の装置や素子からのアラート及び通知を受信し、システムイベント記憶素子におけるアラート及び通知をメンテナンスする。
【００５５】
フラッシュメモリ１０３２は、システム１０００に使用され且つ記憶及び／又はデータ伝送に用いられる電子不揮発性コンピュータ記憶媒体又はチップであってよい。フラッシュメモリ１０３２は、電気的に消去及び／又は改めてプログラミングされることができる。フラッシュメモリ１０３２は、例として、消去可能プログラマブル読み出し専用メモリ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ；ＥＰＲＯＭ）、電子消去可能プログラマブル読み出し専用メモリ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ；ＥＥＰＲＯＭ）、読み出し専用メモリ、不揮発性ランダムアクセスメモリ又は相補型ＭＯＳ電界効果トランジスタを含んでよい。システム１０００及びファームウェア１０３４に用いられると指定される１組の配置が初回で電源が入れられる場合、フラッシュメモリ１０３２は、システム１０００の実行するファームウェア１０３４を記憶してよい。フラッシュメモリ１０３２は、ファームウェア１０３４の使用する配置を記憶してもよい。
【００５６】
ファームウェア１０３４は、例えば拡張可能ファームウェアインターフェース又は統一拡張可能ファームウェアインターフェースのような基本入出力システム又はそれと同等の設備を含んでよい。システム１０００が起動するたびに、ファームウェア１０３４は、逐次プログラムとしてロード又は実行されてよい。ファームウェア１０３４は、前記組の配置に基づいてシステム１０００にあるハードウェアに対して識別、初期化及びテストをしてよい。ファームウェア１０３４は、システム１０００でパワーオンセルフテスト（Ｐｏｗｅｒ−ｏｎ−Ｓｅｌｆ−Ｔｅｓｔ；ＰＯＳＴ）のようなセルフテストを実施してよい。前記セルフテストは、例えばハードディスク、光学読み取り装置、冷却装置、メモリモジュール、拡張カード等の異なるハードウェア素子の機能をテストしてよい。ファームウェア１０３４は、オペレーティングシステムを記憶するように、メモリ１００４、読み出し専用メモリ１００６、ランダムアクセスメモリ１００８、及び／又は記憶装置１０１２における領域を処理及び分配してよい。ファームウェア１０３４は、ブートローダ及び／又はオペレーティングシステムをロードして、システム１０００の制御権限をオペレーティングシステムに与えてよい。
【００５７】
システム１０００のファームウェア１０３４は、ファームウェア１０３４が如何にシステム１０００における異なるハードウェア素子を制御するかを定義するファームウェア配置を含んでよい。ファームウェア配置は、システム１０００における異なるハードウェア素子の起動順序を決めることができる。ファームウェア１０３４は、統一拡張可能ファームウェアインターフェースのようなインターフェースを提供してよく、これにより、ファームウェアのデフォルト配置におけるパラメーターと異なる多種類の異なるパラメーターを設置することができる。例として、ユーザ（例えば管理者）は、タイミング及びバスの速度を指定し、システム１０００に接続される周辺設備を定義し、ヘルスモニタリング（例えばファン速度及び中央処理装置温度の制限）を設置し及び／又は他の多種類の全体表現及びシステム１０００の電気量使用に影響を与える他のパラメーターを提供するために、ファームウェア１０３４を使用してよい。ファームウェア１０３４がフラッシュメモリ１０３２に記憶されるように示すが、当業者であれば、ファームウェア１０３４が例えばメモリ１００４又は読み出し専用メモリ１００６のような他のメモリ素子に記憶されることを容易に識別することができる。
【００５８】
システム１０００は、１つ又は複数のセンサー１０２６を含んでよい。１つ又は複数のセンサー１０２６は、例として、１つ又は複数の温度センサー、ヒートセンサー、酸素センサー、化学センサー、ノイズセンサー、電流センサー、電圧検出器、エアフローセンサー、流量センサー、赤外線温度計、熱流センサー、温度計、高温カウント等を含んでよい。例として、１つ又は複数のセンサー１０２６は、バス１００２及びプロセッサ１０３０、キャッシュメモリ１０２８、フラッシュメモリ１０３２、通信インターフェース１０２４、ディスプレイ１０２５、メモリ１００４、読み出し専用メモリ１００６、ランダムアクセスメモリ１００８、コントローラ１０１０及び記憶装置１０１２によって通信してよい。１つ又は複数のセンサー１０２６は、例えば内部集積回路、汎用出力等のような１つ又は複数の異なる方法によりシステムにおける他の素子によって通信されてよい。システム１０００における異なるタイプのセンサー（例えば、センサー１０２６）も、例えば冷却ファン速度、電源状態、オペレーティングシステム状態、ハードウェア状態等のパラメーターをコントローラに知らせてよい。
【００５９】
図１１は、上記方法又は操作を実行し、及びグラフィカルユーザインタフェースを生成して表示するためのチップセットアーキテクチャを有するコンピュータシステムの実例を示す。システム（コンピュータシステム）１１００は、開示技術を実行するためのコンピュータハードウェア、ソフトウェア及びファームウェアを含んでよい。システム１１００は、識別計算を実施するように配置されるソフトウェア、ファームウェア又はハードウェアの多種類の物理及び／又はロジックが異なるリソースを処理することができるプロセッサ１１１０を含んでよい。プロセッサ１１１０は、プロセッサ１１１０の入出力を制御するチップセット１１０２と通信してよい。このような実例において、チップセット１１０２は、情報をディスプレイのような出力装置１１１４に出力し、且つメッセージを記憶装置１１１６に読み取り書き込むことができる。システム１１００は、フィールドプログラマブルゲートアレイ１１１１のような追加のプロセッサを含んでもよい。フィールドプログラマブルゲートアレイ１１１１は、フィールドプログラマブルゲートアレイ１１１１の入出力を制御するように、チップセット１１０２と通信してよい。しかしながら、他の実施例において、フィールドプログラマブルゲートアレイは、システム１１００における他の素子に連結されてよい。
【００６０】
例として、記憶装置１１１６は、磁気媒体及び固体媒体を含んでよい。チップセット１１０２は、ランダムアクセスメモリ１１１８からのデータを読み取って、ランダムアクセスメモリ１１１８に書き込んでよい。チップセット１１０２を接合するように、多種類のユーザインターフェース素子１１０６を接合するためのブリッジ１１０４を提供してよい。ユーザインターフェース素子１１０６は、キーボード、マイク、タッチ検出、処理回路及びマウスのようなポインティングデバイスを含んでよい。
【００６１】
チップセット１１０２は、異なる物理インターフェースを有する１つ又は複数の通信インターフェース１１０８と接合してよい。このような通信インターフェースは、有線及び無線地域ネットワーク、広帯域無線ネットワーク及びパーソナルエリアネットワークに用いられるインターフェースを含んでよい。更に、機器は、ユーザインターフェース素子１１０６によるユーザからの入力を受信して、ブラウズ機能のような適切な機能を実行するためにプロセッサ１１１０によって解釈してよい。
【００６２】
また、チップセット１１０２がファームウェア１１１２と通信することができ、電気が入れられる時にファームウェア１１１２がコンピュータシステム１１００により実行されてよい。ファームウェア１１１２は、１組のファームウェア配置に基づいてシステム１１００にあるハードウェアに対して識別、初期化及びテストをしてよい。ファームウェア１１１２は、システム１１００でパワーオンセルフテストのようなセルフテストを実施してよい。前記セルフテストは、異なるハードウェア素子１１０２−１１０８の機能をテストしてよい。ファームウェア１１１２は、オペレーティングシステムを記憶するように、ランダムアクセスメモリ１１１８における領域を処理及び分配してよい。ファームウェア１１１２は、ブートローダ及び／又はオペレーティングシステムをロードして、システム１１００の制御権限をオペレーティングシステムに与えてよい。ある例において、ファームウェア１１１２は、ハードウェア素子１１０２−１１１０及び１１１４−１１１８と通信してよい。ここで、ファームウェア１１１２は、チップセット１１０２及び／又は１つ又は複数の他の素子によってハードウェア素子１１０２−１１１０及び１１１４−１１１８と通信してよい。ある例において、ファームウェア１１１２は、ハードウェア素子１１０２−１１１０及び１１１４−１１１８と直接通信してよい。
【００６３】
理解すべきなのは、より優れた処理能力を提供するように、例示したシステム１０００及び１１００に１つよりも多くのプロセッサ、又はネットワークによって互いに接続されたコンピュータ装置のグループ又はクラスタの一部を有してよい。
【００６４】
明確に説明するために、ある実施例において、本開示は、個別の機能ブロックを含み、機能ブロック、装置及び／又は装置素子を含み、ソフトウェア又はソフトハードウェア組合せの工程又はルーチンとして提示されることがある。
【００６５】
ある実施例において、コンピュータ読取可能な記憶装置、媒体及びメモリは、ビットストリーム等の有線又は無線信号を含んでよい。しかしながら、言及すると、非一時的なコンピュータ読取可能な記憶媒体は、エネルギー、搬送波信号、電磁波、及び信号自体等の媒体を明示的に排除する。
【００６６】
上記実施例の方法によれば、コンピュータ読取可能な媒体記憶又は他の形態によるコンピュータ実行可能命令により実行されてよい。これらの指令は、例として、ある機能又は１組の機能を実施するように、汎用コンピュータ、専用コンピュータ又は専用処理装置を生じ又は他の形態で配置される指令又はデータを含んでよい。一部の使用されるコンピュータリソースは、ネットワークを介してアクセス可能である。コンピュータ実行可能命令は、例として、アセンブリ言語、ファームウェア又はソースコードのようなバイナリ及び中間フォーマット命令であってよい。
【００６７】
これらの開示による装置実行方法は、ハードウェア、ファームウェア及び／又はソフトウェアを含んでよく、且つ各種類のフォームファクタを採用してよい。これらのフォームファクタの典型例としては、ノートブックコンピュータ、スマート携帯電話、スモールフォームファクタパーソナルコンピュータ、携帯情報端末、ラック装置、スタンドアローン装置等を含んでよい。本文に述べられる機能は、周辺設備又は付加カードに埋め込まれてよい。更なる実例によると、このような機能は、異なるチップにおける回路ボードで実行され、又は個別の装置で異なる過程を実行してよい。
【００６８】
異なる実施例は、広く異なる操作環境で更に実施されてよい。ある例において、１つ又は複数のサーバーコンピュータ、ユーザコンピュータ又は如何なる複数のアプリケーションを操作するためのコンピュータ装置を含んでよい。ユーザ又はクライアント装置は、標準オペレーティングシステムを実行するデスクトップコンピュータ又はノートブックコンピュータ、及びモバイルソフトウェアを実行するハニカム、無線又はハンドヘルド装置のような多種類の汎用コンピュータの如何なる１つを含んでよく、且つ多種類のネットワーク及び情報プロトコルを支援することができる。このようなシステムは、多種類の如何なる多種類の市販使用可能なオペレーティングシステムを実行する多くのワークステーション、及び開発とデータベース管理のような他の既知用途を含むアプリケーションを含んでよい。これらの装置は、仮想端末、シンコンピュータ、ゲームシステム及び他のネットワークによって通信可能な他の装置のような他の電子装置を含んでよい。
【００６９】
実例又はその一部について、ハードウェアで実行される。本開示は、データ信号でロジック機能を実行するように論理ゲートを有するディスクリート論理回路、適切な組合せの論理ゲートを有する特定アプリケーション集成回路、プログラマブルロジックゲートアレイ、フィールドプログラマブルゲートアレイ等のようなプログラマブルハードウェアである技術の１つの又は複数の組合せで実行されてよい。
【００７０】
数多くの実例では、当業者に熟知の少なくとも１つのネットワークを使用し、伝送制御プロトコル／インターネットプロトコル、オープンシステムリンク、ファイル転送プロトコル、ユニバーサルプラグアンドプレイアグリーメント、ネットワークファイルシステム、ネットワークファイル共有システム、ＡｐｐｌｅＴａｌｋ等のような多種類の商用利用可能なプロトコルによって通信を支援する。例として、ネットワークは、地域ネットワーク、広域ネットワーク、仮想私設ネットワーク、インターネット、エンタープライズ内部ネットワーク、エンタープライズ外部ネットワーク、公衆交換電話網、赤外線ネットワーク、無線ネットワーク及びそれらの如何なる組合せであってよい。
【００７１】
これらの技術による装置実行方法は、ハードウェア、ファームウェア及び／又はファームウェアを含んでよく、且つ各種類のフォームファクタを採用してよい。これらのフォームファクタの典型例としては、サーバーコンピュータ、ノートブックコンピュータ、スマート携帯電話、スモールフォームファクタパーソナルコンピュータ、パーソナルデジタルアシスタント等を含んでよい。本文に述べられる機能は、周辺設備又は付加カードに埋め込まれてよい。更なる実例によれば、このような機能は、異なるチップにおける回路ボードで実行され、又は個別の装置で異なる過程を実行してよい。
【００７２】
ウェブサーバーを使用する実例において、ウェブサーバーは、ハイパーファイル転送プロトコルサーバー、ファイル転送プロトコルサーバー、共通ゲートウェイインターフェイスサーバー、データサーバー、Ｊａｖａ（登録商標）サーバー、及びビジネスアプリケーションサーバーを含む多種類のサーバー又は中間アプリケーションを実行することができる。ユーザ装置の要求に応するように、ウェブサーバは、プログラム又はスクリプトを実行することもできる。例として、ウェブサーバーは、１つ又は複数のネットワークアプリケーションを実行してよい。これらのネットワークアプリケーションは、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃又はＣ＋＋のような何れの１つ又は複数のプログラミング言語、或いはＰｅｒｌ、Ｐｙｔｈｏｎ又はＴＣＬのような如何なるコード言語、及びそれらの組合せのコード又はプログラムで実行されてよい。ウェブサーバーは、データベースサーバーを含んでよく、オープンマーケットで市販されるデータベースサーバも含んでよい。
【００７３】
上記のように、サーバーシステムは、多種類のデータ記憶及び他のメモリと記憶媒体を含んでよい。それらは、例えば、１つ又は複数のコンピュータ領域（及び／又は滞在）の記憶媒体、又はネットワークから離れたコンピュータのような複数の位置に滞在してよい。１組の特別な実例において、情報は、当業者に熟知の記憶領域ネットワークに滞在してよい。類似的に、コンピュータ、サーバー又は他のネットワーク装置に属する機能を実施するための如何なる必要のファイルも、状況に応じて領域及び／又はリモートに保存されてよい。システムがコンピュータ化装置を含む場合、このような装置の各々は、バスにより電気的に接続され、且つユニットにより少なくとも１つの中央処理装置、少なくとも１つの入力装置（例えばマウス、キーボード、コントローラ、タッチディスプレイユニット又は押しボタン）、及び少なくとも１つの出力装置（例えばディスプレイデバイス、プリンタ、又はスピーカー）からなるハードウェアユニットを含んでよい。このようなシステムは、ディスクドライブ、光記憶装置、ソリッドステート記憶装置（例えばランダムアクセスメモリ又は読み出し専用メモリ）、モバイルメディアデバイス、メモリカード及びフラッシュメモリカード等のような１つ又は複数の記憶装置を含んでよい。
【００７４】
コード又はコードの一部を含むための記憶媒体及びコンピュータ読取可能な媒体は、記憶媒体及びコンピュータ媒体を含む如何なる当該技術分野に既知又は使用された適切な媒体を含んでよい。記憶媒体及びコンピュータ媒体は、データ又は情報を記憶及び／又は伝送するための移動及び非移動媒体を含んでよいが、これらの媒体を限定する意図がない。移動及び非移動媒体は、ランダムアクセスメモリ、読み出し専用メモリ、消去可能プログラマブル読み出し専用メモリ、電子消去可能プログラマブル読み出し専用メモリ、フラッシュメモリ又は他のメモリ技術、ディスク読み出し専用メモリ、デジタル多機能ディスク又は他の光学記憶、磁気カセット、テープ、ディスク記憶装置又は他のディスク記憶装置を含む。移動又は非移動媒体は、システム装置のアクセス可能な所望の情報を記憶することに用いられてよい。データ及び情報は、コンピュータ読取可能な指令、データ構造、プログラムモジュール又は他のデータを含んでよい。本明細書で提供される技術及び教示に基づいて、当業者は、本開示の様々な態様が他の方法及び／又は方法で実施されてよいことを理解することができる。
【００７５】
従って、明細書及び図面は、限定ではなく、説明するためのものべきである。しかしながら、特許請求の範囲に記載の本発明のより広い精神及び範囲から逸脱せずに、様々な修正や変更を行うことができる。
【符号の説明】
【００７６】
１００  方法
１０２、１０４、１０６  工程
２００  フィールドプログラマブルゲートアレイコンバータシステム
２０２  コンパイラ
２０４  デバッガ
２０６  アナライザ
２０８  モジュールデータベース
３００  直列モジュール
３０２  パラメーター
４００、６００、８００  フィールドプログラマブルゲートアレイ装置
４０２  ゲートアレイ
４０４  レジスタ
５００、７００、９００、１０００、１１００  システム
５０２、７０２、９０２  中央処理装置
６０２  ゲートアレイ
６０２ａ  第１組
６０２ｂ  第２組
６０４  レジスタ
８０２  ゲートアレイ
８０４  レジスタ
８５０  他のプロセッサ
８５２  論理ブロック
９０４  混合処理システム
１００２  バス
１００４  メモリ
１００６  読み出し専用メモリ
１００８、１１１８  ランダムアクセスメモリ
１０１０  コントローラ
１０１２、１１１６  記憶装置
１０１４、１０１６、１０１８  モジュール
１０２０  入力装置
１０２２、１１１４  出力装置
１０２４、１１０８  通信インターフェース
１０２５  ディスプレイ
１０２６  センサー
１０２８  キャッシュメモリ
１０３０、１１１０  プロセッサ
１０３１、１１１１  フィールドプログラマブルゲートアレイ
１０３２  フラッシュメモリ
１０３４、１１１２  ファームウェア
１１０２  チップセット
１１０４  ブリッジ
１１０６  ユーザインターフェース素子
【図１】
2019139742.tif 000003
【図２】
2019139742.tif 000004
【図３】
2019139742.tif 000005
【図４】
2019139742.tif 000006
【図５】
2019139742.tif 000007
【図６】
2019139742.tif 000008
【図７】
2019139742.tif 000009
【図８】
2019139742.tif 000010
【図９】
2019139742.tif 000011
【図１０】
2019139742.tif 000012
【図１１】
2019139742.tif 000013