JP3795449B2 - 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ - Google Patents

制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ Download PDF

Info

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
Application number
JP2002335916A
Other languages
English (en)
Other versions
JP2004171248A (ja
Inventor
謙二 吉瀬
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.)
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
Original Assignee
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
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 Japan Science and Technology Agency, National Institute of Japan Science and Technology Agency filed Critical Japan Science and Technology Agency
Priority to JP2002335916A priority Critical patent/JP3795449B2/ja
Publication of JP2004171248A publication Critical patent/JP2004171248A/ja
Application granted granted Critical
Publication of JP3795449B2 publication Critical patent/JP3795449B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、低消費電力あるいは高速なプロセッサを構築するための命令セット形式、及びプロセッサを構築するための方式(プロセッサアーキテクチャ)に関するものであり、特に、制御フローコードの分離による高性能プロセッサの実現方法及びそれを用いたマイクロプロセッサに関するものである。
【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のレジスタセットを使用することを示している制御フローコードか否かを検出するステアリングステップと、
    前記ステアリングステップで検出された前記制御フローコードを前記第1のレジスタセットを用いて実行し、前記ステアリングステップで検出された前記制御フローコード以外の命令を第2のレジスタセットを用いて前記制御フローコードの実行よりも多いステージ数のパイプラインにより実行する実行ステップと、
    前記制御フローコードの実行により得られた結果に基づいて前記フェッチを行う命令フェッチステップとを含むことを特徴とする制御フローコードの分離によるプロセッサの実現方法。
  2. 前記実行ステップにおいて、前記制御フローコードを第1の命令キューに格納し、前記制御フローコード以外の命令を第2の命令キューに格納し、前記第1の命令キューから取り出された前記制御フローコードをインオーダで実行し、前記第2の命令キューから取り出された前記制御フローコード以外の命令アウトオブオーダ実行することを特徴とする請求項1に記載の制御フローコードの分離によるプロセッサの実現方法。
  3. フェッチ手段からフェッチされた命令のオペランドが第1のレジスタセットを使用することを示している制御フローコードか否かを検出し、前記制御フローコードであれば第1の実行手段に送り、前記制御フローコード以外の命令であれば第2の実行手段に送るステアリング手段と、
    前記第1のレジスタセットに接続された前記第1の実行手段であって、前記ステアリング手段から出力された前記制御フローコードを受け取り、前記第1のレジスタセットを用いて処理を行い、前記フェッチ手段に処理結果を出力する前記第1の実行手段と、
    第2のレジスタセットに接続された前記第2の実行手段であって、前記ステアリング手段から出力された前記制御フローコード以外の命令を受け取り、前記第2のレジスタセットを用いて処理を前記第1の実行手段よりも多いステージ数のパイプラインにより実行する前記第2の実行手段とを
    備えたことを特徴とする制御フローコードの分離によるマイクロプロセッサ。
JP2002335916A 2002-11-20 2002-11-20 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ Expired - Fee Related JP3795449B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100630702B1 (ko) 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법

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