JP5159258B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP5159258B2
JP5159258B2 JP2007288965A JP2007288965A JP5159258B2 JP 5159258 B2 JP5159258 B2 JP 5159258B2 JP 2007288965 A JP2007288965 A JP 2007288965A JP 2007288965 A JP2007288965 A JP 2007288965A JP 5159258 B2 JP5159258 B2 JP 5159258B2
Authority
JP
Japan
Prior art keywords
repeat
buffer
instruction
instruction code
entry
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
JP2007288965A
Other languages
English (en)
Other versions
JP2009116621A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007288965A priority Critical patent/JP5159258B2/ja
Priority to US12/260,269 priority patent/US20090119487A1/en
Publication of JP2009116621A publication Critical patent/JP2009116621A/ja
Application granted granted Critical
Publication of JP5159258B2 publication Critical patent/JP5159258B2/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、演算処理装置に関するもので、特に、命令キャッシュメモリからフェッチした、リピートブロック(反復実行する命令コード群)を含む命令コードを実行するマイクロプロセッサに関する。
命令キャッシュメモリからフェッチした命令コードを実行するプロセッサにおいては、プログラム中のリピートブロックを実行する場合がある。リピートブロックの実行に際しては、同じ命令コード群を繰り返し実行するにも関わらず、その都度、命令キャッシュメモリにアクセスし、命令コードをフェッチしていた。このため、命令キャッシュメモリにアクセスするたびに電力を消費するという問題があった。
そこで、バッファを設けて命令キャッシュからの命令に関する情報を順次記憶させ、命令が命令ループに入ったことを検知した場合に、命令ループの命令をバッファから出力させるようにしたシステムも提案されている(たとえば、特許文献1参照)。
しかしながら、この提案のような方式とした場合には、いくつかの問題点があった。たとえば、リピート命令の発行によって、バッファ内にリピートブロックの命令コードを格納する際に、命令デコーダのデコード結果にしたがってバッファを制御し、命令コードの格納を開始させるための制御回路が新たに必要となる。また、バッファ内のリピートブロックの命令コードとフェッチ対象の命令コードとの一致が確認された命令コードをバッファから出力させるためにはアドレス比較器が必要であり、命令コードをフェッチするたびに、フェッチした命令コードとバッファ内に格納されている命令コードとのアドレス比較を行わなければならず、余計に電力を消費する。
特に、命令キャッシュメモリがセットアソシアティブ命令キャッシュの場合、バッファの境界と命令キャッシュメモリのライン境界とが一致していないと、バッファ内の命令コードの続きとなる命令コードがどのway(キャッシュデータRAM)に存在するのかが判断できないので、バッファ内の命令コードを使い果たした後には、すべてのwayにアクセスすることになり、余計な電力を消費する。
上記したように、プログラム中のリピートブロックを実行する際に、バッファから命令コードを供給するようにして、命令キャッシュメモリへのアクセス数を減らすようにした従来方式においては、命令キャッシュメモリへのアクセスにともなう消費電力を抑えることが可能である。しかし、バッファに命令コードの格納を開始させるための制御回路、および、フェッチした命令コードとバッファ内に格納されている命令コードとのアドレス比較を行うためのアドレス比較器が必要であり、バッファ内の命令コードの続きとなる命令コードを読み出すために、すべてのwayにアクセスしなければならず、余計な電力を消費するという問題があった。
特開平9−91136号公報
本発明は、上記の問題点を解決すべくなされたもので、プログラム中のリピートブロックを実行する場合に、余計な電力の消費を抑えることが可能な演算処理装置を提供することを目的としている。
実施形態に係る演算処理装置によれば、主記憶装置からの複数の命令コードを取り込んで格納するキャッシュブロックと、前記キャッシュブロックにフェッチアクセスし、逐次、前記複数の命令コードを取り込んで実行する中央演算装置と、前記キャッシュブロックに格納された前記複数の命令コードのうち、処理プログラム中で反復実行されるリピートブロックの先頭の命令コードから、前記キャッシュブロックのライン構成によらず、バッファサイズ分の命令コード群を格納するリピートバッファと、前記リピートバッファ内の操作対象エントリを指し示すとともに操作後にインクリメントされるエントリポインタと、前記リピートブロックの反復により、前記リピートバッファに格納された前記命令コード群を前記中央演算装置に供給するように制御する命令キャッシュ制御部と、を備え、前記命令キャッシュ制御部は、前記リピートバッファ内の各エントリが有効か無効かを判定し、前記中央演算装置からの逐次要求、リピート要求、及び、分岐要求であってリピート以外のもの、の各フェッチの種類を識別し、リピート要求に応答して、前記エントリポインタを初期化してリピートバッファの先頭に位置づけ、逐次要求に応答して、エントリポインタが指し示すリピートバッファエントリが有効であれば、該エントリの内容を命令コードとして選択してエントリポインタをインクリメントし、エントリポインタが指し示すリピートバッファエントリが無効であれば、前記キャッシュブロックからフェッチした命令コードを選択するとともにエントリポインタの指し示すリピートバッファエントリに該命令コードを格納して該エントリを有効とし、エントリポインタをインクリメントし、分岐要求であってリピート以外のものに応答して、前記リピートバッファへの命令コードの格納を中止し、前記リピートバッファに格納された前記命令コード群と前記中央演算装置からのフェッチアクセスとのアドレス比較をせず、前記リピートバッファまたは前記キャッシュブロックからの命令コードの選択を行う。
上記の構成により、プログラム中のリピートブロックを実行する場合に、余計な電力の消費を抑えることが可能な演算処理装置を提供できる。
以下、本発明の実施の形態について図面を参照して説明する。ただし、図面は模式的なものであり、各図面の寸法および比率などは現実のものとは異なることに留意すべきである。また、図面の相互間においても、互いの寸法の関係および/または比率が異なる部分が含まれていることは勿論である。特に、以下に示すいくつかの実施形態は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置などによって、本発明の技術思想が特定されるものではない。この発明の技術思想は、その要旨を逸脱しない範囲において、種々の変更を加えることができる。
[第1の実施形態]
図1は、本発明の第1の実施形態にしたがった演算処理装置(マイクロプロセッサ)の構成例を示すものである。ここでは、キャッシュブロックとしての命令キャッシュメモリからの命令コードを格納するための、リピートバッファを備えた命令キャッシュシステムを例に説明する。
図1に示すように、この命令キャッシュシステム10は、命令キャッシュデータRAM11、命令キャッシュタグRAM12、命令キャッシュ制御部13、リピートバッファ14、エントリポインタ15、ウェイインジケータ16、タグ比較器17、プロセッサ内命令フェッチユニット(中央演算装置)18、および、選択回路19,20を備えている。
命令キャッシュデータRAM11は、たとえば、2つのセットアソシアティブ命令キャッシュデータRAM(way−0,way−1)11a,11bを有して構成されている。これらキャッシュデータRAM11a,11bは、それぞれ、図示していない外部のメインメモリ(主記憶装置)に記憶されているプログラム中の一部の命令コードを格納するものである。なお、本実施形態においては、命令キャッシュデータRAM11のway数を“2”とした場合を示している。命令キャッシュデータRAM11のway数は、n×wayへと自由に拡張することが可能である。
命令フェッチユニット18は、命令キャッシュ制御部13を介して、命令キャッシュデータRAM11にフェッチアクセスし、命令キャッシュデータRAM11からの命令コード(または、リピートバッファ14からの命令コード)を選択的に取り込んで実行するものである。また、この命令フェッチユニット18は、プログラム中の反復実行する命令コード群であるリピートブロックを定義するリピート命令が発行された際に、そのリピートブロック先頭(Repeat Begin)のプログラムカウンタ値および末尾(Repeat End)のプログラムカウンタ値を記憶するようになっている。
リピートバッファ14は、そのサイズ(容量)に応じて、命令キャッシュデータRAM11に格納されているリピートブロックの、少なくとも一部の命令コードを格納するものである。つまり、リピートバッファ14は、キャッシュデータRAM11a,11bのラインサイズに依存することなく、命令コード群の先頭からバッファサイズ分の命令コードを格納する。
エントリポインタ15は、リピートバッファ14内の各エントリ中、処理対象となるエントリを記憶するものであって、たとえば、逐次要求のたびにその値がインクリメントされる。
ウェイインジケータ16は、リピートバッファ14内の各エントリに格納された命令コードに続く、リピートブロックの命令コードが格納されている命令キャッシュデータRAMのway情報(フラグ)を管理するものである。
命令キャッシュ制御部13は、命令フェッチユニット18からの要求および選択回路20の選択結果に応じて、命令キャッシュデータRAM11、命令キャッシュタグRAM12、および、選択回路19,20などを制御するものである。
命令キャッシュタグRAM12は、動作履歴などを記憶する管理情報メモリであって、命令キャッシュ制御部13からのアドレス(たとえば、命令キャッシュデータRAM11a,11bのライン)に対応するタグ情報を記憶するものである。
タグ比較器17は、命令キャッシュタグRAM12からのタグ情報と命令キャッシュ制御部13からのアドレスとを比較し、その比較結果をウェイインジケータ16および選択回路20に出力するものである。
選択回路19は、命令キャッシュ制御部13によって制御され、命令キャッシュデータRAM11からの命令コードまたはリピートバッファ14からの命令コードを選択し、命令フェッチユニット18に出力するものである。
選択回路20は、命令キャッシュ制御部13によって制御され、ウェイインジケータ16の出力またはタグ比較器17の出力を選択し、命令キャッシュ制御部13に出力するものである。
ここで、プロセッサのプログラム実行においては、リピートブロックのネスト構造を排除すれば、リピートブロックに対応したプログラムカウンタの記憶セットは1セットで構成可能である。本実施形態においては、説明の簡潔化のために、リピートブロックのネスト構造を排除した場合について説明する。
すなわち、プログラム中のリピート命令が発行された後、命令キャッシュデータRAM11から供給される命令コードによるプログラム実行が進み、実行中のプログラムカウンタ値が、リピートブロック末尾のプログラムカウンタ値に達したとする。すると、命令フェッチユニット18は、リピート動作によるフェッチ要求を命令キャッシュ制御部13に発行する。
リピート動作によるフェッチ要求を受けた命令キャッシュ制御部13は、エントリポインタ15を初期化(この例では、たとえば“0”に設定)する。そして、エントリポインタ15によって示される、リピートバッファ14内のエントリが有効か否かを判定する。有効でない場合は、命令キャッシュデータRAM11にリクエスト(アドレス)を発行する。その後、命令キャッシュデータRAM11から命令コードが出力されると、その命令コードを命令フェッチユニット18に出力するとともに、リピートバッファ14のエントリに命令コードを格納する。
その後、リピートブロック内のプログラム実行がシーケンシャルに(分岐によるジャンプを起こさずに)実行されると、命令フェッチユニット18から逐次要求が発行される。すると、命令キャッシュ制御部13は、リピートバッファ14のエントリを逐次的に(要求のたびにエントリポインタ15をインクリメントしながら順々に)チェックする。有効でない場合は、命令キャッシュデータRAM11からの命令コードをリピートバッファ14に格納する動作を繰り返す。
命令キャッシュ制御部13が、この逐次的なリピートバッファ14内への命令コードの格納動作を行わない場合は、以下のケースである。
(1) エントリポインタ15の指す、リピートバッファ14内のエントリがすでに有効である場合。
(2) プログラムが分岐によるジャンプを発生し、命令フェッチユニット18から分岐によるフェッチ要求が届いた場合(エントリポインタ15は、リピートバッファ14内のエントリを指さない値に設定される)。
(3) リピートバッファ14の全エントリをチェックした場合(命令コードがリピートバッファ14の容量に達した場合で、エントリポインタ15はリピートバッファ14内のエントリを指さない値に設定される)。
その後、リピート動作によるフェッチ要求が、再度、命令キャッシュ制御部13に届いた際には、エントリポインタ15が初期化される。そして、リピートバッファ14の先頭エントリが指定され、逐次的なエントリの有効/無効のチェックが開始される。
以前の、リピートブロック内のプログラム実行により、リピートバッファ14内の各エントリに命令コードがすでに格納されている場合、命令キャッシュ制御部13は、命令キャッシュデータRAM11へのアクセスを行わない。この場合は、エントリポインタ15の指すリピートバッファ14内の有効エントリからの命令コードを、命令フェッチユニット18に出力させる。その後、エントリポインタ15をインクリメントし、エントリポインタ15が次のエントリを指すことにより、次の逐次要求に備える。エントリポインタ15がインクリメントされない場合は、以下のケースである。
(1) プログラムが分岐によるジャンプを発生し、命令フェッチユニット18から分岐によるフェッチ要求が届いた場合(エントリポインタ15は、リピートバッファ14内のエントリを指さない値に設定される)。
(2) リピートバッファ14の全エントリをチェックした場合(命令コードがリピートバッファ14の容量に達した場合で、エントリポインタ15はリピートバッファ14内のエントリを指さない値に設定される)。
図2は、リピートバッファ14およびウェイインジケータ16の動作を説明するために示すものである。図中の1ワード(Word n)は、命令フェッチユニット18から要求されるフェッチ単位の命令コードを指す。ここでは、一例として、2−way・8ワード/ライン構成の、セットアソシアティブ命令キャッシュデータRAM11a,11bにおける動作について説明する。
図2において、命令キャッシュデータRAM11aのあるラインの途中に、リピートブロックの先頭ワード(Repeat Begin)が格納されている。一方、リピートバッファ14には、リピートブロックの先頭ワードからバッファサイズ分のワードデータ(命令コード群としてのRepeat Begin〜n9)が格納されている。
図2に示すように、リピートブロックの各ワードデータが命令キャッシュデータRAM11aの1ライン上に整列されている必要はなく、また、リピートバッファ14のサイズ(容量)も命令キャッシュデータRAM11aのラインサイズに依存することなく、そのサイズを自由に設定することができる。命令キャッシュデータRAM11aのラインサイズに依存することなく、リピートブロックの先頭ワードからバッファサイズ分のワードデータをリピートバッファ14内に格納する結果として、リピートバッファ14の終端ワード(n9)が、命令キャッシュデータRAM11aのラインの途中になることが十分に想定される。
ここで、2−way以上のセットアソシアティブ命令キャッシュデータRAMを使用する場合において、リピートバッファ14の終端ワード(n9)に続く命令コードが、複数のway中のどの命令キャッシュデータRAMに格納されているか判断できないと、全wayの命令キャッシュデータRAMにアクセスし、後続の命令コードを得る必要がある。この場合、リピートバッファ14内の命令コードを使い果たすたびに、全wayの命令キャッシュデータRAMにアクセスするようにすると、余計な電力消費を招く。
そこで、本実施形態においては、リピートバッファ14に命令コードを格納する際に、終端ワード(n9)に続く命令コードが格納されている命令キャッシュデータRAMのway情報を、ウェイインジケータ16によって管理するようにする。この場合、リピートバッファ14の終端ワード(n9)をフェッチした後には、ウェイインジケータ16が指し示す命令キャッシュデータRAMにのみアクセスを行うことにより、後続の命令コードをフェッチすることが容易に可能となる。すなわち、後続の命令コードを格納する命令キャッシュデータRAMのみを活性化させることにより、電力の無駄な消費が抑えられる。
本実施形態のように、リピートブロックのネスト構造を排除した場合、プログラム実行中において、リピート要求(リピートブロック先頭の命令コードフェッチ要求)が発生すると、そのフェッチ要求に対応する命令コードのアドレスは一意に決まる。よって、プログラム中のリピートブロックの先頭ワードのアドレスを記憶することにより、リピート要求によってリピートブロックの先頭ワードを対象とした命令フェッチが発生した場合にも、フェッチする命令コードのアドレスをアドレス比較器で比較したりすることなく、命令フェッチの種類(逐次要求、リピート要求、リピートを除いた分岐要求)の識別のみで、リピートブロック先頭の命令コードを命令フェッチユニット18に出力させることが可能となる。
本実施形態の構成によれば、命令コードをフェッチするための命令キャッシュデータRAM11の物理的構造に依存することなく、リピートバッファ14のサイズを自由に設定することができる。また、図3に示すように、リピートバッファ14に格納される命令コード群(Repeat begin〜n9)が命令キャッシュデータRAM11a,11bの境界を越え、複数のway−0,way−1に存在する場合にも、リピートバッファ14として機能させることができる。
次に、上記した構成の命令キャッシュシステム10の動作について説明する。たとえば、プログラム中のリピートブロックの実行時、リピートブロックの最初の反復により、リピートブロックの先頭にプログラム実行が戻るタイミングから、リピートバッファ14上にリピートブロックの先頭からの命令コードの格納を開始する。そして、命令コードがリピートバッファ14の全容量に達するか、あるいは、リピートブロックの末尾の命令コードまで格納し終えたか、もしくは、リピートブロック中に“分岐”が発生した際は、リピートバッファ14への命令コードの格納を終了する。その後は、リピートブロックの反復により、リピートブロックの先頭にプログラム実行が戻るたびに、命令フェッチユニット18にリピートバッファ14から命令コードを供給する。これにより、リピートブロック反復中の命令キャッシュデータRAM11へのアクセスを減らし、命令キャッシュデータRAM11へのアクセスにともなう消費電力を削減できる。
また、リピートバッファ14の命令コードを使い果たした後には、ウェイインジケータ16からのway情報にしたがって、リピートバッファ14内の命令コードの続きとなる命令コードを格納する命令キャッシュデータRAMにのみ確実にアクセスすることで、無駄な電力の消費を抑えることが可能となる。
上記したように、プログラム中のリピートブロックを実行する際に、有効なリピートバッファ内のエントリにヒットすることで、リピートバッファから命令コードを出力させるようにしている。しかも、セットアソシアティブ命令キャッシュデータRAM内の命令コードをリピートバッファに格納する際には、リピートバッファ内の終端ワードに続く命令コードをフェッチしやすくするために、次にアクセスすべきwayを示すフラグを管理するようにしている。これにより、命令キャッシュメモリへのアクセス数を減少でき、命令キャッシュメモリへのアクセスにともなう消費電力を抑えることが可能となるとともに、加えて、リピートバッファをアクセスした後の、全wayの命令キャッシュデータRAMへのアクセスによる余計な電力の消費をも抑制できるようになるものである。
しかも、バッファに命令コードの格納を開始させるための制御回路、および、フェッチした命令コードとバッファ内に格納されている命令コードとのアドレス比較を行うためのアドレス比較器を、必要とせずに実施できるものである。
[第2の実施形態]
図4は、本発明の第2の実施形態にしたがった演算処理装置(マイクロプロセッサ)の構成例を示すものである。ここでは、リピートバッファを備えた命令キャッシュシステムにおいて、リピートバッファに命令キャッシュメモリからの命令コードを格納するとともに、命令キャッシュメモリから命令コードを読み出す際には、命令キャッシュタグRAMを先んじて読む(先引きする)ことで、命令キャッシュメモリへのアクセスにともなう消費電力を削減できるようにした場合について説明する。なお、図1に示した命令キャッシュシステムと同一部分には同一符号を付して、詳しい説明は割愛する。
すなわち、このタグメモリ先引き機能を兼ね備えた命令キャッシュシステム10Aは、命令キャッシュメモリ(命令キャッシュデータRAM(way−0)11a,(way−1)11b)11、命令キャッシュタグRAM12、命令キャッシュ制御部13、リピートバッファ14、エントリポインタ15、ウェイインジケータ16、タグ比較器17、プロセッサ内命令フェッチユニット18、選択回路19,20a、および、先引き結果ストレージ21を備えている。
ここで、「タグメモリ先引き機能」とは、2−way以上のセットアソシアティブ命令キャッシュデータRAMの使用時において、連続してフェッチしようとする命令コードが、命令キャッシュデータRAMのラインの境界をまたいで存在する際に使用可能な機能である。
以下に、タグメモリ先引き機能の動作と、その効果について説明する。たとえば、命令フェッチユニット18からアドレスの連続した逐次要求が発行される場合を想定する。その際、最初の逐次要求により要求されるフェッチ対象ワード(命令フェッチユニット18から要求されるフェッチ単位の命令コード)が、ある命令キャッシュデータRAM11aのラインの最終ワードであり、次の逐次要求によって要求されるフェッチ対象ワードが、たとえば、ラインの境界をまたいで別の命令キャッシュデータRAM11bに存在することが予測されるとする。すると、次の逐次要求により要求されるであろうフェッチ対象ワードのアドレスを、命令キャッシュ制御部13にてあらかじめ作成する。そして、そのアドレスにしたがって命令キャッシュタグRAM12のタグ情報を先引きし、タグ比較器17でのアドレスとタグ情報との比較結果を先引き結果ストレージ21に格納する。この先引き結果ストレージ21内の比較結果を、選択回路20aを介して、命令キャッシュ制御部13が参照することによって、実際に次の逐次要求により要求されるであろうフェッチ対象ワードが存在する、命令キャッシュデータRAMを事前に把握できるようになる。
この機能により、すべての命令キャッシュデータRAM11a,11bを活性化させることなく、目的の命令コードが格納されている命令キャッシュデータRAMだけを活性化させることで、命令キャッシュデータRAM11での消費電力を大幅に削減することが可能である。なお、タグ比較器17での比較結果が明白な場合は、新たに命令キャッシュデータRAM11a,11bのラインの境界をまたぐタイミングで、命令キャッシュタグRAM12を読む必要はない。
一方、この「タグメモリ先引き機能」は、リピートバッファ14が有効であり、すでに命令キャッシュデータRAM11a,11bのラインの境界をまたいで存在する命令コードがリピートバッファ14内に存在することが明白な場合、「タグメモリ先引き機能」の動作を停止する。これにより、リピートバッファ14を機能させている際の、命令キャッシュタグRAM12の無用な読み出しを防ぐことが可能である。
なお、上記の説明では、タグ先引き動作の発生タイミングを、フェッチ対象ワードがラインの最終ワードの場合を例に説明したが、先引きのタイミングを早めることも、本機能の実現においては十分に可能である。
[第3の実施形態]
図5は、本発明の第3の実施形態にしたがった演算処理装置(マイクロプロセッサ)の構成例を示すものである。ここでは、リピートバッファを備えた命令キャッシュシステムにおいて、リピートバッファを、リピートブロック中の命令コード群の格納のみならず、命令キャッシュメモリのプリフェッチバッファとしての機能をも兼ね備えた多機能バッファとした場合について説明する。なお、図1に示した命令キャッシュシステムと同一部分には同一符号を付して、詳しい説明は割愛する。
すなわち、この命令キャッシュシステム10Bは、命令キャッシュメモリ(命令キャッシュデータRAM11a,11b)11、命令キャッシュタグRAM12、命令キャッシュ制御部13、リピートバッファ(多機能バッファ)14a、エントリポインタ15、ウェイインジケータ16、タグ比較器17、プロセッサ内命令フェッチユニット18、選択回路19,20、および、外部バスインタフェース(I/F)22を備えている。
外部バスインタフェース22は、外部バス31を介して、メインメモリ(主記憶装置)32に接続されている。
本実施形態の場合、リピートバッファ14aは、命令キャッシュ制御部13からの機能スイッチ制御線を介した指示にしたがって、命令キャッシュデータRAM11a,11bのプリフェッチバッファとしても機能する。つまり、実行中のプログラムにリピートブロックが存在しない場合、リピートバッファ14aは、リピートブロック中の命令コード群を格納するためのリピートバッファとしては使用されない。そこで、命令フェッチユニット18が要求するであろう命令キャッシュデータRAM11a,11bのワードデータに対応する、外部バス31上のメインメモリ32からの命令コードを、あらかじめリピートバッファ14aに割り当てられたプリフェッチバッファ機能によって保持させる。こうすることで、実際に命令フェッチユニット18から命令キャッシュデータRAM11a,11bに要求が出された際の、外部バスレイテンシを大きく削減できるようになる。
一方で、プリフェッチバッファとしてリピートバッファ14aが機能中に、プログラム中のリピートブロックが実行されて、命令フェッチユニット18から命令キャッシュ制御部13にリピート要求が発行されたとする。この場合、リピートバッファ14aが使用中(この例では、プリフェッチバッファとして保持している命令コードが読み出されているか、もしくは、命令キャッシュデータRAM11a,11bへのリフィルが行われている事象を指す)であれば、プリフェッチバッファとして保持している命令コードは破棄しない。ただし、プリフェッチバッファとして保持している命令コードを使用していない時は、その命令コードを破棄する。そして、命令キャッシュ制御部13からの機能スイッチ制御線を介した指示にしたがって、リピートバッファ14aは、リピートブロック内の命令コード群を格納するリピートバッファとして機能する。
なお、本実施形態においては、「タグメモリ先引き機能(第2の実施形態参照)」を付加することも可能である。
その他、本願発明は、上記(各)実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記(各)実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、(各)実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題(の少なくとも1つ)が解決でき、発明の効果の欄で述べられている効果(の少なくとも1つ)が得られる場合には、その構成要件が削除された構成が発明として抽出され得る。
本発明の第1の実施形態にしたがった、演算処理装置(マイクロプロセッサ)の構成例を示すブロック図。 図1のプロセッサにおける、リピートバッファおよびウェイインジケータの動作を説明するために示す図。 図1のプロセッサにおける、リピートバッファおよびウェイインジケータの動作を説明するために示す図。 本発明の第2の実施形態にしたがった、演算処理装置(マイクロプロセッサ)の構成例を示すブロック図。 本発明の第3の実施形態にしたがった、演算処理装置(マイクロプロセッサ)の構成例を示すブロック図。
符号の説明
10,10A,10B…命令キャッシュシステム、11…命令キャッシュデータRAM、11a,11b…セットアソシアティブ命令キャッシュデータRAM(way−0,way−1)、12…命令キャッシュタグRAM、13…命令キャッシュ制御部、14,14a…リピートバッファ、15…エントリポインタ、16…ウェイインジケータ、21…先引き結果ストレージ、32…メインメモリ。

Claims (5)

  1. 主記憶装置からの複数の命令コードを取り込んで格納するキャッシュブロックと、
    前記キャッシュブロックにフェッチアクセスし、逐次、前記複数の命令コードを取り込んで実行する中央演算装置と、
    前記キャッシュブロックに格納された前記複数の命令コードのうち、処理プログラム中で反復実行されるリピートブロックの先頭の命令コードから、前記キャッシュブロックのライン構成によらず、バッファサイズ分の命令コード群を格納するリピートバッファと、
    前記リピートバッファ内の操作対象エントリを指し示すとともに操作後にインクリメントされるエントリポインタと、
    前記リピートブロックの反復により、前記リピートバッファに格納された前記命令コード群を前記中央演算装置に供給するように制御する命令キャッシュ制御部と、
    を備え、
    前記命令キャッシュ制御部は
    前記リピートバッファ内の各エントリが有効か無効かを判定し、
    記中央演算装置からの逐次要求、リピート要求、及び、分岐要求であってリピート以外のもの、の各フェッチの種類を識別し、
    リピート要求に応答して、前記エントリポインタを初期化してリピートバッファの先頭に位置づけ、
    逐次要求に応答して、
    エントリポインタが指し示すリピートバッファエントリが有効であれば、該エントリの内容を命令コードとして選択してエントリポインタをインクリメントし、
    エントリポインタが指し示すリピートバッファエントリが無効であれば、前記キャッシュブロックからフェッチした命令コードを選択するとともにエントリポインタの指し示すリピートバッファエントリに該命令コードを格納して該エントリを有効とし、エントリポインタをインクリメントし、
    分岐要求であってリピート以外のものに応答して、前記リピートバッファへの命令コードの格納を中止し、
    前記リピートバッファに格納された前記命令コード群と前記中央演算装置からのフェッチアクセスとのアドレス比較をせず、前記リピートバッファまたは前記キャッシュブロックからの命令コードの選択を行う
    ことを特徴とする演算処理装置。
  2. 前記キャッシュブロックは複数のデータRAMを有して構成され、
    前記リピートバッファに格納された前記命令コード群の終端の命令コードに続く命令コードが格納されている、前記データRAMを指し示すウェイインジケータをさらに備えることを特徴とする請求項1に記載の演算処理装置。
  3. 前記キャッシュブロックのラインに対応するタグ情報を記憶するタグRAMと、
    前記キャッシュブロックのラインの境界を越える以前のフェッチアクセス時に、あらかじめ次のラインに対応するタグ情報を前記タグRAMから読み出して、次のライン境界を越える逐次的フェッチ要求によりアクセスすることが予想されるアドレスを生成し、その生成された前記アドレスと前記タグ情報とを比較した結果を保持する先引き結果ストレージと
    をさらに備え、
    前記中央演算装置からのライン境界を越える逐次的フェッチ要求に応じて実際に前記キャッシュブロックへアクセスする際には、前記先引き結果ストレージで保持されている比較結果にもとづいて、前記キャッシュブロックへのアクセス制御を行うことを特徴とする請求項1に記載の演算処理装置。
  4. 前記リピートバッファは、前記主記憶装置からの複数の命令コードを取り込んで格納する、前記キャッシュブロックのプリフェッチバッファとしても機能する多機能バッファにより構成され、
    前記多機能バッファは、前記処理プログラム中で反復実行されるリピートブロックがない場合に前記プリフェッチバッファとして機能するように、その用途が前記中央演算装置からのフェッチ要求により切り替え制御されることを特徴とする請求項1に記載の演算処理装置。
  5. 前記リピートブロックは、ネスト構造が排除されていることを特徴とする請求項1に記載の演算処理装置。
JP2007288965A 2007-11-06 2007-11-06 演算処理装置 Expired - Fee Related JP5159258B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007288965A JP5159258B2 (ja) 2007-11-06 2007-11-06 演算処理装置
US12/260,269 US20090119487A1 (en) 2007-11-06 2008-10-29 Arithmetic processing apparatus for executing instruction code fetched from instruction cache memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007288965A JP5159258B2 (ja) 2007-11-06 2007-11-06 演算処理装置

Publications (2)

Publication Number Publication Date
JP2009116621A JP2009116621A (ja) 2009-05-28
JP5159258B2 true JP5159258B2 (ja) 2013-03-06

Family

ID=40589343

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007288965A Expired - Fee Related JP5159258B2 (ja) 2007-11-06 2007-11-06 演算処理装置

Country Status (2)

Country Link
US (1) US20090119487A1 (ja)
JP (1) JP5159258B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400544B2 (en) 2013-04-02 2016-07-26 Apple Inc. Advanced fine-grained cache power management
US8984227B2 (en) * 2013-04-02 2015-03-17 Apple Inc. Advanced coarse-grained cache power management
US9396122B2 (en) 2013-04-19 2016-07-19 Apple Inc. Cache allocation scheme optimized for browsing applications
US9530000B2 (en) * 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
US9465616B2 (en) * 2013-10-06 2016-10-11 Synopsys, Inc. Instruction cache with way prediction
JP2017228213A (ja) * 2016-06-24 2017-12-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5890244A (ja) * 1981-11-24 1983-05-28 Hitachi Ltd デ−タ処理装置
JPH07160585A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6125440A (en) * 1998-05-21 2000-09-26 Tellabs Operations, Inc. Storing executing instruction sequence for re-execution upon backward branch to reduce power consuming memory fetch
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
US6757817B1 (en) * 2000-05-19 2004-06-29 Intel Corporation Apparatus having a cache and a loop buffer
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US7178013B1 (en) * 2000-06-30 2007-02-13 Cisco Technology, Inc. Repeat function for processing of repetitive instruction streams
US6950929B2 (en) * 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
JP4374956B2 (ja) * 2003-09-09 2009-12-02 セイコーエプソン株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
JP4610218B2 (ja) * 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置
JP2006309337A (ja) * 2005-04-26 2006-11-09 Toshiba Corp プロセッサ及びプロセッサの命令バッファ動作方法
US20070073925A1 (en) * 2005-09-28 2007-03-29 Arc International (Uk) Limited Systems and methods for synchronizing multiple processing engines of a microprocessor
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US7873820B2 (en) * 2005-11-15 2011-01-18 Mips Technologies, Inc. Processor utilizing a loop buffer to reduce power consumption
JP5233078B2 (ja) * 2006-03-23 2013-07-10 富士通セミコンダクター株式会社 プロセッサ及びその処理方法
US9772851B2 (en) * 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer

Also Published As

Publication number Publication date
JP2009116621A (ja) 2009-05-28
US20090119487A1 (en) 2009-05-07

Similar Documents

Publication Publication Date Title
US10241797B2 (en) Replay reduction by wakeup suppression using early miss indication
JP5410281B2 (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
JP5159258B2 (ja) 演算処理装置
US20050086435A1 (en) Cache memory controlling apparatus, information processing apparatus and method for control of cache memory
EP1974255B1 (en) Translation lookaside buffer manipulation
TW201351145A (zh) 指令快取的減少耗能
JPH02224023A (ja) 命令ストリーム機能を有するプロセサ制御型インターフェイス
EP2936323B1 (en) Speculative addressing using a virtual address-to-physical address page crossing buffer
JP2008107983A (ja) キャッシュメモリ
JP2004171177A (ja) キャッシュシステムおよびキャッシュメモリ制御装置
CN107885530A (zh) 提交高速缓存行的方法和指令高速缓存
JPS6356731A (ja) デ−タ処理装置
JP2008186233A (ja) 命令キャッシュプリフェッチ制御方法及びその装置
US6654873B2 (en) Processor apparatus and integrated circuit employing prefetching and predecoding
WO2011151944A1 (ja) キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法
JP2007272280A (ja) データ処理装置
JP2016157371A (ja) プロセッサおよび命令コード生成装置
JP2009193378A (ja) ベクトル処理装置
JP5902208B2 (ja) データ処理装置
KR101086457B1 (ko) 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템
JP2010015375A (ja) メモリ制御回路および集積回路
JP6016689B2 (ja) 半導体装置
JP4413663B2 (ja) 命令キャッシュシステム
JP2008015668A (ja) タスク管理装置
JP2008257508A (ja) キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120130

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121029

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121211

R151 Written notification of patent or utility model registration

Ref document number: 5159258

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees