JP2010257199A - プロセッサ及びプロセッサにおける命令発行の制御方法 - Google Patents

プロセッサ及びプロセッサにおける命令発行の制御方法 Download PDF

Info

Publication number
JP2010257199A
JP2010257199A JP2009106227A JP2009106227A JP2010257199A JP 2010257199 A JP2010257199 A JP 2010257199A JP 2009106227 A JP2009106227 A JP 2009106227A JP 2009106227 A JP2009106227 A JP 2009106227A JP 2010257199 A JP2010257199 A JP 2010257199A
Authority
JP
Japan
Prior art keywords
instruction
instructions
parallel
execution units
issued
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009106227A
Other languages
English (en)
Other versions
JP2010257199A5 (ja
Inventor
Hideki Matsuyama
英樹 松山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2009106227A priority Critical patent/JP2010257199A/ja
Priority to US12/765,563 priority patent/US20100274995A1/en
Publication of JP2010257199A publication Critical patent/JP2010257199A/ja
Publication of JP2010257199A5 publication Critical patent/JP2010257199A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Abstract

【課題】並列発行可否判定の必要な命令と不要な命令をプロセッサにおいて効率よく連続的に処理可能とする。
【解決手段】プロセッサ1は、実行ユニット121〜124と、命令ユニット10を含む。命令ユニット10は、命令間の依存関係に基づいた並列発行可否判定を行うべき対象命令であるか否かを、命令ストリームに含まれる命令単位で識別する。そして、命令ユニット10は、命令ストリームに含まれる第1の命令が対象命令である場合に、第1の命令とこれに引き続く少なくとも1つの命令との間での依存関係の検出結果に基づいて、命令ユニット121〜124に並列発行する命令数を調整する。さらに、命令ユニット10は、第1の命令が対象命令でない場合に、第1の命令を含む予め定められた固定数の命令からなる命令グループを、命令グループ内での依存関係の検出結果に拘わらず無条件に実行ユニット121〜124に並列発行する。
【選択図】図1

Description

本発明は、複数命令の同時実行が可能なスーパースカラ方式のプロセッサに関する。
プロセッサの命令実行性能を高めるために、パイプライン方式が採用されている。パイプライン方式では、命令の実行過程を複数のステージに分割し、各ステージを別々のハードウェアで実現する。複数のステージの各々は、別個の命令に関する処理を並列して行える。このため、パイプライン方式によれば、理論的には、1クロックサイクルで1命令を実行することが可能となる。
プロセッサの命令実行性能をさらに向上させ、1クロックサイクルで複数命令を同時に実行するためには、さらに、命令レベルでの並列処理が必要となる。1クロックサイクルでの複数命令の同時実行を可能とするプロセッサの機構として、スーパースカラ及びVLIW(Very Long Instruction Word)が知られている。
スーパースカラでは、プロセッサ自身が命令間の依存関係を検出することで並列発行可否を判別し、並列発行可能と判定された複数の命令を複数の実行ユニットに同時に発行する。ここで、実行ユニットとは、例えば、ロード/ストアユニット、整数演算ユニット、浮動小数点加算器、浮動小数点乗算器などである。
一方、VLIWでは、コンパイラが、実行コード生成時に命令間の依存関係を解析し、並列発行可能な命令組み合わせを含むVLIW命令を生成する。VLIW命令は、パケット又はスロットと呼ばれる複数の領域を有しており、各パケット(スロット)は、プロセッサ内の複数の実行ユニットのいずれかに対応付けられており、各スロットには対応する実行ユニットを制御する命令が埋め込まれる。プロセッサは、1つのVLIW命令をデコードすると、VLIW命令内に含まれるパケット(スロット)間の依存関係を考慮することなく、複数パケットの命令を同時に複数の実行ユニットに発行する。つまり、VLIWでは、並列発行可能な命令がコンパイラによって明示的に指定されるため、プロセッサ自身は、命令間の依存関係に基づいて並列発行可否を判定する必要がない。よって、VLIWでは、スーパースカラに比べて命令発行ユニットのハードウェア構成を単純化できる。
特許文献1は、VLIWモードとスーパースカラモードとの間で切り替え可能なプロセッサを開示している。VLIWモードは、プロセッサが、命令間の依存関係の検出に基づく同時発行可否の判定を行わない動作モードである。一方、スーパースカラモードでは、特許文献1のプロセッサは、命令間の依存関係を検出し、同時発行可能命令を選択して実行ユニットに発行する。
特許文献1のVLIWモードとスーパースカラモードの切り替えは、プロセッサにおける実行プログラムの切り替えに応じて行われる。例えば、VLIWモードでのアプリケーションプログラムの実行中に割り込みが発生し、スーパースカラモードで実行すべき割り込み処理用のシステムプログラムに分岐する際に動作モードが切り替えられる。
また、特許文献1に開示されたプロセッサは、マルチプログラミング(マルチプロセス)環境下での実行プログラム(実行プロセス)の切り替えに応じて動作モードの切り替えを行う。例えば、VLIWモードに対応したアプリケーションプログラムから、VLIWモードに未対応でありスーパースカラモードで実行すべきアプリケーションプログラムに実行プログラムを切り替える際に、動作モードをVLIWモードからスーパースカラモードに切り替える。
上述のように、特許文献1に開示されたプロセッサは、プログラム切り替え処理に付随して動作モードを切り替える。よって、特許文献1のプロセッサは、モード切り替えの際に、新たな命令のフェッチ、デコード及び演算ユニットへの発行を停止するとともに、モード切り替え前に既に各実行ユニットに発行済みで実行中の命令の完了を待つ。そして、特許文献1のプロセッサは、実行中の命令がなくなった後に、モード切り替え後のプログラムに対応したものとなるようにPSW(Program Status Word)更新を行い、依存関係検出ハードウェアの動作切り替えを行った後に、モード切り替え後のプログラムの命令フェッチを開始する。
特開平9−274567号公報
特許文献1に開示されたプロセッサは、実行プログラムの切り替え処理に付随して動作モードの切り替えを行うものである。このため、特許文献1のプロセッサは、モード切り替え時の命令実行停止期間が長いという問題がある。例えば、VLIWモードからスーパースカラモードへ切り替える場合、VLIWモードで発行された命令が完了するまで、スーパースカラモードで実行される命令のフェッチ、デコードは開始されない。命令実行停止期間が長いことは、命令実行性能の向上を抑制する要因となるため好ましくない。
本発明の第1の態様は、プロセッサである。当該プロセッサは、複数の実行ユニットと、命令ユニットを含む。前記命令ユニットは、命令ストリームをデコードし、前記複数の実行ユニットへの命令発行処理を行うよう構成されている。さらに、前記命令発行処理は、以下の処理(a)〜(c)を含む。
(a)命令間の依存関係に基づいた並列発行可否判定を行うべき対象命令であるか否かを、前記命令ストリームに含まれる命令単位で識別すること;
(b)前記命令ストリームに含まれる第1の命令が前記対象命令である場合、前記第1の命令とこれに引き続く少なくとも1つの命令との間での依存関係の検出結果に基づいて、前記複数の実行ユニットに並列発行する命令数を調整すること;及び
(c)前記第1の命令が前記対象命令でない場合、前記第1の命令を含む予め定められた固定数の命令からなる命令グループを、前記命令グループ内での依存関係の検出結果に拘わらず無条件に前記複数の実行ユニットに並列発行すること。
本発明の第2の態様は、プロセッサが有する複数の実行ユニットに対する命令発行の制御方法である。当該方法は、以下のステップ(a)〜(c)を含む。
(a)命令間の依存関係に基づいた並列発行可否判定を行うべき対象命令であるか否かを、命令ストリームに含まれる命令単位で識別すること;
(b)前記命令ストリームに含まれる第1の命令が前記対象命令である場合、前記第1の命令とこれに引き続く少なくとも1つの命令との間での依存関係の検出結果に基づいて、前記複数の実行ユニットに並列発行する命令数を調整すること;及び
(c)前記第1の命令が前記対象命令でない場合、前記第1の命令を含む予め定められた固定数の命令からなる命令グループを、前記命令グループ内での依存関係の検出結果に拘わらず無条件に前記複数の実行ユニットに並列発行すること。
上述した本発明の各態様によれば、命令間の依存関係に基づいた並列発行可否判定が必要な対象命令であるか否かを、プロセッサ自身が、1つのプログラム(命令ストリーム)に含まれる命令単位で識別することができる。さらに、プロセッサは、並列発行可否判定の要否の識別結果に応じて、(i)並列発行する命令数を命令間の依存関係の検出結果に基づいて調整する動作と、(ii)予め定められた固定数の命令をこれらの命令間での依存関係の検出結果に拘わらず無条件に並列発行する動作と、を切り替えることができる。
つまり、本発明の各態様によれば、プロセッサは、並列発行可否判定の必要な命令と不要な命令が混在しているプログラム(命令ストリーム)を処理することができ、特許文献1に開示されたプロセッサで必要であったプログラム切り替え処理が不要となる。
上述した本発明の各態様によれば、プログラム切り替え処理に起因する命令実行停止期間を伴うことなく、並列発行可否判定の必要な命令と不要な命令を効率よく連続的に処理でき、プロセッサの命令実行性能の低下を抑制できる。
発明の実施の形態1にかかるプロセッサの構成を示すブロック図である。 発明の実施の形態1におけるオペコードマップの一例を示す図である。 発明の実施の形態1にかかるプロセッサの命令発行動作を示す図である。 発明の実施の形態2にかかるプロセッサの構成を示すブロック図である。 発明の実施の形態2におけるオペコードマップの一例を示す図である。 発明の実施の形態2にかかるプロセッサの命令発行動作を示す図である。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
<発明の実施の形態1>
図1は、プロセッサ1の構成例を示すブロック図である。図1の例は、プロセッサ1は、命令ユニット10及び4つの実行ユニット121〜124を含む。
始めに命令ユニット10による命令発行動作の概要について説明する。命令ユニット10は、命令ストリームに含まれる命令を順次取得してデコードする。そして、命令ユニット10は、命令間の依存関係に基づく並列発行可否判定の要否を、デコードされた命令単位で識別する。以下では、並列発行可否判定が必要な命令を"通常命令"と呼び、並列発行可否判定が不要な命令を"非通常命令"と呼ぶ。本実施の形態では、"通常命令"と"非通常命令"は、異なる命令コード(オペコード)が付与されている。命令ユニット10は、命令デコードによって得られる各命令のオペコードを参照することで、"通常命令"と"非通常命令"を識別すればよい。
図2のオペコードマップは、オペコードビット数が6ビットである場合に、プロセッサ1に供給される命令ストリーム中の各命令に付与されるオペコードの具体例を示している。図2の例では、オペコードの前半部分(00H〜2FH)が"通常命令"に割り当てられ、後半部分(30H〜3FH)が"非通常命令"に割り当てられている。
命令ユニット10は、デコードした命令が"通常命令"であった場合、当該命令とこれに引き続く少なくとも1つの命令との間で依存関係を検出し、依存関係の検出結果に基づいて、当該命令と共に並列発行する命令数を調整する。なお、並列発行可否に関する命令間の依存関係は、具体的にはオペランドの依存関係である。よって、並列発行可否の依存関係は、各命令のソース・オペランドとディスティネーション・オペランドを比較することで検出すればよい。
図1の例では、命令ユニット10は、"通常命令"と判定された命令とこれに引き続く1命令の合計2命令の間で依存関係を検出する。2命令の間に依存関係が無いと判定された場合、命令ユニット10は、2命令を実行ユニット121〜124のうち2つに並列発行する。一方、2命令の間に依存関係があると判定された場合、命令ユニット10は、"通常命令"と判定された命令のみを実行ユニット121〜124のうち1つに発行する。なお、命令のアウトオブオーダ発行が許容されるアーキテクチャが採用されている場合には、3命令以上の間で並列発行可否に関する依存関係を調べるように命令ユニット10を構成してもよい。
また、命令ユニット10は、デコードした命令が"非通常命令"であった場合、当該命令とこれに引き続く3命令を含む合計4命令を、これら4命令の間での依存関係の検出結果に拘わらず無条件に、4個の実行ユニット121〜124に並列発行する。
次に、図1に示した命令ユニット10以外の各要素について順に説明する。実行制御部11は、命令ユニット10と実行ユニット121〜124の間に配置されている。実行制御部11は、命令ユニット10から発行された命令と実行ユニット121〜124で既に実行中の先行命令との間で依存関係を検出する。つまり、実行制御部11は、先行命令の結果を後続命令で使用する場合に生じる「先行命令の実行結果待ちの依存関係」を検出し、いわゆるRAW(Read After Write)ハザードを回避するために後続命令の実行を待機させる。後続命令の待機時間を短縮するため、実行ユニット121〜124の実行結果を実行制御部11に供給するバイパス回路を設け、いわゆるフォワーディングを行ってもよい。
実行ユニット121〜124は、命令に応じた処理を実行する演算器群である。実行ユニット121〜124は、例えば、ロード/ストアユニット、整数演算ユニット、浮動小数点加算器、浮動小数点乗算器などである。
レジスタファイル13は、実行ユニット121〜124への入力データ及びこれらの実行ユニットの実行結果を格納するレジスタ群を含む。
続いて以下では、図1に示した命令ユニット10に含まれる各要素について説明する。命令バッファ100は、命令キャッシュ(不図示)から順次取得される命令ストリームを格納する。本実施の形態では、命令ストリーム中の各命令は、"通常命令"及び"非通常命令"のうちいずれであるかを識別可能なオペコードを含む。
命令デコーダ101〜104は、命令バッファ100からプログラム実行順序に従って4つの命令を読み出してデコードする。命令デコーダ101及び102によってデコードされた前半の2命令は、発行制御部107に供給される。命令デコーダ103及び104は、後半の2命令をデコードする。命令デコーダ103及び104は、それぞれ実行ユニット123及び124と一対一に対応付けられており、デコードした命令が対応する実行ユニット123又は124で実行される"非通常命令"であった場合に、これら2命令を実行制御部11に供給する。一方、デコードした命令が"通常命令"である場合、またはデコードした命令が実行ユニット121及び122で実行される"非通常命令"であった場合、命令デコーダ103及び104は、後半2命令の実行制御部11への供給を抑止する。
命令種別検出部105は、デコーダ101によってデコードされた先頭命令が、"通常命令"であるか"非通常命令"であるかを判別する。検出部105による判定結果は、命令数算出部106に供給される。
命令数算出部106は、今回のクロックサイクルにおいて並列発行される命令数を算出し、算出した命令数に相当する命令を命令バッファ100から削除し、命令キャッシュ(不図示)から新たな命令のフェッチを行う。具体的に述べると、命令数算出部106は、命令種別検出部105から"通常命令"であるか"非通常命令"であるかの判定結果を受信する。また、命令数算出部106は、発行制御部107が並列発行可能と判定した命令数を受信する。これら2つの情報に基づいて、命令数算出部106は、並列発行される命令数が1命令、2命令、又は4命令のいずれであるかを決定する。つまり、命令種別検出部105が"非通常命令"を検出した場合、命令数算出部106は、発行制御部107による並列発行可否の判定結果に拘わらず、並列発行命令数が4命令であると決定する。一方、命令種別検出部105が"通常命令"を検出した場合、命令数算出部106は、発行制御部107による並列発行可否の判定結果に応じて、並列発行命令数が1命令であるか又は2命令であるかを決定する。
発行制御部107は、命令デコーダ101及び102でデコードされた2命令の依存関係を検出し、これら2命令の並列発行可否を判定する。発行制御部107は、並列発行可能と判定した場合に2命令を発行し、並列発行不可と判定した場合に1命令(デコーダ101によってデコードされた先頭命令)を発行する。なお、発行制御部107は、なるべく2命令の並列発行が可能となるように、レジスタリネーミングを行うことによって命令間の依存関係を積極的に解消してもよい。
図3は、本実施の形態にかかるプロセッサ1の動作例を示す図である。プロセッサ1は、命令ストリーム中の命令を順次デコードしてインオーダで発行する。図3に示す命令ストリームは、命令A1〜A4及び命令B1〜B8を含む。このうち、図中で右端に位置する命令A1が先に実行完了すべき命令である。また、命令A1〜A4は、並列発行可否判定の必要な"通常命令"として定義された命令であり、命令B1〜B8は、並列発行可否判定が不要な"非通常命令"として定義された命令であるとする。
始めに、命令デコーダ101〜104は、命令A1、A2、B1、及びB2を取り込んでデコードする。ここで、命令B1及びB2は、実行ユニット121及び122のいずれかで実行される命令であるとする。命令A1が"通常命令"であるため、発行制御部107は、命令A1及びA2のオペランド間の依存関係に基づいて、これら2命令の並列発行可否を判定する。図3の例では、命令A1及びA2の間に並列発行を制約する依存関係は無く、これら2命令が並列発行される(クロックサイクルC1)。一方、命令デコーダ103及び104によってデコードされる命令B1及びB2の発行は抑止される。命令B1及びB2は、実行ユニット123及び124で実行される命令ではないためである。この結果、サイクルC1では、命令A1及びA2の2命令が並列発行される。命令数算出部106は、当サイクルで発行される2命令分のバッファ領域に新たな命令をフェッチするよう命令バッファ100を制御する。
次に、命令デコーダ101〜104は、命令B1〜B4を取り込んでデコードする。ここで、命令B1〜B4は、実行ユニット121〜124でそれぞれ実行される命令であるとする。この場合、命令ユニット10は、4命令(B1〜B4)を無条件に並列発行する(クロックサイクルC2)。命令数算出部106は、当サイクルで発行される4命令分のバッファ領域に新たな命令をフェッチするよう命令バッファ100を制御する。なお、発行制御部107は、非通常命令である命令B1及びB2の依存関係を検出するよう動作してもよい。非通常命令である命令B1及びB2の依存関係はコンパイラによって既に解決されているため、発行制御部107による判定結果は常に並列発行可能となる。このため、発行制御部107による並列発行動作を停止しなくても特に問題は生じない。もちろん、命令ユニット10は、命命デコーダ101及び102でデコードされた命令が"非通常命令"であった場合に、発行制御部107による判定動作を停止又はバイパスするよう構成されてもよい。
続いて、命令デコーダ101〜104は、命令B5〜B8を取り込んでデコードする。ここで、命令B5〜B8は、実行ユニット121〜124でそれぞれ実行される命令であるとする。この場合、命令ユニット10は、4命令(B5〜B8)を無条件に並列発行する(クロックサイクルC3)。命令数算出部106は、当サイクルで発行される4命令分のバッファ領域に新たな命令をフェッチするよう命令バッファ100を制御する。
以上に述べたように、本実施の形態にかかるプロセッサ1は、命令間の依存関係に基づいた並列発行可否判定が必要な命令であるか否かを、1つのプログラム(命令ストリーム)に含まれる命令単位で識別することができる。さらに、プロセッサ1は、並列発行可否判定の要否の識別結果に応じて、(i)並列発行する命令数を命令間の依存関係の検出結果に基づいて調整する動作と、(ii)予め定められた固定数の命令をこれらの命令間での依存関係の検出結果に拘わらず無条件に並列発行する動作と、を切り替えることができる。
つまり、プロセッサ1は、並列発行可否判定の必要な命令と不要な命令が混在しているプログラム(命令ストリーム)を処理することができ、特許文献1に開示されたプロセッサで必要であったプログラム切り替え処理が不要となる。よって、プロセッサ1は、プログラム切り替え処理に起因する命令実行停止期間を伴わずに、並列発行可否判定の必要な命令と不要な命令を効率よく連続的に処理でき、命令実行性能の低下を抑制できる。
<発明の実施の形態2>
本実施の形態にかかるプロセッサ2は、各クロックサイクルでデコードされる命令グループ中の先頭命令が"通常命令"であるか"非通常命令"であるか否かに基づいて並列発行する命令数を調整する。例えば、プロセッサ2は、各クロックサイクルにおいて4命令単位でデコードを行い、このうち先頭命令(第1命令)が"非通常命令"である場合には、後続の第2〜第4命令が"通常命令"であるか"非通常命令"であるかに関わらず、4命令を無条件に発行する。つまり、プロセッサ2は、命令グループ中の1命令(具体的には先頭命令)のみの識別結果に基づいて、(i)並列発行する命令数を命令間の依存関係の検出結果に基づいて調整する動作と、(ii)予め定められた固定数の命令を無条件に並列発行する動作との切り替えを行う。
このように動作するプロセッサ2によれば、"非通常命令"が割り当てられるオペコード領域の使用効率を向上させることができる。本実施の形態におけるオペコードマップの具体例について図5を用いて説明する。図5のオペコードマップが図3のそれと異なる点は、"非通常命令"として定義されている命令数が削減されている点である。本実施の形態では、プロセッサ2によって同時にデコードされる命令グループ中の1命令のみを"非通常命令"として定義しておけばよいためである。例えば、4命令からなる命令グループのうち先頭命令の識別結果を利用する場合、先頭命令をデコードする命令デコーダ101に対応付けられた実行ユニット(例えば実行ユニット121)で実行される命令に関してのみ、"非通常命令"を定義しておけばよい。実行ユニット121がロード/ストアユニットである場合、ロード/ストア命令とNOP(No Operation)命令のみを"非通常命令"として定義しておけばよく、その他の加算命令、乗算命令などを"非通常命令"として定義しなくてもよい。
図4は、プロセッサ2の構成例を示すブロック図である。命令ユニット20は、発行抑止部208を有する。発行抑止部208は、命令デコーダ101によってデコードされた先頭命令の命令種別に応じて、命令デコーダ103及び104でデコードされた後半の2命令の発行を制御する。具体的に述べると、発行抑止部208は、先頭命令が"非通常命令"であった場合に、後半の2命令を実行制御部11へ供給する。一方、発行抑止部208は、先頭命令が"通常命令"であった場合に、後半の2命令の実行制御部11への供給を抑止する。発行抑止部208は、命令種別検出部105による命令種別検出結果に応じて動作すればよい。発行抑止部208を除く図4中の他の構成要素は図1に示したものと同様であるため、これらに関する説明をここでは省略する。
図6は、プロセッサ2の動作例を示す図である。プロセッサ2は、命令ストリーム中の命令を順次デコードしてインオーダで発行する。図6に示す命令ストリームは、命令A1〜A10及び命令B1〜B2を含む。このうち、図中で右端に位置する命令A1が先に実行完了すべき命令である。また、命令A1〜A10は、並列発行可否判定の必要な"通常命令"として定義された命令であり、命令B1〜B2は、並列発行可否判定が不要な"非通常命令"として定義された命令であるとする。
始めに、命令デコーダ101〜104は、命令A1、A2、B1、及びA3を取り込んでデコードする。このとき、命令A1が"通常命令"であるため、発行制御部107は、命令A1及びA2のオペランド間の依存関係に基づいて、これら2命令の並列発行可否を判定する。図6の例では、命令A1及びA2の間に並列発行を制約する依存関係は無く、これら2命令が並列発行される(クロックサイクルC1)。一方、命令デコーダ103及び104によってデコードされる命令B1及びA3の発行は、発行抑止部208によって抑止される。この結果、サイクルC1では、命令A1及びA2の2命令が発行される。命令数算出部106は、当サイクルで発行される2命令分のバッファ領域に新たな命令をフェッチするよう命令バッファ100を制御する。
次に、命令デコーダ101〜104は、命令B1、A3、A4、及びA5を取り込んでデコードする。この場合、先頭命令である命令B1が"非通常命令"であるため、命令ユニット10は、4命令(B1、A3、A4、及びA5)を無条件に並列発行する(クロックサイクルC2)。命令数算出部106は、当サイクルで発行される4命令分のバッファ領域に新たな命令をフェッチするよう命令バッファ100を制御する。
続いて、命令デコーダ101〜104は、命令B2、A6、A7、及びA8を取り込んでデコードする。この場合、先頭命令である命令B2が"非通常命令"であるため、命令ユニット10は、4命令(B2、A6、A7、及びA8)を無条件に並列発行する(クロックサイクルC3)。命令数算出部106は、当サイクルで発行される4命令分のバッファ領域に新たな命令をフェッチするよう命令バッファ100を制御する。
本実施の形態にかかるプロセッサ2は、プロセッサ1と同様に、プログラム切り替え処理に起因する命令実行停止期間を伴わずに、並列発行可否判定の必要な命令と不要な命令を効率よく連続的に処理でき、命令実行性能の低下を抑制できる。さらに、プロセッサ2は、"非通常命令"と"通常命令"の両方で定義しておくべき命令数を削減できるため、オペコード領域の利用効率を向上させることができる。
<その他の実施の形態>
上述した発明の実施の形態1及び2では、並列発行される最大命令数が4命令である場合について具体的に説明したが、これらの実施形態が一例に過ぎないことはもちろんである。本発明の実施の形態にかかるプロセッサは、並列発行される最大命令数が2命令以上であればよい。
また、発明の実施の形態1及び2では、並列発行可否の判定結果に基づいて並列発行命令数を調整する場合に並列発行され得る命令の最大数(具体的には2命令)が、無条件に並列発行を行う場合の命令数(具体的には4命令)より小さい場合について説明した。このような構成は、並列発行可否判定に要する処理量を考慮すると妥当な構成である。しかしながら、並列発行可否の判定結果に基づいて並列発行命令数を調整する場合に並列発行され得る命令の最大数を、無条件に並列発行を行う場合の命令数と同じにしてもよい。
また、発明の実施の形態1及び2では、インオーダ発行を行うプロセッサに関して具体的に説明したが、本発明はアウトオブオーダ発行を行うプロセッサにも適用可能である。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
1、2 プロセッサ
10 命令ユニット
11 実行制御部
13 レジスタファイル
100 命令バッファ
101〜104 命令デコーダ
105 命令種別検出部
106 命令数算出部
107 発行制御部
121〜124 実行ユニット
208 発行抑止部

Claims (14)

  1. 複数の実行ユニットと、
    命令ストリームをデコードし、前記複数の実行ユニットへの命令発行処理を行うよう構成された命令ユニットと、
    を備え、
    前記命令発行処理は、
    (a)命令間の依存関係に基づいた並列発行可否判定を行うべき対象命令であるか否かを、前記命令ストリームに含まれる命令単位で識別すること;
    (b)前記命令ストリームに含まれる第1の命令が前記対象命令である場合、前記第1の命令とこれに引き続く少なくとも1つの命令との間での依存関係の検出結果に基づいて、前記複数の実行ユニットに並列発行する命令数を調整すること;及び
    (c)前記第1の命令が前記対象命令でない場合、前記第1の命令を含む予め定められた固定数の命令からなる命令グループを、前記命令グループ内での依存関係の検出結果に拘わらず無条件に前記複数の実行ユニットに並列発行すること、
    を含む、プロセッサ。
  2. 前記固定数はN(Nは2以上の整数)であり、前記処理(b)で並列発行される命令の最大数はM(MはNより小さい正の整数)個である、請求項1に記載のプロセッサ。
  3. 前記命令ストリームに含まれるN個の命令をクロックサイクル内で並行してデコードするデコード部と、
    前記デコード部によってデコードされるN個の命令のうちの先頭命令が前記対象命令であるか否かを識別する命令種別識別部と、
    前記先頭命令を含むM個の命令に対する並列発行可否判定を行うことにより、前記複数の実行ユニットに並列発行する命令数を調整する発行制御部と、
    前記先頭命令が前記対象命令である場合に、前記デコード部によってデコードされるN個の命令のうち、前記M個の命令を除く他の(N−M)個の命令の前記複数の実行ユニットへの発行を抑止する発行抑止部と、
    を備える、請求項2に記載のプロセッサ。
  4. 前記処理(c)を行う際に、前記命令ユニットは、前記第1の命令を除く前記命令グループ内の命令が前記対象命令であるか否かに拘わらず、前記命令グループを前記複数の実行ユニットに並列発行する、請求項1〜3のいずれか1項に記載のプロセッサ。
  5. 前記命令グループの先頭に位置する命令は、前記対象命令でないことを示す命令コードを含み、
    前記命令グループの先頭を除く前記命令グループ内の命令の少なくとも一部は、前記対象命令であることを示す命令コードを含む、請求項1〜4のいずれか1項に記載のプロセッサ。
  6. 前記先頭命令が前記対象命令でない場合、前記発行抑止部は、前記(N−M)個の命令に前記対象命令が含まれるか否かに拘わらず、前記(N−M)個の命令を前記複数の実行ユニットに並列発行する、請求項3に記載のプロセッサ。
  7. 前記命令ユニットと前記複数の実行ユニットの間に配置され、前記命令ユニットから発行された命令と前記複数の実行ユニットで既に実行中の先行命令との間で依存関係を検出し、前記命令ユニットから発行された命令のうち前記先行命令との間で依存関係がある命令の実行を待機させるよう構成された実行制御部をさらに備える、請求項1〜6のいずれか1項に記載のプロセッサ。
  8. プロセッサが有する複数の実行ユニットに対する命令発行の制御方法であって、
    (a)命令間の依存関係に基づいた並列発行可否判定を行うべき対象命令であるか否かを、命令ストリームに含まれる命令単位で識別すること;
    (b)前記命令ストリームに含まれる第1の命令が前記対象命令である場合、前記第1の命令とこれに引き続く少なくとも1つの命令との間での依存関係の検出結果に基づいて、前記複数の実行ユニットに並列発行する命令数を調整すること;及び
    (c)前記第1の命令が前記対象命令でない場合、前記第1の命令を含む予め定められた固定数の命令からなる命令グループを、前記命令グループ内での依存関係の検出結果に拘わらず無条件に前記複数の実行ユニットに並列発行すること、
    を含む、制御方法。
  9. 前記固定数はN(Nは2以上の整数)であり、前記ステップ(b)で並列発行される命令の最大数はM(MはNより小さい正の整数)個である、請求項8に記載の方法。
  10. 前記ステップ(b)は、
    前記命令ストリームに含まれるN個の命令のうちの先頭命令が前記対象命令であるか否かを識別すること;
    前記先頭命令を含むM個の命令に対する並列発行可否判定を行うことにより、前記複数の実行ユニットに並列発行する命令数を調整すること;及び
    前記先頭命令が前記対象命令である場合に、前記N個の命令のうち、前記M個の命令を除く他の(N−M)個の命令の前記複数の実行ユニットへの発行を抑止すること、
    を含む、請求項9に記載の方法。
  11. 前記ステップ(c)では、前記第1の命令を除く前記命令グループ内の命令が前記対象命令であるか否かに拘わらず、前記命令グループが前記複数の実行ユニットに並列発行される、請求項8〜10のいずれか1項に記載の方法。
  12. 前記命令グループの先頭に位置する命令は、前記対象命令でないことを示す命令コードを含み、
    前記命令グループの先頭を除く前記命令グループ内の命令の少なくとも一部は、前記対象命令であることを示す命令コードを含む、請求項8〜11のいずれか1項に記載の方法。
  13. 前記ステップ(c)は、
    前記先頭命令が前記対象命令でない場合に、前記(N−M)個の命令に前記対象命令が含まれるか否かに拘わらず、前記(N−M)個の命令を前記複数の実行ユニットに並列発行すること、
    を含む、請求項10に記載の方法。
  14. (d)前記命令ユニットから発行された命令と前記複数の実行ユニットで既に実行中の先行命令との間で依存関係を検出し、前記命令ユニットから発行された命令のうち前記先行命令との間で依存関係がある命令の実行を待機させること、
    をさらに含む、請求項8〜13のいずれか1項に記載の方法。
JP2009106227A 2009-04-24 2009-04-24 プロセッサ及びプロセッサにおける命令発行の制御方法 Pending JP2010257199A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009106227A JP2010257199A (ja) 2009-04-24 2009-04-24 プロセッサ及びプロセッサにおける命令発行の制御方法
US12/765,563 US20100274995A1 (en) 2009-04-24 2010-04-22 Processor and method of controlling instruction issue in processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009106227A JP2010257199A (ja) 2009-04-24 2009-04-24 プロセッサ及びプロセッサにおける命令発行の制御方法

Publications (2)

Publication Number Publication Date
JP2010257199A true JP2010257199A (ja) 2010-11-11
JP2010257199A5 JP2010257199A5 (ja) 2012-04-26

Family

ID=42993150

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009106227A Pending JP2010257199A (ja) 2009-04-24 2009-04-24 プロセッサ及びプロセッサにおける命令発行の制御方法

Country Status (2)

Country Link
US (1) US20100274995A1 (ja)
JP (1) JP2010257199A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983790B2 (en) 2018-04-17 2021-04-20 Fujitsu Limited Arithmetic processing unit and control method for arithmetic processing unit

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9733940B2 (en) * 2014-11-17 2017-08-15 International Business Machines Corporation Techniques for instruction group formation for decode-time instruction optimization based on feedback
US11314516B2 (en) * 2018-01-19 2022-04-26 Marvell Asia Pte, Ltd. Issuing instructions based on resource conflict constraints in microprocessor

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0553805A (ja) * 1991-08-29 1993-03-05 Toshiba Corp 電子計算機
JPH05257687A (ja) * 1992-01-06 1993-10-08 Hitachi Ltd 並列演算機能を有する計算機
JPH07110769A (ja) * 1993-10-13 1995-04-25 Oki Electric Ind Co Ltd Vliw型計算機
JP2000330790A (ja) * 1999-05-03 2000-11-30 Stmicroelectronics Sa コンピュータシステム動作方法、コンピュータシステムにおける命令スケジューリング方法およびコンピュータシステム
JP2000353091A (ja) * 1999-05-03 2000-12-19 Stmicroelectronics Sa コンピュータシステムにおける命令実行方法およびコンピュータシステム
US20060224862A1 (en) * 2005-03-29 2006-10-05 Muhammad Ahmed Mixed superscalar and VLIW instruction issuing and processing method and system
JP2009289142A (ja) * 2008-05-30 2009-12-10 Hiroshima Ichi 能力可変細粒度並列プロセッサ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
DE69430018T2 (de) * 1993-11-05 2002-11-21 Intergraph Corp Befehlscachespeicher mit assoziativem Kreuzschienenschalter
JP3730455B2 (ja) * 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0553805A (ja) * 1991-08-29 1993-03-05 Toshiba Corp 電子計算機
JPH05257687A (ja) * 1992-01-06 1993-10-08 Hitachi Ltd 並列演算機能を有する計算機
JPH07110769A (ja) * 1993-10-13 1995-04-25 Oki Electric Ind Co Ltd Vliw型計算機
JP2000330790A (ja) * 1999-05-03 2000-11-30 Stmicroelectronics Sa コンピュータシステム動作方法、コンピュータシステムにおける命令スケジューリング方法およびコンピュータシステム
JP2000353091A (ja) * 1999-05-03 2000-12-19 Stmicroelectronics Sa コンピュータシステムにおける命令実行方法およびコンピュータシステム
US20060224862A1 (en) * 2005-03-29 2006-10-05 Muhammad Ahmed Mixed superscalar and VLIW instruction issuing and processing method and system
JP2009289142A (ja) * 2008-05-30 2009-12-10 Hiroshima Ichi 能力可変細粒度並列プロセッサ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983790B2 (en) 2018-04-17 2021-04-20 Fujitsu Limited Arithmetic processing unit and control method for arithmetic processing unit
US11231926B2 (en) 2018-04-17 2022-01-25 Fujitsu Limited Arithmetic processing unit and control method for arithmetic processing unit

Also Published As

Publication number Publication date
US20100274995A1 (en) 2010-10-28

Similar Documents

Publication Publication Date Title
EP3103302B1 (en) Method and apparatus for enabling a processor to generate pipeline control signals
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US7412591B2 (en) Apparatus and method for switchable conditional execution in a VLIW processor
US7707390B2 (en) Instruction issue control within a multi-threaded in-order superscalar processor
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
US9081564B2 (en) Converting scalar operation to specific type of vector operation using modifier instruction
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
US20170123798A1 (en) Hardware-based run-time mitigation of blocks having multiple conditional branches
KR20150105199A (ko) 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법
CN108920190B (zh) 用于确定从其恢复指令执行的恢复点的装置和方法
JP2003058366A (ja) 分岐予測なしで分岐ペナルティを減少させる新規なフェッチ分岐アーキテクチャ
JP2009070378A (ja) アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
US20220035635A1 (en) Processor with multiple execution pipelines
JP2010257199A (ja) プロセッサ及びプロセッサにおける命令発行の制御方法
US7143270B1 (en) System and method for adding an instruction to an instruction set architecture
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
KR20180126518A (ko) 벡터 명령 처리
JP5573038B2 (ja) マルチスレッドプロセッサ及びプログラム
JP3795449B2 (ja) 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ
JP5598114B2 (ja) 演算ユニット
JP2000099328A (ja) プロセッサ及びその実行制御方法
Far Out-of-order Superscalar
WO2017072615A1 (en) Hardware-based run-time mitigation of conditional branches

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120312

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131210