JP7348969B2 - 共有機能部を有するマイクロプロセッサ - Google Patents
共有機能部を有するマイクロプロセッサ Download PDFInfo
- Publication number
- JP7348969B2 JP7348969B2 JP2022004222A JP2022004222A JP7348969B2 JP 7348969 B2 JP7348969 B2 JP 7348969B2 JP 2022004222 A JP2022004222 A JP 2022004222A JP 2022004222 A JP2022004222 A JP 2022004222A JP 7348969 B2 JP7348969 B2 JP 7348969B2
- Authority
- JP
- Japan
- Prior art keywords
- type
- instruction
- execution queue
- execution
- type instruction
- 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.)
- Active
Links
- 230000006870 function Effects 0.000 claims description 106
- 230000001186 cumulative effect Effects 0.000 claims description 84
- 238000012545 processing Methods 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 22
- 238000013507 mapping Methods 0.000 description 13
- QXOQNNAWFUXKMH-UHFFFAOYSA-N 1-(Malonylamino)cyclopropanecarboxylic acid Chemical group OC(=O)CC(=O)NC1(C(O)=O)CC1 QXOQNNAWFUXKMH-UHFFFAOYSA-N 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
- 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/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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode 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)
- Hardware Redundancy (AREA)
Description
前記第1実行キューは、複数のエントリを含み、前記第1実行キューの各エントリには、第1タイプ命令が記録されている。前記第1実行キューの各エントリは、前記第1タイプ命令に対応する第1カウント値を含み、前記第1カウント値は、第1カウンタが0になるまでデクリメントされる。前記第1実行キューは、前記第1タイプ命令に対応する前記第1カウント値が0になったときに、前記第1タイプ命令を共有機能部に発送する。
前記第2実行キューは、複数のエントリを含み、前記第2実行キューの各エントリには、第2タイプ命令が記録されている。前記第2実行キューの各エントリは、前記第2タイプ命令に対応する第2カウント値を含み、前記第2カウント値は、前記第2タイプ命令に対応する前記第2カウント値が0になるまでデクリメントされる。第2実行キューは、第2カウンタが0になったときに、第2タイプ命令を共有機能部に発送する。
共有機能部は、第1タイプ命令と第2タイプ命令を実行する。第1実行キューからの第1タイプ命令と、第2実行キューからの第2タイプ命令は、相互に排他的に共有機能部に発送される。
共有機能部による実行のために、異なるタイプ命令が動的に選択される先行技術との重要な相違点は、本開示では、命令は、予定されたカウンタ(第1カウント値と第2カウント値)を用いて、将来の正確な時間に共有機能部によって実行されるように予定されていることである。レジスタファイルのデータの読出/書込は、第1タイプ命令と第2タイプ命令のいずれについても、将来の正確な実行時間に同期するように予定されている。先行技術のような、動的な競合解消、動的なデータ依存性解消、動的な読出/書込ポートの解消は必要ない。動的な解消は、マイクロプロセッサの設計において最も電力を消費する。
この方法は、前記第1実行キューのエントリに含まれる第1カウンタが0になったと判断することに対応して、前記第1実行キューのエントリに記録された第1タイプ命令を前記共有機能部に発送し、前記第2実行キューのエントリに含まれる第2カウンタが0になったと判断することに応答して、前記第2実行キューのエントリに記録されている第2タイプ命令を前記共有機能部に発送するものであり、前記共有機能部によって、前記第1タイプ命令と前記第2タイプ命令が実行される。
前記第1実行キューは、複数のエントリを含み、前記第1実行キューの各エントリには、前記第1タイプ命令が記録され、前記第1実行キューの各エントリは、前記第1タイプ命令に対応する第1カウント値を含み、前記第1カウント値は、第1カウンタが0になるまでデクリメントされる。前記第1実行キューは、前記第1タイプ命令に対応する前記第1カウント値が0になったときに、前記第1タイプ命令を前記共有機能部に発送する。
前記第2実行キューは、複数のエントリを含み、前記第2実行キューの各エントリには、前記第2タイプ命令が記録され、前記第2実行キューの各エントリは、前記第2タイプ命令に対応する第2カウント値を含み、前記第2カウント値は、第2カウンタが0になるまでデクリメントされる。前記第2実行キューは、第2カウンタが0になったときに、前記第2タイプ命令を前記共有機能部に発送する。
前記共有機能部は、前記第1タイプ命令前記と第2タイプ命令を実行し、前記第1実行キューからの前記第1タイプ命令と、前記第2実行キューからの前記第2タイプ命令が、相互に前記共有機能部に発送される。
別の実施形態では、前記第1実行キューと前記第2実行キューは、キューの各エントリの命令のタイプを示すタグを持つ単一のキューに統合されてもよい。単一の実行キューはより効率的であるが、2つの実行キューは構成が容易である。
レジスタファイルのデータの読出/書込は、第1タイプ命令と第2タイプ命令のいずれについても、共有機能部の将来の正確な実行時間に同期するように予定されている。先行技術のような動的な競合解消、動的なデータ依存性の解消、動的な読出/書込ポートの解消は必要ない。動的な解消は、マイクロプロセッサの設計において最も電力を消費する。
例えば、以下の説明において、第2の特徴の上方又は上部に第1の特徴を形成することは、第1及び第2の特徴が直接接触して形成される実施形態を含んでもよく、また、第1及び第2の特徴が直接接触しないように、第1及び第2の特徴の間に追加の特徴が形成される実施形態を含んでもよい。さらに、本開示では、様々な例において参照用の数字及び/又は文字を繰り返すことがある。この繰り返しは、単純化及び明確化のためのものであり、それ自体が開示された様々な実施形態及び/又は構成の間の関係を指示すものではない。
FSEマイクロプロセッサでは、デコード/発行部は、データ依存性の解消、レジスタの読出/書込ポートの可用性、及び将来の時間における機能部の可用性に基づいて、これらの命令の発行を継続すると共に将来の時間に命令を実行するように予定する。
メモリ30は、レベル2(L2)及びレベル3(L3)のキャッシュと、データ処理システム1のメインメモリとを含んでもよく、この場合、L2及びL3のキャッシュは、メインメモリよりも速いアクセス時間を有する。メモリは、ランダムアクセスメモリ(RAM)、動的ランダムアクセスメモリ(DRAM)、静的ランダムアクセスメモリ(SRAM)、読出専用メモリ(ROM)、プログラム可能な読出専用メモリ(PROM)、電気的にプログラム可能な読出専用メモリ(EPROM)、電気的に消去可能なプログラム可能な読み取専用メモリ(EEPROM)、及びフラッシュメモリのうち、少なくとも1つを含むことができる。
スーパースカラ型マイクロプロセッサは、第1命令に依存しない第2命令を第1命令の前に実行する順不同(OOO)型を採用することができる。従来の順不同型のマイクロプロセッサの構成では、命令を順不同で実行できるが、制御の危険性、例えば、分岐予測ミス、割り込み、正確な例外等のために、命令をマイクロプロセッサのレジスタファイルに順番に退避させる必要がある。
命令が実行パイプラインから順番に退避されるまで、結果データのために、バッファの再配置やレジスタ名変更等の一時的な記憶部が使用される。本発明では、マイクロプロセッサ10は、命令がデータ依存性を持たず、制御ハザードを持たない限り、結果データをレジスタファイルに順不同で書換えることにより、命令を順不同で実行し、退避させることができる。本実施形態では、データ依存性や制御上の危険性を有する命令を、予定された将来の時間に発行するようにマイクロプロセッサ10が構成されているため、FSEマイクロプロセッサ10には一時レジスタは使用されない。しかし、本開示は、これに限定されない。他の実施形態では、一時的なレジスタも使用することができる。
実施形態では、命令は、異なるタイプの命令を含む。例えば、命令は、ベクトル命令、スカラFP命令、単一命令/複数データ(SIMD)命令、デジタル信号処理(DSP)命令、又は任意の他のタイプの命令のうちの少なくとも1つを含んでもよい。ベクトル命令、スカラFP命令、SIMD命令、DSP命令の定義は、関連する技術分野でよく知られているため、以下ではこれらの命令のタイプについての詳細な説明は省略する。本開示の実施形態では、図1に図示されているものよりも多数、少数、又は異なるコンポーネントを使用することができる。
実施形態では、BPU12は、基本ブロックの開始アドレスから基本ブロックの終了を予測するための基本ブロックの分岐予測機能を実装している。基本ブロックの開始アドレス(例えば、基本ブロックの最初の命令のアドレス)は、以前に採用された分岐命令の目標アドレスであってもよい。基本ブロックの終了アドレスは、基本ブロックの最後の命令の後の命令アドレスであり、これは別の基本ブロックの開始アドレスであってもよい。基本ブロックは、いくつかの命令を含んでいてもよく、基本ブロックのある分岐が別の基本ブロックにジャンプするために採用されたときに、基本ブロックは終了する。
デコードするため誤って予測された分岐に続く命令は、マイクロプロセッサ内の様々な個所から破棄される。分岐予測ミスは、BPU12で予測されなかった無条件分岐命令(常に採用される分岐)をデコードするデコード/発行部13から発生してもよい。また、デコード/発行部13とBPU12は、BPU12に更新情報を提供してもよい。マイクロプロセッサ10では、分岐命令後の命令は、分岐命令の実行後に、レジスタファイル14に書き戻す。
オペランドは、レジスタファイル14内のレジスタのインデックス又はアドレスを指定するもので、ソースオペランドは、動作が読出されるレジスタファイルからのレジスタを示し、分岐先オペランドは、動作の結果データが書換えられるレジスタファイル内のレジスタを示す。ソースオペランド及び分岐先オペランドは、ソースレジスタ及び分岐先レジスタとも呼ばれ、これらは以下で同じ意味で使用される。
実施形態では、オペランドは、32個のレジスタを有するレジスタファイル内のレジスタを識別するために、5ビットのインデックスを必要とする。命令によっては、レジスタデータの代わりに、命令で指定された即時データを使用する。各動作は、機能部20又はロード/ストア部17で実行される。オペコードで指定された演算のタイプと、リソース(レジスタ、機能部等)の可用性に基づいて、各命令は、実行レイテンシ時間とスループット時間を持つ。実行レイテンシ時間(又はレイテンシ時間)とは、命令で指定された動作の実行が完了し、結果データを書換えるまでの時間(即ち、クロックサイクル数)を指す。スループット時間とは、次の命令が機能部20に入力できる時間(クロックサイクル数)を指す。
1つの実行キュー19に対して複数の命令が発行される場合は、スループット時間が累積される。累積時間は、実行キュー19で以前に発行された命令を考慮して、次の命令が実行のために機能部20に入力することができる時間を示す。機能部20に命令を送ることができる時間を(レジスタファイルからの)読出時間と呼び、機能部20が命令を完了した時間を(レジスタファイルへの)書込時間と呼ぶ。
命令は、実行キュー19に対して発行され、発行された各命令は、予定された読出時間を持って、実行のために機能部20又はロード/ストア部17に発送される。累積されたスループット時間は、発行された命令の読出時間である。命令のレイテンシ時間は、実行キュー19の次の利用可能なエントリに命令が発行されるときの書込時間を生成するために、累積されたスループット時間に追加される。累積時間に基づき、実行のレイテンシ時間と発行命令の開始時間が修正される。ここで、修正された実行のレイテンシ時間は、最新の発行された命令の書込時間と呼ばれ、修正された開始時間は、発行された命令の読出時間と呼ばれる。
書込時間と読出時間は、発行された命令をレジスタファイル14のレジスタに書込んだり、レジスタファイル14から読出たりするための、特定の時間を記述するアクセス時間と呼ばれることもある。複数の命令を並行して発行する場合、第2命令の書込時間と読出時間は、第2命令の前に発行された第1命令に基づいてさらに調整されてもよい。デコード/発行部13は、ロード/ストア命令を、タグマイクロオペとデータマイクロオペを含む2つのマイクロ動作(マイクロオペ)としてデコードしてもよい。
(1)読出後書込み(WAR)、書込み後読出(RAW)、書込み後書込み(WAW)を含むデータ依存性。
(2)レジスタファイルから機能部へデータを読出すための読出ポートの可用性。
(3)機能部からレジスタファイルにデータを書換えるための書込ポートの可用性。
(4)データを実行するための機能部20の可用性。
デコード/発行部13は、命令を実行キュー19に発送する前に、スコアボード15にアクセスしてデータの依存性を確認してもよい。レジスタファイル14は、限られた数の読出/書込ポートを有しており、発行された命令は、将来的にレジスタファイル14にアクセスするために、読出/書込ポートを調整又は予約する必要がある。
読出/書込制御部16は、命令の各ソースオペランドの予定された読出時間と、命令の各分岐先オペランドの予定された書込時間とを保持する。デコード/発行部13は、命令のアクセス時間(即ち、読出時間及び書込時間)を予定すると共に、レジスタファイル14の読出ポートの可用性を確認するために、読出/書込制御部16にアクセスしてもよい。他の実施形態では、書込ポートの1つは、書込ポート制御を使用せずに、レジスタファイル14に書換えるための実行レイテンシ時間が不明な命令の専用であってもよい。また、読出ポートの1つは、読出ポート制御を使用せずに、レジスタファイル14からデータを読出すための読出時間が不明な命令用に確保してもよい。レジスタファイル14の読出ポートの数を、未知の読出動作のために動的に確保する(専用ではない)ことも可能である。この場合、機能部20又はロード/ストア部17は、レジスタファイル14からデータを読出す際に、読出ポートが使用中でないことを確認する必要がある。
実施形態では、機能部20の可用性は、キューイングされた命令(即ち、以前に実行キューに発行された命令)のスループット時間が累積される実行キュー19と調整することによって、解消されてもよい。実行キューに累積されたスループット時間に基づいて、機能部20が利用可能である将来の特定の時間に機能部20に発送されるように予定された命令は、実行キュー19に対して発行されてもよい。
スコアボード15は、複数のエントリ150(0)~150(N)を含み、各スコアボードエントリは、レジスタファイル14内の1つのレジスタに対応し、対応するレジスタに関連する情報を記録する。実施形態では、スコアボード15は、レジスタファイル14と同数のエントリ(即ち、N個のエントリ)を有するが、本開示は、スコアボード15のエントリの数を制限することを意図しない。
第1及び第2スコアボード151、152は、マイクロプロセッサ10内に共存していても、共存していなくてもよい。本開示は、この点を限定することを意図しない。他の実施形態では、第1及び第2スコアボード151、152は、読出及び書込の両方の動作を処理する1つのスコアボード15として実装又は表示されてもよい。
図3Aは、発行された命令の分岐先レジスタのための第1スコアボード151を示す。図3Bは、発行された命令のソースレジスタのための第2スコアボード152を示す。図3Aに示すように、第1スコアボード151の各エントリ1510(0)~1510(N)は、未知領域(Unknown)1511と、カウント領域(cnt)1531と、機能部領域(funit)1551とを含む。これらの領域のそれぞれには、発行された命令によって書込まれる、対応する分岐先レジスタに関連する情報が記録される。スコアボードエントリのこれらの領域は、命令の発行時に予定されてもよい。
実施形態において、未知領域1511は、未知の書込時間を有する1つ又は複数の発行された命令をレジスタに書込むことが予定されていることを示すために、任意の数のビットを含んでもよい。未知領域1511は、命令の発行時間に予定又は修正され、未知のレジスタ書込時間が解消された後にリセットされてもよい。
リセット動作は、デコード/発行部13、ロード/ストア部17(例えば、データヒット後)、又は機能部20(例えば、INT DIV 動作が分割する桁数を解消した後)等、書込時間が不明な命令の実行を伴うマイクロプロセッサ内の他の部分の何れかによって実行されてもよい。
実施形態では、未知領域1511は、レジスタの書込みに予定されている未知の書込時間において他の3つの発行された命令の存在を記録する、4つの異なる状態を持つ2つのビットを含んでもよい。さらに他の実施形態では、未知領域1511は、未知の書込時間を有する複数の発行された命令を記録するために、3ビット、4ビット等を含んでもよい。
実施形態では、発行された命令は、レジスタへの書込又は読出を行うことができる。レジスタへの書込の場合、カウント領域1531の値は、書込(又はレイテンシ)カウント値と呼ばれることがある。レジスタへの読出の場合、カウント領域1531の値は、図3Bで述べる読出カウント値として参照されてもよい。言い換えれば、他の実施形態では、カウント値領域は、発行された命令によって指定された動作に応じて、レジスタの書込時間又は読出時間のいずれかを記録してもよい。
(書込)カウント領域1531の書込カウント値と同様に、読出カウント値は、読出カウント値が0になるまで、クロックサイクルごとに1ずつカウントダウンされる。(読出)カウント領域1523の動作及び機能は、特に指定のない限り、(書込)カウント領域1531と同様であるため、その詳細は省略する。
他の実施形態では、読出シフタ161及び書込シフタ163は、読出/書込制御部16の外部にあってもよく、読出/書込制御部16は、レジスタファイル14の読出ポート及び書込ポートの使用を制御するために、読出シフタ161及び書込シフタ163にそれぞれ通信可能に結合されていてもよい。
実施形態では、読出有効領域(rd)1611には、対応するクロックサイクルでの読出ポートの可用性を示す読出有効値が記録される。例えば、X番目のエントリにおける読出有効領域1611(X)の非ゼロ値は、Xが1より大きくMより小さい場合に、将来のX番目のクロックサイクルにおいて読出ポートが使用中になることを示し、X番目のエントリにおける読出有効領域1611(X)のゼロ値は、将来のX番目のクロックサイクルにおいて対応する読出ポートがアクセス可能になることを示す。読出アドレス領域(rd_addr)1613は、データが読み出されるべきレジスタのアドレスを記録する。例えば、エントリ1610(1)は、レジスタ7(即ち、アドレスr7)からデータを読出すために、すぐ次のクロックサイクルで対応する読出ポートが使用中になることを示す。他の実施形態では、他の情報を記録するために、読出シフタ161の各エントリに、より多くの又はより少ない領域が存在する。
利用可能な読出ポートの数が必要な読出ポートの数よりも少ない場合、デコード/発行部13は命令を待機し、次のクロックサイクルで読出シフタを再確認することができる。予定された読出時間になると、読出シフタは、レジスタファイル14からデータを読み取るために、読出有効領域1611及び読出アドレス領域1613を対応する機能部に提供する。実施形態では、読出シフタ161は、循環型の読出ポインタで実装されても良い。この読出ポインタは、クロックサイクルごとに読出有効領域1611及び読出アドレス領域1613を読出す読出シフタ161の末尾を示し、読出ポインタはクロックサイクルごとにインクリメントされる。
例えば、Y番目のエントリにおける書換有効領域1631(Y)の非ゼロ値は、将来のY番目のクロックサイクルで書込ポートが使用中になることを示し、Yは1より大きくPより小さい値であり、Y番目のエントリにおける書換有効領域1631(Y)のゼロ値は、将来のY番目のクロックサイクルで書込ポートがアクセス可能な状態になることを示す。
書込アドレス領域(wr_addr)1633は、機能部が結果データの書換えを行うレジスタファイル14内のレジスタのアドレスを示す。機能部領域(funit)1635は、書込ポートに結果データを書換える機能部20又はロード/ストア部17を指定する。
例えば、書込シフタ163の第1エントリ1630(1)は、機能部領域1635に記録されたalu 0が、書込アドレス領域1633に記録されたレジスタ22(r22)に結果データを書換え、到来する第1クロックサイクルにおいて書込ポートが使用中になることを示す。
例えば、実行キュー19Aは、デコード/発行部13と対応する機能部20Aとの間に結合され、対応する機能部20Aが計画されている動作を指定する命令を、キューイング及び発送する。同様に、実行キュー19Bは、デコード/発行部13と対応する機能部20Bとの間に結合され、実行キュー19Cは、デコード/発行部13と対応する機能部20Cとの間に結合される。
実施形態では、実行キュー19D、19Eは、デコード/発行部13とロード/ストア部17との間に結合され、ロード/ストア命令を処理する。実行キュー19D、19Eは、それぞれ、タグ実行キュー(TEQ)19D、データ実行キュー(DEQ)19Eとも呼ばれる。
累積型スループットカウンタ (acc_cnt)199の累積カウント値は、デコード/発行部13の次の命令を機能部20又はロード/ストア部17に発送することができる将来の時間を示す。デコード/発行部13の次の命令は、累積型スループットカウンタ (acc_cnt)199の累積カウント値に応じて、機能部20又はロード/ストア部17への発送時間を予定して、実行キュー19に対して発行することができる。実施形態では、命令の読出時間は累積カウント値であり、累積カウント値は、現在のacc_cntと次の命令のスループット時間(acc_cnt=acc_cnt+inst_xput_time)との和に応じて予定される。
他の実施形態では、読出時間が修正され(読出時間が現在の累積カウントよりも大きい場合)、累積カウント値acc_cntは、次の命令のための命令読出時間(rd_cnt)と命令スループット時間の合計(acc_cnt=rd_cnt+inst_xput_time)に従って予定される。読出シフタ161と書込シフタ163は、読出シフタ161によってレジスタファイル14からソースレジスタが読み出されるのと同時に、実行キュー19が機能部20又はロード/ストア部17に命令を発送ができるように、実行キュー19と同期して構成されている。そして、機能部20又はロード/ストア部17からの結果データは、書込シフタ163によって、レジスタファイル14に書換えられる。
実施形態では、ロード命令は、データアレイ24のキャッシュラインからデータを読出して、レジスタファイルの分岐先レジスタに書き込み、一方、ストア命令は、レジスタファイル14のソースレジスタからデータアレイ24のキャッシュラインにデータを書込む。ロード/ストアアドレスがタグアレイ22のどのエントリとも一致しない場合は、キャッシュミスとなり、マイクロプロセッサ10はメモリ30にアクセスしてデータを探すことができる。キャッシュヒットの場合、ロード/ストア命令の実行レイテンシは既知である(例えば、2、3、6、又は任意のクロックサイクル数)。キャッシュミスの場合、ロード/ストア命令の実行レイテンシは15クロックサイクル以上である。ロード命令の実行レイテンシは、キャッシュヒットとメモリ30のレイテンシに依存し、基本的に未知である。
実施形態では、仮想アドレスと物理アドレスが同じであり、その場合、データTLBは必要ない。TEQ19Dは、ロード/ストアアドレスを算出するために、タグ動作をロード/ストア部17のアドレス生成部(AGU)171に発送する。ロード/ストアアドレスは、データキャッシュ18のタグアレイ(TA)22にアクセスするために使用される。キャッシュのヒット/ミスとヒット経路(セットアソシアティブ・マッピング)は、DA24のヒットウェイのキャッシュラインにアクセスというデータ動作を有するDEQ19Eが、アクセスできるように保持される。
ロード命令は、DA24がTA22と同時にアクセスされた場合、DA24内のセットアソシアティブ・マップピングの全ての経路が読み込まれる。本実施形態では、TA22の後にDA24を順次アクセスすることで、DA24の単一の経路を読出すことができるため、DA24は大幅な省電力化を図ることができ、データバンクの競合を低減することができる。
本発明では、ストアデータをDA24に書込む時間(キャッシュヒットの場合)がわかっているので、読出ポート制御は、ストアデータのソースレジスタをレジスタファイル14からジャストインタイムで読出してDA24に書込むように予定され、ストアバッファは不要である。キャッシュミスの場合は、ストアデータがデータキャッシュに書き込める状態になるまで、ストアデータのソースレジスタをレジスタファイル14から読出すことがなく、ソースレジスタのジャストインタイムでの読出しとなる。
例えば、実行ブロック100B及び100Cのそれぞれは、デコード/発行部、スコアボード、読出/書込制御部、レジスタファイル、実行キュー及び機能部を含んでいてもよい。実行ブロック100B、100Cは、第1タイプ発行部、第2タイプ発行部とも呼ばれる。
レジスタファイル14、スコアボード15、読出/書込制御部16、実行キュー19、及び実行ブロック100Aの機能部20は、レジスタファイル14b、スコアボード15b、読出/書込制御部16bに関するスカラ整数の命令用であり、実行ブロック100Bの実行キュー291及び機能部201は、ベクトル命令専用であり、また、レジスタファイル14c、スコアボード15c、読出/書込制御部16c、実行キュー292、及び実行ブロック100Cの機能部202は、FP命令専用である。実行ブロック100B、100Cにおけるこれらの要素の構造や機能性は、実行ブロック100Aの対応する要素から推測できるため、以下では実行ブロック100B、100Cに関する詳細な説明は省略する。
(1)ベクトル命令が多くの要素で動作するのに対し、スカラ整数やFP命令は単一の要素で動作する。
(2)ベクトル命令の多くの要素は、マイクロ演算としてシーケンスで実行するために、より小さな要素のセットにグループ化することができる。
例えば、ベクトル命令は、ハードウェア的には4個の要素の8個のマイクロ演算として実行可能であり、各要素が32ビットのデータである32個の要素で実行するようにプログラムすることができる。4つの要素の実行は、図7Aの機能部200A~200Dによって行われる。
実施形態では、共有機能部20sの一部の機能部は、VEQ291CとFPEQ292Cの両方で共有され、共有機能部20sの一部の機能部は、ベクトル命令の複数の要素を実行するために専用される。一例として、機能部200Dは、ベクトル命令とFP命令の両方の要素を実行するために共有され、機能部200A~200Cは、ベクトル命令の一部の要素を実行するために専用される。共有機能部20sにおける共有実行部の数は、本開示において限定されない。
実施形態では、読出/書込制御部16b及び16cは、レジスタファイル14b及び14cからのオペランドデータが、VEQ291C及びFPEQ292Cの動作に同期して、共有機能部20sに送信されるように、命令の読出時間及び書込時間を予定する。VEQ291C及びFPEQ292Cのいずれか一方のみが一度に有効な命令を共有機能部20sに送ることができるため、マルチプレクサ300の選択は、VEQ291C及びFPEQ292Cのいずれかによって相互に排他的に行われる。
実施形態では、FP・MACC機能部は、他のFP機能部よりも重要であり、そのため、実行ブロック100B及び100Cのそれぞれに専用のFP・MACC機能部が設計され、他のFP機能部は実行ブロック100B及び100Cの両方で共有される。一例では、FP・MACC機能部は、実行ブロック100CのFP命令を実行するための専用であり、ベクトルFP・MACC機能部は、実行ブロック100BのベクトルFP命令を実行するための専用である。
他の実施形態では、実行ブロック100Bは、複数のベクトルFP・MACC機能部を有し、その中の1つのベクトルFP・MACC機能部は実行ブロック100Cと共有され、別のベクトルFP・MACC機能部は実行ブロック100Bの専用とされる。
実施形態では、デコード/発行部13b及び13cは、デコード/発行部13b及び13cのいずれか一方のみが有効な命令を共有実行キュー19sに送ることができるように構成されている。言い換えれば、共有実行キュー19sの複数のエントリのうち、あるエントリには、ベクトル命令とFP命令のいずれか一方のみが一度に書込まれる。他の実施形態ではデコード/発行部13bと13cは、実行ブロック100B及び100Cからの命令が、共有機能部20sで共有されるか否かという命令の順序に基づいて、デコード/発行部13b及び13cのいずれかを待機させる待機機構を有している。別の実施形態では、ベクトル及びFP命令は、命令の優先順位を使用して、デコード/発行部13b又は13cが、一度に1つの命令だけを共有実行キュー19sに発行できるようにする。さらに他の実施形態では、デコード/発行部13b及び13cは、ベクトル命令とFP命令の両方を同時に共有実行キュー19sに発行し、共有実行キュー19sの命令順序で2つのエントリに書込むことができる。レジスタファイル14b及び14cからのレジスタオペランドデータは、読出/書込制御部16b及び16cによって共有実行キュー19sと同期され、それぞれ、共有機能部20sが実行するためのデータをマルチプレクサ330に送信する。つまり、マルチプレクサ330は、共有実行キュー19sが発行するベクトル命令に同期して、レジスタファイル14bからレジスタオペランドデータを選択するか、又は、マルチプレクサ330は、共有実行キュー19sが発行するFP命令に同期して、レジスタファイル14cからレジスタオペランドデータを選択する。
例えば、共有実行キュー19sは、レジスタファイル14b又は14cからオペランドデータを読出すのと同時に、共有機能部20sに命令を発送してもよい。読出/書込制御部16b及び16cは、レジスタファイル14b又は14cからのオペランドデータが、共有実行キュー19sの動作に同期して共有機能部20sに送られるように、命令の読出時間と書込時間を予定してもよい。
~190(Q)を含んでもよく、VEQ291の各エントリは、1つのベクトル命令に関する情報を記録するように構成される。実施形態では、VEQ291の各エントリは、図6に示すEQ19の領域と同じか、又は異なる可能性がある複数の領域を含む。例えば、図8に示すVEQ291の有効領域191、実行制御データ領域193、データ領域195及び読出カウント領域197は、図6に示すEQ19の対応する領域と同様である。
さらに、図8に示す累積型スループットカウンタ199は、図6に示す累積型スループットカウンタ199と同じである。図8のVEQ291と図6の実行キュー19の同一要素に関する詳細な説明は省略する。
実施形態では、マルチプレクサ302_1及び302_2は、ベクトルアクティブビットv_active及びFPアクティブビットf_activeに基づいて選択を実行する。例えば、マルチプレクサ302_1及び302_2は、ベクトルアクティブビットv_activeがセットされ、FPアクティブビットf_activeがクリアされている場合に、命令を発行するためのベクトル累積型スループットカウンタ199bの選択を行う。そして、マルチプレクサ302_1及び302_2は、ベクトルアクティブビットv_activeがクリアされ、FPアクティブビットf_activeがセットされているときに、命令を発行するためのFP累積型スループットカウンタ199cを選択する。
実施形態では、最後に発行される命令タイプにより、アクティブビットがセットされる。例えば、最後に発行される命令がベクトル命令の場合は、アクティブビットv_activeがセットされ、最後に発行される命令がFP命令の場合は、アクティブビットf_activeがセットされる。別の実施形態では、ベクトル命令とFP命令の両方が同時に有効であり、ベクトル命令の方がFP命令よりも優先度が高い場合、ベクトル命令の読出時間は、上述の手順に従い、FP命令の読出時間は、ベクトル命令のスループット時間にベクトル命令の読出時間を加算したものとなる。ベクトル命令とFP命令の両方は、それぞれ実行キュー291Cと292Cに同時に発行することができる。
実施形態では、ベクトル累積型スループットカウンタ199b及びマルチプレクサ302_1及びVEQ291は、図1に示す実行ブロック100Bに含まれる。また、FP累積型スループットカウンタ199c、マルチプレクサ302_2、FPEQ292Cは、図1に示す実行ブロック100Cに含まれる。
ベクトルとFP命令の命令優先度は、共有実行キュー19sに同時に発行されるベクトルとFP命令の命令順序を決定することができる。単一の累積型スループットカウンタの値は、共有実行キュー19sに記録された命令の図6に示す読出カウント領域(rd_cnt)197の読出カウントとして使用される。
さらに、ブロック502で選択されたベクトル命令v_instの読出時間が累積時間(即ち、ベクトル累積型スループットカウンタ199b又はFP累積型スループットカウンタ199cの値)と等しいかそれ以上の場合、ベクトル命令v_instは、ベクトル実行キュー(即ち、図8のVEQ291)に発行され、選択された累積時間は、ベクトル命令の読出時間(即ち、図8の読出カウント領域(rd_cnt)197の値)と、発行されたベクトル命令のスループット時間との合計にセットされる。
ベクトル命令の読出時間は、読出/書込ポートの競合や、ベクトルソース及び/又は分岐先レジスタのデータ依存性により、選択された累積時間よりも大きくなることがある。
さらに、FP命令f_instの読出時間が累積時間(即ち、ブロック510で選択されたベクトル累積型スループットカウンタ199b又はFP累積型スループットカウンタ199cの値)と等しいかそれ以上の場合、FP命令f_instは、FP実行キュー(即ち、図6のEQ19)に発行され、選択されたFP累積時間は、FP命令の読出時間(即ち、図6の読出カウント領域(rd_cnt)197の読出カウントの値)と、発行されたFP命令のスループット時間との合計にセットされる。FP命令の読出時間は、読出/書込ポートの競合や、FPソース及び/又は分岐先レジスタのデータの依存関係により、選択された累積時間よりも大きくなることがある。
第2実行キューは、複数のエントリを含み、第2実行キューの各エントリは、第2タイプ命令を記録し、第2実行キューの各エントリは、第2タイプ命令に対応する第2カウント値を含み、第2カウント値は、第2カウント値が0になるまでデクリメントされる。第2実行キューは、第2タイプ命令に対応する第2カウント値が0になったときに、第2タイプ命令を共有機能部に発送する。
共有機能部は、第1タイプ命令と第2タイプ命令を実行する。レジスタファイルのデータの読出/書込は、第1タイプ命令と第2タイプ命令のいずれかについて、共有機能部の将来の正確な実行時間に同期するように予定されている。先行技術のような動的な競合解消、動的なデータ依存性の解消、動的な読出/書込ポートの解消は必要ない。このような動的な解消は、マイクロプロセッサの設計において最も電力を消費する。
マイクロプロセッサは、第1実行キューからの第1タイプ命令と、第2実行キューからの第2タイプ命令とを、共有機能部に相互に発送するように構成されている。第1タイプ発行部は、第1実行キューに対して第1タイプ命令を発行し、第1タイプ命令の読出時間と書込時間を予定し、第1実行キューの各エントリに記録されている第1カウント値をセットする。第2タイプ発行部は、第2実行キューに対して第2タイプ命令を発行し、第2タイプ命令の読出時間と書込時間を予定し、第2実行キューの各エントリに記録されている第2カウント値をセットする。
この方法は、以下のステップを含んでいる。第1タイプ発行部によって、第1実行キューに第1タイプ命令を発行する。第1タイプ発行部によって、第1タイプ命令の読出時間と書込時間を予定する。第1タイプ発行部が、第1実行キューの各エントリに記録されている第1カウント値をセットし、第1カウント値が0になるまで第1カウント値をデクリメントする。第1実行キューによって第1実行キューのエントリに含まれる第1カウント値が0になったと判断したことに応じて、第1実行キューのエントリに記録されている第1タイプ命令を共有機能部に発行する。第2タイプ発行部が、第2実行キューに対して第2タイプ命令を発行する。第2タイプ発行部によって、第2タイプ命令の読出時間と書込時間を予定する。第2タイプ発行部が、第2実行キューの各エントリに記録されている第2カウント値をセットし、第2カウント値が0になるまで第2カウント値をデクリメントする。第2実行キューによって第2実行キューのエントリに含まれる第2カウント値が0になったと判断したことに応じて、第2実行キューのエントリに記録されている第2タイプ命令を共有機能部に発行する。共有機能部が、第1タイプ命令と第2タイプ命令を実行する。第1実行キューからの第1タイプ命令と、第2実行キューからの第2タイプ命令は、相互に共有機能部に発送される。
第1実行キューは、複数のエントリを含み、第1実行キューの各エントリには、第1タイプ命令が記録され、第1実行キューの各エントリは、第1タイプ命令に対応する第1カウント値を含み、第1カウント値は、第1カウント値が0になるまでデクリメントされる。第1実行キューは、第1タイプ命令に対応する第1カウント値が0になったときに、第1タイプ命令を共有機能部に発送する。
第2実行キューは、複数のエントリを含み、第2実行キューの各エントリには、第2タイプ命令が記録される。第2実行キューの各エントリは、第2タイプ命令に対応する第2カウント値を含み、第2カウント値は、第2カウント値が0になるまでデクリメントされる。第2実行キューは、第2タイプ命令に対応する第2カウント値が0になったときに、第2タイプ命令を共有機能部に発送する。
共有機能部は、第1タイプ命令と第2タイプ命令を実行し、第1実行キューからの第1タイプ命令と第2実行キューからの第2タイプ命令は相互に共有機能部に発送される。第1タイプ発行部は、第1実行キューに第1タイプ命令を発行し、第1タイプ命令の読出時間と書込時間を予定し、第1実行キューの各エントリに記録されている第1カウント値をセットする。第2タイプ発行部は、第2実行キューに対して第2タイプ命令を発行し、第2タイプ命令の読出時間と書込時間を予定し、第2実行キューの各エントリに記録されている第2カウント値をセットする。
100A~100C:実行ブロック
10:マイクロプロセッサ
11:命令キャッシュ
12:分岐予測部
13、13b、13c:デコード/発行部
14、14b、14c:レジスタファイル
R(0)~R(N):レジスタファイルのレジスタ
15、151、152:スコアボード
150(0)~150(N):スコアボードのエントリ
1510(0)~1510(N):スコアボード151のエントリ
1511、1551、1531:スコアボード151の領域
1520(0)~1520(N):スコアボード152のエントリ
1521、1523:スコアボードの領域152
16:読出/書込制御部
161:読出シフタ
1610(1)~1610(M):読出シフタのエントリ
1611、1613:読出シフタ領域
163:書込シフタ
1630(1)~1630(P):書込シフタのエントリ
1631、1633、1635:書込シフタ領域
17:ロード/ストア部
171:アドレス生成部
18:データキャッシュ
19:実行キュー
190(0)~190(Q):実行キューのエントリ
191、192、193、194、195、197:実行キューの領域
22:タグアレイ
24:データアレイ
19A~19E、291A~291C、292A~292C:実行キュー
19s:共有実行キュー
199、199b、199c:累積型スループットカウンタ
20A~20C、201A~201B、202A~202B:機能部
20s:共有機能部
300、330、302_1、302_2:マルチプレクサ
31:読出バス
32:結果バス
30:メモリ
303:マイクロオペカウンタ
305:スループットカウンタ
510、502、510、503a、503b、511a、511c、504:ステップ
Claims (20)
- 複数のエントリからなる第1実行キューであって、前記第1実行キューの各エントリには第1タイプ命令が記録され、前記第1実行キューの各エントリは前記第1タイプ命令に対応する第1カウント値を含み、前記第1カウント値は、前記第1カウント値が0になるまでデクリメントされ、前記第1タイプ命令に対応する前記第1カウント値が0になると、前記第1タイプ命令を共有機能部に発送する前記第1実行キューと、
複数のエントリからなる第2実行キューであって、前記第2実行キューの各エントリには第2タイプ命令が記録され、前記第2実行キューの各エントリは前記第2タイプ命令に対応する第2カウント値を含み、前記第2カウント値は、前記第2カウント値が0になるまでデクリメントされ、前記第2タイプ命令に対応する前記第2カウント値が0になると、前記第2タイプ命令を前記共有機能部に発送する前記第2実行キューと、
前記第1タイプ命令と前記第2タイプ命令を実行し、前記第1実行キューからの前記第1タイプ命令と前記第2実行キューからの前記第2タイプ命令が相互に排他的に前記共有機能部に発送される前記共有機能部と、
前記第1実行キューに対して前記第1タイプ命令を発行し、前記第1タイプ命令の読出時間と書込時間を予定し、前記第1実行キューの各エントリに記録されている前記第1カウント値をセットする第1タイプ発行部と、
前記第2実行キューに対して前記第2タイプ命令を発行し、前記第2タイプ命令の読出時間と書込時間を予定し、前記第2実行キューの各エントリに記録されている前記第2カウント値をセットする第2タイプ発行部と、
を有するマイクロプロセッサ。 - 前記第1実行キューの各エントリの前記第1カウント値は、前記第1タイプ命令の読出時間を表し、
前記第1実行キューの各エントリの前記第1カウント値は、前記第1カウント値が0になるまで、クロックサイクルごとに1ずつデクリメントされ、
前記第1実行キューに記録された前記第1タイプ命令は、前記第1タイプ命令に対応する前記第1カウント値が0になったときに、前記共有機能部に発送される、
ことを特徴とする請求項1に記載のマイクロプロセッサ。 - 前記第1タイプ発行部は、第1タイプデコード/発行部、第1タイプレジスタファイル、第1タイプスコアボード、第1タイプレジスタファイル用の第1タイプ読出/書込制御部、及び前記第1実行キューから構成されており、
前記第2タイプ発行部は、第2タイプデコード/発行部、第2タイプレジスタファイル、第2タイプスコアボード、第2タイプレジスタファイル用の第2タイプ読出/書込制御部、及び前記第2実行キューで構成されている、
ことを特徴とする請求項1に記載のマイクロプロセッサ。 - 前記第1タイプ発行部は、前記共有機能部における前記第1タイプ命令の実行に同期して、前記第1タイプレジスタファイルから前記第1タイプ命令のオペランドデータを読出す前記第1タイプ命令の読出時間を予定し、前記共有機能部から前記第1タイプレジスタファイルに結果データを書込む前記第1タイプ命令の書込時間を予定し、
前記第2タイプ発行部は、前記共有機能部における前記第2タイプ命令の実行に同期して、前記第2タイプレジスタファイルから前記第2タイプ命令のオペランドデータを読出す前記第2タイプ命令の読出時間を予定し、前記共有機能部から前記第2タイプレジスタファイルに結果データを書込む前記第2タイプ命令の書込時間を予定し、
前記第1タイプ発行部は、前記第1タイプ命令のデータの依存関係及びリソースの競合を解消して、前記第1実行キューの各エントリに記録されている前記第1カウント値をセットし、
前記第2タイプ発行部は、前記第2タイプ命令のデータの依存関係及びリソースの競合を解消して、前記第2実行キューの各エントリに記録される前記第2カウント値をセットする、
ことを特徴とする請求項3に記載のマイクロプロセッサ。 - 前記第1実行キュー、前記第2実行キュー、及び前記共有機能部に結合され、前記第1実行キューからの前記第1タイプ命令又は前記第2実行キューからの前記第2タイプ命令を、前記共有機能部に相互に排他的に発送するように構成される第1マルチプレクサをさらに備え、
前記第1マルチプレクサは、前記第1タイプレジスタファイルと前記第2タイプレジスタファイルに、それぞれ第1読出バスと第2読出バスを介してさらに結合され、前記第1マルチプレクサは、前記第1タイプレジスタファイルからのオペランドデータ、又は前記第2タイプレジスタファイルからのオペランドデータを、相互に排他的に前記共有機能部に発送する、
ことを特徴とする請求項3に記載のマイクロプロセッサ。 - 前記第1実行キューは、クロックサイクルごとに1ずつデクリメントされる第1累積型スループットカウンタをさらに備え、前記第1累積型スループットカウンタは、前記第1タイプ発行部がどのクロックサイクルで次の第1タイプ命令を前記第1実行キューに発行することができるかを表し、
前記第2実行キューは、クロックサイクルごとに1ずつデクリメントされる第2累積型スループットカウンタをさらに備え、前記第2累積型スループットカウンタは、前記第2タイプ発行部がどのクロックサイクルで次の第2タイプ命令を前記第2実行キューに発行することができるかを表す、
ことを特徴とする請求項5に記載のマイクロプロセッサ。 - 前記第1タイプ発行部は、発行された前記第1タイプ命令の読出時間として、前記第1実行キューの第1アクティブビットと前記第2実行キューの第2アクティブビットに基づいて、前記第1実行キューに対して、前記第1累積型スループットカウンタ又は前記第2累積型スループットカウンタを用いて、前記第1タイプ命令を発行し、
前記第2タイプ発行部は、発行された前記第2タイプ命令の読出時間として、前記第1実行キューの第1アクティブビットと前記第2実行キューの第2アクティブビットに基づいて、前記第2実行キューに対して、前記第1累積型スループットカウンタ又は前記第2累積型スループットカウンタを用いて、前記第2タイプ命令を発行し、
前記第1アクティブビットは、前記第1タイプデコード/発行部が前記第1タイプ命令を発行したときにセットされ、
前記第1アクティブビットは、前記第2タイプデコード/発行部が前記第2タイプ命令を発行したときにクリアされ、
前記第1アクティブビットは、前記第1累積型スループットカウンタがゼロのときにクリアされ、
前記第2アクティブビットは、前記第2タイプデコード/発行部が前記第2タイプ命令を発行したときにセットされ、
前記第2アクティブビットは、前記第1タイプデコード/発行部が前記第1タイプ命令を発行したときにクリアされ、
前記第2アクティブビットは、前記第2累積型スループットカウンタがゼロのときにクリアされる、
ことを特徴とする請求項6に記載のマイクロプロセッサ。 - 前記第1タイプ発行部と前記第2タイプ発行部とで共有される共有実行キューであって、前記第1タイプ命令と前記第2タイプ命令を受信し、前記共有実行キューのエントリに前記第1タイプ命令と前記第2タイプ命令を記録し、前記共有実行キューのエントリに記録された前記第1タイプ命令と前記第2タイプ命令を順番に発送する前記共有実行キューと、
前記第1タイプレジスタファイルと前記第2タイプレジスタファイルに、それぞれ第1読出バスと第2読出バスを介して結合され、前記第1読出バスを経由した前記第1タイプ命令のオペランドデータ又は前記第2読出バスを経由した前記第2タイプ命令のオペランドデータを受信し、前記第1タイプ命令のオペランドデータと前記第2タイプ命令のオペランドデータを前記共有機能部に相互に排他的に発送する第2マルチプレクサと、を備え、
前記第2マルチプレクサが、前記共有実行キューによる前記第1タイプ命令と前記第2タイプ命令の発送に同期して、前記第1タイプ命令のオペランドデータと前記第2タイプ命令のオペランドデータを発送する、
ことを特徴とする請求項3に記載のマイクロプロセッサ。 - 前記共有実行キューは、前記共有実行キューの有効なエントリの累積型スループットカウントを追跡する累積型スループットカウンタを含み、
前記累積型スループットカウンタは、前記第1タイプ発行部又は前記第2タイプ発行部から前記共有実行キューに対して発行される最後の命令に従って更新され、
前記累積型スループットカウンタは、クロックサイクルごとに1ずつデクリメントされ、前記累積型スループットカウンタは、どのクロックサイクルで前記第1タイプ発行部又は前記第2タイプ発行部が前記共有実行キューに次の命令を発行することができるかを表す、
ことを特徴とする請求項8に記載のマイクロプロセッサ。 - 前記共有機能部と同じ機能を持つ非共有機能部であって、前記第1タイプ命令又は前記第2タイプ命令を実行する専用の前記非共有機能部をさらに備える、
ことを特徴とする請求項1に記載のマイクロプロセッサ。 - 前記共有機能部は、
前記第1タイプ命令及び前記第2タイプ命令を実行するために共有される第1実行部と、
前記第1タイプ命令又は前記第2タイプ命令を実行するための専用の第2実行部と、
を備えることを特徴とする請求項1に記載のマイクロプロセッサ。 - 第1実行キュー、第2実行キュー、共有機能部、第1タイプ発行部及び第2タイプ発行部からなるマイクロプロセッサに適合する方法であって、
前記第1タイプ発行部が、前記第1実行キューに対して第1タイプ命令を発行し、
前記第1タイプ発行部が、前記第1タイプ命令の読出時間と書込時間を予定し、
前記第1タイプ発行部が、前記第1実行キューの各エントリに記録されている第1カウント値をセットし、前記第1カウント値は、前記第1カウント値が0になるまでデクリメントされ、
前記第1実行キューが、前記第1実行キューのエントリに含まれる前記第1カウント値が0になったとの判断に応じて、前記第1実行キューのエントリに記録されている前記第1タイプ命令を前記共有機能部に発送し、
前記第2タイプ発行部が、前記第2実行キューに対して第2タイプ命令を発行し、
前記第2タイプ発行部が、前記第2タイプ命令の読出時間と書込時間を予定し、
前記第2タイプ発行部が、前記第2実行キューの各エントリに記録されている第2カウント値をセットし、前記第2カウント値は、前記第2カウント値が0になるまでデクリメントされ、
前記第2実行キューが、前記第2実行キューのエントリに含まれる第2カウント値が0になったとの判断に応じて、前記第2実行キューのエントリに記録されている前記第2タイプ命令を前記共有機能部に発送し、
前記共有機能部が、前記第1タイプ命令と前記第2タイプ命令を実行し、前記第1実行キューからの前記第1タイプ命令と、前記第2実行キューからの前記第2タイプ命令とは、相互に排他的に前記共有機能部に発送されることを特徴とする、
マイクロプロセッサに適合する方法。 - 前記第1実行キューのそれぞれの前記第1カウント値は、前記第1タイプ命令の読出時間を表し、
前記第1実行キューの各エントリの前記第1カウント値は、前記第1カウント値が0になるまで、クロックサイクルごとに1ずつデクリメントされ、
前記第1実行キューに記録された前記第1タイプ命令は、前記第1タイプ命令に対応する前記第1カウント値が0になったときに、前記共有機能部に発送される、
ことを特徴とする請求項12に記載の方法。 - 前記第1タイプ発行部は、第1タイプデコード/発行部、第1タイプレジスタファイル、第1タイプスコアボード、第1タイプレジスタファイル用の第1タイプ読出/書込制御部、及び前記第1実行キューから構成され、
前記第2タイプ発行部は、第2タイプデコード/発行部、第2タイプレジスタファイル、第2タイプスコアボード、第2タイプレジスタファイル用の第2タイプ読出/書込制御部、及び前記第2実行キューで構成される、
ことを特徴とする請求項12に記載の方法。 - 前記第1タイプ発行部は、前記共有機能部における前記第1タイプ命令の実行に同期して、前記第1タイプレジスタファイルから前記第1タイプ命令のオペランドデータを読出す前記第1タイプ命令の前記読出時間を予定し、前記共有機能部から前記第1タイプレジスタファイルに結果データを書込む前記第1タイプ命令の前記書込時間を予定し、
前記第2タイプ発行部は、前記共有機能部における前記第2タイプ命令の実行に同期して、前記第2タイプレジスタファイルから前記第2タイプ命令のオペランドデータを読出す前記第2タイプ命令の前記読出時間を予定し、前記共有機能部から前記第2タイプレジスタファイルに結果データを書込む前記第2タイプ命令の前記書込時間を予定し、
前記第1タイプ発行部は、前記第1実行キューの各エントリに記録されている前記第1カウント値をセットするために、前記第1タイプ命令のデータの依存関係及びリソースの競合を解消し、
前記第2タイプ発行部は、前記第2実行キューの各エントリに記録されている前記第2カウント値をセットするために、前記第2タイプ命令のデータの依存関係及びリソースの競合を解消する、
ことを特徴とする請求項14に記載の方法。 - 前記第1実行キューは、クロックサイクルごとに1ずつデクリメントされる第1累積型スループットカウンタをさらに備え、前記第1累積型スループットカウンタは、前記第1タイプ発行部がどのクロックサイクルで次の第1タイプ命令を前記第1実行キューに発行することができるかを表し、
前記第2実行キューは、クロックサイクルごとに1ずつデクリメントされる第2累積型スループットカウンタをさらに備え、前記第2累積型スループットカウンタは、前記第2タイプ発行部がどのクロックサイクルで次の第2タイプ命令を前記第2実行キューに発行することができるかを表し、
前記第1タイプ発行部は、発行された前記第1タイプ命令の読出時間として、前記第1実行キューの第1アクティブビットと前記第2実行キューの第2アクティブビットに基づいて、前記第1実行キューに対して、前記第1累積型スループットカウンタ又は前記第2累積型スループットカウンタを用いて、前記第1タイプ命令を発行し、
前記第2タイプ発行部は、発行された前記第2タイプ命令の読出時間として、前記第1実行キューの第1アクティブビットと前記第2実行キューの第2アクティブビットに基づいて、前記第2実行キューに対して、前記第1累積型スループットカウンタ又は前記第2累積型スループットカウンタを用いて、前記第2タイプ命令を発行し、
前記第1アクティブビットは、前記第1タイプデコード/発行部が前記第1タイプ命令を発行したときにセットされ、
前記第1アクティブビットは、前記第2タイプデコード/発行部が前記第2タイプ命令を発行したときにクリアされ、
前記第1アクティブビットは、前記第1累積型スループットカウンタがゼロのときにクリアされ、
前記第2アクティブビットは、前記第2タイプデコード/発行部が前記第2タイプ命令を発行したときにセットされ、
前記第2アクティブビットは、前記第1タイプデコード/発行部が前記第1タイプ命令を発行したときにクリアされ、
前記第2アクティブビットは、前記第2累積型スループットカウンタがゼロのときにクリアされる、
ことを特徴とする請求項14に記載の方法。 - 前記マイクロプロセッサは、
前記第1実行キュー、前記第2実行キュー、及び前記共有機能部に結合され、前記第1実行キューからの前記第1タイプ命令又は前記第2実行キューからの前記第2タイプ命令を、前記共有機能部に相互に排他的に発送するように構成される第1マルチプレクサをさらに備え、
前記第1マルチプレクサは、前記第1タイプレジスタファイルと前記第2タイプレジスタファイルに、それぞれ第1読出バスと第2読出バスを介してさらに結合され、
前記第1マルチプレクサは、前記第1タイプレジスタファイルからのオペランドデータ、又は前記第2タイプレジスタファイルからのオペランドデータを、相互に排他的に前記共有機能部に発送する、
ことを特徴とする請求項14に記載の方法。 - 前記マイクロプロセッサは、
前記第1タイプ発行部と前記第2タイプ発行部で共有される共有実行キューであって、第2マルチプレクサから前記第1タイプ命令と前記第2タイプ命令を受信し、前記共有実行キューのエントリに前記第1タイプ命令と前記第2タイプ命令を記録し、前記共有実行キューのエントリに記録された前記第1タイプ命令と前記第2タイプ命令を順番に発送する前記共有実行キューと、
前記第1タイプレジスタファイルと前記第2タイプレジスタファイルに、それぞれ第1読出バスと第2読出バスを介して結合され、前記第1読出バスを経由した前記第1タイプ命令のオペランドデータ又は前記第2読出バスを経由した前記第2タイプ命令のオペランドデータを受信し、前記第1タイプ命令のオペランドデータと前記第2タイプ命令のオペランドデータを前記共有機能部に相互に排他的に発送する前記第2マルチプレクサを備え、
前記第2マルチプレクサが、前記共有実行キューによる第1タイプ命令と前記第2タイプ命令の発送に同期して、前記第1タイプ命令のオペランドデータと前記第2タイプ命令のオペランドデータを発送する、
ことを特徴とする請求項14に記載の方法。 - 前記共有実行キューは、前記共有実行キューの有効なエントリの累積型スループットカウントを追跡する累積型スループットカウンタを含み、
前記累積型スループットカウンタは、前記第1タイプ発行部又は前記第2タイプ発行部から前記共有実行キューに対して発行される最後の命令に従って更新され、
前記累積型スループットカウンタは、クロックサイクルごとに1ずつデクリメントされ、
前記累積型スループットカウンタは、どのクロックサイクルで前記第1タイプ発行部又は前記第2タイプ発行部が前記共有実行キューに次の命令を発行することができるかを表す、
ことを特徴とする請求項18に記載の方法。 - 第1タイプ命令と第2タイプ命令をストアするように構成されたメモリ、及びマイクロプロセッサを備えるデータ処理システムであって、
前記マイクロプロセッサは、
複数のエントリからなる第1実行キューであって、前記第1実行キューの各エントリには第1タイプ命令が記録され、前記第1実行キューの各エントリは、前記第1タイプ命令に対応する第1カウント値を含み、前記第1カウント値は、前記第1カウント値が0になるまでデクリメントされ、前記第1タイプ命令に対応する前記第1カウント値が0になると、前記第1タイプ命令を共有機能部に発送する前記第1実行キューと、
複数のエントリからなる第2実行キューであって、前記第2実行キューの各エントリには第2タイプ命令が記録され、前記第2実行キューの各エントリは、前記第2タイプ命令に対応する第2カウント値を含み、前記第2カウント値は、前記第2カウント値が0になるまでデクリメントされ、前記第2タイプ命令に対応する前記第2カウント値が0になると、前記第2タイプ命令を前記共有機能部に発送する前記第2実行キューと、
前記第1タイプ命令と前記第2タイプ命令を実行し、前記第1実行キューからの前記第1タイプ命令と前記第2実行キューからの前記第2タイプ命令が相互に排他的に前記共有機能部に発送される前記共有機能部と、
前記第1実行キューに対して前記第1タイプ命令を発行し、前記第1タイプ命令の読出時間と書込時間を予定し、前記第1実行キューの各エントリに記録されている前記第1カウント値をセットする第1タイプ発行部と、
前記第2実行キューに対して前記第2タイプ命令を発行し、前記第2タイプ命令の読出時間と書込時間を予定し、前記第2実行キューの各エントリに記録されている前記第2カウント値をセットする第2タイプ発行部と、
を備えることを特徴とするデータ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/335,089 US11467841B1 (en) | 2021-06-01 | 2021-06-01 | Microprocessor with shared functional unit for executing multi-type instructions |
US17/335,089 | 2021-06-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022184701A JP2022184701A (ja) | 2022-12-13 |
JP7348969B2 true JP7348969B2 (ja) | 2023-09-21 |
Family
ID=83547302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022004222A Active JP7348969B2 (ja) | 2021-06-01 | 2022-01-14 | 共有機能部を有するマイクロプロセッサ |
Country Status (4)
Country | Link |
---|---|
US (1) | US11467841B1 (ja) |
JP (1) | JP7348969B2 (ja) |
CN (1) | CN115437694A (ja) |
TW (1) | TWI796755B (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210098B2 (en) * | 2013-07-15 | 2021-12-28 | Texas Instruments Incorporated | Variable latency instructions |
US11360934B1 (en) * | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US12112172B2 (en) | 2022-06-01 | 2024-10-08 | Simplex Micro, Inc. | Vector coprocessor with time counter for statically dispatching instructions |
WO2024118838A1 (en) * | 2022-12-01 | 2024-06-06 | Simplex Micro, Inc. | Method and apparatus for a scalable microprocessor with time counter |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021174506A (ja) | 2020-04-20 | 2021-11-01 | 晶心科技股▲ふん▼有限公司Andes Technology Corporation | 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878266A (en) * | 1995-09-26 | 1999-03-02 | Advanced Micro Devices, Inc. | Reservation station for a floating point processing unit |
US6148395A (en) * | 1996-05-17 | 2000-11-14 | Texas Instruments Incorporated | Shared floating-point unit in a single chip multiprocessor |
US5996064A (en) * | 1997-12-30 | 1999-11-30 | Intel Corporation | Method and apparatus for guaranteeing minimum variable schedule distance by using post-ready latency |
US6725354B1 (en) * | 2000-06-15 | 2004-04-20 | International Business Machines Corporation | Shared execution unit in a dual core processor |
US6826704B1 (en) | 2001-03-08 | 2004-11-30 | Advanced Micro Devices, Inc. | Microprocessor employing a performance throttling mechanism for power management |
GB2447907B (en) * | 2007-03-26 | 2009-02-18 | Imagination Tech Ltd | Processing long-latency instructions in a pipelined processor |
JP4978332B2 (ja) * | 2007-06-22 | 2012-07-18 | 富士通株式会社 | 演算処置装置および電力制御方法 |
US9104399B2 (en) * | 2009-12-23 | 2015-08-11 | International Business Machines Corporation | Dual issuing of complex instruction set instructions |
JP5949327B2 (ja) * | 2012-08-24 | 2016-07-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
-
2021
- 2021-06-01 US US17/335,089 patent/US11467841B1/en active Active
- 2021-08-12 TW TW110129840A patent/TWI796755B/zh active
- 2021-11-23 CN CN202111395887.5A patent/CN115437694A/zh active Pending
-
2022
- 2022-01-14 JP JP2022004222A patent/JP7348969B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021174506A (ja) | 2020-04-20 | 2021-11-01 | 晶心科技股▲ふん▼有限公司Andes Technology Corporation | 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
TW202248846A (zh) | 2022-12-16 |
CN115437694A (zh) | 2022-12-06 |
US11467841B1 (en) | 2022-10-11 |
JP2022184701A (ja) | 2022-12-13 |
TWI796755B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7348969B2 (ja) | 共有機能部を有するマイクロプロセッサ | |
CN106990941B (zh) | 使用寄存器重命名处理移动指令 | |
JP3977016B2 (ja) | 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ | |
US5630149A (en) | Pipelined processor with register renaming hardware to accommodate multiple size registers | |
US5625789A (en) | Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle | |
US6141747A (en) | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word | |
US6138230A (en) | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline | |
US20110153986A1 (en) | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors | |
US7849293B2 (en) | Method and structure for low latency load-tagged pointer instruction for computer microarchitechture | |
JP2839075B2 (ja) | 処理システムを動作させる方法及び処理システム | |
US5740398A (en) | Program order sequencing of data in a microprocessor with write buffer | |
US6073231A (en) | Pipelined processor with microcontrol of register translation hardware | |
US6772317B2 (en) | Method and apparatus for optimizing load memory accesses | |
US20220382546A1 (en) | Apparatus and method for implementing vector mask in vector processing unit | |
US6332191B1 (en) | System for canceling speculatively fetched instructions following a branch mis-prediction in a microprocessor | |
US6266763B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
US20110154116A1 (en) | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors | |
US6212621B1 (en) | Method and system using tagged instructions to allow out-of-program-order instruction decoding | |
JPH10154073A (ja) | データ依存性を管理する装置及び方法 | |
JP3866920B2 (ja) | 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ | |
US11507379B2 (en) | Managing load and store instructions for memory barrier handling | |
CN116414458A (zh) | 指令处理方法以及处理器 | |
US11687347B2 (en) | Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard | |
US20240311156A1 (en) | Microprocessor with apparatus and method for replaying load instructions | |
US20230315474A1 (en) | Microprocessor with apparatus and method for replaying instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230307 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230512 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230822 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230908 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7348969 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |