JP2010198128A - プロセッサシステム - Google Patents

プロセッサシステム Download PDF

Info

Publication number
JP2010198128A
JP2010198128A JP2009039812A JP2009039812A JP2010198128A JP 2010198128 A JP2010198128 A JP 2010198128A JP 2009039812 A JP2009039812 A JP 2009039812A JP 2009039812 A JP2009039812 A JP 2009039812A JP 2010198128 A JP2010198128 A JP 2010198128A
Authority
JP
Japan
Prior art keywords
pipeline
stage
skip
instruction
execution instruction
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.)
Withdrawn
Application number
JP2009039812A
Other languages
English (en)
Inventor
Soichiro Hosoda
宗一郎 細田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009039812A priority Critical patent/JP2010198128A/ja
Priority to US12/610,537 priority patent/US20100217961A1/en
Publication of JP2010198128A publication Critical patent/JP2010198128A/ja
Withdrawn 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)

Abstract

【課題】本発明は、パイプライン動作するプロセッサにおいて、余計な電力の消費を抑制できるようにする。
【解決手段】たとえば、パイプライン処理によって命令を実行するインオーダなパイプラインプロセッサにおいて、処理の対象となる実行命令が、第3のパイプラインステージS3での処理を必要とするか否かをスキップコントローラ51により監視する。当該実行命令が第3のパイプラインステージS3での処理を必要としない実行命令の場合、スキップコントローラ51は、スキップ経路41を介して、ADD/SUB演算器11の出力をパイプラインレジスタ31gに転送することにより、必要としない処理を含む第3のパイプラインステージS3をスキップさせる。
【選択図】図4

Description

