JP2010244435A - キャッシュ制御装置及びキャッシュ制御方法 - Google Patents

キャッシュ制御装置及びキャッシュ制御方法 Download PDF

Info

Publication number
JP2010244435A
JP2010244435A JP2009094361A JP2009094361A JP2010244435A JP 2010244435 A JP2010244435 A JP 2010244435A JP 2009094361 A JP2009094361 A JP 2009094361A JP 2009094361 A JP2009094361 A JP 2009094361A JP 2010244435 A JP2010244435 A JP 2010244435A
Authority
JP
Japan
Prior art keywords
cache
way
processor
task
ways
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.)
Pending
Application number
JP2009094361A
Other languages
English (en)
Inventor
Kunihiko Hayashi
邦彦 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Original Assignee
Panasonic 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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2009094361A priority Critical patent/JP2010244435A/ja
Priority to PCT/JP2009/006668 priority patent/WO2010116431A1/ja
Publication of JP2010244435A publication Critical patent/JP2010244435A/ja
Priority to US13/253,456 priority patent/US8868835B2/en
Pending legal-status Critical Current

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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】余剰資源を有効活用し、かつ、アクセス遅延の発生を抑制する。
【解決手段】本発明のキャッシュ制御装置101は、キャッシュメモリ50に含まれる複数のウェイ51を、複数のプロセッサ10及び11により実行される複数のタスクに割り当てるキャッシュ配分制御部40を備える。キャッシュ配分制御部40は、1つのグループ52に、いずれのタスクにも割り当てられていない未割当ウェイが含まれ、かつ、当該グループ52にプロセッサ10及び11の一方により実行されるタスクに割り当てられたウェイ51が含まれる場合、当該グループ52に含まれる未割当ウェイを、当該一方のプロセッサ10又は11により実行される複数のタスクのうちいずれかのタスクに割り当てる。
【選択図】図1

Description

