(57)【要約】【課題】  ＣＰＵによるフォールトトレラントデジタル処理を提供することができるようにシステムおよび方法を改良する。【解決手段】  本発明にかかる方法は、同じ種類の複数の機能ユニットを有する、対象となるマイクロプロセッサ上で実行されるプログラムをコンパイルする方法に関する。本方法は、冗長なオペレーションがスケジューリングされない場合にはサイクル中にアイドルとなる機能ユニットの１つに冗長なオペレーションを好機をねらってスケジューリングすることを含む。【選択図】  図５
2005085275.tif 000002
【特許請求の範囲】
【請求項１】
同じ種類の複数の機能ユニットを有する対象となるマイクロプロセッサ上で実行されるプログラムをコンパイルする方法であって、
冗長なオペレーションがスケジューリングされないときには、サイクル中にアイドルとなる前記機能ユニットの１つに冗長なオペレーションを好機をねらってスケジューリングすること
を含む方法。
【請求項２】
前記冗長なオペレーションの結果の比較をスケジューリングすること
をさらに含む請求項１に記載の方法。
【請求項３】
前記比較がエラーを示すときに、前記対象となるマイクロプロセッサのフラグのセットを行わせること
をさらに含む請求項２に記載の方法。
【請求項４】
前記好機をねらったスケジューリングの積極性について、ユーザ選択可能なレベルを設定すること
をさらに含む請求項２に記載の方法。
【請求項５】
対象となるマイクロプロセッサ上で実行されるプログラムをコンパイルする方法であって、
第１の機能ユニットおよび第２の機能ユニットが、同じ種類の機能ユニットを備え、あるオペレーションが前記第１の機能ユニットに利用可能であり、ノーオペレーションが前記第２の機能ユニットに利用可能であるサイクルを特定することと、
前記サイクル中に、前記第１の機能ユニットおよび前記第２の機能ユニットの双方によって前記オペレーションが実行されるようにスケジューリングすることと、
次のサイクル中に、前記第１の機能ユニットおよび前記第２の機能ユニットによって得られた結果の比較をスケジューリングすることと
を含む方法。
【請求項６】
前記第１の機能ユニットおよび前記第２の機能ユニットは、
前記対象となるマイクロプロセッサの第１の浮動小数点演算ユニットと
第２の浮動小数点演算ユニットと
を備える
請求項５に記載の方法。
【請求項７】
前記第１の機能ユニットおよび前記第２の機能ユニットは、
前記対象となるマイクロプロセッサの第１の算術論理演算ユニットと
第２の算術論理演算ユニットと
を備える
請求項５に記載の方法。
【請求項８】
前記実行の結果は、前記マイクロプロセッサ内のレジスタに記憶され、
前記結果の比較は、それらのレジスタの内容を比較することである
請求項５に記載の方法。
【請求項９】
前記対象となるマイクロプロセッサは、
前記同じ種類の少なくとも３つの機能ユニット
を含む
請求項５に記載の方法。
【請求項１０】
前記サイクル中に、第２のオペレーションが、前記同じ種類の第３の機能ユニットに利用可能であり、ノーオペレーションが、前記同じ種類の第４の機能ユニットに利用可能であることを特定することと、
前記サイクル中に、前記第３の機能ユニットおよび前記第４の機能ユニットの双方によって前記第２のオペレーションが実行されるようにスケジューリングすることと、
次のサイクル中に、前記第３の機能ユニットおよび前記第４の機能ユニットによって得られた結果の比較をスケジューリングすることと
を含む請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、コンピュータシステムに関する。より詳細には、本発明は、コンパイラに関する。
【背景技術】
【０００２】
中央処理装置（ＣＰＵ）によるデジタル処理にフォールトトレランスを提供する従来の１つの解は、コンピュータシステムが複数のＣＰＵを有することである。
例えば、複数のＣＰＵを完全なロックステップで動作させることによって、それら複数のＣＰＵの計算に、フォールトトレランスレベルを達成することができる、このような解は、不利なことに、追加のシステムハードウェアおよびサポートする基盤装置が必要となる点において高価である。
【０００３】
中央処理装置（ＣＰＵ）によるデジタル処理にフォールトトレランスを提供する従来の別の解は、ソフトウェア検証を使用するものである。
ソフトウェア検証は、同じコンピュータまたは別のコンピュータのいずれかでプログラムを複数回実行することによって行うことができる。
しかしながら、この解は、不都合なことに、ランタイムを長く必要としたり、複数のコンピュータを必要としたりすることがある点において高価である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した従来の解は、コストおよび／またはシステム性能の点で高価である。
したがって、ＣＰＵによるフォールトトレラントデジタル処理を提供するシステムおよび方法の改良が非常に望まれている。
【課題を解決するための手段】
【０００５】
本発明の一実施の形態は、同じ種類の複数の機能ユニットを有する、対象となるマイクロプロセッサ上で実行されるプログラムをコンパイルする方法に関する。
本方法は、冗長なオペレーションがスケジューリングされないときにはサイクル中にアイドルとなる機能ユニットの１つに冗長なオペレーションを好機をねらってスケジューリングすることを含む。
【０００６】
別の実施の形態によれば、本コンパイル方法は、あるオペレーションが第１の機能ユニットに利用可能であり、かつ、ノーオペレーションが同じ種類の第２の機能ユニットに利用可能であるサイクルを特定することを含む。
このオペレーションは、このサイクル中に、第１の機能ユニットおよび第２の機能ユニットの双方によって実行されるようにスケジューリングされ、次のオペレーションは、第１の機能ユニットおよび第２の機能ユニットによって得られた結果を比較するようにスケジューリングされる。
【０００７】
本発明の別の実施の形態は、複数の同等な機能ユニットを有する、対象となるマイクロプロセッサのプログラムコンパイラに関する。
このコンパイラは、スケジューラを有するコードジェネレータを含む。
このスケジューラは、冗長なオペレーションがスケジューリングされないときにはサイクル中にアイドルとなる機能ユニットの１つに冗長なオペレーションを好機をねらってスケジューリングする。
【０００８】
本発明の別の実施の形態は、同じ種類の複数の機能ユニットを有する、対象となるマイクロプロセッサ上で実行されるコンピュータ可読プログラム製品に関する。
このプログラム製品の実行可能コードは、冗長なオペレーションがスケジューリングされないときにはサイクル中にアイドルとなる機能ユニットの１つにスケジューリングされる冗長なオペレーションを含み、また、次にスケジューリングされるものとして、障害チェック目的で行われる、冗長なオペレーションの結果の比較も含む。
【発明を実施するための最良の形態】
【０００９】
上述したように、ＣＰＵによるフォールトトレラントデジタル処理の従来のシステムおよび方法は、さまざまな不都合を有する。
本発明は、ＣＰＵによって行われる計算の信頼性を改善するシステムおよび方法に関する。
【００１０】
加工寸法がますます小さくなり、かつ、電圧レベルが低くなることで、集積回路上にますます多くのトランジスタが配置されるにつれて、オンチップのフォールトトレランス機能の必要性が増大している。
通常、誤りの検出および訂正を行うには、誤り訂正符号化を使用することができる。
残念なことに、算術論理演算ユニット（ＡＬＵ）や浮動小数点演算ユニット（ＦＰＵ）などのＣＰＵの演算実行ユニットに誤り訂正符号化を十分に適用することは難しい。
【００１１】
本発明が使用される環境は、一般的な分散コンピューティングシステムを包含する。
この分散コンピューティングシステムでは、汎用コンピュータ、ワークステーション、またはパーソナルコンピュータが、クライアントサーバ配置で、さまざまな種類の通信リンクを介して接続されており、多くはオブジェクトの形のプログラムおよびデータが、システムのさまざまなメンバーによって利用可能にされ、システムの他のメンバーによって実行され、アクセスされる。
汎用コンピュータの要素のいくつかを図１に示す。
図１では、コンピューティングシステム１が示されている。
コンピューティングシステム１は、入出力（「Ｉ／Ｏ」）部２、マイクロプロセッサまたは中央処理装置（「ＣＰＵ」）３、およびメモリ部４を有する。
Ｉ／Ｏ部２は、キーボードおよび／またはそれ以外の入力デバイス５、表示ユニットおよび／またはそれ以外の出力デバイス６、１つまたは複数の固定記憶ユニット９および／または着脱可能記憶ユニット７に接続されている。
着脱可能記憶ユニット７は、通常、プログラム１０およびそれ以外のデータを含んだデータ記憶媒体８を読み出すことができる。
【００１２】
図２は、図１の例示のコンピュータシステムのソフトウェアエレメントの例を示している。
アプリケーションプログラム２６が示されている。
このようなアプリケーション２６は、本発明の教示と一体となったコンパイラ３４を使用してコンパイルすることができる。
コンパイルされたアプリケーションプログラム２６は、実行中にランタイムライブラリ３４にアクセスしてサービスを得る。
ランタイムライブラリ３４は、オペレーティングシステム３２にアクセスしてシステムサービスを得る。
また、コンパイラ３４も、アプリケーションプログラム２６のコンパイル中に、オペレーティングシステム３２にアクセスしてシステムサービスを得る。
【００１３】
本発明の教示を組み込んだコンパイラ３４は、対象となるマイクロプロセッサシステム上で動作するネイティブコンパイラまたは別のマイクロプロセッサシステム上で動作するクロスコンパイラのいずれかを備えることができる。
本発明の一実施の形態によれば、このコンパイラの対象となるマイクロプロセッサは、同じ種類の複数の機能ユニットを有する。
例えば、マイクロプロセッサは、スーパースカラーアーキテクチャを有するマイクロプロセッサを備えることができる。
【００１４】
次に、図３ａおよび図３ｂを参照して、これらのブロック図は、コンパイラの一実施の形態を示している。
図３ａに図示するように、この実施の形態では、コンパイラ３４は、パーサ３８、中間表現ビルダ４０、および本発明の教示と一体となったコードジェネレータ４２を備える。
パーサ３８は、コンパイルされるプログラムのソースコードを入力として受け取る。
これに応じて、パーサ３８は、ソース言語の命令文を構文解析して、トークン化された命令文を出力する。
中間表現ビルダ４０は、トークン化された命令文を入力として受け取る。
これに応じて、中間表現ビルダ４０は、トークン化された命令文の中間表現を構築する。
コードジェネレータ４２は、中間表現を入力として受け取る。
これに応じて、コードジェネレータ４２は、プログラムのオブジェクトコードを生成する。
コンパイラ３４は、他の実施の形態に従い異なって構成することもできる。
【００１５】
図３ｂに示すように、この実施の形態では、コードジェネレータ４２は、トランスレータ４４、オプティマイザ４６、レジスタアロケータ４８、ループ展開器（loop unroller）５０、スケジューラ５２、およびアセンブリコードジェネレータ５４を含むように構成される。
トランスレータ４４は、中間表現を入力として受け取る。
これに応じて、トランスレータ４４は、ループテーブルの形成、命令ブロックの配列、データフローグラフの構築などを行う。
オプティマイザ４６は、ループテーブルおよびデータフローグラフを含めて、中間表現および関連情報を入力として受け取る。
これに応じて、オプティマイザ４６は、さまざまな最適化を行う。
レジスタアロケータ４８は、最適化された中間表現および関連情報を入力として受け取る。
これに応じて、レジスタアロケータ４８は、対象となるマイクロプロセッサのレジスタを、生成中の命令に割り当てる。
ループ展開器５０は、割り当てられたレジスタを有する最適化された中間表現および関連情報を入力として受け取る。
これに応じて、ループ展開器５０は、生成中の命令を再構成し、生成中の命令内のループを展開して、対象となるマイクロプロセッサで利用可能な資源と整合した最適な時間量を得る。
スケジューラ５２は、再構成された中間表現および関連情報を入力として受け取る。
これに応じて、スケジューラ５２は、生成される命令をさらに再構成して、並列性を得る。
最後に、最適化され、レジスタ割り当てを受け、かつ、再構成された中間表現および関連情報を、アセンブリコードジェネレータ５４が入力として受け取る。
これに応じて、アセンブリコードジェネレータ５４は、コンパイル中のプログラムのオブジェクトコードを生成する。
コードジェネレータ４２は、他の実施の形態に従い異なって構成することもできる。
【００１６】
上述した実施の形態は、生成中の命令内のループの展開および命令のスケジューリングを行って並列性を得る前にレジスタを割り当てるものであり、理解を容易にするために、この上述した実施の形態でコードジェネレータ４２を説明しているが、以下の説明に基づくと、本発明は、異なるレジスタ割り当て、ループ展開、およびスケジューリング順序を有する他のレジスタ割り当て、ループ展開、およびスケジューリングの手法でも実践できることが理解されよう。
【００１７】
図４は、本発明の一実施の形態によるコンパイラによる命令のスケジューリングに関係したステップを示すフローチャートである。
図４の方法は、同じ種類の複数の機能ユニットを有するマイクロプロセッサまたは中央処理装置（ＣＰＵ）において利用することができる。
例えば、ＣＰＵは、複数の算術論理演算ユニット（ＡＬＵ）または複数の浮動小数点演算ユニット（ＦＰＵ）を有することができる。
【００１８】
従来、これらのユニットのすべてをできるだけビジーに維持することがコンパイラスケジューラの機能である。
それにもかかわらず、あるユニットがアイドルになるか、または、ｎｏ−ｏｐ（ノーオペレーション）を実行する周期が存在する。
本発明の一実施の形態によれば、図４の方法６０により、機能ユニットがアイドルとなるこのようなサイクルが特定される（６２）。
コンパイラは、ユニットをアイドルにする代わりに、そのアイドルなユニットに冗長なオペレーションをスケジューリングして（６４）、その機能の、好機をねらった障害チェックを提供する。
２つ以上の機能ユニットにおけるオペレーションの実行結果の比較が、障害検出の目的でスケジューリングされる（６６）。
比較（６６）の結果が異なると、エラーが発生しており、ＣＰＵはエラーのフラグを立てることができる。
【００１９】
例えば、２つの浮動小数点演算ユニットＦＰ＿ＡおよびＦＰ＿Ｂを有するＣＰＵについて考察する。
ほとんど常に、双方のユニットをスケジューリングして、独立したデータにオペレーションを行うことができる。
しかしながら、コンパイラは、所与のサイクルの間、ＦＰ＿Ａのオペレーションをスケジューリングできるが、そのサイクルの間、ＦＰ＿Ｂのスケジューリングに利用可能な別のオペレーションが存在しないことがある。
本発明の一実施の形態によれば、コンパイラは、この機会を特定し（６２）、ＦＰ＿ＡおよびＦＰ＿Ｂの双方に同じオペレーションをスケジューリングする（６４）。
さらに、コンパイラは、その結果の比較オペレーションをスケジューリングする（６６）。
この例は、浮動小数点演算ユニットを引用しているが、この原理は、コンパイラによってスケジューリングされる複数の複製が存在するあらゆるプロセッサ資源に適用可能である。
【００２０】
比較オペレーションは、性能に多少の影響を与えることがある。
一実施の形態によれば、これを改善するために、この目的でアイドルサイクルをどのような頻度で利用するかに関する積極性について、ユーザ選択可能なレベルを有するように、コンパイラを構成することができる。
一方で、コンパイラを非常に積極的になるように設定し、この障害チェックを行うためにアイドルサイクルを常に利用するように設定することができる。
他方で、アイドルサイクルのいずれも障害チェック用に使用しないようにコンパイラを設定して、性能が影響を受けないようにすることもできる。
【００２１】
さらに、エラーのフラグが立てられると、所望のフォールトトレランスおよび性能のレベルに応じて、エラーを取り扱うさまざまな方法がある。
一実施の形態によれば、どの機能ユニットがエラーを有するかがまだ判明していないので、可能な動作は、ＣＰＵを停止して、その問題についてユーザに警告することである。
その実施の形態では、さらに診断をオフラインで実行することができる。
他の実施の形態では、より高機能なアルゴリズムを利用することができる。
【００２２】
図５は、一例における複数の算術論理演算ユニットを有するマイクロプロセッサの選択されたコンポーネントを示すブロック図である。
もちろん、実際のマイクロプロセッサは、図示しないいくつかの他のコンポーネントを有する。
説明向けに図示したコンポーネントは、命令フェッチユニット７２、命令キャッシュメモリ７４、命令デコード／発行回路７６、複数の算術論理演算ユニット（ＡＬＵ）７８、およびレジスタ８０を含む。
図５のこれらのコンポーネントの構成は、単なる一例の構成にすぎない。
図示した構成は、２つのＡＬＵ７８を有するが、本発明の実施の形態は、３つ以上のＡＬＵを有するマイクロプロセッサにおいても実施することができる。
【００２３】
命令キャッシュ７４は、高い頻度で実行される命令を記憶する。
同様に、データキャッシュ（図示せず）も、命令を実行するために高い頻度でアクセスされるデータを記憶することができる。
いくつかの実施の形態では、これらの命令キャッシュおよびデータキャッシュを１つのメモリに結合することができる。
また、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ディスクドライブ、および他の形式のマスストレージへの通常のアクセス（図示せず）も行われる。
【００２４】
命令およびメモリのアドレスは、命令フェッチユニット７２の回路によって生成することができる。
例えば、フェッチユニット７２は、命令キャッシュ７４内のアドレスに記憶されている連続した命令を連続的に読み出すために、命令キャッシュ７４内の開始アドレスから後続のアドレスにわたって連続的にインクリメントするプログラムカウンタを含むように構成することができる。
命令デコード／発行回路７６は、キャッシュ７４から命令を受け取り、それらの命令をデコードし、かつ／または、ＡＬＵ７８に発行して実行させる。
例えば、２つの個別の命令をデコードして、２つのＡＬＵ７８Ａおよび７８Ｂにそれぞれ１つずつ発行し、特定のサイクルで実行させることができる。
これらのＡＬＵ７８は、マイクロプロセッサの特定のレジスタ８０に実行結果を出力するように構成することができる。
この命令実行用のオペランドを供給する回路など、他の回路は図示していない。
【００２５】
本発明の一実施の形態によれば、図５の回路を利用して、２つのＡＬＵ７８Ａおよび７８Ｂが１つの命令のみを実行する必要がある場合に与えられる機会、例えばサイクルを活用することができる。
その状況では、コンパイラは、この機会を特定し（６２）、その命令を重複して実行するように双方のＡＬＵ７８にスケジューリングし（６４）、レジスタ８０に記憶された実行結果を、障害チェック目的で次に比較するようにスケジューリングする（６６）ことができる。
【００２６】
図６は、一例における複数の浮動小数点演算ユニットを有するマイクロプロセッサの選択されたコンポーネントを示すブロック図である。
もちろん、実際のマイクロプロセッサは、図示しないいくつかの他のコンポーネントを有する。
説明向けに図示したコンポーネントは、命令フェッチユニット７２、命令キャッシュメモリ７４、命令デコード／発行回路７６、複数の浮動小数点演算ユニット（ＦＰＵ）９２、および浮動小数点レジスタファイル９４を含む。
図６のこれらのコンポーネントの構成は、単なる一例の構成にすぎない。
図示した構成は、２つのＦＰＵ９２を有するが、本発明の実施の形態は、３つ以上のＦＰＵを有するマイクロプロセッサにおいても実施することができる。
【００２７】
フェッチユニット７２、命令キャッシュ７４、およびデコード／発行ユニット７６は、図５について上述したものと同じまたは類似した機能を有する。
この例では、命令デコード／発行回路７６は、キャッシュ７４から浮動小数点型命令を受け取り、それらの命令をデコードし、かつ／または、ＦＰＵ９２に発行して実行させる。
例えば、２つの個別の浮動小数点命令をデコードして、２つのＦＰＵ９２Ａおよび９２Ｂにそれぞれ１つずつ発行し、特定のサイクルで実行させることができる。
これらのＦＰＵ９２は、マイクロプロセッサの特定の浮動小数点レジスタ９４に実行結果を出力するように構成することができる。
この浮動小数点オペレーション実行用のオペランドを供給する回路など、他の回路は図示していない。
【００２８】
本発明の一実施の形態によれば、図６の回路を利用して、２つのＦＰＵ９２Ａおよび９２Ｂが１つの浮動小数点命令のみを実行する必要がある場合に与えられる機会、例えばサイクルを活用することができる。
その状況では、コンパイラは、この機会を特定し（６２）、その命令を重複して実行するように双方のＦＰＵ９２にスケジューリングし（６４）、レジスタ９４に記憶された実行結果を、障害チェック目的で次に比較するようにスケジューリングする（６６）ことができる。
【００２９】
図５および図６は、複数のＡＬＵおよびＦＰＵを有するマイクロプロセッサ回路を説明しているが、本発明の実施の形態は、他の種類の機能ユニットも同様に利用することができる。
これらの機能ユニットも、アイドルなサイクルを好機をねらって利用し、障害チェックを実行するように、コンパイラによってスケジューリングできる資源を備えることができる。
さらに、これらの同じ種類の複数の機能ユニットは、必ずしも、全く同一に構成される必要はないが、それぞれ、上述した障害チェック目的で少なくとも１つの同じ命令を実行できるように構成されるべきである。
【００３０】
さらに、上記例は、同じ種類の２つの機能ユニットを有する構成を論考しているが、本発明の他の実施の形態は、対象となるマイクロプロセッサが同じ種類の３つ以上の機能ユニットを有するものを利用することもできる。
例えば、同じ種類の４つの機能ユニットが存在し、あるサイクル中に、これら４つのユニットに３つの命令のみが発行された場合に、それ以外のアイドルなユニットは、障害チェック目的で３つの命令のうちの１つを実行するように好機をねらってスケジューリングすることができる。
同様に、あるサイクル中に、４つのユニットに２つの命令のみが発行された場合には、２つの命令のそれぞれを、障害チェック目的でそれらのユニットのうちの２つに発行するように好機をねらってスケジューリングすることができる。
【００３１】
実行ユニットは、経時的に「故障しやすくなる」傾向を有するので、本発明の一実施の形態は、潜在的なＣＰＵの欠陥が、事前に予測可能になる傾向を有するという事実を利用する。
アイドルなまたはｎｏ−ｏｐのサイクルを知的なコンパイラスケジューリングを通じて利用し、それによって、機能試験が行われるので、ＣＰＵのフォールトトレランスレベルが、性能にほとんど影響を与えることなく達成される。
【００３２】
本発明の一実施の形態は、余分なハードウェア回路をＣＰＵ内に設計する必要なく、ＣＰＵのフォールトトレランスレベルを達成する。
その代わり、フォールトトレランスは、コンパイラにソフトウェアの変更を加えることによって提供される。
【００３３】
本発明の一実施の形態による障害チェックを提供するコンパイラは、特定のＣＰＵアーキテクチャに限定されるものではない。
任意の適当なＣＰＵが、本発明の一実施の形態に従ってスケジューリング可能な同じ種類の複数の機能ユニットを有する場合に、そのＣＰＵのコンパイラをそのように変更することができる。
【００３４】
本発明の一実施の形態は、フォールトトレラント機能をよりローエンドなシステムで利用可能にする。
従来、このようなローエンドなシステムでは、それらのシステムのコストセンシティブな性質のため、このようなフォールトトレラント機能を利用可能にできないことがあった。
【００３５】
上記説明では、本発明の実施の形態の十分な理解を提供するために、いくつかの具体的な細部を与えている。
しかしながら、本発明の例示の実施の形態の上記説明は、網羅することを目的とするものでもなく、また、本発明を、開示した正確な形に限定することを目的とするものでもない。
具体的な細部の１つまたは複数のものがなくても本発明を実践でき、または、他の方法、コンポーネントなどで本発明を実践できることが、当業者には理解されよう。
本発明の態様を分かりにくくことを回避するために、それ以外の例では、既知の構造またはオペレーションを図示していないし、詳細に説明していない。
本発明の具体的な実施の形態および例は、本明細書では例示の目的で説明されており、さまざまな等価な変更が、本発明の範囲内で可能であることが、当業者に理解されよう。
【００３６】
上記詳細な説明に鑑みると、これらの変更を本発明に行うことができる。
特許請求項に使用される用語は、明細書および特許請求項に開示した具体的な実施の形態に本発明を限定するように解釈されるべきではない。
その代わりに、本発明の範囲は、特許請求項によって画定されるべきものであり、特許請求項は、特許請求項の解釈の確立した原則に従って解釈されるべきである。
【図面の簡単な説明】
【００３７】
【図１】説明を具体化できるＣＰＵおよび従来のメモリを含んだコンピュータの一部を示す図である。
【図２】図１の例示のコンピュータシステムのソフトウェアエレメントの例を示す図である。
【図３ａ】一例におけるコンパイラのコンポーネントを示すブロック図である。
【図３ｂ】一例におけるコードジェネレータのコンポーネントを示すブロック図である。
【図４】本発明の一実施の形態によるコンパイラによる命令のスケジューリングに関係したステップを示すフローチャートである。
【図５】一例における複数の算術論理演算ユニットを有するマイクロプロセッサの選択されたコンポーネントを示すブロック図である。
【図６】一例における複数の浮動小数点演算ユニットを有するマイクロプロセッサの選択されたコンポーネントを示すブロック図である。
【符号の説明】
【００３８】
４・・・メモリ、
２６・・・アプリケーション、
３４・・・コンパイラおよびランタイムライブラリ、
３２・・・オペレーティングシステム、
３８・・・パーサ、
４０・・・中間表現ビルダ、
４２・・・コードジェネレータ、
４４・・・トランスレータ、
４６・・・オプティマイザ、
４８・・・レジスタアロケータ、
５０・・・ループ展開器、
５２・・・スケジューラ、
５４・・・アセンブリジェネレータ、
７２・・・命令フェッチユニット、
７４・・・命令キャッシュメモリ、
７６・・・命令デコード／発行、
８０・・・レジスタ、
７２・・・命令フェッチユニット、
７４・・・命令キャッシュメモリ、
７６・・・命令デコード／発行、
９４・・・浮動小数点レジスタファイル、
【図１】
2005085275.tif 000003
【図２】
2005085275.tif 000004
【図３ａ】
2005085275.tif 000005
【図３ｂ】
2005085275.tif 000006
【図４】
2005085275.tif 000007
【図５】
2005085275.tif 000008
【図６】
2005085275.tif 000009