JP3795449B2 - 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ - Google Patents
制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ Download PDFInfo
- Publication number
- JP3795449B2 JP3795449B2 JP2002335916A JP2002335916A JP3795449B2 JP 3795449 B2 JP3795449 B2 JP 3795449B2 JP 2002335916 A JP2002335916 A JP 2002335916A JP 2002335916 A JP2002335916 A JP 2002335916A JP 3795449 B2 JP3795449 B2 JP 3795449B2
- Authority
- JP
- Japan
- Prior art keywords
- control flow
- instruction
- code
- flow code
- execution
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、低消費電力あるいは高速なプロセッサを構築するための命令セット形式、及びプロセッサを構築するための方式(プロセッサアーキテクチャ)に関するものであり、特に、制御フローコードの分離による高性能プロセッサの実現方法及びそれを用いたマイクロプロセッサに関するものである。
【0002】
【従来の技術】
従来、高性能な汎用プロセッサはスーパースカラ方式を利用して実現されてきた。この方式では、多数の命令パイプラインをプロセッサのチップ上に実装し、同時に複数の命令をフェッチして実行することにより、命令レベル並列性の向上を狙っていた。しかしながら、このスーパースカラ方式の命令の流れは、1本の連続した流れとして処理されており、分岐命令と分岐条件を計算するための命令を明示的に分離して複数の命令流として処理するという概念は利用されていなかった。
【0003】
下記特許文献1や非特許文献1において、分岐命令に対応するフェッチ命令と呼ばれる命令のみを異なるパイプラインで処理するフェッチ分岐方式が検討されている。しかし、この方式でも、分岐条件を計算するための命令を分岐することに関しては検討されていない。
【0004】
【特許文献1】
特開平10−63501号公報 第3−4頁 図1
【0005】
【非特許文献1】
情報処理学会論文誌 Vol.39 No.8 1998年8月 pp.2509−2518「命令フェッチをプログラム制御するプロセッサ・アーキテクチャ」
【0006】
【発明が解決しようとする課題】
上記したように、従来、汎用プロセッサの速度向上手法として命令レベル並列性の利用が検討されてきたが、分岐命令の存在により十分な命令をプロセッサの実行機構に供給できないことが並列性の抽出を妨げる原因の一つとなっていた。
【0007】
この問題を緩和するために、分岐予測を用いて制御の流れを予測しながら投機的に命令を供給してきたが、一定の割合で発生する予測ミスが性能向上の足枷となっていた。
【0008】
また、分岐予測を用いて投機的に処理する命令を増やすに従い、予測ミスが起こった際に無駄となる処理の量が多くなり、このことがプロセッサの消費電力を増加させていた。
【0009】
本発明は、上記状況に鑑みて、分岐予測ミスのペナルティを緩和し、無駄となる処理の量を低減してプロセッサの消費電力の低減と高速化を図ることができる制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサを提供することを目的とする。
【0010】
【課題を解決するための手段】
本発明は、上記目的を達成するために、
〔1〕制御フローコードの分離によるプロセッサの実現方法において、フェッチされた命令のオペランドが第1のレジスタセットを使用することを示している制御フローコードか否かを検出するステアリングステップと、前記ステアリングステップで検出された前記制御フローコードを前記第1のレジスタセットを用いて実行し、前記ステアリングステップで検出された前記制御フローコード以外の命令を第2のレジスタセットを用いて前記制御フローコードの実行よりも多いステージ数のパイプラインにより実行する実行ステップと、前記制御フローコードの実行により得られた結果に基づいて前記フェッチを行う命令フェッチステップとを含むことを特徴とする。
【0011】
〔2〕上記〔1〕記載の制御フローコードの分離によるプロセッサの実現方法であって、前記実行ステップにおいて、前記制御フローコードを第1の命令キューに格納し、前記制御フローコード以外の命令を第2の命令キューに格納し、前記第1の命令キューから取り出された前記制御フローコードをインオーダで実行し、前記第2の命令キューから取り出された前記制御フローコード以外の命令をアウトオブオーダで実行することを特徴とする。
【0012】
〔3〕制御フローコードの分離によるマイクロプロセッサであって、フェッチ手段からフェッチされた命令のオペランドが第1のレジスタセットを使用することを示している制御フローコードか否かを判断し、前記制御フローコードであれば第1の実行手段に送り、前記制御フローコード以外の命令であれば第2の実行手段に送るステアリング手段と、前記第1のレジスタセットに接続された前記第1の実行手段であって、前記ステアリング手 段から出力された前記制御フローコードを受け取り、前記第1のレジスタセットを用いて処理を行い、前記フェッチ手段に処理結果を出力する前記第1の実行手段と、第2のレジスタセットに接続された前記第2の実行手段であって、前記ステアリング手段から出力された前記制御フローコード以外の命令を受け取り、前記第2のレジスタセットを用いて処理を前記第1の実行手段よりも多いステージ数のパイプラインにより実行する前記第2の実行手段とを備えたことを特徴とする。
【0013】
【発明の実施の形態】
以下、本発明の実施の形態について詳細に説明する。
【0014】
まず、制御フローコードを分離するための命令セット形式について説明する。
【0015】
ここでは、分岐命令や分岐の条件を計算するための幾つかの機械命令のことを、制御フローコードと呼ぶことにする。制御フローコードをその他の命令から分離するために、制御フローコードの実行結果を格納するレジスタセット(C0からC31という名前の付けられた32個のレジスタ、これを制御フローレジスタセットと呼ぶことにする)をアーキテクチャステートに追加する。ここに、命令セット方式の新しさがある。
【0016】
プロセッサのアーキテクチャステートは、R0からR31までの整数レジスタセット、F0からF31までの浮動小数点レジスタセット、C0からC31までの制御フローレジスタセット、プログラムカウンタから構成される。
【0017】
この命令セット方式を用いることで、オペランドとして制御フローレジスタを利用している命令を制御フローコードとして機械的に識別することが可能となる。
【0018】
即値あるいは制御フローレジスタのみが制御フローコードのオペランドとして指定される。ただし、整数レジスタあるいは浮動小数点レジスタの内容を制御フローレジスタにコピーする命令のみ、入力オペランドの一つとして整数レジスタあるいは浮動小数点レジスタを指定できる。制御フローコードに、浮動小数点演算命令とロードストア命令は存在しないが、それ以外の算術論理演算やシフト命令などは整数レジスタを対象とした命令と同様のものを利用できる。
【0019】
メモリからロードした値により分岐先を決定するコードの場合には、メモリの内容を整数レジスタにロードした後に、整数レジスタの値を制御フローレジスタにコピーすることで分岐を実現する。
【0020】
図1は本発明にかかる制御フローコードを分離する命令セット形式のコード例を示す図であり、図1(a)はそのソースコードを示す図、図1(b)は制御フローコードを分離するプロセッサのアセンブラを示す図である。
【0021】
図1(a)に示すコードは、配列bの要素を定数cと掛け合わせ、配列zにより指定された配列aの要素にストアする。アセンブラにおける最初の1個の命令と最後の3個の命令が制御フローコードとなる。
【0022】
次いで、制御フローコードの分離による高性能プロセッサの実現方式について説明する。
【0023】
図2は本発明の実施例を示す制御フローコードを処理する実行ユニットの構成例を示す図である。
【0024】
この図において、1は制御フローコードを処理する実行ユニット、2は制御フローコードを転送するためのパス、3は命令キュー、10は16ビットデータパス、11は16ビット長のレジスタ、12〜15,22,23,32は演算論理装置(ALU)、20は32ビットデータパス、21は32ビット長のレジスタ、30は64ビットデータパス、31は64ビット長のレジスタである。16ビットのデータパス10は、32ビットのデータバス20同様にカスケードALUに接続されている。
【0025】
制御フローコードのための実行機構では、インオーダ実行によるシンプルな命令パイプライン構成を採用することにより、分岐命令の早期実行を目指す。
【0026】
制御フローコードの命令には、ループの誘導変数を計算するためのコードや、データ値をゼロと比較する処理が多く現れる。この様なコードにおいては、主流となりつつある64ビット長のレジスタ31を必要としない場合が頻繁に出現する。本発明のプロセッサの実現方式では、制御フローコードが利用するオペランドのレジスタ長により適切なレジスタと演算器を選択できる機構を利用する。
【0027】
具体的には、C0からC31までの制御フローレジスタを、データ長に応じて次の16ビット長のレジスタ11、32ビット長のレジスタ21、64ビット長のレジスタ31という3つの領域に分割する。
【0028】
演算に必要となる時間(ALUの動作速度)は、扱うデータのビット長に依存する。これを有効に利用するために制御フローコードの実行ユニットとしてカスケードALUアーキテクチャを利用する。16ビット長、32ビット長のレジスタ11,21の計算のためにカスケードALUアーキテクチャを利用した制御フローコードのための実行機構が図2に示されている。例えば、16ビットのデータ長の演算であれば、データ依存の有無に関係なくサイクル当たり4つの命令を処理できる。
【0029】
図3は本発明の実施例を示す制御フローコードを分離するプロセッサの命令パイプラインを示す図である。
【0030】
この図において、101はIF(命令フェッチ)、102は命令デコードおよびステアリング、103は命令キュー、104は名前替え(rename)ユニット、105はイシュー(発行)キュー、106はイシュー(発行)ユニット、107はReg・Read(レジスタ読み出し)、108は実行ユニット、109はメモリである。
【0031】
点線で囲った部分は、図2に示した制御フローコードのための実行ユニット1を表している。比較のためにスーパースカラ方式の命令パイプラインを図4に示している。図4において、201はIF(命令フェッチ)、202は命令デコード、203は名前替え(rename)ユニット、204はイシュー(発行)、205はイシュー(発行)ユニット、206はReg・Read(レジスタ読み出し)、207は実行ユニット、208はメモリである。
【0032】
本発明のプロセッサの実現方式において、フェッチされた命令は続くステアリングステージ(IDステアリング)102において制御フローコードとそれ以外の命令に分けられ、それぞれの命令キュー3(図2参照),103(図3参照)に格納される。
【0033】
そして、制御フローコードの実行ユニット108では、命令キュー3から制御フローコードを取り出してインオーダに処理を進める。それ以外の命令は、既存のスーパースカラプロセッサ(図4参照)と同様にアウトオブオーダ実行のバックエンドに投入される。
【0034】
このように構成したので、本発明によれば、以下のような作用効果を奏することができる。
【0035】
図5は本発明の制御フローコードを分離するプロセッサ方式と既存のスーパースカラ方式を比較した図であり、図5(a)はそのソースコードを示す図、図5(b)は制御フローコードを分離するプロセッサのアセンブラを示す図、図5(c)は制御フローコードを分離するプロセッサを示す図、図5(d)は既存のスーパースカラプロセッサを示す図である。
【0036】
このように、本発明の制御フローコードの分離による高性能プロセッサの実現方式の実行タイミングが図5(c)に、これに対して、既存のスーパースカラ方式の実行タイミングが図5(b)に示されている。先に示したサンプルコードの3回のループボディを3本のパイプラインで処理する場合の様子を描いた。3回のループボディを処理するために、スーパースカラ方式で10サイクルを必要とするのに対して、本発明の実現方法では6サイクルで処理可能であり、この例では4サイクル分の高速化が達成されることが分かる。
【0037】
制御フローコードをメインのパイプラインから分離することで、従来は1本の流れとして処理されていた部分を2本の流れとして扱うことができるので、個々のフローに必要となる発行(イシュー)の幅を削減できる。これにより、既存のスーパースカラ方式と比較して、プロセッサ全体のハードウェアの複雑さを緩和することができる。
【0038】
制御フローコードを分離して分岐命令を早期に実行することにより、プロセッサでフラッシュする命令の数を削減できる。このことは、本発明により開発した実現方式が性能の向上をもたらすだけではなく、プロセッサ内の無駄な処理を削減できることを意味する。この結果として、アプリケーションを実行するための消費電力を削減することができる。また、制御フローコードの実行ユニットはインオーダに命令を処理するため、アウトオブオーダの実行機構に命令を投入する場合と比較して、制御フローコードを実行するための電力を節約できる。
【0039】
これら、複雑さの軽減と消費電力の低減という特徴から、本発明の実現方式は高速なプロセッサの実現方式としてだけではなく、高速かつ低消費電力という条件を重視する組み込み用プロセッサやモバイル用プロセッサの実現方式としても適している。
【0040】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づいて種々の変形が可能であり、これらを本発明の範囲から排除するものではない。
【0041】
【発明の効果】
以上、詳細に説明したように、本発明によれば、以下に示すような効果を奏することができる。
【0042】
(1)性能の向上をもたらすだけではなく、プロセッサ内の無駄な処理を削減できる。
【0043】
(2)高速、かつ、低消費電力化を重視する組み込み用プロセッサやモバイル用プロセッサに好適である。
【図面の簡単な説明】
【図1】 本発明にかかる制御フローコードを分離する命令セット形式のコード例を示す図である。
【図2】 本発明の実施例を示す制御フローコードを処理する実行ユニットの構成例を示す図である。
【図3】 本発明の実施例を示す制御フローコードを分離するプロセッサの命令パイプラインを示す図である。
【図4】 既存のスーパースカラプロセッサの実現方式を示す図である。
【図5】 本発明の制御フローコードを分離するプロセッサ方式と既存のスーパースカラ方式を比較した図である。
【符号の説明】
1 制御フローコードを処理する実行ユニット
2 制御フローコードを転送するためのパス
3,103 命令キュー
10 16ビットデータパス
11 16ビット長のレジスタ
12〜15,22,23,32 演算論理装置(ALU)
20 32ビットデータパス
21 32ビット長のレジスタ
30 64ビットデータパス
31 64ビット長のレジスタ
101 IF(命令フェッチ)
102 命令デコードおよびステアリング
104 名前替え(rename)ユニット
105 イシュー(発行)キュー
106 イシュー(発行)ユニット
107 Reg・Read(レジスタ読み出し)
108 実行ユニット
109 メモリ
Claims (3)
- フェッチされた命令のオペランドが第1のレジスタセットを使用することを示している制御フローコードか否かを検出するステアリングステップと、
前記ステアリングステップで検出された前記制御フローコードを前記第1のレジスタセットを用いて実行し、前記ステアリングステップで検出された前記制御フローコード以外の命令を第2のレジスタセットを用いて前記制御フローコードの実行よりも多いステージ数のパイプラインにより実行する実行ステップと、
前記制御フローコードの実行により得られた結果に基づいて前記フェッチを行う命令フェッチステップとを含むことを特徴とする制御フローコードの分離によるプロセッサの実現方法。 - 前記実行ステップにおいて、前記制御フローコードを第1の命令キューに格納し、前記制御フローコード以外の命令を第2の命令キューに格納し、前記第1の命令キューから取り出された前記制御フローコードをインオーダで実行し、前記第2の命令キューから取り出された前記制御フローコード以外の命令をアウトオブオーダで実行することを特徴とする請求項1に記載の制御フローコードの分離によるプロセッサの実現方法。
- フェッチ手段からフェッチされた命令のオペランドが第1のレジスタセットを使用することを示している制御フローコードか否かを検出し、前記制御フローコードであれば第1の実行手段に送り、前記制御フローコード以外の命令であれば第2の実行手段に送るステアリング手段と、
前記第1のレジスタセットに接続された前記第1の実行手段であって、前記ステアリング手段から出力された前記制御フローコードを受け取り、前記第1のレジスタセットを用いて処理を行い、前記フェッチ手段に処理結果を出力する前記第1の実行手段と、
第2のレジスタセットに接続された前記第2の実行手段であって、前記ステアリング手段から出力された前記制御フローコード以外の命令を受け取り、前記第2のレジスタセットを用いて処理を前記第1の実行手段よりも多いステージ数のパイプラインにより実行する前記第2の実行手段とを
備えたことを特徴とする制御フローコードの分離によるマイクロプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002335916A JP3795449B2 (ja) | 2002-11-20 | 2002-11-20 | 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002335916A JP3795449B2 (ja) | 2002-11-20 | 2002-11-20 | 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004171248A JP2004171248A (ja) | 2004-06-17 |
JP3795449B2 true JP3795449B2 (ja) | 2006-07-12 |
Family
ID=32699886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002335916A Expired - Fee Related JP3795449B2 (ja) | 2002-11-20 | 2002-11-20 | 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3795449B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100630702B1 (ko) | 2004-10-05 | 2006-10-02 | 삼성전자주식회사 | 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법 |
-
2002
- 2002-11-20 JP JP2002335916A patent/JP3795449B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004171248A (ja) | 2004-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6862677B1 (en) | System and method for eliminating write back to register using dead field indicator | |
US5923862A (en) | Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions | |
US7836278B2 (en) | Three operand instruction extension for X86 architecture | |
US5764943A (en) | Data path circuitry for processor having multiple instruction pipelines | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
US5619664A (en) | Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms | |
US20070083736A1 (en) | Instruction packer for digital signal processor | |
EP1891519B1 (en) | Efficient subprogram return in microprocessors | |
US8977837B2 (en) | Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes | |
JP2003058366A (ja) | 分岐予測なしで分岐ペナルティを減少させる新規なフェッチ分岐アーキテクチャ | |
US20220035635A1 (en) | Processor with multiple execution pipelines | |
US5778208A (en) | Flexible pipeline for interlock removal | |
US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
US5768553A (en) | Microprocessor using an instruction field to define DSP instructions | |
US6092184A (en) | Parallel processing of pipelined instructions having register dependencies | |
US7437544B2 (en) | Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction | |
JP3795449B2 (ja) | 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ | |
US6519696B1 (en) | Paired register exchange using renaming register map | |
US6851044B1 (en) | System and method for eliminating write backs with buffer for exception processing | |
JP2003263313A (ja) | デジタルプロセッサおよび命令の選択方法 | |
JP3721002B2 (ja) | メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法 | |
US8966230B2 (en) | Dynamic selection of execution stage | |
JP7487535B2 (ja) | 演算処理装置 | |
Bindal et al. | Central Processing Unit | |
US7991816B2 (en) | Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050318 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060214 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060314 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060412 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |