(57)【特許請求の範囲】
【請求項１】
ユーザ・コードによって指定されるカスタム集積回路（ＩＣ）のためのプロセッサ・アーキテクチャを自動的に生成する方法であって、少なくとも前記ＩＣが１つまたは複数のタイミングおよびハードウエアの制約を有し、
ａ．  前記プロセッサ・アーキテクチャを定義するパラメータを前記ユーザ・コードの静的プロファイルおよび動的プロファイルから抽出し、
ｂ．  アーキテクチャ・オプティマイザ（ＡＯ）を使用し、コスト関数として表現されるタイミングおよびハードウエアがすべての制約を満たし、かつ、前記プロセッサ・アーキテクチャが最適化されるまで、反復的に階層的態様で前記プロセッサ・アーキテクチャの複数のパラメータを変更し、
ｃ．  生成された前記プロセッサ・アーキテクチャを、半導体製造のために前記カスタム集積回路のコンピュータ可読記述に合成する、
方法。
【請求項２】
前記プロセッサ・アーキテクチャを有するコンピュータ・システムのアーキテクチャを、パフォーマンス、コスト、および電力を含むあらかじめ決定済みの評価基準に基づいて自動的に決定する
請求項１に記載の方法。
【請求項３】
前記ユーザ・コードを効率的に実装するために必要とされる１つまたは複数のタイプの演算要素を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項４】
前記ユーザ・コードを効率的に実装するために必要とされる数の演算要素を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項５】
レジスタの数、レジスタの幅、読み出しポート、および書き込みポートを含むレジスタ構成およびレジスタ・ファイルの数を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項６】
コンディション・コード・レジスタを伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項７】
インストラクション・キャッシュ、データ・キャッシュ、およびキャッシュ階層を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項８】
インストラクション・キャッシュとデータ・キャッシュのための別々のキャッシュ・メカニズム、ライン・サイズ、スピル・アンド・フィル・アルゴリズムを伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項９】
各キャッシュのための書き戻しポリシーを伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項１０】
メモリに対する読み出しおよび書き込みポートの数およびキャッシュとメモリの間におけるバス幅を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項１１】
キャッシュのレベル、および共有または別々のインストラクション・キャッシュとデータ・キャッシュ、または結合キャッシュを含む編成を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項１２】
コストを低減し、パフォーマンスを維持する複数レベルへのキャッシュの編成を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項１３】
メモリ・サイズ、メモリ・マップ・スキーム、アクセス・サイズ、読み出し／書き込みポートの数および幅、およびメモリ編成を用いたメモリ階層を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項１４】
ユーザ・コードを実装するインストラクション・セット・アーキテクチャ（ＩＳＡ）を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項１５】
利用可能なレジスタの最適利用を確保する呼び出し規約を伴うプロセッサ・レベルのアーキテクチャを自動的に決定する
請求項１に記載の方法。
【請求項１６】
前記プロセッサ・アーキテクチャの最適化は、必要とされるインストラクションの数を低減し、前記インストラクションをエンコードしてインストラクションのデコード速度を改善し、かつインストラクション・メモリのサイズ要件を改善することを含めたインストラクション・セットの変更を含む、
請求項１に記載の方法。
【請求項１７】
前記プロセッサ・アーキテクチャの最適化は、レジスタ・ファイル・ポート、ポート幅、およびデータ・メモリへのポートの数のうちの１つまたは複数を変更することを含む、
請求項１に記載の方法。
【請求項１８】
前記プロセッサ・アーキテクチャの最適化は、データ・メモリ・サイズ、データ・キャッシュのプリフェッチ・ポリシー、データ・キャッシュの置換ポリシー、インストラクション・メモリ・サイズ、インストラクション・キャッシュのプリフェッチ・ポリシー、およびインストラクション・キャッシュの置換ポリシーのうちの１つまたは複数を変更することを含む、
請求項１に記載の方法。
【請求項１９】
前記プロセッサ・アーキテクチャのパフォーマンスを向上させるべくコンピュータ可読コードに対して固有のカスタマイズがなされた新しいインストラクションを自動的に生成することによってプロセッサのインストラクション・セットを変更し、
さらに、
ａ．  必要とされるメモリ帯域幅を識別し、
ｂ．  １つまたは複数のハードウエア・フラグとして１つまたは複数のソフトウエア実装されるフラグを置換し、
ｃ．  ２つまたはそれより多くの演算を新しいインストラクションに結合する、
請求項１に記載の方法。
【請求項２０】
パラメータを抽出する際には、さらに、
ａ．  各インストラクションのための実行サイクル時間を決定し、
ｂ．  各ループのための実行クロック・サイクル・カウントを決定し、
ｃ．  演算子統計テーブルを生成し、
ｄ．  各関数のための統計を生成し、
ｅ．  実行カウントの降順による内側ループ（カーネル）をソートする、
請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カスタム集積回路（ＩＣ）または特定用途向け集積回路（ＡＳＩＣ）のための最適アーキテクチャを自動的に生成する方法に関する。
【背景技術】
【０００２】
近年のコンピュータ・チップは、いくつかの共有および専用キャッシュ、並びにメモリを有する１つまたは複数のプロセッサ（ＣＰＵ）から構成される。それに加えて、近年のすべての組み込み型コンピュータ・チップは、プロセッサに高速でデータを移動及び取り出す複数の入力‐出力ユニットを含む。これらのチップは、通常、携帯電話、あらゆる種類の消費者デバイスおよびメディア・デバイス、たとえばビデオ、音楽プレーヤから近年のテレビジョン機器、医療デバイス、自動車、グローバル・ポジショニング・システム、通信デバイス、衛星、およびリモート・センシング装置までといったデバイス内で使用される。
【０００３】
コンピューティングの性質は、多様なアプリケーションの間において変化に富んでいる。同一チップを多様なアプリケーションに適用しようとすることは、アプリケーションに要求されているものとチップが提供するものとの間に大きな不整合を招く結果になる。このことは、一般に、チップ内の処理リソースの過少利用に繋がり、この結果、必要以上に高い電力消費、あるタスクのために不十分な処理能力等が引き起こされ、価格および運用詳細という点で払い過ぎになる、或いは、市場へ劣った製品を提供することをベンダに強要してしまう。ＡＳＩＣまたはＡＳＩＰは、手元にある特定のアプリケーションのためのカスタムＩＣを構築するカスタム化ケイパビリティを採り入れている。しかしながら、それは、そのＩＣが実行可能な唯一無二のアプリケーションである。ＡＳＩＰの設計は、演算能力の完全な整合および電力の利点をすべて採り入れているが、高価であり、しかも時間を要する解決策である。たった１つのアプリケーションのために使用されるＡＳＩＰの設計に非常に多くの人年および数千万ドルを必要とする。
【０００４】
通常、チップ設計プロセスは、チップが実行しなければならないすべての機能をアルゴリズム設計者が規定するときから始まる。これは、一般に、ＣまたはＭＡＴＬＡＢ（マトラボ）等の言語においてなされる。その後チップ・スペシャリスト、ツール技術者、検証技術者、およびファームウエア技術者のチームが、多くのマン・イヤー（man-year）を費やしてアルゴリズムをハードウエア・チップおよび関連するファームウエアにマップする。チームは、既製のプロセッサを使用することが可能であり、既製のプロセッサは、それは分かっていることではあるが、標準的なアーキテクチャがそのアルゴリズムと良好に適合しないことがあるため、パフォーマンス制限を有するおそれがある。
【０００５】
既製のプロセッサの代替案は、所望のアルゴリズムのための高いパフォーマンスを達成することできる、カスタム・アーキテクチャおよびカスタム・ハードウエアを設計することである。コンピュータ・アーキテクチャは、コンピュータ・システムの演算、通信、およびデータ・ストレージの要素（ハードウエア）、それらの構成要素が相互作用する方法（マシンの組織化）、およびそれらがコントロールされる方法（インストラクション・セット）を定める詳細な仕様を規定するものである。マシンのアーキテクチャは、いずれの演算がもっとも効率的に実行可能か、かついずれの形式のデータの組織化およびプログラム設計が最適に動作するか、について規定する。
【０００６】
カスタム・チップ・アプローチは、非常に高価なプロセスであり、かつ予算超過から技術的問題までのリスクもはらんでいる。最先端カスタムＩＣ設計の開発によって、解決されることを必要とする多くの問題が導かれる。より高い処理速度によって、多クロック領域、ますます複雑化するクロック乗算および同期テクニック、ノイズ・コントロール、および高速Ｉ／Ｏ等の、以前は本質的に純粋なデジタルであった条件がアナログ・ドメインに導入されることとなった。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ますます複雑になる設計による別の効果は、設計の成功を達成するために必要となり得る、追加される製造ターンの数に影響を及ぼす。さらに別の問題としては、有能な労働者を利用できるかどうかの点にある。ＡＳＩＣ回路設計における急速な成長は、有能なＩＣ技術者の不足を同時に伴って生じている。
【課題を解決するための手段】
【０００８】
１つの態様においては、コンピュータ可読コードまたはモデルによって記述されるカスタム集積回路（ＩＣ）を自動的に生成するシステムおよび方法が開示される。ＩＣは、１つまたは複数のタイミングおよびハードウエアの制約を有する。システムは、プロセッサ・アーキテクチャを定義するパラメータをコンピュータ可読コードの静的プロファイルおよび動的プロファイルから抽出し、アーキテクチャ・オプティマイザ（ＡＯ）を使用し、コスト関数として表現されるタイミングおよびハードウエアの制約がすべて満たされるまでプロセッサの１つまたは複数のパラメータを変更することによってプロセッサ・アーキテクチャを反復的に最適化し、生成されたプロセッサ・アーキテクチャを、半導体製造のためにカスタム集積回路のコンピュータ可読記述に合成する。
【０００９】
上記の態様の実装には、次に示す内容のうちの１つまたは複数を含めることができる。所定のセットによって、アプリケーション／アルゴリズムのための最適コンピュータ・システム・アーキテクチャは、パフォーマンス、コスト、および電力といった多様なファクタに基づいて自動的に決定することが可能である。最適アーキテクチャは、システム・レベルのアーキテクチャおよびプロセッサ・レベルのアーキテクチャの両方からなる。システム・レベルのアーキテクチャについて言えば、ＡＯが、必要とされるメモリの量、サポートするメモリ帯域幅、ＤＭＡチャンネルの数、クロック、およびペリフェラルを自動的に決定することが可能である。プロセッサ・レベルのアーキテクチャについては、ＡＯが、システムのためのパフォーマンス評価基準のセットおよびアルゴリズム内のパラレリズムに基づいて、演算要素のスカラ度の必要性ならびにその量；アルゴリズムの効率的な実装に必要とされる演算要素のタイプ；ユーザ・コードの効率的な実装に必要とされる演算要素の数；段数、インストラクション発行レート、スカラ度という観点から見たパイプライン編成、特に加算器の数、ロード、ストア単位という観点から見た演算要素の数、およびパイプライン構造内における演算要素の配置；ＡＬＵ（演算要素）の幅；レジスタ・ファイルの数および、レジスタの数、それらの幅、読み出しポートならびに書き込みポートの数という観点から見たそれらの構成；コンディション・コード・レジスタの必要性；インストラクション・キャッシュの必要性ならびにその量、および必要とされるデータ・キャッシュ、およびそれらの階層；インストラクション・キャッシュおよびデータ・キャッシュそれぞれのための別々のキャッシュ・メカニズム、ライン・サイズ、およびキャッシュのスピル・アンド・フィル・アルゴリズムを自動的に決定することが可能である。システムは、ユーザのアルゴリズムのコード内においてインストラクションおよびデータのプリフェッチ・インストラクションを自動的に導入し、オンデマンドおよび適時のプリフェッチを行なうことができる。システムは、それぞれのキャッシュの書き戻しポリシー；メモリに対する読み出しおよび書き込みポートの数、およびキャッシュとメモリの間におけるバスの幅；全体的なコスト構造を低減しつつそれでも高いパフォーマンスを維持する、キャッシュのレベルおよび、共有／別々のインストラクションおよびデータのキャッシュ、または結合キャッシュ、または複数レベルへのそれの編成という観点から見たそれらの編成；メモリ・サイズ、メモリ・マップ・スキーム、アクセス・サイズ、読み出し／書き込みポートの数ならびにそれらの幅、および最大パフォーマンスを得るべくメモリに必要な分割の方法という観点から見てのメモリの階層を決定することが可能である。システムは、マシンが効率的な形でアルゴリズムを実装するためのＩＳＡを自動的に決定することができる。システムは、コード空間の量を最小にしつつそれでも高いパフォーマンスを達成するインストラクション・セットのための最適エンコーディングを自動的に決定することができる。システムは、利用可能なレジスタの最適利用を確保する呼び出し規約を自動的に決定することができる。反復的に、かつ階層的な形でなされるこれらのことはすべて、手元のアプリケーションに最適化された、所定のタイミング、コスト、および電力の要件を満たすチップに行き着く最適な包括的システム・アーキテクチャを決定することになる。
【００１０】
そのほかの実装としては次に示す内容を含めることができる。システムは、プロセッサのスカラ度およびインストラクションのグループ化規則を最適化することが可能である。システムはまた、必要とされるコアの数を最適化し、それらのコアを効果的に使用するべくインストラクション・ストリームを自動的に分割することも可能である。プロセッサ・アーキテクチャの最適化は、インストラクション・セットの変更を含む。システムが行なうインストラクション・セットの変更には、必要とされるインストラクションの数を低減させること、新しいインストラクションを見つけること、およびインストラクションをエンコードしてインストラクションのアクセス、デコード速度およびインストラクションのメモリ・サイズ要件を向上させることを含む。プロセッサ・アーキテクチャの最適化は、レジスタ・ファイル・ポート、ポート幅、およびデータ・メモリへのポートの数のうちの１つまたは複数の変更を含む。プロセッサ・アーキテクチャの最適化は、データ・メモリ・サイズ、データ・キャッシュのプリフェッチ・ポリシー、データ・キャッシュ構成、インストラクション・メモリ・サイズ、インストラクション・キャッシュのプリフェッチ・ポリシー、およびインストラクション・キャッシュ構成のうちの１つまたは複数の変更を含む。プロセッサ・アーキテクチャ最適化は、１つまたは複数のコプロセッサの追加を含む。システムは、アルゴリズムのためにプロセッサ・アーキテクチャのパフォーマンスを向上させるべくコンピュータ可読コードに対して固有のカスタマイズがなされた新しいインストラクションを自動的に生成することが可能である。システムは、コンピュータ可読コードのパーズを含み、さらに、ゼロ・オーバーヘッド・ループ演算の導入；必要とされるメモリ帯域幅の識別；１つまたは複数のハードウエア・フラグとしての１つまたは複数のソフトウエア実装されたフラグの置換を含む。抽出するパラメータは、さらに、各ループのための実行サイクル時間の決定；各ループのための実行クロック・サイクル・カウントの決定；１つまたは複数のビンのためのクロック・サイクル・カウントの決定；演算子統計テーブルの生成；各関数のための統計の生成；および実行カウントの降順による行のソートを含む。システムは、共通使用されるインストラクションを１つまたは複数のグループにモールドし、各グループのためのカスタム・インストラクションを生成してパフォーマンスを向上させることが可能である（インストラクション・モールディング）。システムは、アーキテクチャ・パラメータの変更のためのタイミングおよび面積のコストを決定することが可能である。モールドされた新しいインストラクションとの置換が可能なプログラム内のシーケンスが識別される。これは、シーケンス内のインストラクションをアレンジし直し、コードの機能を損なうことなく適合性を最大化する能力を含む。システムは、ポインタの進行を追跡し、ストライドおよびメモリ・アクセス・パターンおよびメモリ依存度に関する統計を構築してキャッシュのプリフェッチおよびキャッシュ編成を最適化することができる。
【００１１】
またシステムは、コンピュータ可読コードの静的プロファイリングおよびコンピュータ可読コードの動的プロファイリングの実行も含む。システムのチップ仕様は、コンピュータ可読コードのプロファイルに基づいて設計される。さらにチップ仕様は、コンピュータ可読コードの静的および動的プロファイリングに基づいて漸進的に最適化することが可能である。コンピュータ可読コードは、最適アッセンブリ・コードにコンパイルされることが可能であり、それが選択されたアーキテクチャのためのファームウエアを生成するべくアッセンブルされ、かつリンクされる。シミュレータが、ファームウエアのサイクル精度のシミュレーションを実行することが可能である。システムは、ファームウエアの動的プロファイリングを実行することができる。方法は、さらに、プロファイリングが行なわれたファームウエアに基づいて、またはアッセンブリ・コードに基づいてチップ仕様の最適化を行なうことを含む。システムは、設計されたチップ仕様のために、レジスタ・トランスファ・レベル（ＲＴＬ）コードを自動的に生成することが可能である。またシステムは、ＲＴＬコードの合成を行なってシリコンを製造することも可能である。
【００１２】
好ましい実施態様の利点には、次に示す内容のうちの１つまたは複数を含めることができる。システムは、ＡＳＩＣおよびＡＳＩＰの開発のためのターンアラウンド時間および設計コストを有意に低減する。これは、特定の『チップ』設計ではなく、頭の中にある基礎をなすアルゴリズムを用いて『Ｃ』により記述されたアプリケーションを利用することによってなされる。その後システムは、必須のソフトウエア開発キットおよびチップ上で走るファームウエアとともにそのアルゴリズムを実装するプロセッサ・ベースのチップ設計を自動的に生成する。このプロセスは、ＡＳＩＰ／ＡＳＩＣのための数人年の努力に対し、設計に行き着くまで数週間しか要さない。
【００１３】
システムは、『アーキテクチャ・オプティマイザ（ＡＯ）』に頼ることによってアプリケーションの要件と整合するチップ設計を自動的に生成することが可能である。サイクル精度のシステム・レベルのシミュレータから獲得されたアルゴリズムの実行プロファイル、およびアルゴリズムの静的プロファイル、およびチップに組み込まれる多様なハードウエア・ブロックの特性決定に基づいて、ＡＯは、パフォーマンス、電力、およびコストに関するベンダの要件を満たす最適ハードウエア構成を決定する。アルゴリズムの分析に基づき、ＡＯは、パフォーマンス要件を満たすだけでなく、手元のアルゴリズムに対してハードウエアを最適化することになる提案チップ・アーキテクチャに行き着く。ＡＯは、一連の反復ステップを取る中で所定のアルゴリズムのための最適ハードウエアに収斂する最適アーキテクチャに行き着く。
【００１４】
ＡＯは、ＡＳＩＰの多様な側面に対してそれが行なう一連の階層的決定に基づき、ベンダの評価基準に整合する所定のアルゴリズムのための最適アーキテクチャを決定し、したがって包括的最小アーキテクチャではない、局所的最小アーキテクチャの達成の中でＡＯがスタックすることはない。
【００１５】
システムは、すべてのコストが考慮に入れられ、かつシステム設計者が評価するべき最良可能な数表現およびビット幅の候補を獲得するように評価プロセスを自動化する。方法は、与えられたアーキテクチャの面積、タイミング、および電力のコストを迅速かつ自動化された態様で評価することができる。この方法は、コスト計算エンジンとして使用される。方法は、最適態様でアルゴリズムに基づいてＤＳＰを自動的に合成することを可能にする。システム設計者が、別のものではなくこの特定の表現を選ぶことに関連付けされるハードウエア面積、遅延、および電力のコストを意識する必要はない。システムは、ハードウエア面積、遅延、および電力が、アルゴリズム評価段階において可能な限り正確にモデリングされることを可能にする。
【００１６】
システムの好ましい実施態様のこのほかの利点には、次に示す内容のうちの１つまたは複数を含めることができる。このシステムは、チップ設計の問題を軽減し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わりに、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、これまで数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエア・チップ・ソリューションが設計される方法におけるパラダイムを完全にシフトするものである。ここで述べている自動システムは、システムへのプライマリ入力が、ロー・レベルのプリミティブではなく、コンピュータ可読コード、モデル、またはアルゴリズム仕様であることから、チップ設計の知識をまったく伴うことなく、アルゴリズム設計者自身が直接ハードウエア・チップを作ることが可能となるように、リスクを取り除き、チップ設計を自動的なプロセスにする。
【００１７】
このシステムを使用するこのほかの恩典として、さらに次に示す内容を含めることができる。
（１）スピード：チップ設計サイクルが数年単位ではなく数週単位に落ち着くことになる場合には、このシステムを使用している会社が、自社の製品をすばやく市場に持ち込むことによって急速に変化する市場に浸透することが可能になる。
（２）コスト：一般にチップの実装に必要とされる多数の技術者が不要となる。このことは、このシステムを使用している会社に夥しいコストの節約をもたらす。
（３）最適性：このシステム・プロダクトを使用して設計されたチップは、優れたパフォーマンス、面積、および電力消費を有している。
【００１８】
このシステムは、デジタル・チップ構成要素に向けた、それを有するシステムの設計で使用される方法におけるパラダイムを完全にシフトするものである。このシステムは、Ｃ／ＭＡＴＬＡＢ（マトラボ）で記述されたアルゴリズムからデジタル・ハードウエアを生成する完全に自動化されたソフトウエア・プロダクトである。このシステムは、ＣまたはＭＡＴＬＡＢ（マトラボ）等の高水準言語を採用してハードウエア・チップを実現するプロセスへの独特のアプローチを使用する。要約して言えば、これは、チップ設計を完全に自動化されたソフトウエア・プロセスにする。
【図面の簡単な説明】
【００１９】
【図１】図１は、プログラム、コード、またはコンピュータ・モデルによって機能が明細に指定されるカスタムＩＣまたはＡＳＩＣデバイスのための最良のアーキテクチャを自動的に決定する一例のシステムを示した説明図である。
【図２】図２は、アーキテクチャ・オプティマイザを用いた最適アーキテクチャの決定のための一例のシステムを示した説明図である。
【図３】図３は、新しいインストラクションを形成する一例のプロセスを示したフローチャートである。
【図４】図４は、アーキテクチャ・オプティマイザによって定義されたアーキテクチャを伴うカスタムＩＣを自動的に生成する一例のシステムを示した説明図である。
【発明を実施するための形態】
【００２０】
図１は、プログラム、コード、またはコンピュータ・モデルによって機能が明細に規定されるカスタムＩＣまたはＡＳＩＣデバイスのための最良のアーキテクチャを自動的に決定する一例のシステムを示している。入力（１）として提供される所定のコンピュータ可読コードまたはプログラムのためのアーキテクチャ定義を規定するにあたっては、種々の段階が関与する。１つの実施態様においてはプログラムがＣ言語で記述されるが、そのほかの言語、ＭＡＴＬＡＢ（マトラボ）、Ｃ＋＋、またはジャバ（Ｊａｖａ（登録商標））等も同様に使用可能である。プログラムのコンパイル、アッセンブル、およびリンクが行なわれる（３）。シミュレータまたは実際のコンピュータ上において実行可能コードを走らせる（５）。実行からのトレースがプロファイラに提供される（７）。プロファイラによって生成された情報は、特に、静的実行および動的実行についての呼び出しグラフ、コード実行プロファイル、レジスタ割り付け情報、および現在のアーキテクチャを含み、この情報は、アーキテクチャ・オプティマイザ（ＡＯ）に提供される（１０）。アーキテクチャ・オプティマイザの出力はアーキテクチャ仕様であり、特に、パイプライン情報、コンパイラ呼び出し規約、レジスタ・ファイル、キャッシュ編成、メモリ編成、およびインストラクション・セット・アーキテクチャ（ＩＳＡ）ならびにインストラクション・セット・エンコーディング情報を含んでいる。
【００２１】
ＡＯは、アプリケーションの要件に整合するチップ設計を生成する。サイクル精度のシステム・レベルのシミュレータから獲得したアルゴリズムの実行プロファイル、およびアルゴリズムの静的プロファイル、およびチップに組み込まれる多様なハードウエア・ブロックの特性決定に基づいて、ＡＯは、パフォーマンス、電力、およびコストに関するベンダの要件を満たす最適ハードウエア構成を決定する。アルゴリズムの分析に基づき、ＡＯは、パフォーマンス要件を満たすだけでなく、手元のアルゴリズムに対してハードウエアを最適化することになるチップ・アーキテクチャを提案する。ＡＯは、一連の反復ステップの中で所定のアルゴリズムのための最適ハードウエアに収斂する最適アーキテクチャに行き着く。
【００２２】
ＡＯは、ＡＳＩＰの多様な側面に対してそれが行なう一連の階層的決定に基づき、ベンダの評価基準に整合する所定のアルゴリズムのための最適アーキテクチャを決定する。したがって局所的最小アーキテクチャの達成において、いかなるポイントにおいてもそれがスタックすることはない。むしろＡＯは、包括的最小アーキテクチャを設計することが可能である。
【００２３】
アーキテクチャ最適化プロセスにおいて包括的最小を損なう結果を招く虞のある、局所的最小化におけるＡＯのスタックを回避するために、ＡＯは、階層的態様でアーキテクチャの最適化を実行する。階層的最適化プロセスの１つの実装においては、ＡＯがまず、ユーザによって与えられた制約を満たす最適な態様で、アプリケーション・カーネル（ループ）を最適にマップするために必要となる演算要素の数およびパイプライン・レイアウトを決定する。それが終わるとＡＯは、ユーザによって与えられた制約を満たすとともに、設計モデラ（ＤＭ）によって決定づけられるとおりのプロセス要件に整合する最適インストラクション・セットを選択する。次にＡＯは、レジスタ・ファイルおよびそれらの編成を決定し、その後にキャッシュの編成およびメモリの編成が続く。これらの階層的チェック・ポイントのそれぞれにおいて、ＡＯは、それぞれの構成要素の最適編成を決定し、設計がＤＭによって与えられたとおりのハードウエア・プロセス制約内であることを各ポイントにおいて確保する。
【００２４】
ＡＯは、所定のアルゴリズムの実行プロファイルに基づいて、アルゴリズムのセットを当て嵌める最適コンピュータ・アーキテクチャを自動的に生成することができる。図２は、アーキテクチャ・オプティマイザを用いた最適アーキテクチャの決定のための一例のシステムを示している。
【００２５】
図２において、入力としてユーザ・アプリケーション３０が提供される。それに加えて、初期アーキテクチャ記述３２が指定される。アーキテクチャ記述がツール・ジェネレータ３４によって処理され、それが、ターゲット依存度３７を用いてコンパイラ３６のための、ターゲット依存度３９を用いてアッセンブラ３８のための、ターゲット依存度４１を用いてリンカ４０のための、ターゲット依存度４３を用いてシミュレータ４２のための、およびターゲット依存度４５を用いてプロファイラ４４のためのターゲット依存情報を生成する。ターゲット依存情報に基づいて、ユーザ・アプリケーション３０のプロファイルが生成される。プロファイルは、クリティカル・ルーチンおよびそれらのカーネル（もっとも実行されるループ）を識別する。プロファイルはまた、メモリ・トラフィック・パターンも識別する。プロファイルは、アーキテクチャ・オプティマイザ４６に提供される。アーキテクチャ・オプティマイザ４６は、設計データ・モデラ４８からのユーザ入力も使用する。設計モデラ４８は、特定のハードウエアについてのタイミング、面積、電力、およびそのほかの関連する情報を提供し、その種の情報は、アーキテクチャ・オプティマイザ４６によるオンデマンドでのクエリが可能である。オプティマイザ４６の出力は、新しい最適化後のアーキテクチャ５０である。最適化後のアーキテクチャ５０は、その後、あらかじめ決定済みの最適化目標が達成されるまでアーキテクチャの反復的最適化のためにツール・ジェネレータ３４に提供される。
【００２６】
アーキテクチャ内の構成要素のそれぞれ、およびそれらの全体的な相互接続を最適化することによって新しいアーキテクチャが獲得される。所定のセットのアプリケーション／アルゴリズムによって、最適コンピュータ・システム・アーキテクチャは、パフォーマンス、コスト、および電力といった多様なファクタに基づいて自動的に決定することが可能である。最適アーキテクチャは、システム・レベルのアーキテクチャおよびプロセッサ・レベルのアーキテクチャを含むことができる。システム・レベルのアーキテクチャについて言えば、ＡＯが、たとえば、必要とされるメモリの量、サポートするメモリ帯域幅、ＤＭＡチャンネルの数、クロック、およびペリフェラルを自動的に決定することが可能である。プロセッサ・レベルのアーキテクチャについて言えば、ＡＯが、システムのためのパフォーマンス評価基準およびアルゴリズム内のパラレリズムに基づいて、演算要素のスカラ度の必要性ならびにその量；特定のアルゴリズムの効率的な実装に必要とされる演算要素のタイプ；アプリケーションの効率的な実装に必要とされる演算要素の数；段数、インストラクション発行レート、スカラ度という観点から見たパイプライン編成、加算器の数、ロード、ストア単位等という観点から見た演算要素の数、およびパイプライン構造内における演算要素の配置；ＡＬＵ（演算要素）の幅；レジスタ・ファイルの数および、レジスタの数、それらの幅、読み出しポートならびに書き込みポートの数という観点から見たそれらの構成；コンディション・コード・レジスタの必要性；インストラクション・キャッシュの必要性ならびにその量、および必要とされるデータ・キャッシュ、およびそれらの階層；インストラクション・キャッシュおよびデータ・キャッシュそれぞれのための別々のキャッシュ・メカニズム、ライン・サイズ、スピルフィル・アルゴリズムを自動的に決定することが可能である。
【００２７】
ＡＯは、オンデマンドの、および適時のプリフェッチを行なうユーザのアルゴリズムのコード内におけるインストラクションおよびデータのプリフェッチ・インストラクションを自動的に導入することができる。ＡＯは、それぞれのキャッシュの書き戻しポリシー；メモリに対する読み出しおよび書き込みポートの数；キャッシュとメモリの間におけるバスの幅；および全体的なコスト構造を低減しつつそれでも高いパフォーマンスを維持する、キャッシュのレベルおよび、共有または別々のインストラクションおよびデータのキャッシュ、または結合キャッシュ、または複数レベルへのそれの編成という観点から見たそれらの編成を決定することが可能である。
【００２８】
ＡＯは、メモリ・サイズ、メモリ・マップ・スキーム、アクセス・サイズ、読み出し／書き込みポートの数ならびにそれらの幅、および最大パフォーマンスを得るべくメモリに必要な分割の方法という観点から見てのメモリの階層を自動的に決定することが可能である。ＡＯは、マシンが効率的な形でアルゴリズムを実装するためのＩＳＡを自動的に決定すること、さらにはコード空間の量を最小にしつつそれでも高いパフォーマンスを達成するインストラクション・セットのための最適エンコーディングを自動的に決定することができる。またＡＯは、利用可能なレジスタの最適利用を確保する呼び出し規約を自動的に決定することもできる。
【００２９】
以上の動作は、反復的に、かつ階層的な態様で行なわれて、アプリケーション３０に最適化された、所定のタイミング、コスト、および電力の要件を満たすチップに行き着く最適な包括的システム・アーキテクチャを決定することが可能である。
【００３０】
次に、ＡＯによる特定のアーキテクチャのパイプラインおよびスカラ度特性の決定について説明する。Ｃまたはそのほかのコンパイル可能な任意の形式のコードまたはアルゴリズムが与えられると、そのコードを実行することができる。実行に際してはそれの実行プロファイルが獲得される。この実行プロファイルに基づいて、たとえば実行時間（実行プロファイルに基づいて）の８０％乃至９０％を占めるコードの領域を考慮に入れることによってクリティカルな演算領域／ブロックが決定される。これらの識別された演算ブロックを構成する演算がモデリングされ、見積もられたパフォーマンスおよび関係する演算内のパラレリズムに基づいて、並列実行パイプの数とともにパイプライン・レイアウトが、すべてデータ・モデラ（ＤＭ）との一定した協議の中で決定される。このモデリングは、スーパースカラまたはＶＬＩＷ実行エンジンのいずれかとして組織化される実行の並列パイプの数とともにプロセッサのクロック周波数を決定する。
【００３１】
ここでＩＳＡについて見てみると、実行パイプのモデリングが行なわれた後、ＡＯは、８０％乃至９０％の実行プロファイルに基づいて識別済みのクリティカル演算領域内のクリティカル・パスを減ずる。クリティカル・パスを減ずる新しいインストラクションが、再び、これらの新しいインストラクションを実行するハードウエア・ブロックのためのタイミング、面積、および電力についてのＤＭとの一定した協議の中で作成される。これらの演算ブロックは、全Ｃ関数およびその他もろもろの関数が含まれる。
【００３２】
次に、ＡＯによって決定される１つの例示的なコンパイラ呼び出し規約について説明する。プロセッサのための例示的なコンパイラ呼び出し規約は、
呼び出しスタックのレイアウト、
パラメータの引き渡し専用の所定数のレジスタ、
呼び出しにわたって生きる値を保持するために使用される特定数のレジスタ（被呼び出し側保存レジスタ）、
呼び出しにわたって生きない値を保持するために使用される特定数のレジスタ（呼び出し側保存レジスタ）
を含むことができる。
【００３３】
所定のセットのアプリケーションのための最適呼び出し規約を決定するために、ＡＯは、その決定の基礎を静的呼び出しグラフ、および動的呼び出しならびにそれの構成ルーチンの挙動に置く。ルーチンが呼び出される回数に基づき、特定の重みが与えられ、ルーチンに渡されるパラメータの数もまた同じ重みを獲得する。もっとも高いあらかじめ決定済みのパーセンテージの実行時間を占めたすべてのルーチンが、このアルゴリズムにおいては、パラメータ・レジスタの数を決定するものと見なされる。パラメータ・レジスタの数が決定されると、ＡＯは、続いて必要とされる呼び出し側保存レジスタおよび被呼び出し側保存レジスタの数を決定する。呼び出し側保存レジスタの数を低減する考慮事項は、クリティカル・パス内に存在するレジスタのスピル・アンド・フィル・コードが最小限となるようにクリティカル・ルーチン内の実行時間を低減することである。この数は、レジスタの割り付けおよび呼び出し側保存レジスタおよび被呼び出し側保存レジスタの数の決定、およびレジスタのスピル・アンド・フィル・コードの最小化をはじめ、関数のプロローグおよびエピローグそれぞれにおける被呼び出し側保存レジスタのセーブおよびリストアの低減を行なうことが可能な特別なレジスタ・アロケータが提供するデータに基づいてＡＯによって決定される。
【００３４】
次に、適切なレジスタおよびレジスタ・ファイルの決定について説明する。呼び出し規約が決定された後は、パラメータ・レジスタ、呼び出し側保存レジスタ、および被呼び出し側保存レジスタの数が既知になる。オリジナルのａｐｐのクリティカル領域に対する必要性に基づいて、レジスタ・ファイル（１つまたは複数）の構成が決定され、また個別の１ビット・フラグ・レジスタの必要性も決定されて、レジスタ・ファイルおよび個別のレジスタの編成および構成が完成される。ＡＯはまた、レジスタ・ファイルに作用するＩＳＡに基づいてレジスタの読み出しポート、書き込みポート、および所定のレジスタ・ファイルのための読み出し書き込みポートの数の決定も行なう。個別のレジスタの幅は、アプリケーションの要件に基づいて決定される。レジスタ・ファイル内の個別のレジスタの幅は、レジスタ・ファイル内のほかのレジスタの幅と異なることが可能である。
【００３５】
次にキャッシュの決定に移るが、キャッシュは、ユーザ・アプリケーションがデータへのアクセスに必要とするレートとより遅いメモリ・ブロックからデータの供給が可能なレートの間における不整合を橋渡しする高速データ・アクセス・メカニズムである。ユーザ・アプリケーションが必要とするデータ・アクセス・レート、およびメモリからデータ供給が可能な速度に基づいて、ＡＯは、キャッシュの必要性を決定する。ユーザ・アプリケーションがキャッシュを必要としていると決定された場合には、ＡＯが、単純なバッファからより洗練された階層的な多レベルのキャッシュ・メカニズムまでの範囲にわたることができるキャッシュの構成を決定する。いずれの場合においてもＡＯは、キャッシュ・ラインのサイズ、ラインの数、キャッシュの結合度、キャッシュ・ラインの置換ポリシー、プリフェッチ・ポリシー（存在する場合）、およびキャッシュの書き込みポリシーを、アルゴリズムのクリティカル領域内におけるパフォーマンスに再び基づいて決定する。また、キャッシュに対する読み出しおよび書き込みポートの数、およびキャッシュとメモリの間におけるバス幅の決定も行なう。さらに、別々のインストラクション・キャッシュ、データ・キャッシュ、または結合キャッシュの必要性が存在する場合には、時々に応じてそれらの決定も行なうことになる。
【００３６】
次にメモリ要件に移るが、ＡＯは、アプリケーションのニーズに基づいてメモリのサイズ、メモリのアクセス幅、およびメモリ・ブロックに対する読み出しおよび書き込みポートの数を決定する。ＡＯはまた、メモリ・ブロックに対するバス幅の決定も行なう。
【００３７】
次に、ＩＳＡの決定およびＡＯによるインストラクション・セットのエンコーディングを説明する。アルゴリズムの分析の間に、ＡＯは、手元のアプリケーションに関係するインストラクション・セットのアーキテクチャを決定する。関係する演算、およびアルゴリズムのための最適ＩＳＡを得るためにサポートが必要なアドレシング・モード、およびサポートされるべきイミディエト・オペランドのサイズ、およびプロセッサ上においてアプリケーションを実装するためにインストラクションがサポートを必要とするモードに基づいてＩＳＡを決定する。ＡＯは、使用されていないモードおよびユーザ・アプリケーションが使用することのないオペランド範囲を取り除く。これらの決定は、特に、アプリケーション・スイートの静的プロファイルをはじめ動的プロファイルに基づく。それに加えて、アーキテクチャ・オプティマイザは、コード・サイズを最小化するインストラクション・セットのための最適エンコーディングを生成する。考慮事項に応じて、固定インストラクション長、またはデュアル・インストラクション長、または可変インストラクション長のうち、コード・サイズを低く、パフォーマンスを高く保つ上で適切ないずれかに行き着くことになる。
【００３８】
図３は、新しいインストラクションを形成する一例のプロセスを示している。図３のプロセスは、ユーザ・コード内において実行されるクリティカル・ルーチンおよびカーネルまたはループを識別するプロファイラ・データを獲得する。プロセスは各カーネルについて次に示す内容を実行する。最初にプロセスは、データ・フロー・グラフおよびコントロール・フロー・グラフを構築する（６４）。次にプロセスは、可能であればコントロール依存度をデータ依存度に変換する（６６）。続いてプロセスは、データ・フロー・グラフの各基本ブロック内においてクリティカル・パスを識別する（６８）。その後プロセスは、インストラクション・セットに追加されることになる潜在的に新しいインストラクションを形成するクリティカル・パス内の２つまたはそれより多くの演算の結合を試みる（７０）。潜在的に新しいインストラクションは、その後、ハードウエア内において実装することが可能であり、ユーザ・コードに対して新しいアーキテクチャが最適化されることを可能にする。プロセスは、新しいインストラクションを実装する特定のハードウエア・ブロックについて、属性の中でも特にタイミング、面積、および電力に関するクエリを設計モデラ（ＤＭ）に対して行なう（７２）。ＤＭの応答から、プロセスは、タイミング、面積、電力、およびそのほかのファクタが地積およびパフォーマンス予算を満たすか否か、および節約が新しいインストラクションの作成に充分であるか否かをチェックする（７４）。否であればプロセスが動作７８にジャンプするが、そうでなければプロセスは、ハードウエアおよびエンコーディング・スキームとともに新しいインストラクションを作成する（７６）。次にプロセスは、追加のインストラクションが作成されるべきであるか否かをチェックする（７８）。そうであればプロセスが（７０）までループ・バックするが、否であればプロセスは、続いてすべてのクリティカル・ルーチンの検査／処理が完了したか否かをチェックする（８０）。否であればプロセスが（６４）までループ・バックするが、そうでなければプロセスが終了する。
【００３９】
１つの実装においては、プリ‐プロセッサを使用し、入力プログラムまたはユーザ・コードが、パーザによってその種のプログラムが解析される前にフォーマットされ、フォーマット・プロセスにおいては、プログラムの機能面が保存される。パーザは、最初に、基本アーキテクチャを使用してすべての情報を抽出し、データベースを作成する。その後システムは、プログラムの静的および動的プロファイルを収集する。パーザの出力からアーキテクチャ定義に必要とされるパラメータがパラメータ抽出によって抽出される。システムは、これらのパラメータおよびプログラムによって満たされるべきリアルタイムおよびハードウエア制約を入力として用いて、与えられたＣプログラムのための所定の段階においてもっとも適するアーキテクチャを反復的に決定する。このアーキテクチャが、Ｃプログラムおよびパラメータ抽出のパーズに使用される。新しいアーキテクチャが再び定義される。このループは、最良の時間、面積、および電力のパフォーマンスを与える最良のアーキテクチャが定義されるまで継続される。
【００４０】
リアルタイム・パフォーマンス制約が満たされた後は、そのほかのハードウエア制約が考察される。ハードウエア制約は、面積、電力、および何らかのそのほかのパラメータという観点から表現することが可能である。その後アルゴリズムは、これらの制約を満たすべく、アーキテクチャを微調整して冗長なパスおよびクリティカルでないセクションを減少させる。別のアルゴリズムが採用されて、利用可能なすべてのインストラクションをチェックし、これらのインストラクションによって提供される恩典を検証する。コスト関数が使用されてこのチェックが実行される。インストラクション・デコーディング時間が最小限のレベルまで低減されるように、リアルタイム・パフォーマンス制約に影響を及ぼさずに安全に取り除くことが可能なインストラクションがセットから取り除かれる。これらの制約が満たされることもあれば、満たされないこともある。これらは、与えられたアプリケーションにとって定義されたアーキテクチャが大きな過剰とならず、かつアーキテクチャの複雑性を低減する任意の範囲が調べられるように使用される。
【００４１】
図４は、カスタムＩＣを自動的に生成するシステムの一例を示している。図４のシステムは、選択された目標とするアプリケーションに対するカスタムハードウェアソリューションアーキテクチャを自動的に生成することをサポートする。目標とするアプリケーションの仕様は、一般に、Ｃ、ＭＡＴＬＡＢ（マトラボ）、ＳｙｓｔｅｍＣ（システムＣ）、フォートラン、エイダ等の高水準言語またはそのほかのいずれかの言語によるコンピュータ可読コードとして表現されたアルゴリズムを通じてなされる。仕様は、目標とするアプリケーションの記述を含み、またそれには、望ましいコスト、面積、電力、速度、パフォーマンス、およびそのほかのハードウエア・ソリューションの属性といった１つまたは複数の制約も含まれる。
【００４２】
図４においては、ＩＣカスタマがプロダクト仕様１０２を生成する。通常は、所望のプロダクトのすべての主要機能を取り込んだ初期プロダクト仕様が存在する。そのプロダクトから、アルゴリズムの専門家がそのプロダクトに必要とされるコンピュータ可読コードまたはアルゴリズムを識別する。それらのアルゴリズムのうちのいくつかは、サードパーティから、または標準開発委員会からのＩＰとして利用可能となることがある。それらのうちのいくつかは、製品開発の一部として開発されなければならない。この態様においては、さらにプロダクト仕様１０２が、とりわけＣプログラム等のプログラムまたはＭＡＴＬＡＢ（マトラボ）モデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム１０４で詳述される。プロダクト仕様１０２は、また、とりわけコスト、面積、電力、プロセス・タイプ、ライブラリ、およびメモリ・タイプ等の要件１０６も含んでいる。
【００４３】
コンピュータ可読コードまたはアルゴリズム１０４および要件１０６は、自動化されたＩＣジェネレータ１１０に提供される。コードまたはアルゴリズム１０４およびチップ設計に課せられた制約だけに基づいて、ＩＣジェネレータ１１０は、人間の掛かり合いを殆ど、またはまったく伴うことなく、ＧＤＳファイル１１２、ＩＣを実行させるファームウエア１１４、ソフトウエア開発キット（ＳＤＫ）１１６、および／またはテスト・スイート１１８を含む出力を自動的に生成する。ＧＤＳファイル１１２およびファームウエア１１４は、カスタム・チップ１２１の製造に使用される。
【００４４】
このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。このシステムは、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、アルゴリズムが、そのアプリケーションのために特に最適化されたプロセッサ上において実装されることが常に可能となる。システムは、この最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。この全体的なプロセスは、現在数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。要約して言えば、このシステムは、プロダクト開発のデジタル・チップ設計部分をブラック・ボックス化する。
【００４５】
１つの実施態様においては、このシステム・プロダクトが、次に示すものを入力として取ることが可能である。
Ｃ／ＭＡＴＬＡＢ（マトラボ）で定義されたコンピュータ可読コードまたはアルゴリズム、
必要とされる周辺機器、
面積目標、
電力目標、
マージン目標（将来的なファームウエア更新のためにどの程度のオーバーヘッドを組み込むべきか、またどの程度複雑性が増加するか）、
プロセスの選択肢、
標準セル・ライブラリの選択肢、
テスト可能性スキャン
【００４６】
システムの出力は、関連付けされるファームウエアすべてを伴ったデジタル・ハード・マクロとすることができる。このデジタル・ハード・マクロのために最適化されたソフトウエア開発キット（ＳＤＫ）もまた自動的に生成されて、ファームウエアに対する将来的なアップグレードがプロセッサの交換を強いることなく実装されるようにすることが可能である。
【００４７】
このシステムは、選択された目標とするアプリケーションに対して完全かつ最適なハードウエア・ソリューションを自動的に生成する。共通の目標とするアプリケーションは埋め込みアプリケーション空間内にあるが、それらは、必ずしもそれに限定されない。
【００４８】
次に、例として、自動化されたチップ設計システムをサポートするコンピュータのブロック図について考察する。コンピュータは、好ましくは、プロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）、プログラム・メモリ（好ましくは、フラッシュＲＯＭ等の書き込み可能な読み出し専用メモリ（ＲＯＭ））、および入力／出力（Ｉ／Ｏ）コントローラをＣＰＵバスによって結合された形で含んでいる。このコンピュータは、ハードディスクおよびＣＰＵバスに結合されるハード・ドライブ・コントローラをオプションとして含むことができる。ハードディスクは、本発明等のアプリケーション・プログラムおよびデータを記憶するために使用することができる。それに代えて、アプリケーション・プログラムをＲＡＭまたはＲＯＭ内に記憶することができる。Ｉ／Ｏコントローラは、Ｉ／Ｏバスを経由してＩ／Ｏインターフェースに結合される。Ｉ／Ｏインターフェースは、シリアル・リンク、ローカル・エリア・ネットワーク、無線リンク、およびパラレル・リンク等の通信リンクを介してアナログまたはデジタル形式でデータの受信および送信を行なう。オプションとして、表示器、キーボード、およびポインティング・デバイス（マウス）がＩ／Ｏバスに接続されることもある。それに代えて、Ｉ／Ｏインターフェース、表示器、キーボード、およびポインティング・デバイスのために別々の接続（別々のバス）が使用されることもある。プログラマブル処理システムは、あらかじめプログラムすること、または別のソース（たとえば、フレキシブルディスク、ＣＤ‐ＲＯＭ、または別のコンピュータ）からプログラムをダウンロードすることによってそれをプログラムすること（および再プログラムすること）ができる。
【００４９】
各コンピュータ・プログラムは、目に見える形として、コンピュータによってストレージ媒体またはデバイスが読み出されたときに、ここで説明している手順を実行するべくそのコンピュータの構成および動作のコントロールを行なうために、汎用または専用プログラマブル・コンピュータによって読み出されることが可能なマシン可読ストレージ媒体またはデバイス（たとえば、プログラム・メモリまたは磁気ディスク）内に記憶される。また本発明のシステムは、コンピュータ・プログラムを用いて構成されるコンピュータ可読ストレージ媒体内において具体化されると考えてもよく、それにおいてストレージ媒体は、ここで述べている機能を実行するべく特定の、あらかじめ定義済みの態様でコンピュータを動作させるように構成される。
【００５０】
以上、ここでは、特許法に従うため、および当業者に、新しい原理の適用および必要とされる専用の構成要素の組み立ておよび使用に必要となる情報を提供するために、相当に詳細に本発明を説明してきた。しかしながら、本発明が明確に異なる装置およびデバイスによって実行可能であること、および装置の詳細および動作手順の両方に対する多様な修正が本発明自体の範囲からの逸脱なしに達成可能であることは理解されるものとする。
【図１】
0005717015.tif 000002
【図２】
0005717015.tif 000003
【図３】
0005717015.tif 000004
【図４】
0005717015.tif 000005