本発明は、パイプライン処理を行うプロセッサシステムに関するもので、たとえば、ステージスキップ機能を備えたパイプラインプロセッサに関する。
従来、パイプライン処理を行うインオーダなプロセッサシステムにおいては、全てのパイプラインステージを、各実行命令が通過する。つまり、先行する実行命令を後続の実行命令が追い越さない方式のパイプラインプロセッサの場合、各実行命令は、所定の実行命令に対して必要な処理を行うパイプラインステージでないパイプラインステージであっても、それぞれ通過する。このため、所定の実行命令以外の実行命令が通過する際に、そのステージにおける演算器またはメモリおよび各種のハードウェア(HW)を不要にトグル(動作)させ、余計な電力を消費するという問題があった。
なお、パイプライン動作に関連する技術として、スキップ機能を備えた機器が既に提案されている(たとえば、特許文献1または特許文献2参照)。
しかしながら、上記した従来技術において、たとえば特許文献1は、スキップ命令を用いることにより、条件(分岐)が成立/不成立の場合に応じて、後続の命令を実行するか否かを制御するようにしたものである。
また、たとえば特許文献2は、スキップ機能付き命令を用い、実行ユニットの演算結果をフラグレジスタに格納後、その演算結果をスキップ条件ビットと比較することにより、条件付き命令を必要とせずに、条件付き命令の実行を可能にしたものである。
したがって、いずれの特許文献1,2の場合も、必要な処理を行うための所定の実行命令以外の実行命令が通過するステージでのトグルを低下させ、余計な電力の消費を抑えるためには、特別な命令が必要であった。
特開平3−269728号公報 特開2008−158810号公報
本発明は、特別な命令を必要とせずとも、処理を行わないパイプラインステージでのトグルを低下させることができ、消費電力を抑えることが可能なプロセッサシステムを提供するものである。
上記の課題を解決するために、本発明は、複数の実行命令からなる命令列を、各実行命令順にパイプライン処理する複数段のパイプラインステージと、前記パイプライン処理される各実行命令が、後段のパイプラインステージにおける処理を必要とするか否かを判定するコントローラと、前記コントローラの判定結果にもとづき、当該実行命令が後段のパイプラインステージにおける処理を必要としない実行命令の場合、その必要としない処理を含むパイプラインステージをスキップさせる転送経路とを具備したことを特徴とする。
本発明は、特別な命令を必要とせずとも、処理を行わないパイプラインステージでのトグルを低下させることができ、消費電力を抑えることが可能なプロセッサシステムを提供できる。
本発明の実施例1に係るプロセッサシステム(パイプラインプロセッサ)の構成例を示すブロック図である。 図1に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、二段スキップ動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、二段スキップ動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、スキップAfterホールド動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、スキップAfterホールド動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、スキップAfterホールド動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、スキップAfterホールド動作について説明するために示すブロック図である。 本発明の実施例1に係る、パイプラインプロセッサの他の構成例を示すブロック図である。 図1に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すフローチャートである。 図1に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すブロック図である。 図1に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すブロック図である。
以下、本発明の実施の形態について、図面を参照して詳細に説明する。ただし、図面は模式的なものであり、各図面の寸法および比率などは現実のものとは異なることに留意すべきである。また、図面の相互間においても、互いの寸法の関係および/または比率が異なる部分が含まれていることは勿論である。特に、以下に示すいくつかの実施例は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置などによって、本発明の技術思想が特定されるものではない。この発明の技術思想は、その要旨を逸脱しない範囲において、種々の変更を加えることができる。
[構成]
図1は、本発明の実施例1に係るプロセッサシステムの構成例を示すものである。本実施例1では、パイプライン処理を行うインオーダなプロセッサシステムとして、ステージスキップ機能を備えたパイプラインプロセッサを例に説明する。なお、図1には、パイプラインプロセッサのデコードステージ(ジェネラル・パーパス・レジスタGPRの読み出しステージに該当)からライトバックステージまでのパイプライン構成を示している(命令フェッチ以前のステージ構成については、便宜上、図示を省略している)。
図1に示すように、このパイプラインプロセッサには、第1〜第6のパイプラインステージが設けられている。第1のステージS1はデコードステージD stageであって、ジェネラル・パーパス・レジスタGPRが設けられている。ジェネラル・パーパス・レジスタGPRには、演算用のデータなどが格納されている。第2のステージ(E0 stage)S2には、実行命令に応じて、必要な処理を行うADD/SUB演算器11とCMP演算器12とが設けられている。ADD/SUB演算器11の入力段には、セレクタ21a,21bが接続されている。第3のステージ(E1 stage)S3には、実行命令に応じて、必要な処理を行うMUL演算器13とLOGIC演算器14とが設けられている。MUL演算器13およびLOGIC演算器14の出力段には、セレクタ22が接続されている。第4のステージ(E2 stage)S4には、実行命令に応じて、必要な処理を行うSHFT演算器15とCLIP演算器16とが設けられている。
上記各演算器11,12,13,14,15,16は、それぞれ、該当する処理をスルーするPATH機能を有している。
第5のステージS5はメモリステージM stageであって、実行命令に応じて、必要な処理を行うデータメモリ17が設けられている。データメモリ17の出力段には、セレクタ23が接続されている。第6のステージS6はライトバックステージWB stageであって、セレクタ24が設けられている。上記セレクタ24は、上記ジェネラル・パーパス・レジスタGPRに接続されている。
そして、第1のステージS1と第2のステージS2との間には、4つのパイプラインレジスタ(Pipeline Reg.A,Reg.B,Reg.C,Reg.D)31a,31b,31c,31dが設けられている。パイプラインレジスタ31aは、入力が上記ジェネラル・パーパス・レジスタGPRに接続され、出力が上記セレクタ21aに接続されている。パイプラインレジスタ31bは、入力が上記ジェネラル・パーパス・レジスタGPRに接続され、出力が上記セレクタ21aに接続されている。パイプラインレジスタ31cは、入力が上記ジェネラル・パーパス・レジスタGPRに接続され、出力が上記セレクタ21bおよび上記CMP演算器12に接続されている。パイプラインレジスタ31dは、入力が上記ジェネラル・パーパス・レジスタGPRに接続され、出力が上記セレクタ21bおよび上記CMP演算器12に接続されている。
第2のステージS2と第3のステージS3との間には、2つのパイプラインレジスタ(Pipeline Reg.E,Reg.F)31e,31fが設けられている。パイプラインレジスタ31eは、入力が上記ADD/SUB演算器11に接続され、出力が上記MUL演算器13に接続されている。パイプラインレジスタ31fは、入力が上記CMP演算器12に接続され、出力が上記MUL演算器13および上記LOGIC演算器14に接続されている。
第3のステージS3と第4のステージS4との間には、2つのパイプラインレジスタ(Pipeline Reg.G,Reg.H)31g,31hが設けられている。パイプラインレジスタ31gは、入力が上記MUL演算器13に接続され、出力が上記SHFT演算器15に接続されている。パイプラインレジスタ31hは、入力が上記セレクタ22に接続され、出力が上記CLIP演算器16に接続されている。
第4のステージS4と第5のステージS5との間には、2つのパイプラインレジスタ(Pipeline Reg.I,Reg.J)31i,31jが設けられている。パイプラインレジスタ31iは、入力が上記SHFT演算器15に接続され、出力が上記データメモリ17および上記セレクタ23に接続されている。
第5のステージS5と第6のステージS6との間には、2つのパイプラインレジスタ(Pipeline Reg.K,Reg.L)31k,31lが設けられている。パイプラインレジスタ31kは、入力が上記セレクタ23に接続され、出力が上記セレクタ24に接続されている。パイプラインレジスタ31lは、入力が上記パイプラインレジスタ31jに接続され、出力が上記セレクタ24に接続されている。
各パイプラインレジスタ31a,31b,31c,31d,31e,31f,31g,31h,31i,31j,31k,31lは、保持値としてのステージ間情報、たとえば、ジェネラル・パーパス・レジスタGPRからの演算用のデータおよび各ステージS2,S3,S4,S5での演算結果などを保持するもので、それぞれ、ホールド回路32a,32b,32c,32d,32e,32f,32g,32h,32i,32j,32k,32lを備えている。各ホールド回路32a,32b,32c,32d,32e,32f,32g,32h,32i,32j,32k,32lは、指定されたサイクルの間、パイプラインレジスタ31a,31b,31c,31d,31e,31f,31g,31h,31i,31j,31k,31lで保持されたステージ間情報をそれぞれホールドするものである。
また、このパイプラインプロセッサには、スキップ経路41およびスキップコントローラ51が設けられている。スキップ経路41は、スキップコントローラ51の制御により、実行命令に応じて、スキップ可能なパイプラインステージをスキップ(非通過)させるためのもので、たとえば、各パイプラインステージと1ステージ以上後段のパイプラインレジスタとの間を接続する経路となっている。本実施形態の場合、スキップ経路41は、ジェネラル・パーパス・レジスタGPRからパイプラインレジスタ31a,31b,31c,31dへの出力、または、パイプラインレジスタ31a,31b,31c,31dの出力、または、ADD/SUB演算器11の出力を、それぞれ、パイプラインレジスタ31g,31i,31kにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタGPRからパイプラインレジスタ31a,31b,31c,31dへの出力、または、パイプラインレジスタ31a,31b,31c,31d,31eの出力、または、ADD/SUB演算器11の出力、または、MUL演算器13の出力を、それぞれ、パイプラインレジスタ31i,31kにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタGPRからパイプラインレジスタ31a,31b,31c,31dへの出力、または、パイプラインレジスタ31a,31b,31c,31d,31eの出力、または、ADD/SUB演算器11の出力、または、MUL演算器13の出力、または、SHFT演算器15の出力を、それぞれ、パイプラインレジスタ31kにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタGPRからパイプラインレジスタ31c,31dへの出力、または、パイプラインレジスタ31c,31dの出力、または、CMP演算器12の出力を、それぞれ、パイプラインレジスタ31h,31j,31lにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタGPRからパイプラインレジスタ31c,31dへの出力、または、パイプラインレジスタ31c,31d,31fの出力、または、セレクタ22の出力を、それぞれ、パイプラインレジスタ31j,31lにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタGPRからパイプラインレジスタ31c,31dへの出力、または、パイプラインレジスタ31c,31d,31fの出力、または、セレクタ22の出力、または、CLIP演算器16の出力を、それぞれ、パイプラインレジスタ31lにスキップさせるような経路を有する。
スキップコントローラ51は、各実行命令をもとにスキップ可能なパイプラインステージを判断し、その結果にしたがって、各パイプラインレジスタ31a,31b,31c,31d,31e,31f,31g,31h,31i,31j,31k,31l、ホールド回路32a,32b,32c,32d,32e,32f,32g,32h,32i,32j,32k,32l、および、スキップ経路41を制御するものである。
[動作]
次に、図1に示した構成において、パイプラインプロセッサの主な動作について説明する。ここでは、下記に示す4つの動作の説明を行う。その際に、各図中にそれぞれ判別可能に示された演算器、パイプラインレジスタ、ホールド回路、および、スキップ経路などが実際に使用される(トグルによる電力消費をともなって動作する)。
(1)一段スキップ動作
(2)二段スキップ動作
(3)スキップAfterホールド動作
(4)優先度付きスキップ動作
なお、二段以上のスキップ動作については、(2)の二段スキップ動作とほぼ同様であり、詳しい説明は割愛する。
(1)一段スキップ動作
一段スキップ動作とは、上記した構成のパイプラインプロセッサにおいて、後続のパイプラインステージを一段スキップさせる動作である。本例では、後掲する表1の命令列1を実行する場合を例に説明する。
Figure 2010198128
ここで、上記命令列1において、プログラムカウンタ(PC)の命令ID[n](以下、実行命令[PC:n]と表記する)の命令コードの解釈は、
「第2のステージ(E0 stage)S2において、パイプラインレジスタ(Reg.A)31aとパイプラインレジスタ(Reg.C)31cの保持値を加算、パイプラインレジスタ(Reg.D)31dの保持値をパス」後、
「第3のステージ(E1 stage)S3において、パイプラインレジスタ(Reg.E)31eとパイプラインレジスタ(Reg.F)31fの保持値を乗算」後、
「第4のステージ(E2 stage)S4において、パイプラインレジスタ(Reg.H)31hの保持値をクリップ」、
である。
また、プログラムカウンタの命令ID[n+1](以下、実行命令[PC:n+1]と表記する)の命令コードの解釈は、
「第2のステージS2において、パイプラインレジスタ(Reg.B)31bとパイプラインレジスタ31cの保持値を加算」後、
「第3のステージS3において、パイプラインレジスタ31eの保持値をパス」後、
「第4のステージS4において、パイプラインレジスタ(Reg.G)31gの保持値をシフト」、
である。
パイプラインプロセッサにおいては、まず、PC値の先行する実行命令[PC:n](CLIP[MUL{ADD(A,C),D}])が先に実行される。すなわち、最初のサイクルにおいて、スキップコントローラ51は、実行命令[PC:n]が第1のステージS1に存在することにより、たとえば図2に示すように、ジェネラル・パーパス・レジスタGPRからの出力を、それぞれステージ間情報として、パイプラインレジスタ31a,31c,31dによって保持させる(パイプラインレジスタ31a,31c,31dに命令が存在する)。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第2のステージS2に存在することにより、たとえば図3に示すように、第2のステージS2において、ADD/SUB演算器11とCMP演算器12のPATH機能とをトグルさせて、パイプラインレジスタ31eに加算結果(Reg.A+Reg.C)を、パイプラインレジスタ31fにパイプラインレジスタ31dの保持値(パイプラインレジスタ31dからのスルー結果)を、それぞれ保持させる。また、スキップコントローラ51は、実行命令[PC:n+1]が第1のステージS1に存在することにより、たとえば図3に示すように、第1のステージS1において、ジェネラル・パーパス・レジスタGPRからの出力を、それぞれステージ間情報として、パイプラインレジスタ31b,31cに保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第3のステージS3に存在することにより、たとえば図4に示すように、第3のステージS3において、MUL演算器13をトグルさせ、その結果(Reg.E×Reg.F)を、パイプラインレジスタ31hに保持させる。また、スキップコントローラ51は、実行命令[PC:n+1]が第2のステージS2に存在することにより、たとえば図4に示すように、第2のステージS2において、ADD/SUB演算器11をトグルさせ、その結果(Reg.B+Reg.C)を、スキップ経路41を介し、パイプラインレジスタ31gに保持させる。
ここで、従来のパイプラインプロセッサであれば、MUL演算器13の結果をパイプラインレジスタ31gに保持させるとともに、ADD/SUB演算器11の出力をパイプラインレジスタ31eで保持させるが、本実施例のパイプラインプロセッサにおいては、スキップコントローラ51による「一段スキップ可能」の判定結果にもとづき、ADD/SUB演算器11の出力を、第3のステージS3をスキップさせて、パイプラインレジスタ31gで保持させる。そのため、スキップコントローラ51は、実行命令[PC:n]に対するMUL演算器13の演算結果を、パイプラインレジスタ31hに保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第4のステージS4に存在することにより、たとえば図5に示すように、第4のステージS4において、CLIP演算器16をトグルさせ、その結果を、パイプラインレジスタ31jに保持させる。一方、スキップコントローラ51は、実行命令[PC:n+1]が第4のステージS4に既にスキップしていることから、パイプラインレジスタ31gの保持値をホールド回路32gによってホールドさせる。
図5のサイクルにおいて、従来のパイプラインプロセッサであれば、実行命令[PC:n+1]に対するADD/SUB演算器11での処理の結果が、パイプラインレジスタ31eからMUL演算器13のPATH機能を用いて、パイプラインレジスタ31gに書き込まれる。そのため、MUL演算器13がトグルされ、電力が消費される。しかし、本実施例のパイプラインプロセッサによれば、図4のサイクルにおいて、既にパイプラインレジスタ31gにADD/SUB演算器11での処理の結果がスキップされているため、パイプラインレジスタ31eからMUL演算器13への入力値を変化させないことで、MUL演算器13のトグルを抑え、そこでの電力消費を低減できるようになる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第5のステージS5に存在することにより、たとえば図6に示すように、第5のステージS5において、パイプラインレジスタ31jの保持値を、パイプラインレジスタ31lに保持させる。また、スキップコントローラ51は、実行命令[PC:n+1]が第4のステージS4に存在することにより、たとえば図6に示すように、第4のステージS4において、SHFT演算器15をトグルさせ、その結果を、パイプラインレジスタ31iに保持させる。この図6のサイクルは、スキップを行わない従来のパイプラインプロセッサのサイクルと一致するため、パイプライン全体の動作に差異はみられない。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第6のステージS6に存在することにより、第6のステージS6において、パイプラインレジスタ31lの保持値をジェネラル・パーパス・レジスタGPRに書き込むとともに、実行命令[PC:n+1]が第5のステージS5に存在することにより、第5のステージS5において、パイプラインレジスタ31iの保持値を、パイプラインレジスタ31kに保持させる。
次(最後)のサイクルで、スキップコントローラ51は、実行命令[PC:n+1]が第6のステージS6に存在することにより、第6のステージS6において、パイプラインレジスタ31kの保持値をジェネラル・パーパス・レジスタGPRに書き込む。
上記したように、図4のサイクルにおいて、第3のステージS3を一段スキップさせるようにしたことにより、MUL演算器13のトグルを低下させ、消費電力を抑えることが可能となる。
(2)二段スキップ動作
二段スキップ動作とは、上記した構成のパイプラインプロセッサにおいて、後続のパイプラインステージを二段スキップさせる動作である。本例では、後掲する表2の命令列2を実行する場合を例に説明する。
Figure 2010198128
ここで、上記命令列2において、プログラムカウンタ(PC)の命令ID[n](以下、実行命令[PC:n]と表記する)の命令コードの解釈は、
「第2のステージ(E0 stage)S2において、パイプラインレジスタ(Reg.A)31aとパイプラインレジスタ(Reg.C)31cの保持値を加算、パイプラインレジスタ(Reg.D)31dの保持値をパス」後、
「第3のステージ(E1 stage)S3において、パイプラインレジスタ(Reg.E)31eとパイプラインレジスタ(Reg.F)31fの保持値を乗算」後、
「第4のステージ(E2 stage)S4において、パイプラインレジスタ(Reg.H)31hの保持値をクリップ」、
である。
また、プログラムカウンタの命令ID[n+1](以下、実行命令[PC:n+1]と表記する)の命令コードの解釈は、
「第2のステージS2において、パイプラインレジスタ(Reg.B)31bの保持値をパス」後、
「第3のステージS3において、パイプラインレジスタ31eの保持値をパス」後、
「第4のステージS4において、パイプラインレジスタ(Reg.G)31gの保持値をシフト」、
である。
パイプラインプロセッサにおいては、まず、PC値の先行する実行命令[PC:n](CLIP[MUL{ADD(A,C),D}])が先に実行される。すなわち、最初のサイクルにおいて、スキップコントローラ51は、実行命令[PC:n]が第1のステージS1に存在することにより、たとえば図2に示したように、ジェネラル・パーパス・レジスタGPRからの出力を、それぞれステージ間情報として、パイプラインレジスタ31a,31c,31dによって保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第2のステージS2に存在することにより、たとえば図7に示すように、第2のステージS2において、ADD/SUB演算器11とCMP演算器12のPATH機能とをトグルさせて、パイプラインレジスタ31eに加算結果(Reg.A+Reg.C)を、パイプラインレジスタ31fにパイプラインレジスタ31dの保持値(パイプラインレジスタ31dからのスルー結果)を、それぞれ保持させる。また、スキップコントローラ51は、実行命令[PC:n+1]が第1のステージS1に存在することにより、たとえば図7に示すように、第1のステージS1において、ジェネラル・パーパス・レジスタGPRからの出力を、スキップ経路41を介し、ステージ間情報として、パイプラインレジスタ31gに保持させる。
ここで、従来のパイプラインプロセッサであれば、ジェネラル・パーパス・レジスタGPRから読み出した値を、パイプラインレジスタ31bに保持させるが、本実施例のパイプラインプロセッサにおいては、スキップコントローラ51による「二段スキップ可能」の判定結果にもとづき、ジェネラル・パーパス・レジスタGPRからの出力を、第2,第3のステージS2,S3をスキップさせて、パイプラインレジスタ31gで保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第3のステージS3に存在することにより、たとえば図8に示すように、第3のステージS3において、MUL演算器13をトグルさせ、その結果(Reg.E×Reg.F)を、パイプラインレジスタ31hに保持させる。一方、スキップコントローラ51は、実行命令[PC:n+1]が第4のステージS4に既にスキップしていることから、パイプラインレジスタ31gの保持値をホールド回路32gによってホールドさせる。
以降のサイクルは、一段スキップ動作の際に説明した図5および図6の動作と同様である。
上記したように、図7のサイクルにおいて、第2,第3のステージS2,S3を二段スキップさせるようにしたことにより、ADD/SUB演算器11およびMUL演算器13のトグルを低下させ、消費電力を抑えることが可能となる。
(3)スキップAfterホールド動作
スキップAfterホールド動作とは、使用するリソース(この例では、演算器およびデータメモリなど)が重複する実行命令が連なる場合に、スキップ動作を行う以前に、そのステージ前段のパイプラインレジスタでステージ間情報をホールドさせ、使用するリソースのステージ前段のパイプラインレジスタが解放され次第、スキップ動作を実行する動作である。本例では、後掲する表3の命令列3を実行する場合を例に説明する。
Figure 2010198128
ここで、上記命令列3において、プログラムカウンタ(PC)の命令ID[n](以下、実行命令[PC:n]と表記する)の命令コードの解釈は、
「第2のステージ(E0 stage)S2において、パイプラインレジスタ(Reg.A)31aとパイプラインレジスタ(Reg.C)31cの保持値を加算、パイプラインレジスタ(Reg.D)31dの保持値をパス」後、
「第3のステージ(E1 stage)S3において、パイプラインレジスタ(Reg.E)31eとパイプラインレジスタ(Reg.F)31fの保持値を乗算」後、
「第4のステージ(E2 stage)S4において、パイプラインレジスタ(Reg.G)31gの保持値をシフト」、
である。
また、プログラムカウンタの命令ID[n+1](以下、実行命令[PC:n+1]と表記する)の命令コードの解釈は、
「第2のステージS2において、パイプラインレジスタ(Reg.B)31bの保持値をパス」後、
「第3のステージS3において、パイプラインレジスタ31eの保持値をパス」後、
「第4のステージS4において、パイプラインレジスタ(Reg.G)31gの保持値をシフト」、
である。
また、プログラムカウンタの命令ID[n+2](以下、実行命令[PC:n+2]と表記する)の命令コードの解釈は、
「No Operation(あるいは、パイプラインレジスタ31bを使用しない任意の命令の配置も許可される)」、
である。
パイプラインプロセッサにおいては、まず、PC値の先行する実行命令[PC:n](CLIP[MUL{ADD(A,C),D}])が先に実行される。すなわち、最初のサイクルにおいて、スキップコントローラ51は、実行命令[PC:n]が第1のステージS1に存在することにより、たとえば図2に示したように、ジェネラル・パーパス・レジスタGPRからの出力を、それぞれステージ間情報として、パイプラインレジスタ31a,31c,31dによって保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第2のステージS2に存在することにより、たとえば図9に示すように、第2のステージS2において、ADD/SUB演算器11とCMP演算器12のPATH機能とをトグルさせて、パイプラインレジスタ31eに加算結果(Reg.A+Reg.C)を、パイプラインレジスタ31fにパイプラインレジスタ31dの保持値(パイプラインレジスタ31dからのスルー結果)を、それぞれ保持させる。また、スキップコントローラ51は、実行命令[PC:n+1]が第1のステージS1に存在することにより、たとえば図9に示すように、第1のステージS1において、ジェネラル・パーパス・レジスタGPRからの出力を、パイプラインレジスタ31bに保持させる。
ここで、上述した「二段スキップ動作」においては、実行命令[PC:n]のCLIP演算器16の動作と実行命令[PC:n+1]のSHFT演算器15の動作とが排他的であったため、スキップコントローラ51は「二段スキップ可能」の判定を下した。しかし、本例の場合は、実行命令[PC:n]のSHFT演算15の動作と実行命令[PC:n+1]のSHFT演算器15の動作とが重複しているため、図9のサイクルにおいて、スキップコントローラ51は「スキップ不可」の判定を下し、ジェネラル・パーパス・レジスタGPRからの出力をパイプラインレジスタ31bに保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第3のステージS3に存在することにより、たとえば図10に示すように、第3のステージS3において、MUL演算器13をトグルさせ、その結果(Reg.E×Reg.F)を、パイプラインレジスタ31gに保持させる。一方、スキップコントローラ51は、SHFT演算器15の動作が重複するため、パイプラインレジスタ31bの保持値を直ちにスキップさせることはできないが、第2,第3のステージS2,S3をスキップさせる「二段スキップ可能」の判定結果により、SHFT演算器15が設けられたステージS4の前段のパイプラインレジスタ31gが解放される(非使用状態になる)まで、パイプラインレジスタ31bの保持値をホールド回路32bでホールドさせる。この時、パイプラインレジスタ31bの保持値をホールド回路32bでホールドさせるためには、実行命令[PC:n+2]がパイプラインレジスタ31bへの書き込みを禁止するものであることが必要である(スキップコントローラ51の判定結果に考慮される)。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第4のステージS4に存在することにより、たとえば図11に示すように、第4のステージS4において、SHFT演算器15をトグルさせ、その結果を、パイプラインレジスタ31iに保持させる。この段階で、パイプラインレジスタ31gは解放される。したがって、スキップコントローラ51は、たとえば図11に示すように、ホールド回路32bでホールドさせていたパイプラインレジスタ31bの保持値を、スキップ経路41を介し、パイプラインレジスタ31gに保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第5のステージS5に存在することにより、たとえば図12に示すように、第5のステージS5において、パイプラインレジスタ31iの保持値を、パイプラインレジスタ31kに保持させる。また、スキップコントローラ51は、実行命令[PC:n+1]が第4のステージS4に存在することにより、たとえば図12に示すように、第4のステージS4において、SHFT演算器15をトグルさせ、その結果を、パイプラインレジスタ31iに保持させる。
次のサイクルで、スキップコントローラ51は、実行命令[PC:n]が第6のステージS6に存在することにより、第6のステージS6において、パイプラインレジスタ31kの保持値をジェネラル・パーパス・レジスタGPRに書き込むとともに、実行命令[PC:n+1]が第5のステージS5に存在することにより、第5のステージS5において、パイプラインレジスタ31iの保持値を、パイプラインレジスタ31kに保持させる。
次(最後)のサイクルで、スキップコントローラ51は、実行命令[PC:n+1]が第6のステージS6に存在することにより、第6のステージS6において、パイプラインレジスタ31kの保持値をジェネラル・パーパス・レジスタGPRに書き込む。
上記したように、SHFT演算器15が重複する実行命令[PC:n],[PC:n+1]が連なる場合には、直前のパイプラインレジスタ31gが解放され次第、スキップ動作を行わせるようにしたことによって、第2,第3のステージS2,S3の二段スキップが可能となる。その結果、ADD/SUB演算器11およびMUL演算器13のトグルを低下させて、消費電力を抑えることが可能となる。
なお、上記のスキップAfterホールド動作に際しては、スキップ動作の前の段階で、実行命令[PC:n+1]を待機させるが、この間、第2のステージS2のADD/SUB演算器11は、保持値の変化しないパイプラインレジスタ31a,31c,31dからの出力を入力値として利用することにより、トグルを抑えることが可能である。
(4)優先度付きスキップ動作
上述したスキップ動作の説明においては、いずれの場合も、スキップできるパイプラインレジスタの制限、スキップできるパイプラインステージの制限、および、スキップできる実行命令数の制限は想定していない。スキップコントローラおよびホールド回路およびスキップ経路などの全ハードウェアを完全に配備した上では、特に上記の制限は必要ない。一方で、パイプラインプロセッサの面積の制約上、ハードウェアの一部しか配備できないような場合には、上記の制約により、スキップ候補となる複数の命令の中から、実際にスキップ動作を行う命令を選択する動作が必要となる。一例を挙げれば、たとえば図13に示すように、スキップコントローラ51の内部にパイプラインレジスタ31a〜31l用の各ホールド回路32を配備することも可能であるが、その全てを配備できないケースもこれに該当する。
スキップ候補となる複数の命令が存在する場合、スキップコントローラ51は、『各パイプラインステージをスキップした場合に低下可能な消費電力』にもとづいて、スキップする命令を採択する。たとえば、図13のパイプライン構成において、各ステージS1〜S6における消費電力の傾向が、『第5のステージS5>第3のステージS3>第4のステージS4』であると仮定する(データメモリ17>MUL演算器13>SHFT演算器15)。この状況において、たとえば第3,第4,第5のステージS3,S4,S5の3つのステージをそれぞれスキップ可能な3つの命令が存在した場合、スキップコントローラ51は、スキップ動作によりパイプライン全体の消費電力を最も低下可能であるとの判定結果にもとづいて、第5のステージS5をスキップさせる命令を採択する。すなわち、スキップ候補の命令に、低下し得る消費電力に応じた優先順位を付し、その順位の最も高い命令を実行するようにする。
このように、ハードウェアの配備の状況などに応じて、スキップする複数の命令のうち、電力消費の削減効果が最も高い命令を実行するようにしたのが、優先度付きスキップ動作である。
[スキップコントローラ51について]
次に、上述したスキップ動作において、スキップコントローラ51の制御について説明する。ここでは、スキップ判定対象の実行命令(後続命令[PC:n+1])と先行する実行命令(先行命令[PC:n])および後続の実行命令(後続命令[PC:n+2])とが使用するハードウェアリソースの判定に係る動作について簡単に説明する。
図14に示すように、まず、ステップST1において、後続命令[PC:n+1]が使用する、全ハードウェアリソースをサーチする。
次いで、ステップST2において、上記ステップST1でのサーチの結果より、後続命令[PC:n+1]が演算またはメモリアクセスなどの実処理を行うパイプラインステージを特定する。
次いで、ステップST3において、後続命令[PC:n+1]よりもパイプラインステージの後段に位置する先行命令[PC:n]が使用するハードウェアリソースを、先行命令[PC:n]のスキップ動作を考慮した上で特定する。
次いで、ステップST4において、上記ステップST1でサーチされた後続命令[PC:n+1]が使用する全ハードウェアリソースと、上記ステップST3で特定された先行命令[PC:n]が使用するハードウェアリソースとを比較し、上記ステップST2で特定されたステージのハードウェアリソースを、上記ステップST3で特定された先行命令[PC:n]が使用するかを判定する。
次いで、上記ステップST4において、先行命令[PC:n]が、後続命令[PC:n+1]が使用するハードウェアリソースを使用しないと判定した場合、たとえば図15または図16に示すように、ステップST5において、後続命令[PC:n+1]の保持値を、実処理を行うステージの直前のパイプラインレジスタに、スキップ経路41を用いてスキップさせる(上述の、一段スキップ動作または二段スキップ動作参照)。
次いで、ステップST6において、直近のスキップ動作を、上記ステップST3での先行命令[PC:n]が使用するハードウェアリソースの特定のために反映させる。
一方、上記ステップST4において、先行命令[PC:n]が、後続命令[PC:n+1]が使用するハードウェアリソースを使用すると判定した場合、ステップST7において、後続命令[PC:n+1]が現ステージで使用しているハードウェアリソースを、さらに後続命令[PC:n+2]が直近で使用するかを判定する。
上記ステップST7で、後続命令[PC:n+2]が使用すると判定した場合、スキップコントローラ51は、スキップ動作は不可能と判断し、上記したステップST1〜の処理を繰り返す。
一方、上記ステップST7で、後続命令[PC:n+2]が使用しないと判定した場合、ステップST8において、上記ステップST2で特定したハードウェアリソースを、先行命令[PC:n]が解放したかを判定する。なお、解放されるまで、上記ステップST7,ST8の処理を繰り返すとともに、後続命令[PC:n+1]の保持値を、実処理を行うステージの数段前のパイプラインレジスタのホールド回路でホールドさせる。
そして、解放した場合には、たとえば図17に示すように、上記ステップST5において、後続命令[PC:n+1]の保持値を、実処理を行うステージの直前のパイプラインレジスタに、スキップ経路41を用いてスキップさせる(上述の、スキップAfterホールド動作参照)。
このようにして、スキップコントローラ51によって、処理の対象となる実行命令が、後段のパイプラインステージでの処理を必要とするか否かを判定し、必要としないステージをスキップさせることにより、スキップされるステージでの電力の無駄な消費を抑制できるようになる。
上記したように、パイプライン動作によって命令を実行するインオーダなパイプラインプロセッサにおいて、処理を必要としないパイプラインステージでのリソースのトグルを低下させることにより、余計な電力の消費を抑えるようにしている。すなわち、処理の対象となる実行命令が、後段のパイプラインステージでの処理を必要とするか否かを監視するスキップコントローラの判定にもとづき、必要としない処理を含むステージをスキップさせるようにしている。これにより、処理を必要としないステージでのリソースのトグルを低下させることが可能となる。したがって、スキップ命令などの特別な命令を必要とすることなしに、処理を必要としないステージでの余計な電力消費を抑制できるようになるものである。
なお、上述した実施例は、あくまでも一例として広く理解されるべきであり、本発明を限定するものではない。すなわち、プロセッサシステムとしては、多様なステージ数のパイプラインプロセッサに適用できるのは勿論であり、本実施例とは異なるハードウェアリソースを有するパイプラインプロセッサ、および、ハードウェアリソースの配置が異なるパイプラインプロセッサに対しても、同様に適用することが可能である。たとえば、図1および図13に示したようなスキップ経路41に限らず、スキップ経路41としては多様な配置が可能である。その一例としては、第2のステージS2内のADD/SUB演算器11の出力をパイプラインレジスタ31hへスキップさせるようなスキップ経路の配置も可能である。
また、パイプラインプロセッサがパイプライン動作により実行する命令列に関しても、実施例に限定されるものではない。
その他、本願発明は、上記(各)実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記(各)実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、(各)実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題(の少なくとも1つ)が解決でき、発明の効果の欄で述べられている効果(の少なくとも1つ)が得られる場合には、その構成要件が削除された構成が発明として抽出され得る。
S1〜S6…第1〜第6のパイプラインステージ、GPR…ジェネラル・パーパス・レジスタ、11…ADD/SUB演算器、12…CMP演算器、13…MUL演算器、14…LOGIC演算器、15…SHFT演算器、16…CLIP演算器、17…データメモリ、31a〜31l…パイプラインレジスタ、32,32a〜32l…ホールド回路、41…スキップ経路、51…スキップコントローラ。

