JP5793061B2 - キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム - Google Patents

キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム Download PDF

Info

Publication number
JP5793061B2
JP5793061B2 JP2011240780A JP2011240780A JP5793061B2 JP 5793061 B2 JP5793061 B2 JP 5793061B2 JP 2011240780 A JP2011240780 A JP 2011240780A JP 2011240780 A JP2011240780 A JP 2011240780A JP 5793061 B2 JP5793061 B2 JP 5793061B2
Authority
JP
Japan
Prior art keywords
instruction code
instruction
cache
cache memory
subroutine
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
JP2011240780A
Other languages
English (en)
Other versions
JP2013097638A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2011240780A priority Critical patent/JP5793061B2/ja
Priority to EP12190816.4A priority patent/EP2590082B1/en
Priority to CN201210432095.5A priority patent/CN103092773B/zh
Priority to US13/668,009 priority patent/US9317438B2/en
Publication of JP2013097638A publication Critical patent/JP2013097638A/ja
Application granted granted Critical
Publication of JP5793061B2 publication Critical patent/JP5793061B2/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
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Description

本発明はキャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステムに関し、特に命令コードを効率的にキャッシュすることが可能なキャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステムに関する。
近年、AV機器や家電製品などを代表とする電子機器は、多機能化と高性能化が求められている。このため、これらの電子機器を制御するマイクロプロセッサシステムにおいても、高性能化が求められている。一般的に、マイクロプロセッサシステムでは、低速メモリから命令コードをフェッチする際の性能低下を防ぐために、プリフェッチバッファやキャッシュメモリ装置が用いられている。
プリフェッチバッファは、現在実行している命令の次のアドレス以降の命令コードを予めフリップフロップ等に格納することができる。これにより、通常の命令の実行時にメモリから命令コードを読み出す際、メモリの読み出し速度が遅いことに起因する性能の低下を防ぐことができる。キャッシュメモリ装置は、使用頻度の高い命令コードを予めRAM(Random Access Memory)に格納することができる。これにより、主にサブルーチンへの分岐時にメモリから命令コードを読み出す際、メモリの読み出し速度が遅いことに起因する性能の低下を防ぐことができる。
ここで、プリフェッチバッファやキャッシュメモリ装置のメモリは、サイズが大きい程、多くの命令コードを予め格納することができる。よって、メモリの読み出し速度が遅いことに起因する性能の低下をより確実に防ぐためには、メモリのサイズを大きくする必要がある。しかし、プリフェッチバッファやキャッシュメモリ装置のメモリサイズが大きくなると、チップ面積が増大し、製造コストが増大する。したがって、これらのメモリサイズは、性能とコストとのトレードオフを考慮し、必要最小限のメモリサイズで最大限の効果を発揮することができる容量を選択する必要がある。
特許文献1には、容量性の競合が発生し、命令キャッシュの性能が打ち消されてしまうことを防ぐことができるマイクロプロセッサシステムに関する技術が開示されている。図9は、特許文献1に開示されているマイクロプロセッサシステムを説明するためのブロック図である。図9に示すマイクロプロセッサシステムは、CPU101、命令キャッシュ102、アドレスバス103、データバス104、およびカウンタ105を備える。
カウンタ105は、CPU101から出力されたキャッシュアクセス通知信号S1及び分岐発生通知信号S2を受信し、命令キャッシュ102にキャッシュ機能停止信号S3を出力する。ここで、CPU101は、命令キャッシュ102にアクセスする毎にキャッシュアクセス通知信号S1を発生する。このため、カウンタ105の値は、CPU101が命令キャッシュ102にアクセスする毎に1デクリメントされる。また、CPU101は、サブルーチンコールまたはマイナス方向への分岐が成立する毎に分岐発生通知信号S2を発生する。分岐発生通知信号S2が供給されると、カウンタ105は初期化され、カウンタ105の値がエントリ数とされる。さらに、カウンタ105の値が0のときには、カウンタ105はキャッシュ機能停止信号S3を命令キャッシュ102に出力して命令キャッシュ102の機能を停止させる。
次に、図9に示したマイクロプロセッサシステムの動作について説明する。図11は、図10に示すプログラムを実行した際に、命令キャッシュ102にキャッシュされる命令の遷移を示す図である。CPU101は、図10のプログラムのループ部分に入ると、メインメモリ(図示せず)から命令A、B、C、Dを順次フェッチして命令キャッシュ102にロードすると共に実行する(ステップ201、202、203、204)。各ステップ201、202、203、204においては、CPU101がキャッシュアクセス通知信号S1を発生するので、カウンタ105の値は、3、2、1、0と減少する。この結果、ステップ204の状態で、命令キャッシュ102のエントリのすべてが埋まることになり、以後は、カウンタ105のキャッシュ機能停止信号S3の発生により命令キャッシュ2のリプレースは発生しない。
次に、続けてメインメモリから命令E、F、G、Hを順次フェッチして実行する(ステップ205、206、207、208)。この場合、キャッシュ102のリプレースは発生しないので、命令A、B、C、Dは命令キャッシュ102内に残る。
次に、分岐命令である命令Hを実行後、再び命令Aを実行するものとする。この場合、命令Aは既に命令キャッシュ102にロードされている。したがって、いわゆるキャッシュヒットとなる(ステップ209)。引き続き、命令B、C、Dを実行する場合も、命令B、C、Dは命令キャッシュ102にロードされているのでキャッシュヒットとなる。
このように、特許文献1に開示されているマイクロプロセッサシステムでは、ループを有するプログラムを実行した場合、命令キャッシュが満たされた時点でキャッシュ機能を無効化することで、命令キャッシュの性能を向上させることができる。
特開平9−305490号公報
しかしながら、特許文献1に開示されているマイクロプロセッサシステムでは、サブルーチンに含まれる命令コードの数を考慮せずに、サブルーチンに含まれる命令コードをキャッシュメモリにキャッシュしている。このため、命令コードを効率的にキャッシュすることができないという問題があった。
本発明にかかるキャッシュメモリ装置は、フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備える。前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする。
本発明にかかるキャッシュメモリ装置では、キャッシュメモリにキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリにキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。
本発明にかかるマイクロプロセッサシステムは、CPUと、前記CPUで実行される命令コードが格納されたメモリと、前記CPUから出力されたフェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備える。前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする。
本発明にかかるマイクロプロセッサシステムでは、キャッシュメモリにキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリにキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。
本発明にかかるキャッシュ制御方法は、フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリにおけるキャッシュ制御方法であって、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする。
本発明にかかるキャッシュ制御方法では、キャッシュメモリにキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリにキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。
本発明により、命令コードを効率的にキャッシュすることが可能なキャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステムを提供することができる。
実施の形態1にかかるキャッシュメモリ装置を含むマイクロプロセッサシステムを示すブロック図である。 実施の形態1にかかるキャッシュメモリ装置の動作を説明するためのフローチャートである。 実施の形態1にかかるキャッシュメモリ装置の動作を説明するための図である。 実施の形態1にかかるキャッシュメモリ装置の動作を説明するための図である。 実施の形態2にかかるキャッシュメモリ装置を含むマイクロプロセッサシステムを示すブロック図である。 実施の形態3にかかるキャッシュメモリ装置を含むマイクロプロセッサシステムを示すブロック図である。 実施の形態4にかかるキャッシュメモリ装置を含むマイクロプロセッサシステムを示すブロック図である。 実施の形態4にかかるキャッシュメモリ装置の動作を説明するためのフローチャートである。 特許文献1に開示されている技術を説明するための図である。 特許文献1に開示されている技術を説明するための図である。 特許文献1に開示されている技術を説明するための図である。
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステムを示すブロック図である。図1に示すマイクロプロセッサシステム1は、CPU10、メモリ11、キャッシュメモリ12、およびキャッシュ制御回路13を有する。キャッシュ制御回路13は、分岐検出回路16、更新制御回路17、および上限命令数設定回路19を有する。ここで、キャッシュメモリ12とキャッシュ制御回路13は、キャッシュメモリ装置を構成する。
CPU10は、メモリ11、キャッシュメモリ12、および分岐検出回路16に、フェッチアドレス51を出力する。また、CPU10は、メモリ11から出力された命令コード52、およびキャッシュメモリ12から出力された命令コード54を入力し、入力された命令コード52、54を実行する。ここで、命令コード52はメモリ11から出力された命令コードであり、フェッチアドレス51に対応する命令コードがキャッシュメモリ12にキャッシュされていない場合(キャッシュヒットしない場合)に、メモリ11からCPU10に出力される命令コードである。また、命令コード54はキャッシュメモリ12から出力された命令コードであり、フェッチアドレス51に対応する命令コードがキャッシュメモリ12にキャッシュされている場合(キャッシュヒットした場合)に、キャッシュメモリ12からCPU10に出力される命令コードである。
CPU10は、プリフェッチバッファ14を備える。プリフェッチバッファ14は、現在実行している命令の次のアドレス以降の命令コードを、予めフリップフロップ等に格納することができる。CPU10に供給される命令コード52、54は、一時的にプリフェッチバッファ14に格納された後、CPU10において実行される。また、CPU10にはメモリ11から命令コード格納イネーブル信号53が供給される。命令コード格納イネーブル信号53は、メモリ11から有効な命令コード52が出力されたことを示す信号である。プリフェッチバッファ14は、メモリ11から命令コード格納イネーブル信号53が出力されたタイミングで、命令コード52を格納する。
メモリ11は、例えば比較的低速なメモリであるDRAM(Dynamic Random Access Memory)等で構成することができる。メモリ11には、フェッチアドレスに対応づけて命令コードが格納されている。メモリ11は、CPU10から出力されたフェッチアドレス51に対応した命令コード52をCPU10およびキャッシュメモリ12に出力する。また、メモリ11は、メモリ11から有効な命令コード52が出力されたことを示す命令コード格納イネーブル信号53を、CPU10、キャッシュメモリ12、および更新制御回路17に出力する。
分岐検出回路16は、CPU10から出力されたフェッチアドレス51を監視し、当該フェッチアドレス51がサブルーチンへの分岐を示す場合、更新制御回路17に分岐通知信号55を出力する。具体的には、分岐検出回路16は、CPU10から出力されたフェッチアドレス51が連続するアドレスから連続しないアドレスに変化した場合に、フェッチアドレス51がサブルーチンへ分岐したと判断する。
上限命令数設定回路19は、キャッシュメモリ12に格納される命令コード数の上限を設定するための回路である。上限命令数設定回路19は、設定された上限命令数を示す上限命令数信号56を更新制御回路17に出力する。例えば、上限命令数設定回路19はレジスタ(不図示)を備え、このレジスタに上限命令数に対応する情報を格納することができる。ユーザは、外部からこのレジスタにアクセスして上限命令数を設定することができる。
更新制御回路17は、キャッシュメモリ12におけるキャッシュの開始と停止を指示するための回路である。更新制御回路17は、分岐検出回路16から出力された分岐通知信号55と上限命令数設定回路19から出力された上限命令数信号56とを入力し、キャッシュメモリ12にキャッシュ開始通知信号57、キャッシュ停止通知信号58、および有効フラグビットリセット信号59を出力する。ここで、キャッシュ開始通知信号57は、キャッシュメモリ12が命令コード52をキャッシュし始めるタイミングを通知する信号である。また、キャッシュ停止通知信号58は、キャッシュメモリ12における命令コード52のキャッシュの終了を通知する信号である。有効フラグビットリセット信号59は、キャッシュメモリ12の有効フラグビット15をリセットするための信号である。
また、更新制御回路17はカウンタ18を備える。カウンタ18は、サブルーチンの命令数をカウントする回路である。カウンタ18は、メモリ11から命令コード格納イネーブル信号53が出力される毎にカウンタ値をインクリメントする。すなわち、命令コード格納イネーブル信号53は、メモリ11から有効な命令コード52が出力されたことを示す信号であり、キャッシュメモリ12は命令コード格納イネーブル信号53が出力される毎にキャッシュメモリ12に命令コード52を格納する。よって、カウンタ18に命令コード格納イネーブル信号53が供給される毎にカウンタ値をインクリメントすることで、キャッシュメモリ12に格納される命令コードの数をカウントすることができる。そして、更新制御回路17は、上限命令数信号56が示す上限命令数とカウンタ値とを比較し、カウンタ値が上限命令数を超えた場合に、キャッシュメモリ12に有効フラグビットリセット信号59を出力する。
キャッシュメモリ12は、メモリ11よりも高速に動作可能なメモリで構成されている。例えば、キャッシュメモリ12には高速に動作するSRAM(Static Random Access Memory)を用いることができる。キャッシュメモリ12は、更新制御回路17から出力されたキャッシュ開始通知信号57、キャッシュ停止通知信号58、および有効フラグビットリセット信号59、並びに、CPU10から出力されたフェッチアドレス51、メモリ11から出力された命令コード52および命令コード格納イネーブル信号53を入力し、CPU10に命令コード54を出力する。
キャッシュメモリ12は、CPU10から出力されたフェッチアドレス51に対応した命令コードをキャッシュする。すなわち、キャッシュメモリ12は、更新制御回路17からキャッシュ開始通知信号56が供給されると、命令コード格納イネーブル信号53が供給される毎にメモリ11から出力された命令コード52を、フェッチアドレス51と対応づけてキャッシュする。また、キャッシュメモリ12は、更新制御回路17からキャッシュ停止通知信号57が供給されると、命令コード52のキャッシュを停止する。
また、キャッシュメモリ12は、命令コードが格納されるメモリセル毎に設けられた有効フラグビット(有効フラグ)15を備えている。有効フラグビット15は、キャッシュされた各々の命令コードが有効であるか否かを示すフラグである。キャッシュメモリ12に命令コードがキャッシュされる際、有効フラグビット15は有効とされる(例えば、有効を示す有効フラグビット15の論理値を"1"とする)。そして、キャッシュされた命令コードの数(つまり、カウンタ18の値)が予め設定された上限数(つまり、上限命令数設定回路19で設定された上限命令数)を超えた場合、キャッシュされた命令コードの有効フラグビット15は無効とされる(例えば、無効を示す有効フラグビット15の論理値を"0"とする)。有効フラグビット15を無効とする場合、更新制御回路17はキャッシュメモリ12に有効フラグビットリセット信号59を出力する。一方、キャッシュされた命令コードの数が予め設定された上限数以下である場合、キャッシュされた命令コードの有効フラグビット15は有効("1")のままとなる。
換言すると、フェッチアドレスがサブルーチンへの分岐を示す場合、サブルーチンに対応する命令コードがキャッシュメモリ12へのキャッシュ対象とされ、キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、キャッシュ対象とされた命令コードが無効とされる。
なお、キャッシュメモリ12に命令コードが新たにキャッシュされる場合、有効フラグビット15が無効("0")となっているメモリセルに命令コードをキャッシュすることができる。また、キャッシュメモリ12の容量が一杯となった場合は、最後に使用されてから最も長く時間が経過した命令コードを、新たにキャッシュする命令コードで上書きしてもよい。また、使用頻度の低い命令コードから順に上書きしてもよい。なお、上書きしたくない命令コードについては、有効フラグビット15を有効("1")に固定することで、上書きを禁止することができる。
次に、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム1の動作について説明する。図2は、図1に示すキャッシュメモリ装置の動作を説明するためのフローチャートである。図3、図4は、図1に示すキャッシュメモリ装置の動作を説明するための図であり、命令コードがキャッシュされるキャッシュメモリ12のメモリセルと有効フラグビットの状態を示している。図3、図4に示すように、有効フラグビットは、各メモリセルに対応するように設けられている。
まず、CPU10は、命令コードをメモリ11から読み出すために、フェッチアドレス51をメモリ11に出力し始める(ステップS1)。分岐検出回路16は、CPU10から出力されたフェッチアドレス51を監視し、フェッチアドレス51がサブルーチンへの分岐を示す場合(ステップS2:Yes)、更新制御回路17に分岐通知信号55を出力する。例えば、分岐検出回路16は、CPU10から出力されたフェッチアドレス51が連続するアドレスから連続しないアドレスに変化した場合に、プログラムがサブルーチンへ分岐したと判断する。なお、分岐検出回路16は、フェッチアドレス51がサブルーチンへの分岐を示さない場合(ステップS2:No)、CPU10から出力されたフェッチアドレス51の監視を継続する。
更新制御回路17は、分岐検出回路16から分岐通知信号55が供給されると、キャッシュ開始通知信号57をキャッシュメモリ12に出力する。これにより、キャッシュメモリ12は、命令コード52のキャッシュを開始する。
一方、メモリ11は、フェッチアドレス51が供給されると、このフェッチアドレス51に対応した命令コード52を、CPU10のプリフェッチバッファ14およびキャッシュメモリ12に出力する。また、メモリ11は、メモリ11から有効な命令コード52が出力されたことを示す命令コード格納イネーブル信号53を、CPU10のプリフェッチバッファ14、キャッシュメモリ12、および更新制御回路17に出力する。なお、図2に示す動作例では、フェッチアドレス51に対応する命令コードがキャッシュメモリ12にキャッシュされていない場合(つまり、キャッシュヒットしない場合)を示している。
CPU10のプリフェッチバッファ14は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をプリフェッチバッファ14に格納する。
また、キャッシュメモリ12は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をキャッシュメモリ12のメモリセルにキャッシュする(ステップS3)。このとき、キャッシュメモリ12は、命令コード52を格納したメモリセルに対応する有効フラグビット15の論理値を"1"に更新する(ステップS4)。すなわち、キャッシュメモリ12に格納された命令コード52を有効とする。
例えば、有効フラグビット15は、メモリセルに有効な命令コードが格納されている場合は"1"、有効な命令コードが格納されていない場合は"0"となる。そして、次のサブルーチンの命令コードが格納される場合は、有効フラグビット15が"0"となっているメモリセルに格納される。
また、更新制御回路17のカウンタ18は、メモリ11から命令コード格納イネーブル信号53が供給されると、カウンタ値をインクリメントする(ステップS5)。そして、更新制御回路17は、上限命令数信号56によって設定された命令コードの上限数と、カウンタ18の値(キャッシュメモリ12に格納された命令コードの数に対応)とを比較し、カウンタ18の値が命令コードの上限数を超えたか否か判断する(ステップS6)。
カウンタ18の値が命令コードの上限数を超えていない場合(つまり、カウンタ18の値が命令コードの上限数以下である場合、ステップS6:No)、キャッシュされた命令コードの有効フラグビットを有効("1")のままとする。そして、分岐検出回路16を用いてCPU10から出力された次のフェッチアドレス51を監視し、フェッチアドレス51が新たなサブルーチンへの分岐を示さない場合(ステップS7:No)、ステップS3以降の動作を繰り返す。一方、CPU10から出力された次のフェッチアドレス51が新たなサブルーチンへの分岐を示す場合(ステップS7:Yes)、カウンタ18の値をリセットした後(ステップS8)、ステップS3以降の動作を繰り返す。
また、カウンタ18の値が命令コードの上限数を超えた場合(ステップS6:Yes)、最後にキャッシュした命令コードを含むサブルーチンの全ての命令コードの有効フラグビットを無効("0")とする(ステップS9)。すなわち、更新制御回路17は、カウンタ18の値が上限命令数信号56によって設定された命令コードの上限数を超えた場合(ステップS6:Yes)、キャッシュメモリ12に有効フラグビットリセット信号59を出力し、最後にキャッシュした命令コードを含むサブルーチンの全ての命令コードの有効フラグビットを無効("0")とする。また、更新制御回路17は、キャッシュメモリ12が命令コード52をキャッシュすることを停止するために、キャッシュメモリ12にキャッシュ停止通知信号58を出力する。その後、ステップS2以降の動作を繰り返す。
上記のステップS1〜S8の動作について、図3を用いて具体的に説明する。ここで、図3に示す例では、上限命令数設定回路19で設定された命令コードの上限数を4としている。また、図3のタイミングt1〜t7のそれぞれは、CPU10からフェッチアドレス51が出力され、キャッシュメモリ12にフェッチアドレス51に対応した命令コード52がキャッシュされるタイミングに対応している。すなわち、図3のタイミングt1〜t7毎に、ステップS3〜S6を含む処理が1回実施されている。
図3に示す例では、サブルーチンAに対応する命令コードA1〜A4、およびサブルーチンBに対応する命令コードB1〜B3がキャッシュメモリ12のメモリセルに格納される場合を示している。なお、命令コードA1〜A4に対応するフェッチアドレスをadd_A1〜add_A4とし、命令コードB1〜B3に対応するフェッチアドレスをadd_B1〜add_B3とする。
まず、タイミングt1における動作について説明する。サブルーチンAに対応するフェッチアドレスadd_A1がCPU10から出力されると、分岐検出回路16は分岐を検出し、更新制御回路17に分岐通知信号55を出力する(ステップS2:Yes)。その後、キャッシュメモリ12は、更新制御回路17からキャッシュ開始通知信号57が供給され、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスadd_A1に対応する命令コードA1をメモリセルに格納する(ステップS3)。このとき、命令コードA1は、有効フラグビットの論理値が"0"のメモリセルに格納される。命令コードA1がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は"1"に更新される(ステップS4)。その後、ステップS5、S6を経て、ステップS7へと至る。
タイミングt2におけるフェッチアドレスadd_A2は、サブルーチンAにおけるフェッチアドレスであるので、ステップS7において、分岐はないと判断される(ステップS7:No)。そして、キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスadd_A2に対応する命令コードA2をメモリセルに格納する(ステップS3)。命令コードA2がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は"1"に更新される(ステップS4)。その後、ステップS5、S6を経て、ステップS7へと至る。
以降、タイミングt3、t4についても同様の動作となる。なお、タイミングt4では、カウンタ18の値が4であり、上限命令数設定回路19で設定された命令コードの上限数である4を超えていないので(ステップS6:No)、ステップS7へと進む。
そして、タイミングt5において、新たにサブルーチンBのフェッチアドレスadd_B1がCPU10から出力されると、分岐検出回路16は分岐を検出し、更新制御回路17に分岐通知信号55を出力する(ステップS7:Yes)。更新制御回路17は、分岐検出回路16が分岐を検出したので、カウンタ18の値をリセットする(ステップS8)。キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスadd_B1に対応する命令コードB1をメモリセルに格納する(ステップS3)。命令コードB1がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は"1"に更新される(ステップS4)。その後、ステップS5、S6を経て、ステップS7へと至る。
以降、タイミングt6、t7についても同様の動作となる。なお、タイミングt7では、カウンタ18の値が3であり、上限命令数設定回路19で設定された命令コードの上限数である4を超えていないので、ステップS7へと進む。
次に、上記のステップS1〜S7、S9の動作(つまり、ステップS9(有効フラグビットのリセット)を含む動作)について、図4を用いて具体的に説明する。ここで、図4に示す例では、上限命令数設定回路19で設定された命令コードの上限数を4としている。また、図4のタイミングt1〜t12のそれぞれは、CPU10からフェッチアドレス51が出力され、キャッシュメモリ12にフェッチアドレス51に対応した命令コード52がキャッシュされるタイミングに対応している。すなわち、図4のタイミングt1〜t12毎に、ステップS3〜S6を含む処理が1回実施されている。
図4に示す例では、サブルーチンAに対応する命令コードA1〜A4、サブルーチンBに対応する命令コードB1〜B3がキャッシュメモリ12のメモリセルに格納された場合、およびサブルーチンCに対応する命令コードC1〜C5が一度キャッシュメモリ12のメモリセルに格納された後、無効とされた場合を示している。なお、図4のタイミングt1〜t7の動作は図3に示した動作と同様であるので、重複した説明は省略する。
タイミングt8において、新たにサブルーチンCのフェッチアドレスadd_C1がCPU10から出力されると、分岐検出回路16は分岐を検出し、更新制御回路17に分岐通知信号55を出力する(ステップS7:Yes)。更新制御回路17は、分岐検出回路16が分岐を検出したので、カウンタ18の値をリセットする(ステップS8)。キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスadd_C1に対応する命令コードC1をメモリセルに格納する(ステップS3)。命令コードC1がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は"1"に更新される(ステップS4)。その後、ステップS5、S6を経て、ステップS7へと至る。以降、タイミングt9〜t11についても同様の動作となる。
タイミングt12におけるフェッチアドレスadd_C5は、サブルーチンCにおけるフェッチアドレスであるので、ステップS7において、分岐はないと判断される(ステップS7:No)。そして、キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスadd_C5に対応する命令コードC5をメモリセルに格納する(ステップS3)。命令コードC5がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は"1"に更新される(ステップS4)。
また、更新制御回路17のカウンタ18はインクリメントされて(ステップS5)、カウント値が5となる。更新制御回路17は、上限命令数信号56によって設定された命令コードの上限数である4と、カウンタ18の値である5とを比較する。この場合、カウンタ18の値が命令コードの上限数を超えているので(ステップS6:Yes)、サブルーチンCの全ての命令コードC1〜C5の有効フラグビットをリセット、つまり無効("0")とする(ステップS9)。すなわち、図4に示すように、命令コードC1〜C5が格納されているメモリセルに対応する有効フラグビットの値を、"1"から"0"に更新する。これにより、メモリセルに格納されている命令コードC1〜C5が無効とされ、以降、新たに命令コードが格納される際は、命令コードC1〜C5が格納されていたメモリセルに新たな命令コードが上書きされる。
背景技術で説明したように、マイクロプロセッサシステムでは、低速メモリから命令をフェッチする際の性能低下を防ぐために、プリフェッチバッファやキャッシュメモリ装置が用いられている。ここで、プリフェッチバッファは、現在実行している命令の次のアドレス以降の命令コードを予めフリップフロップ等に格納することができる。これにより、通常の命令の実行時にメモリから命令コードを読み出す際、メモリの読み出し速度が遅いことに起因する性能の低下を防ぐことができる。また、キャッシュメモリ装置は、使用頻度の高い命令コードを予めRAMに格納することができる。これにより、主にサブルーチンへの分岐時にメモリから命令コードを読み出す際、メモリの読み出し速度が遅いことに起因する性能の低下を防ぐことができる。
例えば、2クロックに1回フェッチ可能なメモリ(フェッチレイテンシ=2)が、バス幅64ビットでCPUと接続されているとする。CPUが1クロック毎に32ビットの命令を実行可能な場合、CPUが命令を2クロック分(つまり、64ビット)実行すると同時に、次のアドレスの命令(つまり、64ビットの命令)がプリフェッチバッファに格納されるため、フェッチレイテンシの遅さを隠蔽できる。
しかしながら、プログラムの分岐が発生した場合は、プリフェッチバッファを用いたとしても、性能低下のペナルティを受けることになる。この理由は、プリフェッチバッファに格納されている先読みした命令コードが分岐の発生により使用されなくなるため、これらの命令コードを破棄し、改めて命令コードをフェッチするする必要があるからである。このとき、分岐により受けるペナルティの程度は、分岐後のサブルーチンの命令コードの数によって異なる。
命令コードの数が多いサブルーチン(例えば、100命令とする)を実行する場合は、最初に分岐によるペナルティを受けるが、その後はプリフェッチバッファに命令コードが格納されることで、フェッチレイテンシの遅さを隠蔽することができる。よって、確実にペナルティを受けるのは、例えば100クロックに1回となる。
これに対して、命令コードの数が少ないサブルーチン(例えば、3命令とする)を実行する場合は、最初に分岐によるペナルティを受け、その後、プリフェッチバッファに命令コードが格納される。しかし、この場合は、プリフェッチバッファを用いた効果が出てくる前に、次のサブルーチンへと分岐してしまうため、例えば3クロックに1回の割合と、相当高い割合でペナルティを受けることになる。
すなわち、マイクロプロセッサシステムでは、比較的命令コード数の多いサブルーチンはキャッシュメモリ装置に格納せず、比較的命令コード数の少ないサブルーチンの命令コードのみをキャッシュメモリ装置に格納することで、ペナルティを受ける確率を減らすことができ、少ないコストでマイクロプロセッサシステムのパフォーマンスを向上させることができる。
しかしながら、特許文献1に開示されているマイクロプロセッサシステムでは、サブルーチンに含まれる命令の数を考慮せずに、サブルーチンに含まれる命令をキャッシュメモリにキャッシュしていた。このため、命令コードを効率的にキャッシュすることができないという問題があった。
これに対して本実施の形態にかかるキャッシュメモリ装置では、キャッシュメモリ12にキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。換言すると、本実施の形態にかかるキャッシュメモリ装置では、予め設定された上限数を超える数の命令コードを含むサブルーチンの命令コードは、キャッシュメモリ12にキャッシュされない。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリ12にキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。
通常、マイクロプロセッサシステムを制御するプログラムには、様々なタスクを実行するサブルーチンが存在する。例えば、組み込み系のマイクロプロセッサシステムでは、周辺機器からの割り込み信号を待つために同一の番地でループするようなサブルーチンや、一定時間経過するのを待つために、カウンタに所定の値をセットしてデクリメントしながらループし、0になったらループを抜けるようなサブルーチンなど、短いサブルーチンが多く存在する。本実施の形態にかかるキャッシュメモリ装置は、このように短いサブルーチンが多く存在するプログラムを実行するマイクロプロセッサシステムに用いることで、特に効果を発揮することができる。
また、上限命令数設定回路19で設定される命令コードの上限数は、任意に設定可能であるが、少ないメモリ容量でキャッシュメモリ装置の性能を向上させるためには、メモリ11のフェッチレイテンシ分のクロック数を待つ間にCPU10が実行可能な数の命令コードを、キャッシュメモリ12に保持していればよい。ここで、メモリ11のフェッチレイテンシとは、CPU10がフェッチアドレス51を出力してから、メモリ11が命令コード52を出力するまでのクロック数である。すなわち、命令コードの上限数=(メモリ11のフェッチレイテンシ)/(1命令コードを実行するのに必要なクロック数)で求められる命令コードの上限数が、少ないメモリ容量でマイクロプロセッサシステムの性能を向上させる最も効率のよい設定値となる。
以上で説明したように、本実施の形態にかかる発明により、命令コードを効率的にキャッシュすることが可能なキャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステムを提供することができる。
<実施の形態2>
次に、本発明の実施の形態2について説明する。図5は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム2を示すブロック図である。図5に示すマイクロプロセッサシステム2は、CPU20、メモリ11、キャッシュメモリ12、およびキャッシュ制御回路23を有する。キャッシュ制御回路23は、更新制御回路17および上限命令数設定回路19を有する。ここで、キャッシュメモリ12とキャッシュ制御回路23は、キャッシュメモリ装置を構成する。
本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム2では、図1に示した分岐検出回路16を備えていない点が、実施の形態1にかかるマイクロプロセッサシステム1と異なる。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
図5に示すように、CPU20は、メモリ11およびキャッシュメモリ12にフェッチアドレス51を出力する。また、CPU20は、メモリ11から出力された命令コード52、およびキャッシュメモリ12から出力された命令コード54を入力し、入力された命令コード52、54を実行する。
また、CPU20は、更新制御回路17に分岐通知信号64を出力する。ここで、分岐通知信号64は、CPU20から出力されたフェッチアドレス51がサブルーチンへの分岐を示す場合に、更新制御回路17にサブルーチンへの分岐を通知するための信号である。CPU20は、自身の命令処理により分岐するため、更新制御回路17に分岐通知信号64を出力することができる。ここで、更新制御回路17に供給される分岐通知信号64は、実施の形態1にかかるマイクロプロセッサシステム1の更新制御回路17に供給される分岐通知信号55に対応している。
このように、本実施の形態にかかるマイクロプロセッサシステム2では、図2に示したステップS2、S7における分岐の検出をCPU20で実施している。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、重複した説明は省略する。
本実施の形態にかかるマイクロプロセッサシステム2では、実施の形態1にかかるマイクロプロセッサシステム1で用いていた分岐検出回路16を省略することができるので、キャッシュ制御回路を簡素化することができる。
<実施の形態3>
次に、本発明の実施の形態3について説明する。図6は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム3を示すブロック図である。図6に示すマイクロプロセッサシステム3は、CPU30、メモリ31、キャッシュメモリ12、およびキャッシュ制御回路33を有する。キャッシュ制御回路33は、分岐検出回路16、更新制御回路17、および上限命令数設定回路39を有する。ここで、キャッシュメモリ12とキャッシュ制御回路33は、キャッシュメモリ装置を構成する。
本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム3では、上限命令数設定回路39が、CPU30から出力されたクロック数情報71とメモリ31から出力されたレイテンシ情報72とを用いて上限命令数を決定している点が、図1に示した実施の形態1にかかるマイクロプロセッサシステム1と異なる。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
CPU30は、上限命令数設定回路39にクロック数情報71を出力する。クロック数情報71はCPU30が1命令コードを実行するのに必要なクロック数に関する情報である。このクロック数情報71は、CPU30が備えるレジスタ(不図示)に予め格納しておいてもよい。CPU30のこれ以外の構成および動作は、実施の形態1にかかるマイクロプロセッサ1のCPU10と同様であるので、重複した説明は省略する。
メモリ31は、上限命令数設定回路39にレイテンシ情報72を出力する。レイテンシ情報72は、メモリ11のフェッチレイテンシに関する情報である。メモリ31のフェッチレイテンシは、CPU30がフェッチアドレス51を出力してから、メモリ30が命令コード52を出力するまでのクロック数に対応している。このレイテンシ情報72は、メモリ31が備えるレジスタ(不図示)に予め格納しておいてもよい。メモリ31のこれ以外の構成および動作は、実施の形態1にかかるマイクロプロセッサ1のメモリ11と同様であるので、重複した説明は省略する。
上限命令数設定回路39は、CPU30から出力されたクロック数情報71とメモリ31から出力されたレイテンシ情報72とを用いて、キャッシュメモリ12に格納される命令コードの上限数を設定する。上限命令数設定回路39で設定される命令コードの上限数は任意に設定可能であるが、少ないメモリ容量でキャッシュメモリ装置の性能を向上させるためには、メモリ31のフェッチレイテンシ分のクロック数を待つ間に、CPU30が実行する命令コード数をキャッシュメモリ12が保持していればよい。すなわち、命令コードの上限数=(メモリ31のフェッチレイテンシ)/(1命令コードを実行するのに必要なクロック数)で求められる命令コードの上限数が、少ないメモリ容量でキャッシュメモリ装置の性能を向上させる最も効率のよい設定値となる。
上限命令数設定回路39は、設定された命令コードの上限数を示す上限命令数信号74を更新制御回路17に出力する。ここで、更新制御回路17に供給される上限命令数信号74は、実施の形態1にかかるマイクロプロセッサシステム1の更新制御回路17に供給される上限命令数信号56に対応している。
本実施の形態にかかるマイクロプロセッサシステム2では、上限命令数設定回路39において、CPU30から出力されたクロック数情報71とメモリ31から出力されたレイテンシ情報72とを用いて、キャッシュメモリ12に格納される命令コードの上限数を設定することができる。よって、使用するCPU30やメモリ31に応じて、命令コードの上限数をユーザが設定することなく自動的に設定することができる。
<実施の形態4>
次に、本発明の実施の形態4について説明する。図7は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4を示すブロック図である。図7に示すマイクロプロセッサシステム4は、CPU10、メモリ11、キャッシュメモリ42、およびキャッシュ制御回路43を有する。キャッシュ制御回路43は、分岐検出回路16、更新制御回路17、上限命令数設定回路19、およびバッファ45を有する。ここで、キャッシュメモリ42とキャッシュ制御回路43は、キャッシュメモリ装置を構成する。
本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4では、キャッシュ制御回路43にバッファ45を設け、このバッファ45にメモリ11から出力された命令コード52を一時的に格納し、キャッシュメモリ42に転送している点が、図1に示した実施の形態1にかかるマイクロプロセッサシステム1と異なる。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
キャッシュメモリ42は、CPU10から出力されたフェッチアドレス51、更新制御回路17から出力された転送イネーブル信号81、およびバッファ45から出力されたキャッシュ対象命令コード82を入力し、CPU10に命令コード54を出力する。キャッシュメモリ42には、バッファ45に一時的に格納されていた命令コード(キャッシュ対象命令コード82)が転送される。
バッファ45は、メモリ11から出力された命令コード52を一時的に格納し、その後、キャッシュメモリ42に転送する。バッファ45は、メモリ11から出力された命令コード52および命令コード格納イネーブル信号53、並びに、更新制御回路17から出力されたキャッシュ開始通知信号57、キャッシュ停止通知信号58、および有効フラグビットリセット信号59を入力し、キャッシュメモリ42にキャッシュ対象命令コード82を出力する。また、バッファ45は、命令コードが格納されるメモリセル毎に設けられた有効フラグビット48を備えている。
また、バッファ45に格納された命令コードの数(つまり、カウンタ18の値)が予め設定された上限数(つまり、上限命令数設定回路19で設定された上限命令数)を超えた場合、バッファに格納された命令コードの有効フラグビット48は無効とされる(例えば、無効を示す有効フラグビットの論理値を"0"とする)。有効フラグビット48を無効とする場合、更新制御回路17はバッファ45に有効フラグビットリセット信号59を出力する。一方、バッファに格納された命令コードの数が予め設定された上限数以下である場合、バッファに格納された命令コードの有効フラグビット48は有効("1")のままとなる。そして、バッファに格納された命令コードの数が予め設定された上限数以下の状態で、分岐検出回路16がサブルーチンへの分岐を検出した場合、バッファ45はキャッシュメモリ42に対して、一時的に格納していた命令コード(キャッシュ対象命令コード82)を転送する。このとき、転送イネーブル信号81はアクティブとなる。
次に、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4の動作について説明する。図8は、図7に示すキャッシュメモリ装置の動作を説明するためのフローチャートである。本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4の動作は、命令コードがバッファ45に一時的に格納される点(ステップS3')、バッファ45からキャッシュメモリ42に命令コードが転送される点(ステップS10)以外は、図2に示した実施の形態1にかかるマイクロプロセッサシステム1の動作と同様である。
まず、CPU10は、命令コードをメモリ11から読み出すために、フェッチアドレス51をメモリ11に出力し始める(ステップS1)。分岐検出回路16は、CPU10から出力されたフェッチアドレス51を監視し、フェッチアドレス51がサブルーチンへの分岐を示す場合(ステップS2:Yes)、更新制御回路17に分岐通知信号55を出力する。例えば、分岐検出回路16は、CPU10から出力されたフェッチアドレス51が連続するアドレスから連続しないアドレスに変化した場合に、プログラムがサブルーチンへ分岐したと判断する。なお、分岐検出回路16は、フェッチアドレス51がサブルーチンへの分岐を示さない場合(ステップS2:No)、CPU10から出力されたフェッチアドレス51の監視を継続する。
更新制御回路17は、分岐検出回路16から分岐通知信号55が供給されると、キャッシュ開始通知信号57をバッファ45に出力する。これにより、バッファ45は、命令コード52の格納を開始する。
一方、メモリ11は、フェッチアドレス51が供給されると、このフェッチアドレス51に対応した命令コード52を、CPU10のプリフェッチバッファ14およびバッファ45に出力する。また、メモリ11は、メモリ11から有効な命令コード52が出力されたことを示す命令コード格納イネーブル信号53を、CPU10のプリフェッチバッファ14、バッファ45、および更新制御回路17に出力する。なお、図8に示す動作例では、フェッチアドレス51に対応する命令コードがキャッシュメモリ42にキャッシュされていない場合(つまり、キャッシュヒットしない場合)を示している。
CPU10のプリフェッチバッファ14は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をプリフェッチバッファ14に格納する。
また、バッファ45は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をバッファ45に格納する(ステップS3')。このとき、バッファ45は、命令コード52を格納したメモリセルに対応する有効フラグビット48の論理値を"1"に更新する(ステップS4)。すなわち、バッファ45に格納された命令コード52を有効とする。
例えば、有効フラグビット48は、メモリセルに有効な命令コードが格納されている場合は"1"、有効な命令コードが格納されていない場合は"0"となる。そして、次のサブルーチンの命令コードが格納される場合は、有効フラグビット48が"0"となっているメモリセルに格納される。
また、更新制御回路17のカウンタ18は、メモリ11から命令コード格納イネーブル信号53が供給されると、カウンタ値をインクリメントする(ステップS5)。そして、更新制御回路17は、上限命令数信号56によって設定された命令コードの上限数と、カウンタ18の値(バッファ45に格納された命令コードの数に対応)とを比較し、カウンタ18の値が命令コードの上限数を超えたか否か判断する(ステップS6)。
カウンタ18の値が命令コードの上限数を超えていない場合(つまり、カウンタ18の値が命令コードの上限数以下である場合、ステップS6:No)、格納された命令コードの有効フラグビット48を有効("1")のままとする。そして、分岐検出回路16を用いてCPU10から出力された次のフェッチアドレス51を監視し、フェッチアドレス51が新たなサブルーチンへの分岐を示さない場合(ステップS7:No)、ステップS3'以降の動作を繰り返す。一方、CPU10から出力された次のフェッチアドレス51が新たなサブルーチンへの分岐を示す場合(ステップS7:Yes)、カウンタ18の値をリセットする(ステップS8)。そして、バッファ45はキャッシュメモリ42に対して、一時的に格納していた命令コード(キャッシュ対象命令コード82)を転送する(ステップS10)。このとき、転送イネーブル信号81はアクティブとなる。その後、ステップS3'以降の動作を繰り返す。
また、カウンタ18の値が命令コードの上限数を超えた場合(ステップS6:Yes)、最後にバッファ45に格納した命令コードを含むサブルーチンの全ての命令コードの有効フラグビット48を無効("0")とする(ステップS9)。すなわち、更新制御回路17は、カウンタ18の値が上限命令数信号56によって設定された命令コードの上限数を超えた場合(ステップS6:Yes)、バッファ45に有効フラグビットリセット信号59を出力し、最後に格納した命令コードを含むサブルーチンの全ての命令コードの有効フラグビット48を無効("0")とする。また、更新制御回路17は、バッファ45が命令コード52を格納することを停止するために、バッファ45にキャッシュ停止通知信号58を出力する。その後、ステップS2以降の動作を繰り返す。
このように、本実施の形態にかかるマイクロプロセッサシステム4では、一時的に命令コードを格納することができるバッファ45を設け、このバッファ45に有効フラグビット48を設けている。そして、バッファ45に格納された命令コードの数が予め設定された上限数以下である場合に、バッファ45に一時的に格納されていた命令コードがキャッシュメモリ42に転送される。よって、キャッシュメモリ42に有効フラグビットを設ける必要がないため、キャッシュメモリの構成を簡素化することができる。
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
1 マイクロプロセッサシステム
10 CPU
11 メモリ
12 キャッシュメモリ
13 キャッシュ制御回路
14 フェッチバッファ
15 有効フラグビット
16 分岐検出回路
17 更新制御回路
18 カウンタ
19 上限命令数設定回路
51 フェッチアドレス
52、54 命令コード
53 命令コード格納イネーブル信号
55 分岐通知信号
56 上限命令数信号
57 キャッシュ開始通知信号
58 キャッシュ停止通知信号
59 有効フラグビットリセット信号

Claims (15)

  1. フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、
    前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備え、
    前記キャッシュ制御回路は、
    前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、
    前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする、
    キャッシュメモリ装置。
  2. 前記キャッシュ制御回路は、
    前記フェッチアドレスがサブルーチンへの分岐を示す場合、前記キャッシュメモリに前記サブルーチンに対応する命令コードをキャッシュし、
    前記キャッシュされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュされた命令コードを無効にする、
    請求項1に記載のキャッシュメモリ装置。
  3. 前記キャッシュメモリは、前記命令コードが格納されるメモリセル毎に設けられ、前記キャッシュされた各々の命令コードが有効であるか否かを示す有効フラグを保持可能に構成され、
    前記キャッシュメモリに前記サブルーチンに対応する命令コードがキャッシュされる際に前記有効フラグが有効とされ、
    前記キャッシュされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュされた命令コードの有効フラグが無効とされる、
    請求項2に記載のキャッシュメモリ装置。
  4. 前記キャッシュメモリに前記命令コードがキャッシュされる場合、前記有効フラグが無効となっているメモリセルに前記命令コードがキャッシュされる、
    請求項3に記載のキャッシュメモリ装置。
  5. 前記キャッシュ制御回路は、前記フェッチアドレスに対応した命令コードを一時的に保持可能なバッファを備え、
    前記キャッシュ制御回路は、
    前記フェッチアドレスがサブルーチンへの分岐を示す場合、前記バッファに前記サブルーチンに対応する命令コードを保持し、
    あるサブルーチンへの分岐が示された後で、前記バッファに保持された前記あるサブルーチンへの分岐後の命令コードの数が予め設定された上限数を超える前に、新たなサブルーチンへの分岐が示された場合に、前記バッファに保持されている前記あるサブルーチンへの分岐後の命令コードを前記キャッシュメモリに転送し、
    あるサブルーチンへの分岐が示された後で、前記バッファに保持された前記あるサブルーチンへの分岐後の命令コードの数が予め設定された上限数を超えた場合に、前記バッファに保持されている前記あるサブルーチンへの分岐後の命令コードを無効にする、
    請求項1に記載のキャッシュメモリ装置。
  6. 前記バッファは、前記命令コードが格納されるメモリセル毎に設けられ、前記格納された各々の命令コードが有効であるか否かを示す有効フラグを保持可能に構成され、
    前記バッファに前記サブルーチンに対応する命令コードが保持される際に前記有効フラグが有効とされ、
    前記保持された命令コードの数が予め設定された上限数を超えた場合、前記保持された命令コードの有効フラグが無効とされる、
    請求項5に記載のキャッシュメモリ装置。
  7. 前記バッファに前記命令コードが保持される場合、前記有効フラグが無効となっているメモリセルに前記命令コードが保持される、
    請求項6に記載のキャッシュメモリ装置。
  8. 前記命令コードの予め設定された上限数は、CPUがメモリにフェッチアドレスを出力してから前記メモリが前記命令コードを出力するまでのクロック数を、前記CPUが一つの命令コードを実行する際に必要なクロック数で除算した数である、請求項1乃至7のいずれか一項に記載のキャッシュメモリ装置。
  9. 前記キャッシュ制御回路は、前記キャッシュメモリにおけるキャッシュの開始と停止を指示する更新制御回路を備え、
    前記更新制御回路は、
    前記キャッシュメモリに格納されたサブルーチンの命令コードの数をカウントするカウンタを備え、
    前記命令コードの予め設定された上限数と前記カウンタの値とを比較し、前記カウンタの値が前記命令コードの予め設定された上限数を超えた場合に、前記キャッシュ対象とされた命令コードを無効にする、
    請求項1乃至4のいずれか一項に記載のキャッシュメモリ装置。
  10. 前記キャッシュ制御回路は、前記バッファにおける分岐後の命令コードの保持の開始と停止を指示する更新制御回路を備え、
    前記更新制御回路は、
    前記バッファに保持された分岐後の命令コードの数をカウントするカウンタを備え、
    前記命令コードの予め設定された上限数と前記カウンタの値とを比較し、前記カウンタの値が前記命令コードの予め設定された上限数を超えた場合に、前記キャッシュ対象とされた命令コードを無効にする、
    請求項5乃至7のいずれか一項に記載のキャッシュメモリ装置。
  11. 前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへ分岐したことを検出する分岐検出回路を備える、請求項1乃至10のいずれか一項に記載のキャッシュメモリ装置。
  12. 前記キャッシュ制御回路は、前記フェッチアドレスのサブルーチンへの分岐を示すCPUから出力された分岐通知信号に基づいて、前記フェッチアドレスがサブルーチンへ分岐したと判断する、請求項1乃至10のいずれか一項に記載のキャッシュメモリ装置。
  13. 前記キャッシュ制御回路は、前記命令コードの上限数を設定する上限命令数設定回路を備え、
    前記上限命令数設定回路は、
    CPUから出力された、前記CPUが一つの命令コードを実行する際に必要なクロック数に関するクロック数情報と、メモリから出力された、前記CPUが前記メモリにフェッチアドレスを出力してから前記メモリが前記命令コードを出力するまでのクロック数に関するレイテンシ情報と、に基づき前記命令コードの上限数を設定する、
    請求項1乃至12のいずれか一項に記載のキャッシュメモリ装置。
  14. CPUと、
    前記CPUで実行される命令コードが格納されたメモリと、
    前記CPUから出力されたフェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、
    前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備え、
    前記キャッシュ制御回路は、
    前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、
    前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする、
    マイクロプロセッサシステム。
  15. フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリにおけるキャッシュ制御方法であって、
    前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、
    前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする、
    キャッシュ制御方法。
JP2011240780A 2011-11-02 2011-11-02 キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム Expired - Fee Related JP5793061B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2011240780A JP5793061B2 (ja) 2011-11-02 2011-11-02 キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム
EP12190816.4A EP2590082B1 (en) 2011-11-02 2012-10-31 Cache memory apparatus, cache control method, and microprocessor system
CN201210432095.5A CN103092773B (zh) 2011-11-02 2012-11-02 高速缓存存储器装置、高速缓存控制方法和微处理器系统
US13/668,009 US9317438B2 (en) 2011-11-02 2012-11-02 Cache memory apparatus, cache control method, and microprocessor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011240780A JP5793061B2 (ja) 2011-11-02 2011-11-02 キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2013097638A JP2013097638A (ja) 2013-05-20
JP5793061B2 true JP5793061B2 (ja) 2015-10-14

Family

ID=47088751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011240780A Expired - Fee Related JP5793061B2 (ja) 2011-11-02 2011-11-02 キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム

Country Status (4)

Country Link
US (1) US9317438B2 (ja)
EP (1) EP2590082B1 (ja)
JP (1) JP5793061B2 (ja)
CN (1) CN103092773B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047092B2 (en) * 2012-12-21 2015-06-02 Arm Limited Resource management within a load store unit
US9213491B2 (en) * 2014-03-31 2015-12-15 Intel Corporation Disabling a command associated with a memory device
CN104331962A (zh) * 2014-10-27 2015-02-04 厦门博佳琴电子科技有限公司 一种置物柜指纹识别系统
US10908817B2 (en) * 2017-12-08 2021-02-02 Sandisk Technologies Llc Signal reduction in a microcontroller architecture for non-volatile memory
JP7089423B2 (ja) * 2018-07-12 2022-06-22 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法

Family Cites Families (17)

* 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 デ−タ処理装置
JPS62152043A (ja) * 1985-12-26 1987-07-07 Nec Corp 命令コ−ドアクセス制御方式
US4933837A (en) * 1986-12-01 1990-06-12 Advanced Micro Devices, Inc. Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
DE69128741T2 (de) 1990-05-18 1998-07-16 Koninkl Philips Electronics Nv Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
JPH04333929A (ja) * 1991-05-10 1992-11-20 Toshiba Corp キャッシュメモリ制御方式
JPH05181746A (ja) * 1991-12-26 1993-07-23 Mitsubishi Electric Corp データ処理システム及びメモリ制御方式
JPH07160585A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
US5729713A (en) * 1995-03-27 1998-03-17 Texas Instruments Incorporated Data processing with first level cache bypassing after a data transfer becomes excessively long
US5606682A (en) * 1995-04-07 1997-02-25 Motorola Inc. Data processor with branch target address cache and subroutine return address cache and method of operation
JPH09305490A (ja) 1996-05-17 1997-11-28 Nec Corp マイクロプロセッサシステム
JP2002196981A (ja) * 2000-12-22 2002-07-12 Fujitsu Ltd データ処理装置
JP2004171177A (ja) * 2002-11-19 2004-06-17 Renesas Technology Corp キャッシュシステムおよびキャッシュメモリ制御装置
JP4393317B2 (ja) * 2004-09-06 2010-01-06 富士通マイクロエレクトロニクス株式会社 メモリ制御回路
JP4189402B2 (ja) * 2005-02-21 2008-12-03 パナソニック株式会社 キャッシュ回路
JP4903415B2 (ja) 2005-10-18 2012-03-28 株式会社日立製作所 記憶制御システム及び記憶制御方法
JP2008090492A (ja) * 2006-09-29 2008-04-17 Fujitsu Ltd キャッシュコントローラ、マイクロプロセッサシステム、記憶装置
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム

Also Published As

Publication number Publication date
US9317438B2 (en) 2016-04-19
US20130111140A1 (en) 2013-05-02
JP2013097638A (ja) 2013-05-20
CN103092773A (zh) 2013-05-08
CN103092773B (zh) 2017-10-20
EP2590082B1 (en) 2018-01-17
EP2590082A1 (en) 2013-05-08

Similar Documents

Publication Publication Date Title
US9367472B2 (en) Observation of data in persistent memory
US6978350B2 (en) Methods and apparatus for improving throughput of cache-based embedded processors
US8103832B2 (en) Method and apparatus of prefetching streams of varying prefetch depth
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
US9292447B2 (en) Data cache prefetch controller
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
JP5793061B2 (ja) キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム
US20120226865A1 (en) Network-on-chip system including active memory processor
KR20130041836A (ko) 메모리 디바이스의 전력 소비를 감소시키기 위한 방법 및 시스템
JP6627629B2 (ja) 演算処理装置、および演算処理装置の制御方法
TWI518585B (zh) 具有草稿式記憶體的電子裝置與草稿式記憶體的管理方法
JP2008542880A (ja) 命令の型に応じて構成可能なキャッシュ・システム
US6772326B2 (en) Interruptible and re-entrant cache clean range instruction
US20120124291A1 (en) Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data
US9280476B2 (en) Hardware stream prefetcher with dynamically adjustable stride
US20160210246A1 (en) Instruction cache with access locking
JP6016689B2 (ja) 半導体装置
JP5116275B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP5561374B2 (ja) 情報処理システム
US10649786B2 (en) Reduced stack usage in a multithreaded processor
EP3332329B1 (en) Device and method for prefetching content to a cache memory
JP5828324B2 (ja) マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
JP2000235519A (ja) キャッシュシステムおよびキャッシュ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150519

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150708

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150807

R150 Certificate of patent or registration of utility model

Ref document number: 5793061

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees