IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 海光信息技術股分有限公司の特許一覧

特表2024-542273デコード方法、プロセッサ、チップおよび電子機器
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-13
(54)【発明の名称】デコード方法、プロセッサ、チップおよび電子機器
(51)【国際特許分類】
   G06F 9/38 20180101AFI20241106BHJP
【FI】
G06F9/38 310A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024532283
(86)(22)【出願日】2023-02-27
(85)【翻訳文提出日】2024-05-29
(86)【国際出願番号】 CN2023078435
(87)【国際公開番号】W WO2024093063
(87)【国際公開日】2024-05-10
(31)【優先権主張番号】202211350246.2
(32)【優先日】2022-10-31
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】524114858
【氏名又は名称】海光信息技術股分有限公司
【氏名又は名称原語表記】HYGON INFORMATION TECHNOLOGY CO., LTD.
【住所又は居所原語表記】Industrial Incubator 3-8,North 2-204,No.18 West Hitech Road,Huayuan Industrial District,Binhai New Area,Tianjin 300392 China
(74)【代理人】
【識別番号】100134636
【弁理士】
【氏名又は名称】金高 寿裕
(74)【代理人】
【識別番号】100114904
【弁理士】
【氏名又は名称】小磯 貴子
(72)【発明者】
【氏名】崔 澤漢
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013AA01
(57)【要約】
本開示の実施例は、デコード方法、プロセッサ、チップおよび電子機器を提供し、前記方法は、少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成することと、デコーダグループのデコードによってマイクロ命令が得られることに応答し、フェッチ要求がフェッチした命令ストリームを取得し、フェッチ要求に携帯された切替マークに応じて、デコーダグループの切り替えが行われる命令位置を決定することと、命令位置に応じて、命令ストリームを複数のデコーダグループに割り当てて並列デコードし、命令位置に対応する命令であるターゲット命令がデコードされて得られたターゲットマイクロ命令に切替マークを付すことと、マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、フェッチ要求がマイクロ命令キャッシュにおいてヒットしたのであれば、対応するマイクロ命令をマイクロ命令キャッシュから取得することと、を含む。本開示の実施例は、プロセッサのデコード性能を向上させることができる。
【選択図】図4B
【特許請求の範囲】
【請求項1】
プロセッサに適用されるデコード方法であって、
少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成することと、
デコーダグループのデコードによってマイクロ命令が得られることに応答し、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定し、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードし、前記命令位置に対応する命令であるターゲット命令がデコードされて得られたターゲットマイクロ命令に前記切替マークを付すことと、
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしたのであれば、前記フェッチ要求に対応するマイクロ命令を前記マイクロ命令キャッシュから取得することと、を含むことを特徴とする、デコード方法。
【請求項2】
前記命令位置は、前記ターゲット命令の終了位置であり、前記した、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる前記命令位置を決定することは、
前記フェッチ要求に携帯された前記切替マークが指示する前記命令位置に応じて、前記命令ストリームにおける前記ターゲット命令の終了位置を決定すること、を含むことを特徴とする、請求項1に記載のデコード方法。
【請求項3】
前記した、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードすることは、
前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードすること、を含むことを特徴とする、請求項1または2に記載のデコード方法。
【請求項4】
前記した、前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得ることは、
前記命令ストリームにおいて前記命令位置を境界として、前記命令ストリームを複数の命令グループに切り分けることであって、隣接する2つの命令グループにおいて境界となるターゲット命令を、前の命令グループにあるように切り分けること、を含み、
前記した、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードすることは、
前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てること、を含むことを特徴とする、請求項3に記載のデコード方法。
【請求項5】
デコードすべき命令を保持するために、1つのデコーダグループに対応して1つの命令キューを設定し、前記した、前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てることは、
前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持することと、
前記複数の命令グループのうちの最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定し、前記最初でない命令グループを、決定されたデコーダグループに対応する命令キューに保持することと、を含むことを特徴とする、請求項4に記載のデコード方法。
【請求項6】
前記した、前記複数の命令グループのうちの前記最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定することは、
前記複数の命令グループのうちの前記最初でない命令グループについて、前記最初でない命令グループの前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループの順序に従って、前記複数のデコーダグループから、順次に最初でない命令グループのそれぞれに割り当てられるデコーダグループを決定すること、を含むことを特徴とする、請求項5に記載のデコード方法。
【請求項7】
前記した、前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持することは、
マイクロ命令キャッシュモードから出てデコーダモードに入った後、前記複数の命令グループのうちの前記最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに割り当てることであって、前記デコーダモードは、デコーダグループのデコードによってマイクロ命令が得られ、前記マイクロ命令キャッシュモードは、前記マイクロ命令キャッシュの検索によってマイクロ命令が得られることと、
ここで、デコードモードが前記マイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、前記切替マークの指示に対応する前記命令位置が存在しなければ、前記デコードモードが続いて前記デコーダモードに切り替わった後に、前記最初の命令グループを、前記最後の命令をデコードしたデコーダグループに対応する命令キューに割り当てることと、
前記デコードモードが前記マイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、前記切替マークの指示に対応する前記命令位置が存在すれば、前記デコードモードが続いて前記デコーダモードに切り替わった後に、前記最初の命令グループを、前記最後の命令に対応する切替マークが指示するデコーダグループに対応する命令キューに割り当てることと、を含むことを特徴とする、請求項5または6に記載のデコード方法。
【請求項8】
前記プロセッサは、デコーダグループのデコードによってマイクロ命令が得られるデコーダモードと、マイクロ命令キャッシュの検索によってマイクロ命令が得られるマイクロ命令キャッシュモードとを含む、複数のデコードモードを含むことを特徴とする、請求項1から6のいずれか一項に記載のデコード方法。
【請求項9】
前記デコーダモードにおいて、前記ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることをさらに含むことを特徴とする、請求項8に記載のデコード方法。
【請求項10】
1つのデコーダグループに対応して1つのマイクロ命令キューを設定し、前記デコード方法は、
各デコーダグループがデコードして得たマイクロ命令を、対応するマイクロ命令キューに保持することをさらに含み、
前記した、前記ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることは、
前記ターゲットマイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ること、を含むことを特徴とする、請求項9に記載のデコード方法。
【請求項11】
前記した、前記ターゲットマイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることは、
デフォルトのデコーダグループに対応するマイクロ命令キューからマイクロ命令の読み出しを開始し、読み出したマイクロ命令に前記切替マークが付されていれば、マイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおけるマイクロ命令の読み出しが完了するまで、切り替えてマイクロ命令を読み出す次のマイクロ命令キューを決定すること、を含むことを特徴とする、請求項10に記載のデコード方法。
【請求項12】
前記した、読み出したマイクロ命令に切替マークが付されていれば、マイクロ命令に付された前記切替マークに応じて、切り替えてマイクロ命令を読み出す次のマイクロ命令キューを決定することは、
読み出したマイクロ命令に前記切替マークが付されていれば、マイクロ命令に付された前記切替マークに応じて、マイクロ命令キューの順序に従って、各デコーダグループのマイクロ命令キューから、マイクロ命令を読み出すマイクロ命令キューを順番に切り替えること、を含むことを特徴とする、請求項11に記載のデコード方法。
【請求項13】
前記マイクロ命令キャッシュモードにおいて、取得されたマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持することを特徴とする、請求項10に記載のデコード方法。
【請求項14】
前記マイクロ命令キャッシュモードにおいて、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしなければ、前記デコーダモードに入ることと、
前記デコーダモードにおいて、前記デコーダグループのデコードして得たマイクロ命令を前記マイクロ命令キャッシュに保持することと、をさらに含むことを特徴とする、請求項8から13のいずれか一項に記載のデコード方法。
【請求項15】
少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成するように構成される分岐予測ユニットと、
デコーダグループのデコードによってマイクロ命令が得られることに応答し、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定するように構成される命令キャッシュと、
前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードするように構成される命令割当ユニットと、
割り当てられた命令をデコードしてマイクロ命令を得るように構成されるデコーダグループであって、前記デコーダグループの数は複数個であり、ここで、前記デコーダグループは、ターゲット命令をデコードするときに、前記ターゲット命令がデコードされて得られたターゲットマイクロ命令には前記切替マークが付され、前記ターゲット命令は、前記命令位置に対応する命令であるデコーダグループと、
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしたのであれば、前記フェッチ要求に対応し前記切替マークが付されないマイクロ命令を前記マイクロ命令キャッシュから取得するように構成されるマイクロ命令キャッシュと、を含むことを特徴とする、プロセッサ。
【請求項16】
前記命令位置は、前記ターゲット命令の終了位置であり、前記命令キャッシュが、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる前記命令位置を決定することは、
前記フェッチ要求に携帯された前記切替マークが指示する前記命令位置に応じて、前記命令ストリームにおける前記ターゲット命令の終了位置を決定すること、を含むことを特徴とする、請求項15に記載のプロセッサ。
【請求項17】
前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードすることは、
前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードすること、を含むことを特徴とする、請求項15または16に記載のプロセッサ。
【請求項18】
前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得ることは、
前記命令割当ユニットが、前記命令ストリームにおいて前記命令位置を境界として、前記命令ストリームを複数の命令グループに切り分けることであって、隣接する2つの命令グループにおいて境界となるターゲット命令を、前の命令グループにあるように切り分けることと、
前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てることと、を含むことを特徴とする、請求項17に記載のプロセッサ。
【請求項19】
デコードすべき命令を保持するために、1つのデコーダグループに対応して1つの命令キューを設定し、
前記命令割当ユニットが、前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てることは、
前記命令割当ユニットが、前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持することと、
前記複数の命令グループのうちの最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定し、前記最初でない命令グループを、決定されたデコーダグループに対応する命令キューに保持することと、を含むことを特徴とする、請求項18に記載のプロセッサ。
【請求項20】
デコーダモードにおいて、ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得るように配置される融合ユニットであって、前記デコーダモードはデコーダグループのデコードによってマイクロ命令が得られる融合ユニット、をさらに含むことを特徴とする、請求項15から19のいずれか一項に記載のプロセッサ。
【請求項21】
1つのデコーダグループに対応して1つの命令キューを設定し、前記デコーダグループは、デコードして得たマイクロ命令を、対応するマイクロ命令キューに保持するようにも構成され、
前記融合ユニットが、前記ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることは、
前記ターゲットマイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ること、を含むことを特徴とする、請求項20に記載のプロセッサ。
【請求項22】
前記マイクロ命令キャッシュは、マイクロ命令キャッシュモードにおいて、取得されたマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持するようにも配置され、前記マイクロ命令キャッシュモードは、前記マイクロ命令キャッシュの検索によってマイクロ命令が得られ、
前記デコーダグループは、デコードして得たマイクロ命令を前記マイクロ命令キャッシュに保持するようにも構成され、
前記マイクロ命令キャッシュモードにおいて、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしなければ、前記デコーダモードに入ることを特徴とする、請求項21に記載のプロセッサ。
【請求項23】
請求項15から22のいずれか一項に記載のプロセッサを含むことを特徴とする、チップ。
【請求項24】
請求項23に記載のチップを含むことを特徴とする、電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2022年10月31日に出願された中国特許出願第202211350246.2号の優先権を主張しており、本出願の一部として上記中国特許出願に開示された内容をここに全文引用する。
【0002】
本開示の実施例は、デコード方法、プロセッサ、チップおよび電子機器に関する。
【背景技術】
【0003】
現代のプロセッサにおいて、命令はフェッチ、デコード、実行などの処理プロセスを経る必要があり、ここで、デコードとは、フェッチされた命令を解析して翻訳して、マイクロ命令(micro-op、Uop)を得るプロセスである。デコードはプロセッサの重要な動作であり、どのようにプロセッサのデコード性能を向上させるかは、当業者が今まで研究してきた課題である。
【発明の概要】
【課題を解決するための手段】
【0004】
このような事情に鑑み、本開示の実施例は、命令の並列デコードを実現し、フェッチ順序と一致するマイクロ命令シーケンスを得、それにより、プロセッサのデコード性能を向上させるためのデコード方法、プロセッサ、チップおよび電子機器を提供する。
【0005】
上述の目的を達成するために、本開示の実施例は、以下の技術案を提供する。
【0006】
本開示の実施例は、プロセッサに適用されるデコード方法であって、
少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成することと、
デコーダグループのデコードによってマイクロ命令が得られることに応答し、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定し、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードし、前記命令位置に対応する命令であるターゲット命令がデコードされて得られたターゲットマイクロ命令に切替マークを付すことと、
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、前記フェッチ要求がマイクロ命令キャッシュにおいてヒットしたのであれば、前記フェッチ要求に対応し切替マークが付されないマイクロ命令を前記マイクロ命令キャッシュから取得することと、を含む、デコード方法を提供する。
【0007】
本開示の実施例は、
少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成するための分岐予測ユニットと、
デコーダグループのデコードによってマイクロ命令が得られることに応答し、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定するための命令キャッシュと、
前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードするための命令割当ユニットと、
割り当てられた命令をデコードしてマイクロ命令を得るためのデコーダグループであって、前記デコーダグループの数は複数であり、ここで、デコーダグループは、ターゲット命令をデコードするときに、前記ターゲット命令がデコードされて得られたターゲットマイクロ命令には切替マークが付され、前記ターゲット命令は、前記命令位置に対応する命令であるデコーダグループと、
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、前記フェッチ要求がマイクロ命令キャッシュにおいてヒットしたのであれば、前記フェッチ要求に対応し切替マークが付されないマイクロ命令を前記マイクロ命令キャッシュから取得するためのマイクロ命令キャッシュと、を含む、プロセッサをさらに提供する。
【0008】
本開示の実施例は、上述したプロセッサを含むチップをさらに提供する。
【0009】
本開示の実施例は、上述したチップを含む電子機器をさらに提供する。
【0010】
本開示の実施例によって提供されるデコード方法は、プロセッサに適用されてもよく、少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークがフェッチ要求に携帯されてもよい。これにより、プロセッサがデコーダグループのデコードによってマイクロ命令が得られることに応答するとき、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定してもよく、さらに、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードし、前記命令位置に対応する命令であるターゲット命令がデコードされて得られたターゲットマイクロ命令に切替マークを付し、後続で前記ターゲットマイクロ命令に付された切替マークに応じて、複数のデコーダグループがデコードして得たマイクロ命令を融合し、フェッチ順序に対応するマイクロ命令を得ることができるようにする。プロセッサがマイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答するとき、前記フェッチ要求がマイクロ命令キャッシュにおいてヒットしたのであれば、本開示の実施例は、デコーダグループによって命令をデコードせず、前記フェッチ要求に対応するマイクロ命令を前記マイクロ命令キャッシュから取得してもよい。
【0011】
本開示の実施例は、マイクロ命令キャッシュとデコーダとを有するプロセッサにおいて、フェッチ要求に切替マークが携帯され、切替マークによって少なくともデコーダグループの切り替えが行われる命令位置を指示されてもよく、それにより、デコーダグループのデコードによってマイクロ命令が得られるデコーダモードにおいて、切替マークをターゲット命令とターゲットマイクロ命令を通じて透過伝送して、複数のデコーダグループの並列デコードをサポートすることを実現し、そして、デコードされたマイクロ命令を命令のフェッチ順序に従って融合することができ、デコード効率を向上させ、一方、プロセッサがマイクロ命令キャッシュの検索によってマイクロ命令が得られるマイクロ命令キャッシュモードについて、本開示の実施例は、フェッチ要求に携帯された切替マークに基づいて処理を実行しなくてもよく、それにより、プロセッサのマイクロ命令キャッシュモードと互換性がある。本開示の実施例は、デコーダモードとマイクロ命令キャッシュモードとをサポートするプロセッサにおいて、並列デコードをサポートすることを実現し、デコード性能を向上させることができる。
【図面の簡単な説明】
【0012】
本開示の実施例をより明確に説明するために、以下に実施例で使用する必要がある図面を簡単に紹介し、明らかに、以下の説明における図面は本開示の実施例にすぎず、当業者にとって創造的な労働を払うことなく、提供された図面から他の図面を得ることができる。
図1A図1Aはプロセッサのアーキテクチャブロック図である。
図1B図1Bはプロセッサの別のアーキテクチャブロック図である。
図2A図2Aは本開示の少なくとも1つの実施例により提供されるプロセッサの1つのアーキテクチャブロック図である。
図2B図2Bは本開示の少なくとも1つの実施例により提供されるデコード方法のオプションのフローチャートである。
図2C図2Cは本開示の少なくとも1つの実施例により提供されるプロセッサのさらに別のアーキテクチャブロック図である。
図3A図3Aは本開示の少なくとも1つの実施例により提供される命令ストリームの切り分けの模式図である。
図3B図3Bは本開示の少なくとも1つの実施例により提供されるマイクロ命令の融合の模式図である。
図4A図4Aはマイクロ命令キャッシュを有するプロセッサのアーキテクチャブロック図である。
図4B図4Bは本開示の少なくとも1つの実施例により提供されるプロセッサのさらに別のアーキテクチャブロック図である。
図5A図5Aは本開示の少なくとも1つの実施例により提供されるマイクロ命令キャッシュモードにおけるマイクロ命令を保持するオプションの模式図である。
図5B図5Bは本開示の少なくとも1つの実施例により提供されるマイクロ命令キャッシュモードにおけるマイクロ命令を保持する別のオプションの模式図である。
図6図6は本開示の少なくとも1つの実施例によって提供されるデコード方法の別のオプションのフローチャートである。
【発明を実施するための形態】
【0013】
以下では、本開示の実施例における添付の図面を結合し、本開示の実施例における技術案について、明確かつ完全に説明し、明らかに、説明される実施例が本開示の一部の実施例にすぎず、全ての実施例ではない。本開示における実施例に基づいて、当業者が創造的な労働を払うことなく得た他のすべての実施例は、本開示の保護の範囲に属する。
【0014】
命令とは、コンピュータが操作を実行することを制御するコマンドであり、機械命令とも呼ばれる。命令の役割は、各ハードウェアコンポーネント間の動作関係を協調することであり、コンピュータが持つ基本的な機能を反映し、コンピュータが動作する最小の機能単位である。コンピュータが何らかの操作コマンドを実行する場合、プロセッサは命令を処理し、機械が認識できる機械言語に変換する必要がある。プロセッサにおいて、一般にパイプライン(pipeline)技術を用いて命令の処理を実現している。
【0015】
プロセッサのパイプライン作業においては、命令はフェッチ(Instruction Fetch)、デコード(Instruction Decode)、実行(Execute)などの処理プロセスを経る必要がある。フェッチは、プロセッサのキャッシュまたはメインメモリからプログラムの実行に対応する命令をフェッチすることであり、デコード操作は、命令のオペコードおよび/またはアドレスコードなどを決定するために、フェッチされた命令をデコードすることであり、実行操作は、得られたオペコードおよび/またはアドレスコード等に応じて命令操作を実行し、プログラムの実行を実現することである。ここで、命令にはプログラムの流れを変える分岐命令が存在するため、分岐命令を処理する際に、プロセッサが分岐命令の実行結果を待って次のフェッチを決定することによるパイプライン遅延を解決するために、プロセッサが命令を処理するパイプラインの先頭に分岐予測ユニットをさらに設け、命令の分岐予測を実現してもよい。
【0016】
図1Aは、分岐予測ユニット101と、命令キャッシュ102と、デコーダグループ103とを含むプロセッサのアーキテクチャブロック図を例示的に示す。
【0017】
分岐予測ユニット101は、命令を分岐予測し、分岐予測結果に基づいてフェッチ要求を生成することができるデジタル回路である。分岐予測結果は、例えば、現在の命令が分岐命令であるか否か、分岐命令の分岐結果(方向、アドレス、宛先アドレス等)等である。1つの実現において、分岐予測ユニットは、分岐命令の履歴実行情報と結果とに基づいて命令の分岐予測を行い、それにより、命令のフェッチアドレス範囲を得て、フェッチ要求を生成してもよい。分岐予測ユニットが生成したフェッチ要求には、命令キャッシュ102から対応する命令を読み出すためのいくつかの命令のフェッチアドレスが含まれている。
【0018】
命令キャッシュ102には命令が格納されており、命令キャッシュ102は主に命令キャッシュブロックを介して命令の格納を行う。命令キャッシュにおいて、各命令キャッシュブロックは、命令キャッシュにおいてその命令キャッシュブロックを識別するための1つのTagタグに対応しており、それにより、命令キャッシュは、フェッチ要求に応じてフェッチを行う際に、Tagに基づいて対応する命令キャッシュブロックを見つけることができる。分岐予測ユニットが生成したフェッチアドレスは、命令ストリームを形成する複数の命令に対応することがある。オプションとして、命令キャッシュ102は、プロセッサのレベル1キャッシュ内に位置する、命令を格納するためのキャッシュ部分であってもよい。
【0019】
なお、分岐予測ユニットが生成したフェッチアドレスにはTag領域(アドレス識別領域)とIndex領域(アドレスインデックス領域)とが存在し、フェッチアドレスにおけるIndex領域によって命令キャッシュにおいて複数の命令キャッシュブロックのTagを読み出すことができ、さらに、読み出された命令キャッシュの複数の命令キャッシュブロックのTagとフェッチアドレスのTagとのマッチング判断を行い、フェッチアドレスに対応する命令の命令キャッシュにおける格納位置(すなわち命令キャッシュブロックの位置)を得て、それにより、対応する命令を読み出す。
【0020】
デコーダグループ103は、命令を解析して翻訳することができ、デコーダグループが命令をデコード操作することによって、デコード後の命令を得ることができる。デコードされた命令は、例えば制御フィールドによって形成された機械実行可能なUop(micro-op、マイクロ命令)のような、命令を翻訳して得られた機械によって実行可能な操作情報であってもよく、すなわち、デコーダは命令をデコードすることができ、それにより、マイクロ命令を得る。
【0021】
図1Aに示すプロセッサアーキテクチャは、単一のデコーダグループを使用して命令をデコードし、デコーダグループのスループットに制限され、命令のデコード効率を効果的に向上させることが困難である。これに基づいて、複数のデコーダグループを使用して命令を並列デコードするプロセッサが登場している。図1Bはプロセッサの別のアーキテクチャブロック図を例示的に示す図である。図1A図1Bとを結合して示すように、図1Bに示すプロセッサは、複数のデコーダグループ1031~103nを設け、nの具体的な数値は、プロセッサの具体的な設計に依存してもよく、本開示の実施例に制限はない。プロセッサが設けた複数のデコーダグループ1031~103nに基づいて、命令キャッシュ102がフェッチ要求に基づいてフェッチされた命令ストリームを、複数のデコーダグループに割り当ててデコードし、複数のデコーダグループに、命令を並列デコードさせて、デコードして得たマイクロ命令をそれぞれ出力させてもよく、命令のデコード効率を向上させる。
【0022】
1つの例示において、複数のデコーダグループは、例えばそれぞれデコーダグループ0とデコーダグループ1という2つのデコーダグループとしてもよい。ここで、デコーダグループ0が命令に対してデコードを実行すると同時に、デコーダグループ1も命令に対してデコードを実行してもよく、例えば、プロセッサの1クロックサイクルにおいて、デコーダグループ0とデコーダグループ1とは、同時に命令に対してデコード操作を実行してマイクロ命令を取得することができ、命令の並列デコードを実現する。それと同時に、デコーダグループ0とデコーダグループ1とは、命令の順序でデコードしなくてもよく、命令の並列デコードをサポートすることができる。なお、実際の適用において、プロセッサは、必要に応じて2つ以上のデコーダグループを設けてもよく、理解を容易にするために、本開示の実施例は、2つのデコーダグループの例示のみを示している。
【0023】
しかしながら、複数のデコーダグループが命令を並列デコードするのは、単一のデコーダグループが命令を順次デコードするのと異なり、複数のデコーダグループが命令の並列デコードを行うには、より複雑な状況に直面する必要があり、例えば、命令キャッシュのフェッチした命令ストリームをどのように複数のデコーダグループに割り当て、複数のデコーダグループがデコードして得たマイクロ命令をどのように融合し、それにより、最終的に実行されるマイクロ命令を命令のフェッチ順序に対応させるようにする。上記の課題を解決するために、本開示の実施例は、さらに改善されたプロセッサアーキテクチャを提供し、図2Aは、本開示の少なくとも1つの実施例により提供されるプロセッサのアーキテクチャブロック図を例示的に示す。図1B図2Aに示すように、図2Aに示すプロセッサには、命令キャッシュ102がフェッチした命令ストリームを切り分け、それにより、デコーダグループに割り当てられて並列デコードされる複数の命令グループを得るための命令割当ユニット201がさらに設けられており、同時に、命令ストリームの切り分けに根拠を持たせるために、本開示の実施例は、少なくともデコーダグループの切り替えが行われる命令位置を指示することができる切替マークがフェッチ要求に携帯されており、それにより、切替マークを、命令キャッシュがフェッチ要求に応じて命令ストリームをフェッチするプロセスに透過伝送することによって、命令割当ユニット201に、デコーダグループの切り替えが行われる命令位置に応じて命令ストリームを切り分けさせ、命令ストリームの切り分けられた複数の命令グループを複数のデコーダグループに割り当てて並列デコードさせることができ、複数のデコーダグループにおける命令の並列デコードを技術的にサポートする。さらに、切替マークは、前記命令位置に対応する命令を通じてマイクロ命令に透過伝送されてもよく、それにより、各デコーダグループがデコードしてマイクロ命令を得た後、マイクロ命令における切替マークに基づいてマイクロ命令の融合を行うことができ、マイクロ命令の融合結果をフェッチ順序に対応付けることができることを技術的にサポートする。
【0024】
オプションの実現として、図2Bは、本開示の少なくとも1つの実施例により提供されるデコード方法のオプションのフローチャートを例示的に示す。このデコード方法は、プロセッサがデコーダグループを用いてデコードする場合の方法の流れであり、すなわちデコーダグループのデコードによってマイクロ命令が得られる方法の流れであると考えてもよい。図2Bを参照すると、この方法の流れは、以下のステップを含んでもよい。
【0025】
ステップS21において、少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成する。
【0026】
いくつかの実施例において、分岐予測ユニットが生成したフェッチ要求には、携帯可能な切替マークが含まれてもよい。分岐予測ユニットが分岐予測を行うとき、分岐予測方向は主にジャンプする分岐命令とジャンプしない分岐命令との2種類に分けられ、それに応じて、分岐予測ユニットが生成したフェッチアドレスは、ジャンプする分岐予測方向に対応するフェッチアドレスと、ジャンプしない分岐予測方向に対応するフェッチアドレスとの2種類に分けられてもよい。オプションの実現として、本開示の実施例は、ジャンプする分岐予測方向に対応するアドレス位置に応じて切替マークを設け、少なくとも1つの切替マークが携帯されたフェッチ要求を生成してもよい。
【0027】
いくつかの実施例において、切替マークは、分岐予測ユニットによって分岐予測状況に基づいてフェッチ要求に切替マークが設けられることに限定されるものではなく、他のメカニズムによって設けられてもよい。オプションの実現として、分岐予測ユニットがフェッチ要求を生成した後(切替マークが携帯されず)、本開示の実施例は、プロセッサにおける他のデバイス(例えば命令キャッシュ)を利用して、フェッチ要求に切替マークを設けてもよい。1つの実現例において、命令キャッシュは、分岐予測ユニットのフェッチ要求を取得した後、命令の終了位置を表すことができる命令境界に基づいてフェッチ要求に切替マークを設けてもよい。
【0028】
ステップS22において、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定する。
【0029】
命令キャッシュは、分岐予測ユニットのフェッチ要求を取得し、前記フェッチ要求におけるフェッチアドレスに応じて命令をフェッチし、それにより、フェッチ要求に対応する命令ストリームを得る。前記フェッチ要求に切替マークが携帯されているとともに、前記切替マークが少なくともデコーダグループの切り替えが行われる命令位置を指示するのであれば、フェッチ要求に携帯された切替マークに応じて、命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定してもよい。
【0030】
命令ストリームは、いくつかの命令が含まれる命令シーケンスのセットであり、命令シーケンスに明確な境界が存在しなければ、命令シーケンスにおける命令の終了位置を決定することはできないことが理解されるであろう。本開示の実施例において、フェッチ要求に携帯された切替マークに応じて命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定することによって、命令ストリームの境界を決定することができれば、前記命令位置は終了位置としてもよい。前記命令位置に対応する命令をターゲット命令とすれば、前記命令位置がターゲット命令の終了位置となり、それにより、フェッチ要求に携帯された切替マークが指示する命令位置に応じて、命令ストリームにおけるターゲット命令の終了位置を決定することができる。
【0031】
なお、切替マークは、少なくともデコーダグループの切り替えが行われる命令位置を指示するために使用されるので、フェッチ要求におけるその設定位置は、命令キャッシュがフェッチする命令ストリームに影響を及ぼさず、フェッチされた命令ストリームの構造を破壊することもない。そして、本開示の実施例において、切替マークの具体的な設定位置および表現形式に対して限定されず、例えば、命令キャッシュがフェッチした命令ストリームの外に存在する指示領域であってもよく、または、切替マーク指示ビットによって表されてもよい。
【0032】
ステップS23において、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードして、前記命令位置に対応する命令であるターゲット命令がデコードされて得られたターゲットマイクロ命令に切替マークを付す。
【0033】
いくつかの実施例において、命令キャッシュがフェッチした命令ストリームに基づいて、命令割当ユニットは、命令位置(すなわちデコーダグループの切り替えが行われる命令位置)に応じて、命令ストリームを複数のデコーダグループに割り当てて並列デコードしてもよい。1つのオプションの例示において、命令割当ユニットは、前記命令位置に応じて命令ストリームを切り分けて複数の命令グループを得、さらに、前記複数の命令グループを複数のデコーダグループに割り当て、複数のデコーダグループによって並列デコードされてもよい。
【0034】
さらに、いくつかの実施例において、命令割当ユニットが前記命令位置に応じて命令ストリームを切り分けることは、命令ストリームにおいて前記命令位置を境界として、命令ストリームを複数の命令グループに切り分けることであってもよく、ここで、隣接する2つの命令グループにおいて境界となるターゲット命令を、前の命令グループにあるように切り分ける。それにより、命令ストリームを複数のデコーダグループに割り当てて並列デコードする際に、命令割当ユニットは、前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当ててもよく、ここで、ターゲット命令に対応する切替マークは、ターゲット命令の終了位置を指示することに対応する切替マークであってもよい。
【0035】
なお、複数のデコーダグループが割り当てられた命令グループに対してデコード操作を実行してマイクロ命令を得た後、複数のデコーダグループがデコードしたマイクロ命令をフェッチ順序に従って融合することを可能にするために、本開示の実施例は、命令位置に対応するターゲット命令を解析して翻訳することによって、ターゲット命令がデコードされて得られたターゲットマイクロ命令に切替マークを付してもよい。1つのオプションの実現として、ターゲット命令がデコードされて得られたターゲットマイクロ命令は、2つのマイクロ命令の組み合わせであってもよく、ここでの1つは、切替マークが付されないマイクロ命令であり、もう1つは、切替マークが付されたマイクロ命令である。
【0036】
いくつかの実施例において、本開示の実施例は、複数のデコーダグループがデコードしたマイクロ命令を得た後、ターゲットマイクロ命令に付された切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得てもよい。プログラムに対する完全な操作を実現するために、複数のデコーダグループがデコードして得たマイクロ命令を融合する必要があり、そして、マイクロ命令を融合して得たマイクロ命令シーケンスの順序もフェッチ順序に対応する必要があることが理解されるであろう。
【0037】
本開示の実施例は、フェッチ要求に切替マークが携帯された場合、前記切替マークは、少なくともデコーダグループの切り替えが行われる命令位置を指示する。それにより、フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された切替マークに応じて前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定し、さらに、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードし、前記命令位置に対応する命令であるターゲット命令がデコードされて得られたターゲットマイクロ命令に切替マークを付してもよい。本開示の実施例は、切替マークによって、デコーダグループの切り替えが行われる命令位置を指示し、フェッチ要求によって切替マークをフェッチされた命令ストリームにおける命令位置に透過伝送してもよく、それにより、フェッチされた命令ストリームを当該命令位置に基づいて切り分け、複数のデコーダグループに割り当てて並列デコードすることを実現し、プロセッサのデコード効率を効果的に向上させる。さらに、本開示の実施例は、境界となるターゲット命令を解析して翻訳することによって、切替マークをターゲットマイクロ命令に透過伝送してもよく、複数のデコーダグループがデコードしたマイクロ命令を得た後、マイクロ命令の正確な実行を容易にするために、切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合し、フェッチ順序に対応するマイクロ命令を得てもよい。
【0038】
いくつかの実施例において、図2Cは、本開示の少なくとも1つの実施例により提供されるプロセッサのさらに別のアーキテクチャブロック図を示す。図2A図2Cを結合して示すように、図2Cに示すプロセッサにおいて、各デコーダグループには、対応する命令キューおよびマイクロ命令キューが設けられ、例えば、デコーダグループ1031~103nには、それぞれ命令キュー2021~202nおよびマイクロ命令キュー2031~203nが設けられ、1つのデコーダグループは、1つの命令キューおよび1つのマイクロ命令キューに対応する。ここで、デコーダグループの命令キューは、命令割当ユニットがデコーダグループに割り当てる命令グループを保持するためのものであり、すなわち、命令キューはデコーダグループがデコードすべき命令を保持してもよく、例えば、命令キュー2021はデコーダグループ1031がデコードすべき命令を保持し、同様に、命令キュー202nはデコーダグループ103nがデコードすべき命令を保持し、ここで、複数のデコーダグループの並列デコードを実現する際に、各デコーダグループの命令キューのデコードすべき命令を保持する速度が、デコーダグループのデコード速度よりも速いのを保障する限り、デコーダグループは命令キューから命令を継続的に取得してデコードすることができ、それにより、複数のデコーダグループの並列デコードを実現する。デコーダグループのマイクロ命令キューは、デコーダグループがデコードして得たマイクロ命令を保持するためのものであり、例えば、マイクロ命令キュー2031は、デコーダグループ1031がデコードして得たマイクロ命令を保持し、同様に、マイクロ命令キュー203nは、デコーダグループ103nがデコードして得たマイクロ命令を保持する。各デコーダグループがデコードして得たマイクロ命令を融合するために、プロセッサには、融合されたマイクロ命令の順序をフェッチ順序に対応付けるように、複数のマイクロ命令キューから命令を読み出して融合することができる融合ユニット204がさらに設けられる。
【0039】
図2Bに示す方法のフローの原理に基づいて、図2Cに示すプロセッサアーキテクチャは、デコードプロセスにおいて、フェッチ要求における切替マークを対応する命令によってマイクロ命令に透過伝送して、複数のデコーダグループの並列デコードを実現するとともに、マイクロ命令がフェッチ順序に従って融合されてもよく、オプションの具体的なプロセスは以下に示すようである。
【0040】
分岐予測ユニット101は、切替マークが携帯されたフェッチ要求を生成し、フェッチ要求を命令キャッシュ102に発行して、命令キャッシュ102においてフェッチ要求に応じて対応する命令ストリームを読み出す。ここで、フェッチ要求の切替マークはデコーダグループの切り替えが行われる命令位置を指示しており、フェッチアドレスが命令キャッシュにおいて命令位置に対応する命令を検索することには影響しない。
【0041】
命令キャッシュ102は、フェッチ要求のフェッチアドレスに応じて命令ストリームを読み出し、ここで、フェッチ要求に携帯された切替マークは命令キャッシュの命令のフェッチに影響を与えない。命令ストリームを読み出した後に、命令キャッシュ102は、フェッチ要求に携帯された切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定することができる。
【0042】
命令割当ユニット201は、前記命令位置に応じて命令ストリームを切り分け、複数の命令グループを得て、前記複数の命令グループをデコーダグループ1031~103nに対応する命令キュー2021~202nに割り当てる。1つのオプションの実現として、切替マークが指示する命令位置は複数であってもよく、それにより、命令ストリームにおいて決定される命令位置は複数であってもよく、命令割当ユニットが命令ストリームを切り分ける際に、命令ストリームにおいて1つの前記命令位置が認識された際に、切り分けを1回行い、命令位置に対応するターゲット命令を前の命令グループにあるように切り分けるとともに、前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当ててもよい。このようにして、前記命令位置を境界として、命令ストリームを複数の命令グループに切り分け、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードする。
【0043】
いくつかの実施例において、命令割当ユニット201は、デコーダグループに対応して設定されたデコードすべき命令を保持するための命令キューに基づいて、複数の命令グループのうちの最初の命令グループをデフォルトのデコーダグループに対応する命令キューに保持してもよいが、複数の命令グループのうちの最初でない命令グループについては、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定し、さらにこの最初でない命令グループを決定されたデコーダグループに対応する命令キューに保持してもよい。
【0044】
複数の命令グループのうちの最初でない命令グループに対してデコーダグループを割り当てるオプションの実現において、最初でない命令グループの前の命令グループにおけるターゲット命令に対応する切替マークに応じて、複数のデコーダグループの順序に従って、複数のデコーダグループから順次に最初でない命令グループのそれぞれに割り当てられるデコーダグループを決定してもよい。例えば、最初のデコーダグループ1031はデフォルトのデコーダグループであれば、命令ストリームの切り分け後の最初の命令グループをデコーダグループ1031に割り当て、その後、デコーダグループの順序に従って、最初でない命令グループのそれぞれを、デコーダグループ1031の後のデコーダグループにデコーダグループ103nまで順次に割り当てる。
【0045】
なお、命令割当ユニットが命令グループにデコーダグループを割り当てる割当原則は、デコーダグループの順序に従って割り当てることであってもよく、そして、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、次の命令グループに前の命令グループに割り当てられるデコーダグループと異なるデコーダグループを割り当てることにより、デコーダグループに対応する命令キューにおける命令グループの合理的な割り当てを実現し、複数のデコーダグループが対応する命令キューにおいてデコードすべき命令を読み出すことができることを保証し、複数のデコーダグループの並列デコードを実現する。
【0046】
なお、別のオプションの実現において、切替マークは、切り替えるデコーダグループを具体的に指示するために、切り替えるべきデコーダグループの情報をさらに含んでもよい。それにより、命令割当ユニットは、前の命令グループにおけるターゲット命令に対応する切替マークに基づいて、次の命令グループに具体的なデコーダグループを割り当てることができ、デコーダグループの順序に従わずに、命令グループにデコーダグループを割り当てることを実現する。例えば、デコーダグループ1031~103nについては、切替マークの出現順序に応じて、最初の切替マークにデコーダグループ103nの情報が記録されていれば、最初の命令グループをデフォルトのデコーダグループに割り当てた後、次の命令グループに最初の切替マークが具体的に指示するデコーダグループ103nを割り当て、デコーダグループ103nによってデコードを実行し、次の切替マークがデコーダグループ1031を具体的に指示するのであれば、次の命令グループに割り当てるデコーダグループは1031であり、デコーダグループ1031によってデコードを実行し、このようにして、命令割当ユニットは、切替マークに具体的に指示された切り替えるデコーダグループに応じて、命令グループの割り当てが完了するまで、対応するデコーダグループを命令グループに割り当てる。
【0047】
さらになお、デフォルトのデコーダグループは、順序に従って割り当てられる最初のデコーダグループであってもよく、プロセッサが指定して割り当てるデコーダグループであってもよく、本開示は、これに対して過度の制限はしない。
【0048】
続いて、図2Cを参照すると、デコーダグループ1031~103nは、デコードしたマイクロ命令をマイクロ命令キュー2031~203nに対応して保持し、ここで、デコーダグループ1031~103nは、デコードする命令がターゲット命令であれば、ターゲット命令に対応するターゲットマイクロ命令をデコードして得て、ターゲット命令において切替マークに対応する命令位置に応じて、ターゲットマイクロ命令に切替マークを付してもよい。
【0049】
融合ユニット204は、マイクロ命令キュー2031~203nにおいてマイクロ命令を読み出し、読み出したマイクロ命令を融合して、実行されることができるマイクロ命令のシーケンスを得る。融合ユニット204によってマイクロ命令キュー2031~203nにおけるマイクロ命令の融合が実現される場合、融合ユニット204は、ターゲットマイクロ命令に付された切替マークに基づいて、マイクロ命令キュー2031~203nにおいてマイクロ命令を順次に読み出して融合してもよい。例えば、融合ユニットは、マイクロ命令キューの順序に従って、マイクロ命令キュー2031においてマイクロ命令を読み出し、マイクロ命令キュー2031において切替マークが付されたターゲットマイクロ命令が読み出されると、マイクロ命令キュー2031の次のマイクロ命令キューに順番に切り替え、そのマイクロ命令キューにおいてマイクロ命令を読み出す。このマイクロ命令キューにおいて切替マークが付されたターゲットマイクロ命令が読み出されると、同様に、マイクロ命令の読み出しが完了するまで、次のマイクロ命令キューに切り替えてマイクロ命令の読み出しを継続する。
【0050】
いくつかの実施例において、融合ユニットが読み出すマイクロ命令の最初のマイクロ命令キューは、命令グループの最初に割り当てられる命令キューに対応付けてもよく(例えば、同じデコーダグループに属するマイクロ命令キューと命令キュー)、一例において、命令割当ユニットが最初の命令グループをデコーダグループ1031に対応する命令キュー2021に割り当てれば、融合ユニットは、マイクロ命令を融合する際に、融合されたマイクロ命令キューがフェッチ順序に対応付けられることをサポートするように、まずマイクロ命令キュー2031においてマイクロ命令を読み出す。
【0051】
別のいくつかの実施例において、ターゲット命令に対応する切替マークは、切り替えるデコーダグループを具体的に指示してもよければ、ターゲット命令がデコードされて得られたターゲットマイクロ命令に付された切替マークは、切り替えるマイクロ命令キューを具体的に指示してもよい。それにより、融合ユニットは、マイクロ命令を融合する際に、ターゲットマイクロ命令に付された切替マークに基づいて切り替え可能な読み出しマイクロ命令キューに基づいて、マイクロ命令キューの順序に従わない読み出しを実現する。一例において、ターゲットマイクロ命令がマイクロ命令キュー2031に存在するとともに、ターゲットマイクロ命令に付された切替マークが、切り替えるマイクロ命令キュー列203nを具体的に指示していると仮定すると、融合ユニットは、マイクロ命令キュー2031においてターゲットマイクロ命令に付された切替マークを読み出すと、マイクロ命令キュー203nに切り替えてマイクロ命令の読み出しを継続してもよく、マイクロ命令キュー203nにおいてターゲットマイクロ命令に付された切替マークの具体的に指示する切り替えるマイクロ命令キュー2031がであると読み出せば、マイクロ命令キュー2031に切り替えてマイクロ命令を読み出す。
【0052】
命令ストリームにおけるデコーダグループの切り替えが行われる命令の位置に基づいて、命令ストリームを切り分ける原理を理解しやすくするために、以下に2つのデコーダグループを例として紹介する。図3Aは命令ストリームの切り分けの模式図を例示的に示す。図3Aに示すように、命令ストリームは、命令310~31mを含み、mは、命令ストリームにおける命令の数であり、具体的には実際の状況に応じて決定されてもよく、本開示の実施例は、これに限定されるものではない。命令310~31mにおいて、切替マークが指示する、デコーダグループの切り替えが行われる命令位置は、図中破線矢印で示すようであれば、前記命令位置に対応する命令31kがターゲット命令であってもよく、そして、前記命令位置がターゲット命令31kの終了位置であってもよく、ここで、切替マークは、例えば分岐予測部によって設定されてもよい。
【0053】
図3Aに示すように、本開示の実施例は、前記命令位置を命令ストリームの切り分けの境界として、命令ストリーム310~31mを切り分けてもよい。ここで、ターゲット命令31kは命令31k+1に隣接しており、前記命令位置に応じて命令ストリームを切り分ける際に、ターゲット命令31kを前の命令グループ(すなわち命令310~命令31kを1グループとする)にあるように切り分け、命令31k+1を次の命令グループ(すなわち命令31k+1~命令31mを1グループとする)にあるように切り分け、隣接する2つの異なる命令グループを得る。切替マークが複数である場合、命令ストリームにおける命令位置は複数であり、対応するターゲット命令も複数であり、この方式に従って命令ストリームを切り分け、複数の命令グループを得てもよい。
【0054】
図3Aを参照すると、本開示の実施例は、デコーダグループ0とデコーダグループ1の順序に従って、切り分けられた最初の命令グループ(すなわち命令310~ターゲット命令31k)をデコーダグループ0に対応する命令キューに割り当て、デコーダグループ0によって命令310~ターゲット命令31kに対してデコード操作を実行してもよい。ターゲット命令31kがデコーダグループの切り替えが行われる命令位置に対応する命令であるので、ターゲット命令31k以降の命令にデコーダグループ0と異なるデコーダグループを割り当てる必要があることに基づき、命令31k+1~命令31mの命令グループをデコーダグループ1に対応する命令キューに割り当て、デコーダグループ1によって命令31k+1~命令31mに対してデコード操作を実行する。
【0055】
切替マークが付されたマイクロ命令に基づいて、マイクロ命令を融合する原理を理解しやすくするために、以下に2つのデコーダグループを例として紹介する。図3Bは、マイクロ命令の融合の模式図を例示的に示す。
【0056】
デコーダグループ0は、命令310~ターゲット命令31kの命令グループをデコードし、マイクロ命令320~ターゲットマイクロ命令32k(図示せず)を得、ここで、デコーダグループ0は、ターゲット命令31kを解析して翻訳し、得たターゲットマイクロ命令32kは、マイクロ命令32k’とマイクロ命令32k’’との組み合わせであり、マイクロ命令32k’は、切替マークが付されないマイクロ命令であり、マイクロ命令32k’’は、切替マークが付されたマイクロ命令である。デコーダグループ1は、命令31k+1~命令31mの命令グループをデコードし、マイクロ命令32k+1~マイクロ命令32mを得る。マイクロ命令320~ターゲットマイクロ命令32kはデコーダグループ0のマイクロ命令キューに格納され、マイクロ命令32k+1~マイクロ命令32mはデコーダグループ1のマイクロ命令キューに格納される。
【0057】
マイクロ命令を融合する際に、デコーダグループの順序に従って、先にデコーダグループ0のマイクロ命令キューからマイクロ命令を読み出してもよく、ターゲットマイクロ命令32kのうち切替マークが付されたマイクロ命令32k’’が読み出されると、デコーダグループ1のマイクロ命令キューに切り替えてマイクロ命令を読み出し、すなわち、現在読み出されているマイクロ命令キューから切替マークが付されたマイクロ命令が読み出されると、マイクロ命令の読み出しが完了するまで、次のマイクロ命令キューに切り替えてマイクロ命令の読み出しを行う。フェッチされた命令ストリームは、ターゲット命令において切替マークの指示に対応する命令位置に従って切り分けられ、複数のデコーダグループに割り当てられて並列デコードされるので、デコードされて得られたマイクロ命令を読み出す際に、ターゲット命令に付された切替マークに従って、複数のデコーダグループのマイクロ命令キューにおいて切り替えてマイクロ命令を読み出してもよく、読み出されたマイクロ命令をフェッチ順序に対応付けることができる。
【0058】
プロセッサが複数のデコーダグループを有する場合、フェッチ要求の切替マークによってデコーダグループの切り替えが行われる命令位置を指示して、フェッチ要求に応じて切替マークを命令ストリームにおけるターゲット命令によってデコーダグループのデコードして得たマイクロ命令に透過伝送して、複数のデコーダグループの並列デコードのサポートとマイクロ命令の逐次融合を実現し、プロセッサのデコード効率を効果的に向上させることについて以上に説明された。プロセッサの複数のデコーダグループは命令の並列デコードを実現することができるが、マイクロ命令を得るにはフェッチとデコードのプロセスを経なければならず、これにより、マイクロ命令を得るプロセスはより煩雑になり、これに基づいて、本開示の実施例は、マイクロ命令の取得速度を向上させるために、Micro-Op Cache(OC:マイクロ命令キャッシュ)を有する高性能プロセッサをさらに提供する。
【0059】
図4Aは、マイクロ命令キャッシュを有するプロセッサのアーキテクチャブロック図である。図4Aに示すように、分岐予測ユニット101は、生成したフェッチ要求をマイクロ命令キャッシュ104に発行する。ここで、マイクロ命令キャッシュ104は、マイクロ命令をキャッシュするために使用されてもよい。いくつかの実施例において、マイクロ命令キャッシュ104は、それぞれが複数のマイクロ命令を収容することができる複数のテーブルエントリを含んでもよい。分岐予測ユニット101が生成したフェッチ要求は、複数のマイクロ命令キャッシュテーブル項目に対応することがある。
【0060】
分岐予測ユニットの生成したフェッチ要求がマイクロ命令キャッシュにおいてマイクロ命令取得を行う際に、マイクロ命令キャッシュは、フェッチ要求の開始アドレスとすべてのテーブル項目の最初のマイクロ命令のアドレスとのヒット判断を行ってもよく、ヒットしたのであれば、最初のテーブルエントリにおけるマイクロ命令を得る。マイクロ命令キャッシュのテーブルエントリにおける最後のマイクロ命令の終了アドレスがフェッチ要求のアドレス範囲の終了アドレスより小さいならば、最後のマイクロ命令に対応するアドレス範囲における終了アドレスを使用して、さらにすべてのテーブルエントリの最初のマイクロ命令のアドレスとヒット判断を行う必要があり、ヒットしたのであれば、2番目のテーブルエントリにおけるマイクロ命令を得る。フェッチ要求におけるアドレス範囲の終了アドレスがテーブルエントリにおける最後のマイクロ命令の終了アドレスよりも小さくなるまで、上記プロセスを繰り返すと、フェッチ要求に基づいて、マイクロ命令キャッシュからマイクロ命令を読み出すことを実現することができる。
【0061】
いくつかの実施例において、分岐予測ユニットの生成したフェッチ要求におけるアドレスのすべてがマイクロ命令キャッシュにおいてヒットすることができるのであれば、マイクロ命令キャッシュは、対応するマイクロ命令を出力することができ、分岐予測ユニットの生成したフェッチ要求における開始アドレスがマイクロ命令キャッシュのテーブルエントリにヒットしないのであれば、マイクロ命令キャッシュは、マイクロ命令を出力することができない。
【0062】
マイクロ命令キャッシュとデコーダグループとを有するプロセッサに基づいて、プロセッサは、デコーダグループのデコードによってマイクロ命令が得られるデコーダモードと、マイクロ命令キャッシュの検索によってマイクロ命令が得られるマイクロ命令キャッシュモードとを含む、複数のデコードモードを含んでもよい。図4Bは本開示の少なくとも1つの実施例により提供されるプロセッサのさらに別のアーキテクチャブロック図を例示的に示している。
【0063】
図4Bに示すように、本開示の実施例のプロセッサは、デコーダモードとマイクロ命令キャッシュモードと互換性があり、分岐予測ユニット101の生成した切替マークが携帯されているフェッチ要求は、2つのパスによってマイクロ命令を得ることができ、この2つのパスはそれぞれ、デコーダグループのデコードによってマイクロ命令が得られるパス(デコーダモードに対応する)と、マイクロ命令キャッシュの検索によってマイクロ命令が得られるパス(マイクロ命令キャッシュモードに対応する)と、であってもよい。
【0064】
デコーダグループのデコードによってマイクロ命令が得られることに応答して、すなわちデコーダモードにおいて、分岐予測ユニット101は、切替マークが携帯されたフェッチ要求を命令キャッシュ102に発行し、命令キャッシュ102は、フェッチ要求におけるアドレスに応じて命令ストリームをフェッチし、命令割当ユニット201を介して命令ストリームにおける命令位置に応じて命令ストリームを切り分け、複数の命令グループを得て、得た複数の命令グループを複数のデコーダグループに対応する命令キュー2021~202nに割り当てる。複数のデコーダグループ1031~103nは、それぞれの対応する命令キュー2021~202nにおいてデコードすべき命令を読み出してデコード操作を実行し、マイクロ命令を得、さらに、デコードして得たマイクロ命令を対応するマイクロ命令キューに保持するとともに、マイクロ命令キャッシュ104の存在に基づいて、デコードして得たマイクロ命令をマイクロ命令キャッシュにさらにキャッシュしてもよい。
【0065】
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答して、すなわちマイクロ命令キャッシュモードにおいて、分岐予測ユニット101は、切替マークが携帯されたフェッチ要求を命令キャッシュ102に発行し、それにより、マイクロ命令キャッシュにおけるフェッチ要求のヒットに応じて、マイクロ命令キャッシュによって対応してマイクロ命令を出力することができるとともに、マイクロ命令キューの存在に基づいて、取得されたマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持することができる。
【0066】
いくつかの実施例において、フェッチ要求がマイクロ命令キャッシュにヒットしたのであれば、取得されたマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持し、ここで、デフォルトのデコーダグループに対応するマイクロ命令キューは、順序に従って決定された最初のデコーダグループに対応するマイクロ命令キューであってもよく、プロセッサの指定したデコーダグループに対応するマイクロ命令キューであってもよく、または、デコードモードがマイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令が、切替マークの指示に対応する命令位置が存在するか否かに応じて、決定されたデコーダグループに対応するマイクロ命令キューであってもよい。
【0067】
1つのオプションの実現として、プロセッサのデコードモードがデコーダモードからマイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、切替マークの指示に対応する命令位置が存在しなければ、マイクロ命令キャッシュにおいて読み出されたマイクロ命令は、デコードモードが切り替わる前に最後の命令をデコードしたデコーダグループに対応するマイクロ命令キューに保持される。図5Aは本開示の少なくとも1つの実施例においてマイクロ命令キャッシュモードに切り替わってマイクロ命令を保持するオプションの模式図であり、図5Aに示すように、デコーダモードにおいて、フェッチ要求に応じて命令キャッシュにおいて命令ストリーム(すなわち、命令510から命令51m)を読み出し、ここで、切替マークが指示する、デコーダグループの切り替えが行われる命令位置は、図中破線で示すようであれば、この命令位置に対応する命令51kはターゲット命令であるとともに、命令ストリームの終了位置にはデコーダグループの切り替えが行われる命令位置が存在せず、命令ストリームを命令位置に応じて切り分けて隣接する2つの異なる命令グループ(すなわち、命令510~命令51kおよび命令51k+1~命令51m)を得て、対応するデコーダグループを割り当て、そして、最後の命令51mをデコーダグループ1によってデコードして切替マークが付されないマイクロ命令52mを得て、対応するマイクロ命令キュー1に保持する。デコードモードがマイクロ命令キャッシュモードに切り替わった後、フェッチアドレスがマイクロ命令キャッシュにおいて検索されてヒットし、マイクロ命令(すなわちマイクロ命令530からマイクロ命令53m)が読み出されると、読み出されたマイクロ命令530からマイクロ命令53mを対応してマイクロ命令キュー1に保持する。
【0068】
別のオプションの実現として、プロセッサのデコードモードがデコーダモードからマイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、切替マークが指示する、デコーダグループの切り替えが行われる命令位置が対応して存在していれば、マイクロ命令キャッシュにおいて読み出されたマイクロ命令は、最後の命令に対応する切替マークに応じて、切替マークが指示する切り替え後のデコーダグループに対応するマイクロ命令キューに保持される。図5Bは、本開示の少なくとも1つの実施例においてマイクロ命令キャッシュモードに切り替わってマイクロ命令を保持する別のオプションの模式図であり、図5Bに示すように、デコーダモードにおいて、フェッチ要求に応じて命令キャッシュにおいて命令ストリーム(すなわち、命令510から命令51m)を読み出し、ここで、最後の命令51mに、切替マークが指示する、デコーダグループの切り替えが行われる命令位置(図中の切替マーク2が指示する命令位置)が対応して存在し、命令ストリームを切り分けてデコーダグループを割り当てた後、命令510~51kはデコーダグループ0によってデコードされ、命令51k+1~51mはデコーダグループ1によってデコードされるとともに、最後の命令51mがデコーダグループ1のデコードによって得られたマイクロ命令52m’と52m’’のうち、マイクロ命令52m’’は切替マークが付されており、デコーダグループ1がデコードして得たマイクロ命令を対応するマイクロ命令キュー1に保持する。デコードモードがマイクロ命令キャッシュモードに切り替った後、フェッチアドレスがマイクロ命令キャッシュにおいて検索されてヒットし、マイクロ命令(すなわちマイクロ命令530~マイクロ命令53m)が読み出されると、読み出されたマイクロ命令530~マイクロ命令53mを、デコードモードが切り替わる前に、最後の命令51mに対応する切替マークが指示する切替先のデコーダグループ(すなわちデコーダグループ0)に対応するマイクロ命令キュー(すなわちマイクロ命令キュー0)に保持する。
【0069】
フェッチ要求に携帯された切替マークは、少なくともデコーダグループの切り替えが行われる命令位置を指示するが、マイクロ命令キャッシュモードは、デコーダグループを介して命令をデコードしないので、マイクロ命令キャッシュは、フェッチ要求に携帯された切替マークに応答しなくてもよく、そして、読み出されたマイクロ命令にも切替マークが付されなくてもよいことが理解されるであろう。
【0070】
別のいくつかの実施例において、マイクロ命令キャッシュモードにおいて、フェッチ要求がマイクロ命令キャッシュにおいてヒットしなければ、デコーダモードに入り、デコーダモードにおける複数のデコーダグループによってフェッチ要求に対応する命令が並列デコードされてマイクロ命令が得られるとともに、デコーダモードにおいてデコードされて得られたマイクロ命令は、マイクロ命令キャッシュに保持されてもよい。ここで、デコーダモードに切り替る時に、フェッチ要求がフェッチした命令ストリームを、切替マークが指示する命令位置に応じて切り分けた後、得た複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに割り当て、前記デフォルトのコーダグループに対応する命令キューは、順序に従って決定された最初のデコーダグループに対応する命令キューであってもよく、プロセッサの指定したデコーダグループに対応する命令キューであってもよく、または、マイクロ命令キャッシュモードに入る前に、デコーダグループのデコードした最後の命令が、切替マークの指示に対応する命令位置が存在するか否かに応じて、決定された対応するデコーダグループに対応する命令キューであってもよい。
【0071】
1つのオプションの実現として、プロセッサのデコードモードがマイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、切替マークの指示に対応する命令位置が存在しなければ、マイクロ命令キャッシュモードからデコーダモードに切り替わった後に、命令ストリームを切り分けて得た複数の命令グループのうちの最初の命令グループを、マイクロ命令キャッシュモードから切り替わる前に、最後の命令をデコードしたデコーダグループに対応する命令キューに割り当てる。図5Aを続けて参照すると、プロセッサのデコードモードがマイクロ命令キャッシュモードに切り替わる前に、デコーダグループ1のデコードした最後の命令51mに、切替マークの指示に対応する命令位置が存在せず、それにより、マイクロ命令キャッシュモードに切り替わるときに、フェッチ要求におけるフェッチアドレスがマイクロ命令キャッシュにおいてヒットしなければ、デコードモードは再びデコーダグループモードに切り替わり、フェッチ要求に携帯された切替マークが指示する命令位置(図5Aの破線で示される位置)に従って、命令ストリームを切り分けて得た最初の命令グループ(すなわち、命令510から命令51k)を、デコーダグループ1に対応する命令キュー1に割り当てる。
【0072】
別のオプションの実現として、プロセッサのデコードモードがマイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、切替マークの指示に対応する命令位置が存在すれば、マイクロ命令キャッシュモードからデコーダモードに切り替わった後に、命令ストリームを切り分けて得た複数の命令グループのうちの最初の命令グループを、マイクロ命令キャッシュモードから切り替わる前に、最後の命令に対応する切替マークが指示する、切り替えが行われるデコーダグループに対応する命令キューに割り当てる。図5Bを続けて参照すると、プロセッサのデコードモードがマイクロ命令キャッシュモードに切り替わる前に、デコーダグループ1のデコードした最後の命令51mに、切替マークの指示に対応する命令位置が存在しており、それにより、マイクロ命令キャッシュモードに切り替わるときに、フェッチ要求におけるフェッチアドレスがマイクロ命令キャッシュにおいてヒットしなければ、デコードモードは再びデコーダグループモードに切り替わり、フェッチ要求に携帯された切替マークが指示する命令位置(図5Bの切替マーク2によって示される位置)に従って、命令ストリームを切り分けて得た最初の命令グループ(すなわち、命令510から命令51k)を、マイクロ命令キャッシュモードから切り替わる前に、最後の命令51mに対応する切替マークが指示する、切り替え後のデコーダグループ0に対応する命令キュー0に割り当てる。
【0073】
本開示の実施例は、マイクロ命令キャッシュとデコーダとを有するプロセッサにおいて、フェッチ要求に切替マークが携帯され、切替マークによって少なくともデコーダグループの切り替えが行われる命令位置を指示されてもよく、それにより、デコーダモード(デコーダグループのデコードによってマイクロ命令が得られることに対応する)において、切替マークは、ターゲット命令とマイクロ命令を通じて透過伝送してもよく、複数のデコーダグループの並列デコードをサポートすることを実現し、デコード効率を向上させ、一方、プロセッサのマイクロ命令キャッシュモード(マイクロ命令キャッシュの検索によってマイクロ命令が得られることに対応する)について、本開示の実施例は、フェッチ要求に携帯された切替マークに基づいて処理を実行しなくてもよく、それにより、プロセッサのマイクロ命令キャッシュモードと互換性がある。本開示の実施例は、デコーダモードとマイクロ命令キャッシュモードとをサポートするプロセッサにおいて、並列デコードをサポートすることを実現し、デコード性能を向上させることができる。すなわち、本開示の実施例は、プロセッサがマイクロ命令キャッシュモードと互換性がある場合に、デコーダモードの並列デコードをサポートし、デコード性能を向上させることができる。
【0074】
オプションの例示として、図6は本開示の実施例により提供されるデコード方法の別のオプションのフローチャートを示しており、図6に示す方法は、図4Bに示すプロセッサによって実行可能であり、ここで、以下に説明される内容は、以上に説明された内容と互いに対応して参照されることができる。図6を参照すると、この方法は、以下のステップを含んでもよい。
【0075】
ステップS60:フェッチ要求を生成する。
【0076】
オプションとして、ステップS60は分岐予測ユニットによって実行されてもよく、分岐予測ユニットは、分岐予測ジャンプ結果に応じて、デコーダグループの切り替えを行う命令位置を指示するために、フェッチ要求に切替マークを設定してもよい。
【0077】
ステップS61:現在のプロセッサがマイクロ命令キャッシュモードにあるか否かを判断し、NOであれば、ステップS62を実行し、YESであれば、ステップS69を実行する。
【0078】
ここで、前記マイクロ命令キャッシュモードは、マイクロ命令キャッシュの検索によってマイクロ命令が得られる。
【0079】
ステップS62:命令キャッシュにアクセスし、フェッチ要求に応じて命令ストリームをフェッチする。
【0080】
なお、命令がフェッチ要求に応じて読み出された命令ストリームをキャッシュするときに、フェッチ要求に携帯された切替マークは、フェッチされた命令ストリームの外に透過伝送し、切替マークが少なくともデコーダグループの切り替えが行われる命令位置を指示することに基づいて、命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定し、さらに、前記命令位置に対応するターゲット命令を決定することができる。
【0081】
ステップS63:フェッチ要求に切替マークが存在するか否かを判断する。NOであれば、ステップS64を実行し、YESであれば、ステップS65を実行する。
【0082】
ステップS64:命令ストリームをデフォルトのデコーダグループに送信し、デフォルトのデコーダグループによって命令をデコードし、得たマイクロ命令を対応するマイクロ命令キューに保持する。
【0083】
フェッチ要求に携帯された切替マークは、少なくともデコーダグループの切り替えが行われる命令位置を指示するために使用され、切替マークがフェッチ要求に存在しないときに、デコーダグループを切り替える必要がなく、デフォルトのデコーダグループによって命令ストリームをデコードし、得たマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持することが理解されるであろう。ここで、デフォルトのデコーダグループは、順序に従って割り当てられる最初のデコーダグループであってもよく、プロセッサが指定して割り当てるデコーダグループであってもよく、そして、命令の処理プロセスにおいて、それぞれのフェッチ要求に対して、デフォルトのデコーダグループは、現在切替先のデコーダグループであってもよく、本開示の実施例におけるデフォルトのデコーダグループは、ある固定されたデコーダグループとして指定されておらず、実際のニーズに応じて選択されてもよい。
【0084】
ステップS65:切替マークに応じて命令ストリームを切り分けて、ターゲット命令およびターゲット命令の前の命令をデフォルトのデコーダグループに対応する命令キューに割り当てて、最初のデコーダグループによってデコードし、得たマイクロ命令を対応するマイクロ命令キューに保持し、ここで、ターゲット命令をデコードして得たターゲットマイクロ命令に切替マークが付される。
【0085】
ステップS66:残りの命令に、切替マークに対応するターゲット命令が存在するか否かを判断し、NOであれば、ステップS67を実行し、YESであれば、ステップS68を実行する。
【0086】
ステップS67:残りの命令を、前のデコーダグループとは異なる次のデコーダグループに対応する命令キューに割り当てて、この次のデコーダグループによってデコードし、得たマイクロ命令を対応するマイクロ命令キューに保持する。
【0087】
ステップS68:ターゲット命令およびターゲット命令の前の命令を、前のデコーダグループとは異なる次のデコーダグループに対応する命令キューに割り当てて、この次のデコーダグループによってデコードし、得たマイクロ命令を対応するマイクロ命令キューに保持し、ここで、ターゲット命令をデコードして得たマイクロ命令に切替マークが付され、ステップS66に戻って実行する。
【0088】
なお、命令はデコーダグループの命令キューに割り当てられ、さらにデコーダグループによって命令キューから命令を読み出してデコードするので、命令が命令キューに割り当てられる速度が、デコーダグループのデコード速度よりも大きいときに、本開示の実施例は、命令ストリームを切り分けて複数のデコーダグループの命令キューに割り当てて、複数のデコーダグループに、命令キューに割り当てられた命令に基づいて並列デコードさせることを実現することができる。さらになお、ステップS65~S68は、本開示の実施例に係る、ターゲット命令に対応する切替マークに基づいて、命令ストリームを切り分けて、複数の命令グループを得て、複数の命令グループを複数のデコーダグループに割り当てて並列デコードする、オプションの実現方式である。
【0089】
ステップS69:マイクロ命令キャッシュにおいてマイクロ命令を取り出し、得たマイクロ命令を対応するマイクロ命令キューに保持する。
【0090】
ここで、マイクロ命令キューの選択は前述のとおりであり、ここでは割愛する。
【0091】
なお、フェッチ要求に基づいてマイクロ命令キャッシュにおいてマイクロ命令をフェッチする前提は、フェッチ要求がマイクロ命令キャッシュにおいてヒットすることであり、フェッチ要求がマイクロ命令キャッシュにおいてヒットしなければ、デコーダモードに入り、ステップS62を実行する。
【0092】
ここで、前記デコーダモードは、デコーダグループのデコードによってマイクロ命令が得られる。
【0093】
ステップS70:最初のデコーダグループに対応するマイクロ命令キューからマイクロ命令を読み出す。
【0094】
ステップS71:読み出されたマイクロ命令に切替マークが付されているか否かを判断し、YESであれば、ステップS72を実行し、NOであれば、マイクロ命令の読み出しが完了するまで、ステップS70に戻って実行する。
【0095】
ステップS72:次のデコーダグループに対応するマイクロ命令キューに切り替えてマイクロ命令を読み出し、ステップS71に戻る。
【0096】
マイクロ命令の読み出しが完了した後、本開示の実施例は、マイクロ命令をさらに実行してもよい。
【0097】
本開示の実施例は、デコーダモードとマイクロ命令キャッシュモードとをサポートするプロセッサにおいて、並列デコードをサポートすることを実現し、デコード性能を向上させることができる。
【0098】
本開示の実施例はプロセッサをさらに提供し、その構成は図4Bを参照してもよく、ここで、以下に説明される内容は、本開示の実施例を実現するためにプロセッサが提供するデコード方法、必要に応じて設定される機能モジュールと考えられてもよく、以下に説明される内容は、以上に説明された内容と相互に対応して参照してもよい。このプロセッサは、少なくとも、
少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成するための分岐予測ユニットと、
デコーダグループのデコードによってマイクロ命令が得られることに応答し、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定するための命令キャッシュと、
前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードするための命令割当ユニットと、
割り当てられた命令をデコードしてマイクロ命令を得るためのデコーダグループであって、前記デコーダグループの数は複数であり、ここで、デコーダグループは、ターゲット命令をデコードするときに、ターゲット命令をデコードして得たターゲットマイクロ命令には切替マークが付され、前記ターゲット命令は、前記命令位置に対応する命令であるデコーダグループと、
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、前記フェッチ要求がマイクロ命令キャッシュにおいてヒットしたのであれば、前記フェッチ要求に対応し切替マークが付されないマイクロ命令を前記マイクロ命令キャッシュから取得するためのマイクロ命令キャッシュと、を含む。
【0099】
オプションとして、前記命令位置は、ターゲット命令の終了位置であり、前記命令キャッシュが、前記フェッチ要求に携帯された切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定するためのステップは、
前記フェッチ要求に携帯された切替マークが指示する命令位置に応じて、前記命令ストリームにおける前記ターゲット命令の終了位置を決定すること、を含んでもよい。
【0100】
オプションとして、前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードするためのステップは、
前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードすること、を含んでもよい。
【0101】
オプションとして、前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得るステップは、
前記命令ストリームにおいて前記命令位置を境界として、前記命令ストリームを複数の命令グループに切り分けることであって、隣接する2つの命令グループにおいて境界となるターゲット命令を、前の命令グループにあるように切り分けること、を含み、
前記命令割当ユニットが、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードするステップは、
前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てること、を含む。
【0102】
オプションとして、デコードすべき命令を保持するために、1つのデコーダグループに対応して1つの命令キューを設定し、
前記命令割当ユニットが、前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てるステップは、
前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持することと、
前記複数の命令グループのうちの最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定し、この最初でない命令グループを決定されたデコーダグループに対応する命令キューに保持することと、を含む。
【0103】
オプションとして、前記命令割当ユニットが、前記複数の命令グループのうちの最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定するステップは、
前記複数の命令グループのうちの最初でない命令グループについて、最初でない命令グループの前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループの順序に従って、前記複数のデコーダグループから順次に最初でない命令グループのそれぞれに割り当てられるデコーダグループを決定すること、を含む。
【0104】
オプションとして、前記命令割当ユニットが、前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持するステップは、
マイクロ命令キャッシュモードから出てデコーダモードに入った後、前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに割り当てることであって、前記デコーダモードは、デコーダグループのデコードによってマイクロ命令が得られ、前記マイクロ命令キャッシュモードは、マイクロ命令キャッシュの検索によってマイクロ命令が得られることと、
ここで、デコードモードがマイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、切替マークの指示に対応する命令位置が存在しなければ、デコードモードが続いてデコーダモードに切り替わった後に、前記最初の命令グループを、この最後の命令をデコードしたデコーダグループに対応する命令キューに割り当てることと、
デコードモードがマイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、切替マークの指示に対応する命令位置が存在すれば、デコードモードが続いてデコーダモードに切り替わった後に、前記最初の命令グループを、この最後の命令に対応する切替マークが指示するデコーダグループに対応する命令キューに割り当てることと、を含む。
【0105】
オプションとして、前記プロセッサは、デコーダモードにおいて、前記ターゲットマイクロ命令に付された切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得るための融合ユニットをさらに含む。
【0106】
オプションとして、1つのデコーダグループに対応して1つのマイクロ命令キューを設定し、
前記デコーダグループは、デコードして得たマイクロ命令を、対応するマイクロ命令キューに保持するためにも使用され、
前記融合ユニットが、前記ターゲットマイクロ命令に付された切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得るステップは、
前記ターゲットマイクロ命令に付された切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ること、を含む。
【0107】
オプションとして、前記融合ユニットが、前記ターゲットマイクロ命令に付された切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得るステップは、
デフォルトのデコーダグループに対応するマイクロ命令キューからマイクロ命令の読み出しを開始し、読み出したマイクロ命令に切替マークが付されていれば、マイクロ命令に付された切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおけるマイクロ命令の読み出しが完了するまで、切り替えてマイクロ命令を読み出す次のマイクロ命令キューを決定すること、を含む。
【0108】
オプションとして、前記融合ユニットが、読み出したマイクロ命令に切替マークが付されていれば、マイクロ命令に付された切替マークに応じて、切り替えてマイクロ命令を読み出す次のマイクロ命令キューを決定するステップは、
読み出したマイクロ命令に切替マークが付されていれば、マイクロ命令に付された切替マークに応じて、マイクロ命令キューの順序に従って、各デコーダグループのマイクロ命令キューから、マイクロ命令を読み出すマイクロ命令キューを順番に切り替えること、を含む。
【0109】
オプションとして、マイクロ命令キャッシュは、マイクロ命令キャッシュモードにおいて、取得されたマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持するためにも使用され、
前記デコーダグループは、デコードして得たマイクロ命令をマイクロ命令キャッシュに保持するためにも使用され、
ここで、マイクロ命令キャッシュモードにおいて、前記フェッチ要求がマイクロ命令キャッシュにおいてヒットしなければ、デコーダモードに入る。
【0110】
本開示の実施例において、上述したプロセッサを含むことができるチップも提供される。
【0111】
本開示の実施例は、上記のチップを含むことができる電子機器をさらに提供する。
【0112】
本開示の複数の実施例が以上に説明されたが、各実施例によって紹介される各オプションの形態は、矛盾することなく互いに結合され、相互参照されてもよく、それにより様々な可能な実施例が拡張され、これらはすべて本開示の実施例の開示であると考えてもよい。
【0113】
本開示の実施例は上記のように開示されているが、本開示はこれに限定されるものではない。当業者であれば、本開示の精神及び範囲を逸脱することなく、様々な変更及び修正を行うことができるので、本開示の保護範囲は特許請求の範囲により限定される範囲に準ずるものとする。
図1A
図1B
図2A
図2B
図2C
図3A
図3B
図4A
図4B
図5A
図5B
図6
【手続補正書】
【提出日】2024-05-29
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
プロセッサに適用されるデコード方法であって、
少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成することと、
デコーダグループのデコードによってマイクロ命令が得られることに応答し、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定し、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードし、前記命令位置に対応する命令であるターゲット命令がデコードされて得られたターゲットマイクロ命令に前記切替マークを付すことと、
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしたのであれば、前記フェッチ要求に対応するマイクロ命令を前記マイクロ命令キャッシュから取得することと、を含むことを特徴とする、デコード方法。
【請求項2】
前記命令位置は、前記ターゲット命令の終了位置であり、前記した、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる前記命令位置を決定することは、
前記フェッチ要求に携帯された前記切替マークが指示する前記命令位置に応じて、前記命令ストリームにおける前記ターゲット命令の終了位置を決定すること、を含むことを特徴とする、請求項1に記載のデコード方法。
【請求項3】
前記した、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードすることは、
前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードすること、を含むことを特徴とする、請求項1に記載のデコード方法。
【請求項4】
前記した、前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得ることは、
前記命令ストリームにおいて前記命令位置を境界として、前記命令ストリームを複数の命令グループに切り分けることであって、隣接する2つの命令グループにおいて境界となるターゲット命令を、前の命令グループにあるように切り分けること、を含み、
前記した、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードすることは、
前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てること、を含むことを特徴とする、請求項3に記載のデコード方法。
【請求項5】
デコードすべき命令を保持するために、1つのデコーダグループに対応して1つの命令キューを設定し、前記した、前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てることは、
前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持することと、
前記複数の命令グループのうちの最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定し、前記最初でない命令グループを、決定されたデコーダグループに対応する命令キューに保持することと、を含むことを特徴とする、請求項4に記載のデコード方法。
【請求項6】
前記した、前記複数の命令グループのうちの前記最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定することは、
前記複数の命令グループのうちの前記最初でない命令グループについて、前記最初でない命令グループの前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループの順序に従って、前記複数のデコーダグループから、順次に最初でない命令グループのそれぞれに割り当てられるデコーダグループを決定すること、を含むことを特徴とする、請求項5に記載のデコード方法。
【請求項7】
前記した、前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持することは、
マイクロ命令キャッシュモードから出てデコーダモードに入った後、前記複数の命令グループのうちの前記最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに割り当てることであって、前記デコーダモードは、デコーダグループのデコードによってマイクロ命令が得られ、前記マイクロ命令キャッシュモードは、前記マイクロ命令キャッシュの検索によってマイクロ命令が得られることと、
ここで、デコードモードが前記マイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、前記切替マークの指示に対応する前記命令位置が存在しなければ、前記デコードモードが続いて前記デコーダモードに切り替わった後に、前記最初の命令グループを、前記最後の命令をデコードしたデコーダグループに対応する命令キューに割り当てることと、
前記デコードモードが前記マイクロ命令キャッシュモードに切り替わる前に、デコーダグループのデコードした最後の命令に、前記切替マークの指示に対応する前記命令位置が存在すれば、前記デコードモードが続いて前記デコーダモードに切り替わった後に、前記最初の命令グループを、前記最後の命令に対応する切替マークが指示するデコーダグループに対応する命令キューに割り当てることと、を含むことを特徴とする、請求項5に記載のデコード方法。
【請求項8】
前記プロセッサは、デコーダグループのデコードによってマイクロ命令が得られるデコーダモードと、マイクロ命令キャッシュの検索によってマイクロ命令が得られるマイクロ命令キャッシュモードとを含む、複数のデコードモードを含むことを特徴とする、請求項1に記載のデコード方法。
【請求項9】
前記デコーダモードにおいて、前記ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることをさらに含むことを特徴とする、請求項8に記載のデコード方法。
【請求項10】
1つのデコーダグループに対応して1つのマイクロ命令キューを設定し、前記デコード方法は、
各デコーダグループがデコードして得たマイクロ命令を、対応するマイクロ命令キューに保持することをさらに含み、
前記した、前記ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることは、
前記ターゲットマイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ること、を含むことを特徴とする、請求項9に記載のデコード方法。
【請求項11】
前記した、前記ターゲットマイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることは、
デフォルトのデコーダグループに対応するマイクロ命令キューからマイクロ命令の読み出しを開始し、読み出したマイクロ命令に前記切替マークが付されていれば、マイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおけるマイクロ命令の読み出しが完了するまで、切り替えてマイクロ命令を読み出す次のマイクロ命令キューを決定すること、を含むことを特徴とする、請求項10に記載のデコード方法。
【請求項12】
前記した、読み出したマイクロ命令に切替マークが付されていれば、マイクロ命令に付された前記切替マークに応じて、切り替えてマイクロ命令を読み出す次のマイクロ命令キューを決定することは、
読み出したマイクロ命令に前記切替マークが付されていれば、マイクロ命令に付された前記切替マークに応じて、マイクロ命令キューの順序に従って、各デコーダグループのマイクロ命令キューから、マイクロ命令を読み出すマイクロ命令キューを順番に切り替えること、を含むことを特徴とする、請求項11に記載のデコード方法。
【請求項13】
前記マイクロ命令キャッシュモードにおいて、取得されたマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持することを特徴とする、請求項10に記載のデコード方法。
【請求項14】
前記マイクロ命令キャッシュモードにおいて、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしなければ、前記デコーダモードに入ることと、
前記デコーダモードにおいて、前記デコーダグループのデコードして得たマイクロ命令を前記マイクロ命令キャッシュに保持することと、をさらに含むことを特徴とする、請求項8から13のいずれか一項に記載のデコード方法。
【請求項15】
少なくともデコーダグループの切り替えが行われる命令位置を指示する少なくとも1つの切替マークが携帯されたフェッチ要求を生成するように構成される分岐予測ユニットと、
デコーダグループのデコードによってマイクロ命令が得られることに応答し、前記フェッチ要求がフェッチした命令ストリームを取得し、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる命令位置を決定するように構成される命令キャッシュと、
前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードするように構成される命令割当ユニットと、
割り当てられた命令をデコードしてマイクロ命令を得るように構成されるデコーダグループであって、前記デコーダグループの数は複数個であり、ここで、前記デコーダグループは、ターゲット命令をデコードするときに、前記ターゲット命令がデコードされて得られたターゲットマイクロ命令には前記切替マークが付され、前記ターゲット命令は、前記命令位置に対応する命令であるデコーダグループと、
マイクロ命令キャッシュの検索によってマイクロ命令が得られることに応答し、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしたのであれば、前記フェッチ要求に対応し前記切替マークが付されないマイクロ命令を前記マイクロ命令キャッシュから取得するように構成されるマイクロ命令キャッシュと、を含むことを特徴とする、プロセッサ。
【請求項16】
前記命令位置は、前記ターゲット命令の終了位置であり、前記命令キャッシュが、前記フェッチ要求に携帯された前記切替マークに応じて、前記命令ストリームにおけるデコーダグループの切り替えが行われる前記命令位置を決定することは、
前記フェッチ要求に携帯された前記切替マークが指示する前記命令位置に応じて、前記命令ストリームにおける前記ターゲット命令の終了位置を決定すること、を含むことを特徴とする、請求項15に記載のプロセッサ。
【請求項17】
前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを複数のデコーダグループに割り当てて並列デコードすることは、
前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得、前記複数の命令グループを複数のデコーダグループに割り当てて並列デコードすること、を含むことを特徴とする、請求項15に記載のプロセッサ。
【請求項18】
前記命令割当ユニットが、前記命令位置に応じて、前記命令ストリームを切り分けて複数の命令グループを得ることは、
前記命令割当ユニットが、前記命令ストリームにおいて前記命令位置を境界として、前記命令ストリームを複数の命令グループに切り分けることであって、隣接する2つの命令グループにおいて境界となるターゲット命令を、前の命令グループにあるように切り分けることと、
前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てることと、を含むことを特徴とする、請求項17に記載のプロセッサ。
【請求項19】
デコードすべき命令を保持するために、1つのデコーダグループに対応して1つの命令キューを設定し、
前記命令割当ユニットが、前の命令グループにあるように切り分けられたターゲット命令に対応する切替マークに応じて、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを、次の命令グループに割り当てることは、
前記命令割当ユニットが、前記複数の命令グループのうちの最初の命令グループを、デフォルトのデコーダグループに対応する命令キューに保持することと、
前記複数の命令グループのうちの最初でない命令グループについて、前の命令グループにおけるターゲット命令に対応する切替マークに応じて、前記複数のデコーダグループから、前の命令グループに割り当てられたデコーダグループと異なるデコーダグループを決定し、前記最初でない命令グループを、決定されたデコーダグループに対応する命令キューに保持することと、を含むことを特徴とする、請求項18に記載のプロセッサ。
【請求項20】
デコーダモードにおいて、ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得るように配置される融合ユニットであって、前記デコーダモードはデコーダグループのデコードによってマイクロ命令が得られる融合ユニット、をさらに含むことを特徴とする、請求項15に記載のプロセッサ。
【請求項21】
1つのデコーダグループに対応して1つの命令キューを設定し、前記デコーダグループは、デコードして得たマイクロ命令を、対応するマイクロ命令キューに保持するようにも構成され、
前記融合ユニットが、前記ターゲットマイクロ命令に付された前記切替マークに応じて、前記複数のデコーダグループがデコードして得たマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ることは、
前記ターゲットマイクロ命令に付された前記切替マークに応じて、各デコーダグループに対応するマイクロ命令キューにおいて切り替えてマイクロ命令を融合して、フェッチ順序に対応するマイクロ命令を得ること、を含むことを特徴とする、請求項20に記載のプロセッサ。
【請求項22】
前記マイクロ命令キャッシュは、マイクロ命令キャッシュモードにおいて、取得されたマイクロ命令をデフォルトのデコーダグループに対応するマイクロ命令キューに保持するようにも配置され、前記マイクロ命令キャッシュモードは、前記マイクロ命令キャッシュの検索によってマイクロ命令が得られ、
前記デコーダグループは、デコードして得たマイクロ命令を前記マイクロ命令キャッシュに保持するようにも構成され、
前記マイクロ命令キャッシュモードにおいて、前記フェッチ要求が前記マイクロ命令キャッシュにおいてヒットしなければ、前記デコーダモードに入ることを特徴とする、請求項21に記載のプロセッサ。
【請求項23】
請求項15から22のいずれか一項に記載のプロセッサを含むことを特徴とする、チップ。
【請求項24】
請求項23に記載のチップを含むことを特徴とする、電子機器。
【国際調査報告】