Claims (5)

  1. 複数の実行命令からなる命令列を、各実行命令順にパイプライン処理する複数段のパイプラインステージと、
    前記パイプライン処理される各実行命令が、後段のパイプラインステージにおける処理を必要とするか否かを判定するコントローラと、
    前記コントローラの判定結果にもとづき、当該実行命令が後段のパイプラインステージにおける処理を必要としない実行命令の場合、その必要としない処理を含むパイプラインステージをスキップさせる転送経路と
    を具備したことを特徴とするプロセッサシステム。
  2. 前記複数段のパイプラインステージの相互間には、それぞれ、各段のパイプラインステージでパイプライン処理された、前記各実行命令に対するステージ間情報を保持するパイプラインレジスタが設けられていることを特徴とする請求項1に記載のプロセッサシステム。
  3. 前記コントローラは、当該実行命令が2以上のパイプラインステージにおける処理を必要としない実行命令の場合、その必要としない処理をそれぞれ含む、前記2以上のパイプラインステージを一度にスキップさせることを特徴とする請求項1に記載のプロセッサシステム。
  4. 前記コントローラは、前記命令列中に後段のパイプラインステージにおける処理を必要としない複数の実行命令が存在する場合、最も消費電力が高いパイプラインステージにおける処理を必要としない実行命令を優先的にスキップさせることを特徴とする請求項1に記載のプロセッサシステム。
  5. 各段のパイプラインステージでパイプライン処理されたステージ間情報をそれぞれホールドするホールド回路をさらに具備し、
    前記コントローラは、後続の実行命令が先行する実行命令を追い越せない場合、前記後続の実行命令をスキップさせようとするパイプラインステージを前記先行する実行命令が通過するまでの間、前記ホールド回路内に前記後続の実行命令に対するステージ間情報をホールドさせておき、前記先行する実行命令が前記パイプラインステージを通過した後に、前記転送経路を介して、前記パイプラインステージをスキップさせることを特徴とする請求項1に記載のプロセッサシステム。
JP2009039812A 2009-02-23 2009-02-23 プロセッサシステム Withdrawn JP2010198128A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009039812A JP2010198128A (ja) 2009-02-23 2009-02-23 プロセッサシステム
US12/610,537 US20100217961A1 (en) 2009-02-23 2009-11-02 Processor system executing pipeline processing and pipeline processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009039812A JP2010198128A (ja) 2009-02-23 2009-02-23 プロセッサシステム

Publications (1)

Publication Number Publication Date
JP2010198128A true JP2010198128A (ja) 2010-09-09

Family

ID=42631918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009039812A Withdrawn JP2010198128A (ja) 2009-02-23 2009-02-23 プロセッサシステム

Country Status (2)

Country Link
US (1) US20100217961A1 (ja)
JP (1) JP2010198128A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016027701A (ja) * 2014-07-04 2016-02-18 株式会社半導体エネルギー研究所 半導体装置、及び電子機器

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101493761B (zh) 2008-01-25 2013-05-29 国际商业机器公司 处理器流水线处理指令的方法及相应的处理器
US7945765B2 (en) * 2008-01-31 2011-05-17 International Business Machines Corporation Method and structure for asynchronous skip-ahead in synchronous pipelines
US9697580B2 (en) 2014-11-10 2017-07-04 Qualcomm Incorporated Dynamic pipeline for graphics processing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471626A (en) * 1992-05-06 1995-11-28 International Business Machines Corporation Variable stage entry/exit instruction pipeline
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
US6826678B2 (en) * 2002-04-11 2004-11-30 International Business Machines Corporation Completion monitoring in a processor having multiple execution units with various latencies
US20030226000A1 (en) * 2002-05-30 2003-12-04 Mike Rhoades Collapsible pipeline structure and method used in a microprocessor
KR20070004705A (ko) * 2004-03-10 2007-01-09 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 전자 회로와 그 동작 방법
US7076682B2 (en) * 2004-05-04 2006-07-11 International Business Machines Corp. Synchronous pipeline with normally transparent pipeline stages
US8868888B2 (en) * 2007-09-06 2014-10-21 Qualcomm Incorporated System and method of executing instructions in a multi-stage data processing pipeline

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016027701A (ja) * 2014-07-04 2016-02-18 株式会社半導体エネルギー研究所 半導体装置、及び電子機器

