JP2006260555A - 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置 - Google Patents
命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置 Download PDFInfo
- Publication number
- JP2006260555A JP2006260555A JP2006061085A JP2006061085A JP2006260555A JP 2006260555 A JP2006260555 A JP 2006260555A JP 2006061085 A JP2006061085 A JP 2006061085A JP 2006061085 A JP2006061085 A JP 2006061085A JP 2006260555 A JP2006260555 A JP 2006260555A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- circuit
- operand
- manufacturing process
- semiconductor manufacturing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 106
- 238000000034 method Methods 0.000 title claims description 53
- 238000004519 manufacturing process Methods 0.000 claims abstract description 50
- 239000004065 semiconductor Substances 0.000 claims abstract description 46
- 230000015654 memory Effects 0.000 claims description 76
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000007689 inspection Methods 0.000 claims description 6
- 239000000758 substrate Substances 0.000 claims description 6
- 230000006870 function Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 238000007667 floating Methods 0.000 description 12
- 239000011159 matrix material Substances 0.000 description 11
- 238000012546 transfer Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- GZEYLLPOQRZUDF-UHFFFAOYSA-N 7-(dimethylamino)-4-methylchromen-2-one Chemical group CC1=CC(=O)OC2=CC(N(C)C)=CC=C21 GZEYLLPOQRZUDF-UHFFFAOYSA-N 0.000 description 1
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- 101100521334 Mus musculus Prom1 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- MDPILPRLPQYEEN-UHFFFAOYSA-N aluminium arsenide Chemical compound [As]#[Al] MDPILPRLPQYEEN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000012535 impurity Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】新しい半導体製造プロセスにおいて、動作周波数を増加することなく、したがって消費電力を増加することなく演算処理能力を改善する。
【解決手段】Ynmより進歩したXnmの半導体製造プロセスを用いてプロセッサを製造する(300)。プロセッサの動作周波数を、Xnm半導体製造プロセスで許容される動作周波数よりも低く設定する(302)。パイプラインに入力される命令のオペランドが、パイプラインにて実行されている命令のオペランドに従属するかどうかを判定するプロセッサの従属関係検査回路の深度を増加させる(304)。
【選択図】図4
【解決手段】Ynmより進歩したXnmの半導体製造プロセスを用いてプロセッサを製造する(300)。プロセッサの動作周波数を、Xnm半導体製造プロセスで許容される動作周波数よりも低く設定する(302)。パイプラインに入力される命令のオペランドが、パイプラインにて実行されている命令のオペランドに従属するかどうかを判定するプロセッサの従属関係検査回路の深度を増加させる(304)。
【選択図】図4
Description
本発明は、演算処理システムの従属関係検査回路の深度を増やすことによって、処理能力を向上させるための方法と装置に関する。
近年、最先端のコンピュータ・アプリケーションのリアルタイム性、マルチメディアの機能性に対する要求に答えるため、より高速なデータスループットを処理するコンピュータが欲求されている。グラフィックスアプリケーションは、所望の表示結果を得るために、比較的短時間の間に、膨大なデータアクセス、データ計算、データ操作が要求されるアプリケーションのひとつである。これらのアプリケーションは、数百Mbit/sの極めて高速な処理速度を必要とする。高速な処理速度を実行するため、演算処理システムは、シングルプロセッサ、あるいはマルチプロセッサ・アーキテクチャを利用する。マルチプロセッサシステムにおいて、複数のサブプロセッサは、所望の処理結果を得るために、並列に、あるいは少なくとも協働して動作してもよい。
半導体製造プロセスは、18ヶ月ごとに進歩しており、現在では90nmとなっている。半導体製造プロセスの進歩にともない、演算処理の周波数が増加し、結果として消費電力も増加する。周波数の増加は、演算処理の性能を向上させるものであるが、消費電力の増加は望ましくない。消費電力を低減するために、動作電圧を低減させる手法が提案されているが、リーク電流の増加という厄介な問題をもたらす。本発明はこうした課題に鑑みてなされたものであり、その目的は、新しい半導体製造プロセスにおいて、動作周波数を増加することなく、したがって消費電力を増加することなく演算処理能力を改善することを目的とする。
本発明のある態様では、演算処理パイプラインの命令従属関係検査回路の深度を増加する一方で、動作周波数を低減する。命令の従属関係検査の深度を増加することにより、従属関係検査を行うロジックの複雑さは増加するが、これは、新たな半導体製造プロセスにおいて伝搬マトリクスが改善されることによって解決することができる。従属関係検査の深度を増加することにより、倍精度浮動小数点命令においてしばしば発生するバブルを減少させ、演算処理能力を改善する。
本発明のある態様の方法は、Ynmより進歩した(微細な)Xnmの半導体製造プロセスを用いてプロセッサを製造するステップと、パイプラインに入力される命令のオペランドが、パイプラインにて実行されている命令のオペランドに依存するかどうかを判定するプロセッサの従属関係検査回路の深度を増加させるステップと、を含むことを特徴とする。この方法は、低消費電力化のために、プロセッサの動作周波数を、Xnm半導体製造プロセスで許容される動作周波数よりも低く設定するステップを備えてもよい。
この方法は、従属関係検査回路を、その深度が、命令セットに含まれる命令を実行するのに要するクロック数の最大数以上となるように設計するステップを備えてもよい。従属関係検査回路は、ある命令のオペランドがパイプライン内の他の命令のオペランドに従属するかどうかを、1クロックサイクル以内に判定可能であってもよい。
Ynm半導体製造プロセスにおける伝搬遅延が、テストすべきオペランドの個数に関係なく、前記判定を1クロックサイクル以内で実行不能である一方、Xnm半導体製造プロセスにおいて改善された伝搬遅延は、1クロックサイクル以内での判定が可能であってもよい。
本発明の別の態様は、演算処理システムに関する。この演算処理システムは、1つ、あるいはより多くのクロックサイクルを用いて、パイプライン手法によってある命令セットの命令を実行する命令実行回路と、ある命令のオペランドが、パイプライン内の他の命令のオペランドに従属するかどうかを判定する従属関係検査回路と、を備える。従属関係検査回路の深度は、命令セットに含まれる命令を実行するのに要するクロック数の最大数以上であることを特徴とする。少なくとも命令実行回路および従属関係検査回路は、Ynmより進歩した(微細な)Xnmの半導体製造プロセスを用いて製造してもよい。命令実行回路および従属関係検査回路は、許容される動作周波数よりも低い動作周波数で動作してもよい。
なお、以上の構成要素の任意の組合せや、本発明の構成要素や表現を、方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
本発明によれば、処理能力を向上することができる。
同等の構成要素に同一の符号を付したいくつかの図面を参照しながら、実施の形態について説明する。図1は、本発明の少なくとも1つの特徴を具現化するための演算処理システム100の一部を示す。説明の簡略化、明確化のため、対応する方法の態様についても、装置100として記述される図1のブロック図に関する説明を適応することができる。
演算処理システム100は、演算処理パイプラインを用いて好適に構成され、論理命令はパイプライン方式によって処理される。パイプラインは、命令を処理するいくつかのステージに分割されてよい。パイプラインは、一般的には、少なくとも1つの命令を取得し、デコードし、命令の相互間の従属関係(依存性)をチェックし、命令を発行し、その後実行する。この処理に対応して、演算処理システム100は、命令バッファ(図示せず)、命令取得回路102、命令デコード回路104、従属関係検査回路106、命令発行回路(図示せず)、命令実行ステージ108を備える。
命令取得回路は、メモリから命令バッファに対して、少なくとも1つの命令を転送できるように動作することが好ましい。少なくとも1つの命令は、パイプラインに送るためにキューに積み上げられる。命令バッファは、取得された命令を一時的にストア可能な複数のレジスタを含んでもよい。命令デコード回路104は、命令を解析し、命令に応じた機能を実行するための論理マイクロオペレーションを生成する。たとえば、論理マイクロオペレーションは、算術演算や論理演算を特定し、メモリに命令をロードあるいはストアし、ソースオペランド、即値データオペランドを登録する。命令デコード回路104は、命令が、ターゲットレジスタのアドレス、構造リソース、機能ユニットやバスなどのリソースのうち、いずれを使用するかについても指定してもよい。また、命令デコード回路104は、これらのリソースが必要とされる命令パイプラインステージを指定する情報を提供してもよい。
従属関係検査回路106について説明する前に、命令実行ステージ108について簡単に説明する。命令実行ステージ108は、算術命令を実行するために、浮動小数点演算あるいは固定小数点演算を実行する複数のステージを備えて構成されてもよい。必要とされる演算処理能力に応じて、より多くのあるいは少ない浮動小数点、あるいは固定小数点の演算実行ステージが用意される。命令実行ステージ108は、演算処理システム100の他の回路と同様に、スーパースケーラアーキテクチャを用いて構成するのが望ましい。スーパースケーラアーキテクチャでは、1クロックサイクルごとに、2つ以上の命令が発行され、実行される。命令実行ステージ108は、いずれの命令が与えられても、各ステージにおいて、1クロックサイクル、あるいはそれ以上のクロックサイクルで命令を実行する。通常は1クロックサイクルで実行する。
従属関係検査回路106は、複数のレジスタを含む。各実行ステージには、少なくとも1つのレジスタが対応付けられる。レジスタは、パイプラインにおいて実行される命令のオペランドの表示(識別番号、レジスタ番号などをいう)を保存する。これらのレジスタ、あるいはこれに相当するその他の保存手段は、図1において、深度要素106Aとして表される。従属関係検査回路106は、パイプラインに投入される命令のオペランドが、すでにパイプラインに投入された他のオペランドに依存するかを判定するデジタル論理回路を含む。もし、依存する場合、新たに与えられた命令は、たとえば、他の命令の実行が完了し、他のオペランドが更新されるまで、実行しない。
ある実施の形態において論理回路は、オペランドの相互依存性をテストする排他的論理和(以下、単にXORともいう)ゲートを含んでもよい。より具体的には、オペランドがすでにパイプラインに投入されているかを判定するために、入力される各命令のオペランドを、レジスタ106Aの入力値のXORをとることによって比較する。マルチパイプラインが実装される場合には(ここではそれが望ましい)、XOR演算の数が増加する。より一般的には、所定の命令に対して、従属関係検査回路106において実行される比較処理の回数(たとえばXOR演算など)は、その命令のオペランドの数と、同時に処理される命令の数と、各パイプライン内の命令の数と、を乗じた関数として得ることができる。従属関係検査回路106は、ひとつのクロックサイクル内に命令の依存性を判定することが望ましいため、従属関係検査回路106の複雑さの問題は、より込み入ったものとなる。
従来技術においては、従属関係検査の深度を低減して、その結果、従属関係検査を完了するために必要な比較処理の回数を低減し、この問題の解決を図っていた。この手法では、入力された命令が、依存性チェックの完了のために従属関係検査の深度より多くのステージ(クロックサイクル)を必要とする場合に、パイプライン内に、望ましくないバブルを生むこととなる。これに対して、本実施の形態においては、従属関係検査回路106の深度は、複雑化の問題の制限されず、命令が従属関係検査の完了のために必要とする実行ステージの最大数(あるいはそれに近い数)に設定することができる。最大、あるいはそれに近い数の実行ステージは、命令実行回路108のサイクルNとして図示される。これは、従属関係検査回路106の深度Nと合致する。多くの実行ステージを必要とする命令の例としては、倍精度浮動小数点命令を挙げることができる。
次に図2を参照する。図2は、実施の形態に係る図1の演算処理システムの性能パラメータを示す図である。本発明は、いずれのオペレーション理論に限定されるものではないが、システム開発における製造、設計、実装、そしてプログラミングの段階において、これらの性能パラメータ特性を考慮することにより、上述の演算処理システム100の有利なオペレーションが実現される。図2は、横座標軸が時間を、縦座標軸が相対値を示す。時間の関数として図示された相対値は、利用可能な演算処理システムの半導体製造プロセス、半導体製造プロセスの伝搬マトリクス、そのプロセスにおける潜在的な動作周波数、ならびに各動作周波数における消費電力を示している。
半導体製造プロセス技術は、18ヶ月単位で進歩しており、現在のところ、90nmとなっている。将来の製造プロセスは、65nm、45nmとなると考えられている。製造プロセスが時間とともに進歩すると、そのときどきの製造プロセスを用いた場合の演算処理システムの動作周波数は上昇していく。動作周波数の上昇は、システムの処理性能を向上させる一方で、周波数の上昇は、消費電力の増加という望ましくない問題をもたらす。半導体製造プロセスの機能の進歩にともない、伝搬マトリクスも改善されていく。
図3に示すように、ここで問題となる伝搬マトリクスは、ある半導体製造プロセスによって造られた数段の論理ゲートにおける論理信号の伝搬遅延である。ここでは議論を簡潔化するため、信号の伝搬遅延を、たとえば1クロックサイクルなど所定の期間に対して比較するものとする。”1FO4”(Fun-out four-equivalent)伝搬マトリクスは、1クロックサイクルで、インバータ1段により構成される論理ゲート分の伝搬遅延が発生することを意味する。”2FO4”伝搬マトリクスは、1クロックサイクルで、2段のインバータで構成される論理ゲート分の遅延が発生することを意味する。”3FO4”伝搬マトリクスは、1クロックサイクルで同様に3段のインバータで構成される論理ゲート分の遅延が発生することを意味する。したがって、90nmプロセスから65nmプロセスへと半導体製造プロセスが進歩すると、”10FO4”であった伝搬マトリクスは、”15FO4”から”20FO4”程度まで著しく改善されることになる。
図4は、実施の形態において実行される処理工程を図式的に示すフローチャートである。本実施の形態において、演算処理システム100は、90nm製造プロセスに対して、たとえば65nm製造プロセスを用いて製造するものとする(ステップ300)。そして、一般的な知見に反し、演算処理システム100の動作周波数を論理上期待される値まで上昇させないものとする。動作周波数は、従前の半導体製造プロセスに対応する程度の、たとえば、90nmプロセス論理上の最大周波数程度の低いレベルに抑えられる(ステップ302)。次に、動作周波数を、低く設定し、あるいは最大値に設定しなかったことにより、演算処理性能が低下することに対応するため、従属関係検査回路106の深度を増加させる(ステップ304)。深度が増加するとともに、従属関係検査における比較処理を行う際の複雑さは著しく増加するが、このような複雑さは、伝搬マトリクスが改善された将来の半導体製造プロセスによって対応することができる。従属関係検査の判定を1クロックサイクルで実現しようとした場合、伝搬マトリクスの増加にともない、たとえば、”10FO4”から”20FO4”へと増加すると、従属関係検査回路106の論理回路に用いられる論理ゲートの数は著しく増加する。
消費電力を低減しつつ、演算処理能力を改善するための、さらなる技術については、同時期に出願された米国特許出願(No.11/079,565)に開示されている(METHODS AND APPARATUS FOR IMPROVING PROCESSING PERFORMANCE BY CONTROLLING LATCH POINTS, No.535/21 3/14/2005出願)。この技術では、演算処理プロセッサに、命令前置実行回路、命令実行回路を設ける。命令前置実行回路は、命令セットの命令を、後続する処理のために準備する。命令実行回路は、複数の実行ステージを含み、パイプライン方式によって、実行ステージごとに1クロックサイクルで命令を実行する。実行ステージは、命令に応じてデータを処理するデジタル論理回路と、次段の実行ステージに対して供給するため、各クロックサイクルごとに、データをラッチするラッチポイント回路と、を含む。命令実行回路の実行ステージの個数は、本システム上で実行されるソフトウェアプログラムから出力されるAPIコードに応じて変化する。この技術を併せて利用すれば、さらに消費電力を低減することができる。
図5は、実施の形態に利用可能なマルチプロセスシステム600Aを示す。マルチプロセスシステム600Aは、複数のプロセッサ602A〜602D、それぞれに対応付けられたローカルメモリ604A〜604D、バス608を介して接続される共有メモリ606を含む。例として4つのプロセッサ602を示しているが、プロセッサの数は本発明の要旨を逸脱しない範囲で変更してもよい。各プロセッサ602は、同一の構成であってもよいし、異なる構成としてもよい。
ローカルメモリ604は、対応するプロセッサ602と同一の半導体チップ(半導体基板)上に形成することが望ましく、ローカルメモリ604は、ハードウェアによるキャッシュメモリ機能を実現するために、オンチップ、オフチップのハードウェアのキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが利用できる場合には、伝統的なハードウェアキャッシュメモリであることが好ましい。
プロセッサ602は、プログラムの実行およびデータ操作のために、共有メモリ606からバス608を介して各ローカルメモリ604にデータ(プログラムデータを含む)をコピーするためのデータアクセス要求を発する。データアクセスを容易にするための手段として、好ましくは図示しないダイレクトメモリアクセスコントローラ(DMAC)が実装される。各プロセッサのDMACは、上述した本発明の要旨の範囲において、実質的に同等の能力とすることが望ましい。
共有メモリ606は、プロセッサ602と広いバンド幅を有するメモリ接続手段(図示せず)を介して接続されるダイナミックランダムアクセスメモリ(DRAM)であることが望ましい。共有メモリ606はDRAMであることが好ましいが、他の手段、たとえばスタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、ホログラフィックメモリなでであってもよい。
各プロセッサ602は、論理命令をパイプライン手法によって処理する、処理パイプラインを用いて実装されることが望ましい。パイプラインは、命令が処理されるいくつかのステージに分割して構成されてもよいが、一般的には、1つ以上の命令を取得し、解析し、命令間の相互依存性をチェックし、命令を発行し、実行する機能を備える。このために、プロセッサ602は、命令バッファ、命令解析回路、従属関係検査回路、命令発行回路、および実行ステージを含んでもよい。
本実施の形態において、1つ、あるいはそれ以上のプロセッサ602(好ましくはすべてのプロセッサ602)を、高度な半導体製造プロセスを用いて製造することが望ましい。ここでは、例として、Ynmに対して、Xnmのプロセスを用いるとする。そして、動作周波数Fを、Xnmのプロセスで利用可能な周波数よりも低く設定する。これによって、消費電力が低減される。さらに、処理能力を向上するため、ひとつ、あるいはそれ以上のプロセッサ602の従属関係検査回路の深度を、高度な半導体製造プロセスに応じて大きくする。従属関係検査回路は、プロセッサ602のパイプラインに入力される命令のオペランドが、パイプラインにおいて実行されている命令のオペランドに依存するかどうかを判定する論理回路を含んでいてもよい。論理回路の複雑化の問題は、高度なXnmの半導体製造プロセスの伝搬マトリクスの増加によって解決される。
実施の形態において、プロセッサ602およびローカルメモリ604は、共通の半導体基板上に配置されてもよい。さらに、実施の形態では、共有メモリ606を、共通の半導体基板上に配置してもよいし、別々に配置してもよい。
別の実施の形態では、ひとつ、あるいは複数のプロセッサ602は、他のプロセッサ602と連動して動作してもよいし、バス608を介して共有メモリ606と結合するメインプロセッサとして動作してもよい。メインプロセッサは、他のプロセッサ602によるデータ処理を、スケジューリングし、調整してもよい。他のプロセッサ602とは異なり、メインプロセッサは、共有メモリ606やプロセッサ602のローカルメモリ604の少なくともひとつから取得されるキャッシュデータを実施可能なハードウェア上のキャッシュメモリと接続されてもよい。メインプロセッサは、DMA技術など、既知の技術を用いて、プログラムの実行およびデータ操作のために、共有メモリ606からバス608を介してローカルメモリ604にデータ(プログラムデータを含む)をコピーするためのデータアクセス要求を発してもよい。
ここで、上述した一つ以上の特徴の実現に適した、好適なマルチプロセッサシステムのコンピュータアーキテクチャについて説明する。一つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、PCシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および/または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、3Dコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、1以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
図6は、基本的な処理モジュールであるプロセッサ要素(PE)500を示す。PE500は、I/Oインタフェース502と、処理ユニット(PU)504と、複数のサブ処理ユニット508、すなわち、サブ処理ユニット508Aと、サブ処理ユニット508Bと、サブ処理ユニット508Cと、サブ処理ユニット508Dとを含む。ローカル(すなわち内部)PEバス512は、PU504、SPU群508、およびメモリインタフェース511間のデータおよびアプリケーションの伝送を行う。ローカルPEバス512は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
PE500はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、PE500はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE500はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)ロジック回路等として実装することもできる。
PE500は、広帯域メモリ接続516を介してダイナミックランダムアクセスメモリ(DRAM)514に密接に関連付けられる。メモリ514は好適にはダイナミックランダムアクセスメモリ(DRAM)だが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
PU504およびサブ処理ユニット508は、それぞれ、ダイレクトメモリアクセス(DMA)機能を有するメモリフローコントローラ(MFC)と接続されることが望ましい。MFCは、メモリインタフェース511と協働して、DRAM514、PE500におけるサブ処理ユニット508、PU504間のデータの転送を円滑にするものである。ここで、DMACおよび/またはメモリインタフェース511は、サブ処理ユニット508とPU504とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、DAMCの機能および/またはメモリインタフェース511の機能は、サブ処理ユニット508およびPU504の一つ以上(好ましくはすべて)に一体化できる。ここで、DRAM514もまた、PE500から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、DRAM514は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
PU504は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU504はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には、一命令複数データ(SIMD)プロセッサである。PU504の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。PU504としては、RISC(reduced instruction−set computing)技術を用いるマイクロプロセッサアーキテクチャとなるPowerPC(登録商標)コアを用いることが好ましい。RISCは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
ここで、PU504は、サブ処理ユニット508のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット508は、メイン処理ユニットPUによる処理、すなわち各々のサブ処理ユニット508によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、PE500内において、複数のPUを実装してもよい。
このモジュール構造では、あるコンピュータシステムで使用されるPE500の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE群500、ワークステーションは二つのPE群500、PDAは一つのPE500を使用しうる。あるソフトウェアセルの処理に割り当てられるPE500のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
図7は、サブ処理ユニット(SPU)508の好適な構造と機能を示す図である。サブ処理ユニット508のアーキテクチャは、汎用プロセッサ(多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの)と特殊用途のプロセッサ(一つのアプリケーションにおいて高い性能を実現するように設計されている)との間に位置するものであることが望ましい。サブ処理ユニット508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット508の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGエンコード/デコード、暗号化、復号化、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
サブ処理ユニット508は、すなわちSPUコア510Aとメモリフローコントローラ(MFC)510Bという二つの基本機能ユニットを有する。SPUコア510Aは、プログラムの実行、データの操作などを担うものであり、一方、MFC510Bは、SPUコア510Aと、システムのDRAM514との間のデータ転送に関連する機能を担うものである。
SPUコア510Aはローカルメモリ550と、命令(インストラクション)ユニット(IU)552と、レジスタ554と、一つ以上の浮動小数点実行ステージ556と、一つ以上の固定小数点実行ステージ558とを有する。ローカルメモリ550は、SRAMのようなシングルポートのRAMを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、SPUコア510Aは、キャッシュよりも、比較的小さいローカルメモリ550を用いる。実際には、リアルタイムのアプリケーション(およびここで言及したほかのアプリケーション)のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット508A内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット/ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うDMA転送をオーバーラップすることで、ローカルメモリSRAM550内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。DMA転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、SRAMローカルメモリアプローチは、DMA転送サイズが十分大きいかつ十分予測可能なとき(例えばデータが要求される前にDMAコマンドを発行することができるとき)において優位性を提供する。
サブ処理ユニット508のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ550を参照する。なお、ローカルメモリ550の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス(RA)が付与されている。これは、特権レベルのソフトウェアがローカルメモリ550を一つの処理における実効アドレス(EA)にマッピングすることを可能とし、それによって二つのローカルメモリ550間のDMA転送が容易になる。PU504は、実効アドレスを用いてローカルメモリ550に直接アクセスすることもできる。ローカルメモリ550は、256キロバイトの容量を有し、レジスタ354の容量は128×128ビットであることが望ましい。
SPUコア510Aは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の従属関係のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット352は、命令バッファと、命令デコード回路と、従属関係検査回路と、命令発行回路とを含む。
命令バッファは、ローカルメモリ550と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして(すなわち実質上同時に)レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ2または3以下となるようにするサイズであることが好ましい。
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ550へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび/または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび/またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
従属関係検査回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに従属するか否かを判定するためのチェックを行うデジタルロジックを含む。従属するならば、チェック対象となる命令は、これらの他のオペランドが(例えば、これらの他の命令の実行の完了を許可することによって)更新されるまで、実行されるべきではない。従属関係検査回路は、デコード回路104から同時に送信されてきた複数の命令の従属関係を判定することが好ましい。
命令発行回路は、浮動小数点実行ステージ556および/または固定小数点実行ステージ558に命令を発行することができる。
レジスタ554は、128―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
SPUコア510Aは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。SPUコア510Aは、命令バッファから同時に送信される命令の数、例えば2と3の間(クロックサイクル毎に二つまたは3つの命令が発行されることを意味する)に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点実行ステージ556と固定小数点実行ステージ558を用いることができる。好適な実施の形態では、浮動小数点実行ステージ556と固定小数点実行ステージ558の望ましいスピードは、それぞれ、毎秒32ギガ浮動小数点オペレーション(32 GFLOPS)と毎秒32ギガオペレーション(32 GOPS)である。
MFC510Bは、バスインターフェースユニット(BIU)564と、メモリマネジメントユニット(MMU)562と、ダイレクトメモリアクセスコントローラ(DMAC)560とを有することが望ましい。低電力消費の設計目的を達成するために、MFC510Bは、DMAC560を除いて、SPUコア510Aおよびバス512の半分の周波数(半分のスピード)で動作することが好ましい。MFC510Bは、バス512からサブ処理ユニット508に入るデータと命令を操作することができ、DMACのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。BIU564は、バス512とMMU562とDMAC560との間のインターフェースを提供する。したがって、サブ処理ユニット508(SPUコア510AとMFC510Bを含む)とDMAC560は、物理的および/または論理的にバス512と接続されている。
MMU562は、メモリアクセスのために実効アドレス(DMAコマンドから取得される)をリアルアドレスへ変換することができるようにすることが望ましい。例えば、MMU562は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、MMU562は、64ビットのメモリマネジメントモジュールをベースにして実装でき、4Kバイト、64Kバイト、1メガバイト、16メガバイトのページサイズと256MBのセグメントサイズを有する264のバイトの実効アドレス空間を提供することができる。MMU562は、DMAコマンドのために、265までの仮想メモリと、242バイト(4テラバイト)の物理メモリをサポート可能であることが好ましい。MMU562のハードウェアは、8−エントリの完全連想SLB、256−エントリの4ウェイセット連想TLB、TLBのための4×4代替マネジメントテーブル(RMT)を含むものとすることができる。なお、RMTはハードウェアTLBミスのハンドリングに用いられるものである。
DMAC560は、SPUコア510AからのDMAコマンドと、一つ以上の、PU504および/または他のSPUのような他のデバイスからのDMAコマンドとを管理することができることが望ましい。DMAコマンドは下記の3つのカテゴリがある。すなわち、ローカルメモリ550から共有メモリ514へデータを移動させるPutコマンド、共有メモリ514からローカルメモリ550へデータを移動させるGetコマンド、SLIコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。DMAコマンドに応じて、MMU562は実効アドレスをリアルアドレスに変換し、このリアルアドレスはBIU564に転送される。
SPUコア510Aはチャンネルインターフェースとデータインターフェースとを用いて、DMAC560内のインターフェースと通信(DMAコマンド、ステータスなどの送信)することが好ましい。SPUコア510Aは、チャンネルインターフェースを介してDMAコマンドをDMAC560内のDMAキューに送信する。いったん、DMAキューに格納されたDMAコマンドは、DMAC560内の発行ロジックと完了ロジックにより操作される。一つのDMAコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がSPUコア510Aに返送される。
図8は、PU504の好ましい構造と機能を示す図である。PU504は、PUコア504Aとメモリフローコントローラ、すなわちMFC504Bとの二つの基本機能ユニットを有する。PUコア504Aは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、MFC504Bは、PUコア504Aと、処理システム100のメモリスペースとの間のデータ転送に関連する機能を担うものである。
PUコア504Aは、L1キャッシュ570と、命令ユニット572と、レジスタ574と、少なくとも一つの浮動小数点実行ステージ576と、少なくとも一つの固定小数点実行ステージ578とを有する。L1キャッシュ570は、共有メモリ606、プロセッサ602、あるいはMFC504Bにおけるほかの部分のメモリスペースから受信したデータのキャッシング機能を提供する。PUコア504Aはスーパーパイプラインとして実装されることが好ましいため、命令ユニット572は、フェッチ、デコード、従属関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。PUコア504Aは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット572から2以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ576と固定小数点実行ステージ578は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点実行ステージ576と固定小数点実行ステージ578とを用いることができる。
MFC504Bは、バスインターフェースユニット(BIU)580と、L2キャッシュ582と、キャッシュ不可ユニット(NCU)584と、コアインターフェースユニット(CIU)586と、メモリマネジメントユニット(MMU)588とを有する。低電力消費の設計目的を達成するために、MFC504Bのほとんどは、PUコア504Aとバス108の半分の周波数(半分のスピード)で動作することが好ましい。
BIU580は、バス608と、L2キャッシュ582と、NCU584のロジックブロックとの間のインターフェースを提供する。BIU580は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス608上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、BIU580は、L2キャッシュ582とNCU584の代わりに、バス608へのロードリクエストとストアリクエストを発信する。BIU580は、バス608へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス608上のデータオペレーションは、8ビートになるように設計されることができ、そして、BIU580は、キャッシュラインが128バイト前後であり、一貫性と同期の精度が128KBであるように設計されることが好ましい。
L2キャッシュ582(およびそれをサポートするハードウェアロジック)は、512KBデータをキャッシュするように設計されることが好ましい。例えば、L2キャッシュ582は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。L2キャッシュ582は、8ウエイセットアソシエイティブシステムであることが好ましい。L2キャッシュ582は、6つのキャストアウトキュー(例えば6つのRCマシン)に合わせた6つのリロードキューと、8つの(64バイトの幅の)ストアキューとを有することができる。L2キャッシュ582は、L1キャッシュ570の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ(動作中に変更)されたときの、復元状況において有用である。この構成は、L1キャッシュ570が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる(リクエストがL2キャッシュ582で止まることができるから)。この構成は、L2キャッシュ582にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
NCU584はインターフェースによってCIU586と、L2キャッシュ582と、BIU580と接続されており、通常、PUコア504Aとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。NCU584は、PUコア504Aとの通信のうちの、L2キャッシュ582によって扱わない全ての通信を操作することが好ましい。ここで、L2キャッシュ582によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、NCU584は、半分のスピードで動作することが好ましい。
CIU586は、MFC504BとPUコア504Aとの境界線上に配置され、浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、MMU588から、L2キャッシュ582とNCU584へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。PUコア504AとMMU588はフルスピードで動作し、L2キャッシュ582とNCU584は2:1のスピード比で動作可能であることが好ましい。こうすることによって、CIU586に周波数境界線が存在することになり、この境界線は、その一つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
CIU586は、ロードユニット、ストアユニット、リロードユニットの3つの機能ブロックから構成される。さらに、データをプリフェッチする機能がCIU586により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。CIU586は、下記の動作を実行可能であることが好ましい:(i)PUコア504AとMMU588からのロードリクエストとストアリクエストを受信する、(ii)これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する(2:1クロック周波数変換)、(iii)キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれL2キャッシュ582とNCU584へルーティングする、(iv)L2キャッシュ582とNCU584へのリクエストが均等になるように調整する、(v)リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、L2キャッシュ582とNCU584へ送信するリクエストのフローコントロールを提供する、(vi)ロードリターンデータを受信すると共に、これらのデータを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へルーティングする、(vii)スヌープリクエストを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へ転送する、(viii)ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
MMU588は、第2レベルアドレス変換手段のごとく、PUコア504Aのためにアドレス変換を提供することが好ましい。変換の第1レベルは、PUコア504A内において、セパレート命令と、MMU588より遥かに小さくてかつ速いデータERAT(実効アドレスからリアルアドレスへの変換)アレイとにより提供されることが好ましい。
PU504は64ビットで実装され、4〜6GHz、10FO4(Fan−out−of−four)で動作することが好ましい。レジスタは64ビットの長さを有することが好ましく(特定用途のための一つまたはより多くのレジスタが64ビットより小さいかもしれないが)、実効アドレスは64ビットの長さを有することが好ましい。命令ユニット572、レジスタ574、浮動小数点実行ステージ576と固定小数点実行ステージ578はRISCコンピューティング技術を達成するためにPowerPC技術により実装されることが好ましい。
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第6526491号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のPEを含め、さらに、このPEに、PU、DMACおよび8個のAPUを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ(VS)の構造を有してもよく、この場合、VSに、PU、DMACおよび4つのAPUを含めてもよい。
本発明のさらに別の態様の少なくともひとつにおいて、上述した方法および装置は、図面に示されるハードウェアなどを用いて実装することができる。これらのハードウェアは、標準的なデジタル回路、ソフトウェア、ファームウェアを実行可能なプロセッサ、あるいは、プログラマブルROM(PROMs)、プログラマブルアレイロジックデバイス(PALs)などのプログラマブルデジタル機器やシステムなどの既知の技術を用いて実現することができる。さらに、図に示された装置は、機能ブロックに分割して示されるが、こうしたブロックは、回路を分離し、あるいは1つ以上の機能ユニットを組み合わせることにより実現することができる。さらに、本発明のいくつかの態様は、移動や配布のための記録メディア(フレキシブルディスク、メモリチップなど)に記録可能なソフトウェアや、ファームウェアプログラムにより実現することができる。
以上、本発明について、実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
100 演算処理システム、 102 命令取得回路、 104 命令デコード回路、 106 従属関係検査回路、 108 命令実行ステージ、 600 マルチプロセスシステム、 602 プロセッサ、 604 ローカルメモリ、 606 共有メモリ、 608 バス。
Claims (23)
- Ynmより進歩したXnmの半導体製造プロセスを用いてプロセッサを製造するステップと、
パイプラインに入力される命令のオペランドが、パイプラインにて実行されている命令のオペランドに従属するかどうかを判定する前記プロセッサの従属関係検査回路の深度を増加させるステップと、
を含むことを特徴とする方法。 - 請求項1に記載の方法であって、さらに、
低消費電力化のために、前記プロセッサの動作周波数を、前記Xnm半導体製造プロセスで許容される動作周波数よりも低く設定するステップを備えることを特徴とする方法。 - 請求項2に記載の方法であって、
前記従属関係検査回路の深度を、前記動作周波数を低く設定したことにより低下した演算処理能力が回復するように増加させることを特徴とする方法。 - 請求項1から3のいずれかに記載の方法であって、さらに、
前記従属関係検査回路を、その深度が、命令セットに含まれる命令を実行するのに要するクロック数の最大数以上となるように設計するステップを備えることを特徴とする方法。 - 請求項1から3のいずれかに記載の方法であって、さらに、
ある命令のオペランドが前記パイプライン内の他の命令のオペランドに従属するかどうかの前記判定を、1クロックサイクル以内に判定するステップを備えることを特徴とする方法。 - 請求項5に記載の方法であって、
Ynm半導体製造プロセスにおける伝搬遅延が、テストすべきオペランドの個数に関係なく、前記判定を1クロックサイクル以内で実行不能である一方、
Xnm半導体製造プロセスにおいて改善された伝搬遅延は、1クロックサイクル以内での判定が可能であることを特徴とする方法。 - プロセッサの命令実行回路の命令セットの命令を、ひとつ、あるいは複数のクロックサイクル以内で各命令が実行されるパイプライン手法によって実行するステップと、
その深度が、命令セットに含まれる命令を実行するのに要するクロック数の最大数以上となるように設計された前記プロセッサの従属関係検査回路を用いて、ある命令のオペランドが、パイプライン内の他の命令のオペランドに従属するかどうかを判定するステップと、
を備えることを特徴とする方法。 - 請求項7に記載の方法であって、
ある命令のオペランドが前記パイプライン内の他の命令のオペランドに従属するかどうかの前記判定を、1クロックサイクル以内に実行することを特徴とする方法。 - 請求項8に記載の方法であって、さらに、
低消費電力化のために、前記プロセッサの動作周波数を、半導体製造プロセスで許容される動作周波数よりも低く設定するステップを備えることを特徴とする方法。 - 1つ、あるいはより多くのクロックサイクルを用いて、パイプライン手法によってある命令セットの命令を実行する命令実行回路と、
ある命令のオペランドが、パイプライン内の他の命令のオペランドに従属するかどうかを判定する従属関係検査回路と、
を備え、
前記従属関係検査回路の深度は、前記命令セットに含まれる命令を実行するのに要するクロック数の最大数以上であることを特徴とする演算処理システム。 - 請求項10に記載の演算処理システムであって、さらに、
パイプラインにおいて実行される命令セットの命令を取得する命令取得回路と、
取得した前記命令を、実行に先立ちマイクロオペレーションに変換する命令デコード回路と、を備えることを特徴とする演算処理システム。 - 請求項10または11に記載の演算処理システムであって、
Ynm半導体製造プロセスでは伝搬遅延によって、前記従属関係検査回路の深度が確保できず、Xnm半導体製造プロセスにおいて改善された伝搬遅延では、前記従属関係検査回路の深度が確保できる場合において、
少なくとも前記命令実行回路および前記従属関係検査回路は、前記Ynmより進歩した前記Xnmの半導体製造プロセスを用いて製造されることを特徴とする演算処理システム。 - 請求項10から12のいずれかに記載の演算処理システムであって、
従属関係検査回路は、
ある命令のオペランドがパイプライン内の他の命令のオペランドに従属するかどうかの前記判定を、1クロックサイクル以内に判定することを特徴とする演算処理システム。 - 請求項13に記載の演算処理システムであって、
Ynm半導体製造プロセスでは伝搬遅延によって、テストすべきオペランドの個数に関係なく、1クロックサイクル内に前記判定を行うことができず、Xnm半導体製造プロセスにおいて改善された伝搬遅延は、1クロックサイクル以内での判定が可能である場合に、
少なくとも前記命令実行回路および前記従属関係検査回路は、Ynmより進歩したXnmの半導体製造プロセスを用いて製造されることを特徴とする演算処理システム。 - 請求項10から14のいずれかに記載の演算処理システムであって、
少なくとも前記命令実行回路および前記従属関係検査回路は、Ynmより進歩したXnmの半導体製造プロセスを用いて製造され、
低消費電力化のために、前記演算処理システムの動作周波数は、前記Xnm半導体製造プロセスで許容される動作周波数よりも低く設定されることを特徴とする演算処理システム。 - 請求項15に記載の演算処理システムであって、
前記従属関係検査回路の深度を、前記動作周波数を低く設定したことにより低下した演算処理能力が回復するように増加させることを特徴とする演算処理システム。 - ある命令セットの命令を実行するために十分な複数のステージを含むパイプラインと、
前記パイプライン内に設けられ、前記命令セットの命令を実行する命令実行回路と、
従属関係検査回路と、
を備え、
前記従属関係検査回路は、
前記パイプラインの各ステージに対応付けられたひとつあるいは複数のレジスタであって、前記パイプラインにおいて実行される命令のオペランドの指定をストアするレジスタと、
次の命令のオペランドが、前記レジスタによって指定されたオペランドに従属するかを判定する論理回路と、
を含み、
前記命令実行回路および前記従属関係検査回路は、半導体製造プロセスにより許容される動作周波数よりも低い動作周波数で動作することを特徴とする装置。 - 請求項17に記載の装置であって、
前記従属関係検査回路は、命令セットに含まれる命令を実行するのに要するクロック数の最大数以上の深度を有することを特徴とする装置。 - 請求項17または18に記載の装置であって、
前記従属関係検査回路は、ある命令のオペランドが前記パイプライン内の他の命令のオペランドに従属するかどうかを、1クロックサイクル以内に判定することを特徴とする装置。 - 請求項17から19のいずれかに記載の装置であって、さらに、
命令実行回路および従属関係検査回路を含むプロセッサを複数個備えることを特徴とする装置。 - 請求項20に記載の装置であって、
前記プロセッサは、共通の半導体基板上に形成されることを特徴とする装置。 - 請求項21に記載の装置であって、
前記プロセッサのそれぞれは、実行すべき命令をストアするローカルメモリをさらに含むことを特徴とする装置。 - 請求項21または22に記載の装置であって、
前記従属関係検査回路の前記レジスタおよび前記論理回路が、Ynm半導体製造プロセスでは伝搬遅延によって、次の命令のオペランドが、前記レジスタによって指定されたオペランドに従属するかを1クロックサイクル内に判定することができず、Xnm半導体製造プロセスにおいて改善された伝搬遅延は、1クロックサイクル以内での判定が可能である場合に、
前記プロセッサを、Ynmより進歩したXnmの半導体製造プロセスを用いて製造したことを特徴とする装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/079,566 US20060206732A1 (en) | 2005-03-14 | 2005-03-14 | Methods and apparatus for improving processing performance using instruction dependency check depth |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006260555A true JP2006260555A (ja) | 2006-09-28 |
Family
ID=36972401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006061085A Pending JP2006260555A (ja) | 2005-03-14 | 2006-03-07 | 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20060206732A1 (ja) |
JP (1) | JP2006260555A (ja) |
CN (1) | CN100419638C (ja) |
TW (1) | TWI314286B (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707625B2 (en) * | 2005-03-30 | 2010-04-27 | Hid Global Corporation | Credential processing device event management |
TWI334571B (en) | 2007-02-16 | 2010-12-11 | Via Tech Inc | Program instruction rearrangement methods |
CN114116009B (zh) * | 2022-01-26 | 2022-04-22 | 广东省新一代通信与网络创新研究院 | 一种用于处理器的寄存器重命名方法及系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01231126A (ja) * | 1988-03-11 | 1989-09-14 | Oki Electric Ind Co Ltd | 情報処理装置 |
US5465373A (en) * | 1993-01-08 | 1995-11-07 | International Business Machines Corporation | Method and system for single cycle dispatch of multiple instructions in a superscalar processor system |
US6138230A (en) * | 1993-10-18 | 2000-10-24 | Via-Cyrix, Inc. | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline |
TW295646B (ja) * | 1995-01-25 | 1997-01-11 | Ibm | |
US5940785A (en) * | 1996-04-29 | 1999-08-17 | International Business Machines Corporation | Performance-temperature optimization by cooperatively varying the voltage and frequency of a circuit |
US5798918A (en) * | 1996-04-29 | 1998-08-25 | International Business Machines Corporation | Performance-temperature optimization by modulating the switching factor of a circuit |
US6591342B1 (en) * | 1999-12-14 | 2003-07-08 | Intel Corporation | Memory disambiguation for large instruction windows |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US6950928B2 (en) * | 2001-03-30 | 2005-09-27 | Intel Corporation | Apparatus, method and system for fast register renaming using virtual renaming, including by using rename information or a renamed register |
JP3685401B2 (ja) * | 2001-12-26 | 2005-08-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Cpu制御方法、これを用いたコンピュータ装置及びcpu並びにプログラム |
ITMI20022003A1 (it) * | 2002-09-20 | 2004-03-21 | Atmel Corp | Apparecchio e metodo per la decompressione dinamica di programmi. |
-
2005
- 2005-03-14 US US11/079,566 patent/US20060206732A1/en not_active Abandoned
-
2006
- 2006-03-07 JP JP2006061085A patent/JP2006260555A/ja active Pending
- 2006-03-14 CN CNB2006100591242A patent/CN100419638C/zh not_active Expired - Fee Related
- 2006-03-14 TW TW095108591A patent/TWI314286B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1834852A (zh) | 2006-09-20 |
CN100419638C (zh) | 2008-09-17 |
TW200703143A (en) | 2007-01-16 |
TWI314286B (en) | 2009-09-01 |
US20060206732A1 (en) | 2006-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4322259B2 (ja) | マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 | |
JP3802042B2 (ja) | キャッシュメモリ実装方法および装置、キャッシュメモリシステム | |
US7814166B2 (en) | Methods and apparatus for virtualizing an address space | |
JP4346612B2 (ja) | 情報処理方法および装置 | |
EP1839165B1 (en) | Methods and apparatus for hybrid dma queue and dma table | |
JP4219369B2 (ja) | プロセッサシステム内においてスタックを分離して管理する方法および装置 | |
JP4243318B2 (ja) | ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置 | |
US7818724B2 (en) | Methods and apparatus for instruction set emulation | |
EP1846829B1 (en) | Method and apparatus for address translation from an external device to a memory of a processor | |
JP2006318477A (ja) | ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置 | |
JP2006172468A (ja) | システム内部のデータ転送を処理する装置および方法 | |
JP2006221638A (ja) | タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置 | |
JP2006260556A (ja) | ラッチポイントを制御することにより、演算処理能力を改善する方法、装置ならびにシステム | |
JP4024271B2 (ja) | マルチプロセッサシステムにおいて命令を処理するための方法と装置 | |
JP2006260555A (ja) | 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置 | |
JP2006286002A (ja) | 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置 | |
US20080282063A1 (en) | Methods and apparatus for latency control in a multiprocessor system | |
US20080103708A1 (en) | Leakage power estimation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060912 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061108 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070508 |