JP2007041999A - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP2007041999A
JP2007041999A JP2005227695A JP2005227695A JP2007041999A JP 2007041999 A JP2007041999 A JP 2007041999A JP 2005227695 A JP2005227695 A JP 2005227695A JP 2005227695 A JP2005227695 A JP 2005227695A JP 2007041999 A JP2007041999 A JP 2007041999A
Authority
JP
Japan
Prior art keywords
instruction
arithmetic
pipeline
stage
register
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
JP2005227695A
Other languages
English (en)
Inventor
Kiichi Ozawa
基一 小沢
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.)
Renesas Technology Corp
Original Assignee
Renesas Technology 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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2005227695A priority Critical patent/JP2007041999A/ja
Priority to US11/482,062 priority patent/US7356675B2/en
Publication of JP2007041999A publication Critical patent/JP2007041999A/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/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)

Abstract

【課題】キャッシュアクセスのパイプライン化に伴う性能低下を排除する。
【解決手段】命令を取得するための命令フェッチ部と、命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部とを含んでデータ処理装置を構成する。このとき、上記命令実行部は、演算実行のために複数ステージにパイプライン化された演算パイプライン104と、演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて演算器による演算を配置するステージを変更可能な演算パイプライン制御部とを含む。ライトセレクタ304は、ALU配置ステージの移動を実現するために設けられた。
【選択図】図5

Description

本発明は、パイプライン方式を採用したデータ処理装置に関し、例えばマイクロマイクロプロセッサに適用して有効な技術に関する。
データ処理装置の一例とされるマイクロプロセッサの動作周波数は、一般的にキャッシュアクセスの遅延によって決定される。キャッシュアクセスの遅延は、その多くが配線遅延であるため、半導体製造プロセスを微細化してもあまり減少しない。マイクロプロセッサの動作周波数向上には、キャッシュアクセスのパイプライン化が有効とされる(例えば特許文献1(図10、図11)などを参照)。
しかしキャッシュアクセスをパイプライン化すると、アクセス結果が得られるまでのサイクル数が増え、ロード結果の確定が遅くなる。一般的なプログラムでは、キャッシュアクセスのためのロード命令の結果を演算命令の入力として使うことが多い。そのため、キャッシュアクセスのパイプライン化によりロード結果の確定が遅れると、演算命令の実行に必要なデータの入力が確定するまでの待ちサイクル数が増え、その結果としてプログラムの実行に必要なサイクル数が増えてしまう。
このようにマイクロプロセッサの高周波数化のためにキャッシュアクセスをパイプライン化すると、演算命令の実行に必要なサイクル数が増え、高周波数化に見合う性能が得られない。高周波数化に見合う性能が得られるようにするには、キャッシュアクセスのパイプライン化でロード結果の確定が遅れても、演算命令の実行サイクル数が増えないようにする手段が必要である。
この対策として広く用いられる手法にアウトオブオーダ方式がある(例えば特許文献2(第2段落から第8段落)などを参照)。アウトオブオーダ方式では、後で実行される命令列を先行取得しておき、それらの命令列から実行中のロード命令の結果を利用しない命令を探し出して実行する。基本的には、命令依存、オペランド依存が発生した場合にはその依存関係が解決するまで命令実行が保留され、依存関係がない命令が、コードの記述順序を飛び越えて先行実行される。
しかしながら上記アウトオブオーダ方式では、命令がコードの記述順序を飛び越えて先行実行される場合があため、メモリアクセス順序などを保障する機構が必要となり、命令列の先行取得や実行命令の探索、メモリアクセス順序の保障などといった多くの付加機構が必要となるため、この方式を低価格なマイクロプロセッサに適用するのは製造コスト的に困難とされる。
アウトオブオーダ方式に代わる手法として、ディレイドALU方式が知られている(例えば非特許文献1参照)。この方式は、演算命令の実行開始をロード命令の実行開始より、1サイクル後とする技術である。それによれば、演算を行うALU(算術論理演算ユニット)による演算をキャッシュアクセスの開始ステージに配置するため、ALUの入力読み出しを1サイクル遅らせることが可能になり、キャッシュアクセスの結果を演算命令の入力に使う際の待ちサイクル数が1サイクル減少する。
特開平05−313893号公報 特開2001−236222号公報 M.Ozawa et al., "Pipeline Structure of SH-X Core for Achieving High Performance and Low Power", In Proc of COOL Chips VII, pp. 239-254, Apr 2004.
上記のようにディレイドALU方式では、ALUによる演算をキャッシュアクセスの開始ステージに配置するため、ALUの入力読み出しを1サイクル遅らせることが可能になり、キャッシュアクセスの結果を演算命令の入力に使う際の待ちサイクル数が1サイクル減少する。
しかしながら、ディレイドALU方式について本願発明者が検討したところ、演算結果がアドレスとして用いられる場合には、ディレイドALU方式を実施すると、演算命令の結果をアドレスとしてキャッシュをアクセスする際の性能が低下する。これは、ディレイドALUによってALUの演算が1サイクル遅れてしまうことに起因する。従って、キャッシュアクセスのパイプライン化に伴う性能低下を排除するには、ディレイドALU方式によって生じた性能の低下を抑制する手法が必要とされる。
本発明の目的は、キャッシュアクセスのパイプライン化に伴う性能低下を排除することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕命令を取得するための命令フェッチ部と、上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部とを含んでデータ処理装置が構成されるとき、上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、上記演算器による演算を配置するパイプラインステージを変更可能な演算パイプライン制御部と、を含んで成る。
上記の手段によれば、演算パイプライン制御部は、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、演算器による演算を配置するパイプラインステージを変更することにより、キャッシュアクセスのパイプライン化により増加した入力確定待ちサイクル数を削減することができる。このことが、キャッシュアクセスのパイプライン化に伴う性能低下の排除を達成する。
〔2〕命令を取得するための命令フェッチ部と、上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部とを含んでデータ処理装置が構成されるとき、上記命令には、データのロードを指示するロード命令が含まれ、上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、上記ロード命令の実行によりロードされたデータが上記演算器による演算で利用されるポイントを、上記演算パイプラインにおいて上記データが確定するまでの待ちサイクル数に応じて変更可能な演算パイプライン制御部とを含んで成る。
上記の手段によれば、演算パイプライン制御部は、ロード命令の実行によりロードされたデータが上記演算器による演算で利用されるポイントを、上記データが確定するまでの待ちサイクル数に応じて変更することができ、それにより、キャッシュアクセスのパイプライン化により増加した入力確定待ちサイクル数を削減することができる。このことが、キャッシュアクセスのパイプライン化に伴う性能低下の排除を達成する。
〔3〕上記〔1〕及び〔2〕において、上記演算パイプライン制御部は、上記演算パイプラインでの上記演算命令の実行に必要なデータとしてデータキャッシュのアクセス結果を取り込むように構成する。
〔4〕上記〔3〕において、上記演算パイプライン制御部は、上記データが確定するまでの待ちサイクル数が最小となるステージに上記演算器による演算を配置する。
〔5〕上記〔3〕において、上記演算パイプライン制御部は、上記演算器による演算を配置しようとするステージが他の演算命令の実行によって使用される場合、さらに後のステージに上記演算器による演算を配置することによって、演算配置ステージの競合を回避することができる。
〔6〕上記〔3〕において、上記データキャッシュのアクセス結果を用いる演算命令の実行に必要なサイクル数は、上記演算命令より以前に実行された命令に依存して変化される。
〔7〕上記〔3〕において上記演算パイプラインは、上記演算器での演算結果を保持可能な複数のステージ間レジスタと、上記複数のステージ間レジスタの出力を選択可能なセレクタとを含んで構成することができる。上記セレクタによる上記ステージ間レジスタの出力選択により、上記演算器による演算の配置ステージを変更することができる。
〔8〕上記〔3〕において上記演算パイプライン制御部は、レジスタ書き込みの有効性を示す信号と演算器による演算の配置ステージの情報とを保持可能な第1パイプラインと、上記命令によって書き込まれるレジスタ番号を保持可能な第2パイプラインと、上記命令によって読み出されるレジスタ番号を保持可能な第3パイプラインと、上記第1パイプラインの出力に基づいて上記第3パイプラインの出力を選択的に上記演算パイプラインに供給するための読み出しレジスタ番号生成回路とを含んで構成することができる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、ALUの演算を行うステージを動的に変更可能とすることにより、キャッシュアクセスのパイプライン化に伴う性能低下を排除することができる。
図1には、本発明にかかるデータ処理装置の一例であるマイクロプロセッサが示される。
図1に示されるマイクロプロセッサ10は、特に制限されないが、ロード命令と演算命令の実行をパイプラインで行うものとされ、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。
図1に示されるマイクロプロセッサ10は、特に制限されないが、図示されないメインメモリを含むコンピュータシステムに適用され、メインメモリとの間のデータ転送を制御するメモリコントローラ20、実行すべき命令を取得するための命令フェッチ部40、命令フェッチ部40によってが取得された命令の演算実行をD、E、M1、M2、Sの5ステージのパイプラインで行う命令実行部50とが、システムバス30を介して互いに信号のやり取りが可能なように結合される。また、上記命令フェッチ部40と上記命令実行部50との間では、命令、命令VALID信号、STALL信号のやり取りが行われる。
図2には、上記命令実行部50の構成例が示される。
命令実行部50は、特に制限されないが、ロード命令を実行するメモリパイプライン101と、その制御を行うメモリパイプライン制御部102、演算命令を実行する演算パイプライン103とその制御を行う演算パイプライン制御部104から構成される。実行する命令は、命令フェッチ部40から、その種別に応じてメモリパイプライン制御部102及び演算パイプライン制御部103に供給される。例えばロード命令はロードパイプライン制御部102に供給され、演算命令は演算パイプライン制御部103に供給される。命令には、当該命令が有効である際に、論理値“1”となる命令VALID信号が付加される。逆に、メモリパイプライン制御部102及び演算パイプライン制御部103からは、命令実行を待たせたい場合に論理値“1”となるSTALL信号が出力される。図1に示される命令フェッチ部40は、STALL信号が論理値“1”である間、同じ命令を出力し続ける。メモリパイプライン制御部102及び演算パイプライン制御部103がSTALL信号を論理値“1”とする例として、命令によって読み出されるレジスタの値が利用できるまで待つ場合が挙げられる。メモリパイプライン101及び演算パイプライン104は、それぞれメモリパイプライン制御部102及び演算パイプライン制御部103から出力される制御信号の取り込みを可能とする。メモリパイプライン制御部102と、演算パイプライン制御部103との間では、それぞれ実行中の命令に関する情報を示す各種信号(A−E−WE,A−E−RD,A−E−ALU,A−M1−WE,A−M1−RD,A−M1−ALU、M−E−WE,M−E−RD,M−M1−WE,M−M1−RD)のやり取りが可能とされる。メモリパイプライン101は、実行した命令でキャッシュミスが発生した場合、システムバス30との間で必要なデータ転送を行う。尚、本例では、ロード命令と演算命令との同時入力は想定しない。
図3には、上記メモリパイプライン101の構成例が示される。
上記メモリパイプライン101は、特に制限されないが、図3に示されるように、レジスタ読み出し回路(REGISTER READ)201、ステージ間レジスタ202A,202B,202C,202D、データキャッシュ(PIPELINED DATA CACHE)204,205、レジスタ書き込み回路(REGISTER WRITE)206を含んで成る。
レジスタ読み出し回路201は、図示されないレジスタの読み出しを行う。アドレス生成回路203は、上記レジスタの読み出し結果を用いてロード先アドレスを生成する。生成されたアドレスは、後述するようにM1とM2の2ステージにパイプライン化されたデータキャッシュ204、205に与えられて、読み出しが行われ、その読み出し結果がレジスタ書き込み回路206によりレジスタに書き込まれる。上記レジスタ読み出し回路201と上記アドレス生成回路203との間にはステージ間レジスタ202Aが介在され、上記アドレス生成回路203と上記データキャッシュ204との間にはステージ間レジスタ202Bが介在され、上記データキャッシュ204,205との間にはステージ間レジスタ202Cが介在され、上記データキャッシュ205と上記レジスタ書き込み回路206との間にはステージ間レジスタ202Dが介在される。メモリパイプライン101の制御信号には、読み出しレジスタを指定するRS信号及びRT信号、書き込みレジスタを指定するRD信号、レジスタへ書き込む際に論理値“1”となるWE信号が含まれ、それらはメモリパイプライン制御部102から供給される。尚、上記レジスタ読み出し回路201は、一般的なレジスタフォワーディング機能を有する。
図4には、上記メモリパイプライン101でロード命令が実行される際の動作が示される。
先ず、Dステージにおいて、レジスタ読み出し回路201によりアドレス生成用のレジスタの読み出しが行われ、Eステージにおいて、アドレス生成回路203によりアドレスが生成される。その後、M1ステージとM2ステージにおいて、データキャッシュのアクセスが行われ、Sステージにおいてレジスタ書き込み回路206によりロード結果の書き込みが行われる。このようにロード命令の結果としてレジスタに書き込まれる値はM2ステージで確定する。そのため、ロード結果が書き込まれたレジスタの値を読み出すには、ロード命令のM2ステージ以後にレジスタ読み出しを行えば良い。
図5には、上記演算パイプライン104の構成例が示される。
上記演算パイプライン104は、特に制限されないが、図5に示されるようにレジスタ読み出し回路(REGISTER READ)301、ステージ間レジスタ302A,302B,302C,302D、ALU303、ライトセレクタ304、レジスタ書き込み回路(REGISTER WRITE)305を含んで成る。ここで、上記ALU303は、本発明における演算器の一例とされる。
レジスタ読み出し回路301は、図示されないレジスタの読み出しを行う。ALU303は、上記レジスタ読み出し回路301で読み出されたデータを用いて演算処理を行う。このALU303での演算結果は、レジスタ書き込み回路305によって図示されないレジスタに書き込まれるが、書き込む値はライトセレクタ304により選択される。ライトセレクタ304は、ALU配置ステージの移動を実現するために設けられたものであり、レジスタに書き込む値として、ステージ間レジスタ302Bの出力、ステージ間レジスタ302Cの出力、ステージ間レジスタ302Dの出力の3通りから選択する。演算パイプライン104の制御信号には、読み出しレジスタを指定するRS信号及びRT信号、書き込みレジスタを指定するRD信号、レジスタへ書き込む際に論理値“1”となるWE信号、ライトセレクタ304の選択動作を制御するためのWSEL信号が含まれ、それらは演算パイプライン制御部103から供給される。尚、上記レジスタ読み出し回路201は、一般的なレジスタフォワーディング機能を有する。
図6には、上記演算パイプライン104で演算命令が実行される際の動作例が示される。
演算パイプライン104では、ライトセレクタ304(図5参照)を制御することで、その動作が図6(a),(b),(c)に示されるように3通りに変化される。
図6(a)には、ライトセレクタ304によってステージ間レジスタ302Dの出力が選択された場合の動作が示される。
Dステージにおいてレジスタ読み出し回路301により図示されないレジスタの読み出しが行われ、Eステージにおいて、ALU303での演算が行われ、M1ステージとM2ステージにおいて、上記演算結果がそのまま転送され、Sステージにおいて、レジスタ書き込み回路305により、図示されないレジスタへの上記演算結果の書き込みが行われる。
図6(b)には、ライトセレクタ304によってステージ間レジスタ302Cの出力が選択された場合の動作が示される。
Dステージにおいては何も行われず、Eステージにおいてレジスタの読み出しが行われ、M1ステージにおいてALU303の演算が行われ、M2ステージにおいて上記演算結果がそのまま転送され、Sステージにおいて、上記演算結果がレジスタに書き込まれる。
図6(c)には、ライトセレクタ304によってステージ間レジスタ302Bの出力が選択された場合の動作が示される。
DステージとEステージにおいては何も行われず、M1ステージにおいてレジスタの読み出しが行われ、M2ステージにおいてALU303の演算が行われ、Sステージにおいてその演算結果の書き込みが行われる。
このように、演算パイプライン104では、ライトセレクタ304の制御により、ALU配置ステージをE、M1、M2の3通りから選択できる。このため、演算命令の結果としてレジスタに書き込まれる値が確定するステージは、ALU配置ステージとなる。演算結果が書き込まれたレジスタを正しく読み出すには、演算命令のALU配置ステージ以後にレジスタ読み出しを行えば良い。
図7には、メモリパイプライン制御部102の構成例が示される。
メモリパイプライン制御部102は、特に制限されないが、図7に示されるように、命令実行待ちの制御とWE信号の生成を行うレジスタ書き込み有効パイプライン401と、ロード結果を書き込むためのレジスタ番号を保持する書き込みレジスタ番号パイプライン402とを含んで成る。
レジスタ書き込み有効パイプライン401は、RS,RTデコーダ(RS,RT DECODE)411、ストールチェック部(STALL CHECK)412、ストール生成アンドゲート413、レジスタ書き込み有効生成アンドゲート414、及びステージ間レジスタ415A,415B,415C,415Dを含んで成る。このレジスタ書き込み有効パイプライン401は、DステージにおけるRS,RTデコーダ411で命令から読み出されるレジスタの番号RS,RTを取り出す。このRS,RTは、レジスタ確定待ちの必要性を判定するストールチェック部412の入力と、メモリパイプライン101への出力信号として用いられる。ストールチェック部412では、Dステージにおいて、レジスタ番号RS,RTの値が確定しているか否かが検査され、確定していない場合にST信号が論理値“1”される。有効な命令に対してST信号が論理値“1”である場合、命令実行を待つ必要があるので、ストール生成アンドゲート413の出力がSTALL信号とされる。一方、有効な命令に対してST信号が論理値“0”である場合、命令実行を行うために、Sステージでのレジスタ書き込みが必要となる。そこで、レジスタ書き込み有効生成アンドゲート414により、レジスタ書き込みを行う際に論理値“1”となるレジスタ書き込み有効信号が生成される。この信号はステージ間レジスタ415A〜415DによりSステージまで保持された後、SステージにおいてWE信号として出力され、ロード結果のレジスタ書き込み制御に使用される。メモリパイプライン101では、ロード結果がM2ステージまで確定しない。そのため、E、M1ステージにある命令によって書き込まれるレジスタの値を読み出すには待ちが必要となる。そこで、この待ちの生成用としてE、M1ステージのレジスタ書き込み有効信号がM−E−WE、M−M1−WE信号として出力される。
書き込みレジスタ番号パイプライン402は、RDデコーダ(RD DECODE)421、及びステージ間レジスタ422A,422B,422C,422Dを含んで成る。この書き込みレジスタ番号パイプライン402は、DステージのRDデコーダ421で命令からロード結果を書き込むレジスタ番号を取り出す。その後、得られたレジスタ番号をステージ間レジスタ422A〜422Dに書き込まれ、Sステージまで保持される。E、M1、Sステージの書き込みレジスタ番号は、M−E−RD、M−M1−RD、RD信号によって特定される。
図8には、上記ストールチェック回路412の構成例が示される。
ストールチェック回路412は、特に制限されないが、図8に示されるように、ストールチェッカー501A,501Bと、その後段に配置されたオアゲート502とを含んで成る。レジスタRS,RTそれぞれについて、ストールチェッカー501A,501Bで値の確定待ちの必要性が判定される。RS,RTのいずれかで値の確定待ちが必要ならば命令実行を待たせることになるので、オアゲート502においてストールチェッカー501A,501Bの出力(o)のオア論理がオアゲート502で求められ、それがST信号とされる。
図9には、上記ストールチェッカー501A,501Bの動作例が示される。
基本的な動作は、読み出そうとするレジスタRinと、メモリパイプラインと演算パイプラインのE、M1ステージで実行中の命令の書き込みレジスタM−E−RD、M−M1−RD、A−E−RD、A−M1−RDとを比較し、両者が同じ、かつ、レジスタに書き込む値が未確定ならば、出力信号oが論理値“1”とされることで、読み出し待ちが必要であることが示される。このような比較は、最新のレジスタ値を得るためのものなので、より最近の命令を実行しているEステージに関する場合(S1,S2)が、M1ステージに関する場合(S3,S4)よりも先に行われる。
メモリパイプライン101では、M2ステージでレジスタに書き込む値のロード結果が確定される(図4参照)。そのため、読み出しレジスタがメモリパイプライン101のE、M1ステージの書き込みレジスタと同じ場合に出力信号oが論理値“1”とされて、待ちの必要性が示される。
一方、演算パイプライン104では、レジスタに書き込む値の演算結果が確定するステージは、E、M1、M2のいずれかである(図6参照)。そのため、読み出し先レジスタが演算パイプライン104のE、M1ステージの書き込み先レジスタと同じである際の待ちの必要性は、ALU303による演算をどのステージに配置したかに応じて変化する。そこで、演算パイプライン制御部103から、E、M1ステージにある命令のALU配置ステージを示すA−E−ALU、A−M1−ALU信号を出力し、この信号を用いて待ちの必要性を判定する(S2,S4)。すなわち、Eステージの書き込み先レジスタが読み出しレジスタと同じ場合、Eステージの命令がALU303による演算をM1、M2ステージのいずれかに置いた場合に待ちが必要であるため、ステップS2においてそれについての判定が行われる。また、M1ステージの書き込み先レジスタが読み出しレジスタと同じ場合、M1ステージの命令がALU303による演算をM2ステージに置いた場合に待ちが必要であるため、ステップS4において、それについての判定が行われる。
図10には、上記演算パイプライン制御部103の構成例が示される。
演算パイプライン制御部103は、特に制限されないが、図10に示されるように、レジスタ書き込みの有効性を示す有効信号とALU配置ステージの情報とを保持可能なALU位置パイプライン601と、命令によって書き込まれるレジスタ番号を保持可能な書き込みレジスタ番号パイプライン602と、命令が読み出すレジスタ番号を保持可能な読み出しレジスタ番号パイプライン603と、図示されない読み出しレジスタ番号生成回路(後に詳述する)とが含まれる。
上記ALU位置パイプライン601は、RS,RTデコーダ611、ALU配置ステージ判定回路(ALUPOS GEN)612、ステージ間レジスタ613A,613B,613C,613D、及びステージ間レジスタ614A,614B,614C,614Dを含んで成る。
Dステージにおいて、RS,RTデコーダ611により、読み出すレジスタの番号RS,RTが命令から取り出される。RS,RTはALU配置ステージ判定回路612へ伝達される。ALU配置ステージ判定回路612では、レジスタRS,RTの値が確定する時刻から、現在Dステージにある演算命令の実行時にALU303による演算をどのステージへ配置するかを求める。本例の演算パイプライン制御によれば、演算命令の実行に必要なデータが確定するまでの待ちサイクル数が最小となるステージにALU303による演算を配置することによって読み出しレジスタの確定待ちを排除できるため、STALL信号は論理値“0”に固定されている。この結果、有効な命令は必ず実行され、Sステージでのレジスタ書き込みが行われる。そこで、命令VALID信号をそのままレジスタ書き込み有効信号とし、この信号をステージ間レジスタ613A〜613DによりSステージまで保持する。Sステージのレジスタ書き込み有効信号は、WE信号として出力され、演算結果のレジスタ書き込み制御に用いられる。また、E、M1ステージにおけるレジスタ書き込み有効信号は、レジスタ確定待ちの制御用にA−E−WE、A−M1−WE信号として出力される。レジスタ書き込み有効信号と同様、ALU配置ステージ判定回路612で生成されたALU配置もステージ間レジスタ614でSステージまで保持される。本例における演算パイプラインでのALU配置の変更は、Sステージでライトセレクタを制御することで行われる。そのため、Sステージまで保持したALU配置をライトセレクタ制御信号WSELとして出力する。レジスタ書き込み有効信号と同様、E、M1ステージのALU配置もレジスタ確定待ちの制御用にA−E−ALU、A−M1−ALU信号として出力される。また、レジスタ読み出しの制御用に、Dステージで判定したALU配置がA−D−ALU信号として出力される。
上記書き込みレジスタ番号パイプライン602は、RDデコーダ(RD DECODE)621、及びステージ間レジスタ622A,622B,622C,622Dを含む。
DステージにおけるRDデコーダ621により、演算結果を書き込むレジスタ番号が命令から取り出される。その後、得られたレジスタ番号がステージ間レジスタ622A,622B,622C,622Dに順次書き込まれることで、Sステージまで保持される。E、M1、Sステージの書き込みレジスタ番号は、A−E−RD、A−M1−RD、RD信号によって特定される。
読み出しレジスタ番号パイプライン603は、DステージのRS,RTデコーダで取り出した読み出しレジスタ番号RS,RTをステージ間レジスタ631でM1ステージまで保持する。D、E、M1ステージの読み出しレジスタ番号は、それぞれD−RTRS、E−RTRS、M1−RTRSとして出力される。
図11には、上記演算パイプライン制御部103に含まれる読み出しレジスタ番号生成回路が示される。
読み出しレジスタ番号生成回路は、特に制限されないが、図11において604で示されるように、読み出しレジスタ選択制御回路(READ REG SELECT)701と、読み出しレジスタ番号セレクタ702とを含んで成る。
本例では、ALU303による演算がE、M1、M2ステージのいずれかに配置されるため、それに伴いレジスタ読み出しもD、E、M1ステージのいずれかに配置される。そのため、読み出されるレジスタ番号のRS,RTをALU配置によって切り換える必要がある。そこで、読み出しレジスタ選択制御回路701においては、上記ALUパイプライン601におけるA−D−ALU、A−E−ALU、A−M1−ALUに基づいて、読み出しレジスタ番号セレクタ702の動作制御信号が生成される。それに基づいて、読み出しレジスタ番号セレクタ702では、上記読み出しレジスタ番号パイプライン603におけるD−RTRS、E−RTRS、M1−RTRSの選択が行われる。具体的には、以下のようにD−RTRS、E−RTRS、M1−RTRSの選択が行われる。
すなわち、A−D−ALUがステージEとされる場合、読み出しレジスタ番号セレクタ702の端子X(D−RTRS)が選択され、A−E−ALUがステージM1とされる場合、読み出しレジスタ番号セレクタ702の端子Y(E−RTRS)が選択され、A−M1−ALUがステージM2とされる場合、読み出しレジスタ番号セレクタ702の端子Z(M1−RTRS)が選択され、それ以外の場合は不定とされる。このように演算パイプライン制御部103においては、現在レジスタ読み出しを行う演算命令があるステージが求められ、それに基づいて読み出しレジスタ番号セレクタ702で読み出しレジスタ番号が選択される。尚、本例には存在しないが、ALUの演算制御用などの信号が必要な場合は同様の手法で対応できる。
図12には、上記ALU配置ステージ判定回路612の構成例が示される。
ALU配置ステージ判定回路612は、特に制限されないが、図12に示されるように、ストールサイクル発生回路(STALL CYCLE GEN)801A,801B、最大値選択回路(MAX)802、及びALUマッピング回路(ALU MAPPING)803を含んで成る。レジスタ読み出しをDステージで行う場合に必要とされる待ちサイクル数が求められ、この待ちサイクル数に対応するステージ数以上後のステージにALU303が配置される。ストールサイクル発生回路801A,801Bは、読み出しレジスタRS,RTのそれぞれに対し、Dステージで読み出す場合の待ちサイクル数を求める。最大値選択回路802は、RS,RTそれぞれに対して求めた待ちサイクル数の最大値を選択する。ALUマッピング回路803は、生成された待ちサイクル数に基づいてALUの配置ステージ(A−D−ALU)を求める。
図13には、ストールサイクル発生回路(STALL CYCLE GEN)801A,801Bの動作例が示される。基本的な動作は、図9に示されるストールチェッカー501A,501Bの場合(図9参照)と同様とされるが、必要な待ちサイクル数が出力となる点で異なる。メモリパイプライン101の書き込み先レジスタを読み出す際の待ちサイクル数は、書き込みを行う命令がEステージならば2サイクル、M1ステージならば1サイクルである(S11,S13)。しかしながら、演算パイプライン104の書き込み先レジスタを読み出す際は、書き込みを行う命令でALU303による演算がどこに配置されるかによって待ちサイクル数が変化する。書き込みを行う演算命令がEステージの場合、ALU配置がM2ステージならば2サイクル待ち、ALU配置がM1ステージならば1サイクル待ち、ALU配置がEステージならば0サイクル待ちとなる(S12)。同様に、書き込みを行う演算命令がM1ステージの場合、ALU配置がM2ステージならば1サイクル待ち、M1、Eステージならば0サイクル待ちとなる(S14)。
図14には、上記ALUマッピング回路803の動作例が示される。
ALU配置動作は、演算命令の実行に必要なデータが確定するまでの待ちサイクル数、つまり、演算に必要とされるデータのレジスタ読み出し待ちのサイクル数によって異なる。
先ず、レジスタ読み出し待ちが2サイクル必要な場合(SC=2)、M1ステージ以後でレジスタを読めば待ちが不要となるため、ALU303による演算をM2ステージに配置する(A−D−ALU=M2)。
次に、レジスタ読み出し待ちが1サイクル必要な場合(SC=1)、Eステージ以後でレジスタを読めば待ちが不要となるため、M1ステージにALU303による演算を配置できる(A−D−ALU=E)。しかしながら、現在Eステージにある演算命令のALU利用ステージがM2であると、2サイクル後に2命令がALU303を利用してしまう。そこで、Eステージにある演算命令のALU利用ステージがM2の場合は、ALU303による演算をM2ステージに配置(A−D−ALU=M2)して不都合を回避する。
そして、レジスタ読み出し待ちが0サイクル必要な場合には(SC=0)、Dステージでレジスタの値を読み出せるため、EステージにALU303による演算を配置できる(A−D−ALU=E)。しかしながら、待ちが1サイクルの場合と同様、現在Eステージの演算命令のALU配置がM1ステージの場合と、現在M1ステージの演算命令のALU配置がM2ステージの場合に1サイクル後に複数命令がALUを利用してしまう。そこで、ALU303による演算をM1ステージに配置(A−D−ALU=M1)して不都合を回避する。ところが、現在Eステージの演算命令のALU配置がM2ステージであると、ALU303による演算をM1ステージに配置しても2サイクル後に複数命令がALU303を利用してしまう。この場合は、ALU配置をM2ステージ(A−D−ALU=M2)として不都合を回避する。
次に、図15乃至図17を参照しながら上記命令実行部50の主要動作を説明する。
図15には、命令実行部50において実行される命令が示され、図16には、各命令を実行する際にALU位置などの制御情報が生成される様子が示され、図17には、図16に示される制御情報に基づき命令が実行される様子が示される。命令は1、2、3、4、5の順に実行される。
先ず、サイクルC0において、演算命令1がDステージに入力される。この命令が読み出すレジスタR0、R1に書き込む命令はサイクルC0に存在しないため、読み出し待ちサイクル数は0となる。また、実行中の命令もサイクルC0には存在しないため、ALU303による演算はEステージに配置される。
サイクルC1でロード命令2がDステージに入力される。この命令が読み出すレジスタR0、R2に書き込む命令には演算命令1があるが、ALU303による演算をEステージに配置しているため、サイクルC1でALU303での演算結果が得られる。そのため、ロード命令2についての待ちは不要である。
サイクルC2で演算命令3がDステージに入力される。この命令が読み出すレジスタR0は演算命令1、R3はロード命令2の書き込み先となっている。R0の読み出し待ちはALU303の演算が完了しているため0サイクルだが、R3の読み出し待ちはロード結果が2サイクル後に得られるため2サイクルとなる。そこで、演算命令3ではALU303による演算をM2ステージに配置する。
サイクルC3で演算命令4がDステージに入力される。この命令が読み出すレジスタR1に書き込みを行う実行中の命令は存在しないため、読み出し待ちサイクル数は0であり、ALU303による演算を1サイクル後のEステージに配置できる。実行中の命令がALU303を利用する時刻は、演算命令3のサイクルC5以後であり、1サイクル後のサイクルC4にALU303による演算を配置することができる。そこで、演算命令4ではALU303による演算をEステージに配置する。
サイクルC4で演算命令5がDステージに入力される。この命令が読み出すレジスタR3、R2に書き込む実行中命令はロード命令2であるが、この命令はこの時刻でM2ステージになるため、待ちサイクル数は0であり、EステージにALU303による演算を配置できる。しかしながら、演算命令4はM2ステージでALU303を利用し、この時刻でM1ステージになるため、EステージにALU303による演算を配置すると衝突する。そこで、演算命令5では、ALU303による演算をM1ステージに配置して衝突を回避する。このように本例によれば、レジスタ読み出し待ちが不要なため、毎サイクル命令を実行することができ、演算処理の高速化を図ることができる。
上記の例によれば、以下の作用効果を得ることができる。
(1)アウトオブオーダ方式では、命令依存、オペランド依存発生した場合にはその依存関係が解決するまで命令実行が保留され、依存関係がない命令が、コードの記述順序を飛び越えて先行実行されるため、命令の実行順序がコードの記述順序どおりとならず、命令列の先行取得や実行命令の探索、メモリアクセス順序の保障などといった多くの付加機構が必要となることから、この方式を低価格なマイクロプロセッサに適用するのは製造コスト的に困難とされる。
また、ディレイドALU方式によれば、演算結果がアドレスの場合には、ディレイドALUによってALUの演算が1サイクル遅れてしまうことに起因して、演算命令の結果をアドレスとしてキャッシュをアクセスする際の性能が低下する。
これに対して上記の例によれば、演算命令の入力としてデータキャッシュのアクセス結果を用いる場合に、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、上記ALU303による演算を配置するパイプラインステージを変更可能な演算パイプライン制御部103を含んでいるため、演算命令の実行に必要な入力の確定待ちサイクル数が最小となるステージにALU303による演算を配置することにより、キャッシュアクセスのパイプライン化により増加した入力確定待ちサイクル数を削減することができるので、キャッシュアクセスのパイプライン化に伴う性能低下を排除することができる。また、上記の例においては、上記アウトオブオーダー方式、すなわち、命令依存、オペランド依存発生した場合において、その依存関係が解決するまで命令実行が保留され、依存関係がない命令が、コードの記述順序を飛び越えて先行実行される方式とは異なり、命令列の先行取得や実行命令の探索、メモリアクセス順序の保障などといった多くの付加機構が不要とされので、低価格なマイクロプロセッサに適用することが可能とされる。
(2)演算命令の入力としてデータキャッシュのアクセス結果を用いる場合に、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数が最小となるステージにALU303による演算を配置することによって読み出しレジスタの確定待ちを排除できる。具体的には、演算命令の実行前に入力確定までの待ちサイクル数を求め、その待ちサイクル数だけ、後のステージにALU303による演算を配置するようにする。これにより、演算処理を効率良く行うことができる。待ちサイクル数が大きく、ALU303による演算を待ちサイクル数だけ後のステージに配置するのが困難とされる場合には、ALU303による演算を可能な限り後のステージに配置すれば良い。
(3)2ステージ後にALU303による演算を配置して実行を開始した命令の次のサイクルで1ステージ後にALU303による演算を配置する命令を実行すると、1サイクル後に2命令がALU303を利用することが考えられる。このように同一サイクルに複数の命令がALU303を利用するおそれが有る場合には、ALU303による演算を配置する際に、ALU303が利用される時刻を調べ、その時刻にはALU303による演算を配置しないようにする。具体的には、ALU303による演算を配置したいステージで他の演算命令がALU303による演算を利用する場合、さらに後のステージへALU303による演算を配置すれば良い。ALU303が利用される時刻は、実行中の各演算命令におけるALU303による演算の配置ステージの情報から求めることができる。
(4)ステージ間レジスタ302B,302C,302Dの出力を選択するライトセレクタ304を設けることにより、ALU配置ステージを、ステージ間レジスタ302Bの出力、ステージ間レジスタ302Cの出力、ステージ間レジスタ302Dの出力の3通りから容易に選択することができる。
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、キャッシュのパイプライン段数がさらに多い事例がある。この場合、キャッシュのパイプライン段数に応じてALU303による演算の配置可能な箇所を増加させて対応する。また、他の実施形態として、複数命令を同時実行するスーパースカラへの対応がある。スーパースカラを採用した場合、同一ステージに複数命令が存在するため、レジスタ読み出し待ちを同一ステージにある複数命令間の順序を考慮して実施すればよい。
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロプロセッサに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種データ処理装置に広く適用することができる。
本発明は、少なくとも、パイプライン処理を行うことを条件に適用することができる。
本発明にかかるデータ処理装置の一例とされるマイクロプロセッサの構成例ブロック図である。 上記マイクロプロセッサに含まれる命令実行部の構成例ブロック図である。 上記マイクロプロセッサに含まれるメモリパイプラインの構成例ブロック図である。 上記メモリパイプラインでロード命令が実行される際の動作説明図である。 上記マイクロプロセッサに含まれる演算パイプラインの構成例ブロック図である。 上記演算パイプラインで演算命令が実行される際の動作説明図である。 上記命令実行部に含まれるメモリパイプライン制御部の構成例ブロック図である。 上記メモリパイプライン制御部に含まれるストールチェック回路の構成例回路図である。 上記ストールチェック回路における主要部の動作説明図である。 上記命令実行部に含まれる演算パイプライン制御部の構成例ブロック図である。 上記演算パイプライン制御部に含まれる読み出しレジスタ番号生成回路の構成例回路図である。 上記演算パイプライン制御部に含まれるALU配置ステージ判定回路の構成例ブロック図である。 上記ALU配置ステージ判定回路における主要部の動作説明図である。 上記ALU配置ステージ判定回路における主要部の動作説明図である。 上記命令実行部において実行される命令の説明図である。 上記命令実行部において命令を実行する際にALU位置などの制御情報が生成される様子の説明図である。 上記制御情報に基づき命令が実行される様子の説明図である。
符号の説明
10 マイクロプロセッサ
20 メモリコントローラ
30 システムバス
40 命令フェッチ部
50 命令実行部
101 メモリパイプライン
102 メモリパイプライン制御部
103 演算パイプライン制御部
104 演算パイプライン
201 レジスタ読み出し部
202A,202B,202C,202D ステージ間レジスタ
203 アドレス生成器
204、205 データキャッシュ
206 レジスタ書き込み回路
301 レジスタ読み出し回路
302A,302B,302C,302D ステージ間レジスタ
303 ALU
304 ライトセレクタ
305 レジスタ書き込み回路
401 レジスタ書き込み有効パイプライン
402 書き込みレジスタ番号パイプライン
411 RS,RTデコーダ
412 ストールチェック部
413 ストール生成アンドゲート
414 レジスタ書き込み有効生成アンドゲート
415 ステージ間レジスタ
421 RDデコーダ
422 ステージ間レジスタ
501A,501B ストールチェッカー
502 オアゲート
601 ALU位置パイプライン
602 書き込みレジスタ番号パイプライン
603 読み出しレジスタ番号パイプライン
611 RS,RTデコーダ
612 ALU配置ステージ判定回路
613、614 ステージ間レジスタ
621 RDデコーダ
622 ステージ間レジスタ
631 ステージ間レジスタ
701 読み出しレジスタ選択制御回路
702 読み出しレジスタ番号セレクタ
801A,801B ストールサイクル発生回路
802 最大値選択回路
803 ALUマッピング回路

Claims (8)

  1. 命令を取得するための命令フェッチ部と、
    上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部と、を含むデータ処理装置であって、
    上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、
    上記演算パイプラインでの上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、上記演算器による演算を配置するステージを変更可能な演算パイプライン制御部と、を含んで成ることを特徴とするデータ処理装置。
  2. 命令を取得するための命令フェッチ部と、
    上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部と、を含むデータ処理装置であって、
    上記命令には、データのロードを指示するロード命令が含まれ、
    上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、
    上記ロード命令の実行によりロードされたデータが上記演算器による演算で利用されるポイントを、上記演算パイプラインにおいて上記データが確定するまでの待ちサイクル数に応じて変更可能な演算パイプライン制御部と、を含んで成ることを特徴とするデータ処理装置。
  3. 上記演算パイプライン制御部は、上記演算パイプラインでの上記演算命令の実行に必要なデータとしてデータキャッシュのアクセス結果を取り込む請求項1又は2記載のデータ処理装置。
  4. 上記演算パイプライン制御部は、上記データが確定するまでの待ちサイクル数が最小となるステージに上記演算器による演算を配置するものである請求項3記載のデータ処理装置。
  5. 上記演算パイプライン制御部は、上記演算器による演算を配置しようとするステージが他の演算命令の実行によって使用される場合、さらに後のステージに上記演算器による演算を配置するものである請求項3記載のデータ処理装置。
  6. 上記データキャッシュのアクセス結果を用いる演算命令の実行に必要なサイクル数は、上記演算命令より以前に実行された命令に依存して変化される請求項3記載のデータ処理装置。
  7. 上記演算パイプラインは、それぞれ上記演算器での演算結果を保持可能な複数のステージ間レジスタと、
    上記複数のステージ間レジスタの出力を選択可能なセレクタと、を含み、上記セレクタによる上記ステージ間レジスタの出力選択により、上記演算器による演算の配置ステージの変更を可能とする請求項3記載のデータ処理装置。
  8. 上記演算パイプライン制御部は、レジスタ書き込みの有効性を示す信号と、上記演算器による演算の配置ステージの情報とを保持可能な第1パイプラインと、
    上記命令によって書き込まれるレジスタ番号を保持可能な第2パイプラインと、
    上記命令によって読み出されるレジスタ番号を保持可能な第3パイプラインと、
    上記第1パイプラインの出力に基づいて上記第3パイプラインの出力を選択的に上記演算パイプラインに供給するための読み出しレジスタ番号生成回路と、を含んで成る請求項3記載のデータ処理装置。
JP2005227695A 2005-08-05 2005-08-05 データ処理装置 Withdrawn JP2007041999A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005227695A JP2007041999A (ja) 2005-08-05 2005-08-05 データ処理装置
US11/482,062 US7356675B2 (en) 2005-08-05 2006-07-07 Data processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005227695A JP2007041999A (ja) 2005-08-05 2005-08-05 データ処理装置

Publications (1)

Publication Number Publication Date
JP2007041999A true JP2007041999A (ja) 2007-02-15

Family

ID=37743904

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005227695A Withdrawn JP2007041999A (ja) 2005-08-05 2005-08-05 データ処理装置

Country Status (2)

Country Link
US (1) US7356675B2 (ja)
JP (1) JP2007041999A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9553879B2 (en) * 2003-06-06 2017-01-24 Core Wireless Licensing S.A.R.L. Method and apparatus to represent and use rights for content/media adaptation/transformation

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
EP0442116A3 (en) * 1990-02-13 1993-03-03 Hewlett-Packard Company Pipeline method and apparatus
US6629167B1 (en) * 2000-02-18 2003-09-30 Hewlett-Packard Development Company, L.P. Pipeline decoupling buffer for handling early data and late data
US6859873B2 (en) * 2001-06-08 2005-02-22 Infineon Technologies Ag Variable length instruction pipeline
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results

Also Published As

Publication number Publication date
US20070038845A1 (en) 2007-02-15
US7356675B2 (en) 2008-04-08

Similar Documents

Publication Publication Date Title
US6272623B1 (en) Methods and apparatus for branch prediction using hybrid history with index sharing
JP2987308B2 (ja) 情報処理装置
JP5145809B2 (ja) 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US20020169942A1 (en) VLIW processor
US7260707B2 (en) Variable length instruction pipeline
US20080141253A1 (en) Cascaded Delayed Float/Vector Execution Pipeline
US7620804B2 (en) Central processing unit architecture with multiple pipelines which decodes but does not execute both branch paths
JPH0540627A (ja) 並列演算処理装置
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
JP2009099097A (ja) データ処理装置
KR100986375B1 (ko) 피연산자의 빠른 조건부 선택
US20090204791A1 (en) Compound Instruction Group Formation and Execution
JP2006522398A (ja) パイプライン型命令プロセッサにおけるバイパスの使用
US20050177707A1 (en) Method and apparatus for recoding instructions
JP2008527559A (ja) プロセッサ及びその命令発行方法
US20080162894A1 (en) structure for a cascaded delayed execution pipeline
US20080141252A1 (en) Cascaded Delayed Execution Pipeline
JP2007041999A (ja) データ処理装置
US20080222392A1 (en) Method and arrangements for pipeline processing of instructions
JP3534987B2 (ja) 情報処理装置
JP2005038203A (ja) メモリ制御方法及び装置
JP4151497B2 (ja) パイプライン処理装置
US7711926B2 (en) Mapping system and method for instruction set processing
US9164761B2 (en) Obtaining data in a pipelined processor
KR100240590B1 (ko) 슈퍼스칼라 마이크로프로세서를 위한 명령어 디코딩 장치 및 그 방법

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: 20081007