JPH0926877A - 読取りおよび/または書込みポートのバンドワイドが狭いレジスタ・ファイルを有するコンピュータ・プロセッサ - Google Patents
読取りおよび/または書込みポートのバンドワイドが狭いレジスタ・ファイルを有するコンピュータ・プロセッサInfo
- Publication number
- JPH0926877A JPH0926877A JP8099598A JP9959896A JPH0926877A JP H0926877 A JPH0926877 A JP H0926877A JP 8099598 A JP8099598 A JP 8099598A JP 9959896 A JP9959896 A JP 9959896A JP H0926877 A JPH0926877 A JP H0926877A
- Authority
- JP
- Japan
- Prior art keywords
- register
- registers
- instructions
- cycle
- register file
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 必要なメモリを小さくしたプロセッサを得
る。 【解決手段】 プロセッサはレジスタのレジスタファイ
ルと、(z)本のパイプラインを有している実行ユニッ
トにサイクルごとにプログラムの命令を(i)個まで発
行できるディスパッチ・ユニットとを含んでいる。命令
の中にはレジスタ・ファイルのレジスタのうちのいくつ
かをソース・オペランドとして指定し、レジスタ・ファ
イルのレジスタの一部を宛先レジスタとして示すものを
含むプロセッサに関する。プロセッサはレジスタ・ファ
イルのレジスタを格納する、サイクルごとに最大(N)
個のレジスタ値(ただし、Nはサイクル中にアクセスす
る必要があるレジスタ値の最大値未満である)を受け入
れるように構成された(N)個のアクセス・ポートを有
しているメモリを含んでいる。
る。 【解決手段】 プロセッサはレジスタのレジスタファイ
ルと、(z)本のパイプラインを有している実行ユニッ
トにサイクルごとにプログラムの命令を(i)個まで発
行できるディスパッチ・ユニットとを含んでいる。命令
の中にはレジスタ・ファイルのレジスタのうちのいくつ
かをソース・オペランドとして指定し、レジスタ・ファ
イルのレジスタの一部を宛先レジスタとして示すものを
含むプロセッサに関する。プロセッサはレジスタ・ファ
イルのレジスタを格納する、サイクルごとに最大(N)
個のレジスタ値(ただし、Nはサイクル中にアクセスす
る必要があるレジスタ値の最大値未満である)を受け入
れるように構成された(N)個のアクセス・ポートを有
しているメモリを含んでいる。
Description
【0001】
【発明の属する技術分野】本発明はコンピュータに関
し、詳細にいえば、1サイクル中にレジスタ・ファイル
からアクセスされるのに必要な読取りおよび/または書
込みポートの最大数よりも少ない数の読取りおよび/ま
たは書込みポートを備えたレジスタ・ファイルを有する
プロセッサに関する。
し、詳細にいえば、1サイクル中にレジスタ・ファイル
からアクセスされるのに必要な読取りおよび/または書
込みポートの最大数よりも少ない数の読取りおよび/ま
たは書込みポートを備えたレジスタ・ファイルを有する
プロセッサに関する。
【0002】
【従来の技術】初期のプロセッサは単一段の実行ユニッ
トを含んでいた。命令はプログラムの順序で、一度に1
つずつ実行ユニットに送られる。実行のために命令が必
要とする任意のレジスタ値が、命令が実行ユニットに入
る直前に、レジスタ・ファイルによって供給される。実
行後、命令の結果がレジスタ・ファイルに再度格納さ
れ、プログラムの次の命令に対して上記のステップが繰
り返される。最新のプロセッサはパイプライン化されて
おり、またスーパースカラである。パイプライン・プロ
セッサにおいては、多数の段が互いに結合されて、パイ
プラインを形成している。パイプラインの各段は特定の
操作を行う。命令が順次パイプラインの第1段に入り、
各クロック・サイクル(以下「サイクル」と呼ぶ)で、
命令がある段から次の段に渡される。命令がパイプライ
ンを通って行くにつれて、各段の特定の操作が命令に対
して行われる。パイプラインの最後の段において、命令
の実行が完了する。パイプライン・プロセッサが複数の
命令を同時に行えるため、プロセッサのスループットが
改善される。スーパースカラ・プロセッサは複数のパイ
プラインを含んでおり、これによってプロセッサのスル
ープットがさらに改善される。プロセッサのスカラ度と
はプロセッサのパイプラインの数をいう。
トを含んでいた。命令はプログラムの順序で、一度に1
つずつ実行ユニットに送られる。実行のために命令が必
要とする任意のレジスタ値が、命令が実行ユニットに入
る直前に、レジスタ・ファイルによって供給される。実
行後、命令の結果がレジスタ・ファイルに再度格納さ
れ、プログラムの次の命令に対して上記のステップが繰
り返される。最新のプロセッサはパイプライン化されて
おり、またスーパースカラである。パイプライン・プロ
セッサにおいては、多数の段が互いに結合されて、パイ
プラインを形成している。パイプラインの各段は特定の
操作を行う。命令が順次パイプラインの第1段に入り、
各クロック・サイクル(以下「サイクル」と呼ぶ)で、
命令がある段から次の段に渡される。命令がパイプライ
ンを通って行くにつれて、各段の特定の操作が命令に対
して行われる。パイプラインの最後の段において、命令
の実行が完了する。パイプライン・プロセッサが複数の
命令を同時に行えるため、プロセッサのスループットが
改善される。スーパースカラ・プロセッサは複数のパイ
プラインを含んでおり、これによってプロセッサのスル
ープットがさらに改善される。プロセッサのスカラ度と
はプロセッサのパイプラインの数をいう。
【0003】図1を参照すると、従来の技術によるパイ
プライン・プロセッサが示されている。プロセッサ10
は他の要素に加えて、命令(I)キャッシュ12、命令
プリフェッチ・ユニット14、命令バッファ16、ディ
スパッチ・ユニット18、実行ユニット20、レジスタ
・スコアボード・ユニット22、およびメモり階層24
を含んでいる。実行ユニットは1つまたは複数のパイプ
ライン26aないし26zを含んでいる。メモリ階層2
4は上から下へ向かって、レジスタ・ファイル(RF)
28、データ・キャッシュ30、命令キャッシュ12、
メイン・メモリ32、ディスク記憶装置34、および典
型的な外部メモリ(図示せず)を含んでいる。メイン・
メモリ32およびディスク記憶装置34は通常、データ
とプログラムの命令の両方を格納している。
プライン・プロセッサが示されている。プロセッサ10
は他の要素に加えて、命令(I)キャッシュ12、命令
プリフェッチ・ユニット14、命令バッファ16、ディ
スパッチ・ユニット18、実行ユニット20、レジスタ
・スコアボード・ユニット22、およびメモり階層24
を含んでいる。実行ユニットは1つまたは複数のパイプ
ライン26aないし26zを含んでいる。メモリ階層2
4は上から下へ向かって、レジスタ・ファイル(RF)
28、データ・キャッシュ30、命令キャッシュ12、
メイン・メモリ32、ディスク記憶装置34、および典
型的な外部メモリ(図示せず)を含んでいる。メイン・
メモリ32およびディスク記憶装置34は通常、データ
とプログラムの命令の両方を格納している。
【0004】レジスタ・ファイル28の特性はプロセッ
サ10に対して開発された命令セットによって決定され
る。換言すると、命令セットがプログラマ利用可能なレ
ジスタ・ファイル28内のレジスタのタイプおよびサイ
ズを規定する。たとえば、Sun Microsyst
ems, Inc.(カリフォルニア州Mountai
n View)とSPARC Internation
al(カリフォルニア州Menlo Park)が共同
で開発したSPARC命令セットV9は最大520個の
レジスタを有する整数レジスタ・ファイルと、32個ま
でのレジスタを有している個別の浮動小数点レジスタ・
ファイルを規定しており、各レジスタは64ビット幅で
ある。(単純化するため、図1が「包括的な」レジスタ
・ファイル28を示しており、個々の整数および浮動小
数点レジスタ・ファイルを示していないことに留意され
たい。)
サ10に対して開発された命令セットによって決定され
る。換言すると、命令セットがプログラマ利用可能なレ
ジスタ・ファイル28内のレジスタのタイプおよびサイ
ズを規定する。たとえば、Sun Microsyst
ems, Inc.(カリフォルニア州Mountai
n View)とSPARC Internation
al(カリフォルニア州Menlo Park)が共同
で開発したSPARC命令セットV9は最大520個の
レジスタを有する整数レジスタ・ファイルと、32個ま
でのレジスタを有している個別の浮動小数点レジスタ・
ファイルを規定しており、各レジスタは64ビット幅で
ある。(単純化するため、図1が「包括的な」レジスタ
・ファイル28を示しており、個々の整数および浮動小
数点レジスタ・ファイルを示していないことに留意され
たい。)
【0005】すべての命令セットで、命令の中にはレジ
スタをソース・レジスタあるいは宛先レジスタのいずれ
かとして指定するものがある。ソース・レジスタは実行
対象の命令が必要とするソース値を含んでいる。宛先レ
ジスタは命令が実行された後の結果値を格納するために
使用される。命令セットの他の命令はソース・レジスタ
も宛先レジスタも指定しないことがある。表1はソース
・レジスタを指定する命令、宛先レジスタを指定する命
令、およびレジスタを指定しない命令のいくつかの例を
示す。
スタをソース・レジスタあるいは宛先レジスタのいずれ
かとして指定するものがある。ソース・レジスタは実行
対象の命令が必要とするソース値を含んでいる。宛先レ
ジスタは命令が実行された後の結果値を格納するために
使用される。命令セットの他の命令はソース・レジスタ
も宛先レジスタも指定しないことがある。表1はソース
・レジスタを指定する命令、宛先レジスタを指定する命
令、およびレジスタを指定しない命令のいくつかの例を
示す。
【0006】
【表1】
【0007】プロセッサ10はサイクル当たり最大
(i)個までの命令を発行するように設計されている。
作動中に、プロセッサ10によって実行されるプログラ
ムの命令は命令キャッシュ12にロードされる。プリフ
ェッチ14は命令キャッシュ12から命令を取り出し、
これらをプログラムの順序で命令バッファ16に置く。
ディスパッチ・ユニット18は各サイクルで命令バッフ
ァ16内の次の(i)個の命令を発行しようと試みる。
しかしながら、サイクルごとにディスパッチされる命令
の実際の数は2つの要因、すなわち(1)リソースの依
存度および(2)レジスタ依存度によって決定される。
(z)個の命令の間のリソース依存度およびレジスタ依
存度を次いでチェックして、以下の手順で同時に解決す
る。
(i)個までの命令を発行するように設計されている。
作動中に、プロセッサ10によって実行されるプログラ
ムの命令は命令キャッシュ12にロードされる。プリフ
ェッチ14は命令キャッシュ12から命令を取り出し、
これらをプログラムの順序で命令バッファ16に置く。
ディスパッチ・ユニット18は各サイクルで命令バッフ
ァ16内の次の(i)個の命令を発行しようと試みる。
しかしながら、サイクルごとにディスパッチされる命令
の実際の数は2つの要因、すなわち(1)リソースの依
存度および(2)レジスタ依存度によって決定される。
(z)個の命令の間のリソース依存度およびレジスタ依
存度を次いでチェックして、以下の手順で同時に解決す
る。
【0008】1.リソース依存度を解決する際に、ディ
スパッチ・ユニット18は実行ユニット20のパイプラ
イン26aないし26zで利用可能なリソースを、命令
バッファ16内の次の9i0の命令のうちの命令と比較
する。たとえば、次の(i)個の命令が3個の整数命令
を含んでおり、実行ユニット20で利用可能な整数パイ
プライン26が2つだけである場合、整数命令のうちの
1つは現行サイクルでディスパッチすることができな
い。実際には、ディスパッチ・ユニット18がディスパ
ッチが考えられる次の(i)個の命令に「リソース・ラ
イン」を引き、リソース・ラインよりも下の命令だけを
ディスパッチの対象とする。リソース・ラインよりも上
の命令は以降のサイクルでのディスパッチの対象とな
る。
スパッチ・ユニット18は実行ユニット20のパイプラ
イン26aないし26zで利用可能なリソースを、命令
バッファ16内の次の9i0の命令のうちの命令と比較
する。たとえば、次の(i)個の命令が3個の整数命令
を含んでおり、実行ユニット20で利用可能な整数パイ
プライン26が2つだけである場合、整数命令のうちの
1つは現行サイクルでディスパッチすることができな
い。実際には、ディスパッチ・ユニット18がディスパ
ッチが考えられる次の(i)個の命令に「リソース・ラ
イン」を引き、リソース・ラインよりも下の命令だけを
ディスパッチの対象とする。リソース・ラインよりも上
の命令は以降のサイクルでのディスパッチの対象とな
る。
【0009】2.レジスタ依存度を解決する際に、ディ
スパッチ・ユニット18はディスパッチ対象の次の
(i)個の命令のうちリソース・ラインよりも下の命令
が必要とするソース・レジスタをアサートする。次い
で、必要なレジスタをレジスタ・スコアボード22にあ
るものと比較する。レジスタ・スコアボードはパイプラ
イン26aないし26zで再計算されるすべてのレジス
タ値の現行レコードを維持している。パイプライン26
の1つにある古い命令によって現在再計算されているレ
ジスタ値を命令が必要とする場合、命令は依存している
といわれる。依存命令がレジスタ値を必要とする前に、
レジスタ値が実行ユニット20で利用可能となった場
合、命令は遅延なしにディスパッチされる。これに対
し、依存命令のディスパッチの用意ができたときに、必
要なレジスタ値がまだ利用できない場合、ディスパッチ
・ユニット18はその命令のディスパッチを遅延ないし
「ストール」させる。競合しているレジスタ値が利用可
能となったとき、ストールしていた命令がディスパッチ
され、レジスタ値はレジスタ値を再計算したばかりのパ
イプライン26から、レジスタ値を必要とするパイプラ
インへバイパスされる。
スパッチ・ユニット18はディスパッチ対象の次の
(i)個の命令のうちリソース・ラインよりも下の命令
が必要とするソース・レジスタをアサートする。次い
で、必要なレジスタをレジスタ・スコアボード22にあ
るものと比較する。レジスタ・スコアボードはパイプラ
イン26aないし26zで再計算されるすべてのレジス
タ値の現行レコードを維持している。パイプライン26
の1つにある古い命令によって現在再計算されているレ
ジスタ値を命令が必要とする場合、命令は依存している
といわれる。依存命令がレジスタ値を必要とする前に、
レジスタ値が実行ユニット20で利用可能となった場
合、命令は遅延なしにディスパッチされる。これに対
し、依存命令のディスパッチの用意ができたときに、必
要なレジスタ値がまだ利用できない場合、ディスパッチ
・ユニット18はその命令のディスパッチを遅延ないし
「ストール」させる。競合しているレジスタ値が利用可
能となったとき、ストールしていた命令がディスパッチ
され、レジスタ値はレジスタ値を再計算したばかりのパ
イプライン26から、レジスタ値を必要とするパイプラ
インへバイパスされる。
【0010】リソース・ラインよりも下の命令にレジス
タ競合がない場合、すなわち、必要なレジスタ値が再計
算されていない場合、レジスタ値はレジスタ・ファイル
28から直接得られる。ディスパッチ・ユニット18は
リソース依存度およびレジスタ依存度を解決するにあた
り、所与のサイクルでプロセッサ10が実行できる命令
よりも少ない命令を発行する。それにもかかわらず、プ
ログラムの命令の適切な実行を維持するのにこの操作が
必要である。さらに、プロセッサの中には命令を順不同
で発行することによってストールを回避できるものもあ
る。命令が実行された後、再計算されたレジスタ値はレ
ジスタ・ファイル28に格納される。実行された命令の
宛先レジスタに収められている実行された命令の結果
は、パイプライン26aないし26zから抜ける。結果
がレジスタ・ファイル28に格納されるので、実行ユニ
ット20で再計算されていない最新のレジスタ値がより
新しい命令に利用可能である。
タ競合がない場合、すなわち、必要なレジスタ値が再計
算されていない場合、レジスタ値はレジスタ・ファイル
28から直接得られる。ディスパッチ・ユニット18は
リソース依存度およびレジスタ依存度を解決するにあた
り、所与のサイクルでプロセッサ10が実行できる命令
よりも少ない命令を発行する。それにもかかわらず、プ
ログラムの命令の適切な実行を維持するのにこの操作が
必要である。さらに、プロセッサの中には命令を順不同
で発行することによってストールを回避できるものもあ
る。命令が実行された後、再計算されたレジスタ値はレ
ジスタ・ファイル28に格納される。実行された命令の
宛先レジスタに収められている実行された命令の結果
は、パイプライン26aないし26zから抜ける。結果
がレジスタ・ファイル28に格納されるので、実行ユニ
ット20で再計算されていない最新のレジスタ値がより
新しい命令に利用可能である。
【0011】Sun MicrosystemsのUl
traSPARCTM、MotoloraおよびIBMの
PowerPC、Digital Equipment
CorporationのAlphaTMなどの最新の
マイクロプロセッサはさまざまな点で類似している。こ
れらのプロセッサの各々はサイクルごとに4(i=4)
個までの命令を発行することができ、それぞれのレジス
タ・ファイル28を実現するためにオンチップ・スタテ
ィック・ランダム・アクセス・メモリ(SRAM)アレ
イを使用している。しかしながら、サイクルごとに4個
の命令(i=4)をディスパッチするのに必要なアクセ
ス・ポートの最大数は、プロセッサごとに異なってい
る。読取りおよび書込みポートの最大バンドワイドがど
のようなものであるかを決定する要因としては、(1)
プロセッサの実行ユニット20内のパイプライン26の
数およびタイプ、(2)命令セットの命令のタイプなら
びにソース・レジスタおよび宛先レジスタの要件などが
ある。
traSPARCTM、MotoloraおよびIBMの
PowerPC、Digital Equipment
CorporationのAlphaTMなどの最新の
マイクロプロセッサはさまざまな点で類似している。こ
れらのプロセッサの各々はサイクルごとに4(i=4)
個までの命令を発行することができ、それぞれのレジス
タ・ファイル28を実現するためにオンチップ・スタテ
ィック・ランダム・アクセス・メモリ(SRAM)アレ
イを使用している。しかしながら、サイクルごとに4個
の命令(i=4)をディスパッチするのに必要なアクセ
ス・ポートの最大数は、プロセッサごとに異なってい
る。読取りおよび書込みポートの最大バンドワイドがど
のようなものであるかを決定する要因としては、(1)
プロセッサの実行ユニット20内のパイプライン26の
数およびタイプ、(2)命令セットの命令のタイプなら
びにソース・レジスタおよび宛先レジスタの要件などが
ある。
【0012】本出願人が知る限り、UltraSPAR
C、PowerPC、Alphaおよびその他の従来技
術のプロセッサはすべて、整数および浮動小数点レジス
タ・ファイル28の双方とも、「最悪」のサイクルの際
に必要とされるであろうレジスタ読取りおよび書込みポ
ートの最大数と等しい数の読取りおよび書込みポートを
備えている。本明細書でいう最悪サイクルとは、ソース
・レジスタ値および/または宛先レジスタ値の可能な最
大数を必要とするサイクルである。
C、PowerPC、Alphaおよびその他の従来技
術のプロセッサはすべて、整数および浮動小数点レジス
タ・ファイル28の双方とも、「最悪」のサイクルの際
に必要とされるであろうレジスタ読取りおよび書込みポ
ートの最大数と等しい数の読取りおよび書込みポートを
備えている。本明細書でいう最悪サイクルとは、ソース
・レジスタ値および/または宛先レジスタ値の可能な最
大数を必要とするサイクルである。
【0013】最悪サイクルを説明するために、Ultr
aSPARCおよびV9命令セットを示す。Ultra
SPARCプロセッサは9本のパイプラインを含んでい
る。9本のパイプラインは2つの整数ユニット、1つの
ロード/ストア・ユニット、2つのグラフィックス・ユ
ニット、1つのブランチ・ユニット、1つの加算浮動小
数点ユニット(FPU)、1つの乗算FPU、1つの除
算FPU、および1つの平方根FPUを含んでいる。V
9命令セットは2つまでのソース・レジスタ・オペラン
ドおよび1つの宛先オペランドを必要とする整数命令を
定義している。ロード/ストア命令は1つ、2つまたは
3つのいずれかのソース・オペランドを指定できる。浮
動小数点命令は2つまでのソース・オペランドと1つの
宛先レジスタを指定できる。
aSPARCおよびV9命令セットを示す。Ultra
SPARCプロセッサは9本のパイプラインを含んでい
る。9本のパイプラインは2つの整数ユニット、1つの
ロード/ストア・ユニット、2つのグラフィックス・ユ
ニット、1つのブランチ・ユニット、1つの加算浮動小
数点ユニット(FPU)、1つの乗算FPU、1つの除
算FPU、および1つの平方根FPUを含んでいる。V
9命令セットは2つまでのソース・レジスタ・オペラン
ドおよび1つの宛先オペランドを必要とする整数命令を
定義している。ロード/ストア命令は1つ、2つまたは
3つのいずれかのソース・オペランドを指定できる。浮
動小数点命令は2つまでのソース・オペランドと1つの
宛先レジスタを指定できる。
【0014】この例において、4個の命令(i=4)が
ディスパッチ対象であるサイクルを考える。4個の命令
は各々が2つのソース・オペランドを必要とする3つの
整数演算、および3つのソース・オペランドを必要とす
る1つのロード/ストア演算を含んでいる。Ultra
SPARCプロセッサが有している整数ユニットが2つ
だけであるから、2つのもっとも古い整数命令とロード
/ストア命令をこのサイクルでディスパッチできるだけ
である。第3の整数命令をディスパッチするのにリソー
スを利用できないのであるから、その命令は後のサイク
ルまでストールさせられる。これらの条件のもとでは、
UltraSPARCの整数レジスタ・ファイル28に
は、合計7つのレジスタ読取りポートと3つのレジスタ
書込みポートが必要である。ディスパッチされた命令の
他に考えられる組合せで、レジスタ・ファイル28にお
いてもっと大きい読取りポート・バンドワイドを必要と
するものがないので、命令の上記のセットは最悪の例を
表すものである。本明細書で例を挙げないが、Ultr
aSPARCの浮動小数点レジスタ・ファイル28は5
つの読取りポートと3つの書込みポートを必要とする。
PowerPC、Alphaチップおよび他の周知のプ
ロセッサの読取りおよび書込みポートの数は、最悪のサ
イクルに対するバンドワイド要件をまず決定し、最悪の
サイクルでレジスタ・ファイル28にアクセスするため
に十分なバンドワイドを与えることによって、同様な態
様で決定される。
ディスパッチ対象であるサイクルを考える。4個の命令
は各々が2つのソース・オペランドを必要とする3つの
整数演算、および3つのソース・オペランドを必要とす
る1つのロード/ストア演算を含んでいる。Ultra
SPARCプロセッサが有している整数ユニットが2つ
だけであるから、2つのもっとも古い整数命令とロード
/ストア命令をこのサイクルでディスパッチできるだけ
である。第3の整数命令をディスパッチするのにリソー
スを利用できないのであるから、その命令は後のサイク
ルまでストールさせられる。これらの条件のもとでは、
UltraSPARCの整数レジスタ・ファイル28に
は、合計7つのレジスタ読取りポートと3つのレジスタ
書込みポートが必要である。ディスパッチされた命令の
他に考えられる組合せで、レジスタ・ファイル28にお
いてもっと大きい読取りポート・バンドワイドを必要と
するものがないので、命令の上記のセットは最悪の例を
表すものである。本明細書で例を挙げないが、Ultr
aSPARCの浮動小数点レジスタ・ファイル28は5
つの読取りポートと3つの書込みポートを必要とする。
PowerPC、Alphaチップおよび他の周知のプ
ロセッサの読取りおよび書込みポートの数は、最悪のサ
イクルに対するバンドワイド要件をまず決定し、最悪の
サイクルでレジスタ・ファイル28にアクセスするため
に十分なバンドワイドを与えることによって、同様な態
様で決定される。
【0015】図2を参照すると、レジスタ・ファイル2
8のレジスタ値を格納するのに通常使用されるSRAM
メモリ・アレイのブロック図が示されている。メモリ・
アレイ40は(m)本の行を含んでいる。各行R0ない
しRm-1はレジスタ・ファイル28のレジスタに対応し
ている。各行Rは(n)個のメモリ・セル420 ないし
42n-1 を含んでいる。(n)はプロセッサ10が使用
するワード・サイズの幅に等しい。上述のプロセッサに
おいて、ワード・サイズはプロセッサにより(n=3
2)ビットまたは(n=64)ビットのいずれかであ
る。メモリ・アレイ40は行デコーダ44も含んでい
る。複数本(x)のワード・ラインが行デコーダ44と
各行R0ないしRm-1との間にそれぞれ結合されている。
メモリ・アレイ40は通常、メモリセル42の各列に関
連づけられ、メモリ・アレイ40の高さだけ延びている
複数本(y)のディファレンシャル・ビット・ライン4
8を含んでいる。(複数本(x)のワード・ライン46
と複数本(y)のディファレンシャル・ビット・ライン
とは、明確にするためにそれぞれ単独のラインとして示
されていることに留意されたい。)たとえば、上述のU
ltraSPARCの整数レジスタ・ファイルにおいて
は、アレイの各行R0ないしRm-1に対して、7本の読取
りワード・ラインと3本の書込みワード・ライン、すな
わち合計10本(X=10)のワード・ライン46が必
要である。さらに、7本のディファレンシャル読取りビ
ット・ラインと3本のディファレンシャル書込みビット
・ライン、すなわち合計20本(y=20)のビット・
ラインが各メモリ・セル42に必要である。
8のレジスタ値を格納するのに通常使用されるSRAM
メモリ・アレイのブロック図が示されている。メモリ・
アレイ40は(m)本の行を含んでいる。各行R0ない
しRm-1はレジスタ・ファイル28のレジスタに対応し
ている。各行Rは(n)個のメモリ・セル420 ないし
42n-1 を含んでいる。(n)はプロセッサ10が使用
するワード・サイズの幅に等しい。上述のプロセッサに
おいて、ワード・サイズはプロセッサにより(n=3
2)ビットまたは(n=64)ビットのいずれかであ
る。メモリ・アレイ40は行デコーダ44も含んでい
る。複数本(x)のワード・ラインが行デコーダ44と
各行R0ないしRm-1との間にそれぞれ結合されている。
メモリ・アレイ40は通常、メモリセル42の各列に関
連づけられ、メモリ・アレイ40の高さだけ延びている
複数本(y)のディファレンシャル・ビット・ライン4
8を含んでいる。(複数本(x)のワード・ライン46
と複数本(y)のディファレンシャル・ビット・ライン
とは、明確にするためにそれぞれ単独のラインとして示
されていることに留意されたい。)たとえば、上述のU
ltraSPARCの整数レジスタ・ファイルにおいて
は、アレイの各行R0ないしRm-1に対して、7本の読取
りワード・ラインと3本の書込みワード・ライン、すな
わち合計10本(X=10)のワード・ライン46が必
要である。さらに、7本のディファレンシャル読取りビ
ット・ラインと3本のディファレンシャル書込みビット
・ライン、すなわち合計20本(y=20)のビット・
ラインが各メモリ・セル42に必要である。
【0016】
【発明が解決しようとする課題】上述したSRAMメモ
リ・アレイはさまざまな問題を引き起こす。アレイ内の
各セル42の場合、ワード・ライン/ディファレンシャ
ル・ビット・ライン対の各組合せに対して、2つのパス
・トランジスタが必要である。結果として、各メモリ・
セルに関連したワード・ライン、ビット・ライン、およ
びパス・トランジスタの数のため、各メモリ・セルのサ
イズないしピッチは比較的大きくなる。個々のセルのピ
ッチが大きいことは、メモリ・アレイの全体的なサイズ
が大きくなり、プロセッサ・ダイの面積で大きな割合を
占めることを意味する。このことはプロセッサの製造歩
留まりに悪影響を及ぼし、製造コストを引き上げる。メ
モリ・アレイの比較的大きなサイズはいくつかの理由
で、レジスタ・ファイル28のレジスタ値にアクセスす
るのに必要な平均時間に悪影響を及ぼす。アレイの全体
的なサイズが大きいことによる長いワード・ラインおよ
びビット・ラインは、平均アクセス時間を長くする。各
セルに関連したパス・トランジスタ、ワード・ライン、
およびビット・ラインの数は各セルでの容量性負荷を大
きくする傾向がある。各セルにおける容量性負荷の増加
は各セルに格納されている有限の電荷が、適切なディフ
ァレンシャル・ビット・ライン対を駆動することをさら
に困難とする。上記の問題はすべてプロセッサ10のス
カラ度を高くすると悪化する。たとえば、5個の命令を
発行するプロセッサ(i=5)の場合、さらに付加的な
読取りワード・ライン、書込みワード・ライン、および
ディファレンシャル書込みビット・ライン対が必要とな
り、上記の問題を増加させる。
リ・アレイはさまざまな問題を引き起こす。アレイ内の
各セル42の場合、ワード・ライン/ディファレンシャ
ル・ビット・ライン対の各組合せに対して、2つのパス
・トランジスタが必要である。結果として、各メモリ・
セルに関連したワード・ライン、ビット・ライン、およ
びパス・トランジスタの数のため、各メモリ・セルのサ
イズないしピッチは比較的大きくなる。個々のセルのピ
ッチが大きいことは、メモリ・アレイの全体的なサイズ
が大きくなり、プロセッサ・ダイの面積で大きな割合を
占めることを意味する。このことはプロセッサの製造歩
留まりに悪影響を及ぼし、製造コストを引き上げる。メ
モリ・アレイの比較的大きなサイズはいくつかの理由
で、レジスタ・ファイル28のレジスタ値にアクセスす
るのに必要な平均時間に悪影響を及ぼす。アレイの全体
的なサイズが大きいことによる長いワード・ラインおよ
びビット・ラインは、平均アクセス時間を長くする。各
セルに関連したパス・トランジスタ、ワード・ライン、
およびビット・ラインの数は各セルでの容量性負荷を大
きくする傾向がある。各セルにおける容量性負荷の増加
は各セルに格納されている有限の電荷が、適切なディフ
ァレンシャル・ビット・ライン対を駆動することをさら
に困難とする。上記の問題はすべてプロセッサ10のス
カラ度を高くすると悪化する。たとえば、5個の命令を
発行するプロセッサ(i=5)の場合、さらに付加的な
読取りワード・ライン、書込みワード・ライン、および
ディファレンシャル書込みビット・ライン対が必要とな
り、上記の問題を増加させる。
【0017】いくつかの設計の傾向がプロセッサ業界で
よく見られる。すなわち、高いスカラ度、サイクル時間
の短縮、大きいレジスタ・ファイル、および広いワード
幅である。複雑な読み書き回路、比較的大きいサイズ、
および比較的アクセス速度の遅いSRAMメモリ・アレ
イ40でのレジスタ・ファイル28の実施形態は、これ
らの属性の各々におけるパフォーマンスの改善にかなり
の障害となる。事実、本出願人は上述のようなSRAM
メモリ・アレイ40が、次世代のプロセッサにおいて、
スカラ度の進歩、ワード・サイズの増加、レジスタ・フ
ァイルのサイズの増加、および/またはサイクル時間の
短縮を妨げたり、さらには阻止したりする設計障害とな
ると考えている。したがって、レジスタ値にアクセスす
る改善された装置および方法が必要である。
よく見られる。すなわち、高いスカラ度、サイクル時間
の短縮、大きいレジスタ・ファイル、および広いワード
幅である。複雑な読み書き回路、比較的大きいサイズ、
および比較的アクセス速度の遅いSRAMメモリ・アレ
イ40でのレジスタ・ファイル28の実施形態は、これ
らの属性の各々におけるパフォーマンスの改善にかなり
の障害となる。事実、本出願人は上述のようなSRAM
メモリ・アレイ40が、次世代のプロセッサにおいて、
スカラ度の進歩、ワード・サイズの増加、レジスタ・フ
ァイルのサイズの増加、および/またはサイクル時間の
短縮を妨げたり、さらには阻止したりする設計障害とな
ると考えている。したがって、レジスタ値にアクセスす
る改善された装置および方法が必要である。
【0018】
【課題を解決するための手段】本発明はレジスタのレジ
スタ・ファイルと、サイクルごとのプログラムの(i)
個の命令を(z)本のパイプラインを有する実行ユニッ
トに発行することのできるディスパッチ・ユニットとを
有するプロセッサにかかわり、そのプロセッサは、命令
のあるものがレジスタ・ファイルのレジスタのいくつか
をソース・オペランドとして指定し、かつレジスタ・フ
ァイルのレジスタのいくつかを宛先レジスタとして指定
する。プロセッサは、レジスタファイルのレジスタを格
納するとともに、サイクルごとに(N)個までのレジス
タにアクセスするように構成された(N)個のアクセス
・ポート(ただし、(N)はサイクル中にアクセスする
必要のあるレジスタ値の最大数未満である)を有してい
るメモリも含んでいる。最悪のサイクルとは、ソース・
レジスタ値および/または宛先レジスタ値の最大数が必
要とされるサイクルと定義される。
スタ・ファイルと、サイクルごとのプログラムの(i)
個の命令を(z)本のパイプラインを有する実行ユニッ
トに発行することのできるディスパッチ・ユニットとを
有するプロセッサにかかわり、そのプロセッサは、命令
のあるものがレジスタ・ファイルのレジスタのいくつか
をソース・オペランドとして指定し、かつレジスタ・フ
ァイルのレジスタのいくつかを宛先レジスタとして指定
する。プロセッサは、レジスタファイルのレジスタを格
納するとともに、サイクルごとに(N)個までのレジス
タにアクセスするように構成された(N)個のアクセス
・ポート(ただし、(N)はサイクル中にアクセスする
必要のあるレジスタ値の最大数未満である)を有してい
るメモリも含んでいる。最悪のサイクルとは、ソース・
レジスタ値および/または宛先レジスタ値の最大数が必
要とされるサイクルと定義される。
【0019】デコード/ディスパッチ・ユニットは、命
令バッファ内に待ち行列化されたプログラムの命令を実
行ユニットの(z)本のパイプラインにディスパッチす
るように構成されている。このデコード/ディスパッチ
・ユニットは、あるサイクルにおけるディスパッチ対象
の命令のグループが必要とするレジスタ値の数がレジス
タ・ファイルを含んでいるメモリの読取りポートのバン
ドワイド(N)よりも大きくなるという問題(すなわ
ち、ボトルネック状態)を軽減するのを助ける2つの機
能を果たす。第1の処置で、デコード/ディスパッチ・
ユニットは、プログラムの順序での命令の発行を並べ換
え、ボトルネック状態を回避する。第2の処置で、デコ
ード/ディスパッチ・ユニットは、ボトルネック状態が
特定されている以降のサイクルで必要とされるレジスタ
値をプリフェッチし、格納する。ボトルネック状態を引
き起こすサイクルで命令が発行された場合、プリフェッ
チされ、格納されているレジスタ値が実行ユニットに与
えられる。レジスタ値をプリフェッチすることによっ
て、ボトルネック状態を回避できることがある。いずれ
の処置もボトルネック状態の解消に効果がない場合、ボ
トルネックのあるサイクル内の1つまたは複数の命令が
ストールされる。
令バッファ内に待ち行列化されたプログラムの命令を実
行ユニットの(z)本のパイプラインにディスパッチす
るように構成されている。このデコード/ディスパッチ
・ユニットは、あるサイクルにおけるディスパッチ対象
の命令のグループが必要とするレジスタ値の数がレジス
タ・ファイルを含んでいるメモリの読取りポートのバン
ドワイド(N)よりも大きくなるという問題(すなわ
ち、ボトルネック状態)を軽減するのを助ける2つの機
能を果たす。第1の処置で、デコード/ディスパッチ・
ユニットは、プログラムの順序での命令の発行を並べ換
え、ボトルネック状態を回避する。第2の処置で、デコ
ード/ディスパッチ・ユニットは、ボトルネック状態が
特定されている以降のサイクルで必要とされるレジスタ
値をプリフェッチし、格納する。ボトルネック状態を引
き起こすサイクルで命令が発行された場合、プリフェッ
チされ、格納されているレジスタ値が実行ユニットに与
えられる。レジスタ値をプリフェッチすることによっ
て、ボトルネック状態を回避できることがある。いずれ
の処置もボトルネック状態の解消に効果がない場合、ボ
トルネックのあるサイクル内の1つまたは複数の命令が
ストールされる。
【0020】レジスタ・ファイルにアクセスするために
使用される読取りポートの数(N)は設計上の選択の問
題である。レジスタ・ファイルを含んでいるメモリに対
する読取りポートの数を減らすことによって、従来の技
術で論じられている書込み問題の多くが軽減される。例
えば、レジスタ・ファイルへの読取りポートの数が少な
い場合、各セルと関連するワード・ライン、ビット・ラ
インおよびパス・トランジスタが少ないため、メモリ・
アレイ内の各セルのピッチを小さくすることができる。
さらに、デコーダやドライバなどの必要な周辺回路の量
が少なくなる。これらの要因のすべてによって、メモリ
・アレイ全体のサイズを小さくできるようになり、これ
はメモリの平均アクセス時間を短縮することを助け、ま
た製造歩留まりを上げるのを助ける。従来技術のレジス
タ・ファイルの問題の多くは、したがって、レジスタ・
ファイルへの読取りポートの数を減らすことによってか
なり解消することができる。
使用される読取りポートの数(N)は設計上の選択の問
題である。レジスタ・ファイルを含んでいるメモリに対
する読取りポートの数を減らすことによって、従来の技
術で論じられている書込み問題の多くが軽減される。例
えば、レジスタ・ファイルへの読取りポートの数が少な
い場合、各セルと関連するワード・ライン、ビット・ラ
インおよびパス・トランジスタが少ないため、メモリ・
アレイ内の各セルのピッチを小さくすることができる。
さらに、デコーダやドライバなどの必要な周辺回路の量
が少なくなる。これらの要因のすべてによって、メモリ
・アレイ全体のサイズを小さくできるようになり、これ
はメモリの平均アクセス時間を短縮することを助け、ま
た製造歩留まりを上げるのを助ける。従来技術のレジス
タ・ファイルの問題の多くは、したがって、レジスタ・
ファイルへの読取りポートの数を減らすことによってか
なり解消することができる。
【0021】本発明のシステムの目的、特徴および利点
は以下の説明から明らかとなろう。
は以下の説明から明らかとなろう。
【0022】
【発明の実施の形態】図3を参照すると、本発明による
プロセッサのブロック図が示されている。プロセッサ5
0は命令(I)キャッシュ12、プリフェッチ・ユニッ
ト14、命令バッファ16、デコード/ディスパッチ・
ユニット18、(z)本のパイプライン26aないし2
6zを含んでいる実行ユニット20、レジスタ・スコア
ボード・ユニット22、およびメモり階層(図示せず)
の上に配置されたレジスタ・ファイル28を含んでい
る。図1に挙げたものと同一または類似した機能を果た
す同様な要素は、図3において同じ参照符号で示されて
おり、したがって、本明細書で詳細には説明しない。プ
ロセッサ50はバイパス論理回路52、マルチプレクサ
(MUX)回路54、スケジューラ56、および複数個
の記憶要素58も含んでいる。
プロセッサのブロック図が示されている。プロセッサ5
0は命令(I)キャッシュ12、プリフェッチ・ユニッ
ト14、命令バッファ16、デコード/ディスパッチ・
ユニット18、(z)本のパイプライン26aないし2
6zを含んでいる実行ユニット20、レジスタ・スコア
ボード・ユニット22、およびメモり階層(図示せず)
の上に配置されたレジスタ・ファイル28を含んでい
る。図1に挙げたものと同一または類似した機能を果た
す同様な要素は、図3において同じ参照符号で示されて
おり、したがって、本明細書で詳細には説明しない。プ
ロセッサ50はバイパス論理回路52、マルチプレクサ
(MUX)回路54、スケジューラ56、および複数個
の記憶要素58も含んでいる。
【0023】各サイクルにおいて、デコード/ディスパ
ッチ・ユニット18は、命令バッファ16内の次の
(i)個の命令のうちの次のサイクルでディスパッチさ
れることになっている命令をアサートする。スケジュー
ラ56はデコード/ディスパッチ・ユニット18の指示
により、必要なレジスタ値をレジスタ・ファイル28か
ら取り出し、取り出したレジスタ値をMUX54のデー
タ入力70に与える。MUX54はスケジューラ56か
らの選択入力72に応じて、取り出したレジスタ値をデ
ータ・ライン74aないし74zのそれぞれを介して、
パイプライン26aないし26zのうちの適切なもの、
あるいはメモり・ロケーション58のうちの1つに送
る。命令はデコード/ディスパッチ・ユニット18によ
って、入力ライン68aないし68zのそれぞれを介し
て、パイプライン26aないし26zにディスパッチさ
れる。
ッチ・ユニット18は、命令バッファ16内の次の
(i)個の命令のうちの次のサイクルでディスパッチさ
れることになっている命令をアサートする。スケジュー
ラ56はデコード/ディスパッチ・ユニット18の指示
により、必要なレジスタ値をレジスタ・ファイル28か
ら取り出し、取り出したレジスタ値をMUX54のデー
タ入力70に与える。MUX54はスケジューラ56か
らの選択入力72に応じて、取り出したレジスタ値をデ
ータ・ライン74aないし74zのそれぞれを介して、
パイプライン26aないし26zのうちの適切なもの、
あるいはメモり・ロケーション58のうちの1つに送
る。命令はデコード/ディスパッチ・ユニット18によ
って、入力ライン68aないし68zのそれぞれを介し
て、パイプライン26aないし26zにディスパッチさ
れる。
【0024】パイプライン26aないし26zの各段で
レジスタ値が再計算された場合に、レジスタ値を受け取
るようにバイパス論理回路52が結合されている。矢印
60はバイパス論理52への再計算されたレジスタ値の
流れを表している。デコード/ディスパッチ・ユニット
18およびスコアボード22の指示によって、バイパス
論理回路52は、必要に応じ、再計算されたレジスタ値
をパイプライン26aないし26zに戻す。矢印62お
よび矢印64はそれぞれ、バイパス論理52から実行ユ
ニット20内のパイプライン26への再計算されたレジ
スタ値の流れを表す。
レジスタ値が再計算された場合に、レジスタ値を受け取
るようにバイパス論理回路52が結合されている。矢印
60はバイパス論理52への再計算されたレジスタ値の
流れを表している。デコード/ディスパッチ・ユニット
18およびスコアボード22の指示によって、バイパス
論理回路52は、必要に応じ、再計算されたレジスタ値
をパイプライン26aないし26zに戻す。矢印62お
よび矢印64はそれぞれ、バイパス論理52から実行ユ
ニット20内のパイプライン26への再計算されたレジ
スタ値の流れを表す。
【0025】プロセッサ50は従来技術のプロセッサ1
0と大幅に異なっている。レジスタ・ファイル28は少
ない数(N)の読取りポートを有している。(N)はサ
イクル中にレジスタ・ファイル28を形成するために必
要なソース・レジスタ値の考えられる最大数よりも小さ
い数である。レジスタ・ファイル28への読取りポート
の数を必要な最大値(X)および幅よりも小さくするこ
とによって、従来の技術で検討した配線およびトランジ
スタのカウントの問題の多くが軽減される。たとえば、
読取りポートの数を少なくすると、メモリの各セルに関
連したワード・ライン、ビット・ラインおよびパス・ト
ランジスタの数が少なくなるため、各セルのピッチを小
さくすることができる。さらに、デコーダおよびドライ
バなどの必要な周辺回路の量が少なくなる。これらの要
因のすべてによって、レジスタ・ファイル28を含んで
いるメモリ・アレイ全体のサイズを小さくすることが可
能となり、これはメモリの平均アクセス時間を短縮する
のを助け、また製造歩留まりを上げるのを助ける。
0と大幅に異なっている。レジスタ・ファイル28は少
ない数(N)の読取りポートを有している。(N)はサ
イクル中にレジスタ・ファイル28を形成するために必
要なソース・レジスタ値の考えられる最大数よりも小さ
い数である。レジスタ・ファイル28への読取りポート
の数を必要な最大値(X)および幅よりも小さくするこ
とによって、従来の技術で検討した配線およびトランジ
スタのカウントの問題の多くが軽減される。たとえば、
読取りポートの数を少なくすると、メモリの各セルに関
連したワード・ライン、ビット・ラインおよびパス・ト
ランジスタの数が少なくなるため、各セルのピッチを小
さくすることができる。さらに、デコーダおよびドライ
バなどの必要な周辺回路の量が少なくなる。これらの要
因のすべてによって、レジスタ・ファイル28を含んで
いるメモリ・アレイ全体のサイズを小さくすることが可
能となり、これはメモリの平均アクセス時間を短縮する
のを助け、また製造歩留まりを上げるのを助ける。
【0026】レジスタ・ファイル28の読取りポートの
バンドワイドを狭くすることに関連する欠点は、ポート
の数を所与のサイクルでディスパッチの対象となる命令
のグループに十分なものとできないことがあることであ
る。2個の命令(i=2)を発行するプロセッサでは、
たとえば、2個の命令があるサイクルで発行されるよう
にスケジュールされており、両方の命令が2つのレジス
タ値を必要としている場合、合計4つのソース・レジス
タ値がレジスタ・ファイル28に必要となる。レジスタ
・ファイル28が有している読取りポートが2つだけの
場合(N=2)、必要なレジスタ値の数がレジスタ・フ
ァイル24に利用可能な読取りポートの数を超えている
ため、ボトルネック状態がこのサイクルに存在する。ボ
トルネック状態は何とか補正されていない場合、第2の
命令をストールさせ、その後のサイクルで発行するよう
にする。
バンドワイドを狭くすることに関連する欠点は、ポート
の数を所与のサイクルでディスパッチの対象となる命令
のグループに十分なものとできないことがあることであ
る。2個の命令(i=2)を発行するプロセッサでは、
たとえば、2個の命令があるサイクルで発行されるよう
にスケジュールされており、両方の命令が2つのレジス
タ値を必要としている場合、合計4つのソース・レジス
タ値がレジスタ・ファイル28に必要となる。レジスタ
・ファイル28が有している読取りポートが2つだけの
場合(N=2)、必要なレジスタ値の数がレジスタ・フ
ァイル24に利用可能な読取りポートの数を超えている
ため、ボトルネック状態がこのサイクルに存在する。ボ
トルネック状態は何とか補正されていない場合、第2の
命令をストールさせ、その後のサイクルで発行するよう
にする。
【0027】デコード/ディスパッチ・ユニット18は
レジスタ・ファイル28を含んでいるメモリにおける読
取りポート・ボトルネック状態を軽減するのを助ける2
つの処置を行うようにプログラムされている。第1の処
置において、デコード/ディスパッチ・ユニット18
は、プログラムの順序での命令の発行を並べ換え、ボト
ルネック状態を回避することを試みることができる。第
2の処置において、デコード/ディスパッチ・ユニット
18は、ボトルネックを引き起こす命令のディスパッチ
に先立って、ボトルネック状態を有するものとして特定
されている以降のサイクルで必要とされるレジスタ値を
プリフェッチし、格納する。第2の処置を実施するため
に、各サイクルのレジスタ値の要件をアサートする。
(N)未満のレジスタ値に現行サイクル中にレジスタ・
ファイル28によってアクセスしようとする場合には、
読取りポートのバンドワイドに「ギャップ」が存在する
といわれる。次に、デコード/ディスパッチ・ユニット
18は命令バッファ16内の他の命令を調べ、ボトルネ
ック状態が発生する以降のサイクルを特定する。このよ
うなサイクルが特定された場合、デコード/ディスパッ
チ・ユニット18はスケジューラ56に指示して、現行
サイクルのギャップ中に以降のサイクルに必要とされる
レジスタ値をプリフェッチする。プリフェッチされたレ
ジスタ値はメモリ・ロケーション58に一時的に格納さ
れる。以降のサイクルの命令が発行された場合、メモリ
・ロケーション58に格納されているレジスタ値が、プ
リフェッチされたレジスタ値を必要とする命令を実行す
る適正なパイプライン26に与えられる。レジスタ値を
プリフェッチすることによって、これを行わなければボ
トルネック状態を有することになるサイクルを回避する
ことができる。
レジスタ・ファイル28を含んでいるメモリにおける読
取りポート・ボトルネック状態を軽減するのを助ける2
つの処置を行うようにプログラムされている。第1の処
置において、デコード/ディスパッチ・ユニット18
は、プログラムの順序での命令の発行を並べ換え、ボト
ルネック状態を回避することを試みることができる。第
2の処置において、デコード/ディスパッチ・ユニット
18は、ボトルネックを引き起こす命令のディスパッチ
に先立って、ボトルネック状態を有するものとして特定
されている以降のサイクルで必要とされるレジスタ値を
プリフェッチし、格納する。第2の処置を実施するため
に、各サイクルのレジスタ値の要件をアサートする。
(N)未満のレジスタ値に現行サイクル中にレジスタ・
ファイル28によってアクセスしようとする場合には、
読取りポートのバンドワイドに「ギャップ」が存在する
といわれる。次に、デコード/ディスパッチ・ユニット
18は命令バッファ16内の他の命令を調べ、ボトルネ
ック状態が発生する以降のサイクルを特定する。このよ
うなサイクルが特定された場合、デコード/ディスパッ
チ・ユニット18はスケジューラ56に指示して、現行
サイクルのギャップ中に以降のサイクルに必要とされる
レジスタ値をプリフェッチする。プリフェッチされたレ
ジスタ値はメモリ・ロケーション58に一時的に格納さ
れる。以降のサイクルの命令が発行された場合、メモリ
・ロケーション58に格納されているレジスタ値が、プ
リフェッチされたレジスタ値を必要とする命令を実行す
る適正なパイプライン26に与えられる。レジスタ値を
プリフェッチすることによって、これを行わなければボ
トルネック状態を有することになるサイクルを回避する
ことができる。
【0028】本発明の動作はいくつかの例を使用するこ
とによって説明するのがもっともよいであろう。2個の
命令(i=2)の発行、すなわち2つの読取りポート
(N=2)を備えたレジスタ・ファイルを有する2つの
スカラ・プロセッサを考える。以下の命令のストリング
に依存する下記の3つの実施例は、レジスタ・ファイル
28の読取りポートにおけるボトルネック状態が作動中
にどのように解消されるかを説明するものである。
とによって説明するのがもっともよいであろう。2個の
命令(i=2)の発行、すなわち2つの読取りポート
(N=2)を備えたレジスタ・ファイルを有する2つの
スカラ・プロセッサを考える。以下の命令のストリング
に依存する下記の3つの実施例は、レジスタ・ファイル
28の読取りポートにおけるボトルネック状態が作動中
にどのように解消されるかを説明するものである。
【0029】
【表2】
【0030】実施例1:第1のサイクルにおいて、デコ
ード/ディスパッチ・ユニット18は最初の2個の命令
I1およびI2のディスパッチを考慮する。同時に、命
令I1およびI2はソース操作として必要とされる4つ
のレジスタ値(R1、R2、R4およびR5)を定義す
る。4つのレジスタに対する最新の値がレジスタ・ファ
イル28にあるものと想定すると、これら両方の命令が
発行された場合、ボトルネック状態がレジスタ・ファイ
ル28の読取りポートに存在することとなる。これに応
じて、パイプライン26aおよび26bの状態によっ
て、デコード/ディスパッチ・ユニット18はいくつか
の可能性を考慮する。両方のパイプライン26aおよび
パイプライン26bがディスパッチに利用できる場合、
デコード/ディスパッチ・ユニット18はスケジューラ
56に指示して、レジスタ値R1およびR2を取り出
し、第1の命令I1を発行する。次いで、第2の命令の
ディスパッチを以降のサイクルで考慮する。一方、デコ
ード/ディスパッチ・ユニット18はリソース依存度チ
ェックを行った後、第1のパイプライン26aがストー
ルされており、新しい命令を受け入れられないことを認
識し、次いで、スケジューラ56に指示して、レジスタ
値R4およびR5を取り出し、第2の命令I2をパイプ
ライン26bに発行する。第2の命令I2のディスパッ
チを第1の命令I1の前にシフトし、プログラムの順序
外にすることによって、命令のストールが回避される。
これらの状況のもとで、第2の命令I2を発行できるの
が、第1の命令I1に依存していないときだけであるこ
とに留意すべきである。
ード/ディスパッチ・ユニット18は最初の2個の命令
I1およびI2のディスパッチを考慮する。同時に、命
令I1およびI2はソース操作として必要とされる4つ
のレジスタ値(R1、R2、R4およびR5)を定義す
る。4つのレジスタに対する最新の値がレジスタ・ファ
イル28にあるものと想定すると、これら両方の命令が
発行された場合、ボトルネック状態がレジスタ・ファイ
ル28の読取りポートに存在することとなる。これに応
じて、パイプライン26aおよび26bの状態によっ
て、デコード/ディスパッチ・ユニット18はいくつか
の可能性を考慮する。両方のパイプライン26aおよび
パイプライン26bがディスパッチに利用できる場合、
デコード/ディスパッチ・ユニット18はスケジューラ
56に指示して、レジスタ値R1およびR2を取り出
し、第1の命令I1を発行する。次いで、第2の命令の
ディスパッチを以降のサイクルで考慮する。一方、デコ
ード/ディスパッチ・ユニット18はリソース依存度チ
ェックを行った後、第1のパイプライン26aがストー
ルされており、新しい命令を受け入れられないことを認
識し、次いで、スケジューラ56に指示して、レジスタ
値R4およびR5を取り出し、第2の命令I2をパイプ
ライン26bに発行する。第2の命令I2のディスパッ
チを第1の命令I1の前にシフトし、プログラムの順序
外にすることによって、命令のストールが回避される。
これらの状況のもとで、第2の命令I2を発行できるの
が、第1の命令I1に依存していないときだけであるこ
とに留意すべきである。
【0031】さらに他の可能性として、デコード/ディ
スパッチ・ユニット18が命令I2および13を発行で
きることがある。条件付きブランチである命令I3がソ
ース・レジスタ値を何ら必要としないため、2個の命令
のレジスタ要件が2(N=2)を超えることはない。し
たがって、命令I2および13が両方とも命令I1に依
存していなければ、これらを命令I1以前に発行するこ
とができる。
スパッチ・ユニット18が命令I2および13を発行で
きることがある。条件付きブランチである命令I3がソ
ース・レジスタ値を何ら必要としないため、2個の命令
のレジスタ要件が2(N=2)を超えることはない。し
たがって、命令I2および13が両方とも命令I1に依
存していなければ、これらを命令I1以前に発行するこ
とができる。
【0032】実施例2:第2の命令I2だけが第1のサ
イクルで発行され、第1の命令がストールされると想定
した場合、デコード/ディスパッチ・ユニット18は第
2のサイクルでの第1の命令I1および第3の命令I3
のディスパッチを考慮する。第3の命令I3が条件付き
ブランチで、ソース・オペランド・レジスタ値を何ら必
要としないものであるから、レジスタ・ファイル28の
読取りポートにおけるボトルネック状態は第2のサイク
ルで存在しなくなる。したがって、デコード/ディスパ
ッチ・ユニット18はスケジューラ56に指示して、第
1の命令I1のレジスタ値R1およびR2を取り出す。
同時に、第1の命令I1と第3の命令I3が第2のサイ
クルでディスパッチされる。第1の命令I1が第1のサ
イクルでディスパッチされ、第2の命令I2ではない場
合、デコード/ディスパッチ・ユニット18はレジスタ
値R4、R5を取り出して、第2のサイクルで第2の命
令I2および第3の命令I3をディスパッチすることに
留意すべきである。
イクルで発行され、第1の命令がストールされると想定
した場合、デコード/ディスパッチ・ユニット18は第
2のサイクルでの第1の命令I1および第3の命令I3
のディスパッチを考慮する。第3の命令I3が条件付き
ブランチで、ソース・オペランド・レジスタ値を何ら必
要としないものであるから、レジスタ・ファイル28の
読取りポートにおけるボトルネック状態は第2のサイク
ルで存在しなくなる。したがって、デコード/ディスパ
ッチ・ユニット18はスケジューラ56に指示して、第
1の命令I1のレジスタ値R1およびR2を取り出す。
同時に、第1の命令I1と第3の命令I3が第2のサイ
クルでディスパッチされる。第1の命令I1が第1のサ
イクルでディスパッチされ、第2の命令I2ではない場
合、デコード/ディスパッチ・ユニット18はレジスタ
値R4、R5を取り出して、第2のサイクルで第2の命
令I2および第3の命令I3をディスパッチすることに
留意すべきである。
【0033】実施例3:第3のサイクルにおいて、デコ
ード/ディスパッチ・ユニット18は第4の命令I4お
よび第5の命令I5のディスパッチを考慮する。第4の
命令I4はレジスタ値を何ら必要としないブランチ命令
であり、第5の命令I5はソース・レジスタ値R7を1
つだけ必要とする移動命令である。2個の命令が必要と
する命令が1つのレジスタ値R7だけであるから、この
サイクル中で読取りポートがレジスタ・ファイル28を
使用する際には「ギャップ」が存在する。ギャップが特
定された場合、デコード/ディスパッチ・ユニット18
は命令バッファ16に待ち行列化されている命令を調べ
る。第4のサイクルで発行される命令を調べると、命令
I6および17を発行するのに3つのレジスタ値R1
1、R12およびR14が必要であることがわかる。3
つのレジスタ値が必要であるから、ボトルネック状態が
第4のサイクルに存在することになる。この状況におい
て、デコード/ディスパッチ・ユニット18はスケジュ
ーラ56に指示して、レジスタ値R7を取り出し、第3
のサイクルでレジスタ値R11をプリフェッチし、命令
I4および命令I5を第3のサイクルで発行する。レジ
スタ値R7は命令I5を実行しようとしている実行ユニ
ット20のパイプライン26に与えられる。レジスタ値
R11は、しかしながら、記憶要素58の1つに格納さ
れる。第4のサイクルにおいて、レジスタ値R12およ
びレジスタ値R14が取り出され、命令I6および命令
I7がディスパッチされる。レジスタ値R11をプリフ
ェッチし、格納することによって、3つのレジスタ値R
11、R12およびR14が第4のサイクルで命令I6
および17で利用可能となる。したがって、ボトルネッ
ク問題がレジスタ・ファイル28の読取りポートで回避
され、考えられる最大数の命令(i=2)が第4のサイ
クルで発行される。
ード/ディスパッチ・ユニット18は第4の命令I4お
よび第5の命令I5のディスパッチを考慮する。第4の
命令I4はレジスタ値を何ら必要としないブランチ命令
であり、第5の命令I5はソース・レジスタ値R7を1
つだけ必要とする移動命令である。2個の命令が必要と
する命令が1つのレジスタ値R7だけであるから、この
サイクル中で読取りポートがレジスタ・ファイル28を
使用する際には「ギャップ」が存在する。ギャップが特
定された場合、デコード/ディスパッチ・ユニット18
は命令バッファ16に待ち行列化されている命令を調べ
る。第4のサイクルで発行される命令を調べると、命令
I6および17を発行するのに3つのレジスタ値R1
1、R12およびR14が必要であることがわかる。3
つのレジスタ値が必要であるから、ボトルネック状態が
第4のサイクルに存在することになる。この状況におい
て、デコード/ディスパッチ・ユニット18はスケジュ
ーラ56に指示して、レジスタ値R7を取り出し、第3
のサイクルでレジスタ値R11をプリフェッチし、命令
I4および命令I5を第3のサイクルで発行する。レジ
スタ値R7は命令I5を実行しようとしている実行ユニ
ット20のパイプライン26に与えられる。レジスタ値
R11は、しかしながら、記憶要素58の1つに格納さ
れる。第4のサイクルにおいて、レジスタ値R12およ
びレジスタ値R14が取り出され、命令I6および命令
I7がディスパッチされる。レジスタ値R11をプリフ
ェッチし、格納することによって、3つのレジスタ値R
11、R12およびR14が第4のサイクルで命令I6
および17で利用可能となる。したがって、ボトルネッ
ク問題がレジスタ・ファイル28の読取りポートで回避
され、考えられる最大数の命令(i=2)が第4のサイ
クルで発行される。
【0034】各パイプライン26の段数を(N)に対す
る値を選択する際に考慮しなければならない。各パイプ
ライン26に多くの段を有しているマルチパイプライン
・プロセッサにおいては、比較的大きい数のレジスタ値
を任意の時点で実行ユニット20に収めることができ
る。空間的および時間的ローカリティの原理に基づい
て、パイプライン26のレジスタ値はレジスタ・ファイ
ル28に収められているレジスタ値よりも、発行されよ
うとしている命令に関与する度合いが高くなる。したが
って、レジスタ値がこのようなプロセッサのレジスタ・
ファイル28からよりも、バイパス操作で得られる可能
性が高い。所与のプログラムの命令の大多数に関して、
2つのソース・レジスタ値が必要ないことを認識するこ
とも重要である。これとは対照的に、プログラムの命令
の比較的大きな割合を通常ロード/ストア命令、ブラン
チ命令、移動命令、あるいはノー・オペレーションなど
のいずれかが占めており、これらはすべて0または1い
ずれかのレジスタ値オペランドを必要とする。バイパス
操作間であり、かつ大きな割合の命令が通常2つのソー
ス・オペランドを必要としないことにより、レジスタ・
ファイル28の読取りポートのバンドワイド(N)の幅
が所与のサイクルにおいて十分なものでないという状況
は、あまり普通のことではない。それ故、比較的多くの
サイクルに対して、レジスタ・ファイル28の狭くされ
た読取りポートのバンドワイドが問題を起こすことはな
い。しかしながら、ボトルネック状態が存在している場
合、上述の2つの処置がほとんどの場合に、問題を修正
するのを助ける。
る値を選択する際に考慮しなければならない。各パイプ
ライン26に多くの段を有しているマルチパイプライン
・プロセッサにおいては、比較的大きい数のレジスタ値
を任意の時点で実行ユニット20に収めることができ
る。空間的および時間的ローカリティの原理に基づい
て、パイプライン26のレジスタ値はレジスタ・ファイ
ル28に収められているレジスタ値よりも、発行されよ
うとしている命令に関与する度合いが高くなる。したが
って、レジスタ値がこのようなプロセッサのレジスタ・
ファイル28からよりも、バイパス操作で得られる可能
性が高い。所与のプログラムの命令の大多数に関して、
2つのソース・レジスタ値が必要ないことを認識するこ
とも重要である。これとは対照的に、プログラムの命令
の比較的大きな割合を通常ロード/ストア命令、ブラン
チ命令、移動命令、あるいはノー・オペレーションなど
のいずれかが占めており、これらはすべて0または1い
ずれかのレジスタ値オペランドを必要とする。バイパス
操作間であり、かつ大きな割合の命令が通常2つのソー
ス・オペランドを必要としないことにより、レジスタ・
ファイル28の読取りポートのバンドワイド(N)の幅
が所与のサイクルにおいて十分なものでないという状況
は、あまり普通のことではない。それ故、比較的多くの
サイクルに対して、レジスタ・ファイル28の狭くされ
た読取りポートのバンドワイドが問題を起こすことはな
い。しかしながら、ボトルネック状態が存在している場
合、上述の2つの処置がほとんどの場合に、問題を修正
するのを助ける。
【0035】図4Aを参照すると、本発明の動作を説明
する流れ図が示されている。命令バッファ16内の命令
は、まずデコード/ディスパッチ・ユニット18によっ
て解析され、次のサイクルでのディスパッチ対象の命令
がアサートされる(ボックス102)。その後、リソー
ス・チェックを行って、次のサイクルでのディスパッチ
対象命令を実行するのにリソースが利用できるかどうか
を判断する(ボックス104)。リソースが利用できな
い命令はストールする(楕円105)。リソースが利用
できるほかのすべての命令に対して、命令を実行するの
に必要なソース・レジスタ値がアサートされる(ボック
ス106)。次に、バイパス操作に利用可能な必要なレ
ジスタ値が取得される(ボックス108)。その後、ボ
トルネック状態がこのサイクルでレジスタ・ファイル2
8の読取りポートに存在しているかどうかを判定するチ
ェックが行われる(ボックス109)。ボトルネック状
態が存在していない場合には、命令がディスパッチされ
る(楕円110)。ボトルネック状態が存在している場
合には、上述の2つの処置のうち1つが問題を軽減する
ために試みられる。まず、実行に必要なプリフェッチさ
れたレジスタ値を取得する(ボックス112)。レジス
タ値のプリフェッチがボトルネックを軽減した場合に
は、命令がディスパッチされる(楕円113)。レジス
タ値がプリフェッチされない場合、あるいはレジスタ値
がプリフェッチされたが、ボトルネック状態が依然存在
している場合には、命令をプログラムの順序から並べ換
えて、ボトルネック状態を回避できるかどうかを判定す
る(ボックス114)。命令の並べ替えがボトルネック
を軽減した場合には、命令がディスパッチされる(楕円
115)。上述の2つの処置がボトルネックを軽減しな
い場合には、1つまたは複数のディスパッチ対象の命令
がストールする(ボックス116)。上記のプロセスは
プロセッサ50内でのプログラムの実行中の各サイクル
で繰り返される。
する流れ図が示されている。命令バッファ16内の命令
は、まずデコード/ディスパッチ・ユニット18によっ
て解析され、次のサイクルでのディスパッチ対象の命令
がアサートされる(ボックス102)。その後、リソー
ス・チェックを行って、次のサイクルでのディスパッチ
対象命令を実行するのにリソースが利用できるかどうか
を判断する(ボックス104)。リソースが利用できな
い命令はストールする(楕円105)。リソースが利用
できるほかのすべての命令に対して、命令を実行するの
に必要なソース・レジスタ値がアサートされる(ボック
ス106)。次に、バイパス操作に利用可能な必要なレ
ジスタ値が取得される(ボックス108)。その後、ボ
トルネック状態がこのサイクルでレジスタ・ファイル2
8の読取りポートに存在しているかどうかを判定するチ
ェックが行われる(ボックス109)。ボトルネック状
態が存在していない場合には、命令がディスパッチされ
る(楕円110)。ボトルネック状態が存在している場
合には、上述の2つの処置のうち1つが問題を軽減する
ために試みられる。まず、実行に必要なプリフェッチさ
れたレジスタ値を取得する(ボックス112)。レジス
タ値のプリフェッチがボトルネックを軽減した場合に
は、命令がディスパッチされる(楕円113)。レジス
タ値がプリフェッチされない場合、あるいはレジスタ値
がプリフェッチされたが、ボトルネック状態が依然存在
している場合には、命令をプログラムの順序から並べ換
えて、ボトルネック状態を回避できるかどうかを判定す
る(ボックス114)。命令の並べ替えがボトルネック
を軽減した場合には、命令がディスパッチされる(楕円
115)。上述の2つの処置がボトルネックを軽減しな
い場合には、1つまたは複数のディスパッチ対象の命令
がストールする(ボックス116)。上記のプロセスは
プロセッサ50内でのプログラムの実行中の各サイクル
で繰り返される。
【0036】図4Bを参照すると、レジスタ値のプリフ
ェッチに関連するステップを説明する流れ図120が示
されている。まず、現行サイクル内の読取りポートのギ
ャップを特定する(ボックス122)。ギャップが特定
された場合、ボトルネックの問題が存在する可能性のあ
る以降のサイクルが特定される(ボックス124)。最
後のステップにおいて、必要なレジスタ値がギャップ内
でプリフェッチされ、格納される(ボックス126)。
このプロセスもプロセッサ50内でのプログラムの実行
中の各サイクルで繰り返される。
ェッチに関連するステップを説明する流れ図120が示
されている。まず、現行サイクル内の読取りポートのギ
ャップを特定する(ボックス122)。ギャップが特定
された場合、ボトルネックの問題が存在する可能性のあ
る以降のサイクルが特定される(ボックス124)。最
後のステップにおいて、必要なレジスタ値がギャップ内
でプリフェッチされ、格納される(ボックス126)。
このプロセスもプロセッサ50内でのプログラムの実行
中の各サイクルで繰り返される。
【0037】上記の発明を特定の実施の形態に関して詳
細に説明してきたが、本発明に対するいくつかの変更お
よび改変が本発明の精神を逸脱することなく行えること
が明らかであろう。本発明はあらゆるスカラ・プロセッ
サで実施できる。さらに、本発明を複数発行プロセッサ
で実施することもできる。たとえば、4個の命令を発行
するプロセッサ(i=4)においては、読取りポート・
レジスタ・バンドワイドは2(N=2)、5(N=
5)、または6(N=6)である。5個の命令を発行す
るプロセッサ(i=5)または6個の命令を発行するプ
ロセッサ(i=6)においては、読取りポート・レジス
タ・バンドワイドは2(N=2)、5(N=5)、6
(N=6)または8(N=8)である。本出願人は1サ
イクルでのディスパッチ対象命令の数が現在の最新プロ
セッサよりもかなり多い超長命令ワード(VLIW)プ
ロセッサまたは類似のプロセッサに、本発明が特に適用
できるものであると確信している。読取りおよび書込み
ポートの狭いバンドワイドは、整数レジスタ・ファイル
および浮動小数点レジスタ・ファイル両方を格納するメ
モリにも適用できる。最後に、本明細書で詳細に説明し
ないが、本発明の原理をレジスタ・ファイル28に関連
する書込みポートの数を減らすためにも使用できる。た
とえば、(i)発行プロセッサにおいては、書込みポー
トの数は1(M=1)ないし最悪ケースで必要な書込み
ポートの最大数マイナス1の範囲でかまわない。本明細
書が例示的なものにすぎず、本発明の真の範囲および精
神は首記の特許請求の範囲に示されるものである。
細に説明してきたが、本発明に対するいくつかの変更お
よび改変が本発明の精神を逸脱することなく行えること
が明らかであろう。本発明はあらゆるスカラ・プロセッ
サで実施できる。さらに、本発明を複数発行プロセッサ
で実施することもできる。たとえば、4個の命令を発行
するプロセッサ(i=4)においては、読取りポート・
レジスタ・バンドワイドは2(N=2)、5(N=
5)、または6(N=6)である。5個の命令を発行す
るプロセッサ(i=5)または6個の命令を発行するプ
ロセッサ(i=6)においては、読取りポート・レジス
タ・バンドワイドは2(N=2)、5(N=5)、6
(N=6)または8(N=8)である。本出願人は1サ
イクルでのディスパッチ対象命令の数が現在の最新プロ
セッサよりもかなり多い超長命令ワード(VLIW)プ
ロセッサまたは類似のプロセッサに、本発明が特に適用
できるものであると確信している。読取りおよび書込み
ポートの狭いバンドワイドは、整数レジスタ・ファイル
および浮動小数点レジスタ・ファイル両方を格納するメ
モリにも適用できる。最後に、本明細書で詳細に説明し
ないが、本発明の原理をレジスタ・ファイル28に関連
する書込みポートの数を減らすためにも使用できる。た
とえば、(i)発行プロセッサにおいては、書込みポー
トの数は1(M=1)ないし最悪ケースで必要な書込み
ポートの最大数マイナス1の範囲でかまわない。本明細
書が例示的なものにすぎず、本発明の真の範囲および精
神は首記の特許請求の範囲に示されるものである。
【図1】 従来技術によるコンピュータのブロック図で
ある。
ある。
【図2】 従来技術のコンピュータ・システムのレジス
タ・ファイルに使用されるSRAMアレイのブロック図
である。
タ・ファイルに使用されるSRAMアレイのブロック図
である。
【図3】 本発明による読取りバンドワイドが狭いレジ
スタ・ファイルを有するコンピュータのブロック図であ
る。
スタ・ファイルを有するコンピュータのブロック図であ
る。
【図4】 本発明によるコンピュータの作動ステップを
示す流れ図である。
示す流れ図である。
12 命令(I)キャッシュ 14 プリフェッチ・ユニット 16 命令バッファ 18 デコード/ディスパッチ・ユニット 20 実行ユニット 26a−26z パイプライン 28 レジスタ・ファイル 52 バイパス論理回路 54 マルチプレクサ(MUX)回路 56 スケジューラ 58 記憶要素 70 データ入力 72 選択入力
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ニール・ウィルヘルム アメリカ合衆国 94025 カリフォルニア 州・メンロ パーク・プロスペクト スト リート・2110
Claims (11)
- 【請求項1】 レジスタのレジスタ・ファイルと、
(z)本のパイプラインを有している実行ユニットにサ
イクルごとにプログラムの命令を(i)個まで発行でき
るディスパッチ・ユニットとを含んでおり、前記命令の
中にはレジスタ・ファイルのレジスタのうちのいくつか
をソース・オペランドとして指定し、レジスタ・ファイ
ルのレジスタのうちのいくつかを宛先レジスタとして指
定するものがあり、所与の命令セットのために1サイク
ル中にアクセスする必要のあるレジスタ値の最大数
(X)を有しているプロセッサであって、 サイクルごとに最大(N)個のレジスタ(ただし、
(N)は(X)未満である)を受け入れるように構成さ
れた(N)個のアクセス・ポートを有するとともに、レ
ジスタ・ファイルのレジスタを格納するメモリを備えて
いるプロセッサ。 - 【請求項2】 実行ユニットへディスパッチされるプロ
グラム命令を待ち行列化するように構成されている命令
バッファと、次のサイクルでのディスパッチ用の待ち行
列内の次の(i)個の命令のディスパッチを考慮するよ
うに構成されたディスパッチ・ユニットとをさらに含ん
でおり、前記ディスパッチ・ユニットがさらに次のサイ
クルでレジスタ・ファイルを格納するメモリからの次の
(i)個の命令が必要とするレジスタ値をアサートする
ように構成されており、かつ次の(i)個の命令をディ
スパッチする場合に、レジスタ・ファイルを格納するメ
モリのアクセス・ポートにボトルネック状態が存在する
かどうかを判断するように構成されていることを特徴と
する請求項1に記載のプロセッサ。 - 【請求項3】 プロセッサの実行ユニットの(z)本の
パイプラインからの再計算されたレジスタ値を受けるバ
イパス論理回路をさらに有し、前記ディスパッチ・ユニ
ットが、その再計算されたレジスタ値の選択されたもの
がディスパッチを考慮する次の(i)命令のいずれかに
利用できるように、再計算されたレジスタ値のいずれか
を実行ユニットの(z)本のパイプラインへ戻すよう前
記バイパス論理回路に命令することを特徴とする請求項
2記載のプロセッサ。 - 【請求項4】 レジスタのレジスタ・ファイルと、
(z)本のパイプラインを有している実行ユニットにサ
イクルごとにプログラムの命令を(i)個まで発行でき
るディスパッチ・ユニットとを含んでおり、前記命令の
中にはレジスタ・ファイルのレジスタのうちのいくつか
をソース・オペランドとして指定し、レジスタ・ファイ
ルのレジスタのうちのいくつかを宛先レジスタとして指
定するものがあり、所与の命令セットのためにサイクル
中にアクセスする必要のあるレジスタ値の最大数(X)
を有しているプロセッサを構成させる方法であって、 サイクルごとに最大(N)個のレジスタ(ただし、
(N)は(X)未満である)を受け入れるように構成さ
れた(N)個のアクセス・ポートを有するとともにレジ
スタ・ファイルのレジスタを格納するメモリを設けるス
テップを備えている方法。 - 【請求項5】 実行ユニットへディスパッチされるプロ
グラム命令を待ち行列化するように構成されている命令
バッファを設けるステップと、次のサイクルでのディス
パッチ用の待ち行列内の次の(i)個の命令のディスパ
ッチを考慮するように構成されたディスパッチ・ユニッ
トを設けるステップとをさらに含んでおり、ディスパッ
チ・ユニットがさらに次のサイクルでレジスタ・ファイ
ルを格納するメモリからの次の(i)個の命令が必要と
するレジスタ値をアサートするように構成されており、
かつ次の(i)個の命令をディスパッチする場合に、レ
ジスタ・ファイルを格納するメモリのアクセス・ポート
にボトルネック状態が存在するかどうかを判断するよう
に構成されていることを特徴とする請求項4に記載の方
法。 - 【請求項6】 レジスタのレジスタ・ファイルと、
(z)本のパイプラインを有している実行ユニットにサ
イクルごとにプログラムの命令を(i)個まで発行でき
るディスパッチ・ユニットとを含んでおり、命令の中に
はレジスタ・ファイルのレジスタのうちのいくつかをソ
ース・オペランドとして指定し、レジスタ・ファイルの
レジスタのうちのいくつかを宛先レジスタとして指定す
るものがあり、所与の命令セットに関するサイクル中に
アクセスする必要のあるレジスタ値の最大数(X)を有
しているプロセッサを操作する方法において、 サイクルごとに最大(N)個のレジスタ(ただし、
(N)は(X)未満である)を受け入れるように構成さ
れた(N)個のアクセス・ポートを有しているととも
に、レジスタ・ファイルのレジスタを格納するメモリに
アクセスするステップを備えている方法。 - 【請求項7】 第1のサイクルでのディスパッチが考慮
されている(i)個の命令が必要とするレジスタ値をア
サートするステップをさらに含んでいることを特徴とす
る請求項6に記載の方法。 - 【請求項8】 第1のサイクルでのディスパッチが考慮
されている(i)個の命令が必要とするレジスタ値のう
ちのいずれがバイパス操作によって得られるかを判定す
るステップをさらに含んでいることを特徴とする請求項
6に記載の方法。 - 【請求項9】 第1のサイクルで必要とされるレジスタ
値の数がレジスタ・ファイルのレジスタを格納するメモ
リのレジスタ読取りポート(N)を超えるかどうかをア
サートするステップをさらに含んでいることを特徴とす
る、請求項5に記載の方法。 - 【請求項10】 第1のサイクルで必要とされるレジス
タ値の数がレジスタ・ファイルのレジスタを格納するメ
モリのレジスタ読取りポート(N)を超えている状況
で、プログラムの順序外で命令を発行するステップをさ
らに含んでいることを特徴とする請求項9に記載の方
法。 - 【請求項11】 第1のサイクルで必要とされるレジス
タ値の数がレジスタ・ファイルのレジスタを格納するメ
モリのレジスタ読取りポート(N)を超える状況におい
て、レジスタ値をプリフェッチするステップをさらに含
んでいることを特徴とする請求項9に記載の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/414,873 US5761475A (en) | 1994-12-15 | 1995-03-31 | Computer processor having a register file with reduced read and/or write port bandwidth |
| US08/414873 | 1995-03-31 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0926877A true JPH0926877A (ja) | 1997-01-28 |
Family
ID=23643356
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8099598A Withdrawn JPH0926877A (ja) | 1995-03-31 | 1996-03-29 | 読取りおよび/または書込みポートのバンドワイドが狭いレジスタ・ファイルを有するコンピュータ・プロセッサ |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5761475A (ja) |
| EP (1) | EP0735463A3 (ja) |
| JP (1) | JPH0926877A (ja) |
| KR (1) | KR960035259A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2010128582A1 (ja) * | 2009-05-08 | 2010-11-11 | パナソニック株式会社 | プロセッサ |
Families Citing this family (44)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3400458B2 (ja) * | 1995-03-06 | 2003-04-28 | 株式会社 日立製作所 | 情報処理装置 |
| US5913054A (en) * | 1996-12-16 | 1999-06-15 | International Business Machines Corporation | Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle |
| WO1998032070A1 (en) * | 1997-01-17 | 1998-07-23 | Picturetel Corporation | Pseudo-random number generator exploiting processors having instruction-level parallelism and the use thereof for encryption |
| US5872986A (en) * | 1997-09-30 | 1999-02-16 | Intel Corporation | Pre-arbitrated bypassing in a speculative execution microprocessor |
| US6304954B1 (en) * | 1998-04-20 | 2001-10-16 | Rise Technology Company | Executing multiple instructions in multi-pipelined processor by dynamically switching memory ports of fewer number than the pipeline |
| US7616200B1 (en) | 1998-06-12 | 2009-11-10 | 3Dlabs Inc. Ltd. | System for reducing aliasing on a display device |
| US6518971B1 (en) | 1998-07-17 | 2003-02-11 | 3Dlabs Inc. Ltd. | Graphics processing system with multiple strip breakers |
| US6459453B1 (en) | 1998-07-17 | 2002-10-01 | 3Dlabs Inc. Ltd. | System for displaying a television signal on a computer monitor |
| US6181355B1 (en) | 1998-07-17 | 2001-01-30 | 3Dlabs Inc. Ltd. | Graphics processing with transcendental function generator |
| WO2000004495A1 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | System for processing vertices from a graphics request stream |
| US6577316B2 (en) | 1998-07-17 | 2003-06-10 | 3Dlabs, Inc., Ltd | Wide instruction word graphics processor |
| US7518616B1 (en) | 1998-07-17 | 2009-04-14 | 3Dlabs, Inc. Ltd. | Graphics processor with texture memory allocation system |
| WO2000004482A2 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Multi-processor graphics accelerator |
| US6480913B1 (en) | 1998-07-17 | 2002-11-12 | 3Dlabs Inc. Led. | Data sequencer with MUX select input for converting input data stream and to specific output data stream using two exclusive-or logic gates and counter |
| US6157393A (en) * | 1998-07-17 | 2000-12-05 | Intergraph Corporation | Apparatus and method of directing graphical data to a display device |
| US6304953B1 (en) * | 1998-07-31 | 2001-10-16 | Intel Corporation | Computer processor with instruction-specific schedulers |
| US6343348B1 (en) | 1998-12-03 | 2002-01-29 | Sun Microsystems, Inc. | Apparatus and method for optimizing die utilization and speed performance by register file splitting |
| US6615338B1 (en) | 1998-12-03 | 2003-09-02 | Sun Microsystems, Inc. | Clustered architecture in a VLIW processor |
| US7117342B2 (en) * | 1998-12-03 | 2006-10-03 | Sun Microsystems, Inc. | Implicitly derived register specifiers in a processor |
| US7114056B2 (en) | 1998-12-03 | 2006-09-26 | Sun Microsystems, Inc. | Local and global register partitioning in a VLIW processor |
| US6279100B1 (en) | 1998-12-03 | 2001-08-21 | Sun Microsystems, Inc. | Local stall control method and structure in a microprocessor |
| US6718457B2 (en) | 1998-12-03 | 2004-04-06 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
| US6205543B1 (en) | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
| US6674440B1 (en) | 1999-04-05 | 2004-01-06 | 3Dlabs, Inc., Inc. Ltd. | Graphics processor for stereoscopically displaying a graphical image |
| US6625634B1 (en) | 1999-10-01 | 2003-09-23 | Sun Microsystems, Inc. | Efficient implementation of multiprecision arithmetic |
| US6320813B1 (en) | 2000-03-02 | 2001-11-20 | Sun Microsystems, Inc. | Decoding of a register file |
| US6704855B1 (en) * | 2000-06-02 | 2004-03-09 | International Business Machines Corporation | Method and apparatus for reducing encoding needs and ports to shared resources in a processor |
| DE10043003A1 (de) * | 2000-09-01 | 2002-03-14 | Infineon Technologies Ag | Programmgesteuerte Einheit |
| US20040268098A1 (en) * | 2003-06-30 | 2004-12-30 | Yoav Almog | Exploiting parallelism across VLIW traces |
| US9558042B2 (en) * | 2004-03-13 | 2017-01-31 | Iii Holdings 12, Llc | System and method providing object messages in a compute environment |
| US20070266388A1 (en) | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
| US8271980B2 (en) | 2004-11-08 | 2012-09-18 | Adaptive Computing Enterprises, Inc. | System and method of providing system jobs within a compute environment |
| US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
| US8631130B2 (en) | 2005-03-16 | 2014-01-14 | Adaptive Computing Enterprises, Inc. | Reserving resources in an on-demand compute environment from a local compute environment |
| US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
| CA2603577A1 (en) | 2005-04-07 | 2006-10-12 | Cluster Resources, Inc. | On-demand access to compute resources |
| US20090019238A1 (en) * | 2007-07-10 | 2009-01-15 | Brian David Allison | Memory Controller Read Queue Dynamic Optimization of Command Selection |
| US7761669B2 (en) * | 2007-07-10 | 2010-07-20 | International Business Machines Corporation | Memory controller granular read queue dynamic optimization of command selection |
| US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
| US20130339689A1 (en) * | 2011-12-29 | 2013-12-19 | Srikanth T. Srinivasan | Later stage read port reduction |
| US9632783B2 (en) * | 2014-10-03 | 2017-04-25 | Qualcomm Incorporated | Operand conflict resolution for reduced port general purpose register |
| US10514911B2 (en) | 2014-11-26 | 2019-12-24 | International Business Machines Corporation | Structure for microprocessor including arithmetic logic units and an efficiency logic unit |
| KR101993028B1 (ko) * | 2015-02-05 | 2019-06-26 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 |
| WO2022082046A1 (en) * | 2020-10-15 | 2022-04-21 | The Regents Of The University Of California | Breathing operand windows to exploit bypassing in graphics processing units |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH081599B2 (ja) * | 1988-02-24 | 1996-01-10 | 三菱電機株式会社 | データ処理装置 |
| US5293500A (en) * | 1989-02-10 | 1994-03-08 | Mitsubishi Denki K.K. | Parallel processing method and apparatus |
| US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
| US5222240A (en) * | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
| JP2911278B2 (ja) * | 1990-11-30 | 1999-06-23 | 松下電器産業株式会社 | プロセッサ |
| US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
| JP2539974B2 (ja) * | 1991-11-20 | 1996-10-02 | 富士通株式会社 | 情報処理装置におけるレジスタの読出制御方式 |
| JPH05165639A (ja) * | 1991-12-13 | 1993-07-02 | Fujitsu Ltd | 並列処理装置におけるレジスタ読み出し方法およびレジスタ読み出し装置 |
| JP3202108B2 (ja) * | 1992-09-16 | 2001-08-27 | 富士通株式会社 | パイプライン処理を用いたプロセッサ |
| JP3644959B2 (ja) * | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | マイクロプロセッサシステム |
| DE69325785T2 (de) * | 1992-12-29 | 2000-02-17 | Koninklijke Philips Electronics N.V., Eindhoven | Verbesserte Architektur für Prozessor mit sehr langem Befehlswort |
-
1995
- 1995-03-31 US US08/414,873 patent/US5761475A/en not_active Expired - Lifetime
-
1996
- 1996-03-14 EP EP96301745A patent/EP0735463A3/en not_active Withdrawn
- 1996-03-29 JP JP8099598A patent/JPH0926877A/ja not_active Withdrawn
- 1996-03-30 KR KR1019960009907A patent/KR960035259A/ko not_active Abandoned
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2010128582A1 (ja) * | 2009-05-08 | 2010-11-11 | パナソニック株式会社 | プロセッサ |
| JP2010262542A (ja) * | 2009-05-08 | 2010-11-18 | Panasonic Corp | プロセッサ |
Also Published As
| Publication number | Publication date |
|---|---|
| US5761475A (en) | 1998-06-02 |
| EP0735463A3 (en) | 2001-02-07 |
| KR960035259A (ko) | 1996-10-24 |
| EP0735463A2 (en) | 1996-10-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0926877A (ja) | 読取りおよび/または書込みポートのバンドワイドが狭いレジスタ・ファイルを有するコンピュータ・プロセッサ | |
| US11163582B1 (en) | Microprocessor with pipeline control for executing of instruction at a preset future time | |
| US11204770B2 (en) | Microprocessor having self-resetting register scoreboard | |
| JP3955305B2 (ja) | 縮小命令セット・コンピュータ・マイクロプロセッサーの構造 | |
| US7028170B2 (en) | Processing architecture having a compare capability | |
| US5546597A (en) | Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution | |
| US5615385A (en) | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming | |
| US5701430A (en) | Cross-cache-line compounding algorithm for scism processors | |
| JP2010532063A (ja) | 条件命令を無条件命令および選択命令へと拡張する方法およびシステム | |
| US20090063735A1 (en) | Method and Apparatus for Operating an Age Queue for Memory Request Operations in a Processor of an Information Handling System | |
| WO1996012228A1 (en) | Redundant mapping tables | |
| WO2007092528A2 (en) | Thread optimized multiprocessor architecture | |
| US6397326B1 (en) | Method and circuit for preloading prediction circuits in microprocessors | |
| US6202139B1 (en) | Pipelined data cache with multiple ports and processor with load/store unit selecting only load or store operations for concurrent processing | |
| US5909587A (en) | Multi-chip superscalar microprocessor module | |
| US9886278B2 (en) | Computing architecture and method for processing data | |
| US20060259747A1 (en) | Long instruction word processing with instruction extensions | |
| US5924120A (en) | Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times | |
| US5727177A (en) | Reorder buffer circuit accommodating special instructions operating on odd-width results | |
| US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
| US20100325631A1 (en) | Method and apparatus for increasing load bandwidth | |
| US7302553B2 (en) | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue | |
| JP3756410B2 (ja) | 述語データを提供するシステム | |
| CN1124546C (zh) | 一种超标量处理器及在该超标量处理器中完成指令的方法 | |
| US8006042B2 (en) | Floating point bypass retry |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20040901 |