[go: up one dir, main page]

JP4607958B2 - プロセッサおよびプログラム変換装置 - Google Patents

プロセッサおよびプログラム変換装置 Download PDF

Info

Publication number
JP4607958B2
JP4607958B2 JP2007513516A JP2007513516A JP4607958B2 JP 4607958 B2 JP4607958 B2 JP 4607958B2 JP 2007513516 A JP2007513516 A JP 2007513516A JP 2007513516 A JP2007513516 A JP 2007513516A JP 4607958 B2 JP4607958 B2 JP 4607958B2
Authority
JP
Japan
Prior art keywords
instruction
register
stage
processor
attribute information
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
JP2007513516A
Other languages
English (en)
Other versions
JPWO2007083421A1 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2007083421A1 publication Critical patent/JPWO2007083421A1/ja
Application granted granted Critical
Publication of JP4607958B2 publication Critical patent/JP4607958B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

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)

Description

本発明は、フォワーディング制御を有するプロセッサに関し、特に低消費電力化に関する。
従来、パイプライン化されたプロセッサでは、処理性能の向上のため、フォワーディング(FWD)制御が用いられる。フォワーディング制御とは、先行する命令の実行結果を出力するステージ(たとえばMEM(メモリアクセス)ステージ、WB(ライトバック)ステージ)から、後の命令のデータのフェッチするステージ(EXステージ)に先送りする制御をいう。これにより、先行する命令の実行結果であるデータをバイパスするので、データハザードを解消または低減することができる。
図1は、フォワーディング制御機構を有する、従来のパイプライン化されたプロセッサの構成を示す図である。図中、太線は主にデータを、細線は主に制御信号を示す。
同図で示されるように、フォワーディング制御機構を有する、従来のパイプライン化されたプロセッサは、命令解読部910と、命令制御部920と、命令実行部930と、レジスタファイル940とを備える。命令制御部920は、FWD制御回路921、レジスタファイル書き込み回路922、パイプラインバッファ制御回路923、演算処理制御回路924、メモリアクセス制御回路925を有する。命令実行部930は、演算処理実行回路931、メモリアクセス実行回路932、FWDセレクタ933、MEMセレクタ934、パイプラインバッファ(EX)935、パイプラインバッファ(MEM)936、パイプラインバッファ(WB)937を有する。レジスタファイル940は、レジスタ番号(#0〜#N)で管理される複数のレジスタ(Reg#0〜Reg#N)からなるデータ保持部942を有する。また、パイプラインは、DEC(Decode)ステージ、ID(Instruction Dispatch and register fetch)ステージ、EX(EXecute)ステージ、MEM(MEMory access)ステージ、WB(Write Back)ステージの5つのステージを含む。
まず、従来のパイプライン化されたプロセッサにおける命令実行時の動作に関して、パイプラインのステージごとに説明する。
DECステージでは、命令解読部910は、IDステージ以降で使用される命令解読情報の生成を行い、命令制御部920に出力する。
IDステージでは、命令解読情報に従ってレジスタファイル940からレジスタデータを読み出すことにより命令実行用の入力データを生成し、パイプラインバッファ(EX)935に出力する。
EXステージでは、パイプラインバッファ(EX)935に格納された命令実行入力データに対し、命令解読情報に従い、演算処理制御回路924またはメモリアクセス制御回路925が制御信号を生成し、演算処理実行回路931、メモリアクセス実行回路932を動作させる。
また、パイプラインバッファ制御回路923は、パイプラインバッファ(MEM)936を開き、演算処理実行回路931の出力である演算処理を行う命令に対する命令実行結果を格納する。
MEMステージでは、パイプラインバッファ制御回路923が、命令解読情報に従い、パイプラインバッファ(MEM)936の値またはメモリアクセスを行う命令に対する命令実行結果であるメモリアクセス実行回路932の出力のいずれかを選択するように選択制御信号を生成し、MEMセレクタ934に出力する。
また、パイプラインバッファ制御回路923は、パイプラインバッファ(WB)937を開き、EMセレクタ934の出力である命令実行結果を格納する。
WBステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路923が、レジスタファイル940に対する書き込み選択制御信号を生成し、パイプラインバッファ(WB)937の出力である命令実行結果をレジスタファイル940に書き込むことで、データ保持部942が更新される。
次に、フォワーディング制御機構について説明する。
FWD制御回路921は、先行の命令として実行されるEXステージ、MEMステージ、WBステージの命令により書き込まれる各レジスタと、後続の命令として実行されるIDステージの命令により読み出されるレジスタとが一致するかどうかの判定を行う。この判定結果により次の(1)〜(4)の動作に分かれる。
(1)判定の結果、IDステージの命令により読み出されるレジスタと、EXステージ、MEMステージ、WBステージの命令により書き込まれるレジスタのいずれかとが一致しない場合は、FWD制御回路921は、命令実行入力データとして、レジスタファイル940から読み出されたレジスタデータが選択されるように選択制御信号を生成し、FWDセレクタ933に出力する。
(2)IDステージの命令が読み出すレジスタと、EXステージの命令が書き込むレジスタが、一致する場合は、読み出すべきレジスタに対する命令実行結果がまだ正しく書き込まれていないため、FWD制御回路921は、一時、パイプランを停止させる。
(3)IDステージの命令が読み出すレジスタと、MEMステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をMEMステージからIDステージにフォワーディングするパスが存在するため、FWD制御回路921は、命令実行用の入力データとして、命令実行結果をMEMステージからIDステージにフォワーディングするパスが選択されるように選択制御信号を生成し、FWDセレクタ933に出力する。
(4)IDステージの命令が読み出すレジスタと、WBステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をWBステージからIDステージにフォワーディングするパスが存在するため、FWD制御回路921は、命令実行入力データとして、命令実行結果をWBステージからIDステージにフォワーディングするパスが選択されるように選択制御信号を生成し、FWDセレクタ933に出力する。これにより、WBステージからIDステージにフォワーディング動作がなされる。
パイプラインバッファ制御回路923は、パイプラインバッファ(EX)935を開き、FWDセレクタ933の出力である命令実行入力データを格納する。
さらに、フォワーディング動作がなされる命令列の一例について図2A〜図2Dを用いて説明する。
図2Aは、データ依存関係を有する命令列の一例を示す。同図の先行するロード(ld)命令は、Reg#31の値をアドレスとしてメモリからデータを読み出して、読み出したデータをReg#0にロードすることを指示する命令である。後続する加算(add)命令は、Reg#0の値とReg#1の値とを加算し、加算結果をReg#2に格納することを指示する命令である。
図2Bは、フォワーディングのうち特にMEMステージからIDステージへのフォワーディングのタイミングを示す一例であり、図2Aの命令列を実行時のパイプラインステージと実行サイクルとを示す図である。ただしDECステージ以前は省略してある。上記ロード命令はIDステージ、EXステージ、MEMステージ、WBステージをt1〜t3の4サイクルでハザードを生じさせることなく順にパイプライン処理される。上記add命令は、上記4つのステージをt2〜t5の5サイクルで処理され、t3サイクルでハザードを生じさせている。t3サイクルでは、先行するロード命令の実行(Reg#0に格納すべきデータをメモリから読み出すこと)が完了していないため、後続するadd命令の実行に要する入力データ(Reg#0に格納すべきデータ)が読み出されていないからである。しかしt3サイクル(特にその後半)では、先行するロード命令のMEMステージから後続する加算命令のIDステージに対して入力データ(Reg#0に格納すべきデータ)が、MEMセレクタ934からFWDセレクタ933を介してパイプラインバッファ(EX)935にフォワーディングされる。これにより、t3から4サイクルに変化するとき、Reg#0への書き込みは完了していないが、後続命令するadd命令がIDステージからEXステージに移行することができる。
なお、図2Bは、図2Aにおいてロード命令と加算命令の間にメモリアクセスしない単純な命令(例えば、レジスタ、メモリに対して何も処理しないことを指示する命令であるノップ(nop)命令など)が1つ挿入されている場合も同じタイミングとなる。このように、MEMステージからIDステージへのフォワード動作は、図2Aの命令列の場合や、図2Aの命令列に対してロード命令と加算命令との間に単純な命令が1つ挿入されている場合に実行される。また、命令が1つ挿入されている場合にはハザードを発生させない。
図2Cは、フォワーディングのうち特にWBステージからIDステージへのフォワーディングのタイミングを示す一例であり、図2Aにおいてロード命令と加算命令の間にメモリアクセスしない単純な命令が2つ挿入されている場合のパイプラインステージと実行サイクルとを示す図である。この例では、ロード命令と加算命令の間に挿入された2つの命令をinst1、inst2と表記している。上記add命令は、上記4つのステージをt4〜t7の4サイクルで処理される。ここで、t4サイクル(特にその後半)では、先行するロード命令のWBステージから後続する加算命令のIDステージに対して、入力データ(Reg#0に格納すべきデータ)がMEMセレクタ934からFWDセレクタ933を介してパイプラインバッファ(EX)935にフォワーディングされる。これにより、t4サイクルではReg#0への書き込みさえ完了していないのに、後続命令するadd命令がIDステージからEXステージに移行することができる。これにより、t4から5サイクルに変化するとき、Reg#0の読み出しができないのに、後続命令するadd命令がIDステージからEXステージに移行することができる。このように、WBステージからIDステージへのフォワード動作は、図2Aの命令列に対してロード命令と加算命令との間に単純な命令が2つ挿入されているような場合に実行され、しかも、このような命令列はハザードを発生させない。
図2Dは、図2Aの命令列をフォワーディング機構を有しないプロセッサで実行した場合のパイプラインステージと実行サイクルとを示す図である。この場合、3サイクルのハザードが生じている。先行するロード命令のWBステージでReg#0への書き込みが完了してから、後続する命令add命令がIDステージでReg#0を読み出すからである。
ジョン・L. ヘネシー 、デイビッド・A・パターソン著「コンピュータの構成と設計第2版(下)−ハードウエアとソフトウェアのインタフェース−」日経BP社発行、2005年6月2日、 p440〜452
しかしながら、上記従来技術によれば、レジスタファイルへの不要な書き込みにより電力が消費される場合があるという問題がある。具体的には、従来の技術においては、先行する命令の実行結果であるレジスタデータが後続する1命令にのみ参照され、かつ、フォワーディング動作が発生した場合は、先行の命令による命令実行結果が、レジスタファイル940に対し、書き込まれたとしても、以降の命令で、この値が読み出されることはない。
上記課題に鑑みて本発明は、レジスタファイルへの不要な書き込みによる電力を削減し、低消費電力なプロセッサを提供することを目的とする。
前記目的を達成するために、本発明のプロセッサは、フォワーディング機能を有するプロセッサであって、レジスタへの書き込み抑制に関する属性情報を保持する保持手段と、フォワーディングが起きたとき、属性情報に応じてフォワーディングされたデータのレジスタ書き込みを抑制する制御手段とを備える。
この構成によれば、レジスタファイルに対する不要な書き込みによる電力を削減でき、より低消費電力を実現することができる。
ここで、前記保持手段は、少なくとも1つのレジスタに対応させて前記属性情報を保持するようにしてもよい。
この構成によれば、レジスタへの不要な書き込み抑制するか否かを、レジスタの属性として設定することができる。
ここで、前記プロセッサは、パイプラインステージ間でデータを順に受け渡す複数段のパイプランバッファを有し、前記保持手段は、複数のパイプラインバッファの一部であり、フォワーディング対象のデータと共に前記属性情報を後段のパイプラインバッファに受け渡す構成としてもよい。
この構成によれば、レジスタへの不要な書き込み抑制するか否かを、命令で指定されるオペランドデータの属性として設定することができる。
ここで、前記プロセッサは、さらに、レジスタ書き込み抑制指示を含む命令を解読したとき、前記属性情報をパイプラインバッファに出力する命令解読部を備えるようにしてもよい。
この構成によれば、レジスタ書き込み抑制指示(属性)を命令毎に設定することができる。
ここで、前記プロセッサは、パイプラインステージ間でデータを順に受け渡す複数段のパイプランバッファを有し、前記抑制手段は、さらに、データがフォワーディングされたとき、当該データをそれ以降のパイプラインバッファに書き込むことを抑制するようにしてもよい。
この構成によれば、レジスタへの不要な書き込みを抑制することに加えて、既にフォワーディングされたデータを、それ以降のパイプラインバッファに書き込むことをも抑制するので、さらに低消費電力を実現することができる。
ここで、前記プロセッサはさらに、レジスタへの書き込みを抑制するか否かを指示する制御レジスタを有し、前記保持手段は制御レジスタに保持されたデータに対応する属性情報を保持するようにしてもよい。
この構成によれば、保持手段の属性情報を制御レジスタの設定によって変更することができる。例えば、レジスタへの書き込みを抑制しないように制御レジスタを設定すれば、既存のプログラムとの互換性を維持することができ、特定のレジスタへの書き込みを抑制するように制御レジスタを設定すれば、新たなプログラムを実行することができる。
ここで、前記プロセッサは、さらに、属性情報を変更する属性変更命令を実行することによって前記保持手段の属性情報を書き換えるようにしてもよい。
この構成によれば、レジスタへの不要な書き込み抑制するか否かを設定するレジスタの属性を、属性変更命令によって任意に変更することができる。
また、本発明のプログラム変換装置は、オリジナルプログラムを請求項1記載のプロセッサを対象とするプログラムに変換するプログラム変換装置であって、オリジナルプログラムからレジスタに格納される変数を抽出する抽出手段と、抽出された変数の生存区間を検出する検出手段と、前記変数を参照する参照命令が生存区間において1つのみであるか否かを判定する第1判定手段と、前記生存区間において、前記変数を定義する定義命令と前記参照命令とがフォワーディングの対象となるか否かを判定する第2判定手段と、参照命令が生存区間において1つのみであると判定され、かつフォワーディングの対象となると判定された場合に、前記定義命令によるレジスタ書き込みを抑制する抑制命令を含むプログラムを生成する生成手段とを有する。
この構成によれば、レジスタファイルに対する不要な書き込みによる電力を削減でき、より低消費電力を実現するプログラムを生成することができる。
また、本発明のプログラム変換方法も、上記と同様の手段を有する。
また、属性情報は、フォワーディング動作が発生した場合、命令の実行結果をレジスタファイルに書き込むか否か表す。
これによって、フォワーディング動作が発生した場合は、属性情報により、レジスタファイルへの書き込みを行うかどうかを判定し、書き込みが必要ないと判定された場合は、レジスタファイルへの書き込みを抑制することで、電力を削減できる。
以上、本発明に係るプロセッサによれば、レジスタファイルに対する不要な書き込みによる電力を削減でき、より低消費電力を実現したプロセッサを提供することができる。
(実施の形態1)
実施の形態1におけるプロセッサは、個々のレジスタが、それぞれ個別の属性情報を持つ複数のレジスタからなるレジスタファイルを有し、属性情報によって、レジスタファイルへの書き込みの有無を制御することを特徴とする。
以下、本発明に係る実施の形態1について、図面を参照しながら説明する。
図3は、実施の形態1おけるプロセッサの構成を示す図である。図中、太線は主にデータを、細線は主に制御信号を示す。本プロセッサは、パイプライン化され、フォワーディング機構を有する。図で示されるように、本プロセッサは、命令解読部110と、命令制御部120と、命令実行部130と、レジスタファイル140とを備える。
命令制御部120は、FWD制御回路121、レジスタファイル書き込み回路122、パイプラインバッファ制御回路123、演算処理制御回路124、メモリアクセス制御回路125、レジスタ書き込み抑制部126を有する。また、命令実行部130は、演算処理実行回路131、メモリアクセス実行回路132、FWDセレクタ133、MEMセレクタ134、パイプラインバッファ(EX)135、パイプラインバッファ(MEM)136、パイプラインバッファ(WB)137、抑制ゲート138、抑制ゲート139を有する。このうち、レジスタ書き込み抑制部126、抑制ゲート138および抑制ゲート139は、フォワーディングが起きたとき、属性情報に応じてフォワーディングされたデータのレジスタ書き込みを抑制する制御手段として機能する。
レジスタファイル140は、レジスタ番号(#0〜#N)で管理され属性情報保持部141およびデータ保持部142からなる。属性情報保持部141はレジスタ番号に対応さする複数の属性情報(Atr#0〜Atr#N)を保持する。データ保持部142はレジスタ番号に対応させて、データを保持する複数のレジスタ(Reg#0〜Reg#N)からなる。属性情報保持部141は、レジスタへの書き込み抑制に関する属性情報を保持する。各属性情報は「フォワーディング動作が発生した場合、命令の実行結果を対応するレジスタに書き込むか否か」を表し、「フォワーディング動作が発生した場合、命令の実行結果をレジスタファイルに書き込む」場合は0、「フォワーディング動作が発生した場合、命令の実行結果をレジスタファイルに書き込まない」場合は1に設定される。
また、上記プロセッサは、パイプラインステージとして、DECステージ、IDステージ、EXステージ、MEMステージ、WBステージの5つを含む。
以上のように構成された本実施の形態におけるプロセッサの動作に関して、パイプラインのステージごとに説明する。
(DECステージ)
DECステージでは、命令解読部110により、IDステージ以降で使用される命令解読情報の生成を行い、命令制御部120に出力する。
(IDステージ)
IDステージでは、命令実行時に読み出すレジスタの値を、命令実行入力データとして生成し、命令実行部130に出力する。
はじめに、FWD制御回路121は、後続の命令として実行されるIDステージの命令が読み出すレジスタと、先行の命令として実行されるEXステージ、MEMステージ、WBステージの命令が書き込むレジスタが、一致するかどうかの判定を行う。この判定結果により次の(1)〜(4)の動作に分かれる。
(1)IDステージの命令が読み出すレジスタと、EXステージ、MEMステージ、WBステージの命令が書き込むレジスタが、いずれも一致しない場合は、FWD制御回路121は、命令実行入力データとして、レジスタファイル140からの直接の値が選択されるように選択制御信号を生成し、FWDセレクタ133に出力する。
(2)IDステージの命令が読み出すレジスタと、EXステージの命令が書き込むレジスタが、一致する場合は、読み出すべきレジスタに対する命令実行結果を読み出すことができないため、FWD制御回路121は、一時、パイプランを停止させる。
(3)IDステージの命令が読み出すレジスタと、MEMステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をMEMステージからIDステージにフォワーディングするパスが存在するため、FWD制御回路121は、命令実行入力データとして、命令実行結果をMEMステージからIDステージにフォワーディングするパスが選択されるように選択制御信号を生成し、FWDセレクタ133に出力する。このようにしてMEMステージからIDステージへのフォワーディング動作が行われる。
このとき、フォワーディングされたデータの書き込み先レジスタに対応する属性情報が1であれば、レジスタ書き込み抑制部126は、抑制ゲート138にマスク信号MASK−MEMをアサートする。マスク信号MASK−MEMがアサートされると、抑制ゲート138は、パイプラインバッファ(MEM)136からパイプラインバッファ(WB)137に出力されるWE(Write Enable)信号をマスクすることにより、フォワーディングされたデータのレジスタへの書き込みを抑制する。
(4)IDステージの命令が読み出すレジスタと、WBステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をWBステージからIDステージにフォワーディングするパスが存在するため、FWD制御回路121は、命令実行入力データとして、命令実行結果をWBステージからIDステージにフォワーディングするパスが選択されるように選択制御信号を生成し、FWDセレクタ133に出力する。パイプラインバッファ制御回路123は、パイプラインバッファ(EX)135を開き、FWDセレクタ133の出力である命令実行入力データを格納する。このようにしてWBステージからIDステージへのフォワーディング動作が行われる。
このとき、フォワーディングされたデータの書き込み先レジスタに対応する属性情報が1であれば、レジスタ書き込み抑制部126は、抑制ゲート139にマスク信号MASK−WBをアサートする。マスク信号MASK−WBがアサートされると、抑制ゲート139がパイプラインバッファ(WB)137からレジスタファイル140に出力されるWE(Write Enable)信号をマスクすることにより、フォワーディングされたデータのレジスタへの書き込みを抑制する。
(EXステージ)
EXステージでは、パイプラインバッファ(EX)135に格納された命令実行入力データに対し、命令解読情報に従い、演算処理制御回路124またはメモリアクセス制御回路125が制御信号を生成し、演算処理実行回路131、メモリアクセス実行回路132が動作させる。
また、パイプラインバッファ制御回路123は、パイプラインバッファ(MEM)136を開き、演算処理実行回路131の出力である演算処理を行う命令に対する命令実行結果を格納する。
(MEMステージ)
MEMステージでは、パイプラインバッファ制御回路123が、命令解読情報に従い、パイプラインバッファ(MEM)136の値またはメモリアクセスを行う命令に対する命令実行結果であるメモリアクセス実行回路132の出力のいずれかを選択するように選択制御信号を生成し、MEMセレクタ134に出力する。
また、パイプラインバッファ制御回路123は、パイプラインバッファ(WB)137を開き、MEMセレクタ134の出力である命令実行結果を格納する。
(WBステージ)
WBステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路123が、レジスタファイル140に対する書き込み制御信号を生成し、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込むことで、データ保持部142が更新される。
但し、属性情報保持部141が1、かつ、FWD制御回路121からMEMステージ、または、WBステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路123が、レジスタファイル140に対する書き込み制御信号を生成せず、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込まれることはなくなり、データ保持部142は更新されない。
図4は、レジスタ書き込み抑制回路126およびその周辺の構成例を示す図である。同図において、レジスタ書き込み抑制回路126は、属性セレクタ126a、アンドゲート126b、属性セレクタ126c、アンドゲート126dを備える。また、同図では、パイプラインステージ間でデータを順に受け渡す複数段のパイプラインバッファのうち、パイプラインバッファ(EX)135、パイプラインバッファ(MEM)136、パイプラインバッファ(WB)137それぞれの一部分を図示している。図中のWN(Write Number)は、書き込み先のレジスタ番号を示す。WEはレジスタへの書き込み制御信号を示す。FWD−MEM信号はMEMステージからIDステージへフォワーディングすることを示す信号であり、FWD制御回路121から出力される。FWD−WB信号はWBステージからIDステージへフォワーディングすることを示す信号であり、FWD制御回路121から出力される。
属性セレクタ126aは、属性情報保持部141に保持された属性情報(Atr#0〜ATR#N)のうち、パイプラインバッファ(MEM)136に保持されたWNが示すレジスタ番号に対応する属性情報を選択する。つまり、選択される属性情報は、MEMステージのデータの書き込み先を示すレジスタ番号である。
アンドゲート126bは、属性セレクタ126aにより選択された属性情報とFWD−MEM信号とのアンドをとり、マスク信号MASK−MEMとして出力する。つまり、アンドゲート126bは、命令実行結果であるデータがMEMステージからIDステージへフォワーディングされ、かつ、そのデータの書き込み先レジスタの属性情報が「命令の実行結果をレジスタファイルに書き込まない」場合に、マスク信号MASK−MEMをアサートする。
属性セレクタ126cは、属性情報保持部141に保持された属性情報(Atr#0〜ATR#N)のうち、パイプラインバッファ(WB)137に保持されたWNが示すレジスタ番号に対応する属性情報を選択する。つまり、選択される属性情報は、WBステージのデータの書き込み先を示すレジスタ番号である。
アンドゲート126dは、属性セレクタ126cにより選択された属性情報とFWD−EB信号とのアンドをとり、マスク信号MASK−WBとして出力する。つまり、アンドゲート126dは、命令実行結果であるデータがWBステージからIDステージへフォワーディングされ、かつ、そのデータの書き込み先レジスタの属性情報が「命令の実行結果をレジスタファイルに書き込まない」場合に、マスク信号MASK−WBをアサートする。
抑制ゲート138は、マスク信号MASK−MEMに従ってパイプラインバッファ(MEM)136からパイプラインバッファ(WB)137に出力されるWE(Write
Enable)信号をマスクする。これによりフォワーディングされたデータのレジスタへの書き込みが抑制される。
抑制ゲート139は、マスク信号MASK−WBに従ってパイプラインバッファ(WB)137からレジスタファイル140に出力されるWE(Write Enable)信号をマスクする。これによりフォワーディングされたデータのレジスタへの書き込みが抑制される。
以上、本発明に係る実施の形態1のプロセッサにおいては、フォワーディング動作が発生した場合は、属性情報保持部141に保持された属性情報に応じて、レジスタ書き込み抑制回路126は、フォワーディングされたデータのレジスタ書き込みを抑制する。これにより、レジスタファイル140への不要な書き込みを抑制することで、消費電力を削減できる。
なお、属性情報Atr#1〜#Nのうち、全部または一部の属性情報を固定としてもよい。また、プロセッサのパイプライン段数は、フォワーディングパスが少なくとも1つ存在する構成であれば何段でもよい。
(実施の形態2)
以下、本発明に係る実施の形態2について、図面を参照しながら説明する。
実施の形態2におけるプロセッサは、実施の形態1におけるプロセッサに加え、命令実行部の内部資源であるパイプラインバッファの変更の有無を制御することを特徴とする。
以上の点を踏まえて、本発明における実施の形態2におけるプロセッサについて説明する。
図5は、実施の形態2におけるプロセッサの構成を示す図である。図5のプロセッサの構成と実施の形態1におけるプロセッサの構成と異なる点は、抑制ゲート201が追加されている点である。
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態1におけるプロセッサと同じ点は説明を省略し、異なる(MEMステージ)点について説明する。
抑制ゲート201は、MASK−WB信号に従ってパイプラインバッファ(WB)137への書き込み制御信号をマスクする。これにより、パイプラインバッファ(WB)137への書き込み動作を抑制するので、レジスタファイル140の消費電力低減に加えて、パイプラインバッファ(WB)137の消費電力を低減することができる。
(MEMステージ)
MEMステージでは、パイプラインバッファ制御回路123が、命令解読情報に従い、パイプラインバッファ(MEM)236の値またはメモリアクセスを行う命令に対する命令実行結果であるメモリアクセス実行回路132の出力のいずれかを選択するように選択制御信号を生成し、MEMセレクタ134に出力する。
また、パイプラインバッファ制御回路123は、パイプラインバッファ(WB)137への書き込み制御信号によって、パイプラインバッファ(WB)137を開き、MEMセレクタ134の出力である命令実行結果を格納する。
但し、属性情報保持部141が1、かつ、FWD制御回路121からMEMステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、MASK−WB信号がアサートされる。これに従って抑制ゲート201はパイプラインバッファ(WB)137への書き込み制御信号をマスクする。
その結果、パイプラインバッファ制御回路123は、パイプラインバッファ(WB)137を開かず、MEMセレクタ134の出力である命令実行結果をパイプラインバッファ(WB)137に格納しない。
以上、本発明に係る実施の形態2のプロセッサにおいては、フォワーディング動作が発生した場合は、属性情報保持部141により、パイプラインバッファ(WB)137への不要な格納を抑制することで、電力を削減できる。
なお、書き込みの抑制の対象は最終段のパイプラインバッファに限らず、データがフォワーディングされたステージより後段のパイプラインバッファに書き込むことを抑制すればよい。また、パイプラインバッファの全部でなく一部(少なくともWNとWEを保持する部分)への書き込み動作を抑制してもよい。
(実施の形態3)
以下、本発明に係る実施の形態3について、図6を用いて説明する。
実施の形態3におけるプロセッサは、実施の形態1におけるプロセッサ異なる点は、属性情報が変化することなく、常に一意に決定しているレジスタを、個別に有する点である。
図6は、実施の形態3におけるプロセッサの構成を示す図である。図6のプロセッサの構成と実施の形態1におけるプロセッサの構成と異なる点は、レジスタファイル140の代わりに、属性情報保持部141を有するレジスタファイル340を備え、レジスタ書き込み抑制回路126の代わりにレジスタ書き込み抑制回路326を備える点である。
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態1におけるプロセッサと同じ点は説明を省略し、異なる点について説明する。
レジスタファイル340に含まれる個々のレジスタに対応する属性を保持する属性情報保持部141を有するのではなく、特定のレジスタ(レジスタ番号 Reg#N)に対応する属性(常に1)を保持する属性情報保持部341を備えている。
レジスタ書き込み抑制回路326は、レジスタ書き込み抑制回路126と同じ構成でも問題ないが、図4に示した属性セレクタ126a、126cを削除し、Atr#Nをアンドゲート126b、126dにそれぞれ直接入力する回路構成でよい。
(WBステージ)
WBステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路122が、レジスタファイル340に対する書き込み制御信号を生成し、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル340に書き込むことで、データ保持部142が更新される。
但し、特定のレジスタ(レジスタ番号 Reg#N)に対する書き込みが行われる命令、かつ、FWD制御回路121からMEMステージ、または、WBステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路123が、レジスタファイル340に対する書き込み制御信号を生成せず、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル340に書き込まれることはなくなり、データ保持部142は更新されない。
以上、本発明に係る実施の形態3のプロセッサにおいては、属性情報保持部341を特定のレジスタに対応させることで、制御回路全体の簡略化を行うことができる。
なお、特定のレジスタは1個に限らず複数個としてもよい。
(実施の形態4)
以下、本発明に係る実施の形態4について、図面を参照しながら説明する。
実施の形態4におけるプロセッサは、実施の形態2におけるプロセッサに加え、プロセッサ状態レジスタを有することを特徴とする。以上の点を踏まえて、本発明における実施の形態1におけるプロセッサについて説明する。
図7は、実施の形態4におけるプロセッサの構成を示す図である。図7のプロセッサの構成と実施の形態1におけるプロセッサの構成と異なる点は、プロセッサ状態レジスタ412が追加され、その出力が属性情報保持部141に接続されている点である。
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態1におけるプロセッサと同じ点は説明を省略し、異なる点について説明する。
プロセッサ状態レジスタ412は、レジスタへの書き込みを抑制するか否かを指示する制御レジスタとして機能する。属性情報保持部141は、プロセッサ状態レジスタ412(制御レジスタ)に保持されたデータに対応する属性情報を保持する。
(WBステージ)
WBステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路123が、レジスタファイル140に対する書き込み制御信号を生成し、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込むことで、データ保持部142が更新される。
但し、属性情報保持部141が1、かつ、FWD制御回路121からMEMステージ、または、WBステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路123が、レジスタファイル140に対する書き込み制御信号を生成せず、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込まれることはなくなり、データ保持部142は更新されない。
また、プロセッサ状態レジスタの値を特定の値に設定することで、属性情報保持部141を全て0に変更することができる。
以上のように、本発明に係る実施の形態4のプロセッサにおいては、属性情報保持部141の制御をプロセッサ状態レジスタ412によって、設定することが可能になる。例えば、属性情報Atr#0〜#Nの全てを0にするようにプロセッサ状態レジスタ412を設定すれば、本プロセッサの動作を従来のプロセッサと動作に変更することができ、ソフトウェアレベルのプロセッサ動作の互換性を保つことができる。
属性情報Atr#Nのみを1にするようにプロセッサ状態レジスタ412を設定してもよいし、プロセッサが実装される装置に依存してプロセッサ状態レジスタ412のデータを固定してもよいし、動的に変更してもよい。
(実施の形態5)
実施の形態5におけるプロセッサは、実施の形態1におけるプロセッサに加えて、命令として、属性変更命令を更に有することを特徴とする。以上の点を踏まえて、本発明における実施の形態5におけるプロセッサについて説明する。
図8は、実施の形態5におけるプロセッサの構成を示す図である。図8のプロセッサの構成と実施の形態1におけるプロセッサの構成と異なる点は、WBステージのパイプラインバッファ137の出力である命令実行結果が属性情報141に接続されている点である。
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態1におけるプロセッサと同じ点は説明を省略し、異なる(WBステージ)点について説明する。
(WBステージ)
WBステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路123が、レジスタファイル140に対する書き込み制御信号を生成し、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込むことで、データ保持部142が更新される。
但し、属性情報141が1、かつ、FWD制御回路121からMEMステージ、または、WBステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路522が、レジスタファイル140に対する書き込み制御信号を生成せず、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込まれることはなくなり、データ保持部142は更新されない。
属性変更命令“set_attribute Reg#n”を実行した場合は、レジスタファイル書き込み制御回路522が、レジスタファイル140に対する書き込み制御信号を生成し、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込むことで、属性情報保持部141が更新され、1に設定される。
また、属性変更命令“reset_attribute Reg#n”を実行した場合は、レジスタファイル書き込み制御回路522が、レジスタファイル140に対する書き込み制御信号を生成し、パイプラインバッファ(WB)137の出力である命令実行結果をレジスタファイル140に書き込むことで、属性情報保持部141が更新され、0に設定される。
以上、本発明に係る実施の形態5のプロセッサにおいては、各レジスタに対する属性情報保持部141を、ソフトウェアにより任意に変更することが可能になる。
つづいて、実施の形態5おけるプログラム変換装置について図面を参照しながら説明する。実施の形態5におけるプログラム変換装置は、コンパイラ装置であって、実施の形態5のプロセッサに対応し、プログラム構造を分析し属性変更命令を自動的に挿入することを特徴とする。
以上の点を踏まえて、本発明における実施の形態5におけるコンパイラ装置について説明する。
図9は、実施の形態5におけるコンパイラ装置の構成を示す図である。
同図で示されるように、本コンパイラ装置は、コンパイラ602と拡張アセンブラ604とを有する。コンパイラ602は、高級言語であるC言語ソースコード601を従来と同様の命令からなるアセンブラコード603に変換する。
拡張アセンブラ604は、アセンブラコード603を、属性変更命令を追加したアセンブラコード605に変換する。
以上のように構成された本実施の形態におけるコンパイラの動作に関して、本コンパイラの動作に関して説明する。
はじめに、コンパイラ602は、従来のコンパイルフローにより、高級言語であるC言語ソースコード601をアセンブラコード(従来)603に変換する。
一例としてあげた、アセンブラコード(従来)603の内容に関して説明する。
1行目:分岐命令実行時の分岐先アドレスをLabelとして表す擬似命令。
2行目:Reg#31のデータをアドレスとしてメモリへの読み出しを行い、読み出されたデータをReg#0に格納するロード命令。
3行目:Reg#0とReg#1のデータを加算し、Reg#2に格納する加算命令。
4行目:Reg#2のデータを、Reg#31のデータをアドレスとしてメモリへの書き込みを行うストア命令。
5行目: Reg#31と即値1を加算し、Reg#31に格納する加算命令。
6行目: 1行目に分岐する(ループ実行)分岐命令。
次に、拡張アセンブラ604は、アセンブラコード(従来)603を、属性変更命令を追加したアセンブラコード(新規命令追加)605に変換する。ここで、拡張アセンブラ604は、Reg#0がアセンブラコード(従来)603中の2行目で書き込まれ、直後の3行目の命令でのみ読み出されることを判定し、Reg#0の属性を1にセットするように、属性変更命令(set_attribute Reg#0)をループ実行直前の命令に挿入する。この命令は属性Atr#0を1にセットすることを指示する。また、ループ実行を抜けたときのため、Reg#0の属性を0にリセットするように、属性変更命令(reset_attribute Reg#0)を挿入する。この命令は属性Atr#0を0にリセットすることを指示する。
図10は、実施の形態5における拡張アセンブラ604の処理フローを示す図である。同図のように、拡張アセンブラ604は、オリジナルのアセンブラコード603から、オリジナルプログラムからレジスタに格納される変数およびデータ依存関係を抽出し(S81)、さらに命令間の依存関係を基に生存区間を検出する(S82)。生存区間は、変数を定義する命令(定義命令と呼ぶ)からはじまりその変数を最後に参照する命令(参照命令と呼ぶ)までの区間をいう。さらに、拡張アセンブラ604は、変数のうち、基本ブロックをまたがって参照されないローカル変数を抽出し(S83)、当該変数を参照する参照命令が生存区間において1つのみであるか否かを判定し(S84)、生存区間において、当該変数を定義する定義命令と参照する参照命令とがフォワーディングの対象となるか否かを判定する(S85)。このとき、定義命令と参照命令とがフォワーディングの対象となるか否かは、定義命令と参照命令との間の距離による。定義命令から参照命令までの命令数であり、例えば、定義命令の直後に参照命令がある場合を距離1とする。言い換えれば、定義命令と参照命令の間に挿入されている命令数+1を距離とする。この場合、本実施の形態のプロセッサでは距離が3以下であれば、フォワーディングの対象となると判定される。
判定において、参照命令が生存区間において1つのみであると判定され、かつフォワーディングの対象となると判定された場合に、拡張アセンブラ604は、前記定義命令によるレジスタ書き込みを抑制するために、定義命令によるレジスタ書き込みを抑制する抑制命令を追加する(S86、S87)。ここでいう抑制命令は、生存期間の前に変数を格納すべきレジスタへの書き込みを抑制する属性情報を設定する属性変更命令(set_attribute Reg#n)と、生存期間の後に変数を格納すべきレジスタへの書き込みを抑制しない属性情報を設定する属性変更命令(reset_attribute Reg#n)とである。拡張アセンブラ604は、次のローカル変数があれば(S88)、ステップS83以降を再度処理する。
また、判定において、参照命令が生存区間において1つのみでないと判定され、またはフォワーディングの対象とならないと判定された場合に、拡張アセンブラ604は、次のローカル変数があれば(S88)、ステップS83以降を再度処理する。
以上により、ソフトウェア開発者は、属性変更命令を意図したプログラミングを行うことなしに実施の形態5におけるプロセッサによる低消費電力化の効果を得ることができる。
なお、(set_attribute Reg#n)命令は定義命令の直前でよく、(reset_attribute Reg#n)命令は参照命令の直後でよいが、後者の命令は図9に示すようにループを抜けた位置に挿入することが望ましい。
(実施の形態6)
以下、本発明に係る実施の形態6について、図面を参照しながら説明する。本実施の形態では属性情報が個々のレジスタに対応して保持されるのではなく、属性情報がフォワーディング対象の個々のデータに対応して複数段のパイプラインバッファ保持され、複数のパイプラインバッファに受け渡される構成について説明する。
図11は、実施の形態6におけるプロセッサの構成を示す図である。図11に示すプロセッサは、実施の形態1におけるプロセッサと比較して、レジスタファイル140の代わりにレジスタファイル640を備える点と、命令制御部120の代わりに命令制御部620を備える点と、命令解読部110の代わりに命令解読部610を備える点と、パイプランバッファ135〜137の代わりにパイプランバッファ635〜637を備える点と、抑制ゲート138、139の代わりに抑制ゲート638、639を備える点とが異なっている。
レジスタファイル640は、データ保持部142を備えるが、個々のレジスタに対応する属性情報保持部141を有しない。本実施の形態では、フォワーディング対象のデータに対応させた属性情報*Sを保持させるために、パイプランバッファ635〜637の一部が属性情報保持手段として機能する。
命令解読部610は、命令解読部110の機能に加えて、レジスタ書き込み抑制指示を含む命令を解読する点が異なっている。本プロセッサは、レジスタにデータを書き込む命令として、レジスタ書き込み抑制指示を含まない通常命令と、レジスタ書き込み抑制指示を含む抑制命令との2種類をサポートする。例えば、通常のロード命令(ld Reg#0、(Reg#31))に対して、抑制指示付きのロード命令(ld* Reg#0、(Reg#31))も実行可能である。抑制命令のニーモニック表記は、通常の命令に*を付加したものである。
命令制御部620は、命令制御部120と比べてレジスタ書き込み抑制回路126を備えていない点が異なっている。
図12は、パイプランバッファ635〜637の一部と、抑制ゲート638、639の構成例を示す図である。
パイプランバッファ635〜637は、パイプランバッファ135〜137と同様にパイプラインステージ間でデータを順に受け渡す機能に加えて、フォワーディング対象のデータと共に、それに対応する属性情報*Sを後段のファイプランバッファに受け渡す。この属性情報*Sは、命令解読部610が上記の抑制命令を解読したときに、命令解読部610によってWN信号やWE信号とともにパイプランバッファ635に書き込まれ、後段のパイプランバッファ636、637に受け渡されていく。このように、パイプランバッファ635〜637の一部は、フォワーディング対象のデータに対応させて属性情報*Sを保持する属性保持部641を構成し、属性情報保持手段として機能する。
抑制ゲート638、639は、抑制ゲート138、139の機能に加えて、レジスタ書き込み抑制回路126として機能する。
抑制ゲート638は、MEMステージからIDステージへのフォワーディング動作を示すFWD−MEM信号と、パイプラインバッファ(MEM)636から出力される属性情報*Sと、パイプラインバッファ(MEM)636から出力されるWE信号とが入力される。これらの入力信号について、FWD−MEM信号がアサートされ、かつ属性情報*Sが1(レジスタ書き込み抑制)であれば、抑制ゲート638はWE信号をマスクすることにより、フォワーディングされたデータのレジスタ書き込みを抑制する。
抑制ゲート639は、WBステージからIDステージへのフォワーディング動作を示すFWD−WB信号と、パイプラインバッファ(WBM)637から出力される属性情報*Sと、パイプラインバッファ(WB)637から出力されるWE信号とが入力される。これらの入力信号について、FWD−WB信号がアサートされ、かつ属性情報*Sが1(レジスタ書き込み抑制)であれば、抑制ゲート639はWE信号をマスクすることにより、フォワーディングされたデータのレジスタ書き込みを抑制する。このように、抑制ゲート638、639は、レジスタ書き込み抑制回路626を構成し、レジスタ書き込みの抑制を制御する制御手段として機能する。
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態1におけるプロセッサと同じ点は説明を省略し、異なる点について説明する。
(WBステージ)
WBステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路723が、レジスタファイル740に対する書き込み制御信号を生成し、パイプラインバッファ(WB)737の出力である命令実行結果をレジスタファイル740に書き込むことで、データ保持部142が更新される。
但し、実行されため命令がレジスタ書き込み抑制命令として定義されている命令、かつ、FWD制御回路721からMEMステージ、または、WBステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路723が、レジスタファイル740に対する書き込み制御信号を生成せず、パイプラインバッファ(WB)737の出力である命令実行結果をレジスタファイル740に書き込まれることはなくなり、データ保持部142は更新されない。
以上、本発明に係る実施の形態6のプロセッサにおいては、属性情報を有しないことで回路規模を削減でき、かつ、実施の形態1のプロセッサと同様の効果を得ることができる。
つづいて、本実施の形態におけるプログラム変換装置について、図面を参照しながら説明する。
実施の形態6におけるプログラム変換装置は、いわゆるコンパイラ装置であって、本実施の形態のプロセッサに対応し、プログラム構造を分析し、従来の命令をレジスタ書き込み抑制命令に変換することを特徴とする。
以上の点を踏まえて、本発明における実施の形態6におけるコンパイラ装置について説明する。
図13は、実施の形態6におけるコンパイラ装置の構成を示す図である。
同図で示されるように、本コンパイラ装置では、高級言語であるC言語ソースコード601をコンパイラ602によってアセンブラコード(従来)603に変換するのに対し、アセンブラコード(従来)603を更に拡張アセンブラ804によって、属性変更命令を追加したアセンブラコード(新規命令追加)805に変換することを特徴とする。
本コンパイラの動作に関して説明する。
はじめに、従来のコンパイルフローにより、高級言語であるC言語ソースコード601をコンパイラ602によってアセンブラコード(従来)603に変換する。
一例としてあげた、アセンブラコード(従来)603の内容に関して説明する。
1行目:分岐命令実行時の分岐先アドレスを表すラベルである。
2行目:Reg#31のデータをアドレスとしてメモリへの読み出しを行い、読み出されたデータをReg#0に格納するロード命令。
3行目:Reg#0とReg#1のデータを加算し、Reg#2に格納する加算命令。
4行目:Reg#2のデータを、Reg#31のデータをアドレスとしてメモリへの書き込みを行うストア命令。
5行目:Reg#31と即値1を加算し、Reg#31に格納する加算命令。
6行目:1行目に分岐する(ループ実行)分岐命令。
次に、アセンブラコード(従来)603を拡張アセンブラ804によって、従来の命令をレジスタ書き込み抑制命令に変換したアセンブラコード(新規命令追加)805に変換する。ここで、拡張アセンブラ804では、Reg#0がアセンブラコード(従来)603中の2行目で書き込まれ、直後の3行目の命令でのみ読み出されることを判定し、2行目のメモリへの読み出し命令(ld)をレジスタ書き込み抑制命令でのメモリへの読み出し命令(ld*)に変換する。
図14は、図13中の拡張アセンブラの処理フローを示す図である。同図は図9に示した処理フローと比べて、ステップS86、S87の代わりにS101を有する点が異なっている。同じ点は説明を省略して、異なる点について説明する。
S84、S85での判定において、参照命令が生存区間において1つのみであると判定され、かつフォワーディングの対象となると判定された場合に、拡張アセンブラ804は、前記定義命令によるレジスタ書き込みを抑制するために、定義命令を通常の命令からレジスタ書き込みの抑制を伴う抑制命令(上記*付き命令)に変換する(S101)。
以上により、ソフトウェア開発者は、属性変更命令を意図したプログラミングを行うことなしに実施の形態6におけるプロセッサによる低消費電力化の効果を得ることができる。
なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサを制御する方法(以下、制御方法と呼称する)等として実現されるものとしてもよい。また、プロセッサによって提供される機能(以下、プロセッサ機能と呼称する)が組み込まれたLSI、プロセッサ機能をFPGA、CPLD等のプログラマブル・ロジック・デバイスに形成するIPコア(以下、プロセッサコアと呼称する)、及び、プロセッサコアを記録した記録媒体としてもよい。
また、上記実施の形態の何れを組み合わせてもよいことは言うまでもない。例えば実施の形態5と実施の形態6を組み合わせても矛盾なく、効果を得ることができる。
本発明は、携帯電話等に搭載されるプロセッサ等として、特に低消費電力が求められる分野で利用することができる。
図1は、従来技術におけるフォワーディング制御構造を有するパイプラインプロセッサの構成を示す図である。 図2Aは、データ依存関係を有する命令列の一例を示す。 図2Bは、MEMステージからIDステージへのフォワーディング例のタイミングを示す図である。 図2Cは、WBステージからIDステージへのフォワーディング例のタイミングを示す図である。 図2Dは、フォワーディング機構を有しないプロセッサで実行した場合のパイプラインステージと実行サイクルとを示す図である。 図3は、実施の形態1におけるプロセッサの構成を示す図である。 図4は、レジスタ書き込み抑制回路の構成を示す図である。 図5は、実施の形態2におけるプロセッサの構成を示す図である。 図6は、実施の形態3におけるプロセッサの構成を示す図である。 図7は、実施の形態4におけるプロセッサの構成を示す図である。 図8は、実施の形態5におけるプロセッサの構成を示す図である。 図9は、コンパイラ装置の構成を示す図である。 図10は、実施の形態5における拡張アセンブラの処理フローを示す図である。 図11は、実施の形態6におけるプロセッサの構成を示す図である。 図12は、属性保持部およびレジスタ書き込み抑制回路の構成を示す図である。 図13は、コンパイラ装置の構成を示す図である。 図14は、拡張アセンブラの処理フローを示す図である。
符号の説明
110、510、610 命令解読部
120、620 命令制御部
121 FWD制御回路
122 レジスタファイル書き込み制御回路
123 パイプラインバッファ制御回路
124 演算処理制御回路
125 メモリアクセス制御回路
126、626 レジスタ書き込み抑制回路
126a 属性セレクタ
126b アンドゲート
126c 属性セレクタ
126d アンドゲート
130 命令実行部
131 演算処理実行回路
132 メモリアクセス実行回路
133 FWDセレクタ
134 MEMセレクタ
135、635 パイプラインバッファ(EX)
136、636 パイプラインバッファ(MEM)
137、637 パイプラインバッファ(WB)
138、139、201、638、639 抑制ゲート
139 抑制ゲート
140 レジスタファイル
141、641 属性保持部
142 データ保持部
341 属性情報
602 コンパイラ
604、804 拡張アセンブラ

Claims (4)

  1. フォワーディング機能を有するプロセッサであって、
    レジスタへの書き込み抑制に関する属性情報を保持する保持手段と、
    フォワーディングが起きたとき、属性情報に応じてフォワーディングされたデータのレジスタ書き込みを抑制する制御手段と
    を備え、
    前記保持手段は、少なくとも1つのレジスタに対応させて前記属性情報を保持し、前記プロセッサにより書き換え可能であり、
    前記プロセッサはさらに、レジスタへの書き込みを抑制するか否かを指示する制御レジスタを有し、
    前記保持手段は制御レジスタに保持されたデータに対応する属性情報を保持する
    ことを特徴とするプロセッサ。
  2. 前記プロセッサは、さらに、属性情報を変更する属性変更命令を実行することによって前記保持手段の属性情報を書き換える
    ことを特徴とする請求項1記載のプロセッサ。
  3. オリジナルプログラムを請求項1記載のプロセッサを対象とするプログラムに変換するプログラム変換装置であって、
    オリジナルプログラムからレジスタに格納される変数を抽出する抽出手段と、
    抽出された変数の生存区間を検出する検出手段と、
    前記変数を参照する参照命令が生存区間において1つのみであるか否かを判定する第1判定手段と、
    前記生存区間において、前記変数を定義する定義命令と前記参照命令とがフォワーディングの対象となるか否かを判定する第2判定手段と、
    参照命令が生存区間において1つのみであると判定され、かつフォワーディングの対象となると判定された場合に、前記定義命令によるレジスタ書き込みを抑制する抑制命令を含むプログラムを生成する生成手段と
    を有し、
    前記抑制命令は、前記生存期間の前に前記変数を格納すべきレジスタへの書き込みを抑制する属性情報を、前記保持手段に設定する属性変更命令、および前記生存期間の後に前記変数を格納すべきレジスタへの書き込みを抑制しない属性情報を、前記保持手段に設定する属性変更命令であり、
    前記生成手段は、オリジナルプログラムに前記属性変更命令を追加する
    ことを特徴とするプログラム変換装置。
  4. 前記抑制命令は、前記参照命令と同じ操作内容とレジスタ書き込み抑制指示を伴う抑制付き参照命令であり、
    前記生成手段は、オリジナルプログラムにおける前記定義命令を前記抑制付き定義命令に変更することにより、前記プログラムを生成する
    ことを特徴とする請求項3記載のプログラム変換装置。
JP2007513516A 2006-01-20 2006-10-16 プロセッサおよびプログラム変換装置 Expired - Fee Related JP4607958B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006013029 2006-01-20
JP2006013029 2006-01-20
PCT/JP2006/320576 WO2007083421A1 (ja) 2006-01-20 2006-10-16 プロセッサ

Publications (2)

Publication Number Publication Date
JPWO2007083421A1 JPWO2007083421A1 (ja) 2009-06-11
JP4607958B2 true JP4607958B2 (ja) 2011-01-05

Family

ID=38287381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007513516A Expired - Fee Related JP4607958B2 (ja) 2006-01-20 2006-10-16 プロセッサおよびプログラム変換装置

Country Status (4)

Country Link
US (1) US7975128B2 (ja)
JP (1) JP4607958B2 (ja)
CN (1) CN101361039A (ja)
WO (1) WO2007083421A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5555102B2 (ja) * 2010-09-01 2014-07-23 キヤノン株式会社 プロセッサ
CN104216681B (zh) * 2013-05-31 2018-02-13 华为技术有限公司 一种cpu指令处理方法和处理器
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
US9715943B2 (en) * 2015-08-12 2017-07-25 Texas Instruments Incorporated Semiconductor memory cell multi-write avoidance encoding apparatus, systems and methods
JP6627630B2 (ja) * 2016-04-15 2020-01-08 富士通株式会社 コンパイル方法、コンパイルプログラム及び情報処理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1165844A (ja) * 1997-08-19 1999-03-09 Fujitsu Ltd パイプラインバイパス機能を有するデータ処理装置
JP2000305777A (ja) * 1999-04-26 2000-11-02 Hitachi Ltd デジタル処理装置
JP2003122561A (ja) * 2001-10-10 2003-04-25 Matsushita Electric Ind Co Ltd 情報処理装置
WO2004084065A2 (en) * 2003-03-19 2004-09-30 Koninklijke Philips Electronics N.V. Pipelined instruction processor with data bypassing

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5706407A (en) * 1993-12-28 1998-01-06 Kabushiki Kaisha Toshiba System for reallocation of memory banks in memory sized order
JP3606387B2 (ja) * 1994-09-13 2005-01-05 松下電器産業株式会社 コンパイル装置
JP3338374B2 (ja) 1997-06-30 2002-10-28 松下電器産業株式会社 演算処理方法および装置
US6862677B1 (en) * 2000-02-16 2005-03-01 Koninklijke Philips Electronics N.V. System and method for eliminating write back to register using dead field indicator
EP1199629A1 (en) * 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
GB2378783B (en) * 2001-08-17 2004-12-29 F Secure Oyj Preventing virus infection in a computer system
EP2431839B1 (en) 2003-03-18 2015-09-23 Panasonic Intellectual Property Management Co., Ltd. Processor, driving method thereof, and information processing device
US7096345B1 (en) * 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US7634597B2 (en) * 2003-10-08 2009-12-15 Micron Technology, Inc. Alignment of instructions and replies across multiple devices in a cascaded system, using buffers of programmable depths
JP2006059068A (ja) 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
US20070255928A1 (en) 2004-10-19 2007-11-01 Matsushita Electric Industrial Co., Ltd. Processor
JP2008097572A (ja) 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1165844A (ja) * 1997-08-19 1999-03-09 Fujitsu Ltd パイプラインバイパス機能を有するデータ処理装置
JP2000305777A (ja) * 1999-04-26 2000-11-02 Hitachi Ltd デジタル処理装置
JP2003122561A (ja) * 2001-10-10 2003-04-25 Matsushita Electric Ind Co Ltd 情報処理装置
WO2004084065A2 (en) * 2003-03-19 2004-09-30 Koninklijke Philips Electronics N.V. Pipelined instruction processor with data bypassing

Also Published As

Publication number Publication date
WO2007083421A1 (ja) 2007-07-26
JPWO2007083421A1 (ja) 2009-06-11
CN101361039A (zh) 2009-02-04
US7975128B2 (en) 2011-07-05
US20100169610A1 (en) 2010-07-01

Similar Documents

Publication Publication Date Title
KR100953856B1 (ko) 조건부 명령이 무조건적으로 출력을 제공하는 시스템 및방법
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
JP4202244B2 (ja) Vliw型dsp,及びその動作方法
US7647480B2 (en) Handling of conditional instructions in a data processing apparatus
US9389868B2 (en) Confidence-driven selective predication of processor instructions
JP3449186B2 (ja) パイプラインバイパス機能を有するデータ処理装置
JP4412905B2 (ja) 低電力動作制御装置、およびプログラム最適化装置
JP4607958B2 (ja) プロセッサおよびプログラム変換装置
JP4864840B2 (ja) マイクロプロセッサ
KR20080014062A (ko) 마이크로프로세서에서의 효율적인 서브프로그램 복귀
JPH1185513A (ja) プロセッサ
JP4771079B2 (ja) Vliw型プロセッサ
KR19980024622A (ko) 프로그램 실행 방법 및 그 방법을 이용한 장치
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
US11327758B2 (en) Non-transitory computer-readable recording medium, assembly instruction conversion method and information processing apparatus
US20250217145A1 (en) Techniques for pipelining single thread instructions to improve execution time
JP2005149297A (ja) プロセッサおよびそのアセンブラ
JP2008107913A (ja) プログラム、ソフトウェア変換装置及びコンピュータ
JP4006887B2 (ja) コンパイラ、プロセッサおよび記録媒体
JP3603895B2 (ja) コンパイラ、および命令生成方法
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
CN120255961A (zh) 一种数据通路、芯片及电子设备
WO2024029174A1 (ja) ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体
JP2006139644A (ja) プロセッサ
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100408

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100805

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100818

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4607958

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131015

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees