(57)【要約】【課題】新しい半導体製造プロセスにおいて、動作周波数を増加することなく、したがって消費電力を増加することなく演算処理能力を改善する。【解決手段】命令前置実行回路は、命令セットの命令を、後続する処理のために準備する。命令実行回路１０８は、複数の実行ステージＳＴＡＧＥを含み、パイプライン方式によって、実行ステージごとに１クロックサイクルで命令を実行する。実行ステージ１０８は、命令に応じてデータを処理するデジタル論理回路と、次段の実行ステージに対して供給するため、各クロックサイクルごとに、データをラッチするラッチポイント回路と、を含む。命令実行回路１０８の実行ステージの個数を、本システム上で実行されるソフトウェアプログラムから出力されるＡＰＩコードに応じて変化させる。【選択図】図４
2006260556.tif 000002
【特許請求の範囲】
【請求項１】
命令セットの命令を、後続する処理のために準備する命令前置実行回路と、
複数の実行ステージを含み、パイプライン方式によって、実行ステージごとに１クロックサイクルで前記命令を実行する命令実行回路と、
を備え、
前記実行ステージそれぞれは、
前記命令に応じてデータを処理するデジタル論理回路と、
次段の実行ステージに対して供給するため、各クロックサイクルごとに、前記データをラッチするラッチポイント回路と、を含み、
前記命令実行回路の前記実行ステージの個数は、本システム上で実行されるソフトウェアプログラムから出力されるアプリケーションプログラミングインターフェースコードに応じて可変であることを特徴とする演算処理システム。
【請求項２】
請求項１に記載の演算処理システムであって、
各ラッチポイント回路は、バッファあるいはラッチ回路のいずれかとして動作することを特徴とする演算処理システム。
【請求項３】
請求項２に記載の演算処理システムであって、
前記ラッチポイント回路は、前記アプリケーションプログラミングインターフェースコードに応じて、バッファあるいはラッチ回路のいずれかとして動作することを特徴とする演算処理システム。
【請求項４】
請求項３に記載の演算処理システムであって、
前記命令実行回路の実行ステージの個数は、前記アプリケーションインターフェースコードと同一のコードにより制御可能であることを特徴とする演算処理システム。
【請求項５】
請求項２から４のいずれかに記載の演算処理システムであって、
前記命令実行回路の実行ステージの個数は、バッファとして動作する前記ラッチポイント回路の個数と、ラッチ回路として動作する前記ラッチポイント回路の個数を制御することにより制御可能であることを特徴とする演算処理システム。
【請求項６】
請求項２から５のいずれかに記載の演算処理システムであって、さらに、
有効、無効が切り替え可能な複数のクロック分配ノードを備えることを特徴とする演算処理システム。
【請求項７】
請求項６に記載の演算処理システムであって、
バッファとして動作する前記ラッチポイント回路に対応付けられた前記クロック分配ノードは、無効化されることを特徴とする演算処理システム。
【請求項８】
請求項６または７に記載の演算処理システムであって、
前記クロック分配ノードは、前記アプリケーションプログラミングインターフェースコードによって有効化、あるいは無効化されることを特徴とする演算処理システム。
【請求項９】
請求項１に記載の演算処理システムであって、
前記ラッチポイント回路は、一連のラッチポイント回路の間の前記デジタル論理回路を、１クロックサイクル以内で伝搬するよう十分なピッチで配置されたことを特徴とする演算処理システム。
【請求項１０】
請求項１に記載の演算処理システムであって、
本演算処理システムを、前記ラッチポイント回路の最小ピッチを決定づける伝搬マトリクスにしたがって製造したことを特徴とする演算処理システム。
【請求項１１】
請求項１０に記載の演算処理システムであって、
前記ラッチポイント回路は、前記最小ピッチより短いピッチで配置されることを特徴とする演算処理システム。
【請求項１２】
命令セットの命令を、後続する処理のために準備する命令前置実行回路と、
複数の実行ステージを含み、パイプライン方式によって、実行ステージごとに１クロックサイクルで前記命令を実行する命令実行回路と、
を備え、
前記実行ステージは、
前記命令に応じてデータを処理するデジタル論理回路と、
次段の実行ステージに対して供給するため、各クロックサイクルごとに、前記データをラッチするラッチポイント回路と、を含み、
前記ラッチポイント回路は、ひとつあるいは複数の制御信号に応じてバッファあるいはラッチ回路として動作することを特徴とする演算処理システム。
【請求項１３】
請求項１２に記載の演算処理システムであって、
前記制御信号は、アプリケーションプログラミングインターフェースコードに応じて設定されることを特徴とする演算処理システム。
【請求項１４】
請求項１２または１３に記載の演算処理システムであって、さらに、
有効、無効が切り替え可能な複数のクロック分配ノードを備えることを特徴とする演算処理システム。
【請求項１５】
請求項１４に記載の演算処理システムであって、
バッファとして動作する前記ラッチポイント回路に対応付けられた前記クロック分配ノードは、無効化されることを特徴とする演算処理システム。
【請求項１６】
請求項１４または１５に記載の演算処理システムであって、
前記クロック分配ノードは、前記アプリケーションプログラミングインターフェースコードによって有効化、あるいは無効化されることを特徴とする演算処理システム。
【請求項１７】
請求項１２に記載の演算処理システムであって、さらに、
複数のプロセッサを備え、それぞれのプロセッサが、前記命令前置実行回路および前記命令実行回路を含むことを特徴とする演算処理システム。
【請求項１８】
請求項１７に記載の演算処理システムであって、
前記プロセッサは、共通の半導体基板上に形成されることを特徴とする演算処理システム。
【請求項１９】
請求項１８に記載の演算処理システムであって、
それぞれのプロセッサは、さらに、実行すべき命令をストアするローカルメモリを含むことを特徴とする演算処理システム。
【請求項２０】
Ｙｎｍより進歩した（微細な）Ｘｎｍ半導体製造プロセスを用いてプロセッサを製造するステップと、
低消費電力化のために、前記プロセッサの動作周波数を、前記Ｘｎｍ半導体製造プロセスで許容される動作周波数よりも低く設定するステップと、
命令実行回路の命令実行ステージの個数を、前記動作周波数を低く設定したことにより低下した演算処理能力が回復するように、本システム上で実行されるソフトウェアプログラムから出力されるアプリケーションプログラミングインターフェースコードに応じて調節するステップと、
を備えることを特徴とする方法。
【請求項２１】
命令セットの命令を、後続する処理のために準備する命令前置実行ステップと、
デジタル論理回路を用いた実行ステージのパイプラインにおいて、実行ステージごとに１クロックサイクルで前記命令に応じてデータを処理するステップと、
次段の実行ステージに対して供給するため、複数のラッチポイント回路の少なくともひとつを用いて、１クロックサイクルごとに、前記データをラッチするステップと、
各ラッチポイント回路それぞれを、バッファあるいはラッチ回路のいずれとして動作させるかを制御するステップと、
を備えることを特徴とする方法。
【請求項２２】
請求項２１に記載の方法であって、
各ラッチポイント回路それぞれを制御するステップは、各ラッチポイント回路それぞれを、バッファあるいはラッチ回路のいずれとして動作させるかを指示するアプリケーションプログラミングインターフェースコードを利用することを特徴とする方法。
【請求項２３】
請求項２１または２２に記載の方法であって、さらに、
前記パイプラインの実行ステージの個数を調節するステップを備えることを特徴とする方法。
【請求項２４】
請求項２３に記載の方法であって、
前記パイプラインの実行ステージの個数を調節するステップは、前記パイプラインの実行ステージの個数を指示するアプリケーションプログラミングインターフェースコードを利用することを特徴とする方法。
【請求項２５】
請求項２３または２４に記載の方法であって、
前記パイプラインの実行ステージの個数を調節するステップは、バッファとして動作する前記ラッチポイント回路の個数と、ラッチ回路として動作する前記ラッチポイント回路の個数を制御するステップを含むことを特徴とする方法。
【請求項２６】
請求項２１から２５のいずれかに記載の方法であって、さらに、
ラッチ回路として動作する前記ラッチポイント回路に対するクロック信号の分配を有効化し、バッファとして動作する前記ラッチポイント回路に対するクロック信号の分配を無効化するステップを備えることを特徴とする方法。
【請求項２７】
請求項２６に記載の方法であって、
前記クロック信号の分配を有効化、無効化するステップは、プロセッサのクロック分配ノードを制御するアプリケーションプログラミングインターフェースコードを利用することを特徴とする方法。
【請求項２８】
演算処理システムに、
命令セットの命令を、後続する処理のために準備する命令前置実行処理を実行するステップと、
デジタル論理回路を用いた実行ステージのパイプラインにおいて、実行ステージごとに１クロックサイクルで前記命令に応じてデータを処理するステップと、
次段の実行ステージに対して供給するため、複数のラッチポイント回路の少なくともひとつを用いて、１クロックサイクルごとに、前記データをラッチするステップと、
各ラッチポイント回路それぞれを、バッファあるいはラッチ回路のいずれとして動作させるかを制御するステップと、
を実行させるソフトウェアを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン処理などを行う演算処理システムにおいて、ラッチポイントの制御により演算処理能力を改善する方法ならびに装置に関する。
【背景技術】
【０００２】
近年、最先端のコンピュータ・アプリケーションのリアルタイム性、マルチメディアの機能性に対する要求に答えるため、より高速なデータスループットを処理するコンピュータが欲求されている。グラフィックスアプリケーションは、所望の表示結果を得るために、比較的短時間の間に、膨大なデータアクセス、データ計算、データ操作が要求されるアプリケーションのひとつである。これらのアプリケーションは、数百Ｍｂｉｔ／ｓの極めて高速な処理速度を必要とする。高速な処理速度を実行するため、演算処理システムは、シングルプロセッサ、あるいはマルチプロセッサ・アーキテクチャを利用する。マルチプロセッサシステムにおいて、複数のサブプロセッサは、所望の処理結果を得るために、並列に、あるいは少なくとも協働して動作してもよい。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
半導体製造プロセスは、１８ヶ月ごとに進歩しており、現在では９０ｎｍとなっている。半導体製造プロセスの進歩にともない、演算処理の周波数が増加し、結果として消費電力も増加する。周波数の増加は、演算処理の性能を向上させるものであるが、消費電力の増加は望ましくない。消費電力を低減するために、動作電圧を低減させる手法が提案されているが、リーク電流の増加という厄介な問題をもたらす。本発明はこうした課題に鑑みてなされたものであり、その目的は、新しい半導体製造プロセスにおいて、動作周波数を増加することなく、したがって消費電力を増加することなく演算処理能力を改善することを目的とする。
【課題を解決するための手段】
【０００４】
本発明のある態様は、パイプラインの深度、ラッチポイントの位置および個数、さらには、クロック分配ポイントの位置および個数をプログラマが制御可能とすることにより、動作周波数を低減するものである。
【０００５】
演算処理システムは、複数のラッチ・バッファを備えてもよい。ラッチ・バッファは、制御信号に応じて、ラッチ機能とバッファ機能が切り替えられる。ラッチ・バッファは、プロセッサの製造マトリクスに応じて、１０ＦＯ４（Fun-out four-equivalent）マトリクス、１５ＦＯ４マトリクス、３０ＦＯ４マトリクスなどの高いマトリクスに応じたピッチで配置されるのが望ましい。たとえば、９０ｎｍ半導体製造プロセスに対応する１０ＦＯ４マトリクスは、ラッチ回路が、関数的に比較的近い位置に配置されることを意味する。１５ＦＯ４マトリクスは、ラッチ回路が、関数的に１０ＦＯ４マトリクスに比べてより広いピッチで配置されることを意味する。３０ＦＯ４マトリクスでは、ラッチ回路が関数的に、より隔離して配置されることを意味する。ラッチ・バッファは、ラッチ回路あるいはバッファ回路として動作可能であるから、制御信号によって、システムのラッチポイントの個数や範囲を規定することができる。
【０００６】
ＡＰＩコードに応じて、ラッチポイントの数および位置を、実行ステージと合致させるために、演算処理システムは、パイプライン内の実行ステージの数を調節し、ラッチ・バッファに対して適切な信号を与えるのが望ましい。たとえば、実行ステージの個数が減少した場合、ラッチポイントの数を減少してもよい。この場合、消費電力を低減することができる。さらに、システムは、実行ステージの個数の減少に合致するようにシステム内のクロック分配ポイントのいくつかを無効化してもよい。この場合、さらなる消費電力の低減を図ることができる。
【０００７】
本発明のある態様に係る演算処理装置は、命令セットの命令を、後続する処理のために準備する命令前置実行回路と、複数の実行ステージを含み、パイプライン方式によって、実行ステージごとに１クロックサイクルで命令を実行する命令実行回路と、を備える。実行ステージは、命令に応じてデータを処理するデジタル論理回路と、次段の実行ステージに対して供給するため、各クロックサイクルごとに、データをラッチするラッチポイント回路と、を含む。命令実行回路の実行ステージの個数は、本システム上で実行されるソフトウェアプログラムから出力されるアプリケーションプログラミングインターフェース（ＡＰＩ）コードに応じて可変となっている。
【０００８】
各ラッチポイント回路は、制御信号に応じてバッファあるいはラッチ回路のいずれかとして動作してもよい。ラッチポイント回路はＡＰＩコードからのコマンドに応じてバッファあるいはラッチ回路として動作するのが好ましい。
【０００９】
命令実行回路の実行ステージの個数は、ＡＰＩコードにより制御可能であるのが望ましい。たとえば、命令実行回路の実行ステージの個数は、バッファとして動作するラッチポイント回路の個数と、ラッチ回路として動作するラッチポイント回路の個数を制御することにより制御可能としてもよい。
【００１０】
演算処理システムは、有効、無効が切り替え可能な複数のクロック分配ノードを備えてもよい。バッファとして動作するラッチポイント回路に対応付けられたクロック分配ノードを、無効化し、ラッチ回路として動作するラッチポイント回路に対応付けられたクロック分配ノードを有効化してもよい。クロック分配ノードは、ＡＰＩコードによって有効化、あるいは無効化されてもよい。
【００１１】
本発明の別の態様に係る方法は、Ｙｎｍより進歩したＸｎｍ半導体製造プロセスを用いてプロセッサを製造するステップと、低消費電力化のために、プロセッサの動作周波数を、Ｘｎｍ半導体製造プロセスで許容される動作周波数よりも低く設定するステップと、命令実行回路の命令実行ステージの個数を、動作周波数を低く設定したことにより低下した演算処理能力が回復するように、本システム上で実行されるソフトウェアプログラムから出力されるＡＰＩコードに応じて調節するステップと、を備える。
【００１２】
本発明のさらに別の態様に係る方法は、命令セットの命令を、後続する処理のために準備する命令前置実行ステップと、デジタル論理回路を用いた実行ステージのパイプラインにおいて、実行ステージごとに１クロックサイクルで前記命令に応じてデータを処理するステップと、次段の実行ステージに対して供給するため、複数のラッチポイント回路の少なくともひとつを用いて、１クロックサイクルごとに、データをラッチするステップと、各ラッチポイント回路それぞれを、バッファあるいはラッチ回路のいずれとして動作させるかを制御するステップと、を備える。
【００１３】
本発明のさらに別の態様は、ソフトウェアの記録媒体である。この記録媒体は、演算処理システムに、命令セットの命令を、後続する処理のために準備する命令前置実行処理を実行するステップと、デジタル論理回路を用いた実行ステージのパイプラインにおいて、実行ステージごとに１クロックサイクルで前記命令に応じてデータを処理するステップと、次段の実行ステージに対して供給するため、複数のラッチポイント回路の少なくともひとつを用いて、１クロックサイクルごとに、データをラッチするステップと、各ラッチポイント回路それぞれを、バッファあるいはラッチ回路のいずれとして動作させるかを制御するステップと、を実行させるソフトウェアを記録することを特徴とする。
【００１４】
なお、以上の構成要素の任意の組合せや、本発明の構成要素や表現を、方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明によれば、処理能力を向上することができる。
【発明を実施するための最良の形態】
【００１６】
同等の構成要素に同一の符号を付したいくつかの図面を参照しながら、実施の形態について説明する。図１は、本発明の少なくとも１つの特徴を具現化するための演算処理システム１００の一部を示す。説明の簡略化、明確化のため、対応する方法の態様についても、装置１００として記述される図１のブロック図に関する説明を適応することができる。
【００１７】
演算処理システム１００は、演算処理パイプラインを用いて好適に構成され、論理命令はパイプライン方式によって処理される。パイプラインは、命令を処理するいくつかのステージに分割されてよい。パイプラインは、一般的には、少なくとも１つの命令を取得し、デコードし、命令の相互間の従属関係（依存性）をチェックし、命令を発行し、その後実行する。この処理に対応して、演算処理システム１００は、命令バッファ（図示せず）、命令取得回路１０２、命令デコード回路１０４、従属関係検査回路１０６、命令発行回路（図示せず）、命令実行ステージ１０８を備える。
【００１８】
命令取得回路は、メモリから命令バッファに対して、少なくとも１つの命令を転送できるように動作することが好ましい。少なくとも１つの命令は、パイプラインに送るためにキューに積み上げられる。命令バッファは、取得された命令を一時的にストア可能な複数のレジスタを含んでもよい。命令デコード回路１０４は、命令を解析し、命令に応じた機能を実行するための論理マイクロオペレーションを生成する。たとえば、論理マイクロオペレーションは、算術演算や論理演算を特定し、メモリに命令をロードあるいはストアし、ソースオペランド、即値データオペランドを登録する。命令デコード回路１０４は、命令が、ターゲットレジスタのアドレス、構造リソース、機能ユニットやバスなどのリソースのうち、いずれを使用するかについても指定してもよい。また、命令デコード回路１０４は、これらのリソースが必要とされる命令パイプラインステージを指定する情報を提供してもよい。
【００１９】
従属関係検査回路１０６は、複数のレジスタを含む。各実行ステージには、少なくとも１つのレジスタが対応付けられる。レジスタは、パイプラインにおいて実行される命令のオペランドの表示（識別番号、レジスタ番号などをいう）を保存する。これらのレジスタ、あるいはこれに相当するその他の保存手段は、図１において、深度要素１０６Ａとして表される。従属関係検査回路１０６は、パイプラインに投入される命令のオペランドが、すでにパイプラインに投入された他のオペランドに依存するかを判定するデジタル論理回路を含む。もし、依存する場合、新たに与えられた命令は、たとえば、他の命令の実行が完了し、他のオペランドが更新されるまで、実行しない。
【００２０】
命令実行ステージ１０８は、算術命令を実行するために、浮動小数点演算あるいは固定小数点演算を実行する複数のステージを備えて構成されてもよい。必要とされる演算処理能力に応じて、より多くのあるいは少ない浮動小数点、あるいは固定小数点の演算処理ステージが用意される。命令実行ステージ１０８は、演算処理システム１００の他の回路と同様に、スーパースケーラアーキテクチャを用いて構成するのが望ましい。スーパースケーラアーキテクチャでは、１クロックサイクルごとに、２つ以上の命令が発行され、実行される。命令実行ステージ１０８は、いずれの命令が与えられても、各ステージにおいて、１クロックサイクル、あるいはそれ以上のクロックサイクルで命令を実行する。通常は１クロックサイクルで実行する。いずれの命令が与えられても、命令実行回路１０８は、いくつかのステージで命令を実行し、各ステージは１つ、あるいは複数のクロックサイクルで（通常は１クロックサイクルである）命令を実行する。命令実行回路１０８のより詳細な構成および機能について、以下で説明する。
【００２１】
次に図２を参照する。図２は、実施の形態に係る図１の演算処理システムの性能パラメータを示す図である。本発明は、いずれのオペレーション理論に限定されるものではないが、システム開発における製造、設計、実装、そしてプログラミングの段階において、これらの性能パラメータ特性を考慮することにより、上述の演算処理システム１００の有利なオペレーションが実現される。図２は、横座標軸が時間を、縦座標軸が相対値を示す。時間の関数として図示された相対値は、利用可能な演算処理システムの半導体製造プロセス、半導体製造プロセスの伝搬マトリクス、そのプロセスにおける潜在的な動作周波数、ならびに各動作周波数における消費電力を示している。
【００２２】
半導体製造プロセス技術は、１８ヶ月単位で進歩しており、現在のところ、９０ｎｍとなっている。将来の製造プロセスは、６５ｎｍ、４５ｎｍとなると考えられている。製造プロセスが時間とともに進歩すると、そのときどきの製造プロセスを用いた場合の演算処理システムの動作周波数は上昇していく。動作周波数の上昇は、システムの処理性能を向上させる一方で、周波数の上昇は、消費電力の増加という望ましくない問題をもたらす。半導体製造プロセスの機能の進歩にともない、伝搬マトリクスも改善されていく。
【００２３】
図３に示すように、ここで問題となる伝搬マトリクスは、ある半導体製造プロセスによって造られた数段の論理ゲートにおける論理信号の伝搬遅延である。ここでは議論を簡潔化するため、信号の伝搬遅延を、たとえば１クロックサイクルなど所定の期間に対して比較するものとする。”１ＦＯ４”伝搬マトリクスは、１クロックサイクルで、インバータ１段により構成される論理ゲート分の伝搬遅延が発生することを意味する。”２ＦＯ４”伝搬マトリクスは、１クロックサイクルで、２段のインバータで構成される論理ゲート分の遅延が発生することを意味する。”３ＦＯ４”伝搬マトリクスは、１クロックサイクルで同様に３段のインバータで構成される論理ゲート分の遅延が発生することを意味する。したがって、９０ｎｍプロセスから６５ｎｍプロセスへと半導体製造プロセスが進歩すると、”１０ＦＯ４”であった伝搬マトリクスは、”１５ＦＯ４”から”２０ＦＯ４”程度まで著しく改善されることになる。
【００２４】
図４を参照する。命令実行回路１０８は、ＳＴＡＧＥ１、ＳＴＡＧＥ２等の符号が付される複数の実行ステージを含むのが好ましい。各命令実行ステージは、実行すべき命令に応じたデータ処理を行うデジタル論理回路を含む。命令実行回路１０８はまた、次段の実行ステージに対して供給するため、各クロックサイクルごとに、データをラッチするラッチポイント回路１１０を含む。たとえば、実行ステージＳＴＡＧＥ１は、加算マイクロオペレーションをそのデジタル論理回路を用いて実行し、その結果得られたデータは、次段の実行ステージあるいはパイプラインの他のポイントに供給するために、ラッチポイント回路１１０に保存されるのが望ましい。
【００２５】
ラッチポイント回路１１０は、データが、後続のラッチポイント回路１１０との間のデジタル論理回路を１クロック以内で伝搬するよう定められた十分なピッチで配置されるのが望ましい。図４に例示する演算処理システム１００は、３０ＦＯ４伝搬マトリクスを有する半導体製造プロセスにより製造されるものとする。これは、説明のために任意に選択したものであって、このプロセスが実験的あるいは商業的に使用されることを示唆するものではない。いずれの半導体製造プロセスを用いた場合でも、半導体製造プロセスの伝搬マトリクスは、ラッチポイント回路１１０の最小ピッチを決定する。この最小ピッチは、図４において、符号３０ＦＯ４が付される実行ステージＳＴＡＧＥ１と実行ステージＳＴＡＧＥ７のピッチで示される。
【００２６】
本発明のある態様において、ラッチポイント回路１１０は、上述の最小ピッチより狭いピッチで配置することが望ましい。具体的には、実行ステージのいくつかは、それほど進歩していない半導体製造プロセスが有する１５ＦＯ４、１０ＦＯ４、５ＦＯ４などの伝搬マトリクスに対応したピッチで配置されてもよい。たとえば、それほど進歩していない半導体製造プロセスが有する１５ＦＯ４伝搬マトリクスに対応させた場合、実行ステージＳＴＡＧＥ１、ＳＴＡＧＥ４、ＳＴＡＧＥ７、ＳＴＡＧＥ１０が、ラッチポイント回路１１０を有する。同様に、１０ＦＯ４伝搬マトリクスに対応させた場合、実行ステージＳＴＡＧＥ１、ＳＴＡＧＥ３、ＳＴＡＧＥ５、ＳＴＡＧＥ７、ＳＴＡＧＥ９がラッチポイント回路１１０を有する。さらに、５ＦＯ４伝搬マトリクスに対応させた場合、実行ステージＳＴＡＧＥ１、ＳＴＡＧＥ２、ＳＴＡＧＥ３、ＳＴＡＧＥ４、ＳＴＡＧＥ５、ＳＴＡＧＥ６、ＳＴＡＧＥ７、ＳＴＡＧＥ８、ＳＴＡＧＥ９、ＳＴＡＧＥ１０がラッチポイント回路１１０を有する。
【００２７】
本発明のある態様において、各ラッチポイント回路１１０は、制御信号に応じてバッファあるいはラッチ回路として動作するのが望ましい。図５は、ラッチポイント回路１１０の機能を示すブロック図である。各ラッチポイント回路１１０は、バッファ回路１１２、ラッチ回路１１４、制御スイッチ回路１１６を含むのが望ましい。制御スイッチ回路１１６が左側の端子に接続するように制御された場合、ラッチポイント回路１１０に入力されたデータは、バッファ回路１１２を通過する。反対に、制御スイッチ回路１１６が右側の端子に接続するように制御された場合、データはラッチ回路１１４に入力され、１クロックの期間、ラッチされる。
【００２８】
実施の形態において、上述の制御は、演算処理システム１００上で実行されるソフトウェアプログラムから出力されるＡＰＩコードに対応させるのが望ましい。この場合、ソフトウェアの設計は、演算処理システム１００上で実行されるソフトウェアによって、あるラッチポイント回路１１０（あるいはラッチポイント回路群）の構成を変更することができる。ラッチポイント回路１１０がバッファとして動作する場合、データは、ラッチによって保持されることなく、ラッチポイント回路１１０の出力端子から出力され、後続の処理のために使用される。以下で説明するように、この機能はパイプラインの深度（すなわち、命令実行回路１０８の実行ステージの個数）を変化させるのに使用してもよい。
【００２９】
図６は、演算処理システム１００の命令実行回路１０８の詳細な構成を示すブロック図である。ラッチポイント回路１１０がバッファとして動作する場合、ラッチ回路１１４にクロック信号を供給する必要はない。バッファ回路１１２は、その動作にクロック信号を必要としないものである。その結果、クロック信号分配ネットワークを用いたクロック信号の注意深いルーティングは、有利な効果を生む。
【００３０】
システムクロック信号は、論理機能を同期して実行するために、ＬＳＩ回路を用いて構成されるデジタル回路などにより使用される。ＬＳＩ回路のシステムクロック信号は、デジタル回路上の多くの異なる部分で使用するために、複数のパスに分配されるのが一般的である。デジタル回路の異なる箇所のシステムクロック信号は、デジタル回路の異なる箇所が完全に同期動作するように、完全に同じタイミング特性を有しているのが理想的である。しかしながら、実際には、デジタル回路に点在する異なる位置におけるシステムクロック信号は、立ち上がり、立ち下がりエッジ（遷移）、デューティサイクル、周波数などのタイミング特性が異なっている。この問題は、ＬＳＩ回路上の様々な位置に対してシステムクロックを同期分配できるように、半導体チップ上に配置されたクロック分配ノードを用いることにより解決することができる。
【００３１】
図６の演算処理システム１００は、システム１００の様々な箇所にシステムクロック信号を分配できるように、複数のクロック分配ノードを備えることが望ましい。図６において、これらのクロック分配ノードは、ＣＬＫ  ＤＩＡＴ  Ａ、ＣＬＫ ＤＩＳＴ  Ｂ、ＣＬＫ  ＤＩＳＴ  Ｃ、ＣＬＫ＿ＤＩＳＴ＿Ｄとして示される。クロック分配ノードＣＬＫ  ＤＩＳＴ  Ａから分岐されるクロック信号は、命令実行ステージＳＴＡＧＥ１およびＳＴＡＧＥ７に入力される。これらの命令実行ステージのラッチポイント回路１１０は、３０ＦＯ４伝搬マトリクスに対応したピッチで配置されている。クロック分配ノードＣＬＫ  ＤＩＳＴ  Ｂから出力されるクロック信号は、命令実行ステージＳＴＡＧＥ４およびＳＴＡＧＥ１０へと入力される。クロック分配ノードＣＬＫ  ＤＩＳＴ  ＡおよびＣＬＫ  ＤＩＳＴ  Ｂから出力されるクロック信号を受け取る命令実行ステージのラッチポイント回路１１０は、１５ＦＯ４伝搬マトリクスに対応したピッチで配置されている。クロック分配ノードＣＬＫ  ＤＩＳＴ  Ｃから出力されるクロック信号は、命令実行ステージＳＴＡＧＥ３、ＳＴＡＧＥ５、ＳＴＡＧＥ９へと入力される。クロック分配ノードＣＬＫ  ＤＩＳＴ  Ａ、ＣＬＫ  ＤＩＳＴ  Ｂ、ＣＬＫ  ＤＩＳＴ  Ｃから出力されるクロック信号を受け取る命令実行ステージのラッチポイント回路１１０は、１０ＦＯ４伝搬マトリクスに対応したピッチで配置されている。最後に、クロック分配ノードＣＬＫ  ＤＩＳＴ  Ｄから出力されるクロック信号は、命令実行ステージＳＴＡＧＥ２、ＳＴＡＧＥ６、ＳＴＡＧＥ８へと入力される。すべてのクロック分配ノードから出力されるクロック信号を受け取る命令実行ステージのラッチポイント回路１１０は、５ＦＯ４伝搬マトリクスに対応したピッチで配置されている。
【００３２】
本発明のある態様において、クロック分配ノードは、有効、無効が切り替え可能として構成されることが望ましい。たとえば、バッファとして動作するラッチポイント回路１１０に対応付けられたクロック分配ノードは、無効化するのが望ましい。一方、ラッチ回路として動作するラッチポイント回路１１０に対応付けられたクロック分配ノードは、有効化するのが望ましい。クロック分配ノードの有効、無効の切り替えは、ＡＰＩコードの機能により実現されるのが望ましく、この場合、プログラマは、演算処理システム１００上で実行されるソフトウェアプログラムによって、クロック分配ノードの個数および範囲を制御することができる。これにより、プログラマは、無効とするクロック分配ノードの個数に応じて消費電力を低減し、演算処理システム１００の消費電力を制限することができる。
【００３３】
本発明のある態様において、パイプラインの深度を可変としてもよく、命令実行回路１０８の実行ステージの個数を、可変とするのが望ましい。たとえば、ある状況においては、短いパイプラインを用い、ブランチミスや、キャッシュミス、インターラプトに影響を受ける演算処理能力を改善してもよい。プログラマに、ＡＰＩコードを用いてパイプラインの深度を変更する権能を与えることにより、予期されるブランチミス、キャッシュミス、多くのインターラプトに応じて、短いパイプラインあるいは長いパイプラインを利用するかを選択するメカニズムを提供することができる。
【００３４】
命令実行回路１０８の実行ステージの個数は、演算処理システム１００上で実行されるソフトウェアプログラムから出力されるＡＰＩコードに応じて調節可能とすることが望ましい。
【００３５】
図７を参照する。本発明のある態様において、演算処理システム１００は、９０ｎｍ製造プロセスに対して、たとえば６５ｎｍ製造プロセスを用いて製造するものとする（ステップ３００）。そして、一般的な知見に反し、演算処理システム１００の動作周波数を論理上期待される値まで上昇させないものとする。動作周波数は、従前の半導体製造プロセスに対応する程度の、たとえば、９０ｎｍプロセス論理上の最大周波数程度の低いレベルに抑えられる（ステップ３０２）。次に、動作周波数を、低く設定し、あるいは最大値に設定しなかったことにより、演算処理性能が低下することに対処するため、パイプラインの深度を低下させる。たとえば、見込まれるブランチミス、キャッシュミス、インターラプトなどを考慮して実行ステージの個数を変更する（ステップ３０４）。実行ステージの個数を減少することにより、パイプラインの深度が低下すると、ラッチポイント回路１１０の個数が減少することになる。これは、バッファとして動作するラッチポイント回路１１０の個数を制御することにより好適に実現される。現在の進歩した半導体製造プロセスを用いることにより、同時にラッチ回路として動作するラッチポイント回路１１０の個数を減少した場合でも、ブランチミスを減少することができる場合がある。その結果、いくつかのクロック分配ノードを無効とすることができ、消費電力を低減することができる。
【００３６】
消費電力を低減しつつ、演算処理能力を改善するための、さらなる技術については、同時期に出願された米国特許出願（Ｎｏ．１１／０７９，５６５）に開示されている（METHODS AND APPARATUS FOR IMPROVING PROCESSING PERFORMANCE USING INSTRUCTION DEPENDENCY CHECK DEPTH, No.535/20 3/14/2005出願）。この技術では、たとえば、Ｙｎｍより進歩したＸｎｍの半導体製造プロセスを用いてプロセッサを製造する。そして、プロセッサの動作周波数を、Ｘｎｍ半導体製造プロセスで許容される動作周波数よりも低く設定する。さらに、パイプラインに入力される命令のオペランドが、パイプラインにて実行されている命令のオペランドに従属するかどうかを判定するプロセッサの従属関係検査回路の深度を増加させる。この技術を併せて利用すれば、消費電力をさらに演算能力を改善することができる。
【００３７】
図８は、実施の形態に利用可能なマルチプロセスシステム６００Ａを示す。マルチプロセスシステム６００Ａは、複数のプロセッサ６０２Ａ〜６０２Ｄ、それぞれに対応付けられたローカルメモリ６０４Ａ〜６０４Ｄ、バス６０８を介して接続される共有メモリ６０６を含む。例として４つのプロセッサ６０２を示しているが、プロセッサの数は本発明の要旨を逸脱しない範囲で変更してもよい。各プロセッサ６０２は、同一の構成であってもよいし、異なる構成としてもよい。
【００３８】
ローカルメモリ６０４は、対応するプロセッサ６０２と同一の半導体チップ（半導体基板）上に形成することが望ましく、ローカルメモリ６０４は、ハードウェアによるキャッシュメモリ機能を実現するために、オンチップ、オフチップのハードウェアのキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが利用できる場合には、伝統的なハードウェアキャッシュメモリであることが好ましい。
【００３９】
プロセッサ６０２は、プログラムの実行およびデータ操作のために、共有メモリ６０６からバス６０８を介して各ローカルメモリ６０４にデータ（プログラムデータを含む）をコピーするためのデータアクセス要求を発する。データアクセスを容易にするための手段として、好ましくは図示しないダイレクトメモリアクセスコントローラ（ＤＭＡＣ）が実装される。各プロセッサのＤＭＡＣは、上述した本発明の要旨の範囲において、実質的に同等の能力とすることが望ましい。
【００４０】
共有メモリ６０６は、プロセッサ６０２と広いバンド幅を有するメモリ接続手段（図示せず）を介して接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）であることが望ましい。共有メモリ６０６はＤＲＡＭであることが好ましいが、他の手段、たとえばスタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、ホログラフィックメモリなでであってもよい。
【００４１】
各プロセッサ６０２は、論理命令をパイプライン手法によって処理する、処理パイプラインを用いて実装されることが望ましい。パイプラインは、命令が処理されるいくつかのステージに分割して構成されてもよいが、一般的には、１つ以上の命令を取得し、解析し、命令間の相互依存性をチェックし、命令を発行し、実行する機能を備える。このために、プロセッサ６０２は、命令バッファ、命令解析回路、従属関係検査回路、命令発行回路、および実行ステージを含んでもよい。
【００４２】
本実施の形態において、１つ、あるいはそれ以上のプロセッサ６０２（好ましくはすべてのプロセッサ６０２）を、進歩した半導体製造プロセスを用いて製造することが望ましい。ここでは、例として、Ｙｎｍに対して、Ｘｎｍのプロセスを用いるとする。そして、動作周波数Ｆを、Ｘｎｍのプロセスで利用可能な周波数よりも低く設定する。これによって、消費電力が低減される。さらに、処理能力を向上するため、ひとつ、あるいはそれ以上のプロセッサ６０２は、図１から図６を用いて説明した上述の制御可能なラッチポイント回路１１０、可変長パイプライン、制御可能なクロック分配ノードを備えてもよい。これにより、ブランチミスが発生する状況下においても、消費電力を低減しつつ、プログラマに演算処理能力を改善する手段を提供することができる。
【００４３】
実施の形態において、プロセッサ６０２およびローカルメモリ６０４は、共通の半導体基板上に配置されてもよい。さらに、実施の形態では、共有メモリ６０６を、共通の半導体基板上に配置してもよいし、別々に配置してもよい。
【００４４】
別の実施の形態では、ひとつ、あるいは複数のプロセッサ６０２は、他のプロセッサ６０２と連動して動作し、バス６０８を介して共有メモリ６０６と結合するメインプロセッサとして動作させてもよい。メインプロセッサは、他のプロセッサ６０２によるデータ処理を、スケジューリングし、調整してもよい。他のプロセッサ６０２とは異なり、メインプロセッサは、共有メモリ６０６やプロセッサ６０２のローカルメモリ６０４の少なくともひとつから取得されるキャッシュデータを実施可能なハードウェア上のキャッシュメモリと接続されてもよい。メインプロセッサは、ＤＭＡ技術など、既知の技術を用いて、プログラムの実行およびデータ操作のために、共有メモリ６０６からバス６０８を介してローカルメモリ６０４にデータ（プログラムデータを含む）をコピーするためのデータアクセス要求を発してもよい。
【００４５】
ここで、上述した一つ以上の特徴の実現に適した、好適なマルチプロセッサシステムのコンピュータアーキテクチャについて説明する。一つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、ＰＣシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および／または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、３Ｄコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
【００４６】
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール（またはセル）から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、１以上のクライアント、サーバ、ＰＣ、携帯端末、ゲーム機、ＰＤＡ、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【００４７】
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
【００４８】
図９は、基本的な処理モジュールであるプロセッサ要素（ＰＥ）５００を示す。ＰＥ５００は、Ｉ／Ｏインタフェース５０２と、処理ユニット（ＰＵ）５０４と、複数のサブ処理ユニット、すなわち、サブ処理ユニット５０８Ａと、サブ処理ユニット５０８Ｂと、サブ処理ユニット５０８Ｃと、サブ処理ユニット５０８Ｄとを含む。ローカル（すなわち内部）ＰＥバス５１２は、ＰＵ５０４、ＳＰＵ群５０８、およびメモリインタフェース５１１間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス５１２は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００４９】
ＰＥ５００はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ５００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ５００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路等として実装することもできる。
【００５０】
ＰＥ５００は、広帯域メモリ接続５１６を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）５１４に密接に関連付けられる。メモリ５１４は好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）だが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００５１】
ＰＵ５０４およびサブ処理ユニット５０８は、それぞれ、ダイレクトメモリアクセス（ＤＭＡ）機能を有するメモリフローコントローラ（ＭＦＣ）と接続されることが望ましい。ＭＦＣは、メモリインタフェース５１１と協働して、ＤＲＡＭ５１４、ＰＥ５００におけるサブ処理ユニット５０８、ＰＵ５０４間のデータの転送を円滑にするものである。ここで、ＤＭＡＣおよび／またはメモリインタフェース５１１は、サブ処理ユニット５０８とＰＵ５０４とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、ＤＡＭＣの機能および／またはメモリインタフェース５１１の機能は、サブ処理ユニット５０８およびＰＵ５０４の一つ以上（好ましくはすべて）に一体化できる。ここで、ＤＲＡＭ５１４もまた、ＰＥ５００から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、ＤＲＡＭ５１４は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
【００５２】
ＰＵ５０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ５０４はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ５０４の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＰＵ５０４としては、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ  ｃｏｍｐｕｔｉｎｇ）技術を用いるマイクロプロセッサアーキテクチャとなるＰｏｗｅｒＰＣ（登録商標）コアを用いることが好ましい。ＲＩＳＣは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
【００５３】
ここで、ＰＵ５０４は、サブ処理ユニット５０８のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット５０８は、メイン処理ユニットＰＵによる処理、すなわち各々のサブ処理ユニット５０８によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、ＰＥ５００内において、複数のＰＵを実装してもよい。
【００５４】
このモジュール構造では、あるコンピュータシステムで使用されるＰＥ５００の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのＰＥ群５００、ワークステーションは二つのＰＥ群５００、ＰＤＡは一つのＰＥ５００を使用しうる。あるソフトウェアセルの処理に割り当てられるＰＥ５００のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００５５】
図１０は、サブ処理ユニット（ＳＰＵ）５０８の好適な構造と機能を示す図である。サブ処理ユニット５０８のアーキテクチャは、汎用プロセッサ（多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの）と特殊用途のプロセッサ（一つのアプリケーションにおいて高い性能を実現するように設計されている）との間に位置するものであることが望ましい。サブ処理ユニット５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット５０８の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、ＭＰＥＧエンコード／デコード、暗号化、復号化、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
【００５６】
サブ処理ユニット５０８は、すなわちＳＰＵコア５１０Ａとメモリフローコントローラ（ＭＦＣ）５１０Ｂという二つの基本機能ユニットを有する。ＳＰＵコア５１０Ａは、プログラムの実行、データの操作などを担うものであり、一方、ＭＦＣ５１０Ｂは、ＳＰＵコア５１０Ａと、システムのＤＲＡＭ５１４との間のデータ転送に関連する機能を担うものである。
【００５７】
ＳＰＵコア５１０Ａはローカルメモリ５５０と、命令（インストラクション）ユニット（ＩＵ）５５２と、レジスタ５５４と、一つ以上の浮動小数点実行ステージ５５６と、一つ以上の固定小数点実行ステージ５５８とを有する。ローカルメモリ５５０は、ＳＲＡＭのようなシングルポートのＲＡＭを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、ＳＰＵコア５１０Ａは、キャッシュよりも、比較的小さいローカルメモリ５５０を用いる。実際には、リアルタイムのアプリケーション（およびここで言及したほかのアプリケーション）のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット５０８Ａ内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット／ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うＤＭＡ転送をオーバーラップすることで、ローカルメモリＳＲＡＭ５５０内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。ＤＭＡ転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、ＳＲＡＭローカルメモリアプローチは、ＤＭＡ転送サイズが十分大きいかつ十分予測可能なとき（例えばデータが要求される前にＤＭＡコマンドを発行することができるとき）において優位性を提供する。
【００５８】
サブ処理ユニット５０８のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ５５０を参照する。なお、ローカルメモリ５５０の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス（ＲＡ）が付与されている。これは、特権レベルのソフトウェアがローカルメモリ５５０を一つの処理における実効アドレス（ＥＡ）にマッピングすることを可能とし、それによって二つのローカルメモリ５５０間のＤＭＡ転送が容易になる。ＰＵ５０４は、実効アドレスを用いてローカルメモリ５５０に直接アクセスすることもできる。ローカルメモリ５５０は、２５６キロバイトの容量を有し、レジスタ５５４の容量は１２８×１２８ビットであることが望ましい。
【００５９】
ＳＰＵコア５１０Ａは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の従属関係のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット５５２は、命令バッファと、命令デコード回路と、従属関係検査回路と、命令発行回路とを含む。
【００６０】
命令バッファは、ローカルメモリ５５０と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして（すなわち実質上同時に）レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ２または３以下となるようにするサイズであることが好ましい。
【００６１】
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ５５０へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび／または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび／またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
【００６２】
従属関係検査回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに従属するか否かを判定するためのチェックを行うデジタル論理回路を含む。従属するならば、チェック対象となる命令は、これらの他のオペランドが（例えば、これらの他の命令の実行の完了を許可することによって）更新されるまで、実行されるべきではない。従属関係検査回路は、デコード回路１０４から同時に送信されてきた複数の命令の従属関係を判定することが好ましい。
【００６３】
命令発行回路は、浮動小数点実行ステージ５５６および／または固定小数点実行ステージ５５８に命令を発行することができる。
【００６４】
レジスタ５５４は、１２８―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
【００６５】
ＳＰＵコア５１０Ａは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。ＳＰＵコア５１０Ａは、命令バッファから同時に送信される命令の数、例えば２と３の間（クロックサイクル毎に二つまたは３つの命令が発行されることを意味する）に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８を用いることができる。好適な実施の形態では、浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８の望ましいスピードは、それぞれ、毎秒３２ギガ浮動小数点オペレーション（３２  ＧＦＬＯＰＳ）と毎秒３２ギガオペレーション（３２  ＧＯＰＳ）である。
【００６６】
ＭＦＣ５１０Ｂは、バスインターフェースユニット（ＢＩＵ）５６４と、メモリマネジメントユニット（ＭＭＵ）５６２と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）５６０とを有することが望ましい。低電力消費の設計目的を達成するために、ＭＦＣ５１０Ｂは、ＤＭＡＣ５６０を除いて、ＳＰＵコア５１０Ａおよびバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。ＭＦＣ５１０Ｂは、バス５１２からサブ処理ユニット５０８に入るデータと命令を操作することができ、ＤＭＡＣのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。ＢＩＵ５６４は、バス５１２とＭＭＵ５６２とＤＭＡＣ５６０との間のインターフェースを提供する。したがって、サブ処理ユニット５０８（ＳＰＵコア５１０ＡとＭＦＣ５１０Ｂを含む）とＤＭＡＣ５６０は、物理的および／または論理的にバス５１２と接続されている。
【００６７】
ＭＭＵ５６２は、メモリアクセスのために実効アドレス（ＤＭＡコマンドから取得される）をリアルアドレスへ変換することができるようにすることが望ましい。例えば、ＭＭＵ５６２は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、ＭＭＵ５６２は、６４ビットのメモリマネジメントモジュールをベースにして実装でき、４Ｋバイト、６４Ｋバイト、１メガバイト、１６メガバイトのページサイズと２５６ＭＢのセグメントサイズを有する２６４のバイトの実効アドレス空間を提供することができる。ＭＭＵ５６２は、ＤＭＡコマンドのために、２６５までの仮想メモリと、２４２バイト（４テラバイト）の物理メモリをサポート可能であることが好ましい。ＭＭＵ５６２のハードウェアは、８−エントリの完全連想ＳＬＢ、２５６−エントリの４ウェイセット連想ＴＬＢ、ＴＬＢのための４×４代替マネジメントテーブル（ＲＭＴ）を含むものとすることができる。なお、ＲＭＴはハードウェアＴＬＢミスのハンドリングに用いられるものである。
【００６８】
ＤＭＡＣ５６０は、ＳＰＵコア５１０ＡからのＤＭＡコマンドと、一つ以上の、ＰＵ５０４および／または他のＳＰＵのような他のデバイスからのＤＭＡコマンドとを管理することができることが望ましい。ＤＭＡコマンドは下記の３つのカテゴリがある。すなわち、ローカルメモリ５５０から共有メモリ６０６へデータを移動させるＰｕｔコマンド、共有メモリ６０６からローカルメモリ５５０へデータを移動させるＧｅｔコマンド、ＳＬＩコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。ＤＭＡコマンドに応じて、ＭＭＵ５６２は実効アドレスをリアルアドレスに変換し、このリアルアドレスはＢＩＵ５６４に転送される。
【００６９】
ＳＰＵコア５１０Ａはチャンネルインターフェースとデータインターフェースとを用いて、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどの送信）することが好ましい。ＳＰＵコア５１０Ａは、チャンネルインターフェースを介してＤＭＡコマンドをＤＭＡＣ５６０内のＤＭＡキューに送信する。いったん、ＤＭＡキューに格納されたＤＭＡコマンドは、ＤＭＡＣ５６０内の発行ロジックと完了ロジックにより操作される。一つのＤＭＡコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がＳＰＵコア５１０Ａに返送される。
【００７０】
図１１は、ＰＵ５０４の好ましい構造と機能を示す図である。ＰＵ５０４は、ＰＵコア５０４Ａとメモリフローコントローラ、すなわちＭＦＣ５０４Ｂとの二つの基本機能ユニットを有する。ＰＵコア５０４Ａは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、ＭＦＣ５０４Ｂは、ＰＵコア５０４Ａと、処理システム１００のメモリスペースとの間のデータ転送に関連する機能を担うものである。
【００７１】
ＰＵコア５０４Ａは、Ｌ１キャッシュ５７０と、命令ユニット５７２と、レジスタ５７４と、少なくとも一つの浮動小数点実行ステージ５７６と、少なくとも一つの固定小数点実行ステージ５７８とを有する。Ｌ１キャッシュ５７０は、共有メモリ５０６、プロセッサ６０２、あるいはＭＦＣ５０４Ｂにおけるほかの部分のメモリスペースから受信したデータのキャッシング機能を提供する。ＰＵコア５０４Ａはスーパーパイプラインとして実装されることが好ましいため、命令ユニット５７２は、フェッチ、デコード、従属関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。ＰＵコア５０４Ａは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット５７２から２以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８とを用いることができる。
【００７２】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０と、Ｌ２キャッシュ５８２と、キャッシュ不可ユニット（ＮＣＵ）５８４と、コアインターフェースユニット（ＣＩＵ）５８６と、メモリマネジメントユニット（ＭＭＵ）５８８とを有する。低電力消費の設計目的を達成するために、ＭＦＣ５０４Ｂのほとんどは、ＰＵコア５０４Ａとバス６０８の半分の周波数（半分のスピード）で動作することが好ましい。
【００７３】
ＢＩＵ５８０は、バス６０８と、Ｌ２キャッシュ５８２と、ＮＣＵ５８４のロジックブロックとの間のインターフェースを提供する。ＢＩＵ５８０は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス５０８上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、ＢＩＵ５８０は、Ｌ２キャッシュ５８２とＮＣＵ５８４の代わりに、バス６０８へのロードリクエストとストアリクエストを発信する。ＢＩＵ５８０は、バス６０８へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス６０８上のデータオペレーションは、８ビートになるように設計されることができ、そして、ＢＩＵ５８０は、キャッシュラインが１２８バイト前後であり、一貫性と同期の精度が１２８ＫＢであるように設計されることが好ましい。
【００７４】
Ｌ２キャッシュ５８２（およびそれをサポートするハードウェアロジック）は、５１２ＫＢデータをキャッシュするように設計されることが好ましい。例えば、Ｌ２キャッシュ５８２は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。Ｌ２キャッシュ５８２は、８ウエイセットアソシエイティブシステムであることが好ましい。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（例えば６つのＲＣマシン）に合わせた６つのリロードキューと、８つの（６４バイトの幅の）ストアキューとを有することができる。Ｌ２キャッシュ５８２は、Ｌ１キャッシュ５７０の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ（動作中に変更）されたときの、復元状況において有用である。この構成は、Ｌ１キャッシュ５７０が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる（リクエストがＬ２キャッシュ５８２で止まることができるから）。この構成は、Ｌ２キャッシュ５８２にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
【００７５】
ＮＣＵ５８４はインターフェースによってＣＩＵ５８６と、Ｌ２キャッシュ５８２と、ＢＩＵ５８０と接続されており、通常、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。ＮＣＵ５８４は、ＰＵコア５０４Ａとの通信のうちの、Ｌ２キャッシュ５８２によって扱わない全ての通信を操作することが好ましい。ここで、Ｌ２キャッシュ５８２によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、ＮＣＵ５８４は、半分のスピードで動作することが好ましい。
【００７６】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａとの境界線上に配置され、浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、ＭＭＵ５８８から、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。ＰＵコア５０４ＡとＭＭＵ５８８はフルスピードで動作し、Ｌ２キャッシュ５８２とＮＣＵ５８４は２：１のスピード比で動作可能であることが好ましい。こうすることによって、ＣＩＵ５８６に周波数境界線が存在することになり、この境界線は、その一つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
【００７７】
ＣＩＵ５８６は、ロードユニット、ストアユニット、リロードユニットの３つの機能ブロックから構成される。さらに、データをプリフェッチする機能がＣＩＵ５８６により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。ＣＩＵ５８６は、下記の動作を実行可能であることが好ましい：（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロードリクエストとストアリクエストを受信する、（ｉｉ）これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する（２：１クロック周波数変換）、（ｉｉｉ）キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれＬ２キャッシュ５８２とＮＣＵ５８４へルーティングする、（ｉｖ）Ｌ２キャッシュ５８２とＮＣＵ５８４へのリクエストが均等になるように調整する、（ｖ）リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送信するリクエストのフローコントロールを提供する、（ｖｉ）ロードリターンデータを受信すると共に、これらのデータを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へルーティングする、（ｖｉｉ）スヌープリクエストを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へ転送する、（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
【００７８】
ＭＭＵ５８８は、第２レベルアドレス変換手段のごとく、ＰＵコア５０４Ａのためにアドレス変換を提供することが好ましい。変換の第１レベルは、ＰＵコア５０４Ａ内において、セパレート命令と、ＭＭＵ５８８より遥かに小さくてかつ速いデータＥＲＡＴ（実効アドレスからリアルアドレスへの変換）アレイとにより提供されることが好ましい。
【００７９】
ＰＵ５０４は６４ビットで実装され、４〜６ＧＨz、１０ＦＯ４（Ｆａｎ−ｏｕｔ−ｏｆ−ｆｏｕｒ）で動作することが好ましい。レジスタは６４ビットの長さを有することが好ましく（特定用途のための一つまたはより多くのレジスタが６４ビットより小さいかもしれないが）、実効アドレスは６４ビットの長さを有することが好ましい。命令ユニット５７２、レジスタ５７４、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８はＲＩＳＣコンピューティング技術を達成するためにＰｏｗｅｒＰＣ技術により実装されることが好ましい。
【００８０】
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第６５２６４９１号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のＰＥを含め、さらに、このＰＥに、ＰＵ、ＤＭＡＣおよび８個のＡＰＵを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ（ＶＳ）の構造を有してもよく、この場合、ＶＳに、ＰＵ、ＤＭＡＣおよび４つのＡＰＵを含めてもよい。
【００８１】
本発明のさらに別の態様の少なくともひとつにおいて、上述した方法および装置は、図面に示されるハードウェアなどを用いて実装することができる。これらのハードウェアは、標準的なデジタル回路、ソフトウェア、ファームウェアを実行可能なプロセッサ、あるいは、プログラマブルＲＯＭ（ＰＲＯＭｓ）、プログラマブルアレイロジックデバイス（ＰＡＬｓ）などのプログラマブルデジタル機器やシステムなどの既知の技術を用いて実現することができる。さらに、図に示された装置は、機能ブロックに分割して示されるが、こうしたブロックは、回路を分離し、あるいは１つ以上の機能ユニットを組み合わせることにより実現することができる。さらに、本発明のいくつかの態様は、移動や配布のための記録メディア（フレキシブルディスク、メモリチップなど）に記録可能なソフトウェアや、ファームウェアプログラムにより実現することができる。
【００８２】
以上、本発明について、実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００８３】
【図１】本発明のいくつかの態様に適用可能な演算処理システムの構成を示すブロック図である。
【図２】本発明のいくつかの態様にかかる図１の演算処理システムの性能パラメータの図式説明図である。
【図３】本発明のいくつかの態様にかかる演算処理システムの伝搬マトリクスの特性を示すブロック図である。
【図４】図１の演算処理システムの命令実行回路を示すブロック図である。
【図５】図１の演算処理システムのラッチポイント回路を示すブロック図である。
【図６】図１の演算処理システムの命令実行回路の詳細な構成を示すブロック図である。
【図７】実施の形態において実行される処理工程を示すフローチャートである。
【図８】実施の形態に係る２つ以上のサブプロセッサを備えるマルチプロセッシングシステムの構成を示すブロック図である。
【図９】実施の形態を実現するために使用可能な好適なプロセッサ要素（ＰＥ）の一例を示す図である。
【図１０】実施の形態を実現するために使用可能な図９のシステムにおけるサブ処理ユニット（ＳＰＵ）の一例の構成を示す図である。
【図１１】実施の形態を実現するために使用可能な図９のシステムにおける処理ユニット（ＰＵ）の一例の構成を示す図である。
【符号の説明】
【００８４】
１００  演算処理システム、  １０２  命令取得回路、  １０４  命令デコード回路、  １０６  従属関係検査回路、  １０８  命令実行ステージ、  １１０  ラッチポイント回路、  １１２  バッファ回路、  １１４  ラッチ回路、  １１６  制御スイッチ回路、  ６００  マルチプロセスシステム、  ６０２  プロセッサ、  ６０４  ローカルメモリ、  ６０６  共有メモリ、  ６０８  バス。
【図１】
2006260556.tif 000003
【図２】
2006260556.tif 000004
【図３】
2006260556.tif 000005
【図４】
2006260556.tif 000006
【図５】
2006260556.tif 000007
【図６】
2006260556.tif 000008
【図７】
2006260556.tif 000009
【図８】
2006260556.tif 000010
【図９】
2006260556.tif 000011
【図１０】
2006260556.tif 000012
【図１１】
2006260556.tif 000013