JP2008299729A - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP2008299729A JP2008299729A JP2007147023A JP2007147023A JP2008299729A JP 2008299729 A JP2008299729 A JP 2008299729A JP 2007147023 A JP2007147023 A JP 2007147023A JP 2007147023 A JP2007147023 A JP 2007147023A JP 2008299729 A JP2008299729 A JP 2008299729A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- branch destination
- address
- control
- 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
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
【課題】分岐先に分岐すると判定したときに必要となるサイクル数を削減することが可能なプロセッサを提供すること。
【解決手段】命令デコーダ3は、フェッチされた命令コードをデコードする。メモリ/演算制御部5は、命令デコーダ3によるデコード結果に応じて演算を実行する。アドレス制御/書き込みマスク制御部7は、命令コードが分岐命令であり、かつ分岐すると判定した場合に、当該分岐命令から分岐先命令までのアドレスが所定値以内であれば、分岐制御を行なわずに分岐命令に続く命令を順次実行するよう制御する。したがって、分岐先命令をプリフェッチする場合と比較して分岐先命令を実行するまでの時間を短縮することが可能となる。
【選択図】図1
【解決手段】命令デコーダ3は、フェッチされた命令コードをデコードする。メモリ/演算制御部5は、命令デコーダ3によるデコード結果に応じて演算を実行する。アドレス制御/書き込みマスク制御部7は、命令コードが分岐命令であり、かつ分岐すると判定した場合に、当該分岐命令から分岐先命令までのアドレスが所定値以内であれば、分岐制御を行なわずに分岐命令に続く命令を順次実行するよう制御する。したがって、分岐先命令をプリフェッチする場合と比較して分岐先命令を実行するまでの時間を短縮することが可能となる。
【選択図】図1
Description
本発明は、プロセッサにおける分岐制御に関し、特に、分岐先に分岐すると判定したときに必要となるサイクル数を削減するように分岐制御を行なうプロセッサに関する。
一般に、プロセッサはパイプライン方式を採用しており、フェッチした命令コードが分岐命令の場合にパイプラインにおいてハザードが発生する可能性がある。ハザードが発生する可能性は、分岐予測をすることによってある程度減らすことができるが、なくすことはできない。
図3は、従来のプロセッサにおいて分岐命令を実行したときのパイプライン処理の一例を示す図である。図3(a)は、分岐命令を実行して分岐しないと判定された場合のパイプライン処理の一例を示す図である。
図3(a)において、F1〜F4は命令フェッチ(F)ステージにおける命令1〜4の処理を示し、D1〜D4は命令デコード(D)ステージにおける命令1〜4の処理を示し、E1〜E4は演算実行(E)ステージにおける命令1〜4の処理を示し、W1〜W4はライトバック(W)ステージにおける命令1〜4の処理を示している。なお、Eステージにおいて、アドレス計算も実行される。
サイクルT1において命令1がフェッチされ、サイクルT2において命令1がデコードされ、サイクルT3において命令1が実行される。サイクルT2〜T3において、命令2および命令3が順次フェッチされ、命令2のデコードが行なわれる。
サイクルT4において、命令1の実行によって分岐しないことが決定する。この場合には、サイクルT5以降において、パイプラインに入っている命令2〜命令4の処理がそのまま続行される。
図3(b)は、分岐命令を実行して分岐すると判定された場合のパイプライン処理の一例を示す図である。図3(a)と同様に、サイクルT1において命令1がフェッチされ、サイクルT2において命令1がデコードされ、サイクルT3において命令1が実行される。
サイクルT4において、命令1の実行によって分岐することが決定する。この場合には、サイクルT5〜T8において、4サイクルのプリフェッチが行なわれる。そして、サイクルT9において、分岐先命令nのフェッチが行なわれる。したがって、すでにパイプラインに入っている命令2〜命令4が破棄される。
なお、サイクルT5〜T8でプリフェッチが行なわれるため、それに対応してDステージ、EステージおよびWステージのそれぞれにおいてストールが発生している。
これに関連する技術として、下記の特許文献1に開示された発明がある。特許文献1に開示された情報処理装置においては、デコーダを含む第1命令レジスタと第2命令レジスタ、第1分岐命令検出回路と第2分岐命令検出回路とにより、パイプラインのDステージの処理を2つ同時に実行する。第1セレクタは、オペランド用アドレス加算器および命令用アドレス加算器に供給する命令をセレクトし、第2セレクタは、分岐判定回路に供給する条件付分岐命令のマスクフィールドの状態を示す情報をセレクトする。また、第3セレクタは、命令列選択回路および命令用アドレス加算器に供給する分岐命令検出信号をセレクトする。第1セレクタ、第2セレクタおよび第3セレクタは、命令列選択回路の出力により制御される。
特開平9−274566号公報
図3を用いて説明したように、分岐命令を実行して分岐することが決定した場合、すでにパイプラインに入っている命令を破棄してプリフェッチを行なう必要があるため、大幅なペナルティが発生するといった問題点があった。
また、特許文献1に開示された情報処理装置は、分岐命令の次命令からのパイプライン処理と、分岐先命令のパイプライン処理とを同時に実行させるため、分岐命令を含む命令列のパイプラインの処理速度を向上させることができる。しかしながら、2つのパイプライン処理を同時に実行させる必要があるため、回路規模が大きくなるといった問題点があった。
本発明は、上記問題点を解決するためになされたものであり、その目的は、分岐先に分岐すると判定したときに必要となるサイクル数を削減することが可能なプロセッサを提供することである。
本発明のある局面に従えば、プロセッサは、命令コードをフェッチする命令フェッチ手段と、命令フェッチ手段によってフェッチされた命令コードをデコードする命令デコード手段と、命令デコード手段によるデコード結果に応じて演算を実行する演算実行手段と、命令コードが分岐命令であり、かつ分岐すると判定した場合に、当該分岐命令から分岐先命令までのアドレスが所定値以内であれば、分岐制御を行なわずに分岐命令に続く命令を順次実行するよう制御する制御手段とを含む。
好ましくは、所定値は、分岐先命令をプリフェッチするときに必要となるクロック数とパイプラインの段数との和である。
好ましくは、制御手段は、分岐命令に続く命令を順次実行するときに、レジスタまたはデータメモリへの演算結果の書き込みをマスクする。
さらに好ましくは、制御手段は、分岐命令の次の命令から分岐先命令の前の命令までの演算結果の書き込みをマスクする。
本発明のある局面によれば、制御手段は、命令コードが分岐命令であり、かつ分岐すると判定した場合に、当該分岐命令から分岐先命令までのアドレスが所定値以内であれば、分岐制御を行なわずに分岐命令に続く命令を順次実行するよう制御するので、分岐先命令をプリフェッチする場合と比較して分岐先命令を実行するまでの時間を短縮することが可能となる。
また、所定値が、分岐先命令をプリフェッチするときに必要となるクロック数とパイプラインの段数との和であるので、分岐先命令をプリフェッチする場合と比較して分岐先命令を実行するまでの時間を短縮できるか否かを容易に判定することが可能となる。
また、制御手段は、分岐命令に続く命令を順次実行するときに、レジスタまたはデータメモリへの演算結果の書き込みをマスクするだけであるので、回路規模を増大させずに分岐制御を行なうことが可能となる。
また、制御手段は、分岐命令の次の命令から分岐先命令の前の命令までの演算結果の書き込みをマスクするので、不要なデータ書き込みが行なわれるのを防止することが可能となる。
図1は、本発明の実施の形態におけるプロセッサの概略構成を示すブロック図である。このプロセッサは、プログラムカウンタ(PC)1と、命令メモリ2と、命令デコーダ3と、レジスタ4と、メモリ/演算制御部5と、データメモリ6と、アドレス制御/書き込みマスク制御部7と、加算器8と、フリップフロップ(FF)9〜11とを含む。
命令メモリ2およびデータメモリ6は、SDRAM(Synchronous Dynamic Random Access Memory)、SRAM(Static Random Access Memory)などによって構成され、キャッシュメモリを搭載するようにしてもよい。
レジスタ4は、汎用レジスタ、アキュムレータ、スタックポインタなどによって構成される。なお、図示していないが、プロセッサは算術演算、論理演算などを行なう演算器を備えている。メモリ/演算制御部5は、命令デコーダ3のデコード結果に応じて、演算器に演算を行なわせる。この演算器は、アドレス計算にも使用される。
FF9〜11は、各ステージ間に設けられ、クロックに同期して前段のステージの内容を次段のステージに転送する、
命令フェッチ(F)ステージにおいて、PC1のアドレスに応じて命令メモリ2から命令コードがフェッチされる。FF9は、フェッチされた命令コードと、PC1のアドレスとを次段の命令デコード(D)ステージに転送する。
命令フェッチ(F)ステージにおいて、PC1のアドレスに応じて命令メモリ2から命令コードがフェッチされる。FF9は、フェッチされた命令コードと、PC1のアドレスとを次段の命令デコード(D)ステージに転送する。
命令デコード(D)ステージにおいて、命令デコーダ3は、FF9から受けた命令コードをデコードし、デコード結果をFF10に出力する。このとき、命令がレジスタ4の内容を参照する命令であれば、レジスタ4の内容が読み出されてFF10に出力される。FF10は、デコード結果、読み出したレジスタ4の内容およびその命令のアドレスを次段の演算実行(E)ステージに転送する。
演算実行(E)ステージにおいて、メモリ/演算制御部5は、FF10から受けたデコード結果およびレジスタ4の内容に応じて演算を実行する。このとき、命令がデータメモリ6の内容を参照する命令であれば、メモリ/演算制御部5はデータメモリ6の内容を読み出す。FF11は、演算結果、読み出したデータメモリ6の内容およびその命令のアドレスを次段のライトバック(W)ステージに転送する。
ライトバック(W)ステージにおいて、アドレス制御/書き込みマスク制御部7は、FF11から受けた演算結果に応じて分岐するか否かを判定し、判定結果に応じてアドレス制御を行なう。また、アドレス制御/書き込みマスク制御部7は、FF11から受けた演算結果の書き込み制御を行なう。
本実施の形態においては、分岐先命令をプリフェッチするときに必要となるクロック数とパイプラインの段数とから、分岐するか否かを判定する値Sを次式によって計算する。
S=プリフェッチクロック数+パイプライン段数 …(1)
なお、以下の説明においては、プリフェッチクロック数を4、パイプライン段数を4として説明する。
なお、以下の説明においては、プリフェッチクロック数を4、パイプライン段数を4として説明する。
アドレス制御/書き込みマスク制御部7は、分岐すると判定した場合であって、分岐先がPC1の位置から正方向に8以内、すなわち分岐先のアドレス変位量(分岐先アドレス−PC1の値)が8以内であれば、PC1の値が分岐先アドレスとなるまで分岐しない場合と同様の処理を行なう。このとき、アドレス制御/書き込みマスク制御部7は、レジスタ4およびデータメモリ6への書き込みをマスクする。
また、アドレス制御/書き込みマスク制御部7は、分岐すると判定した場合であって、分岐先のアドレス変位量が8より大きい、または負の値であれば、図3(b)を用いて説明したのと同様に、分岐先命令をプリフェッチする。
なお、次命令をフェッチする場合には、アドレス制御/書き込み制御部7は所定の値を加算器8に出力する。また、分岐先命令をフェッチする場合には、アドレス制御/書き込みマスク制御部7はアドレス変位量を加算器8に出力する。加算器8は、FF11から受けたアドレスとアドレス制御/書き込みマスク制御部7から受けた値とを加算して、PC1に書き込む。
図2は、本発明の実施の形態におけるプロセッサのパイプライン処理の一例を示す図である。サイクルT1において命令1がフェッチされ、サイクルT2において命令1がデコードされ、サイクルT3において命令1が実行される。
命令1の実行によって分岐することが決定するが、分岐先がF6であり、アドレス変位量が正の値であり8以下であるので、サイクルT4以降において、分岐しない場合と同様の処理を続行するとともに、アドレス制御/書き込みマスク制御部7は、レジスタ4およびデータメモリ6にマスク信号を出力する。
サイクルT6において分岐先命令6がフェッチされ、サイクルT7において分岐先命令6がデコードされ、サイクルT8において分岐先命令6が実行される。このサイクルT8において、アドレス制御/書き込みマスク制御部7は、レジスタ4およびデータメモリ6のマスクを解除する。
なお、以上の説明においては、分岐するか否かの判定をライトバック(W)ステージで行なうようにした。分岐命令が条件分岐命令の場合には、演算結果に応じて分岐するか否かを判定するため、ライトバック(W)ステージでそれを判定する必要がある。
一方、分岐命令が無条件分岐命令の場合には、命令をデコードした時点で分岐することが判定できる。したがって、無条件分岐命令の場合には、命令デコード(D)ステージで分岐することを判定し、分岐先がS以内であるか否かを判定してパイプライン制御を行なうようにしてもよい。
以上説明したように、本実施の形態におけるプロセッサによれば、分岐命令の実行によって分岐することが決定した場合でも、分岐先がPC1の位置から正方向にある値以内であれば、レジスタ4およびデータレジスタ6への書き込みをマスクするとともに、分岐しない場合と同様の処理を続行するようにしたので、分岐先命令をプリフェッチする場合と比較して分岐先命令を実行するまでの時間を短縮することが可能となった。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 PC、2 命令メモリ、3 命令デコーダ、4 レジスタ、5 メモリ/演算制御部、6 データメモリ、7 アドレス制御/書き込みマスク制御部、8 加算器、9〜11 FF。
Claims (4)
- 命令コードをフェッチする命令フェッチ手段と、
前記命令フェッチ手段によってフェッチされた命令コードをデコードする命令デコード手段と、
前記命令デコード手段によるデコード結果に応じて演算を実行する演算実行手段と、
前記命令コードが分岐命令であり、かつ分岐すると判定した場合に、当該分岐命令から分岐先命令までのアドレスが所定値以内であれば、分岐制御を行なわずに分岐命令に続く命令を順次実行するよう制御する制御手段とを含むプロセッサ。 - 前記所定値は、分岐先命令をプリフェッチするときに必要となるクロック数とパイプラインの段数との和である、請求項1記載のプロセッサ。
- 前記制御手段は、分岐命令に続く命令を順次実行するときに、レジスタまたはデータメモリへの演算結果の書き込みをマスクする、請求項1または2記載のプロセッサ。
- 前記制御手段は、分岐命令の次の命令から分岐先命令の前の命令までの演算結果の書き込みをマスクする、請求項3記載のプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007147023A JP2008299729A (ja) | 2007-06-01 | 2007-06-01 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007147023A JP2008299729A (ja) | 2007-06-01 | 2007-06-01 | プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008299729A true JP2008299729A (ja) | 2008-12-11 |
Family
ID=40173171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007147023A Pending JP2008299729A (ja) | 2007-06-01 | 2007-06-01 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008299729A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
KR20140134421A (ko) * | 2013-05-14 | 2014-11-24 | 한국전자통신연구원 | 이중 명령어 페치 장치 및 방법 |
CN105824603A (zh) * | 2016-03-14 | 2016-08-03 | 西南交通大学 | 一种基于cisc指令集的流水线取指和译码方法 |
US10853081B2 (en) | 2017-11-29 | 2020-12-01 | Sanken Electric Co., Ltd. | Processor and pipelining method |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04373023A (ja) * | 1991-06-21 | 1992-12-25 | Fujitsu Ltd | データ処理装置 |
JPH10124315A (ja) * | 1996-10-18 | 1998-05-15 | Hitachi Ltd | 分岐処理方法およびそのための情報処理装置 |
JPH10124314A (ja) * | 1996-10-18 | 1998-05-15 | Hitachi Ltd | データプロセッサ及びデータ処理システム |
JP2002082800A (ja) * | 2000-09-06 | 2002-03-22 | Sanyo Electric Co Ltd | プログラム実行装置及び方法 |
JP2006309454A (ja) * | 2005-04-27 | 2006-11-09 | Denso Corp | プログラム制御方法及びプロセッサ |
-
2007
- 2007-06-01 JP JP2007147023A patent/JP2008299729A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04373023A (ja) * | 1991-06-21 | 1992-12-25 | Fujitsu Ltd | データ処理装置 |
JPH10124315A (ja) * | 1996-10-18 | 1998-05-15 | Hitachi Ltd | 分岐処理方法およびそのための情報処理装置 |
JPH10124314A (ja) * | 1996-10-18 | 1998-05-15 | Hitachi Ltd | データプロセッサ及びデータ処理システム |
JP2002082800A (ja) * | 2000-09-06 | 2002-03-22 | Sanyo Electric Co Ltd | プログラム実行装置及び方法 |
JP2006309454A (ja) * | 2005-04-27 | 2006-11-09 | Denso Corp | プログラム制御方法及びプロセッサ |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
CN101894013B (zh) * | 2010-07-16 | 2013-07-31 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
KR20140134421A (ko) * | 2013-05-14 | 2014-11-24 | 한국전자통신연구원 | 이중 명령어 페치 장치 및 방법 |
CN105824603A (zh) * | 2016-03-14 | 2016-08-03 | 西南交通大学 | 一种基于cisc指令集的流水线取指和译码方法 |
US10853081B2 (en) | 2017-11-29 | 2020-12-01 | Sanken Electric Co., Ltd. | Processor and pipelining method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
JPH1124929A (ja) | 演算処理装置およびその方法 | |
KR20090061644A (ko) | 명시적 서브루틴 호출의 브랜치 예측 동작을 에뮬레이트하기 위한 방법 및 장치 | |
US9851973B2 (en) | Dynamic branch hints using branches-to-nowhere conditional branch | |
JP5941488B2 (ja) | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 | |
JP2009181163A (ja) | マイクロプロセッサならびにビット・ベクタのエンコーディング方法およびビット・ベクタの生成方法 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
JP4243271B2 (ja) | データ処理装置およびデータ処理方法 | |
JP2008299729A (ja) | プロセッサ | |
JP7048612B2 (ja) | ベクトル生成命令 | |
JP2003263313A (ja) | デジタルプロセッサおよび命令の選択方法 | |
US20140365751A1 (en) | Operand generation in at least one processing pipeline | |
KR20160108754A (ko) | 파이프라인 구조의 프로세서에서의 무조건 분기 명령어 처리 방법 | |
JP5292831B2 (ja) | プログラマブルコントローラ | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
JP2536726B2 (ja) | マイクロプロセッサ | |
JP7487535B2 (ja) | 演算処理装置 | |
JP2007317083A (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
JP2503223B2 (ja) | 先行制御方式 | |
JP2835179B2 (ja) | 並列処理計算機 | |
JP2011065522A (ja) | ベクトル処理装置、ベクトル処理方法、およびプログラム | |
JPH0247725A (ja) | データ処理装置 | |
JP2003223318A (ja) | キュープロセッサにおける投機実行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20090911 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Effective date: 20110621 Free format text: JAPANESE INTERMEDIATE CODE: A971007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110726 |
|
A02 | Decision of refusal |
Effective date: 20111122 Free format text: JAPANESE INTERMEDIATE CODE: A02 |