Also Published As

Publication number Publication date
US20100217961A1 (en) 2010-08-26

Similar Documents

Publication Publication Date Title
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
JP5145809B2 (ja) 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
JP5209933B2 (ja) データ処理装置
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
JP5491071B2 (ja) 命令融合演算装置および命令融合演算方法
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
JP2000132390A (ja) プロセッサ及び分岐予測器
US20110276792A1 (en) Resource flow computer
US20220214884A1 (en) Issuing instructions based on resource conflict constraints in microprocessor
JP2010198128A (ja) プロセッサシステム
JP4569934B2 (ja) 情報処理装置、例外制御回路及び例外制御方法
US7543135B2 (en) Processor and method for selectively processing instruction to be read using instruction code already in pipeline or already stored in prefetch buffer
JP2620505B2 (ja) スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム
JP4444305B2 (ja) 半導体装置
US11392410B2 (en) Operand pool instruction reservation clustering in a scheduler circuit in a processor
US20090070569A1 (en) Branch prediction device,branch prediction method, and microprocessor
CN111857830A (zh) 一种提前转发指令数据的通路设计方法、系统及存储介质
JP2021168036A (ja) 演算処理装置
US20080229074A1 (en) Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic
US20230205535A1 (en) Optimization of captured loops in a processor for optimizing loop replay performance
JP2006285721A (ja) 演算処理装置および演算処理方法
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
JP5013966B2 (ja) 演算処理装置
JP5505083B2 (ja) 情報処理装置
JP2011141619A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120501