本発明は、キャッシュ制御装置及びキャッシュ制御方法に関し、特に、複数のプロセッサにより共有されるセットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御装置に関する。
複数のプロセッサを含むプロセッサシステムには、メモリ空間を共有することにより同一データを相互にアクセスする密結合システムと、通信を介することで相互にデータを受け渡しする疎結合システムとがある。また、密結合システムとして、キャッシュメモリを共有する構成と、プロセッサ個別にキャッシュメモリを保有する構成とがある。
図9は、キャッシュメモリを共有する密結合システムのマルチプロセッサシステムの構成を示すブロック図である。図9に示すプロセッサシステム200は、プロセッサ10及び11と、メモリバス20と、キャッシュ制御装置201と、キャッシュメモリ50と、メインメモリ60とを備える。
プロセッサ10及び11はメモリバス20を介してメインメモリ60へアクセスする。
キャッシュ制御装置201は、キャッシュメモリ50を制御する。このキャッシュ制御装置201は、キャッシュ制御部30と、キャッシュ配分制御部240とを備える。
キャッシュ制御部30は、プロセッサ10及び11からメインメモリ60へのアクセスに対して以下のような制御を行う。メインメモリ60への読み出しアクセスが発生した場合、アクセスするデータがキャッシュメモリ50に存在すれば(キャッシュヒット)、キャッシュ制御部30は、キャッシュメモリ50へアクセスし、メインメモリ60へはアクセスしない。ここでキャッシュメモリ50へのアクセスはメインメモリ60へのアクセスに比べて高速である。よって、キャッシュメモリ50を用いることで、メモリアクセスに要する時間を短縮できるので、システム全体の性能を向上できる。
一方、アクセスするデータがキャッシュメモリ50に存在しなければ(キャッシュミス)、キャッシュ制御部30は、メインメモリ60からデータを読み出すと共にキャッシュメモリ50へ当該データを書き込む。これにより次に同じデータへのアクセスが発生した際には、キャッシュ制御部30は、キャッシュメモリ50へアクセスできる。
また、メインメモリ60への書き込みアクセスが発生した場合、キャッシュ制御部30は、メインメモリ60へデータを書き込むと共に、キャッシュメモリ50へ当該データを書き込む。これによりキャッシュメモリ50とメインメモリ60とのデータの整合性が保証される。
キャッシュ配分制御部240は、キャッシュメモリ50のキャッシュ容量を処理単位又はタスクに配分する。ここでタスクとは、オペレーティングシステムの管理下で動作するプログラムの起動、その実行、及び終了などの流れを一括管理する制御単位のことである。キャッシュ容量の配分方法は構成によりさまざまである。例えばキャッシュメモリ50がセットアソシアティブ方式の構成を取る場合、キャッシュメモリ50は「ウェイ」と呼ばれる固定容量単位で分割されている。キャッシュ配分制御部240は、このウェイ51a〜51fを処理単位又はタスクに配分する。
また、キャッシュメモリ50は「メモリマクロセル」と呼ばれるハードウェア単位によって構成されている。キャッシュ制御装置201は、アドレス演算器、バッファ回路、及びバス調停回路などをこの単位ごとに備える。ここでメモリマクロセルの数が増大すると回路が増大する。これによりLSIの面積が増加すると共に高速な伝送ができなくなる。結果として周波数向上が期待できなくなる。この問題に対して、複数のウェイを含む1つのメモリマクロセルを構成することで、メモリマクロセル数を削減することができる。例えば図9では、ウェイ51a及び51bが1つのメモリマクロセルに含まれており、同様にウェイ51c及び51dと、ウェイ51e及び51fとがそれぞれの1つのメモリマクロセルに含まれる。
ただし、各種回路がメモリマクロセルごとに共通になるため、同一のメモリマクロセルに含まれる異なるウェイへのアクセスが同時に発生した場合は、調停によりアクセス待ちが発生することになる。よって、多くのウェイを1つのメモリマクロセルで構成すると、アクセス待ちが頻出することになるため速度面で不利となるという課題を有する。
この課題に対して、キャッシュ配分制御部240は、キャッシュメモリ50を共有する複数のプロセッサ10及び11の処理優先度に応じて、各プロセッサ10及び11に割り当てるキャッシュ容量を動的に変更できるようにしている。これにより、従来のキャッシュ制御装置201では、高優先度の処理を実行するプロセッサが多くのキャッシュ容量を使用できる(例えば、特許文献1参照)。
特開平7−248967号公報
しかしながら、従来のキャッシュ制御装置201では処理優先度に応じてキャッシュ容量を割り当てるが、割当量が優先度にのみ依存する。これにより、処理が必要とするキャッシュ容量を柔軟に割り当てることができない。そのため、処理性能を保証する必要があるシステムでは容量が足りなくなる場合があり、性能を保証することができない。
また、従来のキャッシュ制御装置201では、キャッシュ容量が余る場合には使用できない余剰資源が発生してしまう。これにより、従来のキャッシュ制御装置201は、キャッシュ容量を有効活用することができないという課題を有する。
さらに、従来のキャッシュ制御装置201では、ウェイが割り当てられた複数のタスクがそれぞれ異なるプロセッサ上で動作し、かつ、それらのウェイが同じメモリマクロセルに存在する場合、これらの複数のタスクからのキャッシュアクセスが同時に発生すると、アクセス先のウェイが異なっていてもアクセスが衝突して片方が待たされる。これにより、従来のキャッシュ制御装置201は、アクセスが遅延するという課題がある。
そこで本発明は、余剰資源を有効活用でき、かつアクセス遅延の発生を抑制できるキャッシュ制御装置及びキャッシュ制御方法を提供することを目的とする。
上記課題を解決するために、本発明に係るキャッシュ制御装置は、複数のプロセッサにより共有されるセットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御装置であって、前記キャッシュメモリは複数のウェイを含み、前記複数のウェイは、1以上のウェイを含む複数のグループに分割されており、前記キャッシュ制御装置は、前記複数のプロセッサにより実行される複数のタスクに前記ウェイを割り当てるキャッシュ配分処理を行うキャッシュ配分制御部を備え、前記キャッシュ配分制御部は、1つの前記グループに、いずれのタスクにも割り当てられていない未割当ウェイが含まれ、かつ、当該グループに前記複数のプロセッサに含まれる一のプロセッサにより実行されるタスクに割り当てられたウェイが含まれる場合、当該グループに含まれる前記未割当ウェイを、前記一のプロセッサにより実行される複数のタスクのうちいずれかのタスクに割り当てる。
この構成により、本発明に係るキャッシュ制御装置は、余っている未割当ウェイをタスクに割り当てることができるので、余剰資源を有効活用できる。さらに、本発明に係るキャッシュ制御装置は、未割当ウェイを、当該未割当ウェイと同一のグループ(メモリマクロセル)に含まれるウェイが割り当てられているタスクと同じプロセッサに属するタスクに割り当てる。これにより、1つのグループに含まれるウェイは、同一のプロセッサが実行するタスクに割り当てられる。よって、本発明に係るキャッシュ制御装置は、異なるプロセッサが同一のグループに含まれるウェイにアクセスした場合に発生するキャッシュアクセスの衝突を回避できる。このように、本発明に係るキャッシュ制御装置は、アクセス遅延の発生を抑制できる。
また、前記キャッシュ配分制御部は、1つの前記グループに含まれる全てのウェイが、いずれのタスクにも割り当てられていない場合、当該キャッシュ配分処理により既に割り当てられたタスクの数である割当タスク数が最も少ないプロセッサが実行するタスクに、当該グループに含まれるウェイを割り当ててもよい。
この構成により、本発明に係るキャッシュ制御装置は、ウェイが割り当てられている数が少ないプロセッサのタスクに、優先的にウェイを割り当てることができる。これにより、本発明に係るキャッシュ制御装置は、各プロセッサに均等にウェイを配分できる。
また、前記キャッシュ制御装置は、さらに、前記複数のタスクのそれぞれに割り当てられたウェイを示すウェイ情報を記憶する記憶部を備え、前記キャッシュ配分制御部は、前記ウェイ情報を参照して前記未割当ウェイを判定してもよい。
この構成により、本発明に係るキャッシュ制御装置は、予めタスクごとのキャッシュ容量をウェイ情報に設定することにより、処理性能を容易に保証できる。
また、前記記憶部は、さらに、前記各プロセッサに対応して設けられ、前記複数のウェイのうちいずれかを指定するサーチポインタを記憶し、前記キャッシュ配分制御部は、前記サーチポインタに、対応するプロセッサのタスクに割り当てられているウェイを指定させるウェイ指定部と、前記プロセッサが実行する複数のタスクのうち、当該プロセッサに対応する前記サーチポインタで指定されているウェイに割り当てられているタスクに、未割当ウェイを割り当てる割当部とを備え、前記ウェイ指定部は、前記割当部により当該プロセッサのタスクにウェイが割り当てられるごとに、前記サーチポインタが指定するウェイを、当該プロセッサのタスクが割り当てられているウェイのうち、予め定められた順で次に位置するウェイに移動させてもよい。
この構成により、本発明に係るキャッシュ制御装置は、各プロセッサが実行する複数のタスクに、均等にウェイを配分できる。
また、前記キャッシュ配分制御部は、さらに、前記各プロセッサに対応して設けられ、ビット列を含む空きウェイ情報を生成したうえで、前記記憶部に記憶する空きウェイ情報生成部を備え、前記ビット列は、前記複数のウェイのそれぞれに対応し、対応するウェイが、当該プロセッサが実行する複数のタスクに割り当てられているか否かを示すビットを含み、前記ウェイ指定部は、前記割当部により当該プロセッサのタスクにウェイを割り当てるごとに、前記サーチポインタが指定するウェイを、当該プロセッサのタスクが割り当てられているウェイのうち、前記ビット列の順で次に位置するウェイに移動させてもよい。
この構成により、本発明に係るキャッシュ制御装置は、各プロセッサが実行する複数のタスクに均等にウェイが配分されるように、各タスクを順時選択できる。
また、前記サーチポインタの値は、前記ウェイ指定部により移動された前記ビット列におけるビット数の和であり、キャッシュ配分制御部は、1つの前記グループに含まれる全てのウェイが、いずれのタスクにも割り当てられていない場合、前記サーチポインタの値が最も少ないプロセッサが実行するタスクに、当該グループに含まれるウェイを割り当ててもよい。
この構成により、本発明に係るキャッシュ制御装置は、各プロセッサに均等にウェイを配分できる。
また、前記キャッシュ配分制御部は、一の前記プロセッサにより実行される複数のタスクのいずれにも、前記ウェイが割り当てられていない場合、当該一のプロセッサの前記サーチポインタの値を最大値に設定してもよい。
この構成により、本発明に係るキャッシュ制御装置は、初期状態としてウェイが割り当てられていないプロセッサに対しては、ウェイを割り当てないようにできる。
また、前記キャッシュ配分制御部は、前記タスクの生成又は削除時に、前記キャッシュ配分処理を行ってもよい。
この構成により、タスクの処理に影響を与えることなくウェイを配分できる。
なお、本発明は、このようなキャッシュ制御装置として実現できるだけでなく、キャッシュ制御装置に含まれる特徴的な手段をステップとするキャッシュ制御方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
さらに、本発明は、このようなキャッシュ制御装置の機能の一部又は全てを実現する半導体集積回路(LSI)として実現したり、このようなキャッシュ制御装置を含むプロセッサシステムとして実現したりできる。
以上より、本発明は、余剰資源を有効活用でき、かつアクセス遅延の発生を抑制できるキャッシュ制御装置及びキャッシュ制御方法を提供できる。
本発明の実施の形態に係るプロセッサシステムの構成を示すブロック図である。 本発明の実施の形態に係るキャッシュ配分制御部の構成を示すブロック図である。 本発明の実施の形態に係るウェイ情報記憶部の初期状態の一例を示す図である。 本発明の実施の形態に係るキャッシュ配分制御部によるキャッシュ配分手順を示すフローチャートである。 本発明の実施の形態に係る有効位置探索部の動作を示すフローチャートである。 本発明の実施の形態に係るビット割当部の動作を示すフローチャートである。 本発明の実施の形態に係るウェイ情報記憶部の処理途中における状態の一例を示す図である。 本発明の実施の形態に係るウェイ情報記憶部の処理完了後の状態の一例を示す図である。 従来のプロセッサシステムの構成を示すブロック図である。
以下、本発明のキャッシュ制御装置の実施の形態について図面を参照して説明する。
本発明の実施の形態に係るキャッシュ制御装置は、余っているウェイを、当該ウェイと同一のグループ(メモリマクロセル)のウェイが割り当てられているタスクと同じプロセッサのタスクに割り当てる。これにより、本発明に係るキャッシュ制御装置は、異なるプロセッサ間のキャッシュアクセスの衝突を回避できるので、アクセス遅延の発生を抑制できるとともに、余剰資源を有効活用できる。
まず、本発明の実施の形態に係るキャッシュ制御装置を含むプロセッサシステムの構成を説明する。
図1は、本発明の実施の形態に係るプロセッサシステム100の構成を示す図である。
図1に示すプロセッサシステム100は、プロセッサ10及び11と、メモリバス20と、キャッシュ制御装置101と、キャッシュメモリ50と、メインメモリ60とを備える。なお、図9と同様の要素には同一の符号を付している。
また、この例ではプロセッサシステム100が2つのプロセッサ10及び11を備える例を記載しているが、プロセッサの数は2つに限定するものではなく、プロセッサシステム100は、3つ以上のプロセッサを備えてもよい。
プロセッサ10及び11はメモリバス20を介してメインメモリ60へアクセスする。
キャッシュ制御装置101はキャッシュメモリ50を制御する。このキャッシュ制御装置101は、キャッシュ制御部30と、キャッシュ配分制御部40とを備える。
キャッシュ制御部30は、プロセッサ10及び11からメインメモリ60へのアクセスに対して以下のような制御を行う。メインメモリ60からの読み出しアクセスが発生した場合、アクセスするデータがキャッシュメモリ50に存在すれば(キャッシュヒット)、キャッシュ制御部30は、キャッシュメモリ50へアクセスし、メインメモリ60へはアクセスしない。ここでキャッシュメモリ50へのアクセスはメインメモリ60へのアクセスに比べて高速である。よって、キャッシュメモリ50を用いることにより、メモリアクセスに要する時間を短縮できるので、システム全体の性能を向上できる。
一方、アクセスするデータがキャッシュメモリ50に存在しなければ(キャッシュミス)、キャッシュ制御部30は、メインメモリ60からデータを読み出すと共にキャッシュメモリ50へ当該データを書き込む。これにより次に同じデータへのアクセスが発生した際には、キャッシュ制御部30は、キャッシュメモリ50へアクセスできる。
また、メインメモリ60への書き込みアクセスが発生した場合、キャッシュ制御部30は、メインメモリ60へデータを書き込むと共に、キャッシュメモリ50への当該データを書き込む。これによりキャッシュメモリ50とメインメモリ60とのデータの整合性が保証される。
キャッシュメモリ50は、セットアソシアティブ方式の構成を有する。このキャッシュメモリ50は、複数のウェイ51a〜51fを含む。なお、複数のウェイ51a〜51fを特に区別しない場合にはウェイ51と記す。
また、キャッシュメモリ50は、メモリマクロセルと呼ばれるハードウェア単位によって構成されている。キャッシュ制御装置101は、アドレス演算器、バッファ回路、及びバス調停回路などをこの単位ごとに備える。例えば、図1では、ウェイ51a及び51bが1つのメモリマクロセルに含まれており、同様にウェイ51c及び51dと、ウェイ51e及び51fとがそれぞれの1つのメモリマクロセルに含まれる。つまり、複数のウェイ51は、それぞれが複数のウェイ51を含む複数のグループ52a〜52c(メモリマクロセル)に分割されている。なお、グループ52a〜52cを特に区別しない場合にはグループ52と記す。
キャッシュ配分制御部40は、キャッシュメモリ50に含まれる複数のウェイ51のうち、いずれのタスクにも割り当てられていないウェイ51を、プロセッサ10及び11に実行される複数のタスクに割り当てるキャッシュ配分処理を行う。ここでタスクとは、オペレーティングシステムの管理下で動作するプログラムの起動、その実行、及び終了などの流れを一括管理する制御単位のことである。
また、キャッシュ配分制御部40は、グループ52ごとに、未割当ウェイをタスクに割り当てる処理を順時行う。
具体的には、キャッシュ配分制御部40は、1つのグループ52に未割当ウェイ(いずれのタスクにも割り当てられていないウェイ51)が含まれ、かつ、当該グループ52に複数のプロセッサ10及び11のうち一方のプロセッサにより実行されるタスクに割り当てられたウェイ51が含まれる場合、当該グループ52に含まれる未割当ウェイを、当該一方のプロセッサにより実行される複数のタスクのうちいずれかのタスクに割り当てる。
また、キャッシュ配分制御部40は、1つのグループ52に含まれる全てのウェイ51が、いずれのタスクにも割り当てられていない場合、当該キャッシュ配分処理により既に割り当てられたタスクの数が最も少ないプロセッサ10又は11が実行するタスクに、当該グループ52に含まれるウェイ51を割り当てる。
以下、キャッシュ配分制御部40について詳細に説明する。
図2は、本発明の実施の形態に係るキャッシュ配分制御部40の構成を示すブロック図である。また、図2は、プロセッサ10又は11がソフトウェア(プログラム)を実行することにより、オペレーティングシステムの一部の機能としてキャッシュ配分制御を行う場合の、キャッシュ配分制御部40の機能を模式的に表している。なお、キャッシュ配分制御部40の機能のうち一部又は全てをハードウェア(専用回路)で実現してもよい。
図2に示すようにキャッシュ配分制御部40は、ウェイ情報記憶部410と、有効位置探索部440と、ビット割当部450と、空きウェイ情報生成部460と、判定部470と、プロセッサ選択部480と、初期値設定部490とを備える。
ウェイ情報記憶部410は、本発明の記憶部に相当し、ウェイ情報411a、411b、411c…、412a、412b、412c…と、空きウェイ情報421及び422と、サーチポインタ431及び432とを記憶する。ここで、ウェイ情報411a、411b、411c…と、空きウェイ情報421と、サーチポインタ431とはプロセッサ10に対応し、412a、412b、412c…と、空きウェイ情報422と、サーチポインタ432とはプロセッサ11に対応する。
また、ウェイ情報411a、411b、411c…を特に区別しない場合には、ウェイ情報411と記し、ウェイ情報412a、412b、412c…を特に区別しない場合には、ウェイ情報412と記す。
ウェイ情報411及び412は、対応するプロセッサ10又は11が実行する複数のタスクのそれぞれに割り当てられたウェイ51を示す。
空きウェイ情報421及び422は、複数のウェイ51のそれぞれが、対応するプロセッサ10又は11が実行する複数のタスクに割り当てられているか否かを示す。
サーチポインタ431及び432は、プロセッサ10又は11ごとに設けられ、それぞれ複数のウェイ51のいずれかを指定する有効位置を示す。この有効位置は、後述する、ウェイ51を割り当てるプロセッサ10又は11の選択処理と、ウェイ51を割り当てるタスクの選択処理とに用いられる。
図3は、ウェイ情報記憶部410の初期状態の一例を示す図である。
図3に示すように、複数のウェイ情報411及び412は、プロセッサ10及び11上で動作するタスクごとに設けられる。各ウェイ情報411及び412は、ビット列を含む。このビット列は、右からビット0、1、2…の順で並んでいる。また、各ビットは、キャッシュメモリ50に含まれる各ウェイ51に対応しており、ビットnが有効(1を示す)ならばウェイnを当該タスクが使用できることを示す。また、ビットnが無効(0を示す)ならばウェイnを当該タスクが使用できないことを示す。このウェイ情報411及び412のビット幅はキャッシュメモリ50に含まれるウェイの数と同一である。例えば、図3に示す例では、ウェイの数は16であり、ウェイ情報411及び412も16ビットである。
空きウェイ情報421及び422はプロセッサ10及び11ごとに設けられる。この空きウェイ情報421及び422はビット列を含む。このビット列は、右からビット0、1、2…の順で並んでいる。また、各ビットは、キャッシュメモリ50に含まれる各ウェイ51に対応している。対応するプロセッサ10又は11に属するいずれかのタスクに割り当てられているウェイに対応するビットは「1」であり、いずれのタスクも割り当てられていないウェイに対応するビットは「0」となる。なお、図3では、ウェイ情報411及び412と、空きウェイ情報421及び422とに含まれるビット列の「0」は省略している。
サーチポインタ431及び432はプロセッサごとに設けられ、0以上の整数を保持する。サーチポインタ431が保持する数値は、ウェイ情報411及び空きウェイ情報421のビットの位置を表し、サーチポインタ432が保持する数値は、ウェイ情報412及び空きウェイ情報422のビットの位置を表している。また、サーチポインタ431及び432の値は、当該キャッシュ配分処理の間に、当該サーチポインタ431又は432が移動したビット数の和を示す。
また、サーチポインタ431及び432がウェイ情報411及び412のビット幅を超える数値を保持している場合は、ウェイ情報411及び412のビット幅に対する剰余の数値に当たるビットの位置を表す。例えば図3において、プロセッサ11のサーチポインタ432は「3」を保持し、ビット3を示している。また、例えば、プロセッサ10のサーチポインタ431が「38」を保持している場合、ビット幅は16であることから、38mod16=6となる。よって、サーチポインタ431は、ビット6を表している。
初期値設定部490は、各タスクの処理性能を保証するために、当該タスクの生成時に当該タスクが使用するウェイ51を決定する。また、初期値設定部490は、決定した各タスクが使用するウェイ51の情報を、ウェイ情報411及び412に初期値として設定する。例えば初期値設定部490は、図3に示すウェイ情報411及び412を、タスク生成時に初期値として設定する。
空きウェイ情報生成部460は、空きウェイ情報421及び422を生成し、ウェイ情報記憶部410に記憶する。具体的には、空きウェイ情報生成部460は、プロセッサ10(又は11)に含まれるタスクに対応する全てのウェイ情報411(又は412)の初期値の論理和を算出することにより、空きウェイ情報421及び422を生成する。
判定部470は、ウェイ情報411及び412の初期値を参照して、各グループ52に含まれる未割当ウェイの有無、及び割当状態を判定する。
プロセッサ選択部480は、判定部470の判定結果を用いて、未割当ウェイを割り当てるプロセッサ10又は11を選択する。
ビット割当部450は、本発明の割当部に相当し、プロセッサ選択部480により選択されたプロセッサ10又は11が実行する複数のタスクのうち1以上のタスクを選択し、選択したタスクに未割当ウェイを割り当てる。具体的には、ビット割当部450は、対応するサーチポインタ431又は432で指定される有効位置のウェイ51が割り当てられているタスクを選択する。
有効位置探索部440は、本発明のウェイ指定部に相当し、サーチポインタ431又は432に、対応するプロセッサ10又は11のタスクに割り当てられているウェイ51を指定させる。また、有効位置探索部440は、ビット割当部450により、プロセッサ10又は11のタスクにウェイ51が割り当てられるごとに、サーチポインタ431又は432が指定するウェイ51を、対応するプロセッサのタスクが割り当てられているウェイ51のうち、空きウェイ情報421及び422のビット列の順で次に位置するウェイ51に移動させる。
具体的には、有効位置探索部440は、ビット割当部450によりタスクにウェイ51が割り当てられる毎に、有効位置探索処理によりプロセッサ10(又は11)の有効位置を探索し、探索した有効位置をサーチポインタ431(又は432)にセットする。
ここで、有効位置探索処理とは、サーチポインタ431及び432を順時1ずつインクリメントしていき、次に空きウェイ情報421又は422が有効「1」となるビットを探索する処理である。
言い換えると、有効位置探索部440は、各プロセッサ10又は11の、割当済みタスク(初期値においてウェイが割り当てられているタスク)をビット列の順に順番に選択することを繰り返す。
以下、キャッシュ配分制御部40の動作を、具体例を交えて説明する。
図4は、キャッシュ配分制御部40によるキャッシュ配分制御処理の動作の流れを示すフローチャートである。
まず、初期値設定部490は、図3に示すウェイ情報411及び412を初期値として設定する。また、図3に示すように、ウェイ51は16個あり、各メモリマクロセルは2個のウェイ51を含むとする。つまり、16個のウェイ51は、2個ずつ8個のグループ52に分割されているとする。また、各プロセッサ10及び11は、それぞれ3個のタスクを実行するとする。
まず、空きウェイ情報生成部460は、空きウェイ情報421及び422をプロセッサ10及び11ごとに作成する(ステップS1001)。この処理により図3に示す空きウェイ情報421及び422が生成される。具体的には、プロセッサ10のタスク0、1、2のウェイ情報411a〜411cの論理和は、ビット0、6、7で「1」となり、それ以外のビットで「0」となる。また、プロセッサ11のタスク0、1、2のウェイ情報412a〜421cの論理和は、ビット3及び10で「1」となり、それ以外のビットで「0」となる。
次に、有効位置探索部440は、有効位置探索処理によりプロセッサ10の有効位置を探索し、探索した有効位置をサーチポインタ431にセットする(ステップS1002)。
以下、有効位置探索処理について詳細に説明する。
図5は、有効位置探索部440による有効位置探索処理の流れを示すフローチャートである。
まず、有効位置探索部440は、指定されたプロセッサnのサーチポインタ431又は432を取り出し(ステップS1101)、取り出したサーチポインタ431又は432がウェイ幅を一周するまで以下に示すステップS1103及びS1104の処理を繰り返す(ステップS1102)。
ここでは、有効位置探索部440は、プロセッサ10のサーチポインタ431の初期値「0」を取り出す。
まず、有効位置探索部440は、指定されたプロセッサnのサーチポインタ431又は432で指定されるビットのウェイ51が、割当済みウェイであるか否かを判定する(ステップS1103)。具体的には、有効位置探索部440は、空きウェイ情報421又は422に含まれる、サーチポインタ431又は432で指定されるビットが、有効「1」であるか、無効「0」であるかを判定する。
ここでは、サーチポインタ431は「0」であり、空きウェイ情報421のビット0は、有効「1」なので(ステップS1103でYes)、有効位置探索部440は、当該ビット0をプロセッサ10の有効位置とし、サーチポインタ431に「0」をセットする。
再度、図4を参照して説明を行う。
次に、有効位置探索部440は、有効位置探索処理によりプロセッサ11の有効位置を探索し、探索した有効位置をサーチポインタ432にセットする(ステップS1003)。
この場合、図5に示すように、まず、有効位置探索部440は、プロセッサ11のサーチポインタ432の初期値「0」を取り出す(ステップS1101)。
次に、有効位置探索部440は、空きウェイ情報422の、サーチポインタ432で指定されるビット0が有効「1」であるか、無効「0」であるかを判定する(ステップS1103)。ここでは、空きウェイ情報422のビット0は、無効「0」なので(ステップS1103でNo)、有効位置探索部440は、サーチポインタ432に1を加算する(ステップS1104)。
次に、有効位置探索部440は、サーチポインタ432で指定されるビット1が有効「1」であるか、無効「0」であるかを判定する(ステップS1103)。ここでは、空きウェイ情報422のビット1は、無効「0」なので(ステップS1103でNo)、有効位置探索部440は、サーチポインタ432に更に1を加算する(ステップS1101)。
有効位置探索部440は、サーチポインタ432が、空きウェイ情報422で有効「1」が示されるビットに到達するまで、順時、ステップS1103及びS1104の処理を繰り返す。この例では、サーチポインタ432が「3」になるまで、ステップS1103及びS1104の処理が繰り返される。これにより、有効位置探索部440は、ビット3をプロセッサ11の有効位置とし、サーチポインタ432に「3」をセットする。
また、サーチポインタ431又は432が一周した場合(ステップS1102でYes)、有効位置探索部440は、サーチポインタ431又は432に最大値を設定したうえでループを終了する(ステップS1105)。これは有効なビットが存在しないことを示しており、サーチポインタ431又は432に最大値を設定することにより、後述する大小比較(ステップS1006)の際に必ず大きいと判断され、他の有効なビットが存在するタスクが選択されるようになる。例えば、この最大値は(ビット幅)×(ビット幅)である。
再度、図4を参照して説明を行う。
次に、キャッシュ配分制御部40は、空きウェイ情報421及び422を、各グループに対応する2ビットずつに区切り、各2ビットに対して、以下に示すステップS1005からステップS1019までの処理を順時行う(ステップS1004)。
まず、判定部470は、空きウェイ情報421及び422のビットi及びi+1の状態(有効又は無効)を判定する(ステップS1005)。以下、空きウェイ情報421及び422のビットi及びi+1の状態を、「(ビットi+1状態、ビットi状態)」として表す。
ここで判定部470は、ウェイ情報411及び412の初期値において、1つのグループ52に含まれる複数のウェイ51がいずれもタスクに割り当てられていない(ステップS1005で、プロセッサ10=(0、0)かつプロセッサ11=(0、0))か、1以上のウェイ51がタスクに割り当てられ、かつ1以上のウェイ51がタスクに割り当てられていない(ステップS1005で、プロセッサ10=(0、1)かつプロセッサ11=(0、0)、又は、プロセッサ10=(1、0)かつプロセッサ11=(0、0)、又は、プロセッサ10=(0、0)かつプロセッサ11=(0、1)、又は、プロセッサ10=(0、0)かつプロセッサ11=(1、0))か、全てのウェイ51がタスクに割り当てられている(ステップS1005で、それ以外)かを判定する。
また、プロセッサ選択部480は、1以上のウェイ51がタスクに割り当てられ、かつ1以上のウェイ51がタスクに割り当てられていない場合、当該割り当てられているタスクを実行するプロセッサ10又は11を選択する。
また、プロセッサ選択部480は、1つのグループ52に含まれるウェイ51がいずれもタスクに割り当てられていない場合、サーチポインタ431及び432の数値が小さいプロセッサ10又は11を選択する(ステップS1006)。
また、全てのウェイ51がタスクに割り当てられている場合、キャッシュ配分制御部40は、タスクの配分を行わず、次のグループ52の処理に移行する。
この例では、キャッシュ配分制御部40は、グループ0に含まれるビット0及びビット1の状態を判定する。プロセッサ10の空きウェイ情報421のビット1及びビット0は、(0、1)であり、プロセッサ11の空きウェイ情報422のビット1及びビット0は、(0、0)である。つまり、プロセッサ10が実行するタスクにウェイ51が割り当てられているので、プロセッサ選択部480は、プロセッサ10を選択する。次に、ビット割当部450は、タスクが割り当てられていないビットi+1(ビット1)に、プロセッサ選択部480により選択されたプロセッサ10のタスクを割り当てるビット割当処理を行う(ステップS1011)。
ここでビット割当処理とは、未割当ウェイをタスクに割り当てる処理である。
以下、ビット割当処理について詳細に説明する。
図6は、ビット割当部450によるビット割当処理の流れを示すフローチャートである。
ビット割当部450は、プロセッサ選択部480により選択されたプロセッサnの全てのタスク0〜mについて、ステップS1202からステップS1204までの処理を順時行う(ステップS1201)。
まず、ビット割当部450は、プロセッサnのタスク0〜mのうちタスクi(i=0〜m)を選択する。ビット割当部450は、選択したタスクiの、サーチポインタ431又は432で指定されるビットが有効「1」であるか、無効「0」であるかをウェイ情報411又は412を参照して判定する(ステップS1202)。
タスクiの、サーチポインタ431又は432で指定されるビットが有効「1」である場合(ステップS1202でYes)、ビット割当部450は、空きビットに有効ビットをコピーする(ステップS1203)。すなわち、ビット割当部450は、タスクiのウェイ情報411又は412の空きビットを有効「1」に変更する。ここで、空きビットとは、ビットi及びビットi+1のうち、いずれのタスクも割り当てられていない(空きウェイ情報421又は422で無効「0」の)ビットである。
次に、ビット割当部450は、プロセッサnの別のタスクを選択し、選択したタスクに対して、ステップS1202の処理を行う。
一方、タスクiの、サーチポインタ431又は432で指定されるビットが無効「0」である場合(ステップS1202でNo)、ビット割当部450は、当該タスクiのウェイ情報411又は412を変更せず、次のタスクに対して、ステップS1202の処理を行う。
この例では、図3に示すように、プロセッサ10のサーチポインタ431は「0」であり、ウェイ情報411a〜411cのビット0のうち、ウェイ情報411aのビット0のみが有効「1」なので、ビット割当部450は、図7に示すように、ウェイ情報411aのビット1を有効「1」にすることにより、ビット1のウェイ51をプロセッサ10のタスク0に割り当てる。
再度、図4を参照して説明する。
次に、有効位置探索部440は、プロセッサ10の有効位置を探索する(ステップS1012)。ここでは、図7に示すように有効位置探索部440は、ビット6をプロセッサ10の有効位置とし、サーチポインタ431に「6」をセットする。なお、ここでの有効位置探索処理は、上述した図5に示す処理と同様であるが、ステップS1101において、元にセットされているサーチポインタ431又は432の値(この例では「0」)に、1を加算した後、ステップS1102以降の処理を行う。また、ステップS1008、S1010、S1014、S1016及びS1018も同様である。
以上により、グループ0に対する処理は終了し、次に、グループ1に対する処理が行われる。
まず、判定部470は、グループ1に含まれるビット3及びビット2の状態を判定する(ステップS1005)。プロセッサ10の空きウェイ情報421のビット3及びビット2は、(0、0)であり、プロセッサ11の空きウェイ情報422のビット3及びビット2は、(1、0)であるので、プロセッサ選択部480はプロセッサ11を選択する。次に、ビット割当部450は、ビットi(ビット2)に、プロセッサ11のタスクを割り当てるビット割当処理を行う(ステップS1017)。
ここで、図3に示すように、プロセッサ11のサーチポインタ432は「3」であり、ウェイ情報412a〜412cのビット3のうち、ウェイ情報412aのビット3のみが有効「1」なので、ビット割当部450は、ウェイ情報412aのビット2を有効「1」にすることにより、ビット2のウェイ51をプロセッサ11のタスク0に割り当てる。
次に、有効位置探索部440は、プロセッサ11の有効位置を探索する(ステップS1018)。ここでは、図7に示すように有効位置探索部440は、ビット10をプロセッサ11の有効位置とし、サーチポインタ432に「10」をセットする。
以上により、グループ1に対する処理は終了し、次に、グループ2に対する処理が行われる。
まず、判定部470は、グループ2に含まれるビット5及びビット4の状態を判定する(ステップS1005)。プロセッサ10の空きウェイ情報421のビット5及びビット4は、(0、0)であり、プロセッサ11の空きウェイ情報422のビット5及びビット4は、(0、0)である。つまり、1つのグループ52に含まれるウェイ51がいずれもタスクに割り当てられていないので、プロセッサ選択部480は、プロセッサ10のサーチポインタ431と、プロセッサ11のサーチポインタ432とを比較し、サーチポインタの数値が小さいプロセッサを、空きビットを割り当てるプロセッサxに決定する(ステップS1006)。
ここでは、図7に示すように、プロセッサ10のサーチポインタ431は「6」であり、プロセッサ11のサーチポインタ432は「10」であるので、プロセッサ選択部480は、プロセッサ10を空きビットを割り当てるプロセッサxに決定する。
次に、ビット割当部450は、プロセッサx(プロセッサ10)のタスクにビットi(ビット4)を割り当てる(ステップS1007)。ここでは、図7に示すように、プロセッサ10のサーチポインタ431は「6」であり、ウェイ情報411a〜411cのビット6のうち、ウェイ情報411bのビット6のみが有効「1」なので、ビット割当部450は、図8に示すように、ウェイ情報411bのビット4を有効「1」にすることにより、ビット4のウェイ51をプロセッサ10のタスク1に割り当てる。
次に、有効位置探索部440は、プロセッサx(プロセッサ10)の有効位置を探索する(ステップS1008)。ここでは、有効位置探索部440は、ビット7をプロセッサ10の有効位置とし、サーチポインタ431に「7」をセットする。
次に、ビット割当部450は、プロセッサx(プロセッサ10)のタスクにビットi+1(ビット5)を割り当てる(ステップS1009)。ここでは、プロセッサ10のサーチポインタ431は「7」であり、ウェイ情報411a〜411cのビット7のうち、ウェイ情報411cのビット7のみが有効「1」なので、ビット割当部450は、ウェイ情報411cのビット5を有効「1」にすることにより、ビット5のウェイ51をプロセッサ10のタスク2に割り当てる。
次に、有効位置探索部440は、プロセッサx(プロセッサ10)の有効位置を探索する(ステップS1010)。ここでは、有効位置探索部440は、ビット0をプロセッサ10の有効位置とし、サーチポインタ431に「16」をセットする。
以上により、グループ2に対する処理は終了し、次に、グループ3に対する処理が行われる。
まず、判定部470は、グループ3に含まれるビット7及びビット6の状態を判定する(ステップS1005)。プロセッサ10の空きウェイ情報421のビット7及びビット6は、(1、1)であり、プロセッサ11の空きウェイ情報422のビット7及びビット6は、(0、0)である。つまり、全てのウェイ51がタスクに割り当てられているので、キャッシュ配分制御部40は、ウェイ情報411及び412を変更しない。
以上により、グループ3に対する処理は終了し、次に、グループ4に対する処理が行われる。
まず、判定部470は、グループ4に含まれるビット9及びビット8の状態を判定する(ステップS1005)。プロセッサ10の空きウェイ情報421のビット9及びビット8は、(0、0)であり、プロセッサ11の空きウェイ情報422のビット9及びビット8は、(0、0)であるので、次に、プロセッサ選択部480は、プロセッサ10のサーチポインタ431「16」と、プロセッサ11のサーチポインタ432「6」とを比較し、サーチポインタの数値が小さいプロセッサ11を、ビット9及びビット8を割り当てるプロセッサxに決定する(ステップS1006)。
次に、ビット割当部450は、プロセッサ10のタスクにビット8を割り当てる(ステップS1007)。ここでは、プロセッサ11のサーチポインタ432は「10」であり、ウェイ情報412a〜412cのビット10のうち、ウェイ情報412b及び412cのビット10が有効「1」なので、ビット割当部450は、図8に示すように、ウェイ情報412b及び412cのビット8を有効「1」にすることにより、ビット8のウェイ51をプロセッサ11のタスク2及びタスク3に割り当てる。
次に、有効位置探索部440は、プロセッサ11の有効位置を探索する(ステップS1008)。ここでは、有効位置探索部440は、ビット3をプロセッサ11の有効位置とし、サーチポインタ432に「19」をセットする。
次に、ビット割当部450は、プロセッサ11のタスクにビット9を割り当てる(ステップS1009)。ここでは、プロセッサ11のサーチポインタ432は「19」(ビット3)であり、ウェイ情報412a〜412cのビット3のうち、ウェイ情報412aのビット3のみが有効「1」なので、ビット割当部450は、図8に示すように、ウェイ情報412aのビット9を有効「1」にすることにより、ビット9のウェイ51をプロセッサ11のタスク0に割り当てる。
次に、有効位置探索部440は、プロセッサ11の有効位置を探索する(ステップS1010)。ここでは、有効位置探索部440は、ビット10をプロセッサ11の有効位置とし、サーチポインタ432に「26」をセットする。
以上により、グループ4に対する処理は終了する。以降、グループ5〜7に対して、同様の処理が行われる。
なお、ステップS1005において、プロセッサ10の空きウェイ情報421のビットi+1及びビットiが、(1、0)であり、プロセッサ11の空きウェイ情報422のビットi+1及びビットiが、(0、0)の場合には、次に、ビット割当部450は、ビットiに、プロセッサ10のタスクを割り当てるビット割当処理を行う(ステップS1013)。次に、有効位置探索部440は、プロセッサ10の有効位置を探索し(ステップS1014)、キャッシュ配分制御部40は、次のグループに対する処理を行う(ステップS1004)。
また、ステップS1005において、プロセッサ10の空きウェイ情報421のビットi+1及びビットiが、(0、0)であり、プロセッサ11の空きウェイ情報422のビットi+1及びビットiが、(0、1)の場合には、次に、ビット割当部450は、ビットi+1に、プロセッサ11のタスクを割り当てるビット割当処理を行う(ステップS1016)。次に、有効位置探索部440は、プロセッサ11の有効位置を探索し(ステップS1017)、キャッシュ配分制御部40は、次のグループに対する処理を行う(ステップS1004)。
また、ステップS1005において、上記以外の場合、つまり、ビットi+1及びビットiのウェイが、共にタスクに割り当てられている場合、キャッシュ配分制御部40は、タスクの割り当てを行わず、次のグループに対する処理を行う(ステップS1004)。
以上説明したように、本発明の実施の形態に係るキャッシュ制御装置101は、各タスクの処理性能を保証できるように、ウェイ情報411及び412に初期値を設定する。こにより、キャッシュ制御装置101は、理性能を保証する必要があるシステムにおいてタスクごとにキャッシュ容量を確保できる。
また、キャッシュ制御装置101は、余っている未割当ウェイをタスクに割り当てることができるので、余剰資源をタスクに割り当てることができる。
さらに、キャッシュ制御装置101は、未割当ウェイを、当該未割当ウェイと同一のグループ52(メモリマクロセル)のウェイ51が割り当てられているタスクと同じプロセッサ10又は11のタスクに割り当てる。これにより、1つのグループ52に含まれるウェイ51は、同一のプロセッサ10又は11が実行するタスクに割り当てられる。よって、キャッシュ制御装置101は、異なるプロセッサ10及び11が同一のグループ52に含まれるウェイ51にアクセスした場合に発生するキャッシュアクセスの衝突を回避できる。このように、本発明の実施の形態に係るキャッシュ制御装置101は、アクセス遅延の発生を抑制できる。
また、キャッシュ制御装置101は、1つのグループ52に含まれる全てのウェイ51が、いずれのタスクにも割り当てられていない場合、サーチポインタ431又は432の数値が最も小さいプロセッサ10又は11が実行するタスクに、当該グループ52に含まれるウェイ51を割り当てる。これにより、キャッシュ制御装置101は、ウェイ51が割り当てられている数が少ないプロセッサ10又は11のタスクに、優先的にウェイ51を割り当てることができる。これにより、キャッシュ制御装置101は、各プロセッサ10又は11に均等にウェイ51を配分できる。
また、有効位置探索部440は、ウェイ51をタスクに割り当てるたびに、サーチポインタ431及び432を更新することにより、対応するプロセッサ10又は11が実行する複数のタスクを予め定められた順に順番に選択することを繰り返す。また、ビット割当部450は、選択されたタスクに、空きウェイ51を割り当てる。これにより、キャッシュ制御装置101は、各プロセッサ10又は11が実行する複数のタスクに、均等にウェイ51を配分できる。
なお、キャッシュ配分制御部40がキャッシュ配分制御処理を実施する契機を特定していないが、タスクの起動又はタスクの終了時に当該処理を実施することにより、タスクの処理に影響を与えることなく未割当ウェイを配分できる。
また、上記説明では、各グループ52は、それぞれ2個のウェイ51を含むとしたが、3個以上のウェイ51を含んでもよい。また、各グループ52が異なる数のウェイ51を含んでもよい。
また、上記実施の形態に係るキャッシュ制御装置101に含まれる各処理部は典型的には、CPU等のプロセッサがプログラム(ソフトウェア)を実行することにより実現される。
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録されたCD−ROM等の記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介したソフトウェアダウンロード等により流通させることができるのは言うまでもない。
なお、上記実施の形態に係るキャッシュ制御装置101に含まれる各処理部の一部又は全てを集積回路であるLSIとして実現してもよい。これらは個別に1チップ化されてもよいし、一部又はすべてを含むように1チップ化されてもよい。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
以上のように、本発明は、キャッシュ制御装置及びキャッシュ制御方法に適用できる。また、本発明は、複数のプロセッサ及びキャッシュメモリを含むプロセッサシステムに適用できる。
10、11 プロセッサ
20 メモリバス
30 キャッシュ制御部
40、240 キャッシュ配分制御部
50 キャッシュメモリ
51、51a、51b、51c、51d、51e、51f ウェイ
52、52a、52b、52c グループ
60 メインメモリ
100、200 プロセッサシステム
101、201 キャッシュ制御装置
410 ウェイ情報記憶部
411、411a、411b、411c、412、412a、412b、412c ウェイ情報
421、422 空きウェイ情報
431、432 サーチポインタ
440 有効位置探索部
450 ビット割当部
460 空きウェイ情報生成部
470 判定部
480 プロセッサ選択部
490 初期値設定部

Claims (9)

  1. 複数のプロセッサにより共有されるセットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御装置であって、
    前記キャッシュメモリは複数のウェイを含み、
    前記複数のウェイは、1以上のウェイを含む複数のグループに分割されており、
    前記キャッシュ制御装置は、
    前記複数のプロセッサにより実行される複数のタスクに前記ウェイを割り当てるキャッシュ配分処理を行うキャッシュ配分制御部を備え、
    前記キャッシュ配分制御部は、1つの前記グループに、いずれのタスクにも割り当てられていない未割当ウェイが含まれ、かつ、当該グループに前記複数のプロセッサに含まれる一のプロセッサにより実行されるタスクに割り当てられたウェイが含まれる場合、当該グループに含まれる前記未割当ウェイを、前記一のプロセッサにより実行される複数のタスクのうちいずれかのタスクに割り当てる
    キャッシュ制御装置。
  2. 前記キャッシュ配分制御部は、1つの前記グループに含まれる全てのウェイが、いずれのタスクにも割り当てられていない場合、当該キャッシュ配分処理により既に割り当てられたタスクの数である割当タスク数が最も少ないプロセッサが実行するタスクに、当該グループに含まれるウェイを割り当てる
    請求項1記載のキャッシュ制御装置。
  3. 前記キャッシュ制御装置は、さらに、
    前記複数のタスクのそれぞれに割り当てられたウェイを示すウェイ情報を記憶する記憶部を備え、
    前記キャッシュ配分制御部は、前記ウェイ情報を参照して前記未割当ウェイを判定する
    請求項1記載のキャッシュ制御装置。
  4. 前記記憶部は、さらに、前記各プロセッサに対応して設けられ、前記複数のウェイのうちいずれかを指定するサーチポインタを記憶し、
    前記キャッシュ配分制御部は、
    前記サーチポインタに、対応するプロセッサのタスクに割り当てられているウェイを指定させるウェイ指定部と、
    前記プロセッサが実行する複数のタスクのうち、当該プロセッサに対応する前記サーチポインタで指定されているウェイに割り当てられているタスクに、未割当ウェイを割り当てる割当部とを備え、
    前記ウェイ指定部は、前記割当部により当該プロセッサのタスクにウェイが割り当てられるごとに、前記サーチポインタが指定するウェイを、当該プロセッサのタスクが割り当てられているウェイのうち、予め定められた順で次に位置するウェイに移動させる
    請求項3記載のキャッシュ制御装置。
  5. 前記キャッシュ配分制御部は、さらに、
    前記各プロセッサに対応して設けられ、ビット列を含む空きウェイ情報を生成したうえで、前記記憶部に記憶する空きウェイ情報生成部を備え、
    前記ビット列は、前記複数のウェイのそれぞれに対応し、対応するウェイが、当該プロセッサが実行する複数のタスクに割り当てられているか否かを示すビットを含み、
    前記ウェイ指定部は、前記割当部により当該プロセッサのタスクにウェイを割り当てるごとに、前記サーチポインタが指定するウェイを、当該プロセッサのタスクが割り当てられているウェイのうち、前記ビット列の順で次に位置するウェイに移動させる
    請求項4記載のキャッシュ制御装置。
  6. 前記サーチポインタの値は、前記ウェイ指定部により移動された前記ビット列におけるビット数の和であり、
    キャッシュ配分制御部は、1つの前記グループに含まれる全てのウェイが、いずれのタスクにも割り当てられていない場合、前記サーチポインタの値が最も少ないプロセッサが実行するタスクに、当該グループに含まれるウェイを割り当てる
    請求項5記載のキャッシュ制御装置。
  7. 前記キャッシュ配分制御部は、一の前記プロセッサにより実行される複数のタスクのいずれにも、前記ウェイが割り当てられていない場合、当該一のプロセッサの前記サーチポインタの値を最大値に設定する
    請求項6記載のキャッシュ制御装置。
  8. 前記キャッシュ配分制御部は、前記タスクの生成又は削除時に、前記キャッシュ配分処理を行う
    請求項1記載のキャッシュ制御装置。
  9. 複数のプロセッサにより共有されるセットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御方法であって、
    前記キャッシュメモリは複数のウェイを含み、
    前記複数のウェイは、1以上のウェイを含む複数のグループに分割されており、
    前記キャッシュ制御方法は、
    前記複数のプロセッサにより実行される複数のタスクに前記ウェイを割り当てるキャッシュ配分処理を行うキャッシュ配分制御ステップを含み、
    前記キャッシュ配分制御ステップでは、1つの前記グループに、いずれのタスクにも割り当てられていない未割当ウェイが含まれ、かつ、当該グループに前記複数のプロセッサに含まれる一のプロセッサにより実行されるタスクに割り当てられたウェイが含まれる場合、当該グループに含まれる前記未割当ウェイを、前記一のプロセッサにより実行される複数のタスクのうちいずれかのタスクに割り当てる
    キャッシュ制御方法。
JP2009094361A 2009-04-08 2009-04-08 キャッシュ制御装置及びキャッシュ制御方法 Pending JP2010244435A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009094361A JP2010244435A (ja) 2009-04-08 2009-04-08 キャッシュ制御装置及びキャッシュ制御方法
PCT/JP2009/006668 WO2010116431A1 (ja) 2009-04-08 2009-12-07 キャッシュ制御装置及びキャッシュ制御方法
US13/253,456 US8868835B2 (en) 2009-04-08 2011-10-05 Cache control apparatus, and cache control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009094361A JP2010244435A (ja) 2009-04-08 2009-04-08 キャッシュ制御装置及びキャッシュ制御方法

Publications (1)

Publication Number Publication Date
JP2010244435A true JP2010244435A (ja) 2010-10-28

Family

ID=42935743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009094361A Pending JP2010244435A (ja) 2009-04-08 2009-04-08 キャッシュ制御装置及びキャッシュ制御方法

Country Status (3)

Country Link
US (1) US8868835B2 (ja)
JP (1) JP2010244435A (ja)
WO (1) WO2010116431A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112016007298T5 (de) 2016-09-30 2019-06-13 Mitsubishi Electric Corporation Informationsverarbeitungsgerät

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095467A1 (en) * 2011-12-21 2013-06-27 Intel Corporation A balanced p-lru tree for a "multiple of 3" number of ways cache
JP6135392B2 (ja) * 2013-08-16 2017-05-31 富士通株式会社 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US9652400B2 (en) 2014-12-14 2017-05-16 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
WO2016097812A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
US9811468B2 (en) 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
EP3055775B1 (en) 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
EP3066571B1 (en) 2014-12-14 2018-06-13 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by ways on memory access type
US9846648B2 (en) * 2015-05-11 2017-12-19 Intel Corporation Create page locality in cache controller cache allocation
US10180908B2 (en) * 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07248967A (ja) 1994-03-11 1995-09-26 Hitachi Ltd メモリ制御方式
JP2002342163A (ja) 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP3620473B2 (ja) 2001-06-14 2005-02-16 日本電気株式会社 共有キャッシュメモリのリプレイスメント制御方法及びその装置
US6516387B1 (en) * 2001-07-30 2003-02-04 Lsi Logic Corporation Set-associative cache having a configurable split and unified mode
JP4664586B2 (ja) * 2002-11-11 2011-04-06 パナソニック株式会社 キャッシュ制御装置、キャッシュ制御方法、コンピュータシステム
US7246202B2 (en) 2002-11-11 2007-07-17 Matsushita Electric Industrial Co., Ltd. Cache controller, cache control method, and computer system
US7325097B1 (en) * 2003-06-26 2008-01-29 Emc Corporation Method and apparatus for distributing a logical volume of storage for shared access by multiple host computers
EP1684180A4 (en) * 2003-11-12 2008-10-29 Matsushita Electric Ind Co Ltd CACHE MEMORY AND CONTROL PROCEDURE THEREFOR
US7237067B2 (en) * 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
JP2008097572A (ja) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器
JP2008257578A (ja) * 2007-04-06 2008-10-23 Toshiba Corp 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112016007298T5 (de) 2016-09-30 2019-06-13 Mitsubishi Electric Corporation Informationsverarbeitungsgerät
US10949360B2 (en) 2016-09-30 2021-03-16 Mitsubishi Electric Corporation Information processing apparatus

Also Published As

Publication number Publication date
WO2010116431A1 (ja) 2010-10-14
US8868835B2 (en) 2014-10-21
US20120030430A1 (en) 2012-02-02

Similar Documents

Publication Publication Date Title
WO2010116431A1 (ja) キャッシュ制御装置及びキャッシュ制御方法
US11537427B2 (en) Handling memory requests
US20210157596A1 (en) Executing Memory Requests Out of Order
US7373475B2 (en) Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures
US10489204B2 (en) Flexible in-order and out-of-order resource allocation
US20230297425A1 (en) Allocation of memory resources to simd workgroups
US10168957B2 (en) Directed placemat of data in memory
US9645937B2 (en) Expedited servicing of store operations in a data processing system
US11989816B2 (en) Allocation of resources to tasks
US9824014B2 (en) Expedited servicing of store operations in a data processing system
US8510529B2 (en) Method for generating program and method for operating system
US9632943B2 (en) Expedited servicing of store operations in a data processing system
US20170060759A1 (en) Expedited servicing of store operations in a data processing system
GB2572248A (en) Resource allocation
US20240230612A1 (en) Handling memory requests
US20230004437A1 (en) Allocation of Resources to Tasks
WO2023004347A1 (en) Run-time configurable architectures
JP2011008607A (ja) メモリ割当装置及びメモリ割当方法
CN114730262A (zh) 用于功能单元分配的方法和装置