JP2006309454A - プログラム制御方法及びプロセッサ - Google Patents

プログラム制御方法及びプロセッサ Download PDF

Info

Publication number
JP2006309454A
JP2006309454A JP2005130382A JP2005130382A JP2006309454A JP 2006309454 A JP2006309454 A JP 2006309454A JP 2005130382 A JP2005130382 A JP 2005130382A JP 2005130382 A JP2005130382 A JP 2005130382A JP 2006309454 A JP2006309454 A JP 2006309454A
Authority
JP
Japan
Prior art keywords
skip
instruction
address
destination address
data
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.)
Granted
Application number
JP2005130382A
Other languages
English (en)
Other versions
JP4889235B2 (ja
Inventor
Akimasa Niwa
章雅 丹羽
Takayuki Matsuda
高幸 松田
Hideaki Ishihara
秀昭 石原
Masahiro Kamiya
政裕 神谷
Toshihiko Matsuoka
俊彦 松岡
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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2005130382A priority Critical patent/JP4889235B2/ja
Priority to US11/312,830 priority patent/US7725694B2/en
Publication of JP2006309454A publication Critical patent/JP2006309454A/ja
Application granted granted Critical
Publication of JP4889235B2 publication Critical patent/JP4889235B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

【課題】 命令の有効無効に関わらず、実行サイクルを一定にすることができるプログラム制御方法およびプロセッサを提供する。
【解決手段】 CPU10は条件判定の際、条件が成立した場合に、それ以降の一ないし連続する複数の命令を無効化するスキップ処理を行う。CPU10はスキップ処理にてそれ以降の命令を無効とする場合にも、命令のシーケンス制御は継続して実行し、データの書き込みのみ禁止する。
【選択図】 図1

Description

本発明は、コンピュータのプロセッサに係り、特に、条件判定により条件が成立した場合にそれ以降の命令を無効化するスキップ処理のためのプログラム制御方法に関するものである。
CPU(プロセッサ)において、プログラムの条件分岐を制御する方式として、従来、
(i)命令セットに条件付き分岐命令などを有し、条件が成立した場合、指定のアドレスまでジャンプする方式や、
(ii)命令セットにスキップ命令を有し、直後の一ないし連続する複数の命令を無効とする方式
がある。例えば特許文献1には、スキップ時に命令をNOP化(ノー・オペレーション化)する技術が開示されている。
特開昭61−221939号公報
(i),(ii)のいずれの場合も、条件成立時と非成立時では実行サイクル数が異なるため、命令の実行タイミングが重要なプログラム及びそのシステムにおいて、分岐処理後(命令のNOP化を伴うスキップ処理の後)の命令を同じサイクルタイミングにて実行できないという問題がある。
(ii)の方式においては、例えば、バス幅を超えるデータサイズのロードストア命令など、命令の実行に複数サイクルを要すものがそれに該当する。
本発明は上記問題点に着目してなされたものであり、その目的は、命令の有効無効に関わらず、実行サイクルを一定にすることができるプログラム制御方法およびプロセッサを提供することにある。
請求項1に記載の発明は、条件判定の際、条件が成立した場合に、それ以降の一ないし連続する複数の命令を無効化する、プロセッサのスキップ処理のためのプログラム制御方法であって、スキップ処理にてそれ以降の命令を無効とする場合にも、命令のシーケンス制御は継続して実行し、データの書き込みのみ禁止するようにしたプログラム制御方法をその要旨とする。
請求項1に記載の発明によれば、スキップ処理にてそれ以降の命令を無効とする場合にも、命令のシーケンス制御は継続して実行され、データの書き込みのみ禁止される。よって、命令無効時にも命令有効時と同じサイクル数を消費させて、命令の有効無効に関わらず、実行サイクルを一定にすることができる。
請求項2に記載のように、請求項1に記載のプログラム制御方法において、命令セットに、前方のみに分岐することを許可された条件付き分岐命令を有し、条件付き分岐命令を実行した際、条件が成立した場合に、それ以降の命令を無効化するスキップ処理を開始すると、条件付き分岐命令によりスキップ処理を開始することによって、スキップ命令に比べ、命令数が少なくて済む。また、スキップ処理用の命令を実装しなくてよい。
請求項3に記載のように、請求項2に記載のプログラム制御方法において、前記条件付き分岐命令で指定された分岐先アドレスと、プログラムカウンタの現在のアドレスが、
分岐先アドレス≦現在のアドレス
となったことをトリガとしてスキップ処理を終了すると、スキップ無効命令を挿入する場合に比べ、命令数が少なくて済む。また、スキップ処理用の命令を実装しなくてよい。
請求項4に記載の発明は、条件判定に基づき条件が成立した場合に、それ以降の一ないし連続する複数の命令を無効化するスキップ処理制御手段を備えたプロセッサであって、前記スキップ処理制御手段は、スキップ処理中は命令の種類に関わらず、プロセッサ内外に対するデータの書き込みを禁止し続けるプロセッサをその要旨とする。
請求項4に記載の発明によれば、スキップ処理制御手段が、スキップ処理中は命令の種類に関わらず、プロセッサ内外に対するデータの書き込みを禁止し続けることにより、命令無効時にも命令有効時と同じサイクル数を消費させて、命令の有効無効に関わらず、実行サイクルを一定にすることができる。
請求項5に記載のように、請求項4に記載のプロセッサにおいて、前記スキップ処理制御手段は、命令によるデータの書き込みを制御するスキップ状態フラグを備え、前記スキップ状態フラグは、スキップ処理開始命令を実行することでスキップ状態にセットされ、スキップ処理終了命令を実行することで通常状態にリセットされるものであると、スキップ状態フラグをセット/リセットすることができる。
請求項6に記載のように、請求項4に記載のプロセッサにおいて、前記スキップ処理制御手段は、命令によるデータの書き込みを制御するスキップ状態フラグを備え、前記スキップ状態フラグは、条件付き分岐命令における条件が成立した場合にスキップ状態にセットされるものであると、スキップ状態フラグをセットする構成として好ましいものとなる。
請求項7に記載のように、請求項6に記載のプロセッサにおいて、前記スキップ処理制御手段は、前記条件付き分岐命令によって指定される分岐先アドレスを保持するための分岐先アドレスレジスタと、分岐先アドレスレジスタの分岐先アドレスとプログラムカウンタの現在のアドレスを比較するアドレス比較手段と、を備え、前記アドレス比較手段は、
分岐先アドレス≦現在のアドレス
となったことをトリガにして、前記スキップ状態フラグを通常状態にリセットするものであると、フラグをリセットする構成として好ましいものとなる。
請求項8に記載のように、請求項7に記載のプロセッサにおいて、前記アドレス比較手段は、データパスの内部の算術論理演算ユニットで構成され、スキップ状態フラグがスキップ状態にセットされている場合には、前記算術論理演算ユニットに、分岐先アドレスレジスタの分岐先アドレスとプログラムカウンタの現在のアドレスを入力し、前記算術論理演算ユニットより出力されるコンディションコードが
分岐先アドレス≦現在のアドレス
となったことをトリガにして、スキップ状態フラグを通常状態にリセットすると、分岐先アドレスレジスタの分岐先アドレスとプログラムカウンタの現在のアドレスの比較を実行する構成として、データパスの内部の算術論理演算ユニットを用いることによってリソースの活用による小型化を図ることができる。
請求項9に記載のように、請求項5〜8のいずれか1項に記載のプロセッサにおいて、前記スキップ処理制御手段は、割り込み発生時に前記スキップ状態フラグのフラグデータをレジスタないしメモリへ退避するフラグデータ退避手段と、復帰命令により、退避した前記フラグデータをスキップ状態フラグに復帰するフラグデータ復帰手段と、を備えることにより、割り込み時のスキップ処理を継続することができる。
(第1の実施の形態)
以下、本発明を具体化した第1の実施形態を図面に従って説明する。
図1は、本実施形態のマイクロコンピュータにおけるCPU(プロセッサ)の内部構成を示すブロック図である。図2には、CPUの命令実行動作、特にパイプライン動作の一例を示す。
図1において、CPU10は制御ユニット20とデータパス30で構成されている。データパス30は、データの格納や、算術・論理演算を実行する。制御ユニット20は、メモリから取り込んだ命令に応じ、データパス30を制御する。
制御ユニット20は命令デコーダ21とスキップ処理制御ユニット22で構成されている。命令デコーダ21は、メモリより取り込んだ命令を格納し、取り込んだ命令を解読する。スキップ処理制御手段としてのスキップ処理制御ユニット22は、条件分岐における条件判定の際、条件が成立した場合に、それ以降の一ないし連続する複数の命令を無効化するスキップ処理を行うためのものである。スキップ処理制御ユニット22は、命令デコーダ21より出力される、スキップ処理開始信号とスキップ処理終了信号から、スキップ状態か否かを判断し、CPU10の内外部に対し、データの書き込みを制御する。
データパス30は、ロードストアユニット31と実行ユニット32とレジスタファイル33とプログラム状態レジスタ34とプログラムカウンタ35で構成されている。ロードストアユニット31は、CPU10の外部からのデータ読み込み及び、外部へのデータ書き込みを制御する。実行ユニット32は、命令デコーダ21で解読された命令に従い、制御ユニット20より出力される、制御信号に応じて、所定の算術・論理演算を実行する。レジスタファイル33は、実行ユニット32により実行された結果のデータもしくはメモリ等のCPU10の外部より取り込まれたデータを格納する。プログラム状態レジスタ34は、CPU10の処理状態を保持する。プログラムカウンタ35はフェッチする命令のアドレスを示す。
ここで、CPU10と、CPU10の外部の周辺回路を接続するバスが、データバス40とアドレスバス41の2種類のバスで構成されており、図1のCPU10のバスアーキテクチャはノイマンバス構成となっている。
CPU10は、図2に示すように、5種類のステージからなるパイプライン処理にて、プログラムを実行するものである。
5種類のステージとは、IF(命令フェッチ)ステージと、DEC(デコード)ステージと、EXE(実行)ステージと、MA(メモリアクセス)ステージと、WB(ライトバック)ステージである。IF(命令フェッチ)ステージは、メモリから命令を読み込むステージである。DEC(デコード)ステージは、IFステージで読み込んだ命令を解読するステージである。EXE(実行)ステージは、DECステージで解読された命令の内容に応じて、算術・論理演算やIFステージで読み込むべき命令のアドレスやメモリへアクセスする際のアドレス等を演算するステージである。MA(メモリアクセス)ステージは、DECステージで解読された命令の内容に応じて、EXE(実行)ステージでの演算結果をアドレスとしてメモリへのアクセスを行うステージである。WB(ライトバック)ステージは、DECステージで解読された命令の内容に応じて、演算データもしくはメモリから取り込んだデータを内部レジスタに書き込むステージである。
ノイマンバス構成下のパイプライン処理においては、先に述べた5種類のステージによる、5段のパイプラインを構築した場合、メモリより命令を取り込むIFステージと、メモリに対し、データの書き込みもしくは読み出しを行う、MAステージが競合する。
そこで、IFステージとMAステージの競合を避けるために種々の方策が存在するが、競合回避の一例としての図2のパイプライン動作について説明する。
図2において、メモリへのアクセスを必要としない命令A,B,D及びスキップ命令は、IF、DEC、EXE、WBの4つのステージでパイプラインが構成されており、命令実行後(EXEステージ)、次のステージにて結果がレジスタに書き込まれる(WBステージ)。一方、ストア命令などメモリアクセスを必要とする命令Cは、EXEステージとWBステージの間にMAステージが挿入され、5種類のステージにてパイプラインが構成される。ただし、命令CのMAステージ実行中は、他命令のパイプラインをストールさせる。こうすることで、メモリアクセスが必要な命令のみ、2サイクル必要となるが、IFステージとMAステージの競合を避けることができる。
以上、述べたようなCPU構成による、スキップ処理の手順を説明する。
図1において、プログラムカウンタ35の値(アドレス)がアドレスバス41から出力され、バス41に接続されたROMより該当する命令がデータバス40に出力される。CPU10においてロードストアユニット31を介してデータバス40上のデータを取り込み、命令デコーダ21に格納する。命令デコーダ21は、フェッチした命令の内容を解読し、解読した命令の内容に応じて、データパス30及び、CPU10の外部に対して所定の制御を行う。
例えば、フェッチした命令が、レジスタR10とレジスタR11のデータを加算し、レジスタR11に書き込むという命令の場合、制御ユニット20は、実行ユニット32に対し、レジスタR10とレジスタR11のデータを入力し、加算オペレーションを指示する他、レジスタファイル33に対し、実行結果を入力し、レジスタR11に書き込み許可を指示する。
ここで、条件付き分岐命令であった場合には次のようにする。つまり、前処理の実行結果に基づいて条件判定を行い、次命令以下をジャンプする場合には次のようにする。
フェッチした命令がスキップ処理開始命令の場合は、命令デコーダ21よりスキップ処理制御ユニット22に対しスキップ処理開始信号が出力される。また、フェッチした命令がスキップ処理終了命令の場合は、命令デコーダ21よりスキップ処理制御ユニット22に対しスキップ処理終了信号が出力される。
スキップ処理制御ユニット22は、スキップ状態か通常状態かを示すスキップ状態フラグ22aを備えており、スキップ状態フラグ22aは、命令によるデータの書き込みを制御するためのものである。このスキップ状態フラグ22aは、スキップ処理開始信号を受けてスキップ状態にセットされ、スキップ処理終了信号を受けて通常状態にリセットされる。
スキップ状態フラグ22aがセットされスキップ状態を示している場合には、命令デコーダ21から出力される書き込み制御信号の状態に関わらず、メモリを含む周辺回路への書き込みを制御する、外部書き込み制御信号、及び、レジスタファイル33など内部レジスタへの書き込みを制御する、内部書き込み制御信号として、書き込み禁止を出力する。これにより、スキップ処理にてそれ以降の命令を無効とする場合には、命令のシーケンス制御は継続して実行され、データの書き込みのみ禁止される。
以上に示した、スキップ処理制御手段としてのスキップ処理制御ユニット22について、スキップ処理中のパイプライン動作を用い(図2,3,4)、一般例と比較しながらより詳細に説明する。
図2においては、スキップ処理開始命令とスキップ処理終了命令の間である、命令A〜命令Dをスキップする例を示している。
図3は、一般的なスキップ処理中のパイプライン動作を、図4は、本実施形態におけるスキップ処理中のパイプライン動作を示している。
まず、図3の一般例の動作図について説明する。
一般的なスキップ処理制御手法では、スキップ処理開始命令が実行された後、以降の命令をNOP(ノー・オペレーション命令)化する。このとき、図2における命令Cが、実行に2サイクルを要するストア命令だった場合、NOP化によって、MAステージがなくなる。従って、スキップ処理しない場合に比べて、1サイクル短くなり、命令A〜命令Dに係るサイクル数(実行サイクル数)は「4」となる。
一方、図4の本実施形態によれば、スキップ処理開始命令が実行された後も、命令がNOP化されるわけではなく、データの書き込みのみ禁止される。
図4中の命令C(ストア命令)を例に説明すると、スキップ状態フラグは、スキップ処理開始命令を実行することでスキップ状態にセットされ、スキップ処理終了命令を実行することで通常状態にリセットされる。スキップ処理制御ユニット22は、スキップ状態フラグがスキップ状態の間も、命令のシーケンス制御はそのまま継続して実行し、書き込み制御信号を書き込み禁止にする。即ち、スキップ処理中は命令の種類に関わらず、CPU内外に対するデータの書き込みを禁止し続ける。そのため、MAステージでは、データの書き込みが禁止される。よって、ストア命令は実質的に無効となるが、消費サイクルは命令有効時と同じ2サイクルとなる。従って、スキップ処理区間である、命令A〜命令Dに係るサイクル数(実行サイクル数)は、命令の種類に関わらず、命令有効時と同じ「5」となる。つまり、命令の実行サイクルを命令の有効無効に関わらず、一定とすることができ、命令A〜Dの命令群をスキップした場合としない場合とで、処理にかかるサイクル数を同じとすることができる。
このように、本方式は、条件判定の結果、条件が成立し、スキップ処理にてそれ以降の命令を無効化する場合においても、命令のシーケンス制御は継続して行い、データの書き込みのみ禁止することで、条件判定の成立、不成立に関わらず、一定のインストラクションサイクル数を消費させる(スキップ処理制御による命令の有効無効に関わらず、常に同じインストラクションサイクルを消費することができる)。つまり、スキップ処理を実行した場合と実行しなかった場合、いずれの場合においても、スキップ処理終了後の命令の実行タイミングを同じにすることができる。例えば、命令1から命令2の間がスキップ処理区間であり(命令1から命令2の間が条件分岐区間であり)、命令2の命令1に対する実行タイミングを常に一定としたいプログラムにおいて非常に効果的である(命令の実行タイミングが重要な場合において、プログラムの条件分岐による実行サイクルのずれを防ぐことができる)。
以上のごとく、本実施形態は下記の特徴を有する。
プログラム制御方法として、条件成立時に、それ以降の一ないし連続する複数の命令を無効化するスキップ処理を行う際に、スキップ処理にてそれ以降の命令を無効とする場合にも、命令のシーケンス制御は継続して実行し、データの書き込みのみ禁止するようにした。これにより、命令無効時にも命令有効時と同じサイクル数を消費させて、命令の有効無効に関わらず、実行サイクルを一定にすることができる。
CPU(プロセッサ)として、条件判定に基づき条件が成立した場合に、それ以降の一ないし連続する複数の命令を無効化するスキップ処理制御ユニット22を備えたCPU(プロセッサ)であって、スキップ処理制御ユニット22は、スキップ処理中は、1サイクル命令や2サイクル命令といった命令の種類に関わらず、プロセッサ内外(プロセッサ内外部)に対するデータの書き込みを禁止し続ける。よって、命令無効時にも命令有効時と同じサイクル数を消費させて、命令の有効無効に関わらず、実行サイクルを一定にすることができる。このようにして、スキップ中にデータの書き込みを禁止するための基本構成を構築することができる。
ここで、スキップ処理制御ユニット22は、命令によるデータの書き込みを制御するスキップ状態フラグ(22a)を備え、スキップ状態フラグ(22a)は、スキップ処理開始命令を実行することでスキップ状態にセットされ、スキップ処理終了命令を実行することで通常状態にリセットされるので、スキップ状態フラグをセット/リセットすることができる。
(第2の実施の形態)
次に、第2の実施形態を、第1の実施形態との相違点を中心に説明する。
図5には、図4に代わる本実施形態におけるスキップ処理中のパイプライン動作図を示す。
第1の実施形態に比べ本実施形態においては、図4中のスキップ状態フラグをスキップ状態にセットする手段として、条件付き分岐命令を使用している。
図5において、命令セットに、前方のみに分岐することを許可された条件付き分岐命令を有している。前方のみに分岐することを許可された条件付き分岐命令の条件が成立した場合に、命令デコーダ21よりスキップ処理制御ユニット22に対しスキップ処理開始信号が出力される。これにより、スキップ状態フラグがスキップ状態にセットされ、以降の命令が無効化される。また一方で、条件が不成立の場合にはスキップ状態フラグは通常状態のままとなり、以降の命令は実行される。このように、プログラム制御方法として、条件付き分岐命令を実行した際、条件が成立した場合に、それ以降の命令を無効化するスキップ処理を開始する。
スキップ処理制御手段としてのスキップ処理制御ユニット22の制御方法は、第1の実施形態における手順と同様であり、分岐しなかった場合(命令を実行)と分岐した場合(命令を無効化)とで、サイクル数は同じとなる。
また、本実施形態でのプログラム制御方法によれば、スキップ処理を開始するための命令が不要となり、命令数が削減できる。即ち、条件付き分岐命令によりスキップ処理を開始することによって、スキップ命令に比べ、命令数が少なくて済む。また、スキップ処理用の命令を実装しなくてよい。
一方、CPU(プロセッサ)として、スキップ処理制御ユニット22は、命令によるデータの書き込みを制御するスキップ状態フラグ(22a)を備え、スキップ状態フラグ(22a)は、条件付き分岐命令における条件が成立した場合にスキップ状態にセットされる。これにより、スキップ状態フラグをセットする別構成として好ましいものとなる。
(第3の実施の形態)
次に、第3の実施形態を、第2の実施形態との相違点を中心に説明する。
図6は、図1に代わる本実施形態におけるCPUの内部構成を示すブロック図である。図7には、図4に代わる本実施形態におけるスキップ処理中のパイプライン動作図を示す。
第2の実施形態において、スキップ状態フラグを通常状態にリセットする手段として、本実施形態では次のようにしている。
図6において、CPU10は、第1の実施形態に挙げたCPU10と同じく、条件判定に基づき条件が成立した場合にそれ以降の一ないし連続する複数の命令を無効化するスキップ処理制御ユニット22を備えている。
CPU10は、IF、DEC、EXE、MA、WBの5種類のステージからなるパイプライン処理にて、プログラムを実行するものである。CPU10は、データの格納や、算術・論理演算を実行するデータパス30と、メモリから取り込んだ命令に応じ、データパス30を制御する制御ユニット20とで構成されている。
制御ユニット20は、命令デコーダ21とスキップ処理制御ユニット22で構成されている。命令デコーダ21は、メモリより取り込んだ命令を格納し、取り込んだ命令を解読する。スキップ処理制御ユニット22は、命令デコーダ21から出力されるスキップ処理開始信号と、データパス30から出力されるスキップ処理終了信号(第2のスキップ処理終了信号II)とから、スキップ状態か否かを判断し、CPU10内外部に対しデータの書き込みを制御する。
データパス30は、ロードストアユニット31と実行ユニット32とレジスタファイル33とプログラム状態レジスタ34とプログラムカウンタ35と分岐先アドレスレジスタ36とパイプラインレジスタ37で構成されている。ロードストアユニット31は、CPU10外部からのデータ読み込み及び外部へのデータ書き込みを制御する。実行ユニット32は、命令デコーダ21で解読された命令に従い、制御ユニット20から出力される、制御信号に応じて、所定の算術・論理演算を実行する。ここで、実行ユニット32においてALU(算術論理演算ユニット)50を有し、このALU50はスキップ処理時にも使用される。レジスタファイル33は、実行ユニット32により実行された結果のデータもしくはメモリ等のCPU10外部より取り込まれたデータを格納する。プログラム状態レジスタ34は、CPU10の処理状態を保持する。プログラムカウンタ35は、フェッチする命令のアドレスを示す。分岐先アドレスレジスタ36は、条件付き分岐命令での分岐先アドレスを保持する。パイプラインレジスタ37は、実行ユニット32(ALU50)の出力であるコンディションコード信号を、第1のスキップ処理終了信号Iとして、当該信号を1サイクル遅延させて、この信号を第2のスキップ処理終了信号IIとしてスキップ処理制御ユニット22に出力する。
また、バス接続についても、第1の実施形態のCPUと同様の構成であり、ノイマンバス構成となっている。
本実施形態においては、スキップ処理制御ユニット22とデータパス30によりスキップ処理制御手段が構成されている。
以上、述べたようなCPU構成における、スキップ処理の手順を図6及び図7を用いて、説明する。
スキップ処理制御ユニット22は、第2の実施形態と同じく、スキップ状態フラグ22aを備えており、スキップ状態フラグ22aがスキップ状態の場合には、内外部の書き込み制御信号として書き込み禁止を出力する。
また、スキップ状態フラグ22aは、第2の実施形態と同様に、命令デコーダ21で条件付き分岐命令を解読し、条件が成立した際に出力される、スキップ処理開始信号を受けて、スキップ状態にセットされる。
本実施形態におけるスキップ処理制御ユニット22は、スキップ処理開始信号が入力された場合には、同時に、実行ユニット32にて算出された、分岐先アドレスを分岐先アドレスレジスタ36に格納する。
また、本実施形態のスキップ処理制御ユニット22は、スキップ状態フラグがスキップ状態の間、実行ユニット32を制御して、分岐先アドレスレジスタ36の分岐先アドレスとプログラムカウンタ35の現在のアドレスの比較演算を行わせる。具体的には、分岐先アドレスレジスタ36の分岐先アドレスとプログラムカウンタ35の現在のアドレスを実行ユニット32内のALU(算術論理演算ユニット)50に入力し、実行ユニット32に対し、比較オペレーションを指示する。条件付き分岐命令(前方のみに分岐することを許可された条件付き分岐命令)によるスキップ処理区間は、条件付き分岐命令の次命令から、分岐先アドレスの1つ手前までとなるため、[分岐先アドレスレジスタ36の分岐先アドレス]=[プログラムカウンタ35の現在のアドレス]となった時点で、スキップ状態フラグをリセットすればよいことになる。本構成の場合、実行ユニット32(ALU50)の出力であるコンディションコード信号が第1のスキップ処理終了信号Iとなる。
ただし、複数のステージによるパイプライン処理を行うCPUの場合、演算結果を書き込むタイミングとプログラムカウンタ35の値(アドレス)とにずれが生じるため、タイミング調整のためのパイプラインレジスタ37(この場合、1サイクル分の遅延)を用いて遅延させた信号を第2のスキップ処理終了信号IIとする。このようにしてデータの書き込みのみを分岐先アドレスの1つ手前の命令まで禁止することができる(命令有効時と同じサイクル数を消費させることができる)。
ここで、プログラムカウンタ35のアドレスと分岐先アドレスレジスタ36のアドレスの比較を実行ユニット32で処理する構成を採っているのは、演算器の共有化によるCPU小型化の効果を狙ったものであり、スキップ状態フラグがスキップ状態の間は、命令が無効となるため、実行ユニット32を分岐先アドレスレジスタ36の分岐先アドレスとプログラムカウンタ35の現在のアドレスの比較演算に有効利用することが可能である。
スキップ状態フラグが条件付き分岐命令によってセット及びリセットされる動作を、図7を用いて詳しく説明する。
メモリ上のアドレスが100番地にある、条件付き分岐命令(前方のみに分岐することを許可された条件付き分岐命令)をサイクル番号♯1の時点でフェッチし、サイクル番号♯3で実行する。サイクル番号♯3において条件判定を行い条件が成立した時点で、命令デコーダ21よりスキップ処理開始信号が出力され、サイクル番号♯4の時点ではスキップ状態フラグがセットされる。これと同時に、分岐先アドレスレジスタ36に分岐先アドレス(この場合105)がセットされる。
スキップ状態フラグがスキップ状態にセットされると、その時点でEXEステージにある命令から、データの書き込みが禁止され、図7においては、命令Aのデータ書き込みから禁止される。また、スキップ状態フラグがスキップ状態の間は、実行ユニット32でプログラムカウンタ35のアドレスと分岐先アドレスレジスタ36のアドレスの比較演算が行われる。[プログラムカウンタの現在のアドレス]≧[分岐先アドレスレジスタのアドレス]となったサイクル番号♯6の時点で、第1のスキップ処理終了信号Iが出力され、これに伴ってパイプラインレジスタ37により1サイクル分だけ遅延してスキップ状態フラグがリセットされる。即ち、サイクル番号♯7までスキップ状態フラグがセットされ、サイクル番号♯8でリセットされる。
アドレスが105番地の命令である命令Eは、EXEステージがスキップ状態フラグが通常状態にリセットされたサイクル番号♯8の時点となるため、命令E以降のデータ書き込みから再び有効になる。
このように、本実施形態のCPU10では、スキップ処理専用の命令を用いることなく、スキップ処理制御を実現することができ、かつハードウェアリソースを有効活用することで、小型な構成とすることができる。
また、本実施形態のプログラム制御方法によれば、スキップ処理を終了するための命令が不要となり、命令数が削減できる。さらに、条件付き分岐命令での条件成立にてフラグ・セットを行うとともにアドレスの比較にてフラグ・リセットを行うことにより、スキップ処理を開始、終了するための命令が不要となり、命令数が削減できる他、プログラム中の、命令の有効化/無効化を行う位置をプログラマが意識し、必要な命令を埋め込む作業を不要とできる効果もある。
以上のごとく、本実施形態は下記の特徴を有する。
プログラム制御方法として、前方のみに分岐することを許可された条件付き分岐命令で指定された分岐先アドレスと、プログラムカウンタ35の現在のアドレスが、分岐先アドレス≦現在のアドレスとなったことをトリガとしてスキップ処理を終了する。これにより、スキップ無効命令を挿入する場合に比べ、命令数が少なくて済む。また、スキップ処理用の命令を実装しなくてよい。
CPU(プロセッサ)として、スキップ処理制御手段(22,30)は、条件付き分岐命令によって指定される分岐先アドレスを保持するための分岐先アドレスレジスタ36と、分岐先アドレスレジスタ36の分岐先アドレスとプログラムカウンタ35の現在のアドレスを比較するアドレス比較手段としてのALU(算術論理演算ユニット)50と、を備え、ALU50は、分岐先アドレス≦現在のアドレスとなったことをトリガにして、スキップ状態フラグを通常状態にリセットする。これにより、スキップ状態フラグをリセットする別構成として好ましいものとなる。
また、アドレス比較手段は、データパス30の内部のALU(算術論理演算ユニット)50で構成され、スキップ状態フラグがスキップ状態にセットされている場合には、ALU50に、分岐先アドレスレジスタ36の分岐先アドレスとプログラムカウンタ35の現在のアドレスを入力し、ALU50より出力されるコンディションコード、即ち、比較演算結果が分岐先アドレス≦現在のアドレスとなったことをトリガにして、スキップ状態フラグを通常状態にリセットする。これにより、分岐先アドレスレジスタ36の分岐先アドレスとプログラムカウンタ35の現在のアドレスの比較を実行する構成として、データパス30の内部のALU50を用いることによってリソースの活用による小型化を図ることができる。
(第4の実施の形態)
次に、第4の実施形態を、第3の実施形態との相違点を中心に説明する。
図8は、図6に代わる本実施形態におけるCPUの内部構成を示すブロック図である。図9には、図7に代わる本実施形態におけるスキップ処理中のパイプライン動作図を示す。
図8において、スキップ処理制御ユニット22は、スキップ状態フラグ22aと、フラグデータ退避手段としてのフラグデータ退避ユニット22bと、フラグデータ復帰手段としてのフラグデータ復帰ユニット22cを備えている。また、データパス30にはフラグデータ退避用レジスタ38が設けられている。
本実施形態においては、スキップ処理制御ユニット22とデータパス30によりスキップ処理制御手段が構成されている。
この構成により、次のように作用する。
図9において、アドレスが100番地の条件付き分岐命令(前方のみに分岐することを許可された条件付き分岐命令)の後に、アドレスが101番地の命令A、アドレスが102番地の命令B、アドレスが103番地の命令C、アドレスが104番地の命令Dがスキップ処理されるとともに、アドレスが102番地の命令Bとアドレスが103番地の命令Cとの間において割り込みが発生してアドレスが106番地の命令Fを実行した後にリターンするものとする。
条件付き分岐命令(前方のみに分岐することを許可された条件付き分岐命令)によりスキップ状態フラグがセットされ、その後の割り込みの発生時にスキップ処理制御ユニット22のフラグデータ退避ユニット22bはスキップ状態フラグのフラグデータをレジスタ38へ退避する。また、割り込みの発生にて、プログラムカウンタ35および分岐先アドレスレジスタ36にはアドレス(番地)として「106」がセットされる(分岐先アドレス≦現在のアドレスが成立する)。
割り込みが終了した後の復帰命令により、スキップ処理制御ユニット22のフラグデータ復帰ユニット22cは、レジスタ38に退避したフラグデータをスキップ状態フラグに復帰する。また割り込みの終了に伴うアドレスが103番地の命令Cを処理すべくプログラムカウンタ35にはアドレス(番地)として「103」がセットされる(分岐先アドレスレジスタ36にはアドレス(番地)として「105」がセットされ、分岐先アドレス>現在のアドレスとなる)。
その後、サイクル番号♯7において、分岐先アドレスレジスタ36の分岐先アドレスが「105」、プログラムカウンタ35の現在のアドレスが「105」、即ち、分岐先アドレス=現在のアドレスとなり、その次のサイクルでスキップ状態フラグをリセットする(スキップ処理を終了させる)。
このようにして、割り込みによって処理が切り替わり、リターン命令により処理を再開する際においても、スキップ処理を継続することができる。
ここで、前述のフラグデータ退避ユニット22b、フラグデータ復帰ユニット22cおよびフラグデータ退避用レジスタ38が無かった場合について図10を用いて説明する。
図10において、条件付き分岐命令(前方のみに分岐することを許可された条件付き分岐命令)によりスキップ状態フラグがセットされた後において割り込みが発生してもスキップ状態フラグのフラグデータの退避が行われない。この状態において、割り込みの発生にて、プログラムカウンタ35および分岐先アドレスレジスタ36にはアドレス(番地)として「106」がセットされ、この分岐先アドレス≦現在のアドレスの成立に伴ってスキップ状態フラグがリセットされることになる。
割り込みが終了すると、アドレスが103番地の命令Cを処理すべくプログラムカウンタ35にはアドレス(番地)として「103」が、分岐先アドレスレジスタ36にはアドレス(番地)として「105」がセットされ、分岐先アドレス>現在のアドレスとなるが、既にスキップ状態フラグのリセットのための動作が終わっているため、スキップ処理を継続することができない。
これに対し、本実施形態においては、割り込みによりスキップ状態フラグがリセットされることはない。
スキップ状態フラグのデータは図8のフラグデータ退避用レジスタ38ではなくCPU外部のメモリに退避してもよい。
なお、図8においてスキップ状態フラグ22aは制御ユニット20ではなくデータパス30のプログラム状態レジスタ34においてスキップ状態フラグ34aとして設けてもよい。
以上のごとく、本実施形態は下記の特徴を有する。
CPU(プロセッサ)として、スキップ処理制御手段(22,30)は、割り込み発生時にスキップ状態フラグ(22a)のフラグデータをレジスタ38ないしメモリへ退避するフラグデータ退避ユニット22bと、復帰命令により、退避したフラグデータをスキップ状態フラグ(22a)に復帰するフラグデータ復帰ユニット22cと、を備える。これにより、割り込み時のスキップ処理を継続することができる。この構成は第1実施形態に適用してもよい。
なお、これまでの説明においてはパイプラインでシーケンス制御を行う場合について説明してきたが、これに限定されるものではない。
第1の実施形態のCPUの内部構成を示すブロック図。 CPUのパイプライン動作図。 一般例でのスキップ処理中のパイプライン動作図。 第1の実施形態のスキップ処理中のパイプライン動作図。 第2の実施形態のスキップ処理中のパイプライン動作図。 第3の実施形態のCPUの内部構成を示すブロック図。 第3の実施形態のスキップ処理中のパイプライン動作図。 第4の実施形態のCPUの内部構成を示すブロック図。 第4の実施形態のスキップ処理中のパイプライン動作図。 比較のためのスキップ処理中のパイプライン動作図。
符号の説明
10…CPU、20…制御ユニット、21…命令デコーダ、22…スキップ処理制御ユニット、22a…スキップ状態フラグ、22b…フラグデータ退避ユニット、22c…フラグデータ復帰ユニット、30…データパス、31…ロードストアユニット、32…実行ユニット、33…レジスタファイル、34…プログラム状態レジスタ、35…プログラムカウンタ、36…分岐先アドレスレジスタ、37…パイプラインレジスタ、38…フラグデータ退避用レジスタ、50…ALU。

Claims (9)

  1. 条件判定の際、条件が成立した場合に、それ以降の一ないし連続する複数の命令を無効化する、プロセッサのスキップ処理のためのプログラム制御方法であって、
    スキップ処理にてそれ以降の命令を無効とする場合にも、命令のシーケンス制御は継続して実行し、データの書き込みのみ禁止するようにしたことを特徴とするプログラム制御方法。
  2. 命令セットに、前方のみに分岐することを許可された条件付き分岐命令を有し、
    条件付き分岐命令を実行した際、条件が成立した場合に、それ以降の命令を無効化するスキップ処理を開始することを特徴とする請求項1に記載のプログラム制御方法。
  3. 前記条件付き分岐命令で指定された分岐先アドレスと、プログラムカウンタの現在のアドレスが、
    分岐先アドレス≦現在のアドレス
    となったことをトリガとしてスキップ処理を終了することを特徴とする請求項2に記載のプログラム制御方法。
  4. 条件判定に基づき条件が成立した場合に、それ以降の一ないし連続する複数の命令を無効化するスキップ処理制御手段を備えたプロセッサであって、
    前記スキップ処理制御手段は、スキップ処理中は命令の種類に関わらず、プロセッサ内外に対するデータの書き込みを禁止し続けることを特徴とするプロセッサ。
  5. 前記スキップ処理制御手段は、命令によるデータの書き込みを制御するスキップ状態フラグを備え、
    前記スキップ状態フラグは、スキップ処理開始命令を実行することでスキップ状態にセットされ、スキップ処理終了命令を実行することで通常状態にリセットされることを特徴とする請求項4に記載のプロセッサ。
  6. 前記スキップ処理制御手段は、命令によるデータの書き込みを制御するスキップ状態フラグを備え、
    前記スキップ状態フラグは、条件付き分岐命令における条件が成立した場合にスキップ状態にセットされることを特徴とする請求項4に記載のプロセッサ。
  7. 前記スキップ処理制御手段は、
    前記条件付き分岐命令によって指定される分岐先アドレスを保持するための分岐先アドレスレジスタと、
    分岐先アドレスレジスタの分岐先アドレスとプログラムカウンタの現在のアドレスを比較するアドレス比較手段と、
    を備え、
    前記アドレス比較手段は、
    分岐先アドレス≦現在のアドレス
    となったことをトリガにして、前記スキップ状態フラグを通常状態にリセットする
    ことを特徴とする請求項6に記載のプロセッサ。
  8. 前記アドレス比較手段は、データパスの内部の算術論理演算ユニットで構成され、スキップ状態フラグがスキップ状態にセットされている場合には、前記算術論理演算ユニットに、分岐先アドレスレジスタの分岐先アドレスとプログラムカウンタの現在のアドレスを入力し、前記算術論理演算ユニットより出力されるコンディションコードが
    分岐先アドレス≦現在のアドレス
    となったことをトリガにして、スキップ状態フラグを通常状態にリセットすることを特徴とする請求項7に記載のプロセッサ。
  9. 前記スキップ処理制御手段は、
    割り込み発生時に前記スキップ状態フラグのフラグデータをレジスタないしメモリへ退避するフラグデータ退避手段と、
    復帰命令により、退避した前記フラグデータをスキップ状態フラグに復帰するフラグデータ復帰手段と、
    を備えることを特徴とする請求項5〜8のいずれか1項に記載のプロセッサ。
JP2005130382A 2004-12-21 2005-04-27 プログラム制御プロセッサ Expired - Fee Related JP4889235B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005130382A JP4889235B2 (ja) 2005-04-27 2005-04-27 プログラム制御プロセッサ
US11/312,830 US7725694B2 (en) 2004-12-21 2005-12-21 Processor, microcomputer and method for controlling program of microcomputer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005130382A JP4889235B2 (ja) 2005-04-27 2005-04-27 プログラム制御プロセッサ

Publications (2)

Publication Number Publication Date
JP2006309454A true JP2006309454A (ja) 2006-11-09
JP4889235B2 JP4889235B2 (ja) 2012-03-07

Family

ID=37476275

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005130382A Expired - Fee Related JP4889235B2 (ja) 2004-12-21 2005-04-27 プログラム制御プロセッサ

Country Status (1)

Country Link
JP (1) JP4889235B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008299729A (ja) * 2007-06-01 2008-12-11 Digital Electronics Corp プロセッサ
JP2009205351A (ja) * 2008-02-27 2009-09-10 Denso Corp マイクロコンピュータ
JP2012018626A (ja) * 2010-07-09 2012-01-26 Toshiba Corp メモリ制御装置、メモリ装置および停止制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03269728A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd パイプライン計算機における命令実行制御方式
JP2002082800A (ja) * 2000-09-06 2002-03-22 Sanyo Electric Co Ltd プログラム実行装置及び方法
WO2004053685A1 (en) * 2002-12-12 2004-06-24 Arm Limited Instruction timing control within a data processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03269728A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd パイプライン計算機における命令実行制御方式
JP2002082800A (ja) * 2000-09-06 2002-03-22 Sanyo Electric Co Ltd プログラム実行装置及び方法
WO2004053685A1 (en) * 2002-12-12 2004-06-24 Arm Limited Instruction timing control within a data processing system
JP2006510127A (ja) * 2002-12-12 2006-03-23 エイアールエム リミテッド データ処理装置内の命令タイミング制御

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008299729A (ja) * 2007-06-01 2008-12-11 Digital Electronics Corp プロセッサ
JP2009205351A (ja) * 2008-02-27 2009-09-10 Denso Corp マイクロコンピュータ
JP2012018626A (ja) * 2010-07-09 2012-01-26 Toshiba Corp メモリ制御装置、メモリ装置および停止制御方法
US8359425B2 (en) 2010-07-09 2013-01-22 Kabushiki Kaisha Toshiba Memory control device, memory device, and shutdown control method

Also Published As

Publication number Publication date
JP4889235B2 (ja) 2012-03-07

Similar Documents

Publication Publication Date Title
US5461722A (en) Parallel processing apparatus suitable for executing in parallel a plurality of instructions including at least two branch instructions
JP4770664B2 (ja) マイクロプロセッサおよびそれを用いたマイクロコンピュータ
US6832305B2 (en) Method and apparatus for executing coprocessor instructions
KR20040016829A (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
US5418917A (en) Method and apparatus for controlling conditional branch instructions for a pipeline type data processing apparatus
US20070079076A1 (en) Data processing apparatus and data processing method for performing pipeline processing based on RISC architecture
JP4889235B2 (ja) プログラム制御プロセッサ
JP5233078B2 (ja) プロセッサ及びその処理方法
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
JP2011070290A (ja) データプロセッサ
EP0573071A2 (en) A microprocessor
JP5012562B2 (ja) マイクロコンピュータ
JP2004062427A (ja) マイクロプロセッサ
JP4702004B2 (ja) マイクロコンピュータ
US7281121B2 (en) Pipeline processing device and interrupt processing method
JP2006139644A (ja) プロセッサ
JP5679263B2 (ja) 情報処理装置及びマイクロ命令処理方法
JP2000099328A (ja) プロセッサ及びその実行制御方法
JP4564025B2 (ja) 情報処理装置における割り込み処理方法
JP2689894B2 (ja) マイクロプログラム制御型情報処理装置
JPH087679B2 (ja) マイクロプロセッサ
JP2005134987A (ja) パイプライン演算処理装置
JPH04205625A (ja) 並列処理計算機
JP2008158810A (ja) 命令実行処理装置
JPH03291724A (ja) マイクロプログラム制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090929

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091127

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100817

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101116

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101122

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110401

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111213

R151 Written notification of patent or utility model registration

Ref document number: 4889235

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees