JP7468218B2 - 半導体装置およびキャッシュの制御方法 - Google Patents

半導体装置およびキャッシュの制御方法 Download PDF

Info

Publication number
JP7468218B2
JP7468218B2 JP2020125524A JP2020125524A JP7468218B2 JP 7468218 B2 JP7468218 B2 JP 7468218B2 JP 2020125524 A JP2020125524 A JP 2020125524A JP 2020125524 A JP2020125524 A JP 2020125524A JP 7468218 B2 JP7468218 B2 JP 7468218B2
Authority
JP
Japan
Prior art keywords
cache
instruction
cache line
unit
line size
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.)
Active
Application number
JP2020125524A
Other languages
English (en)
Other versions
JP2022021745A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020125524A priority Critical patent/JP7468218B2/ja
Priority to US17/337,048 priority patent/US11442861B2/en
Publication of JP2022021745A publication Critical patent/JP2022021745A/ja
Application granted granted Critical
Publication of JP7468218B2 publication Critical patent/JP7468218B2/ja
Active 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/601Reconfiguration of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、半導体装置およびキャッシュの制御方法に関する。
プロセッサ等の半導体装置は、メインメモリに比べて高速にアクセス可能なキャッシュを有する。キャッシュは、プロセッサコアとメインメモリとの間に配置され、メインメモリに記憶されたデータの一部を保持する。キャッシュに入出力されるデータの単位であるキャッシュラインサイズは、データを効率よくアクセスできるサイズに設定されることが好ましい。例えば、プロセッサが実行するタスクに応じてキャッシュラインサイズを変更可能なキャッシュが知られている(例えば、特許文献1参照)。
特表2006-510992号公報
近時のプロセッサは、性能向上のために、第1キャッシュを有する複数のコアと、複数のコアに共有される第2キャッシュとを有する場合がある。コアで使用するデータがメモリ領域に分散して保持される場合、キャッシュラインサイズを小さくし、キャッシュに登録できるデータの数を増やすことで、キャッシュミスの頻度が下がり、アクセス効率が向上する。一方、コアで使用するデータがメモリ領域の連続した範囲にまとまって保持される場合、キャッシュラインサイズを大きくし、キャッシュへの転送回数を減らすことで、アクセス効率が向上する。しかしながら、第1キャッシュを有する複数のコアと複数のコアに共有される第2キャッシュとを有する半導体装置において、キャッシュラインサイズを切り替えてアクセス効率を向上する手法は提案されていない。
1つの側面では、本発明は、第1キャッシュを有する複数のコアと複数のコアに共有される第2キャッシュとを有する半導体装置において、キャッシュラインサイズを適切に切り替えてアクセス効率を向上することを目的とする。
一つの観点によれば、半導体装置は、命令を実行する命令実行部と、前記命令実行部で使用する命令およびデータの少なくともいずれかを保持する第1キャッシュとをそれぞれ含む複数のコアと、前記複数のコアに共有される第2キャッシュと、前記第1キャッシュおよび前記第2キャッシュのキャッシュラインサイズの切り替えを制御するキャッシュ制御部と、を有し、前記複数のコアの各々は、前記命令実行部が実行する命令の種別毎の完了数を、収集期間内に時間間隔を置いて収集し、前記収集期間の終了時に命令の種別毎の実行頻度を算出する命令収集部と、前記収集期間に前記命令収集部が算出した前記実行頻度に基づいて、前記第1キャッシュでの使用が好ましいキャッシュラインサイズを選択する第1選択部と、を有し、前記キャッシュ制御部は、前記複数のコアの前記第1選択部が選択したキャッシュラインサイズに基づいて、前記第1キャッシュおよび前記第2キャッシュで使用するキャッシュラインサイズを決定する。
1つの側面では、本発明は、第1キャッシュを有する複数のコアと複数のコアに共有される第2キャッシュとを有する半導体装置において、キャッシュラインサイズを適切に切り替えてアクセス効率を向上することができる。
一実施形態における半導体装置の一例を示すブロック図である。 図1のコアグループの一例を示すブロック図である。 図2の命令実行部の一例を示すブロック図である。 図3の命令収集部およびコアCLS選択部の一例を示すブロック図である。 図4のコアCLS選択部の動作の一例を示すフロー図である。 図2のCLSエントリおよびグループCLS選択部の一例を示すブロック図である。 図6のCLSエントリ、Vフラグチェック部、有効コアカウンタ、CLSカウンタおよびCLS選択部の動作の一例を示すフロー図である。 図6のCLS決定部および履歴保持部の動作の一例を示すフロー図である。 図1のCPUのコアグループ毎のキャッシュラインサイズの切り替え動作の一例を示すタイミング図である。
以下、図面を用いて実施形態が説明される。
図1は、一実施形態における半導体装置の一例を示す。図1に示す半導体装置は、例えば、CPU100である。CPU100は、複数のコアグループ200、メモリアクセスコントローラ(MAC)310および通信インタフェース(I/F)320を有する。各コアグループ200は、複数のコア210と、複数のコア210に共有されるLL(Last Level)キャッシュ220とを有する。LLキャッシュ220は、第2キャッシュの一例である。なお、CPU100は、単一のコアグループ200を有してもよい。
各コアグループ200は、メモリアクセスコントローラ310を介して、メモリ400に接続され、通信インタフェース320を介して、入出力装置(I/O)500に接続される。コアグループ200の例は、図2で説明する。例えば、メモリ400は、メインメモリであり、DRAM(Dynamic Random Access Memory)等を含む。例えば、通信インタフェース320は、PCIe(Peripheral Component Interconnect Express)インタフェースである。なお、各コアグループ200は、通信インタフェース320を介して、他のCPU100のコアグループ200に接続されてもよい。
各コアグループ200のLLキャッシュ220は、コア210からのアクセス要求に基づいて、キャッシュのヒットミス判定を行う。LLキャッシュ220は、キャッシュヒット時、ヒットしたアドレスに対応して保持しているキャッシュラインを、アクセス要求の発行元のコア210に出力する。LLキャッシュ220は、キャッシュミス時、メモリアクセスコントローラ310を介してメモリ400にアクセス要求を発行し、メモリ400から転送されるデータ(キャッシュライン)を保持する。LLキャッシュ220は、保持したキャッシュラインのデータのうち、アクセス要求に対応するデータを発行元のコア210に出力する。
図2は、図1のコアグループ200の一例を示す。コアグループ200は、図1に示した複数のコア210およびLLキャッシュ220以外に、CLS(キャッシュラインサイズ)エントリ280およびグループCLS(キャッシュラインサイズ)選択部290を含むキャッシュ制御部270を有する。なお、図2に示す矢印は、キャッシュラインサイズの変更に関連する信号の流れを示し、命令およびデータの流れを示す矢印は示していない。各コア210は、キャッシュ230、命令を実行する命令実行部240、命令収集部250およびコアCLS(キャッシュラインサイズ)選択部260を有する。コアCLS選択部260は、第1選択部の一例である。
キャッシュ230は、例えば、命令実行部240が実行するロード命令に基づくアクセス要求に基づいて、キャッシュのヒットミス判定を行う。キャッシュ230は、キャッシュヒット時、ヒットしたアドレスに対応して保持しているキャッシュライン中のデータを、命令実行部240に出力する。キャッシュ230は、キャッシュミス時、LLキャッシュ220にアクセス要求を発行し、LLキャッシュ220から受信するデータ(キャッシュライン)を保持する。そして、キャッシュ230は、保持したキャッシュライン中のデータを命令実行部240に出力する。キャッシュ230は、第1キャッシュの一例である。この実施形態では、キャッシュ230およびLLキャッシュ220のキャッシュラインサイズは、128B(バイト)または256B(バイト)に設定される。
命令収集部250は、命令実行部240で実行が完了した命令の情報を収集して統計情報を算出し、算出した統計情報をコアCLS選択部260に出力する。コアCLS選択部260は、命令収集部250から受信する統計情報に基づいて、キャッシュ230のキャッシュラインサイズを選択する。コアCLS選択部260は、選択したキャッシュラインサイズを示す情報をCLSエントリ280に出力する。命令収集部250およびコアCLS選択部260の例は、図4に示す。
CLSエントリ280は、複数のコア210のそれぞれに対応する複数のエントリを有し、各コア210のコアCLS選択部260から受信する情報に基づいて、対応するエントリの情報を更新する。グループCLS選択部290は、CLSエントリ280に保持された複数のコア210の情報に基づいて、LLキャッシュ220およびキャッシュ230のキャッシュラインサイズを選択する。そして、グループCLS選択部290は、選択したキャッシュラインサイズをLLキャッシュ220およびキャッシュ230に設定する。CLSエントリ280およびグループCLS選択部290の例は、図6で説明する。
なお、この実施形態は、LLキャッシュ220およびキャッシュ230のキャッシュラインサイズの切り替えに適用する例を説明するが、LLキャッシュ220およびキャッシュ230の間に他の階層のキャッシュが存在する場合にも適用可能である。
図3は、図2の命令実行部240の一例を示す。命令実行部240は、命令フェッチ部241、命令デコード部242、演算実行部243、命令完了部244および資源更新部245を有する。命令フェッチ部241は、プログラムカウンタが示すアドレスを発行し、例えば、キャッシュ230に保持された命令をフェッチし、フェッチした命令を命令デコード部242に供給する。命令デコード部242は、受信した命令をデコードすることにより、実行する命令を判別し、判別した命令を演算実行部243に発行する。
演算実行部243は、例えば、リザベーションステーションおよび複数種の演算器を有する。演算実行部243は、命令デコード部242から受信した命令のうち、実行の準備ができた順に命令を演算器に投入して命令を実行させ、実行が終了した命令を命令完了部244に通知する。命令完了部244は、命令の実行の完了を判定し、実行が完了した命令の情報を資源更新部245および命令収集部250に通知する。資源更新部245は、実行が完了した命令についてプログラムカウンタおよびレジスタなどプログラマブルな資源の更新を行う。
命令完了部244が命令収集部250に通知する命令情報については、図4で説明する。命令収集部250は、命令完了部244から完了した命令情報を収集する機能を有する。コアCLS選択部260は、命令収集部250が収集した命令情報に基づいて、キャッシュ230での使用が好ましいキャッシュラインサイズを選択する機能を有する。
図4は、図3の命令収集部250およびコアCLS選択部260の一例を示す。命令収集部250は、命令完了数加算部251、SIMD命令完了数加算部252、離散アクセス命令完了数加算部253、SIMD命令率算出部254および離散アクセス命令率算出部255を有する。命令収集部250に供給される命令完了数、SIMD命令完了数および離散アクセス命令完了数は、命令完了部244から出力される命令情報の一例である。
命令完了数は、命令収集信号の生成周期の間に命令実行部240で実行が完了した命令の数を示す。SIMD命令完了数は、命令収集信号の生成周期の間に命令実行部240で実行が完了したSIMD命令の数を示す。離散アクセス命令完了数は、命令収集信号の生成周期の間に命令実行部240で実行が完了した離散アクセス命令の数を示す。SIMD命令および離散アクセス命令は、それぞれキャッシュラインサイズの選択に関わる命令種である。
SIMD命令は、HPC用途等で使用されるベクトル演算命令である。SIMD命令を実行する場合、キャッシュラインサイズが長い方がメモリアクセス効率を向上することができ、CPU100の性能向上が見込まれる。離散アクセス命令は、SIMD命令の一種であり、メモリアクセスを離散的に実行できる命令である。離散アクセス命令を実行する場合、キャッシュラインサイズが短い方が、キャッシュのヒット効率を向上することができ、CPU100の性能向上が見込まれる。
命令完了数加算部251は、命令収集信号が有効レベルに設定されたときに命令完了部244から命令完了数を受信し、受信した命令完了数を、既に保持している命令完了数に加算する。命令完了数は、命令実行部240により実行が完了した命令の数である。命令完了数加算部251は、加算した命令完了数を総命令完了数としてSIMD命令率算出部254および離散アクセス命令率算出部255に出力する。命令完了数加算部251は、命令実行部240により実行が完了した命令の数を計数する命令計数部の一例である。
SIMD命令完了数加算部252は、命令収集信号が有効レベルに設定されたときに命令完了部244からSIMD命令完了数を受信し、受信したSIMD命令完了数を、既に保持しているSIMD命令完了数に加算する。SIMD命令完了数は、命令実行部240により実行が完了したSIMD命令の数である。SIMD命令完了数加算部252は、加算したSIMD命令完了数を総SIMD命令完了数としてSIMD命令率算出部254に出力する。
離散アクセス命令完了数加算部253は、命令収集信号が有効レベルに設定されたときに命令完了部244から離散アクセス命令完了数を受信し、受信した離散アクセス命令完了数を、既に保持している離散アクセス命令完了数に加算する。離散アクセス命令完了数は、命令実行部240により実行が完了した離散アクセス命令の数である。離散アクセス命令完了数加算部253は、加算した離散アクセス命令完了数を総離散アクセス命令完了数として離散アクセス命令率算出部255に出力する。SIMD命令完了数加算部252および離散アクセス命令完了数加算部253は、命令実行部240により実行が完了した命令の種別毎の数をそれぞれ計数する種別計数部の一例である。
命令収集信号は、コア210毎に、所定の頻度で繰り返される収集期間内に時間間隔を置いて、例えば、命令実行部240により生成される。時間間隔を置いて生成される命令収集信号により、命令収集部250は、命令実行部240で実行される全ての命令、SIMD命令および離散アクセス命令の完了数を加算しなくてよい。このため、命令完了数加算部251、SIMD命令完了数加算部252および離散アクセス命令完了数加算部253の各々に搭載されるカウンタ等の回路規模を削減することができる。
また、総命令完了数、総SIMD命令完了数および総離散アクセス命令完了数の伝達に使用する信号線の本数(ビット数)を抑制できる。さらに、SIMD命令率算出部254および離散アクセス命令率算出部255での命令率の算出に使用する信号のビット数を抑制できるため、SIMD命令率算出部254および離散アクセス命令率算出部255の回路規模を削減することができる。この結果、各種命令の完了数を間引いて取得しない場合に比べて、CPU100の回路規模を抑制することができる。
SIMD命令率算出部254は、選択開始信号の受信に応答して、総命令完了数に占める総SIMD命令完了数の割合であるSIMD命令率を算出し、算出したSIMD命令率をコアCLS選択部260に出力する。SIMD命令率算出部254は、命令完了数加算部251が計数した命令の数とSIMD命令完了数加算部252が計数した第1種別のSIMD命令の数とに基づいて、実行頻度を算出する頻度算出部の一例である。
離散アクセス命令率算出部255は、選択開始信号の受信に応答して、総命令完了数に占める総離散アクセス命令完了数の割合である離散アクセス命令率を算出し、算出した離散アクセス命令率をコアCLS選択部260に出力する。選択開始信号は、コア210毎に、繰り返し現れる収集期間の終了時に生成される。離散アクセス命令率算出部255は、命令完了数加算部251が計数した命令の数と離散アクセス命令完了数加算部253が計数した第2種別の離散アクセス命令の数とに基づいて、実行頻度を算出する頻度算出部の一例である。
このように、命令完了数加算部251、SIMD命令完了数加算部252および離散アクセス命令完了数加算部253により命令の完了数をそれぞれ加算することで、命令収集信号の受信毎に、命令の種別毎の実行頻度を算出することができる。
コアCLS選択部260は、命令収集部250から総命令完了数、SIMD命令率および離散アクセス命令率を受信し、命令実行部240からマルチスレッド信号を受信する。そして、コアCLS選択部260は、総命令完了数、SIMD命令率、離散アクセス命令率およびマルチスレッド信号に基づいて、第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号を図2に示したCLSエントリ280に出力する。
例えば、コアCLS選択部260は、128Bを選択した場合、有効レベルの第1キャッシュラインサイズ信号(128B用)を、コア210を識別するコア番号とともにCLSエントリ280(図2)に出力する。このとき、第2キャッシュラインサイズ信号(256B用)は、無効レベルに設定される。
コアCLS選択部260は、256Bを選択した場合、有効レベルの第2キャッシュラインサイズ信号を、コア番号とともにCLSエントリ280に出力する。このとき、第1キャッシュラインサイズ信号は、無効レベルに設定される。コアCLS選択部260は、128B、256Bのいずれも選択しない場合、無効レベルの第1キャッシュラインサイズ信号および無効レベルの第2キャッシュラインサイズ信号をコア番号とともにCLSエントリ280に出力する。コアCLS選択部260の動作の例は、図5で説明する。
コアCLS選択部260は、第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号を出力したことに基づいて、命令収集部250にリセット信号RST1を出力する。命令収集部250の命令完了数加算部251、SIMD命令完了数加算部252および離散アクセス命令完了数加算部253の各々は、リセット信号RST1に応答して、加算した完了数を"0"にクリア(リセット)する。SIMD命令率算出部254および離散アクセス命令率算出部255は、リセット信号RST1に応答して、算出した命令率をクリア(リセット)する。
そして、命令完了数加算部251、SIMD命令完了数加算部252および離散アクセス命令完了数加算部253は、次の収集期間において命令収集信号が有効レベルになる毎に加算処理を実行する。SIMD命令率算出部254および離散アクセス命令率算出部255は、次の収集期間の終了時に受信する選択開始信号に応答して命令率をそれぞれ算出する。
なお、有効レベルのマルチスレッド信号は、コア210が命令をマルチスレッドで実行していることを示す。無効レベルのマルチスレッド信号は、コア210が命令をシングルスレッドで実行していることを示す。コアCLS選択部260は、コア210が命令をシングルスレッドで実行していることを示すシングルスレッド信号を、マルチスレッド信号の代わりに受信してよい。
命令がマルチスレッドで実行される場合、命令に使用するデータは、連続しない複数のアドレス領域に分散して保持されている可能性が高い。このため、マルチスレッドでの命令の実行時、コア210の性能を向上するためにキャッシュラインサイズを小さくすることが好ましい。一方、命令がシングルスレッドで実行される場合、命令に使用するデータは、連続する複数のアドレス領域にまとめて保持されている可能性が高い。このため、シングルスレッドでの命令の実行時、コア210の性能を向上するためにキャッシュラインサイズを大きくすることが好ましい。
図5は、図4のコアCLS選択部260の動作の一例を示す。図5は、CPU100によるキャッシュの制御方法の一例を示す。図5に示す動作は、総命令完了数、SIMD命令率、離散アクセス命令率およびマルチスレッド信号をコアCLS選択部260が受信したことに基づいて開始される。
まず、ステップS10において、コアCLS選択部260は、総命令完了数が閾値VT1より大きい場合、SIMD命令率または離散アクセス命令率に基づいてキャッシュラインサイズを選択可能であると判断し、ステップS12を実行する。コアCLS選択部260は、総完了命令数が閾値VT1以下の場合、SIMD命令率または離散アクセス命令率に基づいてプログラムの特性を判断することが困難と判断し、ステップS26を実行する。すなわち、コアCLS選択部260は、総完了命令数が閾値VT1以下の場合、適切なキャッシュラインサイズを選択できないと判断する。
ステップS12において、コアCLS選択部260は、SIMD命令率が閾値VT2より大きい場合、ステップS14を実行し、SIMD命令率が閾値VT2以下の場合、ステップS20を実行する。ステップS14において、コアCLS選択部260は、離散アクセス命令率が閾値VT3より大きい場合、ステップS16を実行し、離散アクセス命令率が閾値VT3以下の場合、ステップS18を実行する。
ステップS16において、コアCLS選択部260は、128Bのキャッシュラインサイズを選択し、ステップS28を実行する。ステップS18において、コアCLS選択部260は、256Bのキャッシュラインサイズを選択し、ステップS28を実行する。上述したように、離散アクセス命令は、SIMD命令の一種である。
この実施形態では、命令の種別の1つであるSIMD命令の中に、好ましいキャッシュラインサイズが互いに異なる複数の命令種別がある場合にも、各コア210は、命令種別のそれぞれの実行頻度に応じて、適切なキャッシュラインサイズを選択することができる。なお、この実施形態において、キャッシュラインサイズの選択は、キャッシュラインサイズの設定とは異なるため、この時点では、キャッシュ230のキャッシュラインサイズは変更されない。
特に限定されないが、例えば、閾値VT2は50%であり、閾値VT3は25%である。この場合、総命令完了数に占めるSIMD命令の割合が50%を超え、かつ、総命令完了数に占める離散アクセス命令の割合が25%を超える場合、128Bのキャッシュラインサイズが選択される。総命令完了数に占めるSIMD命令の割合が50%を超え、かつ、総命令完了数に占める離散アクセス命令の割合が25%以下の場合、256Bのキャッシュラインサイズが選択される。
なお、閾値VT3は、例えば、SIMD命令率の50%の値に設定されてもよい。この場合、実行された離散アクセス命令の数が、実行されたSIMD命令の総数の50%を超える場合、128Bのキャッシュラインサイズが選択され、実行されたSIMD命令の総数の50%以下の場合、256Bのキャッシュラインサイズが選択される。
ステップS12でSIMD命令率が閾値VT2以下の場合、ステップS20において、コアCLS選択部260は、コア210の動作がマルチスレッドか否かを判定する。すなわち、コアCLS選択部260は、コア210が命令をマルチスレッドで実行しているか否かを判定する。コアCLS選択部260は、コア210の動作がマルチスレッドの場合、ステップS22を実行し、コア210の動作がマルチスレッドでない場合(すなわち、シングルスレッド)、ステップS24を実行する。
ステップS22において、コアCLS選択部260は、128Bのキャッシュラインサイズを選択し、ステップS28を実行する。ステップS24において、コアCLS選択部260は、256Bのキャッシュラインサイズを選択し、ステップS28を実行する。このように、各コア210は、命令をマルチスレッドで実行しているかシングルスレッドで実行しているかに応じて、適切なキャッシュラインサイズを選択することができる。
ステップS10で命令完了数が閾値VT1以下の場合、ステップS26において、コアCLS選択部260は、キャッシュラインサイズを選択せず、ステップS28を実行する。命令の実行の完了数が少なく、命令の種別毎の実行頻度の算出の精度が低いおそれがあるコア210によるキャッシュラインサイズの選択を抑止することで、キャッシュラインサイズの選択の精度の低下を抑止することができる。
ステップS28において、コアCLS選択部260は、選択したキャッシュラインサイズを示す情報をCLSエントリ280に通知し、図5に示す動作を終了する。
なお、図4および図5では、SIMD命令率と離散アクセス命令率とに基づいて、キャッシュラインサイズを選択する例を示す。しかしながら、SIMD命令または離散アクセス命令以外の複数の命令種の命令率に基づいて、キャッシュラインサイズを選択してもよい。また、ステップS20では、マルチスレッドかシングルスレッドかに応じてキャッシュラインサイズを選択する例を示すが、ステップS12でSIMD命令率が閾値VT2以下の場合、128Bのキャッシュラインサイズを常に選択してもよい。また、キャッシュラインサイズの選択に使用する各閾値VT1、VT2、VT3は、コア210が実行する命令種の傾向等に合わせて変更されてもよい。閾値VT1は、第3閾値の一例であり、閾値VT2は、第1閾値の一例であり、閾値VT3は、第2閾値の一例である。
図6は、図2のCLSエントリ280およびグループCLS選択部290の一例を示す。CLSエントリ280は、コアグループ200内に搭載されるn+1個(nは1以上の整数)のコア210にそれぞれ対応する複数のエントリENTを有する。各エントリENTは、CLSエントリ280に搭載される図示しないエントリ制御部により設定されるバリッドフラグV、有効コアフラグおよびキャッシュラインサイズを格納する格納領域CLSを有する。
例えば、バリッドフラグV、有効コアフラグおよび格納領域CLSは、レジスタで構成される。バリッドフラグV、有効コアフラグおよび格納領域CLSは、命令情報の収集期間の終了時にコアCLS選択部260から送られてくる第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号に応じて設定される。CLSエントリ280は、キャッシュラインサイズ保持部の一例である。なお、CLSエントリ280は、リセット信号RST2の受信に基づいて、各エントリENTの格納領域CLSをクリアし、バリッドフラグVおよび有効コアフラグを無効状態にリセットする。
CLSエントリ280は、有効レベルまたは無効レベルの第1キャッシュラインサイズ信号および有効レベルまたは無効レベルの第2キャッシュラインサイズ信号を受信した場合、バリッドフラグVを"1"にセットする。CLSエントリ280は、第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号を受信するまで、バリッドフラグVを"0"(リセット状態)に維持する。なお、第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号の出力を示すバリッド信号をコアCLS選択部260から受信する場合、CLSエントリ280は、受信したバリッド信号の論理をバリッドフラグVとして設定してもよい。
CLSエントリ280は、有効レベルの第1キャッシュラインサイズ信号または有効レベルの第2キャッシュラインサイズ信号を受信した場合、有効コアフラグを"1"に設定する。CLSエントリ280は、無効レベルの第1キャッシュラインサイズ信号および無効レベルの第2キャッシュラインサイズ信号を受信した場合、有効コアフラグを"0"に設定する。
CLSエントリ280は、有効レベルの第1キャッシュラインサイズ信号を受信した場合、格納領域CLSに128Bのキャッシュラインサイズの選択を示す"128"を設定する。CLSエントリ280は、有効レベルの第2キャッシュラインサイズ信号を受信した場合、格納領域CLSに256Bのキャッシュラインサイズの選択を示す"256"を設定する。CLSエントリ280は、無効レベルの第1キャッシュラインサイズ信号および無効レベルの第2キャッシュラインサイズ信号を受信した場合、格納領域CLSにキャッシュラインサイズの非選択を示す"0"に設定する。なお、格納領域CLSに格納される128B、256Bをそれぞれ示す"128"、"256"は、これ以外の値でもよい。また、第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号が同時に有効レベルに設定されることはない。
グループCLS選択部290は、Vフラグチェック部281、有効コアカウンタ282、CLSカウンタ283、CLS(キャッシュラインサイズ)選択部284、履歴保持部285、CLS(キャッシュラインサイズ)決定部286およびレジスタ287を有する。グループCLS選択部290は、命令情報の収集期間の終了時に動作する。
Vフラグチェック部281は、CLSエントリ280のバリッドフラグVをチェックし、全てのエントリENTのバリッドフラグVがセットされている場合、全オン信号AONを有効コアカウンタ282とCLSカウンタ283とに出力する。
例えば、複数のコア210は、互いに非同期で動作するため、命令情報の収集期間の終了タイミングは、コア210毎に異なる。このため、Vフラグチェック部281は、全てのエントリENTのバリッドフラグVがセットされたことを検出することで、全てのコア210から第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号を受信したことを検出する。すなわち、各エントリENTにバリッドフラグVを設けることで、収集期間がコア210毎に異なる場合にも、全てのコア210からキャッシュラインサイズの選択情報を受信したことを検出することができる。
有効コアカウンタ282は、全オン信号AONの受信に基づいて、CLSエントリ280の全てのエントリENTのうち、有効コアフラグが"1"にセットされたエントリENTの数をカウントしてカウント値CNT1を生成する。有効コアカウンタ282は、生成したカウント値CNT1をCLS選択部284に出力する。
CLSカウンタ283は、全オン信号AONの受信に基づいて、CLSエントリ280の全てのエントリENTのうち、格納領域CLSに"256"が設定されているエントリENTの数をカウントしてカウント値CNT2を生成する。CLSカウンタ283は、生成したカウント値CNT2をCLS選択部284に出力する。
CLS選択部284は、カウント値CNT1、CNT2に基づいて、有効なコア210のうち、256Bのキャッシュラインサイズを選択したコア210の割合を算出する。このように、CLSエントリ280に有効コアフラグとキャッシュラインサイズの格納領域CLSを設けることで、有効なコア210のうち、256Bのキャッシュラインサイズを選択したコア210の割合を算出することができる。CLS選択部284は、第2選択部の一例である。
CLS選択部284は、算出した割合に応じて、LLキャッシュ220およびキャッシュ230に設定することが好ましいキャッシュラインサイズを選択する。CLS選択部284は、選択したキャッシュラインサイズを示す情報を、履歴保持部285およびCLS決定部286に出力する。また、CLS選択部284は、キャッシュラインサイズを示す情報の出力に基づいて、CLSエントリ280にリセット信号RST2を出力する。なお、キャッシュラインサイズの選択は、キャッシュラインサイズの設定とは異なるため、この時点では、LLキャッシュ220およびキャッシュ230のキャッシュラインサイズは変更されない。
履歴保持部285は、過去の3つの収集期間の完了時にそれぞれ選択されたキャッシュラインサイズを順次保持するエントリE0~E2を有する。例えば、エントリE0~E2は、FIFO(First-In First-Out)またはシフトレジスタで構成される。履歴保持部285は、CLS選択部284からキャッシュラインサイズを受信した場合、受信したキャッシュラインサイズをエントリE0に保持する。この際、エントリE2が保持していたキャッシュラインサイズは破棄され、エントリE0、E1が保持していたキャッシュラインサイズは、エントリE1、E2にそれぞれ移動される。履歴保持部285は、保持したキャッシュラインサイズをCLS決定部286に出力する。なお、履歴保持部285においてキャッシュラインサイズを保持するエントリE0~E2の数は3つに限定されない。
CLS決定部286は、CLS選択部284が出力する最新の収集期間の完了時に選択されたキャッシュラインサイズと、履歴保持部285が出力する3つのキャッシュラインサイズとを受信する。そして、CLS決定部286は、4つのキャッシュラインサイズに基づいて、LLキャッシュ220およびキャッシュ230に設定するキャッシュラインサイズを決定する。例えば、CLS決定部286は、CLS選択部284から受信したキャッシュラインサイズと、履歴保持部285が保持する3つのキャッシュラインサイズとが全て一致するか否かを判定する。
CLS決定部286は、キャッシュラインサイズが全て一致する場合、CLS選択部284から受信したキャッシュラインサイズを、LLキャッシュ220およびキャッシュ230に設定するキャッシュラインサイズとして決定する。CLS決定部286は、キャッシュラインサイズが1つでも異なる場合、現在設定しているキャッシュラインサイズの維持を決定する。
このように、履歴保持部285を利用することで、収集期間毎にキャッシュラインサイズが切り替わることを抑止することができ、キャッシュラインサイズの切り替え後に複数のキャッシュラインサイズが混在する期間の発生頻度を削減することができる。この結果、複数のキャッシュラインサイズの混在を解消するためのデータの追い出し処理の頻度を削減することができ、複数の収集期間におけるキャッシュ効率を向上することができる。
CLS決定部286は、決定したキャッシュラインサイズをレジスタ287に格納し、レジスタ287に格納されたキャッシュラインサイズがLLキャッシュ220およびキャッシュ230のキャッシュラインサイズとして設定される。この後、LLキャッシュ220およびキャッシュ230は、設定されたキャッシュラインサイズにしたがってメモリアクセス命令の処理を行う。なお、レジスタ287に保持されるキャッシュラインサイズは、CLS決定部286にフィードバックされ、CLS決定部286がキャッシュラインサイズの維持を決定した場合に使用される。
このように、グループCLS選択部290は、キャッシュ効率の向上に適したキャッシュラインサイズが互いに異なる複数種の命令の実行頻度に応じて、キャッシュラインサイズを適切に切り替えることができる。この結果、キャッシュラインサイズを切り替えない場合に比べて、キャッシュ効率を向上することができ、CPU100の処理性能を向上することができる。
図7は、図6のCLSエントリ280、Vフラグチェック部281、有効コアカウンタ282、CLSカウンタ283およびCLS選択部284の動作の一例を示す。図7は、CPU100によるキャッシュの制御方法の一例を示す。図7に示す動作は、例えば、命令収集信号の生成頻度より高い頻度で開始される。
まず、ステップS30において、CLSエントリ280は、コア210のいずれかから情報を受信した場合、ステップS32を実行し、情報を受信していない場合、図7に示す動作を終了する。コア210から受信する情報は、選択するキャッシュラインサイズであり、第1キャッシュラインサイズ信号および第2キャッシュラインサイズ信号により示される。
ステップS32において、CLSエントリ280は、情報を出力したコア210に対応するエントリENTを更新する。例えば、CLSエントリ280は、キャッシュラインサイズの選択を示す情報を受信した場合、バリッドフラグVおよび有効コアフラグを有効状態に設定し、選択するキャッシュラインサイズをキャッシュラインサイズの格納領域CLSに格納する。CLSエントリ280は、キャッシュラインサイズの非選択を示す情報を受信した場合、バリッドフラグVを有効状態に設定し、有効コアフラグを無効状態に設定し、キャッシュラインサイズの格納領域CLSに非選択を示す"0"を格納する。
次に、ステップS34において、Vフラグチェック部281は、CLSエントリ280の全てのエントリENTのバリッドフラグVが有効状態に設定されている場合、有効コアカウンタ282にステップS36を実行させる。Vフラグチェック部281は、CLSエントリ280のエントリENTのいずれかのバリッドフラグVが無効状態に設定されている場合、キャッシュラインサイズの情報を受信していないコア210があるため、図7に示す動作を終了する。
ステップS36において、有効コアカウンタ282は、CLSエントリ280の各エントリENTから有効コアフラグを読み出し、有効コアフラグが"1"にセットされたエントリENTの数をカウントする。次に、ステップS38において、CLSカウンタ283は、有効コアフラグが"1"(有効状態)に設定されたエントリENTのうち、キャッシュラインサイズの格納領域CLSが256Bに設定されたエントリENTの数をカウントする。ステップS36、S38は、逆順で実行されてもよい。
次に、ステップS40において、CLS選択部284は、有効なエントリ数に対する256Bに設定されたエントリENTの数の割合が閾値VT4を超えている場合、ステップS42を実行する。CLS選択部284は、有効なエントリ数に対する256Bに設定されたエントリENTの数の割合が閾値VT4以下の場合、ステップS44を実行する。
ステップS42において、CLS選択部284は、LLキャッシュ220およびキャッシュ230に設定することが好ましいキャッシュラインサイズとして256Bを選択し、図7に示す動作を終了する。ステップS44において、CLS選択部284は、LLキャッシュ220およびキャッシュ230に設定することが好ましいキャッシュラインサイズとして128Bを選択し、図7に示す動作を終了する。
例えば、閾値VT4は、50%である。この場合、グループCLS選択部290が選択するキャッシュラインサイズは、複数のコア210が選択したキャッシュラインサイズの多数決を取ることにより選択される。なお、閾値VT4は、コア210が実行する命令種の傾向等に合わせて、50%を超える値に変更されてもよい。
また、ステップS38では、256Bに設定されたエントリENTの数をカウントしているが、128Bに設定されたエントリENTの数をカウントしてもよい。この場合、ステップS40において、128Bに設定されたエントリENTの数の割合が閾値VT4を超えているか否かが判定される。128Bに設定されたエントリENTの数の割合の判定に使用する閾値VT4は、128Bに設定されたエントリENTの数の割合の判定に使用する閾値VT4と相違してもよい。
図8は、図6のCLS決定部286および履歴保持部285の動作の一例を示す。図8は、CPU100によるキャッシュの制御方法の一例を示す。図8に示す動作は、例えば、命令収集信号の生成頻度と同程度の頻度で開始される。
まず、ステップS50において、CLS決定部286は、CLS選択部284から選択したキャッシュラインサイズの通知を受信した場合、ステップS52を実行する。CLS決定部286は、CLS選択部284から選択したキャッシュラインサイズの通知を受信していない場合、図8の動作を終了する。
ステップS52において、CLS決定部286は、CLS選択部284から受信したキャッシュラインサイズを、履歴保持部285の全てのエントリE0~E2に保持されたキャッシュラインサイズと比較する。次に、ステップS54において、CLS決定部286は、全てのキャッシュラインサイズが一致する場合、ステップS56を実行し、キャッシュラインサイズが1つでも一致しない場合、ステップS58を実行する。
ステップS56において、CLS決定部286は、CLS選択部284から受信したキャッシュラインサイズを、LLキャッシュ220およびキャッシュ230に設定するキャッシュラインサイズに決定する。
ステップS58において、CLS決定部286は、LLキャッシュ220およびキャッシュ230に現在設定中のキャッシュラインサイズの維持を決定する。CLS決定部286は、ステップS56、S58で決定したキャッシュラインサイズを、レジスタ287に格納し、ステップS60を実行する。レジスタ287に格納されたキャッシュラインサイズは、LLキャッシュ220およびキャッシュ230のキャッシュラインサイズとして設定される。
ステップS60において、CLS決定部286は、CLS選択部284から受信したキャッシュラインサイズを履歴保持部285のエントリE0に格納することで、履歴保持部285を更新し、図8に示す動作を終了する。なお、図6で説明したように、既にエントリE0、E1に保持されたキャッシュラインサイズは、エントリE1、E2に順次シフトされる。
図9は、図1のCPU100のコアグループ200毎のキャッシュラインサイズの切り替え動作の一例を示す。各コアグループ200内の複数のコア210は、収集期間を繰り返す(図9(a))。各収集期間において、各コア210の命令収集部250は、命令収集信号を受信する毎に命令完了数、SIMD命令完了数および離散アクセス命令完了数をそれぞれ加算する(図9(b))。
図9では、複数のコア210のうちの2つの命令収集部250およびコアCLS選択部260の動作を示す。複数のコア210の収集期間は、互いに重複するが同期していないため、ずれがある(図9(c))。このため、複数のコア210の選択開始信号の発生タイミングは、最大で命令収集信号の1周期程度ずれる可能性がある。しかしながら、図6に示したVフラグチェック部281により、収集期間のずれを吸収することができる。
CLSエントリ280は、各コア210の収集期間の終了毎に、各コア210が選択したキャッシュラインサイズの情報をエントリENTに格納する(図9(d))。全てのコア210の収集期間が終了した場合、CLS選択部284は、各コア210が選択したキャッシュラインサイズに基づき、LLキャッシュ220およびキャッシュ230に設定することが好ましいキャッシュラインサイズを選択する(図9(e))。そして、CLS決定部286は、CLS選択部284が選択したキャッシュラインサイズと、履歴保持部285が保持するキャッシュラインサイズとに基づいて、LLキャッシュ220およびキャッシュ230にキャッシュラインサイズを設定する(図9(f))。
LLキャッシュ220およびキャッシュ230へのキャッシュラインサイズの設定は、収集期間の経過毎に実行される。これにより、コアグループ200毎に、LLキャッシュ220および各コアのキャッシュ230に互いに同じキャッシュラインサイズを設定しつつ、コア210の動作に合わせて、所定の頻度で適切なキャッシュラインサイズへの切替を実行することができる。この際、収集期間内に実行される全ての命令の情報を収集するのではなく、所定の周期で生成される命令収集信号に同期して命令の情報を収集するため、命令収集部250の回路規模を、全ての命令の情報を収集する場合に比べて削減することができる。
なお、図9では、キャッシュラインサイズが収集期間の終了毎に切り替わるように見えるが、実際には、キャッシュラインサイズは、再選択されるだけで、収集期間毎に連続して切り替わることはない。これは、CLS選択部284が選択したキャッシュラインサイズが履歴保持部285に保持された全てのキャッシュラインサイズと一致する場合のみ、キャッシュラインサイズが切り替わるためである。履歴保持部285が3つのエントリE0~E2を有する場合、最短で4つの収集期間毎にキャッシュラインサイズが切り替わる。
なお、キャッシュラインサイズが切り替わった場合、LLキャッシュ220およびキャッシュ230には、複数のキャッシュラインサイズが混在する。例えば、キャッシュラインサイズが256Bに切り替わり、256Bのデータが、アドレスの異なる2つの128Bのキャッシュラインに格納されている場合、1つの128Bのデータが追い出された後、要求のあった256Bのデータが格納される。このため、複数のキャッシュラインサイズの混在の解消は、徐々に行われ、混在が解消するまでの間、キャッシュ効率は低下する。
以上、この実施形態では、キャッシュを含む複数のコア210で共有されるLLキャッシュ220を有するCPU100において、各コア210での命令の種別毎の実行頻度に基づいて、適切なキャッシュラインサイズに切り替えることができる。これにより、CPU100の全体で見たときにLLキャッシュ220およびキャッシュ230を有効に使用することが可能になる。
各コア210は、収集期間毎に実行した命令の種別毎の実行頻度に基づいて、キャッシュ230の使用効率であるキャッシュ効率を向上するために適したキャッシュラインサイズを選択する。キャッシュ制御部270は、各コア210が選択したキャッシュラインサイズに基づいて、LLキャッシュ220およびキャッシュ230で使用するキャッシュラインサイズを決定する。これにより、キャッシュ効率の向上に適したキャッシュラインサイズが互いに異なる複数種の命令の実行頻度に応じて、キャッシュラインサイズを適切に切り替えることができる。この結果、キャッシュラインサイズを切り替えない場合に比べて、キャッシュミスが削減するため、キャッシュ効率を向上することができ、CPU100の処理性能を向上することができる。
収集期間内に時間間隔を置いて命令の種別毎の完了数を収集することで、収集期間内に実行される全ての命令の種別毎の完了数を収集する場合に比べて、収集部の回路規模を削減することができる。
命令の種別の1つであるSIMD命令の中に、好ましいキャッシュラインサイズが異なる複数の命令の種別がある場合にも、各コア210は、命令の種別のそれぞれの実行頻度に応じて、適切なキャッシュラインサイズを選択することができる。そして、複数のコア210における命令の種別毎の平均的な実行頻度に基づいて、LLキャッシュ220およびキャッシュ230で使用するキャッシュラインサイズを決定することができる。
命令の実行の完了数が少なく、命令の種別毎の実行頻度の算出の精度が低いおそれがあるコア210は、キャッシュラインサイズを選択しないため、CLS選択部284によるキャッシュラインサイズの選択の精度の低下を抑止することができる。
各コア210は、命令をマルチスレッドで実行しているかシングルスレッドで実行しているかに応じて、適切なキャッシュラインサイズを選択することができる。そして、複数のコア210における命令の平均的な実行タイプ(マルチスレッドまたはシングルスレッド)に基づいて、LLキャッシュ220およびキャッシュ230で使用するキャッシュラインサイズを決定することができる。
CLS決定部286は、CLS選択部284で選択したキャッシュラインサイズが、履歴保持部285が保持する複数のキャッシュラインサイズと一致する場合、CLS選択部284で選択したキャッシュラインサイズの使用を決定する。これにより、収集期間毎にキャッシュラインサイズが切り替わることを抑止することができ、キャッシュラインサイズの切り替え後の複数のキャッシュラインサイズが混在する期間が発生する頻度を削減することができる。この結果、複数のキャッシュラインサイズの混在を解消するためのデータの追い出し処理の頻度を削減することができ、キャッシュ効率を向上することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
200 コアグループ
210 コア
220 LLキャッシュ
230 キャッシュ
240 命令実行部
241 命令フェッチ部
242 命令デコード部
243 演算実行部
244 命令完了部
245 資源更新部
250 命令収集部
251 命令完了数加算部
252 SIMD命令完了数加算部
253 離散アクセス命令完了数加算部
254 SIMD命令率算出部
255 離散アクセス命令率算出部
260 コアCLS選択部
270 キャッシュ制御部
280 CLSエントリ
281 Vフラグチェック部
282 有効コアカウンタ
283 CLSカウンタ
284 CLS選択部
285 履歴保持部
286 CLS決定部
287 レジスタ
290 グループCLS選択部
310 メモリアクセスコントローラ
320 通信インタフェース
400 メモリ
500 入出力装置
AON 全オン信号
CNT1、CNT2 カウント値
E0、E1、E2 エントリ
ENT エントリ
RST1、RST2 リセット信号
V バリッドフラグ
VT1、VT2、VT3 閾値

Claims (8)

  1. 命令を実行する命令実行部と、前記命令実行部で使用する命令およびデータの少なくともいずれかを保持する第1キャッシュとをそれぞれ含む複数のコアと、
    前記複数のコアに共有される第2キャッシュと、
    前記第1キャッシュおよび前記第2キャッシュのキャッシュラインサイズの切り替えを制御するキャッシュ制御部と、を有し、
    前記複数のコアの各々は、
    前記命令実行部が実行する命令の種別毎の完了数を、収集期間内に時間間隔を置いて収集し、前記収集期間の終了時に命令の種別毎の実行頻度を算出する命令収集部と、
    前記収集期間に前記命令収集部が算出した前記実行頻度に基づいて、前記第1キャッシュでの使用が好ましいキャッシュラインサイズを選択する第1選択部と、を有し、
    前記キャッシュ制御部は、前記複数のコアの前記第1選択部が選択したキャッシュラインサイズに基づいて、前記第1キャッシュおよび前記第2キャッシュで使用するキャッシュラインサイズを決定する
    半導体装置。
  2. 前記第1選択部は、命令の種別のうち第1種別の命令の実行頻度が第1閾値を超える場合、前記第1種別の命令のうち第2種別の命令の実行頻度が第2閾値を超えるか否かに応じて、前記第1キャッシュでの使用が好ましいキャッシュラインサイズを選択する
    請求項1に記載の半導体装置。
  3. 前記複数のコアの各々は、命令をシングルスレッドまたはマルチスレッドで実行し、
    前記第1選択部は、命令の種別のうち前記第1種別の命令の実行頻度が第1閾値以下の場合、命令の実行がシングルスレッドかマルチスレッドかに応じて、前記第1キャッシュでの使用が好ましいキャッシュラインサイズを選択する
    請求項2に記載の半導体装置。
  4. 前記第1選択部は、前記収集期間内に前記命令実行部が実行した命令の数が第3閾値以下の場合、キャッシュラインサイズを選択せず、
    前記キャッシュ制御部は、キャッシュラインサイズを選択しない第1選択部を除く第1選択部が選択したキャッシュラインサイズに基づいて、前記第1キャッシュおよび前記第2キャッシュで使用するキャッシュラインサイズを決定する
    請求項1ないし請求項3のいずれか1項に記載の半導体装置。
  5. 前記キャッシュ制御部は、
    前記収集期間の完了毎に、前記複数のコアの前記第1選択部が最も多く選択したキャッシュラインサイズを、前記第1キャッシュおよび前記第2キャッシュでの使用が好ましいキャッシュラインサイズとして選択する第2選択部と、
    過去の所定数の収集期間の完了毎に前記第2選択部が選択したキャッシュラインサイズを保持する履歴保持部と、
    最新の収集期間の完了時に前記第2選択部が選択したキャッシュラインサイズが、前記履歴保持部に保持された複数のキャッシュラインサイズと全て一致する場合、前記第2選択部が選択したキャッシュラインサイズを前記第1キャッシュおよび前記第2キャッシュで使用するキャッシュラインサイズに決定するキャッシュラインサイズ決定部と
    を有する請求項1ないし請求項4のいずれか1項に記載の半導体装置。
  6. 前記キャッシュ制御部は、前記コアからのキャッシュラインサイズの選択または非選択の通知に基づいてセットされるバリッドフラグと、キャッシュラインサイズの選択または非選択を識別する有効コアフラグと、前記コアが選択したキャッシュラインサイズが格納される格納領域とを含むエントリを前記複数のコアにそれぞれ対応して有するキャッシュラインサイズ保持部を有し、
    前記第2選択部は、前記キャッシュラインサイズ保持部の全てのエントリのバリッドフラグがセットされた場合、前記有効コアフラグがキャッシュラインサイズの選択を示す前記エントリの前記格納領域に格納されたキャッシュラインサイズに基づいて、キャッシュラインサイズを選択する
    請求項5に記載の半導体装置。
  7. 前記命令収集部は、
    前記命令実行部により実行が完了した命令の数を計数する命令計数部と、
    前記命令実行部により実行が完了した命令の種別毎の数をそれぞれ計数する複数の種別計数部と、
    前記命令計数部が計数した命令の数と前記複数の種別計数部の各々が計数した命令の種別毎の数とに基づいて、実行頻度を算出する頻度算出部と、
    を有する請求項1ないし請求項6のいずれか1項に記載の半導体装置。
  8. 命令を実行する命令実行部と、前記命令実行部で使用する命令およびデータの少なくともいずれかを保持する第1キャッシュとをそれぞれ含む複数のコアと、前記複数のコアに共有される第2キャッシュと、前記第1キャッシュおよび前記第2キャッシュのキャッシュラインサイズの切り替えを制御するキャッシュ制御部と、を有する半導体装置のキャッシュの制御方法であって、
    前記複数のコアの各々が有する命令収集部が、前記命令実行部が実行する命令の種別毎の完了数を、収集期間内に時間間隔を置いて収集し、前記収集期間の終了時に命令の種別毎の実行頻度を算出し、
    前記複数のコアの各々が有する第1選択部が、前記収集期間に算出した前記実行頻度に基づいて、前記第1キャッシュでの使用が好ましいキャッシュラインサイズを選択し、
    前記キャッシュ制御部が、前記複数のコアの各々において選択したキャッシュラインサイズに基づいて、前記第1キャッシュおよび前記第2キャッシュで使用するキャッシュラインサイズを決定する
    キャッシュの制御方法。
JP2020125524A 2020-07-22 2020-07-22 半導体装置およびキャッシュの制御方法 Active JP7468218B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020125524A JP7468218B2 (ja) 2020-07-22 2020-07-22 半導体装置およびキャッシュの制御方法
US17/337,048 US11442861B2 (en) 2020-07-22 2021-06-02 Semiconductor device and cache control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020125524A JP7468218B2 (ja) 2020-07-22 2020-07-22 半導体装置およびキャッシュの制御方法

Publications (2)

Publication Number Publication Date
JP2022021745A JP2022021745A (ja) 2022-02-03
JP7468218B2 true JP7468218B2 (ja) 2024-04-16

Family

ID=80220619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020125524A Active JP7468218B2 (ja) 2020-07-22 2020-07-22 半導体装置およびキャッシュの制御方法

Country Status (2)

Country Link
US (1) US11442861B2 (ja)
JP (1) JP7468218B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117687935A (zh) * 2022-09-02 2024-03-12 中科寒武纪科技股份有限公司 指令控制方法、数据缓存方法及相关产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001216193A (ja) 2000-01-31 2001-08-10 Nec Corp キャッシュ機構およびキャッシュ機構の動作制御方法
JP2002163150A (ja) 2000-11-28 2002-06-07 Toshiba Corp プロセッサ
JP2006510992A (ja) 2002-12-17 2006-03-30 インターナショナル・ビジネス・マシーンズ・コーポレーション ライン幅を選択的に変更することが可能なメモリ

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4315312A (en) * 1979-12-19 1982-02-09 Ncr Corporation Cache memory having a variable data block size
US7822926B2 (en) * 2007-04-16 2010-10-26 Arm Limited Cache memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001216193A (ja) 2000-01-31 2001-08-10 Nec Corp キャッシュ機構およびキャッシュ機構の動作制御方法
JP2002163150A (ja) 2000-11-28 2002-06-07 Toshiba Corp プロセッサ
JP2006510992A (ja) 2002-12-17 2006-03-30 インターナショナル・ビジネス・マシーンズ・コーポレーション ライン幅を選択的に変更することが可能なメモリ

Also Published As

Publication number Publication date
JP2022021745A (ja) 2022-02-03
US20220027274A1 (en) 2022-01-27
US11442861B2 (en) 2022-09-13

Similar Documents

Publication Publication Date Title
US8117618B2 (en) Forward progress mechanism for a multithreaded processor
US7366878B1 (en) Scheduling instructions from multi-thread instruction buffer based on phase boundary qualifying rule for phases of math and data access operations with better caching
US8190820B2 (en) Optimizing concurrent accesses in a directory-based coherency protocol
US11126555B2 (en) Multi-line data prefetching using dynamic prefetch depth
JP5279701B2 (ja) 命令プリフェッチバッファ深さの動的制御を有するデータプロセッサとその方法
US9501320B2 (en) Scheduling threads according to real time bit in predetermined time period or in variable time period of requested time ratio
US8898434B2 (en) Optimizing system throughput by automatically altering thread co-execution based on operating system directives
EP3676713B1 (en) Utilization-based throttling of hardware prefetchers
CN109308220B (zh) 共享资源分配方法及装置
JP2007334564A (ja) ユニファイドメモリシステム
US20110004731A1 (en) Cache memory device, cache memory system and processor system
EP3047380A1 (en) Pattern detector for detecting hangs
JP7468218B2 (ja) 半導体装置およびキャッシュの制御方法
US12032965B2 (en) Throttling while managing upstream resources
JP5793061B2 (ja) キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム
US20220220644A1 (en) Warp scheduling method and stream multiprocessor using the same
WO2016092347A1 (en) Distributed hang recovery logic
US8332568B2 (en) Memory access determination circuit, memory access determination method and electronic device
US20050289551A1 (en) Mechanism for prioritizing context swapping
US20110161982A1 (en) Task Controlling A Multitask System
WO2016092346A1 (en) Conditional pattern detector for detecting hangs
CN110647358A (zh) 同步多线程处理器
CN111459872B (zh) 一种多核并行计算的快速核间数据同步方法
US8422830B2 (en) Image processing system with an address snooping apparatus
CN118193153A (zh) 资源分配方法、处理器和电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230407

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240318

R150 Certificate of patent or registration of utility model

Ref document number: 7468218

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150