[go: up one dir, main page]

JP4354990B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP4354990B2
JP4354990B2 JP2006523470A JP2006523470A JP4354990B2 JP 4354990 B2 JP4354990 B2 JP 4354990B2 JP 2006523470 A JP2006523470 A JP 2006523470A JP 2006523470 A JP2006523470 A JP 2006523470A JP 4354990 B2 JP4354990 B2 JP 4354990B2
Authority
JP
Japan
Prior art keywords
instruction
address
buffer
sub
fetched
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
JP2006523470A
Other languages
English (en)
Other versions
JPWO2006112190A1 (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 JPWO2006112190A1 publication Critical patent/JPWO2006112190A1/ja
Application granted granted Critical
Publication of JP4354990B2 publication Critical patent/JP4354990B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache

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)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、命令キャッシュに格納されている命令を取り出して実行するプロセッサなどとして、特に、ループ部分の命令を実行する場合において、命令キャッシュへのアクセスを省略しても命令を供給することができるプロセッサに関する。
近年、携帯電話機、デジタルビデオカメラ、デジタルビデオレコーダなどのデジタル家電製品が普及している。そして、これらの製品に組み込まれるプロセッサとして低電力で処理能力が高いプロセッサが求められている。
これに対して、例えば、分岐予測のミスに伴うペナルティサイクルを短縮することで、消費電力を抑え処理能力を高めたプロセッサが提案されている(例えば、非特許文献1参照。)。
具体的には、このプロセッサは、命令フェッチを管理する部分に二つの命令バッファを備え、通常、どちらか一方の命令バッファを用いて命令キャッシュからフェッチした命令を蓄積して供給する。そして、分岐命令を実行するときに、二つの命令バッファを用いて命令キャッシュからフェッチした後続命令および分岐先命令を別々に蓄積し、分岐先に応じて、どちらか一方の命令バッファから供給する。
例えば、現在、命令の供給源として第1の命令バッファが利用されている場合には、分岐命令のデコードステージで、分岐先命令(TAKEN)と予測すると、命令キャッシュから分岐先命令をフェッチして第2の命令バッファに蓄積して供給する。そして、分岐命令の実行ステージで、予測がミスしていれば、すなわち、実際の分岐では後続命令(NOT TAKEN)とすれば、第1の命令バッファの命令をパイプラインに投入し、第2の命令バッファの命令を廃棄し、命令フェッチのレイテンシによって生じるペナルティを短縮する。
さらに、このプロセッサは、これらの命令バッファとは別に第3の命令バッファも備える。そして、分岐命令を実行する前に、その分岐命令の分岐先アドレスを特定することができる命令を実行し、その分岐先アドレスの命令を先読みして第3の命令バッファに蓄積し、命令フェッチのレイテンシによって生じるペナルティを短縮する。
Naohiko IRIE, Fumio ARAKAWA, Kunio UCHIYAMA, Shinichi YOSHIOKA, Atsushi HASEGAWA, Kevin IADONATE, Mark DEBBAGE, David SHEPHERD, and MargaretGEARTY, "Branch Micro-Architecture of an Embedded Processor with Split Branch Architecture for Digital Consumer Products," IEICE TRANS. ELECTRON., VOL.E85-C, NO.2 FEBRUARY 2002, pp.315-322.
しかしながら、このプロセッサは、性質の異なる二種類の命令バッファを備えるため、同一の分岐命令であっても、分岐予測のミスに応じて、利用する命令バッファを使い分ける必要がある。結果、命令バッファを切り替える制御が複雑になる。また、分岐命令のデコードステージで、命令キャッシュから分岐先命令をフェッチして第2の命令バッファに蓄積するため、フェッチすることができる期間が短く、十分な命令を蓄積して供給することが困難である。結果、より低電力で高速にループ処理などを実行させるために、命令キャッシュのアクセス頻度を下げようとして命令バッファの容量を大きくしても、その効果が小さいという問題がある。
そこで、本発明は前記問題に鑑みてなされたものであり、低電力で高速にループ処理などを実行させることができるプロセッサを提供することを目的とする。
前記目的を達成するため、本発明に係わるプロセッサは、(a)命令キャッシュに格納されている命令を取り出して実行するプロセッサであって、(b)前記命令キャッシュから取り出した1以上の命令を格納して供給する主命令バッファと、(c)前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給し、前記命令キャッシュから取り出した1以上の命令が充填されたか否かを示すフラグ情報が記憶されるフラグ記憶手段を有する第1の副命令バッファと、(d)前記主命令バッファおよび前記第1の副命令バッファのいずれかを命令供給源に選択する第1のセレクタと、(e)前記命令キャッシュから取り出し前記主命令バッファに格納する命令のアドレスを保持する主命令用アドレスレジスタと、(f)前記命令キャッシュから取り出し前記第1の副命令バッファに格納する命令のアドレスを保持する第1の副命令用アドレスレジスタと、(g)前記命令キャッシュから取り出すアドレスを、前記主命令用アドレスレジスタに保持されたアドレスと前記第1の副命令用アドレスレジスタに保持されたアドレスのいずれかから選択する第2のセレクタと、(h)前記第1のセレクタを介して前記主命令バッファから命令を供給し、前記命令キャッシュの第1のアドレスから取り出した1以上の命令を前記第1の副命令バッファに充填することが示される第1の充填命令が実行された場合には、前記第1のアドレスを前記第1の副命令用アドレスレジスタに設定し、前記第2のセレクタを介して前記第1の副命令用アドレスレジスタを参照して前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納し、前記第1の副命令バッファに格納された命令が繰り返し実行される場合で、かつ、前記命令キャッシュから取り出した1以上の命令が前記第1の副命令バッファに充填されたことを示すフラグ情報が前記フラグ記憶手段に記憶されている場合には、前記第1のセレクタを制御して前記第1の副命令バッファを選択し、前記第1のセレクタを介して前記第1の副命令バッファから命令を繰り返し供給する命令フェッチ制御手段とを備え、前記命令キャッシュの前記第1のアドレスから取り出された命令が前記副命令バッファに充填された場合に、前記第1のアドレスから取り出された命令が充填されていることを示すフラグ情報が前記フラグ記憶手段に記憶されることを特徴とする。
これによって、メインで利用される主命令バッファ以外に副次的に利用される第1の副命令バッファなどを備えることにより、ループ部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、第1の副命令バッファなどから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、第1の充填命令で、フェッチする期間を調整して第1の副命令バッファに格納する期間を調整することができる。これにより、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もって第1の充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。
なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサを制御する方法(以下、命令充填方法と呼称する。)などとして実現されるとしてもよい。また、本発明に係わるプロセッサによって提供される機能(以下、命令充填機能と呼称する。)が組み込まれたLSI(Large Scale Integration)、命令充填機能をFPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)などのプログラマブル・ロジック・デバイスに形成するIPコア(以下、命令充填コアと呼称する。)、および命令充填コアを記録した記録媒体などとして実現されるとしてもよい。
以上、本発明に係わるプロセッサによれば、メインで利用される主命令バッファ以外に副次的に利用される第1の副命令バッファおよび第2の副命令バッファなどを備えることにより、ループ部分およびサブルーチンのリターン部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、第1の副命令バッファおよび第2の副命令バッファなどから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、第1の充填命令で、フェッチする期間を調整して第1の副命令バッファに格納する期間を調整することができる。これにより、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もって第1の充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。
(実施の形態1)
以下、本発明に係わる実施の形態1について図面を参照しながら説明する。
本実施の形態におけるプロセッサは、命令を通常格納する命令バッファとは別に、ループ部分の命令を格納する命令バッファを備え、ループ部分の命令を実行するときに、繰り返し命令キャッシュからフェッチする代わりに、ループ部分の命令を一度フェッチして格納している命令バッファから供給することを特徴とする。
さらに、これらの命令バッファとは別に、サブルーチンのリターン部分の命令を格納する命令バッファも備え、サブルーチンのリターン部分の命令を実行するときに、サブルーチンのリターン部分の命令を一度フェッチして格納している命令バッファから供給することも特徴とする。
以上の点を踏まえて本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図1に示されるように、プロセッサ100は、命令を通常格納する通常命令バッファ122とは別に、命令キャッシュ10に格納されている命令列のうち、ループ部分の命令を格納するTAR用命令バッファ123を備える。そして、ループ部分の命令を実行する場合には、TAR用命令バッファ123に格納されている命令を命令実行部101に供給する。
さらに、プロセッサ100は、通常命令バッファ122およびTAR用命令バッファ123とは別に、サブルーチンのリターン部分の命令を格納するLR用命令バッファ124も備える。そして、サブルーチンのリターン部分の命令を実行する場合には、LR用命令バッファ124に格納されている命令を命令実行部101に供給する。
ここでは、一例として、プロセッサ100は、命令実行部101、命令フェッチ制御部102、セレクタ111、通常命令アドレスレジスタ112、TAR用命令アドレスレジスタ113、LR用命令アドレスレジスタ114、セレクタ121、通常命令バッファ122、TAR用命令バッファ123、LR用命令バッファ124などを備える。
命令実行部101は、セレクタ121を介して供給される命令を実行する。
命令フェッチ制御部102は、命令実行部101において、TAR用充填命令およびLR用充填命令が実行されていない場合において、通常命令バッファ122に空きができる見込みがあれば、セレクタ111を制御して通常命令アドレスレジスタ112を選択する。そして、通常命令アドレスレジスタ112に設定されたアドレスの命令を命令キャッシュ10からフェッチし、フェッチした命令を通常命令バッファ122に格納する。
また、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令が実行されれば、TAR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをTAR用命令アドレスレジスタ113に設定する。さらに、通常命令を通常命令バッファ122に充填する合間を縫って、TAR用充填命令によって特定されるループ部分の命令をTAR用命令バッファ123に充填する。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してTAR用命令アドレスレジスタ113を選択する。そして、命令実行部101において、TAR用充填命令によって特定されるループ部分の命令が実行されるときに、TAR用命令バッファ123から命令実行部101に命令を供給する。
同様に、命令フェッチ制御部102は、命令実行部101において、LR用充填命令が実行されれば、LR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをLR用命令アドレスレジスタ114に設定する。さらに、通常命令バッファ122に命令を充填する合間を縫って、LR用充填命令によって特定されるサブルーチンのリターン部分をLR用命令バッファ124に充填する。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してLR用命令アドレスレジスタ114を選択する。そして、命令実行部101において、LR用充填命令によって特定されるサブルーチンのリターン部分の命令が実行されるときに、LR用命令バッファ124から命令実行部101に命令を供給する。
「TAR用充填命令」とは、例えば、下記のTAR用充填命令で示されるように、”LABEL”によって特定されるアドレスからループ部分が開始し、そのループ部分をTAR用命令バッファ123に格納することが示される命令である。
[TAR用充填命令] SETTAR LABEL
例えば、図2に示されるTAR用充填命令”SETTAR#1”のように、アドレス”LABEL#1”の命令”I#9”からTAR用分岐命令”JUMPTAR#1”までのループ部分をTAR用命令バッファ123に充填することを指示する命令をいう。ここで、アドレス”LABEL#1”は、分岐命令”JUMPTAR#1”に設定される分岐先アドレスでもあり、TAR用充填命令”SETTAR#1”によって充填が開始されるアドレス(以下、充填開始アドレスとも呼称する。)でもある。
なお、図2に示されるように、ここでは、ループ部分、すなわち、太い枠で囲まれた命令列が実行される前にTAR用充填命令が実行される。また、ここでは、話を簡単にするために、命令キャッシュ10からフェッチされる命令長を固定長とし、1サイクルあたり1命令を命令キャッシュ10からフェッチするとしているが、命令長を可変長としてもよいし、命令キャッシュ10から1サイクルあたり1命令以上、例えば、4命令をフェッチするとしてもよい。
なお、命令実行部101において、TAR用充填命令”SETTAR#1”が実行されれば、TAR用分岐命令”JUMPTAR#1”を含む太い枠で囲まれた命令列がTAR用命令バッファ123に充填される。
なお、一つのTAR用充填命令の代わりに、ループ部分をTAR用命令バッファ123に格納することが示される命令と、そのループ部分の開始アドレスが示される命令との二つの命令としてもよい。
「LR用充填命令」とは、例えば、下記のLR用充填命令で示されるように、サブルーチンの戻り先アドレスによって特定されるアドレスからリターン部分が開始し、そのリターン部分をLR用命令バッファ124に格納することが示される命令である。
[LR用充填命令] SETLR
例えば、図2に示されるLR用充填命令”SETLR#1”のように、アドレス”LABEL#2”の命令”I#18”から所定の命令数分のリターン部分、例えば、4命令だと命令”I#21”までのリターン部分をLR用命令バッファ124に充填することを指示する命令をいう。ここで、アドレス”LABEL#2”は、リターン命令”RETLR#1”に設定される戻り先アドレスでもあり、LR用充填命令”SETLR#1”によって充填が開始されるアドレス(以下、充填開始アドレスとも呼称される。)でもある。
なお、図2に示されるように、ここでは、リターン部分、すなわち、太い枠で囲まれた命令列が実行される前にLR用充填命令が実行される。
なお、命令実行部101において、LR用充填命令”SETLR#1”が実行されれば、CALLLR#1の後続命令”I#18”を含む太い枠で囲まれた命令列がLR用命令バッファ124に充填される。
なお、一つのLR用充填命令の代わりに、リターン部分をLR用命令バッファ124に格納することが示される命令と、そのリターン部分の開始アドレスが示される命令との二つの命令としてもよい。
セレクタ111は、命令フェッチ制御部102からの指示に応じて、通常命令アドレスレジスタ112、TAR用命令アドレスレジスタ113、およびLR用命令アドレスレジスタ114のいずれかの命令アドレスレジスタを選択する。そして、選択した命令アドレスレジスタに設定されているアドレスを命令キャッシュ10に出力する。
通常命令アドレスレジスタ112は、命令を取り出す際に通常利用される命令アドレスレジスタである。
TAR用命令アドレスレジスタ113は、TAR用充填命令によって特定されるループ部分の命令を取り出すときに利用される命令アドレスレジスタである。
LR用命令アドレスレジスタ114は、LR用充填命令によって特定されるリターン部分の命令を取り出すときに利用される命令アドレスレジスタである。
「アドレスレジスタ」とは、命令キャッシュ10などから命令を取り出す際に、その命令のアドレスが登録されるレジスタをいう。
セレクタ121は、命令フェッチ制御部102からの指示に応じて、通常命令バッファ122、TAR用命令バッファ123、およびLR用命令バッファ124のいずれかの命令バッファを選択する。そして、選択した命令バッファに充填されている命令を命令実行部101に供給する。
通常命令バッファ122は、通常、命令を蓄積して供給する命令バッファである。
TAR用命令バッファ123は、TAR用充填命令によって特定されるループ部分の命令を格納して供給する命令バッファである。
LR用命令バッファ124は、LR用充填命令によって特定されるリターン部分の命令を格納して供給する命令バッファである。
なお、図3A、図3Bに示されるように、TAR用命令バッファ123は、命令供給源として選択されても、ループ部分の命令がTAR用命令バッファ123に充填中または充填が未実行のときは、Valid bit133に保持されている値”0”(F143)を、セレクタ121を介して命令実行部101に出力し、充填が完了していないことを知らせる(R141)。一方、充填が完了すると、Valid bitとして値”1”を出力して充填が完了したことを知らせる。また、命令実行部101においてTAR用充填命令が実行され、TAR用命令アドレスレジスタ113に充填開始アドレスが設定される場合には、命令フェッチ制御部102からTAR用命令アドレスレジスタ113へ書き込み要求信号”1”を出力する。このとき、図3Bに示されるように、論理表140に基づいて、Valid bitとして値”0”が設定され、TAR用命令バッファ123が選択されても、セレクタ121を介して命令実行部101に充填されていないことを知らせ(R145)、TAR用命令バッファ123から命令が供給されない。なお、LR用命令バッファ124についても同様である。
続いて、本実施の形態におけるプロセッサの動作について説明する。
図4に示されるように、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令が実行されると、TAR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをTAR用命令アドレスレジスタ113に設定する。そして、通常命令を通常命令バッファ122に充填する合間を縫って、TAR用充填命令によって特定されるループ部分の命令をTAR用命令バッファ123に充填する(充填状態S11)。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してTAR用命令アドレスレジスタ113を選択する。
さらに、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令と対応するTAR用分岐命令が実行され、ループ部分の命令が実行されるときに、TAR用命令バッファ123から命令実行部101に命令を供給する(供給状態S12)。このとき、命令フェッチ制御部102は、セレクタ121を制御してTAR用命令バッファ123を命令供給源として選択する。
さらに、命令フェッチ制御部102は、命令実行部101においてループ部分が繰り返し実行される場合には、TAR用命令バッファ123から命令を繰り返し供給する。そして、命令実行部101において、TAR用分岐命令が実行され、ループ部分を抜けると、通常命令バッファ122から命令実行部101に命令を供給する(通常状態S10)。このとき、命令フェッチ制御部102は、セレクタ121を制御して通常命令バッファ122を命令供給源として選択する。
同様に、命令フェッチ制御部102は、命令実行部101において、LR用充填命令が実行されると、LR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをLR用命令アドレスレジスタ114に設定する。そして、通常命令バッファ122に命令を充填する合間を縫って、LR用充填命令によって特定されるリターン部分の命令をLR用命令バッファ124に充填する(充填状態S11)。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してLR用命令アドレスレジスタ114を選択する。
さらに、命令フェッチ制御部102は、命令実行部101において、LR用充填命令と対応するLR用リターン命令が実行され、リターン部分の命令が実行される場合には、LR用命令バッファ124から命令実行部101に命令を供給する(供給状態S12)。このとき、命令フェッチ制御部102は、セレクタ121を制御してLR用命令バッファ124を命令供給源として選択する。
さらに、命令フェッチ制御部102は、命令実行部101において、LR用リターン命令が実行され、リターン部分を抜けると、通常命令バッファ122から命令実行部101に命令を供給する(通常状態S10)。このとき、命令フェッチ制御部102は、セレクタ121を制御して通常命令バッファ122を命令供給源として選択する。
続いて、本実施の形態における命令フェッチ制御部102において命令充填時の処理(以下、命令充填処理と呼称する。)について説明する。
図5に示されるように、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令およびLR用充填命令が実行されていない場合において(S101:No、S102:No)、通常命令バッファ122に空きができる見込みがあれば(S103:Yes)、セレクタ111を制御して通常命令アドレスレジスタ112を選択する(S104)。そして、通常命令アドレスレジスタ112に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S105)、フェッチした命令を通常命令バッファ122に格納する(S106)。
一方、図5、図6Aに示されるように、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令が実行された場合には(S101:Yes)、TAR用命令の充填が完了するまで(S107:No)、通常命令バッファ122に空きができる見込みがないときを見計らって(S108:No)、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択する(S109)。そして、TAR用命令アドレスレジスタ113に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S110)、フェッチした命令をTAR用命令バッファ123に格納する(S111)。
同様に、図5、図6Bに示されるように、命令フェッチ制御部102は、命令実行部101において、LR用充填命令が実行された場合には(S102:Yes)、LR用命令の充填が完了するまで(S112:No)、通常命令バッファ122に空きができる見込みがないときを見計らって(S113:No)、セレクタ111を制御してLR用命令アドレスレジスタ114を選択する(S114)。そして、LR用命令アドレスレジスタ114に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S115)、フェッチした命令をLR用命令バッファ124に格納する(S116)。
続いて、本実施の形態における命令フェッチ制御部102において命令供給時の処理(以下、命令供給処理と呼称する。)について説明する。
図7に示されるように、命令フェッチ制御部102は、セレクタ121を制御して通常命令バッファ122を選択し(S121)、選択した命令バッファから命令実行部101に命令を供給する(S122)。そして、命令実行部101において実行された命令に応じて、下記(1)〜(5)の処理を実行する。
(1)命令実行部101において実行された命令がTAR用充填命令である場合には、命令フェッチ制御部102は、TAR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをTAR用アドレスレジスタ113に設定する(S124)。そして、選択した命令バッファから命令を供給する(S122)。
(2)命令実行部101において実行された命令がLR用充填命令である場合には、命令フェッチ制御部102は、LR用充填命令に設定されていた充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをLR用アドレスレジスタ114に設定する(S125)。そして、選択した命令バッファから命令を供給する(S122)。
(3)命令実行部101において実行された命令がTAR用分岐命令(1回目)である場合において、分岐先アドレスに分岐しない場合には、命令フェッチ制御部102は、選択した命令バッファ、すなわち、通常命令バッファ122から命令を供給する(S122)。
一方、命令フェッチ制御部102は、分岐先アドレスに分岐する場合には、セレクタ121を制御してTAR用命令バッファ123を選択する(S127)。さらに、図8Aに示されるように、TAR用充填命令によって特定されるループ部分がTAR用命令バッファ123に充填されるまで(S131:No)、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択し(S133)、TAR用命令アドレスレジスタ113に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S133)、フェッチした命令をTAR用命令バッファ123に格納する(S134)。そして、TAR用充填命令によって特定されるループ部分が充填されると(S131:Yes)、選択した命令バッファ、すなわち、TAR用命令バッファ123から命令を供給する(S122)。
(4)命令実行部101において実行された命令がTAR用分岐命令(2回目以降)である場合において、分岐先アドレスに分岐する場合には(S128:Yes)、命令フェッチ制御部102は、選択した命令バッファ、すなわち、TAR用命令バッファ123から命令を供給する(S122)。一方、分岐先アドレスに分岐しない場合には(S129:No)、セレクタ121を制御して通常命令バッファ122を選択する(S129)。そして、選択した命令バッファ、すなわち、通常命令バッファ122から命令を供給する(S122)。
(5)命令実行部101において実行された命令がLR用リターン命令である場合には、命令フェッチ制御部102は、セレクタ121を制御してLR用命令バッファ124を選択する(S130)。さらに、図8Bに示されるように、LR用充填命令によって特定されるリターン部分がLR用命令バッファ124に充填されるまで(S135:No)、セレクタ111を制御してLR用命令アドレスレジスタ114を選択し(S136)、LR用命令アドレスレジスタ114に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S137)、フェッチした命令をLR用命令バッファ124に格納する(S138)。そして、LR用リターン命令の戻り先命令を含むリターン部分が充填されると(S135:Yes)、選択した命令バッファ、すなわち、LR用命令バッファ124から命令を供給する(S122)。
続いて、本実施の形態におけるプロセッサの動作例について説明する。
図9に示されるように、ここでは、一例として、通常命令バッファ122、TAR用命令バッファ123、およびLR用命令バッファ124として、3命令が充填できる命令バッファとする。
なお、図9において、IBは、通常命令バッファ122を示す。また、IAR112は、通常命令アドレスレジスタ112を示す。さらに、TAR113は、TAR用命令アドレスレジスタ113を示す。
また、命令フェッチアドレス”A0”〜”A2”に格納されている命令を”I#A0”〜”I#A2”とし、命令フェッチアドレス”B0”〜”B2”に格納されている命令を”I#B0”〜”I#B2”とする。
「命令フェッチアドレス」とは、フェッチ対象の命令が格納されているアドレスをいう。
さらに、命令”I#A0”〜”I#A2”については、通常命令バッファ122に格納され、命令”I#B0”〜”I#B2”については、TAR用命令バッファ123に格納される。
なお、格納されるにあたっては、下記(1)〜(7)の順に格納される。
(1)時間T1〜T2において、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがあることから、通常命令アドレスレジスタ112に命令フェッチアドレス”A0”を設定する。
(2)時間T2〜T3において、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”A0”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”A0”によって特定される命令”I#A0”を命令キャッシュ10からフェッチする。
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがないことから、TAR用命令アドレスレジスタ113に命令フェッチアドレス”B0”を設定する。
(3)時間T3〜T4において、命令フェッチ制御部102は、フェッチした命令”I#A0”を通常命令バッファ122に格納する。
また、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”B0”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”B0”によって特定される命令”I#B0”を命令キャッシュ10からフェッチする。
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがあることから、通常命令アドレスレジスタ112に命令フェッチアドレス”A1”を設定する。
(4)時間T4〜T5において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#B0”をTAR用命令バッファ123に格納する。
また、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”A1”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”A1”によって特定される命令”I#A1”を命令キャッシュ10からフェッチする。
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがないことから、TAR用命令アドレスレジスタ113に命令フェッチアドレス”B1”を設定する。
(5)時間T5〜T6において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#A1”を通常命令バッファ122に格納する。
また、命令フェッチ制御部102は、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択し、選択したTAR用命令アドレスレジスタ113に設定されている命令フェッチアドレス”B1”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”B1”によって特定される命令”I#B1”を命令キャッシュ10からフェッチする。
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがないことから、TAR用命令アドレスレジスタ113に命令フェッチアドレス”B2”を設定する。
(6)時間T6〜T7において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#B1”をTAR用命令バッファ123に格納する。
また、命令フェッチ制御部102は、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択し、選択したTAR用命令アドレスレジスタ113に設定されている命令フェッチアドレス”B2”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”B2”によって特定される命令”I#B2”を命令キャッシュ10からフェッチする。
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがあることから、通常命令アドレスレジスタ112に命令フェッチアドレス”A2”を設定する。
(7)時間T7〜T8において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#B2”をTAR用命令バッファ123に格納する。
また、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”A2”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”A2”によって特定される命令”I#A2”を命令キャッシュ10からフェッチする。
以上説明したように本実施の形態におけるプロセッサによれば、メインで利用される通常命令バッファ122以外に副次的に利用されるTAR用命令バッファ123およびLR用命令バッファ124などを備えることにより、ループ部分およびサブルーチンリターン部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、TAR用命令バッファ123およびLR用命令バッファ124などから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、TAR用充填命令で、フェッチする期間を調整してTAR用命令バッファ123に格納する期間を調整することができることから、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もってTAR用充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。同様に、LR用充填命令で、LR用命令バッファ124に格納する期間を調整することができる。
(実施の形態2)
次に、本発明に係わる実施の形態2について図面を参照しながら説明する。
本実施の形態におけるプロセッサは、ループ部分の命令を格納する命令バッファを複数備え、複数のループ部分の命令を供給することを特徴とする。
以上の点を踏まえて本実施の形態のプロセッサについて説明する。
なお、実施の形態1における構成要素と同一の構成要素については同一の参照符号を付して説明を省略する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図10に示されるように、プロセッサ200は、プロセッサ100と比べて、下記(1)〜(7)の点が異なる。
(1)命令フェッチ制御部102の代わりに、命令フェッチ制御部202を備える。
命令フェッチ制御部202は、命令実行部101において、第1TAR用充填命令が実行されれば、通常命令バッファ122に命令を充填する合間を縫って、第1TAR用充填命令によって特定される第1ループ部分の命令を第1TAR用命令バッファ223に充填する。そして、命令実行部101において、第1TAR用充填命令によって特定される第1ループ部分の命令が実行されるときに、第1TAR用命令バッファ223から命令実行部101に命令を供給する。
さらに、命令フェッチ制御部202は、命令実行部101において、第2のTAR用充填命令が実行されれば、第1TAR用命令バッファ223から命令を供給している合間を縫って、第2のTAR用充填命令によって特定される第2のループ部分の命令を第2TAR用命令バッファ224に充填する。そして、命令実行部101において、第1TAR用充填命令によって特定される第2ループ部分の命令が実行されるときに、第2TAR用命令バッファ224から命令実行部101に命令を供給する。
(2)セレクタ111の代わりに、セレクタ211を備える。
セレクタ211は、命令フェッチ制御部202からの指示に応じて、通常命令アドレスレジスタ112、第1TAR用命令アドレスレジスタ213、および第2TAR用命令アドレスレジスタ214のいずれかの命令アドレスレジスタを選択する。そして、選択した命令アドレスレジスタに設定されているアドレスを命令キャッシュ10に出力する。
(3)TAR用命令アドレスレジスタ113の代わりに、第1TAR用命令アドレスレジスタ213を備える。
第1TAR用命令アドレスレジスタ213は、第1TAR用充填命令によって特定されるループ部分の命令を取り出すときに利用される命令アドレスレジスタである。
(4)LR用命令アドレスレジスタ114の代わりに、第2TAR用命令アドレスレジスタ214を備える。
第2TAR用命令アドレスレジスタ214は、第2TAR用充填命令によって特定されるループ部分の命令を取り出すときに利用される命令アドレスレジスタである。
(5)セレクタ121の代わりに、セレクタ221を備える。
セレクタ221は、命令フェッチ制御部202からの指示に応じて、通常命令バッファ122、第1TAR用命令バッファ223、および第2TAR用命令バッファ224のいずれかの命令バッファを選択する。そして、選択した命令バッファに充填されている命令を命令実行部101に供給する。
(6)TAR用命令バッファ123の代わりに、第1TAR用命令バッファ223を備える。
第1TAR用命令バッファ223は、第1TAR用充填命令によって特定されるループ部分の命令を格納して供給する命令バッファである。
例えば、図11に示されるように、第1TAR用充填命令”SETTAR#1”によって特定される第1ループ部分、すなわち、アドレス”LABEL#1”の命令”I#11”から第1TAR用分岐命令”JUMPTAR#1”までの第1ループ部分が第1TAR命令バッファ223に充填される。
(7)LR用命令バッファ124の代わりに、第2TAR用命令バッファ224を備える。
第2TAR用命令バッファ224は、第2TAR用充填命令によって特定される第2ループ部分の命令を格納して供給する命令バッファである。
例えば、図11に示されるように、第2TAR用充填命令”SETTAR#2”によって特定される第2ループ部分、すなわち、アドレス”LABEL#2”の命令”I#22”から第2TAR用分岐命令”JUMPTAR#2”までの第2ループ部分が第2TAR用命令バッファ224に充填される。
また、図12に示されるように、二重ループの場合には、第1TAR用充填命令”SETTAR#1”によって特定される第1ループ部分、すなわち、アドレス”LABEL#1”の命令”I#17”から第1TAR用分岐命令”JUMPTAR#1”までの内側ループ部分が第1TAR用命令バッファ223に充填される。さらに、命令”I#20”から第2TAR用分岐命令”JUMPTAR#2”までの外側ループ部分の一部分も第1TAR用命令バッファ223に充填される。
また、第2TAR用充填命令”SETTAR#2”によって特定される第2ループ部分、すなわち、アドレス”LABEL#2”の命令”I#11”から第2TAR用分岐命令”JUMPTAR#2”までの外側ループ部分が第2TAR用命令バッファ224に充填される。
そして、命令フェッチ制御部202は、命令実行部101において、第1TAR用命令バッファ223から供給された第2TAR用分岐命令”JUMPTAR#2”が実行されてアドレス”LABEL#2”に分岐する場合には、セレクタ221を制御して第2TAR用命令バッファ224を選択する。
また、命令フェッチ制御部202は、命令実行部101において、第2TAR用命令バッファ224から供給される第1TAR用分岐命令”JUMPTAR#1”が実行されてアドレス”LABEL#1”に分岐する場合には、セレクタ221を制御して第1TAR用命令バッファ223を選択する。
同様に、図13に示されるように、第1TAR用充填命令”SETTAR#1”によって特定される第1ループ部分、すなわち、アドレス”LABEL#1”の命令”I#11”から第1TAR用分岐命令”JUMPTAR#1”までのループ部分が第1TAR用命令バッファ223に充填される。さらに、命令”I#20”から第2TAR用分岐命令”JUMPTAR#2”までの部分も第1TAR用命令バッファ223に充填される。
また、第2TAR用充填命令”SETTAR#2”によって特定される第2ループ部分、すなわち、アドレス”LABEL#2”の命令”I#17”から第2TAR用分岐命令”JUMPTAR#2”までのループ部分が第2TAR用命令バッファ224に充填される。
そして、命令フェッチ制御部202は、命令実行部101において、第1TAR用命令バッファ223から供給された第2TAR用分岐命令”JUMPTAR#2”が実行されてアドレス”LABEL#2”に分岐する場合には、セレクタ221を制御して第2TAR用命令バッファ224を選択する。
また、命令フェッチ制御部20は、命令実行部10において、第2TAR用命令バッファ224から供給された第1TAR用分岐命令”JUMPTAR#1”が実行されてアドレス”LABEL#1”に分岐する場合には、セレクタ221を制御して第1TAR用命令バッファ223を選択する。
以上説明したように本実施の形態におけるプロセッサによれば、メインで利用される通常命令バッファ122以外に副次的に利用される複数のTAR用命令バッファなどを備えることにより、複数のループ部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、第1TAR用命令バッファ223および第2TAR用命令バッファ224などから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、第1TAR用充填命令で、フェッチする期間を調整して第1TAR用命令バッファ223に格納する期間を調整することができ、第2TAR用充填命令で、フェッチする期間を調整して第2TAR用命令バッファ224に格納する期間を調整することができることから、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もって第1TAR用充填命令および第2TAR用充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。アクセス頻度が減ることによって、消費電力の増大を抑制することができる。
(その他)
なお、図14に示されるように、プロセッサ300は、命令実行部101、命令フェッチ制御部302、セレクタ311、通常命令アドレスレジスタ112、第1TAR用命令アドレスレジスタ313、第2TAR用命令アドレスレジスタ314、LR用命令アドレスレジスタ114、セレクタ321、通常命令バッファ122、第1TAR用命令バッファ323、第2TAR用命令バッファ324、およびLR用命令バッファ124を備えるとしてもよい。すなわち、複数のTAR用命令バッファおよびLR用命令バッファを備え、複数のループ部分の命令およびサブルーチン部分の命令を供給するとしてもよい。
なお、プロセッサ100、300において、LR用命令バッファ124を備える代わりに、TAR用命令バッファおよびLR用命令バッファを兼用する命令バッファを備えるとしてもよい。さらに、LR用命令アドレスレジスタ114を備える代わりに、TAR用命令アドレスレジスタおよびLR用命令アドレスレジスタを兼用する命令アドレスレジスタを備えるとしてもよい。
なお、プロセッサは、フルカスタムLSI(Large Scale Integration)によって実現されるとしてもよい。また、ASIC(Application Specific Integrated Circuit)などのようなセミカスタムLSIによって実現されるとしてもよい。また、FPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)などのようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
さらに、プロセッサを構成する1以上の機能を、これらのLSIに形成する設計データは、VHDL(Very high speed integrated circuit Hardware Description Language)、Verilog−HDL、SystemC等のようなハードウェア記述言語によって記述されたプログラム(以下、HDLプログラムと呼称する。)としてもよい。また、HDLプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。
さらに、コンピュータシステム、組み込みシステム等のようなハードウェアシステムに読み出され得るように、光学記録媒体(例えば、CD−ROM等。)、磁気記録媒体(例えば、ハードディスク等。)、光磁気記録媒体(例えば、MO等。)、半導体メモリ(例えば、メモリカード等。)等のようなコンピュータ読み取り可能な記録媒体に設計データを記録しておくとしてもよい。そして、これらの記録媒体を介して他のハードウェアタシステムに読み取られた設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。
または、ネットワーク等のような伝送路を経由して他のハードウェアシステムに取得され得るように、伝送路上のハードウェアシステムに設計データを保持しておくとしてもよい。さらに、ハードウェアシステムから伝送路を介して他のハードウェアタシステムに取得された設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてよい。
または、論理合成、配置、配線された設計データを、通電時にFPGAに転送され得るように、シリアルROMに記録しておくとしてもよい。そして、シリアルROMに記録された設計データが、通電時に、直接、FPGAにダウンロードされるとしてもよい。
本発明は、命令キャッシュに格納されている命令を取り出して実行するプロセッサなどとして、特に、ループ部分の命令を実行するときに、ループ部分用命令バッファに格納している命令を供給して命令キャッシュへのアクセス頻度を減らして、実行処理の向上を図り、かつ消費電力の増大を抑制するプロセッサなどとして、利用することができる。
図1は、本発明に係わる実施の形態1におけるプロセッサの構成を示す図である。 図2は、本発明に係わる実施の形態1におけるプロセッサに供給される命令列の例を示す図である。 図3Aは、本発明に係わる実施の形態1におけるプロセッサのTAR用命令バッファの充填完了を知らせる論理回路を示す図である。 図3Bは、本発明に係わる実施の形態1におけるプロセッサのTAR用命令バッファの充填完了を知らせる論理回路に対する論理表を示す図である。 図4は、本発明に係わる実施の形態1におけるTAR用命令バッファおよびLR用命令バッファの各状態遷移を示す図である。 図5は、本発明に係わる実施の形態1におけるプロセッサにおいて命令充填時に実行される命令充填処理を示す第1の図である。 図6Aは、本発明に係わる実施の形態1におけるプロセッサにおいて命令充填時に実行される命令充填処理を示す第2の図である。 図6Bは、本発明に係わる実施の形態1におけるプロセッサにおいて命令充填時に実行される命令充填処理を示す第3の図である。 図7は、本発明に係わる実施の形態1におけるプロセッサにおいて命令供給時に実行される命令供給処理を示す第1の図である。 図8Aは、本発明に係わる実施の形態1におけるプロセッサにおいて命令供給時に実行される命令供給処理を示す第2の図である。 図8Bは、本発明に係わる実施の形態1におけるプロセッサにおいて命令供給時に実行される命令供給処理を示す第3の図である。 図9は、本発明に係わる実施の形態1におけるプロセッサの命令充填時の動作例を示す図である。 図10は、本発明に係わる実施の形態2におけるプロセッサの構成を示す図である。 図11は、本発明に係わる実施の形態2におけるプロセッサに供給される命令列の第1の例を示す図である。 図12は、本発明に係わる実施の形態2におけるプロセッサに供給される命令列の第2の例を示す図である。 図13は、本発明に係わる実施の形態2におけるプロセッサに供給される命令列の第3の例を示す図である。 図14は、本発明に係わるその他の実施の形態におけるプロセッサの構成を示す図である。
符号の説明
10 命令キャッシュ
100,200,300 プロセッサ
101 命令実行部
102,202,302 命令フェッチ制御部
111,211,311 セレクタ
112 通常命令アドレスレジスタ
113 TAR用命令アドレスレジスタ
114 LR用命令アドレスレジスタ
121,221,321 セレクタ
122 通常命令バッファ
123 TAR用命令バッファ
124 LR用命令バッファ
213,313 第1TAR用命令アドレスレジスタ
214,314 第2TAR用命令アドレスレジスタ
223,323 第1TAR用命令バッファ
224,324 第2TAR用命令バッファ

Claims (7)

  1. 命令キャッシュに格納されている命令を取り出して実行するプロセッサであって、
    前記命令キャッシュから取り出した1以上の命令を格納して供給する主命令バッファと、
    前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給し、前記命令キャッシュから取り出した1以上の命令が充填されたか否かを示すフラグ情報が記憶されるフラグ記憶手段を有する第1の副命令バッファと、
    前記主命令バッファおよび前記第1の副命令バッファのいずれかを命令供給源に選択する第1のセレクタと、
    前記命令キャッシュから取り出し前記主命令バッファに格納する命令のアドレスを保持する主命令用アドレスレジスタと、
    前記命令キャッシュから取り出し前記第1の副命令バッファに格納する命令のアドレスを保持する第1の副命令用アドレスレジスタと、
    前記命令キャッシュから取り出すアドレスを、前記主命令用アドレスレジスタに保持されたアドレスと前記第1の副命令用アドレスレジスタに保持されたアドレスのいずれかから選択する第2のセレクタと、
    前記第1のセレクタを介して前記主命令バッファから命令を供給し、前記命令キャッシュの第1のアドレスから取り出した1以上の命令を前記第1の副命令バッファに充填することが示される第1の充填命令が実行された場合には、前記第1のアドレスを前記第1の副命令用アドレスレジスタに設定し、前記第2のセレクタを介して前記第1の副命令用アドレスレジスタを参照して前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納し、前記第1の副命令バッファに格納された命令が繰り返し実行される場合で、かつ、前記命令キャッシュから取り出した1以上の命令が前記第1の副命令バッファに充填されたことを示すフラグ情報が前記フラグ記憶手段に記憶されている場合には、前記第1のセレクタを制御して前記第1の副命令バッファを選択し、前記第1のセレクタを介して前記第1の副命令バッファから命令を繰り返し供給する命令フェッチ制御手段とを備え、
    前記命令キャッシュの前記第1のアドレスから取り出された命令が前記副命令バッファに充填された場合に、前記第1のアドレスから取り出された命令が充填されていることを示すフラグ情報が前記フラグ記憶手段に記憶されることを特徴とするプロセッサ。
  2. 新たな第1の充填命令が実行された場合に、新たな第1のアドレスから取り出された命令が充填されていないことを示すフラグ情報が前記フラグ記憶手段に記憶される
    ことを特徴とする請求項1に記載のプロセッサ。
  3. 前記命令フェッチ制御手段は、さらに、
    前記第1の充填命令が実行された場合には、前記命令キャッシュから取り出した1以上の命令を前記主命令バッファに格納する合間を縫って、前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納する
    ことを特徴とする請求項1に記載のプロセッサ。
  4. 前記プロセッサは、さらに、
    前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給する第2の副命令バッファと、
    前記命令キャッシュから取り出し前記第2の副命令バッファに格納する命令のアドレスを保持する第2の副命令用アドレスレジスタと
    を備え、
    前記第1のセレクタは、さらに、
    前記主命令バッファ、前記第1の副命令バッファ、および前記第2の副命令バッファのいずれかを命令供給源に選択し、
    前記第2のセレクタは、さらに、
    前記命令キャッシュから取り出す命令のアドレスを、前記主命令用アドレスレジスタ、前記第1の副命令用アドレスレジスタ、前記第2の副命令用アドレスレジスタのいずれかに保持されたアドレスから選択し、
    前記命令フェッチ制御手段は、さらに、
    前記命令キャッシュの第2のアドレスから取り出した1以上の命令を前記第2の副命令バッファに充填することが示される第2の充填命令が実行された場合には、前記第2のアドレスを前記第2の副命令用アドレスレジスタに設定し、前記第2のセレクタを介して前記第2の副命令用アドレスレジスタを参照して前記第2のアドレスから1以上の命令を取り出して前記第2の副命令バッファに格納し、前記第2の副命令バッファに格納された命令を実行するための命令が実行された場合には、前記第1のセレクタを制御して前記第2の副命令バッファを選択し、前記セレクタを介して前記第2の副命令バッファから命令を繰り返し供給する
    ことを特徴とする請求項1に記載のプロセッサ。
  5. 前記命令キャッシュに格納されている命令列に対して、前記第1のアドレスは、分岐命令の分岐先アドレスであり、前記第2のアドレスは、サブルーチンからの戻り先アドレスであって、
    前記第1の副命令バッファは、前記第1のアドレスから所定数の命令を格納し、
    前記第2の副命令バッファは、前記第2のアドレスから所定数の命令を格納する
    ことを特徴とする請求項4に記載のプロセッサ。
  6. 命令キャッシュに格納されている命令を取り出して実行する命令充填方法であって、
    前記命令キャッシュから取り出した1以上の命令を格納して供給する主命令バッファと、
    前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給し、前記命令キャッシュから取り出した1以上の命令が充填されたか否かを示すフラグ情報が記憶されるフラグ記憶手段を有する第1の副命令バッファと、
    前記主命令バッファおよび前記第1の副命令バッファのいずれかを命令供給源に選択する第1のセレクタと、
    前記命令キャッシュから取り出し前記主命令バッファに格納する命令のアドレスを保持する主命令用アドレスレジスタと、
    前記命令キャッシュから取り出し前記第1の副命令バッファに格納する命令のアドレスを保持する第1の副命令用アドレスレジスタと、
    前記命令キャッシュから取り出すアドレスを、前記主命令用アドレスレジスタに保持されたアドレスと前記第1の副命令用アドレスレジスタに保持されたアドレスのいずれかから選択する第2のセレクタと
    を制御して、
    前記第1のセレクタを介して前記主命令バッファから命令を供給し、前記命令キャッシュの第1のアドレスから取り出した1以上の命令を前記第1の副命令バッファに充填することが示される第1の充填命令が実行された場合には、前記第1のアドレスを前記第1の副命令用アドレスレジスタに設定し、前記第2のセレクタを介して前記第1の副命令用アドレスレジスタを参照して前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納し、
    前記第1の副命令バッファに格納された命令が繰り返し実行される場合で、かつ、前記命令キャッシュから取り出した1以上の命令が前記第1の副命令バッファに充填されたことを示すフラグ情報が前記フラグ記憶手段に記憶されている場合には、前記第1のセレクタを制御して前記第1の副命令バッファを選択し、前記第1のセレクタを介して前記第1の副命令バッファから命令を必要回数供給し、
    前記命令キャッシュの前記第1のアドレスから取り出された命令が前記副命令バッファに充填された場合に、前記第1のアドレスから取り出された命令が格納されていることを示すフラグ情報を前記フラグ記憶手段に記憶し、
    新たな第1の充填命令が実行された場合に、新たな第1のアドレスから取り出された命令が充填されていないことを示すフラグ情報を前記フラグ記憶手段に記憶する
    ことを特徴とする命令充填方法。
  7. 前記命令充填方法は、さらに、新たな第1の充填命令が実行された場合に、新たな第1のアドレスから取り出された命令が充填されていないことを示すフラグ情報を前記フラグ記憶手段に記憶する
    ことを特徴とする請求項6に記載の命令充填方法
JP2006523470A 2005-04-08 2006-03-07 プロセッサ Expired - Fee Related JP4354990B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005112867 2005-04-08
JP2005112867 2005-04-08
PCT/JP2006/304379 WO2006112190A1 (ja) 2005-04-08 2006-03-07 プロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009021748A Division JP2009104643A (ja) 2005-04-08 2009-02-02 プロセッサ

Publications (2)

Publication Number Publication Date
JPWO2006112190A1 JPWO2006112190A1 (ja) 2008-12-04
JP4354990B2 true JP4354990B2 (ja) 2009-10-28

Family

ID=37114924

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006523470A Expired - Fee Related JP4354990B2 (ja) 2005-04-08 2006-03-07 プロセッサ
JP2009021748A Pending JP2009104643A (ja) 2005-04-08 2009-02-02 プロセッサ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009021748A Pending JP2009104643A (ja) 2005-04-08 2009-02-02 プロセッサ

Country Status (7)

Country Link
US (1) US20090037696A1 (ja)
EP (1) EP1868081A4 (ja)
JP (2) JP4354990B2 (ja)
KR (1) KR20070094843A (ja)
CN (1) CN101156134B (ja)
TW (1) TW200703101A (ja)
WO (1) WO2006112190A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5099133B2 (ja) * 2007-06-20 2012-12-12 富士通株式会社 処理装置
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
KR101538425B1 (ko) * 2011-09-23 2015-07-22 한국전자통신연구원 프로세서 및 프로세서에서의 명령 처리방법
US9274794B2 (en) 2011-09-23 2016-03-01 Electronics And Telecommunications Research Institute Processor and instruction processing method in processor
CN103513958B (zh) * 2012-06-27 2017-01-25 上海芯豪微电子有限公司 高性能指令缓存系统和方法
US9317293B2 (en) * 2012-11-28 2016-04-19 Qualcomm Incorporated Establishing a branch target instruction cache (BTIC) entry for subroutine returns to reduce execution pipeline bubbles, and related systems, methods, and computer-readable media
GB2563384B (en) * 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering
CN112000370B (zh) * 2020-08-27 2022-04-15 北京百度网讯科技有限公司 循环指令的处理方法、装置、设备和存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US186048A (en) * 1877-01-09 Improvement in car-couplings
US136530A (en) * 1873-03-04 Improvement in railroad-rail joints
JPH01193938A (ja) * 1988-01-28 1989-08-03 Matsushita Electric Ind Co Ltd 命令先読み装置
JPH07120281B2 (ja) * 1988-08-31 1995-12-20 株式会社日立製作所 情報処理装置
JPH02157939A (ja) * 1988-12-09 1990-06-18 Toshiba Corp 命令処理方法及び命令処理装置
US6237074B1 (en) * 1995-05-26 2001-05-22 National Semiconductor Corp. Tagged prefetch and instruction decoder for variable length instruction set and method of operation
US6189092B1 (en) * 1997-06-30 2001-02-13 Matsushita Electric Industrial Co., Ltd. Pipeline processor capable of reducing branch hazards with small-scale circuit
US6253315B1 (en) * 1998-08-06 2001-06-26 Intel Corporation Return address predictor that uses branch instructions to track a last valid return address
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
DE10009677A1 (de) * 2000-02-29 2001-09-06 Infineon Technologies Ag Programmgesteuerte Einheit
US7383403B1 (en) * 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor

Also Published As

Publication number Publication date
US20090037696A1 (en) 2009-02-05
EP1868081A4 (en) 2008-08-13
EP1868081A1 (en) 2007-12-19
WO2006112190A1 (ja) 2006-10-26
JPWO2006112190A1 (ja) 2008-12-04
KR20070094843A (ko) 2007-09-21
CN101156134A (zh) 2008-04-02
JP2009104643A (ja) 2009-05-14
TW200703101A (en) 2007-01-16
CN101156134B (zh) 2010-10-06

Similar Documents

Publication Publication Date Title
JP4354990B2 (ja) プロセッサ
JP6523274B2 (ja) 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
CN100487642C (zh) D缓存缺失预测和调度的方法和装置
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US11416256B2 (en) Selectively performing ahead branch prediction based on types of branch instructions
KR100617663B1 (ko) 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
JP2004171177A (ja) キャッシュシステムおよびキャッシュメモリ制御装置
CN101025681A (zh) 最小化未调度d缓存缺失流水线停顿的方法和装置
US20080320288A1 (en) Branch prediction apparatus of computer
EP0488819A2 (en) Conditional branch instructions execution apparatus
JP2008186233A (ja) 命令キャッシュプリフェッチ制御方法及びその装置
US7234045B2 (en) Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US20100180101A1 (en) Method for Executing One or More Programs on a Multi-Core Processor and Many-Core Processor
TWI858271B (zh) 微處理器和分支預測控制方法
TWI780804B (zh) 微處理器和預取指調整方法
JP4086885B2 (ja) 命令供給装置
JPH0773104A (ja) キャッシュ・システム
JP2001100995A (ja) 分岐履歴情報の書き込み制御装置及びその方法
US9507600B2 (en) Processor loop buffer
US20110083030A1 (en) Cache memory control device, cache memory device, processor, and controlling method for storage device
US6662293B1 (en) Instruction dependency scoreboard with a hierarchical structure
TWI231450B (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
US7376797B2 (en) Cache memory system and method using reference bits
CN114430822B (zh) 用于处理具有宽立即操作数的指令的系统和方法
CN113795823A (zh) 处理器资源的可编程控制

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090605

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120807

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees