(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-12
(45)【発行日】2023-09-21
(54)【発明の名称】共有機能部を有するマイクロプロセッサ
(51)【国際特許分類】
G06F 9/30 20180101AFI20230913BHJP
G06F 9/38 20180101ALI20230913BHJP
【FI】
G06F9/30 330A
G06F9/38 310F
G06F9/38 370B
【外国語出願】
(21)【出願番号】P 2022004222
(22)【出願日】2022-01-14
【審査請求日】2022-01-14
(32)【優先日】2021-06-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】514143840
【氏名又は名称】晶心科技股▲ふん▼有限公司
【氏名又は名称原語表記】ANDES TECHNOLOGY CORPORATION
(74)【代理人】
【識別番号】100081961
【氏名又は名称】木内 光春
(74)【代理人】
【識別番号】100112564
【氏名又は名称】大熊 考一
(74)【代理人】
【識別番号】100163500
【氏名又は名称】片桐 貞典
(74)【代理人】
【識別番号】230115598
【氏名又は名称】木内 加奈子
(72)【発明者】
【氏名】陳 丁明
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2014-44509(JP,A)
【文献】特開2009-3807(JP,A)
【文献】特開2021-174506(JP,A)
【文献】特表平11-511579(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
複数のエントリからなる第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タイプ発行部と、
を有するマイクロプロセッサ。
【請求項2】
前記第1実行キューの各エントリの前記第1カウント値は、前記第1タイプ命令の読出時間を表し、
前記第1実行キューの各エントリの前記第1カウント値は、前記第1カウント値が0になるまで、クロックサイクルごとに1ずつデクリメントされ、
前記第1実行キューに記録された前記第1タイプ命令は、前記第1タイプ命令に対応する前記第1カウント値が0になったときに、前記共有機能部に発送される、
ことを特徴とする請求項1に記載のマイクロプロセッサ。
【請求項3】
前記第1タイプ発行部は、第1タイプデコード/発行部、第1タイプレジスタファイル、第1タイプスコアボード、第1タイプレジスタファイル用の第1タイプ読出/書込制御部、及び前記第1実行キューから構成されており、
前記第2タイプ発行部は、第2タイプデコード/発行部、第2タイプレジスタファイル、第2タイプスコアボード、第2タイプレジスタファイル用の第2タイプ読出/書込制御部、及び前記第2実行キューで構成されている、
ことを特徴とする請求項1に記載のマイクロプロセッサ。
【請求項4】
前記第1タイプ発行部は、前記共有機能部における前記第1タイプ命令の実行に同期して、前記第1タイプレジスタファイルから前記第1タイプ命令のオペランドデータを読出す前記第1タイプ命令の読出時間を予定し、前記共有機能部から前記第1タイプレジスタ
ファイルに結果データを書込む前記第1タイプ命令の書込時間を予定し、
前記第2タイプ発行部は、前記共有機能部における前記第2タイプ命令の実行に同期して、前記第2タイプレジスタファイルから前記第2タイプ命令のオペランドデータを読出す前記第2タイプ命令の読出時間を予定し、前記共有機能部から前記第2タイプレジスタ
ファイルに結果データを書込む前記第2タイプ命令の書込時間を予定し、
前記第1タイプ発行部は、前記第1タイプ命令のデータの依存関係及びリソースの競合を解消して、前記第1実行キューの各エントリに記録されている前記第1カウント値をセットし、
前記第2タイプ発行部は、前記第2タイプ命令のデータの依存関係及びリソースの競合を解消して、前記第2実行キューの各エントリに記録される前記第2カウント値をセットする、
ことを特徴とする請求項3に記載のマイクロプロセッサ。
【請求項5】
前記第1実行キュー、前記第2実行キュー、及び前記共有機能部に結合され、前記第1実行キューからの前記第1タイプ命令又は前記第2実行キューからの前記第2タイプ命令を、前記共有機能部に相互に排他的に発送するように構成される第1マルチプレクサをさらに備え、
前記第1マルチプレクサは、前記第1タイプレジスタファイルと前記第2タイプレジスタファイルに、それぞれ第1読出バスと第2読出バスを介してさらに結合され、前記第1マルチプレクサは、前記第1タイプレジスタファイルからのオペランドデータ、又は前記第2タイプレジスタファイルからのオペランドデータを、相互に排他的に前記共有機能部に発送する、
ことを特徴とする請求項3に記載のマイクロプロセッサ。
【請求項6】
前記第1実行キューは、クロックサイクルごとに1ずつデクリメントされる第1累積型スループットカウンタをさらに備え、前記第1累積型スループットカウンタは、前記第1タイプ発行部がどのクロックサイクルで次の第1タイプ命令を前記第1実行キューに発行することができるかを表し、
前記第2実行キューは、クロックサイクルごとに1ずつデクリメントされる第2累積型スループットカウンタをさらに備え、前記第2累積型スループットカウンタは、前記第2タイプ発行部がどのクロックサイクルで次の第2タイプ命令を前記第2実行キューに発行することができるかを表す、
ことを特徴とする請求項5に記載のマイクロプロセッサ。
【請求項7】
前記第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に記載のマイクロプロセッサ。
【請求項8】
前記第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に記載のマイクロプロセッサ。
【請求項9】
前記共有実行キューは、前記共有実行キューの有効なエントリの累積型スループットカウントを追跡する累積型スループットカウンタを含み、
前記累積型スループットカウンタは、前記第1タイプ発行部又は前記第2タイプ発行部から前記共有実行キューに対して発行される最後の命令に従って更新され、
前記累積型スループットカウンタは、クロックサイクルごとに1ずつデクリメントされ、前記累積型スループットカウンタは、どのクロックサイクルで前記第1タイプ発行部又は前記第2タイプ発行部が前記共有実行キューに次の命令を発行することができるかを表す、
ことを特徴とする請求項8に記載のマイクロプロセッサ。
【請求項10】
前記共有機能部と同じ機能を持つ非共有機能部であって、前記第1タイプ命令又は前記第2タイプ命令を実行する専用の前記非共有機能部をさらに備える、
ことを特徴とする請求項1に記載のマイクロプロセッサ。
【請求項11】
前記共有機能部は、
前記第1タイプ命令及び前記第2タイプ命令を実行するために共有される第1実行部と、
前記第1タイプ命令又は前記第2タイプ命令を実行するための専用の第2実行部と、
を備えることを特徴とする請求項1に記載のマイクロプロセッサ。
【請求項12】
第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タイプ命令とは、相互に排他的に前記共有機能部に発送され
ることを特徴とする、
マイクロプロセッサに適合する方法。
【請求項13】
前記第1実行キューのそれぞれの前記第1カウント値は、前記第1タイプ命令の読出時間を表し、
前記第1実行キューの各エントリの前記第1カウント値は、前記第1カウント値が0になるまで、クロックサイクルごとに1ずつデクリメントされ、
前記第1実行キューに記録された前記第1タイプ命令は、前記第1タイプ命令に対応する前記第1カウント値が0になったときに、前記共有機能部に発送される、
ことを特徴とする請求項12に記載の方法。
【請求項14】
前記第1タイプ発行部は、第1タイプデコード/発行部、第1タイプレジスタファイル、第1タイプスコアボード、第1タイプレジスタファイル用の第1タイプ読出/書込制御部、及び前記第1実行キューから構成され、
前記第2タイプ発行部は、第2タイプデコード/発行部、第2タイプレジスタファイル、第2タイプスコアボード、第2タイプレジスタファイル用の第2タイプ読出/書込制御部、及び前記第2実行キューで構成される、
ことを特徴とする請求項12に記載の方法。
【請求項15】
前記第1タイプ発行部は、前記共有機能部における前記第1タイプ命令の実行に同期して、前記第1タイプレジスタファイルから前記第1タイプ命令のオペランドデータを読出す前記第1タイプ命令の前記読出時間を予定し、前記共有機能部から前記第1タイプレジスタ
ファイルに結果データを書込む前記第1タイプ命令の前記書込時間を予定し、
前記第2タイプ発行部は、前記共有機能部における前記第2タイプ命令の実行に同期して、前記第2タイプレジスタファイルから前記第2タイプ命令のオペランドデータを読出す前記第2タイプ命令の前記読出時間を予定し、前記共有機能部から前記第2タイプレジスタ
ファイルに結果データを書込む前記第2タイプ命令の前記書込時間を予定し、
前記第1タイプ発行部は、前記第1実行キューの各エントリに記録されている前記第1カウント値をセットするために、前記第1タイプ命令のデータの依存関係及びリソースの競合を解消し、
前記第2タイプ発行部は、前記第2実行キューの各エントリに記録されている前記第2カウント値をセットするために、前記第2タイプ命令のデータの依存関係及びリソースの競合を解消する、
ことを特徴とする請求項14に記載の方法。
【請求項16】
前記第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に記載の方法。
【請求項17】
前記マイクロプロセッサは、
前記第1実行キュー、前記第2実行キュー、及び前記共有機能部に結合され、前記第1実行キューからの前記第1タイプ命令又は前記第2実行キューからの前記第2タイプ命令を、前記共有機能部に相互に排他的に発送するように構成される第1マルチプレクサをさらに備え、
前記第1マルチプレクサは、前記第1タイプレジスタファイルと前記第2タイプレジスタファイルに、それぞれ第1読出バスと第2読出バスを介してさらに結合され、
前記第1マルチプレクサは、前記第1タイプレジスタファイルからのオペランドデータ、又は前記第2タイプレジスタファイルからのオペランドデータを、相互に排他的に前記共有機能部に発送する、
ことを特徴とする請求項14に記載の方法。
【請求項18】
前記マイクロプロセッサは、
前記第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に記載の方法。
【請求項19】
前記共有実行キューは、前記共有実行キューの有効なエントリの累積型スループットカウントを追跡する累積型スループットカウンタを含み、
前記累積型スループットカウンタは、前記第1タイプ発行部又は前記第2タイプ発行部から前記共有実行キューに対して発行される最後の命令に従って更新され、
前記累積型スループットカウンタは、クロックサイクルごとに1ずつデクリメントされ、
前記累積型スループットカウンタは、どのクロックサイクルで前記第1タイプ発行部又は前記第2タイプ発行部が前記共有実行キューに次の命令を発行することができるかを表す、
ことを特徴とする請求項18に記載の方法。
【請求項20】
第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タイプ発行部と、
を備えることを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、マイクロプロセッサに関し、より具体的には、マルチタイプの命令を実行するための共有機能部を有するマイクロプロセッサに関する。
【背景技術】
【0002】
スーパースカラタイプのマイクロプロセッサは、1クロックサイクルごとに複数の命令を実行し、命令を順不同で実行することにより高性能を実現している。命令は、分岐予測ミス、割り込み、正確な例外等の制御上の危険性を回避するために、レジスタファイルに順番に書換える必要がある。バッファの再配置、レジスタ名の変更等の一時的なストレージは、結果データがレジスタファイルに順番に退避できるようになるまで使用される。さらに、機能部が命令を実行できるようになるまで、ソースオペランドデータを実行キューに入れておくためのストレージが必要になる。これらのストレージは、アーキテクチャレジスタファイルの数倍の大きさになることが多く、これらのストレージの読出/書込にはより多くの電力が消費される。
【0003】
マイクロプロセッサにスカラ浮動小数点演算装置(FPU)やベクトル処理部(VPU)等の独立したマルチタイプ処理部が含まれている場合、性能、電力及び面積(PPA)等の設計指標を達成するのは困難である。VPUは、整数と浮動小数点(FP)の両方の実行部で構成されている。FP実行部は、整数実行部に比べてサイズがはるかに大きい。異なるタイプの命令間で実行部を共有することは、特に、順不同型マイクロプロセッサでは、異なるレジスタファイルへの対応、データの依存関係、結果の転送を扱う上で、非常に複雑になる可能性がある。マイクロプロセッサは、命令タイプを直列化することで実行部を共有することができる。即ち、スカラFP命令が完了して実行部をクリアしてからでないと、ベクトル命令を実行部に送ることはできない。しかし、マイクロプロセッサの実行パイプラインに、両方のタイプの処理部の命令を含めることが許可される場合、マイクロプロセッサの性能は制限される。
【発明の概要】
【発明が解決しようとする課題】
【0004】
マイクロプロセッサは、異なるタイプの命令を処理するための独立したマルチタイプ処理部を含むことができる。しかし、独立したマルチタイプ処理部を持つマイクロプロセッサは、消費電力が大きく、サイズも大きくなる。マイクロプロセッサは、処理部を共有してもよいが、両方のマルチタイプ処理部からの命令をマイクロプロセッサの実行パイプラインに含めることが許可されている場合、マイクロプロセッサの性能が制限される。
【課題を解決するための手段】
【0005】
本開示では、共有機能部を備えたマイクロプロセッサの性能を向上させることができるマイクロプロセッサ、方法、及びデータ処理システムを提案する。
【0006】
実施形態では、マイクロプロセッサは、共有機能部、第1実行キュー、第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タイプ命令に対応する前記第2カウント値が0になるまでデクリメントされる。第2実行キューは、第2カウンタが0になったときに、第2タイプ命令を共有機能部に発送する。
共有機能部は、第1タイプ命令と第2タイプ命令を実行する。第1実行キューからの第1タイプ命令と、第2実行キューからの第2タイプ命令は、相互に排他的に共有機能部に発送される。
共有機能部による実行のために、異なるタイプ命令が動的に選択される先行技術との重要な相違点は、本開示では、命令は、予定されたカウンタ(第1カウント値と第2カウント値)を用いて、将来の正確な時間に共有機能部によって実行されるように予定されていることである。レジスタファイルのデータの読出/書込は、第1タイプ命令と第2タイプ命令のいずれについても、将来の正確な実行時間に同期するように予定されている。先行技術のような、動的な競合解消、動的なデータ依存性解消、動的な読出/書込ポートの解消は必要ない。動的な解消は、マイクロプロセッサの設計において最も電力を消費する。
【0007】
実施形態の方法は、第1実行キュー、第2実行キュー、及び共有機能部を含むマイクロプロセッサに適用される。
この方法は、前記第1実行キューのエントリに含まれる第1カウンタが0になったと判断することに対応して、前記第1実行キューのエントリに記録された第1タイプ命令を前記共有機能部に発送し、前記第2実行キューのエントリに含まれる第2カウンタが0になったと判断することに応答して、前記第2実行キューのエントリに記録されている第2タイプ命令を前記共有機能部に発送するものであり、前記共有機能部によって、前記第1タイプ命令と前記第2タイプ命令が実行される。
【0008】
実施形態では、データ処理システムは、メモリとマイクロプロセッサを含み、前記メモリは、第1タイプ命令と第2タイプ命令をストアするように構成されている。前記マイクロプロセッサは、共有機能部、第1実行キュー、第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つの実行キューは構成が容易である。
【発明の効果】
【0009】
本開示では、共有機能部を備えたマイクロプロセッサが提示され、共有機能部が実行する命令のタイプが動的に選択されている場合には、その命令は、予定されたカウンタを用いて、将来の正確な時間に共有機能部によって実行されるように予定されている。
レジスタファイルのデータの読出/書込は、第1タイプ命令と第2タイプ命令のいずれについても、共有機能部の将来の正確な実行時間に同期するように予定されている。先行技術のような動的な競合解消、動的なデータ依存性の解消、動的な読出/書込ポートの解消は必要ない。動的な解消は、マイクロプロセッサの設計において最も電力を消費する。
【図面の簡単な説明】
【0010】
本開示の内容は、添付の図と合わせて読むと、以下の詳細な説明から最もよく理解できる。業界の標準的な慣行に従い、様々な特徴は縮尺通りに描かれていない。実際には、様々な特徴の寸法は、開示内容を明確にするために任意に増加又は減少させることができる。
【0011】
【
図1】
図1は、実施形態のデータ処理システムを示すブロック図である。
【0012】
【
図2】
図2は、実施形態におけるスコアボードとレジスタファイルを説明する図である。
【0013】
【
図3A】
図3Aは、実施形態におけるスコアボードエントリの構造を示す図である。
【
図3B】
図3Bは、実施形態におけるスコアボードエントリの他の構造を示す図である。
【0014】
【
図4】
図4は、実施形態におけるレジスタファイルの読出ポートに関連する読出シフタを示す図である。
【0015】
【
図5】
図5は、実施形態におけるレジスタファイルの書込ポートに関連する書込シフタを示す図である。
【0016】
【
図6】
図6は、実施形態における実行キューを示す図である。
【0017】
【
図7A】
図7Aは、実施形態におけるマイクロプロセッサの構造を示す図である。
【
図7B】
図7Bは、実施形態におけるマイクロプロセッサの他の構造を示す図である。
【0018】
【
図8】
図8は、実施形態における実行キューを示す図である。
【0019】
【
図9】
図9は、実施形態における、命令を発行するプロセスを示すフローチャートである。
【0020】
【
図10】
図10は、実施形態におけるマイクロプロセッサに適応した方法を示すフローチャートである。
【発明を実施するための形態】
【0021】
以下、本開示の様々な特徴を実施するための多くの異なる実施形態又は実施例を提示する。以下の説明において、構成要素及び配置の実施例は、本開示を単純化している。もちろん、これらは単なる実施例であり、本開示の内容を限定するものではない。
例えば、以下の説明において、第2の特徴の上方又は上部に第1の特徴を形成することは、第1及び第2の特徴が直接接触して形成される実施形態を含んでもよく、また、第1及び第2の特徴が直接接触しないように、第1及び第2の特徴の間に追加の特徴が形成される実施形態を含んでもよい。さらに、本開示では、様々な例において参照用の数字及び/又は文字を繰り返すことがある。この繰り返しは、単純化及び明確化のためのものであり、それ自体が開示された様々な実施形態及び/又は構成の間の関係を指示すものではない。
【0022】
本開示では、パイプラインを待機させるのではなく、予定された将来の時間に命令を実行するマイクロプロセッサについて説明する。このようなプロセッサは、フューチャー・スケジューリング・実行型(FSE)マイクロプロセッサとも呼ばれる。従来、命令で指定されたレジスタや機能部の準備ができていない場合(例えば、データの依存関係、レジスタの読出/書込ポートの可用性、機能部の可用性等のリソース競合)、デコード/発行部はレジスタや機能部の準備が整うまで実行パイプラインをストールしたり、命令を保留したりしていた。
FSEマイクロプロセッサでは、デコード/発行部は、データ依存性の解消、レジスタの読出/書込ポートの可用性、及び将来の時間における機能部の可用性に基づいて、これらの命令の発行を継続すると共に将来の時間に命令を実行するように予定する。
【0023】
図1には、実施形態におけるマイクロプロセッサ10及びメモリ30を含むデータ処理システム1の概略図が示されている。マイクロプロセッサ10は、メモリ30にストアされた命令を実行することによって、様々なデータ処理機能を実行する。
メモリ30は、レベル2(L2)及びレベル3(L3)のキャッシュと、データ処理システム1のメインメモリとを含んでもよく、この場合、L2及びL3のキャッシュは、メインメモリよりも速いアクセス時間を有する。メモリは、ランダムアクセスメモリ(RAM)、動的ランダムアクセスメモリ(DRAM)、静的ランダムアクセスメモリ(SRAM)、読出専用メモリ(ROM)、プログラム可能な読出専用メモリ(PROM)、電気的にプログラム可能な読出専用メモリ(EPROM)、電気的に消去可能なプログラム可能な読み取専用メモリ(EEPROM)、及びフラッシュメモリのうち、少なくとも1つを含むことができる。
【0024】
マイクロプロセッサ10は、1つのマイクロプロセッサ内に命令レベルの並列処理機能を実装したスーパースカラ型マイクロプロセッサであってもよい。スーパースカラ型マイクロプロセッサは、クロックサイクルごとに複数の命令を実行することで、高性能を実現する。複数の命令は異なる機能部に発送され、並列に実行される。
スーパースカラ型マイクロプロセッサは、第1命令に依存しない第2命令を第1命令の前に実行する順不同(OOO)型を採用することができる。従来の順不同型のマイクロプロセッサの構成では、命令を順不同で実行できるが、制御の危険性、例えば、分岐予測ミス、割り込み、正確な例外等のために、命令をマイクロプロセッサのレジスタファイルに順番に退避させる必要がある。
命令が実行パイプラインから順番に退避されるまで、結果データのために、バッファの再配置やレジスタ名変更等の一時的な記憶部が使用される。本発明では、マイクロプロセッサ10は、命令がデータ依存性を持たず、制御ハザードを持たない限り、結果データをレジスタファイルに順不同で書換えることにより、命令を順不同で実行し、退避させることができる。本実施形態では、データ依存性や制御上の危険性を有する命令を、予定された将来の時間に発行するようにマイクロプロセッサ10が構成されているため、FSEマイクロプロセッサ10には一時レジスタは使用されない。しかし、本開示は、これに限定されない。他の実施形態では、一時的なレジスタも使用することができる。
【0025】
図1に示すように、マイクロプロセッサ10は、命令キャッシュ11、分岐予測部(BPU)12、デコード/発行部13、レジスタファイル14、スコアボード15、読出/書込制御部16、ロード/ストア部17、データキャッシュ18、タグ実行キューTEQ19D及びデータ実行キューDEQ19E等実行キューが特別な目的で使用される可能性がある複数の実行キュー(EQ)19A~19E、及び複数の機能部(FUNT)20A~20Cを含んでもよい。また、マイクロプロセッサ10は、読出バス31と結果バス32とを含んでもよい。読出バス31は、レジスタファイル14内のレジスタからロード/ストア部17と機能部20A~20Cにオペランドデータを送信するため、ロード/ストア部17と、機能部20A~20Cと、レジスタファイル14に結合されている。これは、レジスタファイル14から動作データ(ストア命令の場合はストアデータ)を読出す動作とも呼ばれる。結果バス32は、データキャッシュ18や機能部20A~20Cからレジスタファイル14のレジスタにデータを送信するために、データキャッシュ18や機能部20A~20C、及びレジスタファイル14に接続されている。これは、レジスタファイル14に対する結果データ(ロード命令の場合はロードデータ)の書換え動作とも呼ばれる。本明細書では、数字の後にアルファベットを付けて記載した部分は、アルファベットを省略して番号のみで表示する。例えば、実行キュー19A~19Eは、指定されない限り実行キュー19と総称される。デコード/発行部13、スコアボード15、読出/書込制御部16、レジスタファイル14、複数の実行キュー19A~19E、及び複数の機能部20A~20Cは、同一のレジスタファイルを介してデータアクセスを行う1タイプの命令実行ブロック100Aに統合されている。実施形態ではマイクロプロセッサ10は、本明細書で実行ブロック100と総称される実行ブロック100B及び100Cに示されるように、ベクトル又は浮動小数点命令等の他のタイプの命令を実行することもできる。
実施形態では、命令は、異なるタイプの命令を含む。例えば、命令は、ベクトル命令、スカラFP命令、単一命令/複数データ(SIMD)命令、デジタル信号処理(DSP)命令、又は任意の他のタイプの命令のうちの少なくとも1つを含んでもよい。ベクトル命令、スカラFP命令、SIMD命令、DSP命令の定義は、関連する技術分野でよく知られているため、以下ではこれらの命令のタイプについての詳細な説明は省略する。本開示の実施形態では、
図1に図示されているものよりも多数、少数、又は異なるコンポーネントを使用することができる。
【0026】
実施形態では、命令キャッシュ11は、メモリ30及びデコード/発行部13に結合(図示せず)され、メモリ30から読出された命令をストアし、デコード/発行部13に命令を発送するように構成されている。命令キャッシュ11は、メモリ30からの連続した命令バイトの多数のキャッシュラインを含む。キャッシュラインは、ダイレクト・マップピング、フルアソシアティブ・マップピング又はセットアソシアティブ・マップピング等で構成されている。なお、ダイレクト・マップピング、フルアソシアティブ・マップピング、セットアソシアティブ・マップピングは、関連技術において周知であるため、以下では、上記マップピングに関する詳細な説明を省略する。
【0027】
命令キャッシュ11は、マイクロプロセッサ10で使用される使用頻度の高い命令のアドレスとデータの一部をそれぞれストアするための、タグアレイ(図示せず)とデータアレイ(図示せず)を含んでいてもよい。タグアレイの各タグは、データアレイのキャッシュラインに対応している。マイクロプロセッサ10が命令を実行する必要があるとき、マイクロプロセッサ10は、まず、命令のアドレスをタグアレイにストアされているタグと比較することで、命令キャッシュ11に命令が存在するかどうかを確認する。命令のアドレスがタグアレイのタグの1つと一致する場合(即ち、キャッシュヒット)、対応するキャッシュラインがデータアレイから読出される。命令のアドレスがタグアレイのどのエントリとも一致しない場合、それはキャッシュミスであり、マイクロプロセッサ10は、命令を見つけるためにメモリ30にアクセスしてもよい。実施形態ではマイクロプロセッサ10は、命令をデコード/発行部13に送る前に、命令キャッシュ11又はメモリ30からの命令をストアするために、命令キャッシュ11及びデコード/発行部13に結合される命令キュー(図示せず)をさらに含む。
【0028】
BPU12は、命令キャッシュ11に結合されており、分岐命令に続いて命令を予測的に読出すように構成されている。BPU12は、分岐命令の過去の動作に基づいて、分岐命令の分岐方向(採用又は非採用)を予測し、採用された分岐命令の予測された分岐目標アドレスを提供することができる。分岐方向が「採用」である場合、採用された分岐命令の分岐目標アドレスから後続の命令が読出される。また、分岐方向は、「非採用」であってもよく、その場合、後続の命令は、分岐命令に連続するメモリ位置から読出される。
実施形態では、BPU12は、基本ブロックの開始アドレスから基本ブロックの終了を予測するための基本ブロックの分岐予測機能を実装している。基本ブロックの開始アドレス(例えば、基本ブロックの最初の命令のアドレス)は、以前に採用された分岐命令の目標アドレスであってもよい。基本ブロックの終了アドレスは、基本ブロックの最後の命令の後の命令アドレスであり、これは別の基本ブロックの開始アドレスであってもよい。基本ブロックは、いくつかの命令を含んでいてもよく、基本ブロックのある分岐が別の基本ブロックにジャンプするために採用されたときに、基本ブロックは終了する。
【0029】
機能部は、分岐命令を実行し、予測された分岐方向が正しくない(誤予測)かどうかを判断する分岐実行部(BEU)(機能部20の1つであってもよい)を含んでもよい。例えば、BEUは、予測された分岐の方向(採用、非採用)を実際に実行された分岐と比較して、予測された分岐の方向が正しいかどうかを判断してもよい。
デコードするため誤って予測された分岐に続く命令は、マイクロプロセッサ内の様々な個所から破棄される。分岐予測ミスは、BPU12で予測されなかった無条件分岐命令(常に採用される分岐)をデコードするデコード/発行部13から発生してもよい。また、デコード/発行部13とBPU12は、BPU12に更新情報を提供してもよい。マイクロプロセッサ10では、分岐命令後の命令は、分岐命令の実行後に、レジスタファイル14に書き戻す。
【0030】
デコード/発行部13は、命令キャッシュ11から受信した命令をデコードしてもよい。命令は、動作コード(又はオペコード)、オペランド(例えば、ソースオペランド及び分岐先オペランド)、及び即時データという領域を含んでもよい。オペコードは、どの動作(例えば、ADD、SUBTRACT、SHIFT、STORE、LOAD等)を実行するかを指定してもよい。
オペランドは、レジスタファイル14内のレジスタのインデックス又はアドレスを指定するもので、ソースオペランドは、動作が読出されるレジスタファイルからのレジスタを示し、分岐先オペランドは、動作の結果データが書換えられるレジスタファイル内のレジスタを示す。ソースオペランド及び分岐先オペランドは、ソースレジスタ及び分岐先レジスタとも呼ばれ、これらは以下で同じ意味で使用される。
実施形態では、オペランドは、32個のレジスタを有するレジスタファイル内のレジスタを識別するために、5ビットのインデックスを必要とする。命令によっては、レジスタデータの代わりに、命令で指定された即時データを使用する。各動作は、機能部20又はロード/ストア部17で実行される。オペコードで指定された演算のタイプと、リソース(レジスタ、機能部等)の可用性に基づいて、各命令は、実行レイテンシ時間とスループット時間を持つ。実行レイテンシ時間(又はレイテンシ時間)とは、命令で指定された動作の実行が完了し、結果データを書換えるまでの時間(即ち、クロックサイクル数)を指す。スループット時間とは、次の命令が機能部20に入力できる時間(クロックサイクル数)を指す。
【0031】
実施形態では、デコード/発行部13において、実行レイテンシ時間、スループット時間、及びオペコードに基づく命令のタイプがデコードされる。命令は、実行キュー19に発送され、機能部20又はロード/ストア部17によって実行される。
1つの実行キュー19に対して複数の命令が発行される場合は、スループット時間が累積される。累積時間は、実行キュー19で以前に発行された命令を考慮して、次の命令が実行のために機能部20に入力することができる時間を示す。機能部20に命令を送ることができる時間を(レジスタファイルからの)読出時間と呼び、機能部20が命令を完了した時間を(レジスタファイルへの)書込時間と呼ぶ。
命令は、実行キュー19に対して発行され、発行された各命令は、予定された読出時間を持って、実行のために機能部20又はロード/ストア部17に発送される。累積されたスループット時間は、発行された命令の読出時間である。命令のレイテンシ時間は、実行キュー19の次の利用可能なエントリに命令が発行されるときの書込時間を生成するために、累積されたスループット時間に追加される。累積時間に基づき、実行のレイテンシ時間と発行命令の開始時間が修正される。ここで、修正された実行のレイテンシ時間は、最新の発行された命令の書込時間と呼ばれ、修正された開始時間は、発行された命令の読出時間と呼ばれる。
書込時間と読出時間は、発行された命令をレジスタファイル14のレジスタに書込んだり、レジスタファイル14から読出たりするための、特定の時間を記述するアクセス時間と呼ばれることもある。複数の命令を並行して発行する場合、第2命令の書込時間と読出時間は、第2命令の前に発行された第1命令に基づいてさらに調整されてもよい。デコード/発行部13は、ロード/ストア命令を、タグマイクロオペとデータマイクロオペを含む2つのマイクロ動作(マイクロオペ)としてデコードしてもよい。
【0032】
実施形態では、デコード/発行部13は、命令を発行する前に、全ての可能な競合を確認して解消する。命令には、以下の4つの基本的なタイプの競合がある。
(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に対して発行されてもよい。
【0033】
図2は、本開示の実施形態におけるレジスタファイル14及びスコアボード15を示すブロック図である。レジスタファイル14は、複数のレジスタR(0)~R(N)、読出ポート及び書込ポート(図示せず)を含んでもよく、Nは1より大きい整数である。実施形態では、レジスタファイル14は、スカラのレジスタファイルとベクトルのレジスタファイルを含んでいてもよい。本開示は、レジスタファイル14に含まれるレジスタ、読出ポート、及び書込ポートの数を制限することを意図しない。
スコアボード15は、複数のエントリ150(0)~150(N)を含み、各スコアボードエントリは、レジスタファイル14内の1つのレジスタに対応し、対応するレジスタに関連する情報を記録する。実施形態では、スコアボード15は、レジスタファイル14と同数のエントリ(即ち、N個のエントリ)を有するが、本開示は、スコアボード15のエントリの数を制限することを意図しない。
【0034】
図3A~3Bは、本開示の実施形態におけるスコアボードエントリの様々な構造を示す図である。実施形態では、スコアボード15は、レジスタファイル14への書換え動作を処理するための第1スコアボード151と、レジスタファイル14からの読出動作を処理するための第2スコアボード152とを含んでもよい。
第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とを含む。これらの領域のそれぞれには、発行された命令によって書込まれる、対応する分岐先レジスタに関連する情報が記録される。スコアボードエントリのこれらの領域は、命令の発行時に予定されてもよい。
【0035】
未知領域1511は、スコアボードエントリに対応するレジスタの書込時間が既知であるか未知であるかを示すビット値を含む。例えば、未知領域1511は、非ゼロの値はレジスタが未知の書込時間を有することを示し、ゼロの値はカウント領域1531によって示されるレジスタが既知の書込時間を有することを示す、1つのビットを含んでもよい。
実施形態において、未知領域1511は、未知の書込時間を有する1つ又は複数の発行された命令をレジスタに書込むことが予定されていることを示すために、任意の数のビットを含んでもよい。未知領域1511は、命令の発行時間に予定又は修正され、未知のレジスタ書込時間が解消された後にリセットされてもよい。
リセット動作は、デコード/発行部13、ロード/ストア部17(例えば、データヒット後)、又は機能部20(例えば、INT DIV 動作が分割する桁数を解消した後)等、書込時間が不明な命令の実行を伴うマイクロプロセッサ内の他の部分の何れかによって実行されてもよい。
実施形態では、未知領域1511は、レジスタの書込みに予定されている未知の書込時間において他の3つの発行された命令の存在を記録する、4つの異なる状態を持つ2つのビットを含んでもよい。さらに他の実施形態では、未知領域1511は、未知の書込時間を有する複数の発行された命令を記録するために、3ビット、4ビット等を含んでもよい。
【0036】
カウント領域1531には、次の命令(が発行されること)によってレジスタが書き込めるようになるまでのクロックサイクル数を示し、書込みカウント領域が記録した書込みカウント値とも呼ばれる、カウント値が記録される。つまり、カウント領域1531には、先に発行された命令が動作を完了して、結果データをレジスタに書換えるまでのクロックサイクル数が記録されている。カウント領域1531のカウント値は、命令の発行時間の実行レイテンシ時間に基づいて予定される。そして、カウント値は、カウント値がゼロになる(自己リセットされる)まで、クロックサイクルごとにカウントダウン(1つずつデクリメント)される。例えば、ADD命令の実行レイテンシ時間は2クロックサイクルであり、カウント領域1531のカウント値は、分岐先レジスタに対するADD命令の発行時間に2に予定され、カウンタ領域が0になると自己リセットされる。カウント値が3の場合は、結果データは3クロックサイクル後にスコアボードのエントリに対応するレジスタに書換えられ、カウント値が1の場合は、次のクロックサイクルで結果データがレジスタに書換えられ、カウント値が0の場合は、レジスタへのアクセスにデータの依存性がないことを示す。
実施形態では、発行された命令は、レジスタへの書込又は読出を行うことができる。レジスタへの書込の場合、カウント領域1531の値は、書込(又はレイテンシ)カウント値と呼ばれることがある。レジスタへの読出の場合、カウント領域1531の値は、
図3Bで述べる読出カウント値として参照されてもよい。言い換えれば、他の実施形態では、カウント値領域は、発行された命令によって指定された動作に応じて、レジスタの書込時間又は読出時間のいずれかを記録してもよい。
【0037】
スコアボードエントリの機能部領域1551は、レジスタに書換える機能部20(発行された命令で指定される)を指定する。例えば、ALUを記録する機能部領域1551は、結果データがALU機能部からレジスタに書換えられることを示す。実施形態では、機能部領域1551に記録された機能部は、カウント領域1531が1の値に達したときに、記録された機能部から次の命令で指定された別の機能部に結果データを転送するために使用されてもよい。
【0038】
図3Bは、本開示の実施形態における、スコアボードエントリの構造を示す図である。スコアボードエントリ1520(0)~1520(N)の構造を有する第2スコアボード152は、レジスタから読み出された発行済み命令の前に、スコアボードエントリに対応するレジスタに書込む際の競合を解消するように構成されている。第2スコアボードは、WARデータの依存関係を解消するためのWARスコアボードとも呼ばれる。スコアボードエントリ1520(0)~1520(N)の各々は、未知領域(Unknown)1521と、読出カウント領域(カウント領域とも称される)(read cnt)1523とを含む。WARスコアボードの実装においては、機能部領域を省略してもよい。未知領域1521は、スコアボードエントリに対応するレジスタの読出時間が既知であるか未知であるかを示すビット値を含む。未知領域1521の動作及び機能は、未知領域1511と同様であるため、簡略化のためにその詳細は省略する。カウント領域1523には、先に発行された命令が対応するレジスタから読出すのにかかるクロックサイクル数を示す読出カウント値が記録される。カウント領域1523は、読出カウント値をストアする読出カウント領域と呼ばれることもある。
(書込)カウント領域1531の書込カウント値と同様に、読出カウント値は、読出カウント値が0になるまで、クロックサイクルごとに1ずつカウントダウンされる。(読出)カウント領域1523の動作及び機能は、特に指定のない限り、(書込)カウント領域1531と同様であるため、その詳細は省略する。
【0039】
読出/書込制御部16は、発行されるべき命令のアクセスを予定するために、将来の複数のクロックサイクルにおいて、レジスタファイル14の読出ポート及び/又は書込ポートの可用性を記録するように構成されている。命令を発行する際には、デコード/発行部13は、読出/書込制御部16にアクセスして、命令で指定されたアクセス時間に基づく、レジスタファイル14の読出ポート及び/又は書込ポートの空き状況を確認する。詳細には、読出/書込制御部16は、ソースオペランドを機能部20に読出すために予定された読出時間である将来の時間に利用可能な読出ポートを選択し、また、機能部20から結果データを書換えるための予定された書込時間である将来の時間に利用可能な書込ポートを選択する。本実施形態では、読出/書込制御部16は、上述したように、読出ポートと書込ポートを予定するための読出シフタ161と書込シフタ163を含んでいてもよい。
【0040】
図4は、本開示の実施形態における、レジスタファイルの読出ポートに関連付けられた読出シフタ161を示す図である。
図5は、本開示の実施形態における、レジスタファイルの書込ポートに関連付けられた書込シフタ163を示す図である。レジスタファイル14の読出ポートの各々は、1つの読出シフタ161と関連付けられていてもよく、レジスタファイル14の書込ポートの各々は、1つの書込シフタ163と関連付けられていてもよい。実施形態では、読出シフタ161及び書込シフタ163は、読出/書込制御部16に含まれていてもよい。しかし、本開示はこれに限定されない。
他の実施形態では、読出シフタ161及び書込シフタ163は、読出/書込制御部16の外部にあってもよく、読出/書込制御部16は、レジスタファイル14の読出ポート及び書込ポートの使用を制御するために、読出シフタ161及び書込シフタ163にそれぞれ通信可能に結合されていてもよい。
【0041】
図4に示すように、読出シフタ161は、複数のエントリ1610(1)~1610(M)を含み、各エントリは、読出有効領域1611及び読出アドレス領域1613を含んでもよく、Mは1より大きい整数である。エントリ1610(1)~1610(M)のそれぞれは、将来の1クロックサイクルに関連付けられ、そのクロックサイクルにおいて対応する読出ポートの可用性を記録する。例えば、エントリ1610(1)は、到来する第1クロックサイクル(即ち、すぐ次のクロックサイクル)における読出ポートの可用性を示し、エントリ1610(M)は、将来の第Mクロックサイクルにおける読出ポートの可用性を示す。
図4に示すように、エントリ1610(1)~1610(M)のうち最末尾のエントリは、クロックサイクルごとにシフトアウトされ、新しいエントリが1610(M)として追加される可能性がある。例えば、最末尾のエントリ1610(1)は、すぐ次のクロックサイクルでシフトアウトされる。
実施形態では、読出有効領域(rd)1611には、対応するクロックサイクルでの読出ポートの可用性を示す読出有効値が記録される。例えば、X番目のエントリにおける読出有効領域1611(X)の非ゼロ値は、Xが1より大きくMより小さい場合に、将来のX番目のクロックサイクルにおいて読出ポートが使用中になることを示し、X番目のエントリにおける読出有効領域1611(X)のゼロ値は、将来のX番目のクロックサイクルにおいて対応する読出ポートがアクセス可能になることを示す。読出アドレス領域(rd_addr)1613は、データが読み出されるべきレジスタのアドレスを記録する。例えば、エントリ1610(1)は、レジスタ7(即ち、アドレスr7)からデータを読出すために、すぐ次のクロックサイクルで対応する読出ポートが使用中になることを示す。他の実施形態では、他の情報を記録するために、読出シフタ161の各エントリに、より多くの又はより少ない領域が存在する。
【0042】
命令の発行時間において、デコード/発行部13は、レジスタファイル14の読出ポート(複数可)の可用性について、読出/書込制御部16を確認する。例えば、読出時間はXクロックサイクルである。読出/書込制御部16は、読出シフタ(複数可)161のX番目のエントリを確認して、将来のXクロックサイクル目に読出ポートが使用可能かどうかを判断する。使用可能な読出ポートの数が、読出時間における命令の必要な読出ポートの数以上であれば、デコード/発行部13は、X番目のクロックサイクル(即ち、読出予定時間)に命令を発行して実行するように予定してもよい。発行された命令の有効なソースレジスタごとに、読出ポートの読出有効領域1611と読出アドレス領域1613が予定される。
利用可能な読出ポートの数が必要な読出ポートの数よりも少ない場合、デコード/発行部13は命令を待機し、次のクロックサイクルで読出シフタを再確認することができる。予定された読出時間になると、読出シフタは、レジスタファイル14からデータを読み取るために、読出有効領域1611及び読出アドレス領域1613を対応する機能部に提供する。実施形態では、読出シフタ161は、循環型の読出ポインタで実装されても良い。この読出ポインタは、クロックサイクルごとに読出有効領域1611及び読出アドレス領域1613を読出す読出シフタ161の末尾を示し、読出ポインタはクロックサイクルごとにインクリメントされる。
【0043】
図5に示すように、書込シフタ163(レイテンシシフタと呼ばれることもある)は、複数のエントリ1630(1)~1630(P)を含み、各エントリは、書換有効領域(wr)1631、書込アドレス領域(wr_addr)1633、及び機能部領域(funit)1635を含み、Pは1より大きい整数である。エントリ1630(1)~1630(P)のそれぞれは、将来の1クロックサイクルに関連付けられ、そのクロックサイクルにおける対応する書込ポートの可用性を記録する。例えば、エントリ1630(1)は、到来する第1クロックサイクル(即ち、すぐ次のクロックサイクル)における書込ポートの可用性を示し、エントリ1630(P)は、今後の第Pクロックサイクルにおける書込ポートの状態を示す。
図5に示すように、エントリ1630(1)~1630(P)のうち最末尾のエントリは、クロックサイクルごとにシフトアウトされることになる。例えば、最末尾のエントリ1630(1)は、すぐ次のクロックサイクルでシフトアウトされ、新しいエントリが1630(P)として追加される。実施形態では、書換有効領域(wr)1631には、エントリに対応するクロックサイクルでの書込ポートの可用性を示す書換有効値が記録される。
例えば、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クロックサイクルにおいて書込ポートが使用中になることを示す。
【0044】
命令の発行時間において、デコード/発行部13は、命令を発行する前に、命令の書込時間におけるレジスタファイル14の書込ポートの可用性を読出/書込制御部に確認する。例えば、書込時間はYクロックサイクルである。読出/書込制御部16は、書込シフタ163のY番目のエントリを確認して、将来のYクロックサイクルで書込ポートが使用可能かどうかを判断する。使用可能な書込ポートの数が、書込時間における命令の必要な書込ポートの数以上であれば、デコード/発行部13は、Y番目のクロックサイクル(即ち、予定された書込時間)に実行完了の命令を発行して実行するように予定してもよい。発行された命令の有効な分岐先レジスタごとに、書換有効領域1631、機能部領域1635、書込アドレス領域1633が予定される。利用可能な書込ポートの数が必要な書込ポートの数よりも少ない場合、デコード/発行部13は命令を待機させ、次のクロックサイクルで書込シフタを再確認することができる。予定された書込時間になると、読出/書込ポート制御は、機能部20から機能部領域1635に記録されている結果データを取り込み、書込アドレス領域1633に指定されているレジスタに結果データを書込む。実施形態では、書込シフタ163は、循環型の読出ポインタで実装されてもよい。この読出ポインタは、クロックサイクル毎に書換有効領域1631、書込アドレス領域1633、及び機能部領域1635を読出す書込シフタ163の底を示し、クロックサイクル毎にインクリメントされる。
【0045】
図1に示すように、実行キュー19は、機能部20に発送されることが予定されている発行済み命令を保持するように構成されている。機能部20は、整数乗算、整数除算、演算部(ALU)、浮動小数点演算部(FPU)、分岐実行部(BEU)、復号化された命令を受ける演算部等を含むが、これらに限定されない。本実施形態では、実行キュー19のそれぞれは、機能部20の1つに結合されているか、又は専用になっている。
例えば、実行キュー19Aは、デコード/発行部13と対応する機能部20Aとの間に結合され、対応する機能部20Aが計画されている動作を指定する命令を、キューイング及び発送する。同様に、実行キュー19Bは、デコード/発行部13と対応する機能部20Bとの間に結合され、実行キュー19Cは、デコード/発行部13と対応する機能部20Cとの間に結合される。
実施形態では、実行キュー19D、19Eは、デコード/発行部13とロード/ストア部17との間に結合され、ロード/ストア命令を処理する。実行キュー19D、19Eは、それぞれ、タグ実行キュー(TEQ)19D、データ実行キュー(DEQ)19Eとも呼ばれる。
【0046】
図6は、実施形態における実行キュー19を示す図である。実行キュー19は、デコード/発行部13から発令された命令に関する情報を、機能部20に発行すべき順序で記録するための複数のエントリ190(0)~190(Q)を含んでもよく、Qは0より大きい整数である。一例では、実行キュー19の各エントリは、
図6でそれぞれv、ex_ctrl、data、及びrd_cntとラベル付けされた有効領域191、実行制御データ領域193、データ領域195、及び読出カウント領域197を含む。他の実施形態では、各EQに記録される領域の数は多数でも少数でもよく、データ領域(data)195には、即時データの代わりに他のデータが記録されていてもよい。
【0047】
有効領域(v)191は、エントリが有効であるか否かを示す(例えば、有効なエントリは1で示し、無効なエントリは0で示す)。実行制御データ領域(ex_ctrl)193及びデータ領域(data)195は、命令から派生した機能部20の実行制御データ及び命令の即時データを示す。読出カウント領域(rd_cnt)197には、命令の読出時間を示すための読出カウントが記録されている。読出カウント領域(rd_cnt)197にストアされた読出時間は、読出カウントがゼロになるまで、クロックサイクルごとに1ずつカウントダウンされる。読出カウント領域(rd_cnt)197の読出時間が0になると、実行キュー19は、有効な命令を機能部20に発送する。
【0048】
実行キュー19は、カウンタ値がゼロになるまでクロックサイクルごとに1つずつカウントダウンされる累積カウント値をストアするための累積型スループットカウンタ (acc_cnt)199を含むか、又はそれに結合されてもよい。累積カウント値がゼロになると、EQ19が空であることを示す。
累積型スループットカウンタ (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に書換えられる。
【0049】
図1に示すように、ロード/ストア部17は、ロード命令とストア命令を処理するために、デコード/発行部13に結合されている。実施形態では、デコード/発行部13は、ロード/ストア命令を、タグマイクロオペとデータマイクロオペとを含む2つのマイクロ動作(マイクロオペ)として発行する。タグマイクロオペは、タグ実行キュー(TEQ)19Dに送られ、データマイクロオペは、データ実行キュー(DEQ)19Eに送られる。実施形態では、ロード/ストア命令のマイクロオプのスループット時間は1サイクルであり、TEQ19D及びDEQ19Eは独立して処理されるロード/ストア動作であり、TEQ19DはDEQ19Eがデータ動作を発行する前にタグ動作を発行する必要がある。
【0050】
データキャッシュ18は、メモリ30及びロード/ストア部17に結合されており、メモリ30から読出されてロード/ストア部17によってロード/ストアデータにアクセスされるデータを、ストアするように構成されている。データキャッシュ18は、メモリ30からの連続したデータバイトの多数のキャッシュラインを含む。データキャッシュ18のキャッシュラインは、命令キャッシュ11と同様のダイレクト・マップピング、フルアソシアティブ・マップピング又はセットアソシアティブ・マップピングとして編成されるが、命令キャッシュ11と同じマップピングである必要はない。
【0051】
データキャッシュ18は、マイクロプロセッサ10で使用される頻度の高いデータのアドレスとデータの一部をそれぞれ記憶するためのタグアレイ(TA)22とデータアレイ(DA)24を含んでいてもよい。命令キャッシュ11と同様に、タグアレイ22の各タグは、データアレイ24のキャッシュラインに対応している。マイクロプロセッサ10がロード/ストア命令を実行する必要があるとき、マイクロプロセッサ10は、ロード/ストアアドレスをタグアレイ22にストアされているタグと比較することにより、データキャッシュ18にロード/ストアデータが存在するかどうかを最初に確認する。ロード/ストアアドレスがタグアレイ内のタグの1つと一致した場合(キャッシュヒット)、データアレイ24内の対応するキャッシュラインにアクセスしてロード/ストアデータを取得する。
実施形態では、ロード命令は、データアレイ24のキャッシュラインからデータを読出して、レジスタファイルの分岐先レジスタに書き込み、一方、ストア命令は、レジスタファイル14のソースレジスタからデータアレイ24のキャッシュラインにデータを書込む。ロード/ストアアドレスがタグアレイ22のどのエントリとも一致しない場合は、キャッシュミスとなり、マイクロプロセッサ10はメモリ30にアクセスしてデータを探すことができる。キャッシュヒットの場合、ロード/ストア命令の実行レイテンシは既知である(例えば、2、3、6、又は任意のクロックサイクル数)。キャッシュミスの場合、ロード/ストア命令の実行レイテンシは15クロックサイクル以上である。ロード命令の実行レイテンシは、キャッシュヒットとメモリ30のレイテンシに依存し、基本的に未知である。
【0052】
タグ動作には、ロード/ストア部17内のアドレス生成部(AGU)171によるアドレスの計算と、計算されたアドレスを用いて、タグアレイ22とデータトランスレーションルックアサイドバッファ(TLB)(図示せず)にアクセスし、仮想アドレスから物理アドレスへの変換を行うことが含まれる。アドレスの計算は、レジスタファイル14からのソースレジスタと、
図6のデータ領域(データ)195からの即時データの加算処理である。
図4の読出シフタ161は、TEQ19DからAGU171へのタグ動作の発行に合わせて、レジスタファイル14からソースレジスタを読み取るように予定されている。
実施形態では、仮想アドレスと物理アドレスが同じであり、その場合、データTLBは必要ない。TEQ19Dは、ロード/ストアアドレスを算出するために、タグ動作をロード/ストア部17のアドレス生成部(AGU)171に発送する。ロード/ストアアドレスは、データキャッシュ18のタグアレイ(TA)22にアクセスするために使用される。キャッシュのヒット/ミスとヒット経路(セットアソシアティブ・マッピング)は、DA24のヒットウェイのキャッシュラインにアクセスというデータ動作を有するDEQ19Eが、アクセスできるように保持される。
ロード命令は、DA24がTA22と同時にアクセスされた場合、DA24内のセットアソシアティブ・マップピングの全ての経路が読み込まれる。本実施形態では、TA22の後にDA24を順次アクセスすることで、DA24の単一の経路を読出すことができるため、DA24は大幅な省電力化を図ることができ、データバンクの競合を低減することができる。
【0053】
ロード命令の場合、キャッシュヒットの場合は、書込シフタの書込制御により、DA24からデータを読出してレジスタファイル14の分岐先レジスタに書換える。キャッシュミスの場合は、スコアボード15の分岐先レジスタのステータスを不明に変更し、ロードデータをメモリ30から読出する。メモリ30からのキャッシュミスのロードデータは、予約された書込ポートにより、レジスタファイル14の分岐先レジスタに書換えられる。実装では、メモリ30からのロードデータは、データミスバッファ(図示せず)に書込まれ、その後、データミスバッファは書込まれたロードデータをレジスタファイル14の分岐先レジスタに書換え、最終的にはデータキャッシュ18にキャッシュラインデータが書込まれる。
【0054】
ストア命令の場合、キャッシュヒット時には、読出シフタがDA24に書込むために、レジスタファイル14からストアデータをジャストインタイムで読出すことが予定されている。キャッシュミスの場合は、ストアデータはロード/ストア部17のストアミスバッファ(図示せず)に送られる。既存のストア命令の実行において、タグアドレスのソースレジスタとストアデータのソースレジスタがレジスタファイル14から同時に読み出されることがあり、その場合、ストアバッファは、ストアデータをDA24に書込む時間まで保持するために必要となる。
本発明では、ストアデータをDA24に書込む時間(キャッシュヒットの場合)がわかっているので、読出ポート制御は、ストアデータのソースレジスタをレジスタファイル14からジャストインタイムで読出してDA24に書込むように予定され、ストアバッファは不要である。キャッシュミスの場合は、ストアデータがデータキャッシュに書き込める状態になるまで、ストアデータのソースレジスタをレジスタファイル14から読出すことがなく、ソースレジスタのジャストインタイムでの読出しとなる。
【0055】
キャッシュミスの場合、ロード/ストア部17は、メモリ30に対して多数の保留中のキャッシュミス要求を許可してもよい。複数の保留中のミス要求は、ロード/ストア部17内のミス要求キュー(図示せず)に保持される。新しいキャッシュラインは、メモリ30から、データキャッシュ18内のミスデータバッファ(図示せず)に読出される。ミスデータバッファは、複数のキャッシュラインで構成されていてもよい。さらに。データキャッシュ18の交換用キャッシュラインはダーティである可能性があり、ダーティなキャッシュラインは、メモリ30からの新しいキャッシュラインがデータキャッシュ18に書込まれる前に、メモリ30に書換える必要がある。ダーティなキャッシュラインは、メモリ30に退避する前に、データキャッシュ18からエビクションバッファに読出される。エビクションバッファは、ミスデータバッファの一部として実装されてもよい。エビクションバッファ、ミスリクエストキュー、及びミスデータバッファは、データのマッチング及び転送のために、後続のロード/ストア命令によって確認される必要がある。
【0056】
ロード/ストア命令は、後続の全ての命令を実行パイプラインから破棄する必要がある正確な例外を持つことができる。分岐命令と同様に、ロード/ストア命令の後に続く全ての命令は、ロード/ストア命令の実行後まで、レジスタファイル14に書換えることができない。キャッシュミスが発生したロード/ストア命令には、データエラー例外が発生することがあるが、これは不正確な例外であり、この例外は、実行パイプライン内の全ての命令が完了した後に、デコード/発行部13がそれ以上の命令を発行しないように停止することで対処される。割り込みは、不正確な例外と同様で、実行パイプライン内の全ての命令が完了した後に、デコード/発行部13がそれ以上の命令を発行しないように停止することで、割り込みが行われる。
【0057】
図7Aは、実施形態における実行ブロック100B及び100Cを示す図である。簡単に、実行ブロック100Bは、ベクトル命令を処理するための専用のベクトル実行ブロック100Bとも呼ばれ、実行ブロック100Cは、FP命令を処理するための専用のFP実行ブロック100Cとも呼ばれる。ただし、実行ブロック100B、100Cのそれぞれは、他のタイプの命令を処理するように構成されていてもよい。実行ブロック100B、100Cのそれぞれは、実行ブロック100Aと同じ要素を含んでいてもよい。
例えば、実行ブロック100B及び100Cのそれぞれは、デコード/発行部、スコアボード、読出/書込制御部、レジスタファイル、実行キュー及び機能部を含んでいてもよい。実行ブロック100B、100Cは、第1タイプ発行部、第2タイプ発行部とも呼ばれる。
【0058】
実施形態では、実行ブロック100B及び100Cにおいて、デコード/発行部13b及び13cによって、異なるタイプの命令が並列にデコードされてもよい。命令の並列デコードでは、デコード/発行部13b及び13cのそれぞれが、実行Bブロック100B、100Cのいずれかで命令を検証してもよく、また、命令は一度に実行ブロック100B、100Cのいずれか一方でしか有効にならない。
【0059】
実施形態では、実行ブロック100B及び100Cにおけるデコード/発行部13b及び13cのそれぞれは、命令を発行する前に、異なるタイプの命令の可能な全ての競合を確認して解消する。実行ブロック100B、100Cにおけるデータ依存性の解消及び読出/書込ポートの制御は、実行ブロック100Aと同様の機構を用いてもよい。本明細書では、特定の番号の後にアルファベットを付けて示される要素は、番号のみでまとめて示される。例えば、実行ブロック100Bの実行キュー291A~291Cは、指定しない限り、実行キュー291と総称し、実行ブロック100Cの実行キュー292A~292Cは、指定しない限り、実行キュー292と総称する。そのため、以下では、デコード/発行部13b及び13cに関する詳細な説明は省略する。
【0060】
レジスタファイル14b及び14c、スコアボード15b及び15c、読出/書込制御部16b及び16c、実行キュー291及び292、及び実行ブロック100B及び100Cにおける機能部201及び202は、レジスタファイル14、スコアボード15、読出/書込制御部16、実行キュー19、及び機能部20と同様であってもよい。
レジスタファイル14、スコアボード15、読出/書込制御部16、実行キュー19、及び実行ブロック100Aの機能部20は、レジスタファイル14b、スコアボード15b、読出/書込制御部16bに関するスカラ整数の命令用であり、実行ブロック100Bの実行キュー291及び機能部201は、ベクトル命令専用であり、また、レジスタファイル14c、スコアボード15c、読出/書込制御部16c、実行キュー292、及び実行ブロック100Cの機能部202は、FP命令専用である。実行ブロック100B、100Cにおけるこれらの要素の構造や機能性は、実行ブロック100Aの対応する要素から推測できるため、以下では実行ブロック100B、100Cに関する詳細な説明は省略する。
【0061】
実施形態では、マイクロプロセッサ10は、マルチプレクサ300及び共有機能部20sをさらに含み、共有機能部20sは、実行ブロック100B及び100Cと共有されてもよい。共有機能部20sは、実行ブロック100Bから発送されたベクトル命令と、実行ブロック100Cから発送されたFP命令とを実行してもよい。共有機能部20sは、マルチプレクサ300からベクトル命令とFP命令を受信し、受信した命令を実行してもよい。実施形態では、ベクトル実行キュー291C及びFP実行キュー292Cは、実行キュー291C又は292Cの一方のみが、マルチプレクサ300を介して共有機能部20sに有効な命令を一度に送信できるように構成されている。言い換えれば、マルチプレクサ300は、ベクトル命令又はFP命令のうちの1つだけを一度に共有機能部20sに提供し、共有機能部20sは、ベクトル命令又はFP命令のうちの1つだけを一度に実行することができる。実施形態では、共有機能部20sは、マルチプレクサ300と読出バス31b及び31cを介して、実行ブロック100B及び100Cのレジスタファイル14b及び14cに結合され、共有機能部20sからの結果データは、結果バス32b及び32cを介して、レジスタファイル14b又は14cに書換えられる。
【0062】
実施形態では、共有機能部20sは、ベクトル命令の複数の要素を実行するように構成された複数の機能部200A~200Dを含んでもよい。ベクトル命令は、以下の2つの観点において、スカラ整数及びFP命令とは異なる。
(1)ベクトル命令が多くの要素で動作するのに対し、スカラ整数やFP命令は単一の要素で動作する。
(2)ベクトル命令の多くの要素は、マイクロ演算としてシーケンスで実行するために、より小さな要素のセットにグループ化することができる。
例えば、ベクトル命令は、ハードウェア的には4個の要素の8個のマイクロ演算として実行可能であり、各要素が32ビットのデータである32個の要素で実行するようにプログラムすることができる。4つの要素の実行は、
図7Aの機能部200A~200Dによって行われる。
実施形態では、共有機能部20sの一部の機能部は、VEQ291CとFPEQ292Cの両方で共有され、共有機能部20sの一部の機能部は、ベクトル命令の複数の要素を実行するために専用される。一例として、機能部200Dは、ベクトル命令とFP命令の両方の要素を実行するために共有され、機能部200A~200Cは、ベクトル命令の一部の要素を実行するために専用される。共有機能部20sにおける共有実行部の数は、本開示において限定されない。
【0063】
実施形態では、マルチプレクサ300は、実行ブロック100BのVEQ291Cと、実行ブロック100CのFPEQ292Cとに結合され、そして、VEQ291Cからのベクトル命令又はFPEQ292CからのFP命令を選択して、命令実行に当たって共有機能部20sに発送するように構成される。他の実施形態では、実行ブロック100B及び100Cは、複数のVEQ291及び複数のFPEQ292を含み、マルチプレクサ300は、命令実行に当たってVEQs291及びFPEQs292から共有機能部20sに有効な命令を選択して提供するために、複数のVEQs291及び複数のFPEQs292に結合される。実施形態では、VEQ291C及びFPEQ292は、有効な命令(即ち、ベクトル命令又はFP命令)を示す有効な指示を、マルチプレクサ300に提供してもよい。マルチプレクサ300は、VEQ291C及びFPEQ292Cからの有効な指示に基づいて、ベクトル命令又はFP命令を選択してもよい。実施形態では、ベクトル命令及びFP命令のうち1つのみが一度に有効であり、従って、ベクトル命令又はFP命令のうち1つのみが実行のために共有機能部に送られる。
【0064】
実施形態ではマルチプレクサ300は、ベクトル命令及びFP命令に関連付けられたオペランドデータを受信するために、読出バス31b及び31cを介して、実行ブロック100B及び100Cのレジスタファイル14b及び14cに結合される。ベクトル命令又はFP命令に関連付けられたオペランドデータは、レジスタファイル読出バス31b及び31cからマルチプレクサ300への結合で示されるように、マルチプレクサ300を介して共有機能部20sに送られてもよい。
【0065】
実施形態では、レジスタファイル14b及び14cからのオペランドデータは、VEQ291C及びFPEQ292Cと同期して、マルチプレクサ300を介して共有機能部20sに送信される。例えば、VEQ291C及びFPEQ292Cは、レジスタファイル14b及び14cからオペランドデータが読み出されるのと同時に、マルチプレクサ300を介して共有機能部20sに命令を発送してもよい。
実施形態では、読出/書込制御部16b及び16cは、レジスタファイル14b及び14cからのオペランドデータが、VEQ291C及びFPEQ292Cの動作に同期して、共有機能部20sに送信されるように、命令の読出時間及び書込時間を予定する。VEQ291C及びFPEQ292Cのいずれか一方のみが一度に有効な命令を共有機能部20sに送ることができるため、マルチプレクサ300の選択は、VEQ291C及びFPEQ292Cのいずれかによって相互に排他的に行われる。
【0066】
実施形態では、実行ブロック100Bは、整数、順列、マスク、及び浮動小数点のための機能部を含み、実行ブロック100Cは、浮動小数点のみのための機能部を含む。実施形態では、浮動小数点の機能部は、FP乗算(FP・MACC)機能部、FP除算(FP・DIV)機能部を含む。FP・MACCは、FP乗算命令、FP加算/減算命令、及びFP乗算積算命令を実行するように構成され、FP・DIV機能部は、FP除算命令を実行するように構成され、FP・MISC機能部は、整数-FP変換、FP比較、FP最小、FP最大命令等の他の命令を実行するように構成されている。
実施形態では、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の専用とされる。
【0067】
図7Bは、実施形態における実行ブロック100B及び100Cの図である。
図7Aに示された図と
図7Bに示された図との違いは、
図7Bが、マルチプレクサ300の代わりに、共有実行キュー19s及びマルチプレクサ330を示していることである。共有実行キュー19sは、実行ブロック100B及び100Cのデコード/発行部13b及び13cに結合され、デコード/発行部13bによって発送されたベクトル命令又はデコード/発行部13cによって発送されたFP命令を受信するように構成されている。
実施形態では、デコード/発行部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に送られるように、命令の読出時間と書込時間を予定してもよい。
【0068】
共有実行キュー19sは、
図6に示されるEQ19のように、複数の領域を含んでもよい。本開示の実施形態では、共有実行キュー19sの領域を、
図6に示されたものよりも多数、少数、又は異なるものを使用してもよい。一実施形態では、共有実行キュー19sは、共有実行キュー19sの各エントリに記録された命令のタイプ(例えば、ベクトル又はFP)を示すタグビットを記録するタグビット領域(図示なし)を有する。共有実行キュー19sに記録されたタグビットは、実行ブロック100B又は100Cのレジスタファイル14b及び14cからオペランドデータを選択するために用いてもよい。例えば、共有実行キュー19sのエントリのタグビットが、記録された命令がベクトル命令であることを示していた場合、実行ブロック100Bのレジスタファイル14bから、ベクトル命令に関連するオペランドデータが選択される。共有実行キュー19sにストアされたベクトル命令とFP命令は、発送順に共有機能部20sに発送されてもよい。共有機能部20sの発送順序は、機能部20sの読出カウント領域197(即ち、
図6に示す実行キュー10の読出カウント領域197)に記録された読出カウント値に応じて決定されてもよい。
【0069】
図8は、実施形態におけるVEQ291の図である。VEQ291は、複数のエントリ190(0)
~190(Q)を含んでもよく、VEQ291の各エントリは、1つのベクトル命令に関する情報を記録するように構成される。実施形態では、VEQ291の各エントリは、
図6に示すEQ19の領域と同じか、又は異なる可能性がある複数の領域を含む。例えば、
図8に示すVEQ291の有効領域191、実行制御データ領域193、データ領域195及び読出カウント領域197は、
図6に示すEQ19の対応する領域と同様である。
さらに、
図8に示す累積型スループットカウンタ199は、
図6に示す累積型スループットカウンタ199と同じである。
図8のVEQ291と
図6の実行キュー19の同一要素に関する詳細な説明は省略する。
【0070】
VEQ291は、マイクロオペカウント領域192及びスループットカウント領域194をさらに含んでもよく、この場合、マイクロオペカウント領域192は、ベクトル命令におけるマイクロ動作の数を表す。例えば、エントリ190(0)及び190(2)のベクトル命令は、4つのマイクロ動作を有し、エントリ190(1)のベクトル命令は、8つのマイクロ動作を有する。スループットカウント領域194は、ベクトル命令における各マイクロ動作のスループット時間(例えば、クロックサイクル数)を表すように構成されている。
【0071】
実施形態では、VEQ291は、実行されるマイクロ動作数を追跡するためのマイクロオペカウンタ303を含むか、又はマイクロオペカウンタ303に結合される。マイクロオペカウンタ303は、第1エントリ190(0)のマイクロオペカウント領域192の値を受け取り、機能部201又は20sに発送されるマイクロオペごとに値を1ずつデクリメントしてもよい。実施形態では、有効領域191をリセットすることによって対応するエントリを無効にすることができる前に、マイクロオペカウンタ303は、マイクロオペカウント領域192の値を0にデクリメントする。この例では、第1エントリ190(0)のベクトル命令は、1クロックサイクルのスループット時間を持つ4つのマイクロオペを有する。そのため、マイクロオペカウント領域192の値は、クロックサイクルごとに1ずつデクリメントされる。スループットレイテンシが1クロックサイクルのマイクロオペのスループットカウント領域194は0に予定される。スループットカウント領域194のスループット時間は、実際のスループット時間よりも常に1少ない。
【0072】
実施形態では、VEQ291は、機能部201又は20sに発送されるマイクロ動作のスループット時間を追跡するためのスループットカウンタ305をさらに含む。スループットカウンタ305は、第1マイクロ動作に対応するスループットカウント領域194の値を、第1エントリ190(0)から受信し、第1マイクロ動作に対応するスループットカウント領域194の値が0になるまで、クロックサイクルごとに値を1ずつデクリメントすることができる。最初のマイクロ動作に対応するスループットカウント領域194の値が0になると、スループットカウンタ305は、次のマイクロ動作に対応するスループットカウント領域194の値で再ロードされ、マイクロオペカウント領域192が1よりも大きい場合は、カウントダウンプロセスが繰り返される。実施形態では、VEQ291のエントリの有効領域191は、マイクロオペカウンタ303及びスループットカウンタ305の両方の値が0になるまで有効なままである。
【0073】
実施形態では、実行ブロック100CのFPEQs292は、
図6に示された実行ブロック100Aの実行キュー19と実質的に同じ構造を有していてもよい。従って、以下では、実行ブロック100CのFPEQs292に関する詳細な説明は省略する。
【0074】
図9を参照して、マイクロプロセッサにおける異なるタイプの命令を発行するプロセスを、実施形態に従って説明する。
図9に示すマイクロプロセッサは、ベクトル累積型スループットカウンタ199b及びFP累積型スループットカウンタ199cを含むことができる。ベクトル累積型スループットカウンタ199bは、VEQ291及び291Cの有効なエントリの累積スループットカウントを追跡するために使用され、FP累積型スループットカウンタ199cはFPEQ292及び292Cの有効エントリの累積スループットカウントを追跡するために使用される。
【0075】
図9に示すマイクロプロセッサは、ベクトル累積型スループットカウンタ(v_acc_cnt)199b及びFP累積型スループットカウンタ(fp_acc_cnt)199cに結合されたマルチプレクサ302_1及び302_2をさらに含む。マルチプレクサ302_1は、ベクトル命令をVEQ291cに発行するために、
図8の読出カウント領域(rd_cnt)197の読出カウントとして、ベクトル累積型スループットカウンタ199b又はFP累積型スループットカウンタ199cのいずれかを選択するように構成されている。マルチプレクサ302_2は、スカラFP命令をFPEQ292Cに発行するために、
図8のread_count領域(rd_cnt)197の読出カウントとして、ベクトル累積型スループットカウンタ199b又はFP累積型スループットカウンタ199cのいずれかを選択するように構成されている。
実施形態では、マルチプレクサ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に含まれる。
【0076】
実施形態では、
図7Bの共有実行キュー19sは、共有実行キュー19sの有効エントリの累積型スループットカウントを追跡する単一の累積型スループットカウンタ(図示せず)を含む。
図7B及び
図9に示すように、単一の累積型スループットカウンタは、
図9に示す累積型スループットカウンタ199b及び199cの組み合わせとして表されてもよい。本実施形態では、単一の累積型スループットカウンタは、共有実行キュー19sに記録された命令の命令順序に従って更新される。例えば、単一の累積型スループットカウンタは、共有実行キュー19sの命令順序によって示される最後の命令に従って更新されてもよい。上述したように、
図7Bの共有実行キュー19sにベクトルとFP命令の両方が同時に発行された場合、ベクトルとFP命令は共有実行キュー19sの命令順序に従って2つのエントリに記録される。
ベクトルとFP命令の命令優先度は、共有実行キュー19sに同時に発行されるベクトルとFP命令の命令順序を決定することができる。単一の累積型スループットカウンタの値は、共有実行キュー19sに記録された命令の
図6に示す読出カウント領域(rd_cnt)197の読出カウントとして使用される。
【0077】
図10は、実施形態において、アクティブビットv_active及びf_activeに基づいて、共有機能部に命令を発行するためのフローチャート図を示す。前提として、
図1の実行ブロック100B及び100Cにおいて、1つの有効な命令がデコード/発行部に送信される。実行ブロック100B及び100Cは、ブロック501で参照されるように、実行ブロック100B及び100Cのうちの1つだけが有効な命令をデコードするように構成される。ブロック501において、有効な命令instがベクトル命令v_instとして決定された場合、実行ブロック100Bは有効な命令を発行するために使用される。ブロック502は、FPアクティブビットf_activeがセットされているか、クリアされているかを判断する。FPアクティブビットf_activeがクリアされている場合(f_active=0)、実行ブロック100Bのベクトル累積型スループットカウンタ199bを用いて、ベクトル命令をベクトル実行キュー(即ち、
図8のVEQ291)に発行し、発行された命令に対応する読出カウント値(即ち、
図8の読出カウント領域(rd_cnt 197))を、ブロック503bのベクトル累積型スループットカウンタ199b全体の値(v_acc_cnt)にセットする。あるいは、FPアクティブビットf_activeが予定されている場合(f_active=1)、実行ブロック100CのFP累積型スループットカウンタ199cを用いて、ベクトル命令v_instをベクトル実行キュー(即ち、
図8のVEQ291)に発行し、発行された命令に対応する読出カウント値(即ち、
図8の読出カウント領域(rd_cnt)197)を、ブロック503cのFP累積型スループットカウンタ199cの値(v_acc_cnt)にセットする。
さらに、ブロック502で選択されたベクトル命令v_instの読出時間が累積時間(即ち、ベクトル累積型スループットカウンタ199b又はFP累積型スループットカウンタ199cの値)と等しいかそれ以上の場合、ベクトル命令v_instは、ベクトル実行キュー(即ち、
図8のVEQ291)に発行され、選択された累積時間は、ベクトル命令の読出時間(即ち、
図8の読出カウント領域(rd_cnt)197の値)と、発行されたベクトル命令のスループット時間との合計にセットされる。
ベクトル命令の読出時間は、読出/書込ポートの競合や、ベクトルソース及び/又は分岐先レジスタのデータ依存性により、選択された累積時間よりも大きくなることがある。
【0078】
ブロック501に戻ると、有効な命令instがFP命令f_instと判定された場合には、実行ブロック100Cを用いて有効な命令を発行する。ブロック510は、ベクトルアクティブビットv_activeがセットされているかクリアされているかを判断する。ベクトルアクティブビットv_activeがクリアされている(v_active=0)場合、実行ブロック100CのFP累積型スループットカウンタ199cは、FP実行キュー(即ち、
図6のEQ19)にFP命令f_instを発行し、発行された命令に対応する読出カウント値(即ち、
図6の読出カウント領域(rd_cnt)197)をブロック511cのFP累積型スループットカウンタ199cの値(v_acc_cnt)にセットする。あるいは、ベクトルアクティブビットv_activeがセットされていれば(v_active=1)、実行ブロック100Bのベクトル累積型スループットカウンタ199bを用いて、FP実行キュー(即ち、
図6のEQ19)にFP命令f_instを発行し、発行された命令に対応する読出カウント値(即ち、
図6の読出カウント領域(rd_cnt)197)を、ブロック511bのベクトル累積型スループットカウンタ199bの値(v_acc_cnt)にセットする。
さらに、FP命令f_instの読出時間が累積時間(即ち、ブロック510で選択されたベクトル累積型スループットカウンタ199b又はFP累積型スループットカウンタ199cの値)と等しいかそれ以上の場合、FP命令f_instは、FP実行キュー(即ち、
図6のEQ19)に発行され、選択されたFP累積時間は、FP命令の読出時間(即ち、
図6の読出カウント領域(rd_cnt)197の読出カウントの値)と、発行されたFP命令のスループット時間との合計にセットされる。FP命令の読出時間は、読出/書込ポートの競合や、FPソース及び/又は分岐先レジスタのデータの依存関係により、選択された累積時間よりも大きくなることがある。
【0079】
実施形態の1つとして、共有機能部、第1実行キュー、第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タイプ命令に対応する第2カウント値が0になったときに、第2タイプ命令を共有機能部に発送する。
共有機能部は、第1タイプ命令と第2タイプ命令を実行する。レジスタファイルのデータの読出/書込は、第1タイプ命令と第2タイプ命令のいずれかについて、共有機能部の将来の正確な実行時間に同期するように予定されている。先行技術のような動的な競合解消、動的なデータ依存性の解消、動的な読出/書込ポートの解消は必要ない。このような動的な解消は、マイクロプロセッサの設計において最も電力を消費する。
マイクロプロセッサは、第1実行キューからの第1タイプ命令と、第2実行キューからの第2タイプ命令とを、共有機能部に相互に発送するように構成されている。第1タイプ発行部は、第1実行キューに対して第1タイプ命令を発行し、第1タイプ命令の読出時間と書込時間を予定し、第1実行キューの各エントリに記録されている第1カウント値をセットする。第2タイプ発行部は、第2実行キューに対して第2タイプ命令を発行し、第2タイプ命令の読出時間と書込時間を予定し、第2実行キューの各エントリに記録されている第2カウント値をセットする。
【0080】
実施形態の1つにおいては、第1実行キュー、第2実行キュー、共有機能部、第1タイプ発行部、及び第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タイプ命令は、相互に共有機能部に発送される。
【0081】
実施形態の1つによれば、メモリとマイクロプロセッサを含むデータ処理システムが提供される。メモリは、第1タイプ命令と第2タイプ命令をストアするように構成されている。マイクロプロセッサは、共有機能部と、第1実行キューと、第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タイプ命令に対応する第2カウント値が0になったときに、第2タイプ命令を共有機能部に発送する。
共有機能部は、第1タイプ命令と第2タイプ命令を実行し、第1実行キューからの第1タイプ命令と第2実行キューからの第2タイプ命令は相互に共有機能部に発送される。第1タイプ発行部は、第1実行キューに第1タイプ命令を発行し、第1タイプ命令の読出時間と書込時間を予定し、第1実行キューの各エントリに記録されている第1カウント値をセットする。第2タイプ発行部は、第2実行キューに対して第2タイプ命令を発行し、第2タイプ命令の読出時間と書込時間を予定し、第2実行キューの各エントリに記録されている第2カウント値をセットする。
【0082】
以上のとおり、当業者が以下の詳細な説明をよりよく理解できるように、複数の実施形態の特徴を概説した。当業者は、本明細書で紹介した実施形態と同じ目的を遂行し、及び/又は同じ効果を達成するために、他のプロセス及び構造を設計又は修正するための基礎として、本開示を容易に使用できる。また、当業者は、そのような同等の構造を本開示の精神及び範囲を逸脱することなく実現すると共に、本開示の精神及び範囲を逸脱することなく、本明細書において様々な変更、置換及び改変を行うことができる。
【産業上の利用可能性】
【0083】
本発明は、コンピュータ処理システムに適用される。
【符号の説明】
【0084】
1:データ処理システム
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:ステップ