JP2015060376A - Cache memory control program, processor including cache memory, and cache memory control method - Google Patents

Cache memory control program, processor including cache memory, and cache memory control method Download PDF

Info

Publication number
JP2015060376A
JP2015060376A JP2013193121A JP2013193121A JP2015060376A JP 2015060376 A JP2015060376 A JP 2015060376A JP 2013193121 A JP2013193121 A JP 2013193121A JP 2013193121 A JP2013193121 A JP 2013193121A JP 2015060376 A JP2015060376 A JP 2015060376A
Authority
JP
Japan
Prior art keywords
cache
area
dedicated
memory
cache area
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.)
Granted
Application number
JP2013193121A
Other languages
Japanese (ja)
Other versions
JP6241164B2 (en
Inventor
正俊 藤井
Masatoshi Fujii
正俊 藤井
久 日野原
Hisashi Hinohara
久 日野原
康弘 弓場
Yasuhiro Yuba
康弘 弓場
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 JP2013193121A priority Critical patent/JP6241164B2/en
Publication of JP2015060376A publication Critical patent/JP2015060376A/en
Application granted granted Critical
Publication of JP6241164B2 publication Critical patent/JP6241164B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

PROBLEM TO BE SOLVED: To improve cache memory utilization efficiency.SOLUTION: Provided is a processor-readable cache memory control program for causing a processor to execute a cache memory control process, the cache memory control process including: a stack memory cache area group allocating step of allocating a stack memory cache area group including a plurality of cache areas to a stack memory area for a sub-routine invoked in a program; and a cache area allocating step of maintaining the plurality of cache areas in the stack memory cache area group in a first dedicated cache area allocated to an active first sub-routine, second dedicated cache areas allocated to a second number of second sub-routines invoked just before the first sub-routine, and a third number of free cache areas.

Description

本発明は,キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法に関する。   The present invention relates to a cache memory control program, a processor incorporating a cache memory, and a cache memory control method.

近年のサーバシステムは,プロセッサの高性能化が進んでいる。しかし,CPUによるメモリアクセス速度が遅く,その点が性能向上のネックになっている。プロセッサはCPUに加えてキャッシュメモリを有し,CPUによるメモリアクセスが発生すると,まずキャッシュメモリがチェクされて,キャッシュヒットすればキャッシュメモリにアクセスが行われる。そして,キャッシュミスヒットした場合にメインメモリにアクセスが行われる。キャッシュメモリへのアクセスは,メインメモリへのアクセスと比べると100〜300倍高速である。したがって,CPUによるメモリアクセスの性能を向上させるためには,できるだけキャッシュヒットさせてメインメモリへのアクセスを発生させないことが重要である。   In recent server systems, the performance of processors has been improved. However, the memory access speed by the CPU is slow, which is a bottleneck for improving performance. The processor has a cache memory in addition to the CPU. When a memory access by the CPU occurs, the cache memory is checked first, and if a cache hit occurs, the cache memory is accessed. When a cache miss occurs, the main memory is accessed. Access to the cache memory is 100 to 300 times faster than access to the main memory. Therefore, in order to improve the memory access performance by the CPU, it is important that the cache is hit as much as possible and the main memory is not accessed.

一方で,プログラムでは関数やモジュールなどのサブルーチンが階層的に呼び出される。この関数やモジュール内のローカル変数は,関数やモジュールが呼び出される(call)と必要になり,関数やモジュールが終了して呼び戻される(return)と不要になる。そこで,関数やモジュールが呼び出されるとそれに対するスタックメモリ領域が確保され,そのローカル変数がスタックメモリ領域内に記録される。そして,関数やモジュールが終了すると,そのスタックメモリ領域は開放される。   On the other hand, subroutines such as functions and modules are called hierarchically in the program. This local variable in the function or module becomes necessary when the function or module is called (call), and becomes unnecessary when the function or module is terminated and returned (return). Therefore, when a function or module is called, a stack memory area for the function or module is secured, and the local variable is recorded in the stack memory area. When the function or module ends, the stack memory area is released.

各プログラムのスタックメモリ領域は,メインメモリ内に形成される。そして,CPUがローカル変数を読み書きする場合は,メインメモリ内のスタックメモリ領域にアクセスする。このメモリアクセスにおいても,CPU内のキャッシュメモリが利用される。すなわち,スタックメモリ領域内のローカル変数に対するメモリアクセス時にも,キャッシュメモリのキャッシュヒット判定が行われ,キャッシュヒットすればキャッシュメモリ内のデータにアクセスされ,キャッシュミスヒットすればメインメモリ内のスタックメモリ領域内のデータにアクセスされる。   A stack memory area for each program is formed in the main memory. When the CPU reads / writes local variables, it accesses the stack memory area in the main memory. The cache memory in the CPU is also used for this memory access. That is, when a memory access to a local variable in the stack memory area is performed, a cache hit determination of the cache memory is performed. If a cache hit occurs, data in the cache memory is accessed, and if a cache miss occurs, the stack memory area in the main memory is accessed. Is accessed.

スタックメモリ領域内のデータに対するキャッシュメモリの制御については,以下の特許文献などがある。   Regarding the control of the cache memory for the data in the stack memory area, there are the following patent documents.

特開2001−273137号公報JP 2001-273137 A 特開2004−38345号公報JP 2004-38345 A

上記のようなスタックメモリ領域とキャッシュメモリにおいて次のような課題がある。ローカル変数は呼び出された関数やモジュールを実行する際に特に頻繁に利用されるデータであるので,確実にキャッシュヒットすることが望まれる。   The stack memory area and the cache memory as described above have the following problems. Since local variables are data that is used particularly frequently when executing a called function or module, it is desirable to ensure a cache hit.

しかしながら,既に呼び出された関数やモジュールのローカル変数は,一旦キャッシュメモリ内に格納されるが,その後呼び出された関数やモジュールが長時間にわたって実行される場合は,実行中の関数やモジュールのローカル関数に対するメモリアクセスにより,キャッシュメモリ内に格納されていた以前に呼び出された関数やモジュールのローカル変数が追い出されてしまう。そのため,実行中の関数やモジュールが終了して以前に呼び出された関数やモジュールの実行が再開したときに,そのローカル変数へのメモリアクセスでキャッシュミスヒットが増大することがある。   However, the local variable of the function or module that has already been called is temporarily stored in the cache memory. However, if the called function or module is executed for a long time, the local function of the function or module being executed Memory access to, will expel local variables of previously called functions and modules stored in the cache memory. Therefore, when the function or module being executed is terminated and execution of the previously called function or module is resumed, cache misses may increase due to memory access to the local variable.

また,関数やモジュールが呼び出された直後にローカル変数をアクセスする場合は,キャッシュメモリ内にローカル変数が未だ格納されていないのでキャッシュミスヒットが生じ,キャッシュメモリ内の他のデータをメインメモリに退避した後でなければ呼び出された関数やモジュールのローカル変数をキャッシュメモリ内に書込めず,一定のオーバーヘッドが必要になる。   Also, when accessing a local variable immediately after a function or module is called, a cache miss occurs because the local variable is not yet stored in the cache memory, and other data in the cache memory is saved to the main memory. Otherwise, local variables of the called function or module cannot be written into the cache memory, and a certain amount of overhead is required.

さらに,短期間で複数の関数やモジュールが連続して呼び出されると,それらのローカル変数が次々にキャッシュメモリ内に格納されることにより,他のデータがキャッシュメモリから追い出されて他のデータに対するキャッシュミスヒットが増大する。   Furthermore, when multiple functions or modules are called continuously in a short period of time, these local variables are stored in the cache memory one after another, so that other data is evicted from the cache memory and cached for other data. Miss hits increase.

上記の課題は,複数の関数やモジュールがキャッシュメモリを共用しているため,複数のスタックメモリ領域のローカル変数が,共用キャッシュメモリ内で互いに影響し合うことが一つの原因である。   The above problem is caused by the fact that a plurality of functions and modules share a cache memory, so that local variables in a plurality of stack memory areas influence each other in the shared cache memory.

そこで,1つの側面では,本発明の目的は,スタックメモリ領域内のローカル変数に対するキャッシュヒット率を向上させるキャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法を提供することにある。   Therefore, in one aspect, an object of the present invention is to provide a cache memory control program for improving a cache hit rate for a local variable in a stack memory area, a processor having a cache memory, and a cache memory control method.

実施の形態の第1の側面は,キャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と,前記第1のサブルーチンの直前に呼び出された第2の数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域と,第3の数の空きキャッシュ領域とに維持するキャッシュ領域割当工程とを有する。
A first aspect of the embodiment is a processor-readable cache memory control program for causing a processor to execute a cache memory control process,
The cache memory control process includes:
A stack memory cache area group allocating step for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A plurality of cache areas in the stack memory cache area group are divided into a first dedicated cache area allocated to the first subroutine being executed, and a second number called immediately before the first subroutine. A cache area allocating step for maintaining the second dedicated cache area allocated to the second subroutine and the third number of free cache areas.

第1の側面によれば,キャッシュメモリの利用効率が上昇する。   According to the first aspect, the utilization efficiency of the cache memory is increased.

本実施の形態におけるサーバの構成図である。It is a block diagram of the server in this Embodiment. 本実施の形態におけるサーバのハードウエアとソフトウエアの構成図である。It is a block diagram of the hardware and software of the server in this Embodiment. 本実施の形態におけるキャッシュ領域の動的割当の概略を示すフローチャート図である。It is a flowchart figure which shows the outline of the dynamic allocation of the cache area | region in this Embodiment. コンパイラ21がアプリケーションプログラムのソースコードを機械語にコンパイルする処理を示す図である。It is a figure which shows the process in which the compiler 21 compiles the source code of an application program into a machine language. 上記の特性調査で得られたキャッシュサイズ対キャッシュヒット率の特性例である。It is an example of the characteristic of the cache size versus the cache hit rate obtained by the above characteristic investigation. キャッシュ領域の構成と専用領域獲得要求についての割当について示す図である。It is a figure which shows about the allocation about the structure of a cache area | region, and a private area acquisition request. 変換テーブルの一例を示す図である。It is a figure which shows an example of a conversion table. 図3に示した専用領域獲得要求に対する判定処理S16について第1の例のフローチャート図である。It is a flowchart figure of a 1st example about determination process S16 with respect to the exclusive area acquisition request shown in FIG. 専用領域獲得要求に専用キャッシュ領域を割り当てる場合を説明する図である。It is a figure explaining the case where a dedicated cache area is allocated to a dedicated area acquisition request. 図3に示した専用領域獲得要求に対する判定処理S16について第2の例のフローチャート図である。It is a flowchart figure of a 2nd example about determination process S16 with respect to the exclusive area acquisition request shown in FIG. 専用領域獲得要求と割当済専用領域獲得要求との間で専用キャッシュ領域を入れ替える処理を説明する図である。It is a figure explaining the process which replaces a dedicated cache area between a dedicated area acquisition request and an allocated dedicated area acquisition request. 推定キャッシュヒット率を示す図である。It is a figure which shows an estimated cache hit rate. 割当済専用領域リストLIST-FREEと未割当専用領域リストLIST-DEMANDとを示す図である。FIG. 10 is a diagram showing an allocated dedicated area list LIST-FREE and an unallocated dedicated area list LIST-DEMAND. 定期割当見直し処理S18の第1の例のフローチャート図である。It is a flowchart figure of the 1st example of regular allocation review process S18. 定期割当見直し処理S18の第1の例を説明するための図である。It is a figure for demonstrating the 1st example of regular allocation review process S18. 定期割当見直し処理S18の第2の例のフローチャート図である。It is a flowchart figure of the 2nd example of regular allocation review process S18. 定期割当見直し処理S18の第2の例を説明するための図である。It is a figure for demonstrating the 2nd example of regular allocation review process S18. 定期割当見直し処理S18の第3の例のフローチャート図である。It is a flowchart figure of the 3rd example of periodical allocation review process S18. 定期割当見直し処理S18の第3の例を説明するための図である。It is a figure for demonstrating the 3rd example of regular allocation review process S18. 図3の工程S2とS3のサーバシステム内での処理を示す図である。It is a figure which shows the process in the server system of process S2 and S3 of FIG. 図20のサーバシステム内の処理に対応するフローチャート図である。It is a flowchart figure corresponding to the process in the server system of FIG. 図3の工程S13,S16,S19のサーバシステム内での処理を示す図である。It is a figure which shows the process in the server system of process S13, S16, S19 of FIG. 図22のサーバシステム内の処理に対応するフローチャート図である。It is a flowchart figure corresponding to the process in the server system of FIG. 本専用領域獲得要求判定処理S16(2)のフローチャート図である。It is a flowchart figure of this exclusive area acquisition request determination process S16 (2). アプリケーションプログラムのプロセス22が切り替わるときのセクタID変換テーブルの入れ替え処理を示す図である。It is a figure which shows the replacement process of the sector ID conversion table when the process 22 of an application program switches. 第2の実施の形態におけるキャッシュメモリとスタックメモリ領域との関係を示す図である。It is a figure which shows the relationship between the cache memory and stack memory area in 2nd Embodiment. 関数のローカル変数とスタックメモリ領域内の変数データとを示す図である。It is a figure which shows the local variable of a function, and the variable data in a stack memory area. プログラム内の関数とスタックメモリ領域とを示す図である。It is a figure which shows the function and stack memory area in a program. スタックメモリ領域に対するキャッシュメモリの問題点について説明する図である。It is a figure explaining the problem of the cache memory with respect to a stack memory area. スタックメモリ領域に対するキャッシュメモリの問題点について説明する図である。It is a figure explaining the problem of the cache memory with respect to a stack memory area. 第2の実施の形態における,関数Eが実行中の時間T1と関数Eが終了して呼び戻された時間T2のスタックメモリ領域STとキャッシュメモリ130内のスタックメモリ用キャッシュ領域群130−STとを示す図である。In the second embodiment, the time T1 during which the function E is being executed, the stack memory area ST at the time T2 when the function E is finished and recalled, and the stack memory cache area group 130-ST in the cache memory 130 FIG. 第2の実施の形態における,関数Eが実行中の時間T1と関数Eが終了して呼び戻された時間T3のスタックメモリ領域STとキャッシュメモリ130内のスタックメモリ用キャッシュ領域群130−STとを示す図である。In the second embodiment, the time T1 during which the function E is being executed, the stack memory area ST at the time T3 when the function E is finished and recalled, and the stack memory cache area group 130-ST in the cache memory 130 are FIG. 実行中の関数の直前に連続して呼び出されたN個の関数に割り当てられたN個の第2の専用キャッシュ領域の個数Nについて説明する図である。It is a figure explaining the number N of N 2nd exclusive cache areas allocated to N functions called immediately before the function under execution. 実行中の関数の直後に連続して呼び出される予定のM個の関数に割り当てられたM個の専用空きキャッシュ領域の個数Mについて説明する図である。It is a figure explaining the number M of the M dedicated free cache areas allocated to the M functions scheduled to be called continuously immediately after the function being executed. 第2の実施の形態におけるキャッシュメモリ制御プログラムによるセクタID変換テーブルの制御を示す図である。It is a figure which shows control of the sector ID conversion table by the cache memory control program in 2nd Embodiment. コンパイル工程と対象プロセス起動工程とを示すフローチャート図である。It is a flowchart figure which shows a compilation process and an object process starting process. 関数呼び戻し処理のフローチャート図である。It is a flowchart figure of a function call back process. 関数呼び出し処理のフローチャート図である。It is a flowchart figure of a function call process.

以下は,本実施の形態の目次である。   The following is a table of contents of the present embodiment.

[第1の実施の形態]
[本実施の形態のキャッシュ領域の動的割当の概略]
[専用領域獲得要求での専用キャッシュ領域の割当S15,S16]
[専用キャッシュ領域を利用するメモリアクセスS13]
[専用領域開放要求での専用キャッシュ領域の開放]
[本実施の形態のキャッシュ領域の動的割当処理の詳細]
[キャッシュ領域の割当判定の指標]
[実キャッシュヒット数]
[メモリアクセスの局所性]
[キャッシュ有効利用度,実キャッシュ有効利用度,キャッシュ攪乱力]
[専用領域獲得要求判定処理S16(1)]
[専用領域獲得要求判定処理S16(2)]
[定期割当見直し処理S18]
[定期割当見直し処理S18(1)]
[定期割当見直し処理S18(2)]
[定期割当見直し処理S18(3)]
[プロセス切り替え時のセクタID変換テーブルの入れ替え処理]
[第2の実施の形態]
以下,上記の目次にしたがって本実施の形態を説明する。
[First Embodiment]
[Outline of dynamic allocation of cache area of this embodiment]
[Allocate dedicated cache area in dedicated area acquisition request S15, S16]
[Memory access S13 using a dedicated cache area]
[Release dedicated cache area with dedicated area release request]
[Details of cache area dynamic allocation processing according to this embodiment]
[Index for determining the allocation of a cache area]
[Real cache hits]
[Locality of memory access]
[Effective usage of cache, effective usage of actual cache, cache disruption]
[Dedicated area acquisition request determination processing S16 (1)]
[Dedicated area acquisition request determination processing S16 (2)]
[Regular allocation review process S18]
[Regular allocation review process S18 (1)]
[Regular allocation review process S18 (2)]
[Regular allocation review process S18 (3)]
[Replacement process of sector ID conversion table at process switching]
[Second Embodiment]
Hereinafter, the present embodiment will be described according to the above table of contents.

[第1の実施の形態]
図1は,本実施の形態におけるサーバの構成図である。サーバは,プロセッサユニット10と,メインメモリ16と,キーボードや表示装置などの入出力部17と,ハードディスクなどの大容量のストレージ18とを有する。プロセッサユニット10は,機械語命令を実行するCPU12と,キャッシュメモリとキャッシュメモリの制御部を有するキャッシュユニット13と,CPUからメインメモリ16へのアクセスの制御を行うバスインターフェース14とを有する。
[First Embodiment]
FIG. 1 is a configuration diagram of a server in the present embodiment. The server includes a processor unit 10, a main memory 16, an input / output unit 17 such as a keyboard and a display device, and a large-capacity storage 18 such as a hard disk. The processor unit 10 includes a CPU 12 that executes machine language instructions, a cache unit 13 that includes a cache memory and a cache memory control unit, and a bus interface 14 that controls access from the CPU to the main memory 16.

ストレージ18には,オペレーションシステム(OS)と,コンパレータなどのミドルウエア(M-Ware)と,アプリケーションプログラム(APL)などが格納されている。これらのプログラムは,サーバ起動時にメインメモリ16内にロードされ,CPU12によって実行される。また,メインメモリ16は,アプリケーションプログラムAPLに含まれるプロセスの実行に必要なデータを記憶する。また,CPU12によるキャッシュメモリへのアクセス速度と比較すると,メインメモリ16へのアクセス速度は極端に遅い。一方,キャッシュメモリの容量は,メインメモリ16の容量に比較すると非常に小さい。   The storage 18 stores an operation system (OS), middleware (M-Ware) such as a comparator, and an application program (APL). These programs are loaded into the main memory 16 when the server is started and executed by the CPU 12. The main memory 16 stores data necessary for execution of processes included in the application program APL. Further, the access speed to the main memory 16 is extremely slow compared to the access speed to the cache memory by the CPU 12. On the other hand, the capacity of the cache memory is very small compared to the capacity of the main memory 16.

図2は,本実施の形態におけるサーバのハードウエアとソフトウエアの構成図である。ハードウエア1は,図1に示した構成を有し,図2には,特に,メインメモリ16と,キャッシュシステム13と,CPU12とが示されている。   FIG. 2 is a block diagram of the hardware and software of the server in this embodiment. The hardware 1 has the configuration shown in FIG. 1, and FIG. 2 particularly shows a main memory 16, a cache system 13, and a CPU 12.

キャッシュシステム13は,SRAMなど高速の半導体メモリなどで構成されるキャッシュメモリ130と,そのキャッシュメモリ130へアクセスするときに参照されるセクタID変換テーブル131,専用キャッシュ領域のサイズ設定などが行われるキャッシュセクタ情報設定部132,キャッシュメモリへアクセスするときに使用されるキャッシュアドレス変換部133などを有する。   The cache system 13 includes a cache memory 130 composed of a high-speed semiconductor memory such as SRAM, a sector ID conversion table 131 that is referred to when accessing the cache memory 130, and a size of a dedicated cache area that is set. It has a sector information setting unit 132, a cache address conversion unit 133 used when accessing the cache memory, and the like.

本実施の形態において,CPU12は,通常の機械語命令に加えて,ローカルセクタIDが付加された機械語命令を実行する。後述するとおり,ローカルセクタIDは,その機械語命令が利用するキャッシュメモリの領域を識別するために使用される。   In the present embodiment, the CPU 12 executes a machine language instruction to which a local sector ID is added in addition to a normal machine language instruction. As will be described later, the local sector ID is used to identify an area of the cache memory used by the machine language instruction.

OS20は,アプリケーションプログラムの様々なプロセスにキャッシュメモリの領域(キャッシュセクタ)を動的に割り当てる場合に,セクタID変換テーブル131にローカルセクタIDに対して割り当てるキャッシュセクタIDをひもづける。そして,セクタID変換テーブル131は,キャッシュメモリにアクセスするときに参照され,機械語命令に付加されたローカルセクタIDをキャッシュメモリ内の使用領域を示すキャッシュセクタIDに変換する。このような方法により,OS20は,プログラムの様々なプロセスやプロセス内の処理に対して,専用キャッシュ領域を動的に割り当てて,そのプロセスやプロセス内の処理に割り当てた専用キャッシュ領域を使用させることができる。   When dynamically allocating cache memory areas (cache sectors) to various processes of an application program, the OS 20 associates cache sector IDs to be assigned to local sector IDs in the sector ID conversion table 131. The sector ID conversion table 131 is referred to when accessing the cache memory, and converts the local sector ID added to the machine language instruction into a cache sector ID indicating the used area in the cache memory. In this way, OS20 dynamically allocates a dedicated cache area for the various processes and processes in the program, and uses the dedicated cache area allocated for the processes and processes in the process. Can do.

キャッシュシステム13内のキャッシュセクタ情報設定部132は,キャッシュメモリの領域(キャッシュセクタ)に対してどの程度のキャッシュサイズを割り当てるかが設定される。後述するとおり,OS20は,専用キャッシュ領域を割り当てる場合に,そのキャッシュサイズをキャッシュセクタ情報設定部132に設定する。キャッシュアドレス変換部133は,CPU12によるメモリアクセスのアドレスをキャッシュメモリのアドレスに変換する。   The cache sector information setting unit 132 in the cache system 13 sets how much cache size is allocated to a cache memory area (cache sector). As will be described later, when allocating a dedicated cache area, the OS 20 sets the cache size in the cache sector information setting unit 132. The cache address conversion unit 133 converts the memory access address by the CPU 12 into an address of the cache memory.

図2のソフトウエア2は,オペレーションシステム(OS)20と,アプリケーションプログラムを機械語に変換するコンパイラなどのミドルウエア21と,複数のアプリケーションプログラムを有するアプリケーションプログラム群22とを有する。   2 includes an operation system (OS) 20, middleware 21 such as a compiler for converting an application program into a machine language, and an application program group 22 having a plurality of application programs.

OS内の関数制御管理部201は,アプリケーションプログラムの各プロセス内で呼び出される関数の管理を行う。一般に,関数制御管理部201は,関数が呼び出されるとその関数で利用されるデータをスタックデータとして管理し,また,関数が読み戻されるとスタックデータを開放する。   A function control management unit 201 in the OS manages a function called in each process of the application program. In general, the function control management unit 201 manages data used in a function as stack data when the function is called, and releases the stack data when the function is read back.

OS20は,マルチタスク(またはマルチプロセス)を切り替えながら各プロセスの処理を実行する。プロセス管理部202は,この各プロセスの切替制御を行う。本実施の形態では,特に,プロセス管理部202は,プロセスが切り替えられるたびに,キャッシュシステム13内のセクタID変換テーブル131を切り替える。これにより,各プロセスに対応して適切なキャッシュ領域の動的な割当を行うことができる。具体的には後述する。   The OS 20 executes processing of each process while switching multitasks (or multiprocesses). The process management unit 202 performs switching control of each process. In the present embodiment, in particular, the process management unit 202 switches the sector ID conversion table 131 in the cache system 13 every time the process is switched. Thereby, it is possible to dynamically allocate an appropriate cache area corresponding to each process. Details will be described later.

割り込み処理プロセス203は,IO割り込みや内部プログラムからの例外的な割り込みなどが発生したときに,実行されるOS割り込み処理プログラムである。この割り込み処理プロセス内には,専用領域獲得要求と専用領域解放要求が含まれている。具体的には後述する。   The interrupt processing process 203 is an OS interrupt processing program that is executed when an IO interrupt or an exceptional interrupt from an internal program occurs. This interrupt processing process includes a dedicated area acquisition request and a dedicated area release request. Details will be described later.

本実施の形態では,OS12が,アプリケーションプログラムのプロセス内で発行される専用領域獲得要求に応答して,キャッシュメモリ内の例えば共用キャッシュ領域と,専用キャッシュ領域と,攪乱処理キャッシュ領域などの割当を,動的に実行する。この動的な割り当ては,専用領域獲得要求の対応する処理(以下対応処理)のメモリアクセスの特性や専用領域獲得要求時のキャッシュメモリのアクセス状況などに基づいて行われる。キャッシュ割当管理部204は,これらのキャッシュ領域の動的な割当に関する制御を行う。   In this embodiment, the OS 12 allocates, for example, a shared cache area, a dedicated cache area, and a disturbance processing cache area in the cache memory in response to a dedicated area acquisition request issued in the process of the application program. Execute dynamically. This dynamic allocation is performed based on the memory access characteristics of the processing corresponding to the dedicated area acquisition request (hereinafter, “corresponding processing”), the cache memory access status at the time of the dedicated area acquisition request, and the like. The cache allocation management unit 204 controls the dynamic allocation of these cache areas.

上記の共用キャッシュ領域(または共用領域)とは,複数のプロセスや対応処理が共有して利用するキャッシュメモリの領域であり,あるプロセスや対応処理が共用キャッシュ領域を利用することで,他のプロセスや対応処理によって共用キャッシュ領域に記憶されたデータが追い出されることがある。   The above-mentioned shared cache area (or shared area) is an area of cache memory that is shared and used by multiple processes and corresponding processes. When a certain process or corresponding process uses the shared cache area, other processes In some cases, the data stored in the shared cache area may be evicted by corresponding processing.

一方,専用キャッシュ領域(または専用領域)とは,ある専用領域獲得要求に対して割り当てられるキャッシュメモリの領域であり,その専用領域獲得要求の対象処理内のメモリアクセスは,それに割り当てられた専用キャッシュ領域を使用する。したがって,他のプロセスや対応処理のメモリアクセスにより専用キャッシュ領域内のデータが追い出されることはないし,専用キャッシュ領域へのアクセスにより,共用キャッシュ領域や他の専用キャッシュ領域のデータが追い出されることもない。   On the other hand, a dedicated cache area (or dedicated area) is an area of cache memory that is allocated to a dedicated area acquisition request, and memory access in the processing subject to the dedicated area acquisition request is the dedicated cache area allocated to it. Use space. Therefore, data in the dedicated cache area is not evicted by memory access of other processes or corresponding processing, and data in the shared cache area or other dedicated cache area is not evicted by accessing the dedicated cache area. .

また,攪乱処理キャッシュ領域とは,対応する処理のキャッシュミスヒット率が非常に高い対応処理に対する専用領域獲得要求に対して割り当てられるキャッシュメモリの領域であり,一種の専用キャッシュ領域である。攪乱処理キャッシュ領域では,共用キャッシュ領域や他の専用キャッシュ領域から隔離して,そのキャッシュ制御が行われる。そのため,攪乱処理キャッシュ領域が割り当てられた対応処理の高いキャッシュミスヒット率により,共用キャッシュ領域や他の専用キャッシュ領域内のデータが追い出されてその後のキャッシュミスヒット率が高くなることが回避される。攪乱処理キャッシュ領域は,複数の専用領域獲得要求に割り当てられることがある。攪乱処理キャッシュ領域を設けることで,攪乱処理による高いキャッシュミスヒット率により共用キャッシュ領域や専用キャッシュ領域のデータが追い出されることが抑制され,キャッシュヒット率が極端に低下することが抑制される。   The disturbance processing cache area is a cache memory area allocated to a dedicated area acquisition request for a corresponding process having a very high cache miss hit rate of the corresponding process, and is a kind of dedicated cache area. In the disturbance processing cache area, the cache control is performed separately from the shared cache area and other dedicated cache areas. Therefore, the cache miss ratio of the corresponding process to which the disturbance cache area is assigned avoids the data in the shared cache area and other dedicated cache areas being evicted and the subsequent cache miss ratio increases. . The disturbance processing cache area may be allocated to a plurality of dedicated area acquisition requests. By providing the disturbance processing cache area, it is possible to prevent the data in the shared cache area and the dedicated cache area from being evicted due to the high cache miss hit rate due to the disturbance processing, and it is possible to suppress the cache hit rate from being extremely lowered.

キャッシュ割当管理部204が実行する処理工程には,例えば,次のようなものがある。第1に,開発環境下において,各プロセスや専用領域獲得要求が対象とする対象処理などについて,メモリアクセス頻度や,専用キャッシュ領域を割り当てられた場合のキャッシュヒット率などのメモリアクセス特性の調査を行う特性調査工程と,第2に,プロセス切り替え時においてキャッシュシステム13内のセクタID変換テーブル131を入れ替える工程と,第3に,共用キャッシュ領域と,専用キャッシュ領域と,攪乱処理キャッシュ領域間のキャッシュ領域入れ替え判定工程と,第4に,キャッシュ領域入れ替え判定結果に基づくセクタID変換テーブルの更新及びキャッシュセクタ情報設定部132の割当キャッシュ領域のサイズ設定の更新工程などである。   Examples of processing steps executed by the cache allocation management unit 204 include the following. First, in the development environment, investigate the memory access characteristics such as the memory access frequency and the cache hit rate when a dedicated cache area is allocated for each process and the target process targeted by the dedicated area acquisition request. A characteristic investigation step to be performed; second, a step of replacing the sector ID conversion table 131 in the cache system 13 at the time of process switching; and third, a cache between the shared cache area, the dedicated cache area, and the disturbance processing cache area. An area replacement determination process, and fourth, an update process of the sector ID conversion table based on the cache area replacement determination result, an update process of the size setting of the allocated cache area of the cache sector information setting unit 132, and the like.

ミドルウエア21のコンパイラは,ソースコードで記述されたアプリケーションプログラムを実行形式の機械語(オブジェクトコード)に変換する。このコンパイラは,一般的なコンパイル処理に加えて,各プロセスにおいて適宜発行される専用キャッシュ領域の割当を要求する専用領域獲得要求の機械語命令と,その割り当てられた専用領域を開放する専用領域開放要求の機械語命令を追加する。また,コンパイラは,発行する各専用領域獲得要求には,プロセス内でユニークなローカルセクタIDを付加する。そして,コンパイラは,獲得した専用キャッシュ領域を利用する機械語命令には,そのローカルセクタIDを付加する。これにより,専用領域獲得要求に対して,その対象処理で利用するキャッシュ領域に専用キャッシュ領域が動的に割り当てられ,キャッシュメモリ領域全体を有効に利用することができる。すなわち,後述するキャッシュ有効利用度や実キャッシュ有効利用度を高くすることができる。   The compiler of the middleware 21 converts the application program described in the source code into an executable machine language (object code). In addition to general compilation processing, this compiler uses a machine language instruction for a dedicated area acquisition request that requests allocation of a dedicated cache area that is issued appropriately in each process, and a dedicated area release that releases the allocated dedicated area. Add the requested machine language instruction. In addition, the compiler adds a unique local sector ID within the process to each dedicated area acquisition request issued. Then, the compiler adds the local sector ID to the machine language instruction that uses the acquired dedicated cache area. Thereby, in response to a dedicated area acquisition request, a dedicated cache area is dynamically allocated to the cache area used in the target process, and the entire cache memory area can be used effectively. That is, it is possible to increase the cache effective utilization level and the actual cache effective utilization level described later.

アプリケーションプログラム(APL)22は,アプリケーションプログラムの実行形式である機械語にコンパイルされている。これにより,CPU12は,このアプリケーションプログラムの機械語を実行する。   The application program (APL) 22 is compiled into a machine language that is an execution format of the application program. Thereby, the CPU 12 executes the machine language of this application program.

[本実施の形態のキャッシュ領域の動的割当の概略]
図3は,本実施の形態におけるキャッシュ領域の動的割当の概略を示すフローチャート図である。まず,サーバにアプリケーションプログラムAPLをインストールした開発環境でシステムを稼働させる(S1)。まず,コンパイラをプロセッサ(CPU)に実行させて,アプリケーションプログラムAPLをコンパイルする(S2)。このコンパイル工程S2におけるキャッシュ領域の動的割当に関連する部分について以下説明する。
[Outline of dynamic allocation of cache area of this embodiment]
FIG. 3 is a flowchart showing an outline of dynamic allocation of cache areas in the present embodiment. First, the system is operated in a development environment in which the application program APL is installed on the server (S1). First, the compiler is executed by the processor (CPU) to compile the application program APL (S2). A portion related to the dynamic allocation of the cache area in the compiling step S2 will be described below.

図4は,コンパイラ21がアプリケーションプログラムのソースコードを機械語にコンパイルする処理を示す図である。コンパイラは,アプリケーションプログラムのソースコードAPL_SCを,その実行形式である機械語(オブジェクトコード)APL_OCに変換する。一般的なコンパイラの機能は,オブジェクトコードを命令部とオペランドを有する機械語の命令に変換することである。   FIG. 4 is a diagram illustrating a process in which the compiler 21 compiles the source code of the application program into a machine language. The compiler converts the source code APL_SC of the application program into a machine language (object code) APL_OC that is the execution format. A general compiler function is to convert an object code into a machine language instruction having an instruction part and an operand.

本実施の形態では,コンパイラは,さらに,アプリケーションプログラム内の複数のプロセス内に,キャッシュメモリの専用キャッシュ領域への割当を要求する専用領域獲得要求30と,それに対応する専用領域開放要求34とを適宜挿入する。この専用領域獲得要求30は,図4に示されるとおり,例えば,プロセスIDと,ローカルセクタIDと,専用領域獲得要求30の対象処理の優先度を有する機械語命令である。各プロセスにおいて,キャッシュ領域を占有して処理を行いたい部分で,この専用領域獲得要求30を発行してOS20に専用キャッシュ領域の割当を要求する。   In the present embodiment, the compiler further issues a dedicated area acquisition request 30 for requesting allocation of the cache memory to the dedicated cache area and a corresponding dedicated area release request 34 in a plurality of processes in the application program. Insert as appropriate. As shown in FIG. 4, the dedicated area acquisition request 30 is a machine language instruction having, for example, a process ID, a local sector ID, and the priority of the target process of the dedicated area acquisition request 30. In each process, the dedicated area acquisition request 30 is issued to request the OS 20 to allocate a dedicated cache area at a portion where processing is to be performed while occupying the cache area.

プロセスIDは,OS20が管理している稼働プロセスPR1の識別情報である。ローカルセクタIDは,この専用領域獲得要求30の対象処理32を識別するための,プロセスPR1内におけるローカルな識別情報であり,割り当てられた専用キャッシュ領域を特定する識別情報である。   The process ID is identification information of the operation process PR1 managed by the OS20. The local sector ID is local identification information in the process PR1 for identifying the target process 32 of the dedicated area acquisition request 30, and is identification information for identifying the allocated dedicated cache area.

また,優先度は,対応処理32の優先度を示す値であり,例えば,0−7の8段階で表す。ただし,OS内部の処理を優先させる必要があるため,ユーザプログラムには例えば0−5までしか優先度が割り当てられないなどの制約をかけることが行われる。   The priority is a value indicating the priority of the handling process 32, and is represented by, for example, 8 levels of 0-7. However, since it is necessary to prioritize the processing in the OS, the user program is restricted such that priority is assigned only to 0-5, for example.

一方,専用領域開放要求34は,これと対になる専用領域獲得要求30と同じプロセスIDとローカルセクタIDとを有する。これにより,OS20が割り当てた専用キャッシュ領域が開放され,その対応処理には共用キャッシュ領域が代わりに割り当てられる。   On the other hand, the dedicated area release request 34 has the same process ID and local sector ID as the dedicated area acquisition request 30 paired therewith. As a result, the dedicated cache area allocated by the OS 20 is released, and a shared cache area is allocated instead for the corresponding processing.

さらに,コンパイラは,専用領域獲得要求30と専用領域開放要求34との間の命令に,その命令が利用する専用キャッシュ領域を識別するローカルセクタIDを付与して,ローカルセクタID付き命令を生成する。したがって,専用領域獲得要求が対象とする対象処理32内の命令は,ローカルセクタIDに基づいて,割り当てられた専用キャッシュ領域を利用してメモリアクセスを実行する。ただし,専用領域獲得要求30と専用領域開放要求34との間の全ての命令が,専用キャッシュ領域を利用する必要があるわけではない。そのような命令には,ローカルセクタIDを例えば「0」に指定することで,専用キャッシュ領域ではなく通常の命令と同様に共用キャッシュ領域を利用してメモリアクセスを実行させることができる。   Further, the compiler assigns a local sector ID for identifying the dedicated cache area used by the instruction to the instruction between the dedicated area acquisition request 30 and the dedicated area release request 34 and generates an instruction with a local sector ID. . Therefore, the instruction in the target process 32 targeted by the dedicated area acquisition request executes memory access using the allocated dedicated cache area based on the local sector ID. However, not all instructions between the dedicated area acquisition request 30 and the dedicated area release request 34 need to use the dedicated cache area. For such an instruction, by designating the local sector ID to, for example, “0”, memory access can be executed using a shared cache area as in the case of a normal instruction instead of a dedicated cache area.

プロセスPR1内には,上記の専用領域獲得要求30が複数発行されることがある。そして,専用領域獲得要求30に対応する専用領域解放要求34は,それぞれ,専用領域を開放するに適切な位置で発行される。   A plurality of dedicated area acquisition requests 30 may be issued in the process PR1. A dedicated area release request 34 corresponding to the dedicated area acquisition request 30 is issued at a position appropriate for releasing the dedicated area.

図3に戻り,開発環境下で,専用領域獲得要求の特性調査を実行する(S3)。本実施の形態では,キャッシュメモリ内の一部の領域を専用キャッシュ領域として特定のプロセスまたはプロセス内の一部の処理に動的に割り当てる。動的に割り当てる目的は,適切に専用キャッシュ領域を割り当てることによりキャッシュメモリの単位時間当たりのキャッシュヒット数の総計を向上させ,キャッシュミスヒット数をできるだけ抑制することにある。そのため,専用領域獲得要求に対して専用キャッシュ領域を割り当てるべきか否かを判断するための情報が必要になる。   Returning to FIG. 3, the characteristics of the dedicated area acquisition request are checked in the development environment (S3). In this embodiment, a part of the area in the cache memory is dynamically allocated to a specific process or a part of the process in the process as a dedicated cache area. The purpose of dynamic allocation is to improve the total number of cache hits per unit time of the cache memory by appropriately allocating a dedicated cache area, and to suppress the number of cache misses as much as possible. For this reason, information for determining whether or not a dedicated cache area should be allocated in response to a dedicated area acquisition request is required.

各プロセスの専用領域獲得要求が対象とする処理には,様々なタイプがある。例えば,次のようなものである。
「プロセス全体が専用領域獲得要求の対象処理であり,そのプロセス全体で利用する専用キャッシュ領域を要求するもの」
「専用領域獲得要求の対象処理がプロセス内の一部の処理であるもの」
「専用領域獲得要求の対象処理がメモリの広範囲にアクセスしてキャッシュ領域内のデータを追い出して攪乱するもの」
「専用領域獲得要求の対象処理がキャッシュ領域にデータを固定的に記憶させ,キャッシュミスヒットがほとんど発生しないもの」
「対象処理が超短時間で終了するもの」
「対象処理が専用キャッシュ領域利用時と共用キャッシュ領域利用時とでキャッシュヒット率が大きく異なるもの」
これらを事前に調査しておくことで,本番稼働時において専用領域獲得要求に対して専用キャッシュ領域を割り当てるべきかを適切に判断することができる。
There are various types of processing targeted by the dedicated area acquisition request of each process. For example:
"The entire process is the target process of the dedicated area acquisition request and requests the dedicated cache area to be used by the entire process"
"The target processing of the dedicated area acquisition request is a part of the process in the process"
“The target processing of the dedicated area acquisition request accesses a wide area of the memory, expels the data in the cache area and disturbs it”
"The processing that is the target of the dedicated area acquisition request stores the data in the cache area in a fixed manner, and there is almost no cache miss"
"Target processing can be completed in a very short time"
“The target process has a significantly different cache hit rate when the dedicated cache area is used than when the shared cache area is used.”
By examining these in advance, it is possible to appropriately determine whether or not a dedicated cache area should be allocated to a dedicated area acquisition request during actual operation.

そこで,工程S3において,開発環境下でコンパイルされた機械語のアプリケーションプログラム内の専用領域獲得要求に専用キャッシュ領域の割当を許可した場合に,どの程度キャッシュヒット率が向上するかの特性調査を実行する。具体的には,特性調査対象の専用領域獲得要求だけに専用キャッシュ領域を割り当て,且つ,その専用キャッシュ領域のサイズを0から徐々に大きくしながら,それぞれの場合の(1)短時間当たりのメモリアクセス回数(メモリアクセス頻度)と,(2)専用キャッシュ領域内のキャッシュヒット率とを取得する。   Therefore, in step S3, we investigate the characteristics of how much the cache hit rate improves when the allocation of the dedicated cache area is permitted for the dedicated area acquisition request in the machine language application program compiled under the development environment. To do. Specifically, a dedicated cache area is allocated only to the dedicated area acquisition request subject to characteristic investigation, and the size of the dedicated cache area is gradually increased from 0 to (1) memory per short time in each case. The number of accesses (memory access frequency) and (2) the cache hit rate in the dedicated cache area are acquired.

図5は,上記の特性調査で得られたキャッシュサイズ対キャッシュヒット率の特性例である。横軸のキャッシュサイズxを0から増大させた場合のそれぞれのキャッシュサイズでのキャッシュヒット率H(x)が縦軸に対応されている。一般的に,このキャッシュサイズ対キャッシュヒット率の特性は,キャッシュサイズが小さい範囲ではキャッシュサイズの増加はそれほどキャッシュヒット率の上昇に貢献しないが,あるキャッシュサイズの範囲ではキャッシュサイズの増加でキャッシュヒット率が急激に上昇し,そして,あるキャッシュサイズより大きいサイズではキャッシュヒット率の上昇はあまりない。   FIG. 5 is a characteristic example of the cache size versus the cache hit rate obtained by the above characteristic investigation. The cache hit rate H (x) at each cache size when the cache size x on the horizontal axis is increased from 0 corresponds to the vertical axis. In general, this cache size vs. cache hit rate characteristic shows that an increase in cache size does not contribute significantly to an increase in the cache hit rate in a small cache size range, but an increase in cache size causes a cache hit in a certain cache size range. The rate increases rapidly, and the cache hit rate does not increase much for a size larger than a certain cache size.

したがって,図5中の原点から延びる直線(一点鎖線)がキャッシュヒット率特性H(x)に接する点のキャッシュサイズx1が,キャッシュサイズの増大がキャッシュヒット率の向上に最も寄与する基準点となる。   Therefore, the cache size x1 at the point where the straight line (dashed line) extending from the origin in FIG. 5 is in contact with the cache hit rate characteristic H (x) is the reference point where the increase in the cache size contributes most to the improvement of the cache hit rate. .

なお,図5のキャッシュヒット率を調査する段階で,同時に単位時間当たりのメモリアクセス回数(メモリアクセス頻度)とキャッシュヒット数とキャッシュミスヒット数が取得される。   At the stage of examining the cache hit rate in FIG. 5, the number of memory accesses per unit time (memory access frequency), the number of cache hits, and the number of cache misses are acquired at the same time.

図20は,図3の工程S2とS3のサーバシステム内での処理を示す図である。また,図21は,図20のサーバシステム内の処理に対応するフローチャート図である。これらの図を参照して,図3の工程S2,S3の処理を説明する。   FIG. 20 is a diagram showing processing in the server system in steps S2 and S3 of FIG. FIG. 21 is a flowchart corresponding to the processing in the server system of FIG. With reference to these drawings, the processes in steps S2 and S3 in FIG. 3 will be described.

まず,サーバシステムの入力部からアプリケーションプログラムのソースコードが入力される(S201)。そして,コンパイラ21が,このアプリケーションプログラムのソースコードをコンパイルしてオブジェクトコード(機械語)に変換する(S202)。この機械語命令への変換については,図4で説明したとおりである。   First, the source code of the application program is input from the input unit of the server system (S201). Then, the compiler 21 compiles the source code of the application program and converts it into object code (machine language) (S202). This conversion into machine language instructions is as described in FIG.

次に,開発環境下でサーバシステムの入力部からシステム稼働が起動される(S301)。これに応答して,OS20内のプロセス管理部202がプロセス立ち上げ処理を実施してシステム稼働処理を行う(S302)。   Next, system operation is started from the input part of the server system in the development environment (S301). In response to this, the process management unit 202 in the OS 20 performs process startup processing and performs system operation processing (S302).

この開発環境下でのプロセス稼働中に,OS20内のキャッシュ割当管理部204は,特性調査対象のアプリケーションプログラムに含まれている各専用領域獲得要求に対して,その要求を許可し,割り当てた専用キャッシュ領域を使用しながら命令を実行して,メモリアクセス頻度とキャッシュヒット率を計測する。この場合,キャッシュ割当管理部204は,専用キャッシュ領域のサイズを0から最大値まで変化させながらそれぞれのサイズでのメモリアクセス頻度とキャッシュヒット率を計測する(S303)。これにより,図5に示した特性グラフを生成する。   While the process is running in this development environment, the cache allocation management unit 204 in the OS 20 grants the request to each dedicated area acquisition request included in the application program whose characteristics are to be investigated, and allocates the dedicated Instructions are executed while using the cache area, and the memory access frequency and cache hit rate are measured. In this case, the cache allocation management unit 204 measures the memory access frequency and the cache hit rate at each size while changing the size of the dedicated cache area from 0 to the maximum value (S303). Thereby, the characteristic graph shown in FIG. 5 is generated.

特性調査の開始に当たり,キャッシュ割当管理部204は,特性調査対象の専用領域獲得要求に対応したプロセスのセクタID変換テーブル131を読み出して,調査対象のローカルセクタIDに,割り当てる専用キャッシュ領域のキャッシュセクタIDを対応付け,その専用キャッシュ領域に設定したサイズを割り当てる(S304)。また,調査対象以外の専用領域獲得要求に対応したローカルセクタIDに対しては,共用キャッシュ領域を示すキャッシュセクタID=0を対応付ける。その結果,キャッシュメモリ130には,調査対象の処理のローカルセクタIDに対してのみ指定されたサイズの専用キャッシュ領域が生成される(S305)。   At the start of the characteristic investigation, the cache allocation management unit 204 reads the sector ID conversion table 131 of the process corresponding to the special area acquisition request for the characteristic investigation target, and stores the cache sector of the dedicated cache area to be assigned to the local sector ID to be investigated The ID is associated and the size set in the dedicated cache area is assigned (S304). In addition, a local sector ID corresponding to a dedicated area acquisition request other than the check target is associated with a cache sector ID = 0 indicating a shared cache area. As a result, a dedicated cache area having a size designated only for the local sector ID of the process to be investigated is generated in the cache memory 130 (S305).

プロセス管理部202は,特性調査の開始の準備が整ったところで,調査対象プロセスの起動を行い(S306),アプリケーションプログラム22内の調査対象プロセスが実行される(S307)。この調査対象プロセスの実行中は,割り当てられた専用キャッシュ領域を使用してメモリアクセスが実行される。   The process management unit 202 starts the investigation target process when preparation for starting the characteristic investigation is completed (S306), and the investigation target process in the application program 22 is executed (S307). During the execution of the process to be investigated, memory access is executed using the allocated dedicated cache area.

全プロセスの全専用領域獲得要求の特性調査が終了するまで,処理S303-S307が繰り返し実行される。そして,全てが終了すると,キャッシュ割当管理部204は,調査対象プロセスのメモリアクセス頻度とキャッシュヒット率を記録して,特性調査を終了する(S308)。   Steps S303 to S307 are repeatedly executed until the investigation of the characteristics of all dedicated area acquisition requests of all processes is completed. When all the processing is completed, the cache allocation management unit 204 records the memory access frequency and the cache hit rate of the investigation target process, and terminates the characteristic investigation (S308).

図3に戻り,本番環境下でシステムを稼働すると(S10),次のような処理が実行される。OS12は,バックグランドで共用キャッシュ領域と専用領域獲得要求で獲得された専用キャッシュ領域のキャッシュヒット率を調査する(S11)。この調査で,共用キャッシュ領域と専用キャッシュ領域でのメモリアクセス頻度なども取得される。具体的には,各領域へのアクセス関数のカウンタや,キャッシュヒット回数のカウンタなどを利用して,調査する。   Returning to FIG. 3, when the system is operated in the production environment (S10), the following processing is executed. The OS 12 checks the cache hit rate of the dedicated cache area acquired by the shared cache area and the dedicated area acquisition request in the background (S11). In this investigation, the memory access frequency in the shared cache area and the dedicated cache area is also acquired. Specifically, investigation is performed using a counter for an access function to each area, a counter for the number of cache hits, and the like.

OS20は,上記の調査結果に基づいて,共用キャッシュ領域と専用キャッシュ領域の適正比率や,専用領域獲得要求毎の実キャッシュ有効利用度などを算出する。共用・専用領域の適正比率は,後で詳述するが,両領域へのメモリアクセス数の比率により算出される。また,実キャッシュ有効利用度は,専用キャッシュ領域を利用している場合と共用キャッシュ領域を利用している場合のキャッシュヒット率の差分に,メモリアクセス頻度を乗算し,さらに,優先度を乗算して求められる。後に詳述する。   The OS 20 calculates the appropriate ratio between the shared cache area and the dedicated cache area, the actual cache effective usage for each dedicated area acquisition request, and the like based on the above investigation results. As will be described later in detail, the appropriate ratio of the shared / dedicated area is calculated by the ratio of the number of memory accesses to both areas. In addition, the effective usage rate of the real cache is obtained by multiplying the difference between the cache hit rate when the dedicated cache area is used and when using the shared cache area by the memory access frequency, and then by multiplying the priority. Is required. This will be described in detail later.

そして,CPU12は,図4で説明したローカルセクタID付きの命令を実行する(S13)。この命令の実行については後で詳述する。   Then, the CPU 12 executes the instruction with the local sector ID described in FIG. 4 (S13). The execution of this instruction will be described in detail later.

さらに,OS20は,キャッシュ領域の動的割当処理を行う(S14)。キャッシュメモリ内の領域の動的割当処理では,第1に,専用領域獲得要求が発行されたときに(S15),OS20内のキャッシュ割当管理部204が専用領域獲得要求について専用キャッシュ領域を割り当てるべきか否かの判定処理を行い,専用キャッシュ領域か,共用キャッシュ領域か,または攪乱処理キャッシュ領域かを割り当てる(S16)。   Furthermore, the OS 20 performs dynamic allocation processing for the cache area (S14). In the dynamic allocation processing of the area in the cache memory, first, when a dedicated area acquisition request is issued (S15), the cache allocation management unit 204 in the OS 20 should allocate a dedicated cache area for the dedicated area acquisition request. Whether or not it is a dedicated cache area, a shared cache area, or a disturbance processing cache area is assigned (S16).

第2に,定期的な割当見直しタイミングで(S17),OS20内のキャッシュ割当管理部204が,定期割当見直し処理を実行する(S18)。この定期割当見直し処理には,(1)割当済み専用領域獲得要求の割当済み専用キャッシュ領域と未割当専用領域獲得要求が要求する未割当専用キャッシュ領域とを入れ替えるべきか否かの判定処理,(2)共用キャッシュ領域の一部を未割当専用領域獲得要求に専用キャッシュ領域として割り当てるべきか否かの判定処理,(3)その逆の,割当済み専用キャッシュ領域を開放して共用キャッシュ領域に変更すべきか否かの判定処理などが含まれる。そして,定期割当見直し処理S18では,キャッシュ割当管理部204が,判定結果に応じて,専用キャッシュ領域の置き換えや,専用キャッシュ領域の割当や開放を行う。   Second, at a regular allocation review timing (S17), the cache allocation management unit 204 in the OS 20 executes a periodic allocation review process (S18). The periodic allocation review process includes (1) a process for determining whether or not to replace the allocated dedicated cache area of the allocated dedicated area acquisition request and the unallocated dedicated cache area requested by the unallocated dedicated area acquisition request; 2) Judgment whether or not a part of the shared cache area should be allocated as a dedicated cache area in response to an unallocated dedicated area acquisition request. (3) Conversely, the allocated dedicated cache area is released and changed to a shared cache area. A process for determining whether or not to perform the process is included. In the regular allocation review process S18, the cache allocation management unit 204 replaces the dedicated cache area and allocates or releases the dedicated cache area according to the determination result.

第3に,専用領域開放要求が発行されたときに(S19),キャッシュ割当管理部204が,要求された専用キャッシュ領域を開放して共用キャッシュ領域の一部にする開放要求処理を行う(S20)。   Third, when a dedicated area release request is issued (S19), the cache allocation management unit 204 performs a release request process for releasing the requested dedicated cache area to become a part of the shared cache area (S20). ).

上記の工程S11-S20が,システム稼働が終了するまで繰り返される。   The above steps S11-S20 are repeated until the system operation ends.

図6は,キャッシュ領域の構成と専用領域獲得要求についての割当について示す図である。キャッシュメモリ130は,共用キャッシュ領域130_1と,動的割当領域である専用キャッシュ領域130_2とを有する。専用キャッシュ領域130_2には,専用領域獲得要求に対して割り当てられる複数の専用キャッシュ領域と攪乱処理キャッシュ領域とが含まれる。つまり,攪乱処理キャッシュ領域は,一種の専用キャッシュ領域である。   FIG. 6 is a diagram showing the configuration of the cache area and the allocation for the dedicated area acquisition request. The cache memory 130 has a shared cache area 130_1 and a dedicated cache area 130_2 that is a dynamic allocation area. The dedicated cache area 130_2 includes a plurality of dedicated cache areas assigned to the dedicated area acquisition request and a disturbance processing cache area. That is, the disturbance processing cache area is a kind of dedicated cache area.

キャッシュメモリ130は,共用キャッシュ領域と専用キャッシュ領域にセクタ分割されていて,各領域にはセクタIDが0から順に割り振られている。共用キャッシュ領域はセクタID=0である。共用キャッシュ領域は,複数のプロセスやプロセス内の対象処理が共通で使用するキャッシュ領域である。一方,専用キャッシュ領域は,判定により許可されたサイズを有し,割り当てられた専用領域獲得要求の対象プロセスが占有して使用するキャッシュ領域である。さらに,専用キャッシュ領域の一形態である攪乱処理キャッシュ領域は,専用領域獲得要求の対象処理のメモリアクセスが広範囲のアドレスに対して行われ,共用キャッシュ領域に割り当てるとその共用キャッシュ領域内の他のデータを追い出して攪乱してしまう場合に割り当てられる。したがって,複数の専用領域獲得要求に対して攪乱処理キャッシュ領域が割り当てられる場合がある。   The cache memory 130 is divided into a shared cache area and a dedicated cache area, and sector IDs are assigned in order from 0 to each area. The shared cache area has sector ID = 0. The shared cache area is a cache area that is shared by a plurality of processes and target processes within the processes. On the other hand, the dedicated cache area is a cache area having a size permitted by the determination and occupied and used by the target process of the allocated dedicated area acquisition request. Furthermore, in the disturbance cache area, which is a form of the dedicated cache area, the memory access of the target process of the dedicated area acquisition request is performed for a wide range of addresses. Assigned when data is expelled and disturbed. Therefore, a disturbance processing cache area may be allocated for a plurality of dedicated area acquisition requests.

専用領域獲得要求は,前述したとおり,アプリケーションプログラムAPL内のプロセス毎にあるいはプロセス内の対象処理毎に発行され,判定結果に応じて,専用領域獲得要求に専用キャッシュ領域が割り当てられる。したがって,必ずしも専用キャッシュ領域が割り当てられるとは限らず,共用キャッシュ領域が割り当てられて未割当専用領域獲得要求として専用キャッシュ領域の割当まで待たされる場合がある。キャッシュメモリ130は,サイズや分割可能数に上限があるからである。   As described above, the dedicated area acquisition request is issued for each process in the application program APL or for each target process in the process, and a dedicated cache area is assigned to the dedicated area acquisition request according to the determination result. Therefore, the dedicated cache area is not always allocated, and the shared cache area may be allocated and the allocation of the dedicated cache area may be waited as an unallocated dedicated area acquisition request. This is because the cache memory 130 has upper limits on the size and the number of divisions.

図6に示した例では,プロセス1の専用領域獲得要求要求0,プロセス2の専用領域獲得要求0,3は,判定の結果共用キャッシュ領域130_1が割り当てられている。また,プロセス2の専用領域獲得要求1,2,4には,それぞれ専用キャッシュ領域であるセクタID=1,2,3が割り当てられている。また,プロセス3の専用領域獲得要求0に対しては,判定の結果,攪乱処理キャッシュ領域であるセクタID=4が割り当てられている。   In the example shown in FIG. 6, the shared cache area 130_1 is allocated to the dedicated area acquisition request 0 of the process 1 and the dedicated area acquisition requests 0 and 3 of the process 2 as a result of the determination. In addition, sector IDs = 1, 2, and 3, which are dedicated cache areas, are assigned to the process 2 dedicated area acquisition requests 1, 2, and 4, respectively. As a result of determination, sector ID = 4, which is a disturbance processing cache area, is assigned to process 3 dedicated area acquisition request 0.

図22は,図3の工程S13,S16,S19のサーバシステム内での処理を示す図である。また,図23は,図22のサーバシステム内の処理に対応するフローチャート図である。これらの図を参照して,専用領域獲得要求での専用キャッシュ領域の割当と,その専用キャッシュ領域を利用するメモリアクセスと,専用領域開放要求での専用キャッシュ領域の開放とを説明する。   FIG. 22 is a diagram showing processing in the server system in steps S13, S16, and S19 of FIG. FIG. 23 is a flowchart corresponding to the processing in the server system of FIG. With reference to these drawings, allocation of a dedicated cache area by a dedicated area acquisition request, memory access using the dedicated cache area, and release of a dedicated cache area by a dedicated area release request will be described.

[専用領域獲得要求での専用キャッシュ領域の割当S15,S16]
まず,アプリケーションプログラム22のプロセス内で,専用領域獲得要求が発行される(S400)。この専用領域獲得要求にはローカルセクタIDが付与されている。これに応答して,OS20内のキャッシュ割当管理部204は,専用キャッシュ領域の割当を許可するか否かの判定を実行する(S401)。この判定処理については,後述する。そして,割当が許可されると,キャッシュ割当管理部204は,割り当てる専用キャッシュ領域のキャッシュサイズをキャッシュセクタ情報設定部132に設定するとともに,キャッシュシステム13内のセクタID変換テーブル131に,ローカルセクタIDに対応するキャッシュセクタIDの欄に,割り当てた領域のセクタIDを設定する(S402)。
[Allocate dedicated cache area in dedicated area acquisition request S15, S16]
First, a dedicated area acquisition request is issued within the process of the application program 22 (S400). A local sector ID is given to this dedicated area acquisition request. In response to this, the cache allocation management unit 204 in the OS 20 determines whether or not the allocation of the dedicated cache area is permitted (S401). This determination process will be described later. When the allocation is permitted, the cache allocation management unit 204 sets the cache size of the dedicated cache area to be allocated in the cache sector information setting unit 132 and stores the local sector ID in the sector ID conversion table 131 in the cache system 13. The sector ID of the allocated area is set in the column of the cache sector ID corresponding to (S402).

図7は,変換テーブルの一例を示す図である。図7中には,プロセスID=2,ローカルセクタID=2の専用領域獲得要求30に対して,プロセスID=2の変換テーブル131内のローカルセクタID=2に対してキャッシュセクタID=2の専用キャッシュ領域のセクタIDが記入されている。   FIG. 7 is a diagram illustrating an example of the conversion table. In FIG. 7, in response to a dedicated area acquisition request 30 with process ID = 2 and local sector ID = 2, cache sector ID = 2 with respect to local sector ID = 2 in the conversion table 131 with process ID = 2. The sector ID of the dedicated cache area is entered.

[専用キャッシュ領域を利用するメモリアクセスS13]
アプリケーションプログラム22のプロセスが実行される場合,使用する専用キャッシュ領域を識別するローカルセクタID付きの命令(機械語命令)が発行される(S403)。そして,CPU12は,そのローカルセクタID付きの命令を解釈して実行する(S403-1)。この実行に際し,CPU12は,セクタID変換テーブル131を参照してローカルセクタIDに対応するキャッシュセクタIDを取得する(S403-2)。すなわち,図7中にS403-2として示す通りである。
[Memory access S13 using a dedicated cache area]
When the process of the application program 22 is executed, an instruction (machine language instruction) with a local sector ID for identifying a dedicated cache area to be used is issued (S403). Then, the CPU 12 interprets and executes the instruction with the local sector ID (S403-1). In this execution, the CPU 12 refers to the sector ID conversion table 131 and acquires a cache sector ID corresponding to the local sector ID (S403-2). That is, it is as shown as S403-2 in FIG.

そして,キャッシュアドレス変換部133が,メモリアクセスアドレスをキャッシュメモリ内のアドレスに変換して,キャッシュメモリ130内のキャッシュセクタID=2の専用領域獲得要求キャッシュ領域にキャッシュアクセスする(S403-3)。ここで,キャッシュミスヒットが発生すると,バスインターフェース14を介してメインメモリ16にアクセスする(S403-4)。キャッシュヒットの場合は,専用キャッシュ領域内のデータが読み出されまたは専用キャッシュ領域にデータが書き込まれる。   Then, the cache address conversion unit 133 converts the memory access address into an address in the cache memory, and performs cache access to the dedicated area acquisition request cache area of the cache sector ID = 2 in the cache memory 130 (S403-3). Here, when a cache miss hit occurs, the main memory 16 is accessed via the bus interface 14 (S403-4). In the case of a cache hit, data in the dedicated cache area is read or data is written to the dedicated cache area.

以上のように,専用キャッシュ領域が割り当てられている場合は,プロセス内の命令が割り当てられている専用キャッシュ領域を使用してメモリアクセスする。   As described above, when a dedicated cache area is allocated, memory is accessed using the dedicated cache area to which instructions in the process are allocated.

[専用領域開放要求での専用キャッシュ領域の開放]
次に,アプリケーションプログラム22のプロセスで,専用領域開放要求が発行されると(S404),キャッシュ割当管理部204は,専用キャッシュ領域の開放処理を実行する(S405)。具体的には,セクタID変換テーブル内のローカルセクタIDに対応するキャッシュセクタIDを共用キャッシュ領域のID=0に変更する(S406)。すなわち,図7中にS406として示す通りである。また,キャッシュセクタ情報設定部132内の解放するキャッシュセクタIDのサイズが0に変更される。
[Release dedicated cache area with dedicated area release request]
Next, when a dedicated area release request is issued in the process of the application program 22 (S404), the cache allocation management unit 204 executes a dedicated cache area release process (S405). Specifically, the cache sector ID corresponding to the local sector ID in the sector ID conversion table is changed to ID = 0 of the shared cache area (S406). That is, it is as shown as S406 in FIG. In addition, the size of the cache sector ID to be released in the cache sector information setting unit 132 is changed to zero.

[本実施の形態のキャッシュ領域の動的割当処理の詳細]
以下,キャッシュ領域の動的割当処理の詳細について説明する。動的割当処理は,図3で示されるとおり,専用領域獲得要求に対する判定処理S16と,定期的な割当見直しタイミングでの判定処理S18とがある。それらについて順に説明する前に,キャッシュ領域の割当判定の指標を説明する。
[Details of cache area dynamic allocation processing according to this embodiment]
Details of the cache area dynamic allocation processing will be described below. As shown in FIG. 3, the dynamic allocation process includes a determination process S16 for a dedicated area acquisition request and a determination process S18 at a periodic allocation review timing. Before describing them in order, an index for determining cache area allocation will be described.

[キャッシュ領域の割当判定の指標]
[実キャッシュヒット数]
キャッシュメモリを共用キャッシュ領域と複数の専用キャッシュ領域(攪乱処理キャッシュ領域を含む)とに分割する目的は,キャッシュメモリ全体の単位時間当たりのキャッシュヒット数を最大化することにある。この単位時間当たりのキャッシュヒット数は,次の式により求めることができる。
単位時間当たりのキャッシュヒット数=キャッシュヒット率*メモリアクセス頻度(1)
したがって,専用領域獲得要求に専用キャッシュ領域を割り当てた場合に,専用領域獲得要求の対象処理のキャッシュヒット数が高ければ,その要求に専用キャッシュ領域を割り当てることで全体のキャッシュヒット数を高めることができる。そして,キャッシュヒット率が高いがメモリアクセス頻度が低い対象処理に対して専用キャッシュ領域を割り当てるよりも,キャッシュヒット率が多少低くてもメモリアクセス頻度が高い対象処理に専用キャッシュ領域を割り当てた方が,式(1)を大きくすることができ,メインメモリにアクセスする時間を短縮する回数が多くなり,全体としてメモリアクセスが短縮できる。
[Index for determining the allocation of a cache area]
[Real cache hits]
The purpose of dividing the cache memory into a shared cache area and a plurality of dedicated cache areas (including a disturbance processing cache area) is to maximize the number of cache hits per unit time of the entire cache memory. The number of cache hits per unit time can be obtained by the following equation.
Cache hits per unit time = cache hit rate * memory access frequency (1)
Therefore, when a dedicated cache area is allocated to a dedicated area acquisition request, if the number of cache hits of the target process of the dedicated area acquisition request is high, the total cache hit count can be increased by allocating the dedicated cache area to the request. it can. Rather than assigning a dedicated cache area to a target process with a high cache hit rate but a low memory access frequency, it is better to assign a dedicated cache area to a target process with a high memory access frequency even if the cache hit rate is slightly lower. , (1) can be increased, the number of times to shorten the time for accessing the main memory is increased, and the memory access as a whole can be shortened.

一方,アプリケーションプログラムの処理には優先度があり,特定のアプリケーションプログラムや特定のプロセスを特に高速化したいなどの要求がある。この要求が高いほど処理の優先度が高い。したがって,実際には以下の実キャッシュヒット数を最大化することがキャッシュ領域の動的割当の目的になる。
実キャッシュヒット数=Σ(処理のキャッシュヒット数*処理優先度) (2)
すなわち,上記式(2)において,Σは,専用領域獲得要求の対象とする処理のキャッシュヒット数にその処理の優先度を乗算したものを,全処理分累積することを意味する。
On the other hand, there is a priority in the processing of application programs, and there is a demand for particularly speeding up a specific application program or a specific process. The higher the request, the higher the processing priority. Therefore, in practice, the purpose of dynamic allocation of cache areas is to maximize the following number of actual cache hits.
Actual cache hit count = Σ (Process cache hit count * Processing priority) (2)
That is, in the above equation (2), Σ means that the number of cache hits of the process targeted for the dedicated area acquisition request multiplied by the priority of the process is accumulated for all processes.

[メモリアクセスの局所性]
次に,専用領域獲得要求の対象の処理には,メモリアクセスの局所性が高いものと低いものがある。メモリアクセスの局所性は,メモリアクセスのアドレスの領域が狭い範囲に集中していれば局所性は高く,広い範囲に分散していれば局所性は低くなる。対象処理のメモリアクセスの局所性が低いと,キャッシュヒット率は低くなる。ただし,キャッシュサイズを大きくすることで局所性が高まり,キャッシュヒット率が高くなる場合がある。
[Locality of memory access]
Next, there are processes with high locality of memory access and those with low locality in the processing of the target of the dedicated area acquisition request. The locality of the memory access is high if the address area of the memory access is concentrated in a narrow range, and the locality is low if it is distributed in a wide range. When the locality of the memory access of the target process is low, the cache hit rate is low. However, increasing the cache size may increase locality and increase the cache hit rate.

図5に示されたキャッシュサイズに対するキャッシュヒット率の特性曲線の一例をみれば,上記の局所性とキャッシュサイズとの関係が理解できる。この例では,キャッシュサイズが小さい場合は,メモリアクセスのアドレス範囲に比較してキャッシュサイズが小さいため,キャッシュヒット率は向上していない。しかし,キャッシュサイズを増大させることで,メモリアクセスのアドレス範囲に比較してキャッシュサイズが追いつき,キャッシュヒット率が向上している。そして,キャッシュサイズを基準値xよりさらに大きくしてもキャッシュヒット率は向上していない。   The relationship between the locality and the cache size can be understood from an example of the characteristic curve of the cache hit rate with respect to the cache size shown in FIG. In this example, when the cache size is small, the cache hit rate is not improved because the cache size is small compared to the address range for memory access. However, by increasing the cache size, the cache size catches up with the memory access address range, and the cache hit rate is improved. Even if the cache size is made larger than the reference value x, the cache hit rate is not improved.

さらに,メモリアクセスの局所性が極端に高い場合は,キャッシュサイズを増大しても,キャッシュヒット率を向上させることができず,キャッシュミスヒット率が高止まりする。このようなキャッシュミスヒット率が高い処理を,共用キャッシュ領域に割り当てると,キャッシュミスヒットが頻発して他の処理のデータを追い出してしまうことになる。このような処理を攪乱処理と称する。   Furthermore, when the locality of memory access is extremely high, even if the cache size is increased, the cache hit rate cannot be improved, and the cache miss hit rate remains high. If such a process with a high cache miss hit rate is assigned to the shared cache area, cache misses occur frequently and expel data of other processes. Such processing is called disturbance processing.

したがって,このような攪乱処理に対しては,共用キャッシュ領域を割り当てるよりも専用のキャッシュ領域を割り当てることが,共有キャッシュ領域のキャッシュヒット率向上に有益である。ただし,このような攪乱処理は,専用キャッシュ領域を割り当てられたとしてもキャッシュミスヒットを頻発するので,式(2)の実キャッシュヒット率は上がらない。そこで,攪乱処理には,攪乱処理用のキャッシュ領域を割り当て,しかも,複数の攪乱処理に,共通の攪乱処理用キャッシュ領域を割り当てて,それらの処理を他のキャッシュ領域から隔離することが有効である。   Therefore, for such disturbance processing, allocating a dedicated cache area rather than allocating a shared cache area is beneficial for improving the cache hit rate of the shared cache area. However, since such disturbance processing frequently causes cache miss hits even if a dedicated cache area is allocated, the actual cache hit rate of Expression (2) does not increase. Therefore, it is effective to allocate a cache area for disturbance processing to the disturbance processing, and to allocate a common disturbance processing cache area to a plurality of disturbance processes to isolate these processes from other cache areas. is there.

[キャッシュ有効利用度,実キャッシュ有効利用度,キャッシュ攪乱力]
次に,専用領域獲得要求に対して専用のキャッシュ領域を割り当てるか否かの判断の指標として,キャッシュ有効利用度,実キャッシュ有効利用度,キャッシュ攪乱力について説明する。
[Effective usage of cache, effective usage of actual cache, cache disruption]
Next, as an index for determining whether or not to allocate a dedicated cache area in response to a dedicated area acquisition request, the cache effective usage, the actual cache effective usage, and the cache disturbance power will be described.

キャッシュ有効利用度は,専用のキャッシュ領域を割り当てた場合のキャッシュヒット数よりも,共用キャッシュ領域を割り当てた場合のキャッシュヒット数がどのくらい向上するかを示す度合いである。すなわち,キャッシュ有効利用度は次の式(3)のとおりである。
キャッシュ有効利用度={(専用領域時キャッシュヒット率−共用領域時キャッシュヒット率)*メモリアクセス頻度}/使用専用キャッシュ領域のサイズ (3)
つまり,キャッシュ有効利用度(度合い)とは,共用キャッシュ領域を割り当てた場合よりも専用キャッシュ領域を割り当てた場合のほうがどれくらいキャッシュヒット率が増大するかを示すキャッシュヒット率の差分に,メモリアクセス頻度(単位時間当たりのメモリアクセス数)を乗算したキャッシュヒット数の増大を,単位キャッシュ領域当たりで示す指標である。
The cache effective utilization is a degree indicating how much the cache hit number when the shared cache area is allocated is improved over the cache hit number when the dedicated cache area is allocated. That is, the cache effective utilization is as shown in the following equation (3).
Effective cache utilization = {(cache hit rate in dedicated area−cache hit rate in shared area) * memory access frequency} / size of dedicated cache area used (3)
In other words, the effective cache utilization (degree) is the difference in the cache hit rate that indicates how much the cache hit rate increases when the dedicated cache area is allocated rather than when the shared cache area is allocated. This is an index indicating an increase in the number of cache hits multiplied by (number of memory accesses per unit time) per unit cache area.

この場合,専用領域時キャッシュヒット率とメモリアクセス頻度は,事前に行う特性調査結果から取得することができ,共用領域時キャッシュヒット率は,本番稼働時に取得することができる。また,既に専用キャッシュ領域が割り当てられている場合は,その割当済み専用キャッシュ領域について,キャッシュヒット率を取得することが可能である。したがって,割当済み専用キャッシュ領域については,割り当てられたキャッシュサイズに対する実際のキャッシュヒット率を取得し,事前の特性調査での同じキャッシュサイズに対するキャッシュヒット率との比率を,事前特性調査で得た全キャッシュサイズに対するキャッシュヒット率に乗算して,推定キャッシュヒット率を求めることができる。この推定キャッシュヒット率については,後で再度詳述する。   In this case, the cache hit rate for the dedicated area and the memory access frequency can be acquired from the result of the characteristic investigation performed in advance, and the cache hit rate for the shared area can be acquired during the actual operation. If a dedicated cache area has already been allocated, the cache hit rate can be acquired for the allocated dedicated cache area. Therefore, for the allocated dedicated cache area, the actual cache hit ratio for the allocated cache size is obtained, and the ratio of the cache hit ratio for the same cache size in the previous characteristic survey is obtained from the previous characteristic survey. The estimated cache hit rate can be obtained by multiplying the cache hit rate against the cache size. The estimated cache hit rate will be described in detail later.

次に,アプリケーションプログラムのプロセスには前述した優先度が存在し,優先度が高い処理ほど,優先的にキャッシュヒット数を向上させることが必要になる。そこで,以下の式(4)に示すとおり,上記のキャッシュ有効利用度に,対応する処理の優先度を乗算することで,実キャッシュ有効利用度を算出することができる。
実キャッシュ有効利用度=キャッシュ有効利用度*対応処理優先度 (4)
式(3)(4)において,専用領域時キャッシュヒット率を図5のH(x)に,共用領域時キャッシュヒット率をBASEHに,メモリアクセス頻度をMACCESSに,使用専用キャッシュ領域のサイズをxに,対応処理優先度をPRIORITYに置き換えると,式(4)の実キャッシュ有効利用度は,次の通りになる。
実キャッシュ有効利用度=[{H(x)−BASEH}*MACCESS*PRIORITY]/x (4)
この実キャッシュ有効利用度についても,割当済み専用キャッシュ領域に対しては上記の推定キャッシュヒット率を利用することも可能である。
Next, the application program process has the above-described priorities, and it is necessary to preferentially improve the number of cache hits as the processing has a higher priority. Therefore, as shown in the following equation (4), the actual cache effective usage can be calculated by multiplying the above-mentioned cache effective usage by the priority of the corresponding processing.
Effective usage of actual cache = Effective usage of cache * Corresponding processing priority (4)
In equations (3) and (4), the cache hit rate for the dedicated area is H (x) in FIG. 5, the cache hit rate for the shared area is BASEH, the memory access frequency is MACCESS, and the size of the dedicated cache area is x In addition, when the corresponding processing priority is replaced with PRIORITY, the actual cache effective utilization degree of Expression (4) is as follows.
Real cache effective usage = [{H (x) −BASEH} * MACCESS * PRIORITY] / x (4)
As for the actual cache effective usage, the estimated cache hit rate can be used for the allocated dedicated cache area.

式(3)のキャッシュ有効利用度と,それに優先度を乗じた式(4)の実キャッシュ有効利用度とは,主に,専用領域獲得要求に対して専用領域を割り当てるべきか否かの判断指標として利用される。   The effective cache usage of equation (3) and the actual cache effective usage of equation (4) multiplied by priority are mainly to determine whether or not a dedicated area should be allocated to a dedicated area acquisition request. Used as an indicator.

次に,前述のメモリアクセスの局所性が極端に高いほど,他の処理と同じ共用キャッシュ領域に割り当てられると他の処理のデータを追い出す力が強くなる。この追い出す力をキャッシュ攪乱力とする。このキャッシュ攪乱力は,以下の式(5)に示したとおり,キャッシュミスヒット率(1−キャッシュヒット率)にメモリアクセス頻度を乗算して算出することができる。
キャッシュ攪乱力=(1−キャッシュヒット率)*メモリアクセス頻度 (5)
キャッシュ攪乱力は,キャッシュ有効利用度とは相反する値となる。そして,このキャッシュ攪乱力は,開発環境下での特性調査でキャッシュヒット率とメモリアクセス頻度が取得されるので,予め処理毎にまたはプロセス毎に算出しておくことができる。このキャッシュ攪乱力がある基準値以上の処理は,キャッシュ攪乱処理と見なして,共用キャッシュ領域や他の専用キャッシュ領域から隔離して,攪乱処理キャッシュ領域に割り当てることで,他の処理のキャッシュヒット率の低下を抑制することができる。
Next, as the locality of the memory access described above is extremely high, the ability to expel data of other processes becomes stronger when assigned to the same shared cache area as other processes. This expelling power is assumed to be a cash disturbance power. This cache disturbing force can be calculated by multiplying the cache miss hit rate (1-cache hit rate) by the memory access frequency as shown in the following equation (5).
Cache disturbance power = (1-Cache hit rate) * Memory access frequency (5)
The cache disturbance force is a value that is contrary to the effective use of the cache. The cache disturbance power can be calculated for each process or for each process in advance because the cache hit rate and the memory access frequency are acquired in the characteristic investigation under the development environment. Processing that exceeds the standard value with this cache disturbing power is regarded as cache disturbing processing, and it is isolated from the shared cache area and other dedicated cache areas and allocated to the disturbing cache area, so that the cache hit rate of other processes Can be suppressed.

キャッシュ攪乱力は,専用領域獲得要求に対して,専用領域を割り当てるべきか判定するときに,攪乱処理用の専用領域に割り当てるべきか否かの判断指標として利用される。   The cache disturbance power is used as an index for determining whether or not to allocate a dedicated area for disturbance processing when determining whether or not to allocate a dedicated area in response to a dedicated area acquisition request.

[専用領域獲得要求判定処理S16(1)]
図8は,図3に示した専用領域獲得要求に対する判定処理S16について第1の例のフローチャート図である。この第1の判定処理では,OS20内のキャッシュ割当管理部204が,専用領域獲得要求の対象処理のキャッシュ攪乱力(式(5))を算出して判定し(S30),キャッシュ攪乱力がある第1の基準値より高い場合は(S31のYES),その専用領域獲得要求に攪乱処理キャッシュ領域を割り当てる(S32)。
[Dedicated area acquisition request determination processing S16 (1)]
FIG. 8 is a flowchart of a first example of the determination process S16 for the dedicated area acquisition request shown in FIG. In the first determination process, the cache allocation management unit 204 in the OS 20 calculates and determines the cache disturbing power (formula (5)) of the target process of the dedicated area acquisition request (S30), and there is a cache disturbing power. If it is higher than the first reference value (YES in S31), a disturbance processing cache area is allocated to the dedicated area acquisition request (S32).

さらに,キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値以下の場合は(S31のNO),その専用領域獲得要求の対象処理の実キャッシュ有効利用度(式(4))を算出して判定し(S33),実キャッシュ有効利用度が第2の基準値より高い場合は(S34のYES),その専用領域獲得要求に専用キャッシュ領域を割り当て(S35),実キャッシュ有効利用度が第2の基準値以下の場合は(S34のNO),その専用領域獲得要求に共用キャッシュ領域を割り当てる(S36)。   Furthermore, when the cache disturbance power is less than or equal to the first reference value (NO in S31), the cache allocation management unit 204 calculates the actual cache effective usage (expression (4)) of the target process of the dedicated area acquisition request. If the real cache effective usage is higher than the second reference value (YES in S34), a dedicated cache area is allocated to the dedicated area acquisition request (S35), and the actual cache effective usage is When the value is equal to or smaller than the second reference value (NO in S34), a shared cache area is allocated to the dedicated area acquisition request (S36).

図9は,専用領域獲得要求に専用キャッシュ領域を割り当てる場合を説明する図である。図9中(1)のキャッシュメモリ130の分割状態において,専用領域獲得要求30が発行されたとする。この場合,専用領域獲得要求の対象処理の実キャッシュ有効度を式(4)に基づいて算出する。そして,その実キャッシュ有効度が第2の基準値より高ければ,図9中(2)のキャッシュメモリ130のように,その専用領域獲得要求30に対してキャッシュセクタID=2の専用キャッシュ領域を割り当てる。その結果,この割り当てられた専用キャッシュ領域は,それ以降,割当済み専用領域と称し,割り当てられた専用領域獲得要求は割当済み専用領域獲得要求と称することとする。   FIG. 9 is a diagram for explaining a case where a dedicated cache area is allocated to a dedicated area acquisition request. Assume that a dedicated area acquisition request 30 is issued in the divided state of the cache memory 130 of (1) in FIG. In this case, the actual cache validity of the target process of the dedicated area acquisition request is calculated based on the formula (4). If the actual cache validity is higher than the second reference value, a dedicated cache area with a cache sector ID = 2 is allocated to the dedicated area acquisition request 30 as in the cache memory 130 of (2) in FIG. . As a result, the allocated dedicated cache area is hereinafter referred to as an allocated dedicated area, and the allocated dedicated area acquisition request is referred to as an allocated dedicated area acquisition request.

さらに,割り当てる専用キャッシュ領域のサイズについて説明する。図5に示したとおり,処理のキャッシュヒット率は,キャッシュサイズを増大することで急激に上昇し,ある基準キャッシュサイズx1で飽和する。そこで,実キャッシュ有効利用度は,図5のキャッシュサイズ対キャッシュヒット率の特性曲線の基準キャッシュサイズx1でのキャッシュヒット率を元に算出することが望ましい。そして,そのようにして算出した実キャッシュ有効利用度が第2の基準値より大きい場合には,その専用領域獲得要求に対して割り当てる専用キャッシュ領域のサイズは,基準キャッシュサイズx1に設定するのが望ましい。   Furthermore, the size of the dedicated cache area to be allocated will be described. As shown in FIG. 5, the cache hit rate of processing increases rapidly by increasing the cache size, and saturates at a certain reference cache size x1. Therefore, it is desirable to calculate the actual cache effective usage based on the cache hit rate at the reference cache size x1 in the characteristic curve of cache size vs. cache hit rate in FIG. When the actual cache effective usage calculated in this way is larger than the second reference value, the size of the dedicated cache area allocated to the dedicated area acquisition request is set to the reference cache size x1. desirable.

このように,専用キャッシュ領域のキャッシュサイズを自動的に基準キャッシュサイズx1に割り当てるようにすることで,最適なキャッシュサイズを割り当てることが可能になる。   Thus, by automatically assigning the cache size of the dedicated cache area to the reference cache size x1, it is possible to assign an optimum cache size.

図9によれば,実キャッシュ有効利用度が第2の基準値より高い専用領域獲得要求に次々と専用キャッシュ領域を割り当てていくと,キャッシュメモリ130が専用キャッシュ領域であふれることになる。そこで,後述する定期割当見直し処理(3)により,共用キャッシュ領域と専用キャッシュ領域とのバランスを適正化することで,キャッシュメモリが専用キャッシュ領域であふれることを回避することができる。   According to FIG. 9, when the dedicated cache areas are successively assigned to the dedicated area acquisition requests whose actual cache effective usage is higher than the second reference value, the cache memory 130 overflows with the dedicated cache area. Therefore, it is possible to avoid overflowing the cache memory with the dedicated cache area by optimizing the balance between the shared cache area and the dedicated cache area by the periodic allocation review process (3) described later.

[専用領域獲得要求判定処理S16(2)]
図10は,図3に示した専用領域獲得要求に対する判定処理S16について第2の例のフローチャート図である。この第2の判定処理では,OS20内のキャッシュ割当管理部204が,専用領域獲得要求の対象処理のキャッシュ攪乱力を算出して第1の基準値より大きい場合に攪乱処理キャッシュ領域を割り当てる(S30,S31,S32)ことは同じである。そして,キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値以下の場合に,専用領域獲得要求の対象処理と割当済専用領域の実キャッシュ有効利用度(望ましくは実キャッシュ有効利用値の増加率)を比較判定して(S37),入れ替えることがより効率的である場合は(S37のYES),専用領域獲得要求に専用領域を割り当て,割当済専用領域を開放して,両者を入れ替える(S39)。逆に,入れ替えるのが効率的ではない場合は(S37のNO),専用領域獲得要求に共用キャッシュ領域を割り当てる(S40)。
[Dedicated area acquisition request determination processing S16 (2)]
FIG. 10 is a flowchart of a second example of the determination process S16 for the dedicated area acquisition request shown in FIG. In the second determination process, the cache allocation management unit 204 in the OS 20 calculates the cache disturbance force of the target process for the dedicated area acquisition request and allocates the disturbance process cache area when it is larger than the first reference value (S30). , S31, S32) is the same. Then, when the cache disturbance power is equal to or less than the first reference value, the cache allocation management unit 204 performs the processing for the dedicated area acquisition request and the actual cache effective utilization level (preferably the actual cache effective utilization value of the allocated dedicated area). If the replacement rate is more efficient (YES in S37), a dedicated area is allocated to the dedicated area acquisition request, the allocated dedicated area is released, and both are switched. (S39). Conversely, if it is not efficient to replace (NO in S37), the shared cache area is allocated to the dedicated area acquisition request (S40).

図11は,専用領域獲得要求と割当済専用領域獲得要求との間で専用キャッシュ領域を入れ替える処理を説明する図である。図11中(1)のキャッシュメモリ130のような分割状態において,専用領域獲得要求30が発行されると,その対象処理のキャッシュ攪乱力が第1の基準値以下の場合,割当済み専用領域と入れ替えて新たな専用領域を割り当てることで,キャッシュメモリ全体のキャッシュヒット数を増大できるか否かを判定する。   FIG. 11 is a diagram for explaining processing for exchanging a dedicated cache area between a dedicated area acquisition request and an allocated dedicated area acquisition request. When the dedicated area acquisition request 30 is issued in the divided state such as the cache memory 130 in FIG. 11 (1), if the cache disturbance power of the target process is equal to or less than the first reference value, It is determined whether or not the number of cache hits in the entire cache memory can be increased by replacing and assigning a new dedicated area.

図11に示した例では,キャッシュセクタID=2の割当済専用領域の実キャッシュ有効利用度よりも,専用領域獲得要求の対象処理の実キャッシュ有効利用度のほうが,入れ替えに要するオーバーヘッド値を超えて高いため,割当済専用領域を開放して共用キャッシュ領域に移動し,代わりに,専用領域獲得要求に新たな専用キャッシュ領域を割り当てている。   In the example shown in FIG. 11, the actual cache effective usage of the target process of the dedicated area acquisition request exceeds the overhead value required for the replacement than the actual cache effective usage of the allocated dedicated area with the cache sector ID = 2. Therefore, the allocated dedicated area is released and moved to the shared cache area. Instead, a new dedicated cache area is allocated to the dedicated area acquisition request.

そこで,上記の比較判定S37について説明する。   Therefore, the comparison determination S37 will be described.

まず,専用キャッシュ領域が既に割り当てられている場合と,未だ割り当てられていない場合とでキャッシュヒット率の取り扱いを異ならせる。割当済専用領域に対しては,推定キャッシュヒット率を採用し,未割当専用領域に対しては,事前調査で取得したキャッシュヒット率を採用する。   First, the cache hit rate is handled differently depending on whether the dedicated cache area has already been allocated or not yet allocated. The estimated cache hit rate is used for the allocated dedicated area, and the cache hit rate acquired in the preliminary survey is used for the unallocated dedicated area.

図12は,推定キャッシュヒット率を示す図である。図中,横軸はキャッシュサイズ,縦軸はキャッシュヒット率である。実線のH(x)は,事前調査で取得したキャッシュサイズに対するキャッシュヒット率の特性曲線である。それに対して,割当済み専用キャッシュ領域の場合は,割り当てられたキャッシュサイズx2に対するキャッシュヒット率を,キャッシュシステム内のカウンタなどから取得することができる。   FIG. 12 is a diagram showing an estimated cache hit rate. In the figure, the horizontal axis represents the cache size and the vertical axis represents the cache hit rate. The solid line H (x) is a characteristic curve of the cache hit rate with respect to the cache size obtained in the preliminary survey. On the other hand, in the case of the allocated dedicated cache area, the cache hit rate for the allocated cache size x2 can be acquired from a counter in the cache system.

その場合は,キャッシュサイズx2での現在のキャッシュヒット率SH(x2)と,事前調査時のキャッシュヒット率H(x2)との比率SH(x2)/H(x2)を,事前調査時の全キャッシュサイズに対するキャッシュヒット率H(x)に乗じることで,推定キャッシュヒット率SH(x)を得ることができる。即ち,次の式(6)の通りである。
SH(x)={SH(x2)/H(x2)}*H(x) (6)
この推定キャッシュヒット率SH(x)を利用すれば,上記の式(4)から,割当済み専用キャッシュ領域の実キャッシュ有効利用度は,次の式(7)のように導くことができる。
CCn=[{SH(x)−BASEH}*MACCESSn*PRIORITYn]/x (7)
ここで,nは,専用領域獲得要求の対象処理を示す。したがって,式(7)はある一つの対象処理に対する推定キャッシュヒット率SH(x)を利用した実キャッシュ有効利用度である。そして,未割当の専用領域獲得要求に対する実キャッシュ有効利用度は,前述の式(4)のとおりであり,以下のようになる。
実キャッシュ有効利用度n=[{H(x)−BASEH}*MACCESSn*PRIORITYn]/x (4)
専用領域獲得要求にはあるサイズxの専用キャッシュ領域が割り当てられる。したがって,割当済み専用キャッシュ領域との入れ替えを判定するためには,単位領域当たりの実キャッシュ有効利用度の増加値(実キャッシュ有効利用度の増加率)を考慮することが有効である。これを利用することで,割当済専用キャッシュ領域のサイズを+1するか−1するかにより実キャッシュ有効利用度がどの程度変化するかを考慮することができる。
In that case, the ratio SH (x2) / H (x2) between the current cache hit rate SH (x2) at the cache size x2 and the cache hit rate H (x2) at the preliminary survey is By multiplying the cache hit rate H (x) with respect to the cache size, an estimated cache hit rate SH (x) can be obtained. That is, it is as the following formula (6).
SH (x) = {SH (x2) / H (x2)} * H (x) (6)
If this estimated cache hit rate SH (x) is used, the actual cache effective usage of the allocated dedicated cache area can be derived from the above equation (4) as the following equation (7).
CCn = [{SH (x) −BASEH} * MACCESSn * PRIORITYn] / x (7)
Here, n indicates a target process for a dedicated area acquisition request. Therefore, Equation (7) is the actual cache effective utilization rate using the estimated cache hit rate SH (x) for a certain target process. Then, the effective usage rate of the real cache in response to the unallocated dedicated area acquisition request is as shown in the above equation (4) and is as follows.
Real cache effective usage n = [{H (x) −BASEH} * MACCESSn * PRIORITYn] / x (4)
A dedicated cache area of a certain size x is allocated to the dedicated area acquisition request. Therefore, in order to determine replacement with the allocated dedicated cache area, it is effective to consider the increase value of the actual cache effective usage per unit area (the increase rate of the actual cache effective usage). By using this, it is possible to consider how much the actual cache effective utilization level changes depending on whether the size of the allocated dedicated cache area is incremented by 1 or minus 1.

上記の実キャッシュ有効利用度の増加率CHHn(x)は,割り当てる専用キャッシュ領域のサイズをx−1からxに増加したときの実キャッシュ有効利用度の増加量であり,式(7)から次の式(8)のようになる。
CHHn(x)={SH(x)−SH(x-1)}*MACCESSn*PRIORITYn (8)
式(8)からわかるとおり,式(7)のように領域サイズxで除算していないので,CHHn(x)は,実キャッシュ有効利用数の増加率である。以下,式(8)を実キャッシュ有効利用数の増加率と称する。
The increase rate CHHn (x) of the actual cache effective usage is an increase amount of the actual cache effective usage when the size of the dedicated cache area to be allocated is increased from x-1 to x. Equation (8) is obtained.
CHHn (x) = {SH (x) −SH (x-1)} * MACCESSn * PRIORITYn (8)
As can be seen from equation (8), CHHn (x) is the rate of increase in the effective number of effective real cache usage since it is not divided by the area size x as in equation (7). Hereinafter, the equation (8) is referred to as an increase rate of the number of actual cache effective uses.

専用領域獲得要求に専用領域が未割当の場合は,推定キャッシュヒット率SH(x)を利用できないので,事前調査でのキャッシュヒット率H(x)を利用して,上記式(8)の実キャッシュ有効数の増加率CHHn(x)は,次の式(9)のようになる。
CHHn(x)={H(x)−H(x-1)}*MACCESSn*PRIORITYn (9)
本実施の形態の判定工程S37では,式(8)の実キャッシュ有効利用数の増加率を割当済み専用キャッシュ領域について算出した割当済専用領域リストLIST-FREEを利用する。以下,この割当済専用領域リストLIST-FREEについて説明する。
If the dedicated area is not allocated to the dedicated area acquisition request, the estimated cache hit rate SH (x) cannot be used. Therefore, the cache hit rate H (x) in the preliminary survey is used to execute the above equation (8). The increase rate CHHn (x) of the cache effective number is expressed by the following equation (9).
CHHn (x) = {H (x) −H (x-1)} * MACCESSn * PRIORITYn (9)
In the determination step S37 of the present embodiment, the allocated dedicated area list LIST-FREE in which the increase rate of the actual cache effective usage number of Expression (8) is calculated for the allocated dedicated cache area is used. Hereinafter, the allocated dedicated area list LIST-FREE will be described.

図13は,割当済専用領域リストLIST-FREEと未割当専用領域リストLIST-DEMANDとを示す図である。図13の右側が割当済専用領域リストLIST-FREEを示す。キャッシュメモリ130において,割当済みの専用領域(キャッシュセクタID=1,2)を,共用キャッシュ領域(キャッシュセクタID=0)に入れ替える場合に,実キャッシュ有効利用数の増加率がどうなるかを式(8)によって算出しておき,その増加率が少ない順に割当済専用領域リストLIST-FREEに登録しておく。増加率が少ないとは,割当済専用領域を共用領域に単位領域だけ入れ替えた場合の実キャッシュヒット数の減少が少ないことを意味し,現在のキャッシュメモリの有効利用に寄与していないことを意味する。   FIG. 13 is a diagram showing an allocated dedicated area list LIST-FREE and an unallocated dedicated area list LIST-DEMAND. The right side of FIG. 13 shows the allocated dedicated area list LIST-FREE. In the cache memory 130, when the allocated dedicated area (cache sector ID = 1, 2) is replaced with the shared cache area (cache sector ID = 0), the formula shows how the increase rate of the effective number of actual caches is ( 8) and registered in the allocated dedicated area list LIST-FREE in ascending order of increase rate. A small increase rate means that the number of real cache hits decreases when the allocated dedicated area is replaced with the unit area only, and does not contribute to the effective use of the current cache memory. To do.

以上のように,図13の右側の割当済専用領域リストLIST-FREEには,増加率が小さい順にその増加率(LIST-FREE.CHH)が並べられている。   As described above, in the allocated dedicated area list LIST-FREE on the right side of FIG. 13, the increasing rates (LIST-FREE.CHH) are arranged in ascending order of increasing rate.

図13の左側が未割当専用領域リストLIST-DEMANDを示す。キャッシュメモリ130において,専用領域獲得要求に対して専用領域が未割当の場合には共用領域が割り当てられていて,さらに,専用領域獲得要求に対して一部のサイズだけ専用領域が割当られている場合には残りのサイズは共用領域に割り当てられているので,それらの専用領域に割り当てられていない未割当専用領域が,この未割当専用領域リストLIST-DEMANDに含まれる。   The left side of FIG. 13 shows the unallocated dedicated area list LIST-DEMAND. In the cache memory 130, when a dedicated area is not allocated for a dedicated area acquisition request, a shared area is allocated, and a dedicated area is allocated only for a part of the size for the dedicated area acquisition request. In this case, since the remaining sizes are allocated to the shared areas, unallocated dedicated areas that are not allocated to these dedicated areas are included in this unallocated dedicated area list LIST-DEMAND.

そして,それらの未割当専用領域を共用領域から専用領域に入れ替えた場合に,実キャッシュ有効利用数の増加率がどうなるかを式(9)によって算出しておき,その増加率が多い順に未割当専用領域リストLIST-DEMANDに登録しておく。増加率が多いとは,未割当専用領域を共用領域から専用領域に入れ替えた場合の実キャッシュヒット数の増加が多いことを意味し,入れ替えることによりキャッシュメモリの有効利用に大きく寄与することを意味する。   Then, when the unallocated dedicated area is replaced from the shared area to the dedicated area, the increase rate of the actual cache effective usage number is calculated by the equation (9), and the unallocated order is increased in descending order. Register in the dedicated area list LIST-DEMAND. A large increase rate means that the number of actual cache hits increases when the unallocated dedicated area is replaced from the shared area to the dedicated area, which means that the replacement greatly contributes to effective use of the cache memory. To do.

以上のように,図13の左側の未割当専用領域リストLIST-DEMANDには,増加率が大きい順にその増加率(LIST-DEMAND.CHH)が並べられている。   As described above, in the unallocated dedicated area list LIST-DEMAND on the left side of FIG. 13, the increasing rates (LIST-DEMAND.CHH) are arranged in descending order of increasing rate.

そこで,本実施の形態の判定工程S37では,専用領域獲得要求30に対して専用領域を割り当てた場合の実キャッシュ有効利用数の増加と,割当済専用領域リストLIST-FREEに登録されている割当済専用領域の実キャッシュ有効利用数の減少の差分が,入れ替えに要するオーバーヘッド値を超える場合は,入れ替えして専用領域獲得要求に専用領域を割り当てるべきと判断する。   Therefore, in the determination step S37 of the present embodiment, an increase in the effective number of actual caches when the dedicated area is allocated to the dedicated area acquisition request 30, and the allocation registered in the allocated dedicated area list LIST-FREE. If the difference in the decrease in the effective cache effective usage count of the dedicated dedicated area exceeds the overhead value required for replacement, it is determined that the dedicated area should be allocated to the dedicated area acquisition request after replacement.

この判断は,次の式(10)を満たすか否かにより行われる。
y*CCn(y)−Σ(m=1-y)LIST-FREEm.CHH>OVH2*{Σ(m=1-y)LIST-FREEm.PRIORITY} (10)
ここで,yは専用領域のサイズyを,mはリスト内の番号を示し,LIST-FREEm.CHH は実キャッシュ有効利用数の増加率を示し,OVH2は入れ替えに要するオーバーヘッド値を示し,LIST-FREEm.PRIORITYはその処理の優先度を示す。つまり,オーバーヘッド値OVH2が優先度で重み付けされている。
This determination is made based on whether or not the following equation (10) is satisfied.
y * CCn (y) −Σ (m = 1−y) LIST-FREEm.CHH> OVH2 * {Σ (m = 1−y) LIST-FREEm.PRIORITY} (10)
Here, y indicates the size y of the dedicated area, m indicates the number in the list, LIST-FREEm.CHH indicates the rate of increase in the effective number of actual caches used, OVH2 indicates the overhead value required for replacement, LIST- FREEm.PRIORITY indicates the priority of the processing. That is, the overhead value OVH2 is weighted with priority.

OS20内のキャッシュ割当部204は,y=1から式(10)を判定していき,式(10)の条件を満たす最大のサイズyを,専用領域獲得要求に割り当てる専用領域のサイズとする。すなわち,図13に示した専用領域獲得要求30と割当済専用領域リストLIST-FREEとの間の矢印で示した入れ替えを行う。その結果,サイズyに対応する割当済専用領域が共用領域に開放される。どのサイズyでも式(10)を満たさない場合は,専用領域獲得要求には専用領域を割り当てない。   The cache allocation unit 204 in the OS 20 determines Expression (10) from y = 1, and sets the maximum size y that satisfies the condition of Expression (10) as the size of the dedicated area allocated to the dedicated area acquisition request. That is, the exchange indicated by the arrow between the dedicated area acquisition request 30 and the allocated dedicated area list LIST-FREE shown in FIG. 13 is performed. As a result, the allocated dedicated area corresponding to the size y is released to the shared area. If any size y does not satisfy Expression (10), a dedicated area is not allocated to the dedicated area acquisition request.

図12に示されるとおり,キャッシュヒット率の特性は,キャッシュサイズをある程度大きくすると急激に増加する傾向にある。したがって,新たに割り当てる専用領域のサイズyを1から大きくすることで,式(10)の条件を満たすサイズyが見つかることがある。特に,サイズyが基準値x1の付近で式(10)の条件が満たされることがある。   As shown in FIG. 12, the characteristics of the cache hit rate tend to increase rapidly when the cache size is increased to some extent. Therefore, by increasing the size y of the dedicated area to be newly allocated from 1, a size y that satisfies the expression (10) may be found. In particular, the condition of formula (10) may be satisfied when the size y is near the reference value x1.

式(10)の条件を満たすキャッシュサイズyと,専用領域獲得要求30が要求するキャッシュサイズとの関係は,例えば,次の通りである。条件を満たすキャッシュサイズyが要求するキャッシュサイズ以下であれば,キャッシュサイズyから要求するキャッシュサイズまでのサイズを割り当てることでキャッシュメモリの効率を向上することができる。一方,キャッシュサイズyが要求するキャッシュサイズを超えている場合は,式(10)の条件は満たされないと判定して専用領域を割り当てないのが好ましい。   The relationship between the cache size y that satisfies the condition of Expression (10) and the cache size requested by the dedicated area acquisition request 30 is, for example, as follows. If the cache size y that satisfies the condition is less than or equal to the requested cache size, the cache memory efficiency can be improved by assigning a size from the cache size y to the requested cache size. On the other hand, when the cache size y exceeds the required cache size, it is preferable not to allocate the dedicated area by determining that the condition of the expression (10) is not satisfied.

図24は,本専用領域獲得要求判定処理S16(2)のフローチャート図である。図10と同じ処理には同じ番号を与えている。まず,キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値を超えるか判定し(S30,31),超えていれば,専用の攪乱処理キャッシュ領域を割り当てる(S32)。その結果,セクタID変換テーブル131で,専用領域獲得要求のローカルセクタIDに,攪乱処理キャッシュ領域のキャッシュセクタIDが紐付けられる(S32-1)。   FIG. 24 is a flowchart of the dedicated area acquisition request determination process S16 (2). The same processes as those in FIG. 10 are given the same numbers. First, the cache allocation management unit 204 determines whether or not the cache disturbance power exceeds the first reference value (S30, 31), and if it exceeds, allocates a dedicated disturbance processing cache area (S32). As a result, in the sector ID conversion table 131, the cache sector ID of the disturbance processing cache area is linked to the local sector ID of the dedicated area acquisition request (S32-1).

キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値を超えていなければ,専用キャッシュ領域を割り当てるべきか否かの判定を,式(10)を満たすサイズyが存在するか否かで行う(S37,38)。キャッシュ割当管理部204は,条件を満たさない場合は,専用領域獲得要求に対して共用領域を割り当てて(S40),条件を満たす場合は,専用領域獲得要求に対してサイズyの専用領域を割り当てることをハードウエアに指示する(S39)。   If the cache disturbance power does not exceed the first reference value, the cache allocation management unit 204 determines whether to allocate a dedicated cache area based on whether there is a size y satisfying the equation (10). Perform (S37, 38). If the condition is not satisfied, the cache allocation management unit 204 allocates a shared area to the dedicated area acquisition request (S40), and if the condition is satisfied, allocates a dedicated area of size y to the dedicated area acquisition request. Is instructed to the hardware (S39).

ハードウエアでは,キャッシュ割当管理部204が,キャッシュセクタ情報設定部132に,新規に割り当てる専用キャッシュ領域とそのサイズyを設定する(S39-1)。また,入れ替え対象の割当済専用領域のキャッシュセクタIDの削除やサイズ変更も同時に行う(S39-1)。そして,キャッシュ割当管理部204が,セクタID変換テーブル131において,専用領域獲得要求のローカルセクタIDに,割り当てた専用キャッシュ領域のキャッシュセクタIDが紐付けられる(S39-2)。   In hardware, the cache allocation management unit 204 sets a dedicated cache area to be newly allocated and its size y in the cache sector information setting unit 132 (S39-1). In addition, the cache sector ID of the allocated dedicated area to be replaced is deleted and the size is changed at the same time (S39-1). Then, the cache allocation management unit 204 associates the cache sector ID of the allocated dedicated cache area with the local sector ID of the dedicated area acquisition request in the sector ID conversion table 131 (S39-2).

[定期割当見直し処理S18]
次に,図3の定期割当見直し処理S18について3つの例を説明する。専用領域獲得要求に応答して,OS20内のキャッシュ割当管理部204は,専用キャッシュ領域を割り当てるべきか否か,割当済専用領域と入れ替えすべきか否かを判定した。
[Regular allocation review process S18]
Next, three examples of the regular allocation review process S18 in FIG. 3 will be described. In response to the dedicated area acquisition request, the cache allocation management unit 204 in the OS 20 determines whether to allocate a dedicated cache area or to replace it with an allocated dedicated area.

これに対して,キャッシュ割当管理部204は,定期的に,例えば2秒毎に,専用領域獲得要求に割り当てた割当済専用領域と,専用領域獲得要求に未だ割り当てていない未割当専用領域とを入れ替えるべきか否かの判定(例1,例2)と,共用領域と全専用領域とのサイズの比率がアクセス頻度の比率に基づく理想値とずれている場合に,共用領域を専用領域として未割当の専用領域獲得要求に新たに割り当てるか,または,割当済専用領域を開放して共用領域に入れ替えるかの判定(例3)とを行う。これらの判定において,前述の割当済専用領域リストLIST-FREEと未割当専用領域リストLIST-DEMANDを利用する。   On the other hand, the cache allocation management unit 204 periodically allocates an allocated dedicated area allocated to the dedicated area acquisition request and an unallocated dedicated area that has not yet been allocated to the dedicated area acquisition request, for example, every 2 seconds. If the ratio of the size of the shared area and the total dedicated area deviates from the ideal value based on the access frequency ratio (Example 1 and Example 2) whether or not to replace, the shared area is not designated as a dedicated area. A determination is made as to whether to newly allocate the dedicated area acquisition request for allocation or to release the allocated dedicated area and replace it with the shared area (example 3). In these determinations, the above-mentioned allocated dedicated area list LIST-FREE and unallocated dedicated area list LIST-DEMAND are used.

[定期割当見直し処理S18(1)]
図14は,定期割当見直し処理S18の第1の例のフローチャート図である。図15は,定期割当見直し処理S18の第1の例を説明するための図である。図14において,定期的割当見直し処理S18では,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域の入れ替え判定を行う(S50)。この判定処理では,図13で説明した未割当専用領域リストLIST-DEMAND内の未割当専用領域の実キャッシュ有効利用数の増加率CHHn(x)と,割当済専用領域リストLIST-FREE内の割当済専用領域の実キャッシュ有効利用数の増加率CHHn(x)とを比較する(S51)。比較対象は,例えば,図15に矢印で示されるとおり,未割当専用領域リストLIST-DEMAND内の最上位にある最大の増加率と,割当済専用領域リストLIST-FREE内の最上位にある最小の増加率とを比較し,さらに,下位にある増加率どうしを比較する。
[Regular allocation review process S18 (1)]
FIG. 14 is a flowchart of a first example of the periodic allocation review process S18. FIG. 15 is a diagram for explaining a first example of the periodic allocation review process S18. In FIG. 14, in the periodic allocation review process S18, the cache allocation management unit 204 determines whether to replace the unallocated dedicated area and the allocated dedicated area (S50). In this determination processing, the increase rate CHHn (x) of the actual cache effective usage number of the unallocated dedicated area in the unallocated dedicated area list LIST-DEMAND described in FIG. 13 and the allocation in the allocated dedicated area list LIST-FREE The increase rate CHHn (x) of the actual cache effective usage number of the dedicated dedicated area is compared (S51). For example, as shown by an arrow in FIG. 15, the comparison target is the highest increase rate at the top in the unallocated dedicated area list LIST-DEMAND and the minimum at the top in the allocated dedicated area list LIST-FREE. The rate of increase is compared, and the rate of increase below is compared.

そして,以下の式(11)の条件を満たす場合は,入れ替えで効率がアップすると見なすことができる(S52)。
LIST-DEMANDm.CHH - LIST-FREEm.CHH > OVH2 * LIST-FREEm.PRIORITY (11)
ここで,mはリストの順番を示し,OVH2は入れ替えに要するオーバヘッド値を示し,LIST-FREEm.PRIORITYは割当済専用領域リストLIST-FREE内の処理の優先度を示す。つまり,比較対象の未割当専用領域の増加率から割当済専用領域の増加率への差分が,入れ替えに伴うオーバーヘッド値OVH2を優先度で重み付けした値を超える場合は,入れ替えで効率がアップすると見なされる。
If the condition of the following equation (11) is satisfied, it can be considered that efficiency is improved by replacement (S52).
LIST-DEMANDm.CHH-LIST-FREEm.CHH> OVH2 * LIST-FREEm.PRIORITY (11)
Here, m indicates the order of the list, OVH2 indicates the overhead value required for replacement, and LIST-FREEm.PRIORITY indicates the priority of processing in the allocated dedicated area list LIST-FREE. In other words, if the difference from the increase rate of the unallocated dedicated area to be compared to the increase rate of the allocated dedicated area exceeds the overhead value OVH2 associated with the replacement, the efficiency is considered to increase. It is.

式(11)の条件が,両リストの先頭(m=1)から順番に判定され,この条件が満たされなくなる順番まで繰り返し判定される。ただし,式(11)には優先度LIST-FREEm.PRIORITYが算入されているので,右辺の値は優先度に応じて変動する。したがって,未割当専用領域リストLIST-DEMAND内の最上位にある最大の増加率CHHと比較される対象は,割当済専用領域リストLIST-FREE内の最上位の増加率CHHだけでなく,最上位から順に下位の増加率CHHも含まれる。式(11)を満たす組み合わせが見つかれば,それらが入れ替え対象になる。そして,未割当専用領域リストLIST-DEMAND内の次の増加率CHHについて,上記と同じ比較が行われ,式(11)を満たす組み合わせが検出される。   The condition of Expression (11) is determined in order from the top (m = 1) of both lists, and is repeatedly determined until the order in which this condition is not satisfied. However, since priority LIST-FREEm.PRIORITY is included in equation (11), the value on the right side varies depending on the priority. Therefore, not only the highest increase rate CHH in the allocated dedicated area list LIST-FREE but also the highest increase ratio CHH in the highest level in the unassigned dedicated area list LIST-DEMAND. The lower rate of increase CHH is also included in order. If combinations that satisfy equation (11) are found, they become the replacement targets. Then, for the next increase rate CHH in the unallocated dedicated area list LIST-DEMAND, the same comparison as described above is performed, and a combination satisfying Expression (11) is detected.

入れ替えで効率がアップすると見なされる場合は,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域とを入れ替える処理を行う(S53)。具体的には,キャッシュセクタ情報設定部132に未割当専用領域に新たに専用領域を割り当てさせ,割り当てるサイズを登録させ,セクタID変換テーブル内の未割当専用領域獲得要求のローカルセクタIDに新たに割り当てる専用領域のキャッシュセクタIDを紐づける。逆に,キャッシュセクタ情報設定部132に割当済専用領域の登録を抹消させ,セクタID変換テーブル内の割当済専用領域獲得要求のローカルセクタIDに紐づけられているキャッシュセクタIDを共用領域のIDに変更する。   When it is considered that the efficiency is improved by the replacement, the cache allocation management unit 204 performs a process of replacing the unallocated dedicated area and the allocated dedicated area (S53). Specifically, the cache sector information setting unit 132 newly allocates a dedicated area to the unallocated dedicated area, registers the allocated size, and newly sets the local sector ID of the unallocated dedicated area acquisition request in the sector ID conversion table. The cache sector ID of the dedicated area to be allocated is linked. Conversely, the cache sector information setting unit 132 cancels the registration of the allocated dedicated area, and the cache sector ID linked to the local sector ID of the allocated dedicated area acquisition request in the sector ID conversion table is changed to the shared area ID. Change to

そして,入れ替え処理を行うと,入れ替えられた専用領域の増加率は,未割当専用領域リストLIST-DEMANDから割当済専用領域リストLIST-FREEに移動させ,同時に,割当済専用領域リストLIST-FREEから未割当専用領域リストLIST-DEMANDに移動させる。さらに,各リスト内で増加率CHHの値に基づいて,ソートし直しておく。   When the replacement process is performed, the increase rate of the replaced dedicated area is moved from the unallocated dedicated area list LIST-DEMAND to the allocated dedicated area list LIST-FREE, and at the same time from the allocated dedicated area list LIST-FREE. Move to the unallocated private area list LIST-DEMAND. Further, the list is sorted again based on the value of the increase rate CHH in each list.

入れ替えで効率がアップすると見なされない場合は,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域とを入れ替える処理は行わない(S54)。   If the efficiency is not considered to be improved by the replacement, the cache allocation management unit 204 does not perform the process of replacing the unallocated dedicated area and the allocated dedicated area (S54).

[定期割当見直し処理S18(2)]
図16は,定期割当見直し処理S18の第2の例のフローチャート図である。図17は,定期割当見直し処理S18の第2の例を説明するための図である。図16において,定期的割当見直し処理S18では,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域の入れ替え判定を行う(S60)。この判定処理では,図17に示したとおり,未割当専用領域リストLIST-DEMAND内の先頭の未割当専用領域の実キャッシュ有効利用数の増加率CHH1(x)の専用キャッシュ領域サイズxを増加させながら,割当済専用領域リストLIST-FREE内の割当済専用領域の実キャッシュ有効利用数の増加率CHHm(x)を先頭から増加させながら,両者の累積値の比較をする(S61)。
[Regular allocation review process S18 (2)]
FIG. 16 is a flowchart of a second example of the regular allocation review process S18. FIG. 17 is a diagram for explaining a second example of the periodic allocation review process S18. In FIG. 16, in the periodic allocation review process S18, the cache allocation management unit 204 determines whether to replace the unallocated dedicated area and the allocated dedicated area (S60). In this determination processing, as shown in FIG. 17, the dedicated cache area size x of the increase rate CHH 1 (x) of the actual cache effective usage number of the first unallocated dedicated area in the unallocated dedicated area list LIST-DEMAND is increased. While increasing the increase rate CHHm (x) of the effective number of actual caches in the allocated dedicated area in the allocated dedicated area list LIST-FREE from the top, the cumulative values of the two are compared (S61).

この判断S61は,次の式(10)を満たすか否かにより行われる。
Σ(x=1-y)LIST-DEMAND1.CHH(x)−Σ(m=1-y)LIST-FREEm.CHH >
OVH2*{Σ(m=1-y)LIST-FREEm.PRIORITY} (12)
ここで,yは専用領域のサイズyを,mはリスト内の番号を示し,LIST-DEMAND1.CHH, LIST-FREEm.CHH は実キャッシュ有効利用数の増加率を示し,OVH2は入れ替えに要するオーバーヘッド値を示し,LIST-FREEm.PRIORITYはその処理の優先度を示す。ここでも,オーバーヘッド値OVH2が優先度で重み付けされている。
This determination S61 is made based on whether or not the following equation (10) is satisfied.
Σ (x = 1-y) LIST-DEMAND 1 .CHH (x) −Σ (m = 1-y) LIST-FREEm.CHH>
OVH2 * {Σ (m = 1-y) LIST-FREEm.PRIORITY} (12)
Where y is the size of the dedicated area, y is the number in the list, LIST-DEMAND 1 .CHH, LIST-FREEm.CHH is the rate of increase in the effective number of real caches, and OVH2 is required for replacement Indicates the overhead value, and LIST-FREEm.PRIORITY indicates the priority of the processing. Again, the overhead value OVH2 is weighted by priority.

OS20内のキャッシュ割当部204は,式(12)の判定をy=1から増加しながら行い,式(12)の条件を満たす最大のサイズyを検出する。すなわち,実キャッシュ有効利用数の増加率CHH1(x)は,単位サイズ増加させたときの実キャッシュ有効利用数の増加量である。そして,図12に示すとおり,専用キャッシュ領域のサイズxを増加させるほどキャッシュヒット率が上昇する傾向にあるので,未割当専用領域の実キャッシュ有効利用数の増加率CHH1(x)が最大化できる専用キャッシュ領域のサイズxに対して,同じサイズの割当済専用領域の増加率と比較して,入れ替え対象にする。式(10)と同じ考え方である。 The cache allocation unit 204 in the OS 20 performs the determination of Expression (12) while increasing from y = 1, and detects the maximum size y that satisfies the condition of Expression (12). That is, the increase rate CHH 1 (x) of the actual cache effective usage number is an increase amount of the actual cache effective usage number when the unit size is increased. Then, as shown in FIG. 12, the cache hit rate tends to increase as the size x of the dedicated cache area increases, so the increase rate CHH 1 (x) of the actual cache effective number of unallocated dedicated areas is maximized. The size x of the possible dedicated cache area is compared with the increase rate of the allocated dedicated area of the same size, and is to be replaced. This is the same idea as that of Expression (10).

上記式(12)を満たして入れ替えで効率がアップすると見なされる場合は,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域とを入れ替える処理を行う(S63)。入れ替えで効率がアップすると見なされない場合は,キャッシュ割当管理部204は,入れ替え処理を行わない(S64)。   When it is considered that efficiency is improved by replacing the above equation (12), the cache allocation management unit 204 performs a process of replacing the unallocated dedicated area and the allocated dedicated area (S63). When the efficiency is not considered to be improved by the replacement, the cache allocation management unit 204 does not perform the replacement process (S64).

未割当専用領域獲得要求30が要求するキャッシュサイズと,式(12)を満たすキャッシュサイズyとの関係は,専用領域獲得要求判定処理(2)について図13で説明したのと同様である。つまり,式(12)を満たすキャッシュサイズyが要求するキャッシュサイズ以下であれば,サイズyと要求サイズとの間のサイズを割り当てる。また,キャッシュサイズyが要求キャッシュサイズを超える場合は,式(12)が満たされないとして,入れ替え処理は行わない。   The relationship between the cache size requested by the unallocated dedicated area acquisition request 30 and the cache size y satisfying Expression (12) is the same as that described with reference to FIG. 13 for the dedicated area acquisition request determination process (2). That is, if the cache size y satisfying Expression (12) is equal to or smaller than the requested cache size, a size between the size y and the requested size is assigned. When the cache size y exceeds the requested cache size, the replacement process is not performed because Expression (12) is not satisfied.

[定期割当見直し処理S18(3)]
図18は,定期割当見直し処理S18の第3の例のフローチャート図である。図19は,定期割当見直し処理S18の第3の例を説明するための図である。定期割当見直し処理S18の第3の例では,現実の加重メモリアクセス比に基づく共用キャッシュ領域の理想サイズと,現実の共用キャッシュ領域のサイズとの間に乖離が発生している場合は,共用キャッシュ領域が理想のサイズ比に近づくように,共用キャッシュ領域を未割当専用領域獲得要求に専用キャッシュ領域として割り当てるか,割当済専用キャッシュ領域を開放して共用キャッシュ領域に割り当てるかの入れ替え処理を行う。
[Regular allocation review process S18 (3)]
FIG. 18 is a flowchart of a third example of the periodic allocation review process S18. FIG. 19 is a diagram for explaining a third example of the periodic allocation review process S18. In the third example of the periodic allocation review process S18, if there is a divergence between the ideal size of the shared cache area based on the actual weighted memory access ratio and the actual size of the shared cache area, the shared cache area In order to bring the area closer to the ideal size ratio, a replacement process is performed to allocate the shared cache area as a dedicated cache area to an unallocated dedicated area acquisition request or to release the allocated dedicated cache area and allocate it to the shared cache area.

図19に示した左右のキャッシュメモリ130は,実線が実際のサイズ比を示し,破線が理想のサイズ比を示している。左側のキャッシュメモリ130は,共用キャッシュ領域が理想サイズよりも大きくなっているので,その分を専用領域として未割当専用領域獲得要求に割り当てることが望ましい。また,逆に,右側のキャッシュメモリ130は,共用キャッシュ領域が理想サイズよりも小さくなっているので,その分を割当済専用領域を開放して共用領域に変更することが望ましい。   In the left and right cache memories 130 shown in FIG. 19, a solid line indicates an actual size ratio, and a broken line indicates an ideal size ratio. Since the shared cache area is larger than the ideal size in the cache memory 130 on the left side, it is desirable to allocate that amount as a dedicated area to an unallocated dedicated area acquisition request. On the other hand, since the shared cache area of the right cache memory 130 is smaller than the ideal size, it is desirable to release the allocated dedicated area and change it to the shared area.

共用キャッシュ領域の理想サイズは,次の式(13)(14)により求められる。
MACCESSXn=Σ(m=1-n)MACCESSm * PRIORITYm (13)
RSIZESHR=CEIL{(MACCESSXSHR/MACCESSXALL)* SIZEALL} (14)
ここで,MACCESSXnはn個の対象処理の加重メモリアクセス量の合計値を示し,MACCESSmは対象処理mのメモリアクセス量を示し,PRIORITYmは処理mの優先度を示す。さらに,RSIZESHRは共用キャッシュ領域(SHR)の理想的なサイズを示し,MACCESSXSHR,MACCESSXALL,SIZEALLは共有キャッシュ領域(SHR)へのアクセス量,全キャッシュ領域へのアクセス量,全キャッシュ領域のサイズを示す。また,CEILは切り上げを意味する。
The ideal size of the shared cache area is obtained by the following equations (13) and (14).
MACCESSXn = Σ (m = 1-n) MACCESSm * PRIORITYm (13)
RSIZE SHR = CEIL {(MACCESSX SHR / MACCESSX ALL ) * SIZE ALL } (14)
Here, MACCESSXn indicates the total value of the weighted memory access amounts of the n target processes, MACCESSm indicates the memory access amount of the target process m, and PRIORITYm indicates the priority of the process m. RSIZE SHR indicates the ideal size of the shared cache area (SHR), and MACCESSX SHR , MACCESSX ALL , and SIZE ALL indicate the amount of access to the shared cache area (SHR), the amount of access to all cache areas, and the total cache area. Indicates the size. CEIL means rounding up.

したがって,式(13)によりn個の対象処理の加重メモリアクセス量の合計値が求められるので,共用キャッシュ領域を使用する対象処理全ての加重メモリアクセス量は,式(13)により算出できる。同様に,全専用キャッシュ領域または全キャッシュ領域を使用する対象処理全ての加重メモリアクセス量も,同様に式(13)により算出できる。   Therefore, since the total value of the weighted memory access amounts of the n target processes is obtained by Expression (13), the weighted memory access amounts of all the target processes that use the shared cache area can be calculated by Expression (13). Similarly, the weighted memory access amounts of all the target processes that use the entire dedicated cache area or the entire cache area can be similarly calculated by Expression (13).

そして,式(14)は,共用キャッシュ領域の理想サイズRSIZESHRを,全キャッシュ領域サイズ(SIZEALL)を共用領域と専用領域への加重メモリアクセス量で按分して(MACCESSXSHR/MACCESSXALL)求めている。したがって,共用キャッシュ領域の理想サイズRSIZESHRは,共用領域と専用領域との加重メモリアクセス数の比率に基づいて求められる。 Equation (14) is obtained by dividing the ideal size RSIZE SHR of the shared cache area by dividing the total cache area size (SIZE ALL ) by the weighted memory access to the shared area and the dedicated area (MACCESSX SHR / MACCESSX ALL ). ing. Therefore, the ideal size RSIZE SHR of the shared cache area is obtained based on the weighted memory access number ratio between the shared area and the dedicated area.

そして,前述した,共用キャッシュ領域の理想サイズと,現実のサイズとを比較して,その差分が入れ替えに要するオーバーヘッド値OVH1を超えるか否かの判断が行われる。その判断は,以下の式(15)が満たされるか否かによって行われる。
ABS{MACCESSXSHR - MACCESSXALL*(SIZESHR/SIZEALL) > OVH1 (15)
ここで,ABSは絶対値を示している。
Then, the ideal size of the shared cache area described above is compared with the actual size, and it is determined whether or not the difference exceeds the overhead value OVH1 required for replacement. The determination is made based on whether or not the following equation (15) is satisfied.
ABS {MACCESSX SHR -MACCESSX ALL * (SIZE SHR / SIZE ALL )> OVH1 (15)
Here, ABS indicates an absolute value.

式(15)は,プロセス実行中における共用キャッシュ領域に割り当てられた対象処理でのメモリアクセス頻度を各対象処理の優先度で重み付けした第1の加重アクセス頻度MACCESSXSHRと,各対象処理のメモリアクセス頻度を各対象処理の優先度で重み付けした加重アクセス頻度の累計値MACCESSXALLを共用キャッシュ領域と前記専用キャッシュ領域のサイズ比(SIZESHR/SIZEALL)で按分した共用キャッシュ領域の第2の加重アクセス頻度MACCESSXALL*(SIZESHR/SIZEALL)との差分が,オーバーヘッド値OVH1より高い場合の条件式である。この条件式が満たされる場合に,その差分に対応したサイズだけ,割当済み専用キャッシュ領域を共用キャッシュ領域に入れ替えるか,または共用キャッシュ領域を未割当専用キャッシュ領域に入れ替える。 Expression (15) is a first weighted access frequency MACCESSX SHR obtained by weighting the memory access frequency in the target process allocated to the shared cache area during the process execution by the priority of each target process, and the memory access of each target process. Cumulative value of weighted access frequency weighted by priority of each target process MACCESSX ALL Second weighted access of shared cache area that is divided by size ratio (SIZE SHR / SIZE ALL ) of shared cache area and dedicated cache area Conditional expression when the difference from the frequency MACCESSX ALL * (SIZE SHR / SIZE ALL ) is higher than the overhead value OVH1. When this conditional expression is satisfied, the allocated dedicated cache area is replaced with a shared cache area or the shared cache area is replaced with an unallocated dedicated cache area by a size corresponding to the difference.

上記式(15)は,式全体にSIZEALL/MACCESSXALLを乗算すると,次の式(16)になる。
ABS{(MACCESSXSHR/MACCESSXALL)*SIZEALL - SIZESHR} > OVH1*( SIZEALL/MACCESSXALL) (16)
ABS{(RSIZESHR - SIZESHR )} >OVH1*( SIZEALL/MACCESSXALL) (16)
すなわち,現実の加重アクセス頻度比による共用キャッシュ領域の理想的なサイズRSIZESHRと,現実のサイズSIZESHRとの差分がオーバーヘッド値を超えるか否かを判定することと同じである。
The above equation (15) becomes the following equation (16) when the entire equation is multiplied by SIZE ALL / MACCESSX ALL .
ABS {(MACCESSX SHR / MACCESSX ALL ) * SIZE ALL -SIZE SHR }> OVH1 * (SIZE ALL / MACCESSX ALL ) (16)
ABS {(RSIZE SHR -SIZE SHR )}> OVH1 * (SIZE ALL / MACCESSX ALL ) (16)
That is, it is the same as determining whether the difference between the ideal size RSIZE SHR of the shared cache area based on the actual weighted access frequency ratio and the actual size SIZE SHR exceeds the overhead value.

そこで,上記式(15)または(16)が満たされる場合は,共用キャッシュ領域のサイズが理想的なサイズに近づくように,割当済み専用キャッシュ領域を共用キャッシュ領域に入れ替えるか,逆に,共用キャッシュ領域を未割当専用キャッシュ領域ュ領域に入れ替える。   Therefore, if the above formula (15) or (16) is satisfied, the allocated dedicated cache area is replaced with the shared cache area so that the size of the shared cache area approaches the ideal size, or conversely, the shared cache area Replace the area with the unallocated dedicated cache area.

そのために,本実施の形態では,図19の左側に示すように,共用領域の理想サイズに比較して現実のサイズが大きい場合は,専用領域候補リストのサイズ(WAY数)を増加し,定期的見直しでは未割当専用領域獲得要求に対して専用領域を割り当てることができることを記録する。逆に,図19の右側に示すように,共用領域の理想サイズに比較して現実のサイズが小さい場合は,専用領域借りリストのサイズ(WAY数)を増加し,定期的見直しでは割当済専用領域を共用領域を割り当てることができることを記録する。   Therefore, in the present embodiment, as shown on the left side of FIG. 19, when the actual size is larger than the ideal size of the shared area, the size (number of WAYs) of the dedicated area candidate list is increased and In the periodic review, it is recorded that a dedicated area can be allocated in response to an unallocated dedicated area acquisition request. Conversely, as shown on the right side of FIG. 19, when the actual size is smaller than the ideal size of the shared area, the size (number of WAYs) of the dedicated area borrowing list is increased. Record that the area can be allocated a shared area.

そして,定期的見直しでは,図19の左側に示すように,専用領域候補リストのサイズ(WAY数)分だけ,未割当専用領域リストLIST-DEMANDの先頭から専用領域を割り当てる。あるいは,図19の右側に示すように,専用領域借りリストのサイズ(WAY数)分だけ,割当済専用領域リストLIST-FREEの先頭から専用領域を開放する。   In the periodic review, as shown on the left side of FIG. 19, the dedicated area is allocated from the head of the unallocated dedicated area list LIST-DEMAND by the size (number of WAYs) of the dedicated area candidate list. Alternatively, as shown on the right side of FIG. 19, the dedicated area is released from the top of the allocated dedicated area list LIST-FREE by the size (number of WAYs) of the dedicated area borrowing list.

図18のフローチャートにしたがって再度説明すると,キャッシュ割当管理部204は,共用領域の理想サイズと現実サイズとの差分に基づいて,共用領域と専用領域の入れ替えの必要性を判定する(S70)。具体的には,専用領域候補リストのサイズが正であれば(S71),未割当専用領域獲得要求に専用領域を割り当てる(S72)。一方,専用領域借りリストのサイズが正であれば(S73),割当済専用領域を開放する(S74)。   Describing again according to the flowchart of FIG. 18, the cache allocation management unit 204 determines the necessity of replacing the shared area and the dedicated area based on the difference between the ideal size and the actual size of the shared area (S70). Specifically, if the size of the dedicated area candidate list is positive (S71), a dedicated area is allocated to an unallocated dedicated area acquisition request (S72). On the other hand, if the size of the dedicated area borrowing list is positive (S73), the allocated dedicated area is released (S74).

キャッシュ割当管理部204は,共用領域の理想サイズと現実サイズとの差分がオーバーヘッド値を超えてない場合は,図14,16で説明した定期割当見直し処理(1)(2)を実行する(S75)。   When the difference between the ideal size and the actual size of the shared area does not exceed the overhead value, the cache allocation management unit 204 executes the periodic allocation review processing (1) and (2) described with reference to FIGS. ).

上記の第3の例では, 専用領域候補リストに記録されたキャッシュサイズ(Way数)で割り当てることが望ましい。   In the third example above, it is desirable to allocate the cache size (number of ways) recorded in the dedicated area candidate list.

[プロセス切り替え時のセクタID変換テーブルの入れ替え処理]
図25は,アプリケーションプログラムのプロセス22が切り替わるときのセクタID変換テーブルの入れ替え処理を示す図である。OS内のプロセス管理部202は,切り替え元の稼働プロセス22Aがプロセスを停止するときに,そのプロセスの停止処理を行い(S81),同時に,キャッシュ割当管理部204にセクタID変換テーブルの切替制御を指示し(S83),切り替え元の稼働プロセス22AのセクタID変換テーブルを,切り替え先の稼働プロセス22BのセクタID変換テーブルに入れ替えさせる(S84)。その後,プロセス管理部202は,切り替え先の稼働プロセス22Bのプロセス稼働を開始させる(S86)。
[Replacement process of sector ID conversion table at process switching]
FIG. 25 is a diagram showing a sector ID conversion table replacement process when the application program process 22 is switched. When the switching source operation process 22A stops the process, the process management unit 202 in the OS performs the process stop processing (S81), and simultaneously controls the cache allocation management unit 204 to switch the sector ID conversion table. Instructed (S83), the sector ID conversion table of the switching source operation process 22A is replaced with the sector ID conversion table of the switching destination operation process 22B (S84). Thereafter, the process management unit 202 starts the process operation of the switching destination operation process 22B (S86).

このように,プロセスが切り替わるときにプロセス管理部202がキャッシュ割当管理部204にセクタID変換テーブルを入れ替えさせ,切り替え先のプロセスがそのセクタID変換テーブルのキャッシュメモリ分割状態に基づいてメモリアクセスを行う。   As described above, when the process is switched, the process management unit 202 causes the cache allocation management unit 204 to replace the sector ID conversion table, and the switching destination process accesses the memory based on the cache memory division state of the sector ID conversion table. .

第1の実施の形態では,図8の専用領域獲得要求に対する判定(1)では,専用領域獲得要求の対象処理の実キャッシュ有効利用度が第2の基準値を超えていれば,専用領域を割り当てた。この判定において,式(4)(7)において優先度を乗算していないキャッシュ有効利用度を指標にして専用領域の割当の有無を判断してもよい。   In the first embodiment, in the determination (1) for the dedicated area acquisition request in FIG. 8, if the actual cache effective usage of the target process of the dedicated area acquisition request exceeds the second reference value, the dedicated area is determined. Assigned. In this determination, whether or not a dedicated area is allocated may be determined using, as an index, the cache effective utilization level that is not multiplied by the priority in Expressions (4) and (7).

第1の実施の形態では,図10−13の専用領域獲得要求に対する判定(2)では,実キャッシュ有効利用数の増加率を判断指標にして,専用領域獲得要求に対して専用領域を割り当てるか否かを判断した。この判定においても,式(8)(9)において優先度を乗算していないキャッシュ有効利用数の増加率を指標にして専用領域の割当の有無を判断してもよい。   In the first embodiment, in the determination (2) for the dedicated area acquisition request in FIG. 10-13, whether the dedicated area is allocated to the dedicated area acquisition request by using the increase rate of the actual cache effective usage number as a determination index. Judged whether or not. Also in this determination, the presence / absence of dedicated area allocation may be determined using as an index the increase rate of the number of cache effective uses not multiplied by the priority in equations (8) and (9).

第1の実施の形態において,定期割当見直し(1)(2)(3)においても,同様に,優先度を考慮しない指標を利用して判断してもよい。   In the first embodiment, the periodic allocation review (1), (2), and (3) may be similarly determined using an index that does not consider the priority.

[第2の実施の形態]
第2の実施の形態は,プログラム内で関数やモジュールなどのサブルーチンが呼び出されたときにサブルーチンのローカル変数を記憶するスタックメモリ領域に対するキャッシュメモリの制御プログラムに関する。
[Second Embodiment]
The second embodiment relates to a cache memory control program for a stack memory area that stores a local variable of a subroutine when a subroutine such as a function or a module is called in the program.

前述のとおり,OSは,階層的に呼び出されるサブルーチンのローカル変数をメインメモリ内のスタックメモリ領域に一括して格納して管理する。そして,サブルーチンプログラムがローカル変数をリードまたはライトする場合は,メインメモリ内のスタックメモリ領域にメモリアクセスを実行する。このスタックメモリ領域へのメモリアクセスにおいても,通常のメモリアクセスの処理と同様に,まずキャッシュメモリでキャッシュヒット判定が行われ,キャッシュミスヒットの場合のメインメモリ内のスタックメモリ領域へのアクセスが行われる。   As described above, the OS collectively stores and manages local variables of subroutines called hierarchically in the stack memory area in the main memory. When the subroutine program reads or writes a local variable, memory access is executed to the stack memory area in the main memory. In memory access to this stack memory area, as in normal memory access processing, cache hit determination is first performed in the cache memory, and access to the stack memory area in the main memory in the case of a cache miss hit is performed. Is called.

なお,サブルーチンには関数やモジュールが含まれるが,以下の実施の形態では,サブルーチンの一つである関数を例にして説明する。ただし,モジュールが呼び出されたり(コール),呼び戻されたり(リターン)した場合も,関数が呼び出されたり呼び戻されたりした場合と同様である。また,関数の引数はローカル変数として取り扱うことにする。   The subroutine includes a function and a module. In the following embodiment, a function that is one of the subroutines will be described as an example. However, when a module is called (call) or called back (return), it is the same as when a function is called or called back. Function arguments are treated as local variables.

図26は,第2の実施の形態におけるキャッシュメモリとスタックメモリ領域との関係を示す図である。CPU(またはCPUコア)12に隣接してキャッシュメモリ130が設けられている。そして,CPU12が関数内のローカル変数についてメモリアクセスを実行すると,キャッシュメモリにキャッシュヒット判定が行われ,キャッシュヒットすればキャッシュメモリ内のデータにアクセスされ,キャッシュミスヒットすれば外部インターフェース14を介してメインメモリ16内のスタックメモリ領域内のデータにアクセスされる。   FIG. 26 is a diagram illustrating the relationship between the cache memory and the stack memory area according to the second embodiment. A cache memory 130 is provided adjacent to the CPU (or CPU core) 12. When the CPU 12 executes a memory access to a local variable in the function, a cache hit determination is performed on the cache memory. If the cache hit occurs, the data in the cache memory is accessed, and if a cache miss occurs, the external interface 14 is accessed. Data in the stack memory area in the main memory 16 is accessed.

メインメモリ16内には,様々なデータやプログラムが記憶されている。例えば,プログラムPRが実行されると,各プログラムPR1−PR4毎に,変数や配列データなどを記憶するヒープ領域と,呼び出される関数のローカル変数を記憶するスタックメモリ領域STとが,メインメモリ16内に確保される。   Various data and programs are stored in the main memory 16. For example, when the program PR is executed, a heap area for storing variables and array data and a stack memory area ST for storing local variables of functions to be called are stored in the main memory 16 for each program PR1-PR4. Secured.

そして,このスタックメモリ領域は,次のようなスタック構造になっている。すなわち,あるプログラム内で関数A,B,C,D,A,Cが順番に階層的に呼び出された場合は,それらの呼び出された関数のローカル変数データがその順番でスタックメモリ領域内に記憶される。図26に示されるように,関数A,B,C,D,A,Cが順番に呼び出された場合,スタックメモリ領域内には,関数A,B,C,D,A1,C1のローカル変数データが順番に記憶される。そして,関数の実行が終了してその関数が呼び戻されると,呼び出された関数に対応するスタックメモリ領域は開放される。したがって,同じ関数が異なるタイミングで呼び出された場合は,それらの呼び出された関数毎にローカル変数がスタックメモリ領域内に記憶される。   The stack memory area has the following stack structure. That is, when functions A, B, C, D, A, and C are called hierarchically in a program, local variable data of the called functions are stored in the stack memory area in that order. Is done. As shown in FIG. 26, when functions A, B, C, D, A, and C are called in order, local variables of functions A, B, C, D, A1, and C1 are stored in the stack memory area. Data is stored in order. When the execution of the function is completed and the function is called back, the stack memory area corresponding to the called function is released. Therefore, when the same function is called at different timings, a local variable is stored in the stack memory area for each of the called functions.

このようなメインメモリ16内のスタックメモリ領域内のデータにメモリアクセスが実行されると,メモリアクセスされたデータがキャッシュメモリ130内にも記憶される。図26の例では,関数B,C,Dのローカル変数データがキャッシュメモリ130内に記憶されている。   When memory access is performed on the data in the stack memory area in the main memory 16, the memory accessed data is also stored in the cache memory 130. In the example of FIG. 26, local variable data of the functions B, C, and D is stored in the cache memory 130.

図27は,関数のローカル変数とスタックメモリ領域内の変数データとを示す図である。図27の例では,関数Aには,引数in_in1, in_in2と,変数int_va1, String_Va2とが利用されている。この場合,これらの引数と変数が,関数Aのローカル変数データとして,関数Aに対応するスタックメモリ領域内にひとまとめにして記憶される。   FIG. 27 is a diagram showing a local variable of a function and variable data in the stack memory area. In the example of FIG. 27, the function A uses arguments in_in1, in_in2 and variables int_va1, String_Va2. In this case, these arguments and variables are collectively stored in the stack memory area corresponding to the function A as local variable data of the function A.

図28は,プログラム内の関数とスタックメモリ領域とを示す図である。図28に例示したプログラムは,関数Aが呼び出され,関数A内で関数Bが呼び出され,関数B内で関数Cが呼び出され,関数C内で関数Dが呼び出され,その関数Dが終了して呼び戻された後に,関数Eが読み出される例である。   FIG. 28 is a diagram showing functions in a program and a stack memory area. In the program illustrated in FIG. 28, the function A is called, the function B is called in the function A, the function C is called in the function B, the function D is called in the function C, and the function D ends. In this example, the function E is read after being called back.

この場合,スタックメモリ領域には,図示されるように,関数Aのローカル変数データ(図27のローカル変数in1,in2,va1,va2)の領域と,関数Bのローカル変数データの領域と,関数Cのローカル変数データの領域と,関数Dのローカル変数データの領域とが,スタックメモリ内にスタック構造で確保される。そして,関数Dが終了して呼び戻されると,スタックメモリ内から関数Dのローカル変数データの領域が開放され,その後関数Eが呼び出されると,スタックメモリ内に関数Eのローカル変数データの領域が新たに確保される。   In this case, in the stack memory area, as shown in the figure, the local variable data area of function A (local variables in1, in2, va1, va2 in FIG. 27), the local variable data area of function B, and the function The local variable data area for C and the local variable data area for function D are secured in a stack structure in the stack memory. When the function D is finished and called back, the local variable data area of the function D is released from the stack memory. When the function E is called after that, the local variable data area of the function E is newly added to the stack memory. Secured.

図29,図30は,スタックメモリ領域に対するキャッシュメモリの問題点について説明する図である。これらの例は,いずれもキャッシュメモリ130を複数の関数が共用して使用する例である。   FIG. 29 and FIG. 30 are diagrams for explaining problems of the cache memory for the stack memory area. In these examples, the cache memory 130 is shared by a plurality of functions.

図29には,スタックメモリ領域STの例と,それに対応するキャッシュメモリ130の変化の例とが示されている。(1)関数Cが長時間実行された例では,関数A,B,Cが順番に階層的に読み出されて,スタックメモリ領域ST内に関数A,B,Cのローカル変数データの領域が順番に確保されている。それに伴い,関数Cが呼び出された直後のキャッシュメモリ130−1内には,関数A,B,Cのローカル変数データの領域が書き込まれている。しかし,関数Cが長時間実行されると,関数Cのプロセスのデータや,スタックメモリ領域以外のメモリ領域のデータのメモリアクセにより,キャッシュメモリ130−1内に一旦は書き込まれたがその後アクセスされなかった関数A,Bのローカル変数データが追い出されて削除されてしまう。   FIG. 29 shows an example of the stack memory area ST and an example of changes in the cache memory 130 corresponding to the stack memory area ST. (1) In an example in which the function C is executed for a long time, the functions A, B, and C are read out hierarchically in order, and the local variable data areas of the functions A, B, and C are stored in the stack memory area ST. Secured in order. Along with this, local variable data areas of the functions A, B, and C are written in the cache memory 130-1 immediately after the function C is called. However, when the function C is executed for a long time, the data of the process of the function C and the data in the memory area other than the stack memory area are once written into the cache memory 130-1 but then accessed. The local variable data of the functions A and B that did not exist are expelled and deleted.

このような場合に,実行中の関数Cが終了して,その直後に関数Bのローカル変数データにメモリアクセスが実行されると,キャッシュメモリ130−2内には関数Bのローカル変数データは削除されているので,キャッシュミスヒットを連発する。   In such a case, when the function C being executed is terminated and memory access is performed on the local variable data of the function B immediately after that, the local variable data of the function B is deleted in the cache memory 130-2. As a result, repeated cache misses occur.

(2)関数Dを呼び出した例では,関数A,B,Cが順番に階層的に読み出されて,スタックメモリ領域ST内に関数A,B,Cのローカル変数データが順番に記憶されている状態で,新しい関数Dが呼び出されている。その場合,キャッシュメモリ130において,既に実行された関数Xのローカル変数データがキャッシュメモリ130−3に記憶されている場合には,その関数Xのローカル変数データをメインメモリ16に転送して退避させ,その関数Xのローカル変数データが記憶されていた領域に,メインメモリ16から読み出した関数Dのローカル変数データを上書きする必要がある。したがって,関数Dを読み出したことによる処理に,関数Xのローカル変数データをメインメモリに退避する処理が含まれてしまい,オーバーヘッドが大きくなる。   (2) In the example in which the function D is called, the functions A, B, and C are read out hierarchically in order, and the local variable data of the functions A, B, and C are stored in the stack memory area ST in order. In this state, a new function D is called. In this case, if the local variable data of the function X that has already been executed is stored in the cache memory 130-3 in the cache memory 130, the local variable data of the function X is transferred to the main memory 16 and saved. Therefore, it is necessary to overwrite the local variable data of the function D read from the main memory 16 in the area where the local variable data of the function X is stored. Therefore, the process by reading the function D includes the process of saving the local variable data of the function X in the main memory, which increases the overhead.

図30には,(3)大量の関数を短期的に呼び出した例におけるキャッシュメモリ130−5から130−6への変化が示されている。この例では,関数Aを呼び出したことによりキャッシュメモリ130−5には関数Aのローカル変数データが記憶され,更に,関数B〜Zが短時間で連続して階層的に呼び出されることで,キャッシュメモリ130−6内の広い領域に,それらの関数のローカル変数データが次々に記憶されている。その結果,キャッシュメモリ130−6内の他のプロセスのデータが消去されてキャッシュメモリ130−6内が乱されるおそれがある。それに伴い,他のプロセスのキャッシュミスヒット率が低下するおそれがある。   FIG. 30 shows (3) a change from the cache memory 130-5 to 130-6 in an example in which a large number of functions are called in a short time. In this example, when the function A is called, the local variable data of the function A is stored in the cache memory 130-5, and further, the functions B to Z are called hierarchically in a short time, thereby The local variable data of these functions are stored one after another in a wide area in the memory 130-6. As a result, data of other processes in the cache memory 130-6 may be erased and the cache memory 130-6 may be disturbed. As a result, the cache miss hit rate of other processes may decrease.

[第2の実施の形態の概略]
そこで,第2の実施の形態では,キャッシュメモリ制御プログラムにより,図29,30で指摘したような問題点を解決する。第2の実施の形態のキャッシュメモリ制御プログラムによれば,キャッシュメモリ内に一旦は記憶された過去に呼び出された関数のローカル変数データが,他のプロセスによるメモリアクセスで消去されないようにするために,呼び出される関数に対してそれぞれ専用キャッシュ領域を割り当てる。
[Outline of Second Embodiment]
Therefore, in the second embodiment, the problems as pointed out in FIGS. 29 and 30 are solved by the cache memory control program. According to the cache memory control program of the second embodiment, in order to prevent local variable data of a function called in the past once stored in the cache memory from being erased by a memory access by another process. Allocate a dedicated cache area for each function to be called.

ただし,連続して多数の関数が呼び出された場合に,キャッシュメモリ内に多数の専用キャッシュ領域が割り当てられることになり,他のプロセスにとり一定の容量しかないキャッシュメモリの利用効率が低下する。つまり,他のプロセスに割り当てられるキャッシュ領域のサイズが小さくなりキャッシュヒット率が低下する。   However, when a large number of functions are called continuously, a large number of dedicated cache areas are allocated in the cache memory, and the use efficiency of the cache memory having a certain capacity is reduced for other processes. That is, the size of the cache area allocated to other processes is reduced and the cache hit rate is reduced.

そこで,キャッシュメモリ制御プログラムは,プログラム内で呼び出される関数に対するスタックメモリ領域のために,限られた個数のキャッシュ領域をスタックメモリ用キャッシュ領域群として確保する。さらに,そのスタックメモリ用キャッシュ領域群内に,現在実行中の第1の関数に割り当てた第1の専用キャッシュ領域と,実行中の第1の関数の直前に呼び出された単数または複数の第2の関数にそれぞれ割り当てた第2の専用キャッシュ領域と,複数の空きキャッシュ領域とを維持するように,呼び出された関数と呼び戻された関数に対する専用キャッシュ領域の割当制御を行う。   Therefore, the cache memory control program reserves a limited number of cache areas as a stack memory cache area group for a stack memory area for a function called in the program. Furthermore, in the stack memory cache area group, a first dedicated cache area allocated to the first function being executed, and one or a plurality of second calls called immediately before the first function being executed. In order to maintain the second dedicated cache area allocated to each function and a plurality of free cache areas, the allocation control of the dedicated cache area is performed for the called function and the called back function.

上記の空きキャッシュ領域とは,メインメモリに退避することが必要などの有効なデータが記憶されていないキャッシュ領域であり,即座に新たなデータを上書きすることが可能なキャッシュ領域である。また,この空きキャッシュ領域には,他の関数やプロセスのメモリアクセスによるデータが書き込まれることがない,一種の専用キャッシュ領域である。   The above free cache area is a cache area in which valid data that needs to be saved in the main memory is not stored, and is a cache area in which new data can be immediately overwritten. In addition, this free cache area is a kind of dedicated cache area in which data due to memory access of other functions and processes is not written.

そして,スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域は,例えば,一定のサイズを有する。通常,関数のローカル変数を格納するスタックメモリ領域の容量は1MB以下と小さいので,スタックメモリ用キャッシュ領域群内に複数の関数それぞれに割り当てるキャッシュ領域を維持しても,それほど多くのメモリ容量を占有することはない。   The plurality of cache areas in the stack memory cache area group have, for example, a certain size. Normally, the capacity of the stack memory area for storing function local variables is as small as 1MB or less, so even if you maintain the cache area allocated to each of multiple functions in the stack memory cache area group, it occupies that much memory capacity. Never do.

図31は,第2の実施の形態における,関数Eが実行中の時間T1と関数Eが終了して呼び戻された時間T2のスタックメモリ領域STとキャッシュメモリ130内のスタックメモリ用キャッシュ領域群130−STとを示す図である。スタックメモリ領域STには,関数A,B,C,D,Eのローカル変数データが順番に記憶されている。それに対して,キャッシュメモリ制御プログラムは,キャッシュメモリ130内に,複数の関数に対するスタックメモリ領域のために,例えば5個のキャッシュ領域(セクタID=0−4)をスタックメモリ用キャッシュ領域群130−STとして確保する。   FIG. 31 shows the stack memory area ST 130 in the cache memory 130 and the stack memory area ST in the cache memory 130 and the stack memory area ST at the time T1 when the function E is executed and the time T2 when the function E ends and is called back. It is a figure which shows -ST. In the stack memory area ST, local variable data of functions A, B, C, D, and E are stored in order. On the other hand, the cache memory control program allocates, for example, five cache areas (sector ID = 0-4) in the cache memory 130 for the stack memory areas for a plurality of functions. Secured as ST.

さらに,キャッシュメモリ制御プログラムは,関数Eが実行中の時間T1では,スタックメモリ用キャッシュ領域群130−ST(1)内に,実行中の関数Eに割り当てた第1の専用キャッシュ領域(セクタID=4)と,その関数Eの直前に連続して読み出された2つの関数C,Dに割り当てた第2の専用キャッシュ領域(セクタID=2,3)と,次に呼び出される関数用の空きキャッシュ領域(セクタID=0)と,2番目に呼び出される関数用の空きキャッシュ領域(セクタID=1)とを維持している。   Further, the cache memory control program executes the first dedicated cache area (sector ID) assigned to the function E being executed in the stack memory cache area group 130-ST (1) at the time T1 when the function E is being executed. = 4), the second dedicated cache area (sector ID = 2, 3) allocated to the two functions C and D read out immediately before the function E, and the function to be called next An empty cache area (sector ID = 0) and an empty cache area for the second called function (sector ID = 1) are maintained.

つまり,スタックメモリ領域ST側に示したように,実行中の関数Eを中心としてその直前に呼び出された関数C,Dとその後呼び出される関数用の2つの空きキャッシュ領域に対応するキャッシュ領域が,スタックメモリ用キャッシュ領域群130−ST(1)内に維持される。   That is, as shown on the stack memory area ST side, the cache areas corresponding to the functions C and D called immediately before the function E being executed and the two free cache areas for the function called after that are as follows. It is maintained in the stack memory cache area group 130-ST (1).

関数EにセクタID=4の専用キャッシュ領域が割り当てられている理由は,階層的に呼び出された関数AからEが,スタックメモリ用キャッシュ領域群130−ST内のセクタID=0の専用キャッシュ領域から順番に割り当てられるからである。その結果,スタックメモリの深さが0番から始まるとすると,スタックの深さが5番目である関数Eには,セクタID=4の専用キャッシュ領域が割り当てられる。   The reason why the dedicated cache area of sector ID = 4 is allocated to the function E is that the functions A to E called hierarchically are assigned to the dedicated cache area of sector ID = 0 in the stack memory cache area group 130-ST. This is because they are assigned in order. As a result, if the stack memory depth starts from 0, a dedicated cache area of sector ID = 4 is allocated to the function E having the fifth stack depth.

次に,関数Eが終了して呼び戻された時間T2では,キャッシュメモリ制御プログラムは,時間T1で2番目の関数用の空きキャッシュ領域(セクタID=1)を専用キャッシュ領域として関数Bに割り当てて,関数Bのローカル変数データをメインメモリにメモリアクセス(プリフェッチ)して関数Bに割り当てた専用キャッシュ領域(セクタID=1)内に展開する。更に,キャッシュメモリ制御プログラムは,時間T1で関数Eに割り当てていた専用キャッシュ領域(セクタID=4)を次の関数用の空きキャッシュ領域に割り当て,時間T1で次の関数用の空きキャッシュ領域(セクタID=0)を2番目の関数用の空きキャッシュ領域に割り当てる。このセクタID=4,0をそれぞれ次の関数用空きキャッシュ領域,2番目の関数用空きキャッシュ領域に割り当てるのは,後述するとおりOSのキャッシュ割当管理部204がキャッシュセクタ情報設定部132に行えばよく,キャッシュメモリ内のデータの書き込みや退避は必要ない。   Next, at the time T2 when the function E ends and is called back, the cache memory control program allocates the free cache area (sector ID = 1) for the second function to the function B as the dedicated cache area at the time T1. , The local variable data of the function B is memory-accessed (prefetched) to the main memory and expanded in a dedicated cache area (sector ID = 1) assigned to the function B. Further, the cache memory control program allocates the dedicated cache area (sector ID = 4) allocated to the function E at the time T1 to the free cache area for the next function, and at the time T1 the free cache area for the next function ( Sector ID = 0) is allocated to the free cache area for the second function. The sector ID = 4, 0 is allocated to the next function free cache area and the second function free cache area, respectively, if the OS cache allocation management unit 204 performs the cache sector information setting unit 132 as described later. Often there is no need to write or save data in the cache memory.

その結果,キャッシュメモリ制御プログラムは,関数Eが終了して関数Dが実行開始される時間T2では,スタックメモリ用キャッシュ領域群130−ST(2)内に,スタックメモリ領域STの実行中の関数Dに割り当てた第1の専用キャッシュ領域(ID=3)を中心として,その直前に呼び出された2個の関数C,Bに割り当てた第2の専用キャッシュ領域(ID=2,1)と,その直後に呼び出される予定の2個の関数用の空きキャッシュ領域(ID=4,0)とを維持する。したがって,スタックメモリ用キャッシュ領域群130−STのサイズは,時間T1からT2において5個に限定される。   As a result, the cache memory control program executes the function being executed in the stack memory area ST in the stack memory cache area group 130-ST (2) at the time T2 when the function E ends and the function D starts executing. A second dedicated cache area (ID = 2, 1) assigned to the two functions C and B called immediately before the first dedicated cache area (ID = 3) assigned to D; An empty cache area (ID = 4, 0) for two functions to be called immediately after that is maintained. Therefore, the size of the stack memory cache area group 130-ST is limited to five from time T1 to time T2.

ここで,直前の関数に割り当てる第2の専用キャッシュ領域の数2と,その後の関数用空きキャッシュ領域の数2は一例であり,スタックメモリ用キャッシュ領域群のキャッシュ領域の数5も一例である。これらの数の設定については後述する。ただし,これらの数は固定の限られた数に設定され,スタックメモリ用キャッシュ領域群13−STのサイズがある固定範囲内に限定される。   Here, the number 2 of the second dedicated cache area allocated to the immediately preceding function and the number 2 of the subsequent function free cache areas are examples, and the number 5 of the cache areas in the stack memory cache area group is also an example. . The setting of these numbers will be described later. However, these numbers are set to a fixed limited number, and the size of the stack memory cache area group 13-ST is limited to a fixed range.

図32は,第2の実施の形態における,関数Eが実行中の時間T1と関数Eが終了して呼び戻された時間T3のスタックメモリ領域STとキャッシュメモリ130内のスタックメモリ用キャッシュ領域群130−STとを示す図である。関数Eが実行中の時間T1でのスタックメモリ用キャッシュ領域群130−ST(1)は,図31と同じである。   FIG. 32 shows the stack memory area ST 130 and the stack memory cache area group 130 in the cache memory 130 at the time T1 when the function E is executed and the time T3 when the function E ends and is called back in the second embodiment. It is a figure which shows -ST. The stack memory cache area group 130-ST (1) at the time T1 during which the function E is being executed is the same as FIG.

次に,関数Eの次の関数Fが呼び出された時間T3では,キャッシュメモリ制御プログラムは,時間T1での次の関数用の空きキャッシュ領域(セクタID=0)を専用キャッシュ領域として呼び出された関数Fに割り当てて,関数Fのローカル変数データをメインメモリにアクセス(プリフェッチ)して関数Fに割り当てた専用キャッシュ領域(セクタID=0)内に書込む。更に,キャッシュメモリ制御プログラムは,時間T1で関数Cに割り当てていた専用キャッシュ領域(セクタID=2)内の関数Cのローカル変数データをメインメモリに退避し,退避後のキャッシュ領域(セクタID=2)を2番目の関数用の空きキャッシュ領域に割り当てる。   Next, at the time T3 when the next function F of the function E is called, the cache memory control program is called with the free cache area (sector ID = 0) for the next function at the time T1 as a dedicated cache area. Assigned to the function F, the local variable data of the function F is accessed (prefetched) in the main memory and written into the dedicated cache area (sector ID = 0) assigned to the function F. Further, the cache memory control program saves the local variable data of the function C in the dedicated cache area (sector ID = 2) assigned to the function C at time T1 to the main memory, and the cache area after the save (sector ID = 2) is allocated to the free cache area for the second function.

その結果,キャッシュメモリ制御プログラムは,関数Fが呼び出されて実行開始される時間T3では,スタックメモリ用キャッシュ領域群130−ST(3)内に,スタックメモリ領域STの実行中の関数Fに割り当てた第1の専用キャッシュ領域(ID=0)を中心として,その直前に呼び出された2個の関数E,Dに割り当てた第2の専用キャッシュ領域(ID=4,3)と,その直後に呼び出される2個の関数用の空きキャッシュ領域(ID1,2)とを,維持する。したがって,スタックメモリ用キャッシュ領域群130−STのサイズは,時間T1からT3において5個に限定される。   As a result, the cache memory control program is allocated to the function F being executed in the stack memory area ST in the stack memory cache area group 130-ST (3) at the time T3 when the function F is called and started to execute. The second dedicated cache area (ID = 4, 3) assigned to the two functions E and D called immediately before the first dedicated cache area (ID = 0) and immediately after The free cache areas (ID1, 2) for the two functions to be called are maintained. Therefore, the size of the stack memory cache area group 130-ST is limited to five from time T1 to time T3.

以上のように,キャッシュメモリ制御プログラムは,関数が終了して呼び戻され,または,新たな関数が呼び出された場合に,スタックメモリ用キャッシュ領域群130−STを,スタックメモリ領域ST内の実行中の関数に割り当てられた第1の専用キャッシュ領域を中心にして,実行中の関数の直前に連続して呼び出されたN個の関数に割り当てられたN個の第2の専用キャッシュ領域と,実行中の関数の直後に連続して呼び出されるM個の関数に割り当てられたM個の専用空きキャッシュ領域とに維持する。そのために,必要に応じて,スタックメモリ用キャッシュ領域群から追い出される関数の専用キャッシュ領域内のローカル変数データをメインメモリに退避し,スタックメモリ用キャッシュ領域群内に新たに加えられる関数のローカル変数データをプリフェッチしてメインメモリから専用キャッシュ領域に書き込み展開する。   As described above, the cache memory control program is called back after the function is completed or when a new function is called, the stack memory cache area group 130-ST is being executed in the stack memory area ST. N second dedicated cache areas assigned to N functions that are called consecutively immediately before the function being executed centered on the first dedicated cache area assigned to the function, and execution It is maintained in the M dedicated free cache areas allocated to the M functions that are successively called immediately after the middle function. Therefore, if necessary, the local variable data in the dedicated cache area of the function evicted from the stack memory cache area group is saved to the main memory, and the local variable of the function newly added to the stack memory cache area group is saved. Data is prefetched and written from the main memory to the dedicated cache area.

上記のように制御することで,限られたサイズのスタックメモリ用キャッシュ領域群130−ST内において,今後実行される可能性が高い関数のローカル変数データが別々の専用キャッシュ領域に格納され,今後呼び出される関数のローカル変数データを他のデータの退避なしで即座に書き込むことができる専用空きキャッシュ領域が維持される。よって,図29,30で説明したような問題点は回避される。   By controlling as described above, local variable data of a function that is likely to be executed in the future is stored in a separate dedicated cache area in the limited-size stack memory cache area group 130-ST. A dedicated free cache area is maintained in which local variable data of the called function can be written immediately without saving other data. Therefore, the problems described with reference to FIGS. 29 and 30 are avoided.

次に,第2の専用キャッシュ領域のN個と,空きキャッシュ領域のM個の設定について説明する。   Next, the setting of N for the second dedicated cache area and M for the free cache area will be described.

図33は,実行中の関数の直前に連続して呼び出されたN個の関数に割り当てられたN個の第2の専用キャッシュ領域の個数Nについて説明する図である。図31で説明したとおり,キャッシュメモリ制御プログラムは,関数Eが終了して呼び戻されると,関数Bのスタックメモリ領域内のローカル変数データをプリフェッチ開始して,関数Bに割り当てられた空きキャッシュ領域にそのローカル変数データを書き込み始める。つまり,関数Bのローカル変数データのキャッシュリストア処理である。このスタックメモリ領域へのプリフェッチは,CPUユニットの外のメインメモリへのメモリアクセスを伴うので,一般に長い時間を要する。   FIG. 33 is a diagram for explaining the number N of N second dedicated cache areas allocated to N functions that are called continuously immediately before the function being executed. As described with reference to FIG. 31, when the function E ends and is called back, the cache memory control program starts prefetching local variable data in the stack memory area of the function B, and stores it in the free cache area allocated to the function B. Start writing the local variable data. That is, it is a cache restore process for local variable data of function B. This prefetch to the stack memory area generally involves a long time because it involves memory access to the main memory outside the CPU unit.

そして,関数Eの終了に続いて,関数D,Cが連続して終了したとすると,関数D,Cの終了処理後に,関数Bのローカル変数データへのメモリアクセスが開始される。このとき,関数Bのローカル変数データが関数Bに割り当てられた空きキャッシュ領域にキャッシュリストアを完了して書込まれていれば,キャッシュヒットミスは生じない。   Assuming that the functions D and C are continuously terminated following the termination of the function E, memory access to the local variable data of the function B is started after the termination processing of the functions D and C. At this time, if the local variable data of the function B is written in the free cache area allocated to the function B after completing the cache restoration, no cache hit miss occurs.

さらに,関数E,D,Cの終了時,つまり呼び戻し時に必要な処理が行われる。例えば,実行中の関数のCPU内のレジスタやテーブルの退避と復帰処理などのソフトウエアによる処理である。   Further, necessary processing is performed at the end of the functions E, D, and C, that is, at the time of recall. For example, software processing such as saving and restoring processing of registers and tables in the CPU of the function being executed.

そこで,関数Eの終了処理後に,関数D,Cの終了処理(呼び戻し処理)中に,関数Bのローカル変数データへのメモリアクセスによるキャッシュリストアが完了する必要がある。   Therefore, after the end processing of the function E, the cache restoration by the memory access to the local variable data of the function B needs to be completed during the end processing (call back processing) of the functions D and C.

したがって,第2の専用キャッシュ領域の個数Nは,以下の式で求められる個数以上であることが必要になる。
N=CEIL{スタックメモリ内の関数のローカル変数データのメモリアクセス時間/関数呼び戻し処理に必要な時間} (17)
ここで,CEILは切り上げを意味する。
Therefore, the number N of the second dedicated cache areas needs to be greater than or equal to the number obtained by the following formula.
N = CEIL {memory access time of function local variable data in stack memory / time required for function call back processing} (17)
Here, CEIL means rounding up.

すなわち,第2の専用キャッシュ領域の個数Nを,少なくとも式(17)の数にすることで,スタックメモリ用キャッシュ領域群のキャッシュ領域の個数を最小限に保ちつつ,関数の実行終了後の直前に呼び出された関数のローカル変数データへのメモリアクセスで確実にキャッシュヒットさせることができる。図31の例では,式17のNがN=2の例である。   That is, the number N of the second dedicated cache areas is set to at least the number of Expression (17), so that the number of cache areas in the stack memory cache area group is kept to a minimum and immediately before the execution of the function is completed. The memory hit to the local variable data of the function called in (1) can be surely made a cache hit. In the example of FIG. 31, N in Expression 17 is an example where N = 2.

この第2の専用キャッシュ領域の個数Nは,関数Bのスタックメモリ内のローカル変数データをキャッシュ領域に事前にキャッシュリストアするのに要する時間を,プリフェッチ対象関数までの関数の数で示している。そこで,この個数Nを,プリフェッチサイズ2(Prefetch_Size2)と称する。   The number N of the second dedicated cache areas indicates the time required for performing cache restoration of the local variable data in the stack memory of the function B in the cache area in advance by the number of functions up to the prefetch target function. Therefore, this number N is referred to as prefetch size 2 (Prefetch_Size2).

図34は,実行中の関数の直後に連続して呼び出される予定のM個の関数に割り当てられたM個の専用空きキャッシュ領域の個数Mについて説明する図である。図32で説明したとおり,キャッシュメモリ制御プログラムは,関数Eの次の関数Fが呼び出されると,関数Cのローカル変数データをメインメモリ内のスタックメモリ領域内に退避開始する。この退避処理は,スタックメモリ領域への書き込み処理であるので,一般に長い時間を要する。   FIG. 34 is a diagram illustrating the number M of M dedicated free cache areas allocated to the M functions scheduled to be called continuously immediately after the function being executed. As described with reference to FIG. 32, when the function F next to the function E is called, the cache memory control program starts saving the local variable data of the function C in the stack memory area in the main memory. Since this save process is a write process to the stack memory area, it generally takes a long time.

そして,関数Fの読み出しに続いて,関数G,Hが連続して呼び出されたとすると,関数G,Hの呼び出し処理後に,関数Hのローカル変数データへのメモリアクセスが開始される。このときまでに,関数Cに割り当てられていた専用キャッシュ領域内のローカル変数データの退避処理が完了していれば,2番目の関数用の空きキャッシュ領域(ID=2)に,既存データの退避処理を行うことなく,呼び出された関数Hのローカル変数データを書き込むことができる。   If the functions G and H are continuously called following the reading of the function F, the memory access to the local variable data of the function H is started after the calling processing of the functions G and H. By this time, if the local variable data save processing in the dedicated cache area assigned to the function C has been completed, the existing data is saved in the free cache area (ID = 2) for the second function. The local variable data of the called function H can be written without performing processing.

さらに,関数Fの呼び出し処理後に,関数G,Hの呼び出し処理中に,空きキャッシュ領域(ID=0)の関数Cのローカル変数データの退避処理を完了する必要がある。   Furthermore, after the function F is called, it is necessary to complete the save processing of the local variable data of the function C in the free cache area (ID = 0) during the calls of the functions G and H.

したがって,専用空きキャッシュ領域の個数Mは,以下の式で求められる個数以上であることが必要になる。
M=CEIL{スタックメモリ内への関数のローカル変数データのメモリアクセス時間(データ転送時間)/関数呼び出し処理に必要な時間} (18)
すなわち,専用空きキャッシュ領域の個数Mを,少なくとも式(18)の数にすることで,スタックメモリ用キャッシュ領域群のキャッシュ領域の個数を最小限にしつつ,関数が呼び出されたときの関数のローカル変数データへのメモリアクセスを,既存データの退避処理を行うことなく即座に開始することができる。図32の例では,式18のMがM=2の例である。
Therefore, the number M of dedicated free cache areas needs to be greater than or equal to the number obtained by the following equation.
M = CEIL {memory access time (data transfer time) of function local variable data into stack memory / time required for function call processing} (18)
That is, by setting the number M of dedicated free cache areas to at least the number of Expression (18), the number of cache areas in the stack memory cache area group is minimized, and the function locals when the function is called. Memory access to variable data can be started immediately without saving existing data. In the example of FIG. 32, M in Expression 18 is an example where M = 2.

この専用空きキャッシュ領域の個数Mは,個数Nと同様に,プリフェッチサイズ1(Prefetch_Size1)と称する。   The number M of dedicated free cache areas is referred to as prefetch size 1 (Prefetch_Size1) as is the case with the number N.

図35は,第2の実施の形態におけるキャッシュメモリ制御プログラムによるセクタID変換テーブルの制御を示す図である。図31,図32の例では,スタックメモリ用キャッシュ領域群130−ST内の5個のキャッシュ領域を,1個の第1の専用キャッシュ領域と2個の第2の専用キャッシュ領域と2個の専用空きキャッシュ領域とに,循環的に変更している。   FIG. 35 is a diagram illustrating control of the sector ID conversion table by the cache memory control program according to the second embodiment. In the examples of FIGS. 31 and 32, five cache areas in the stack memory cache area group 130-ST are divided into one first dedicated cache area, two second dedicated cache areas, and two cache areas. It is cyclically changed to the dedicated free cache area.

すなわち,図31の関数Eが終了して呼び戻されるときは,スタックメモリ用キャッシュ領域群130−STのキャッシュセクタIDを−1して5つのキャッシュ領域との対応を変更している。ただし,ID=0は−1することでID=4にされる。その結果,実行中の関数に割り当てられる専用キャッシュ領域のキャッシュセクタIDは,関数EのキャッシュセクタID=4から関数DのキャッシュセクタID=3に変更されている。   That is, when the function E of FIG. 31 is called and called back, the correspondence with the five cache areas is changed by decrementing the cache sector ID of the stack memory cache area group 130-ST by -1. However, ID = 0 is set to −1 by setting −1 to ID = 4. As a result, the cache sector ID of the dedicated cache area allocated to the function being executed is changed from the cache sector ID = 4 of the function E to the cache sector ID = 3 of the function D.

逆に,図32の関数Fが読み出されるときは,スタックメモリ用キャッシュ領域群130−STのキャッシュセクタIDを+1して5つのキャッシュ領域との対応を変更している。ただし,ID=4は+1することでID=0にされる。その結果,実行中の関数に割り当てられる専用キャッシュ領域のキャッシュセクタIDは,関数EキャッシュセクタID=4から関数FのキャッシュセクタID=0に変更されている。   Conversely, when the function F in FIG. 32 is read, the correspondence with the five cache areas is changed by incrementing the cache sector ID of the stack memory cache area group 130-ST by one. However, ID = 0 is incremented by 1 to set ID = 0. As a result, the cache sector ID of the dedicated cache area assigned to the function being executed has been changed from the function E cache sector ID = 4 to the function F cache sector ID = 0.

このように循環的に対応関係を変更することで,セクタID変換テーブルの書き換えが容易になる。図35には,セクタID変換テーブル131が示されている。この例では,セクタID変換テーブル131のローカルセクタID=0は,共用キャッシュメモリ領域に割り当てられ,ローカルセクタID=1は,実行中の関数に割り当てられた専用キャッシュメモリ領域が割り当てられ,ローカルセクタID=2〜Nは,スタックメモリ用キャッシュ領域群とは別の専用キャッシュメモリ領域に割り当てられる。したがって,関数が呼び戻されたり呼び出されたりするたびに,OS内のキャッシュ割当管理部204は,セクタID変換テーブル131内のローカルセクタID=1に対応するキャッシュセクタIDを,実行中の関数に割り当てられた第1の専用キャッシュ領域のセクタIDに書き換える。   In this way, the sector ID conversion table can be easily rewritten by changing the correspondence relationship cyclically. FIG. 35 shows a sector ID conversion table 131. In this example, the local sector ID = 0 in the sector ID conversion table 131 is assigned to the shared cache memory area, and the local sector ID = 1 is assigned to the dedicated cache memory area assigned to the function being executed. ID = 2 to N are assigned to a dedicated cache memory area different from the stack memory cache area group. Therefore, each time a function is called back or called, the cache allocation management unit 204 in the OS allocates a cache sector ID corresponding to the local sector ID = 1 in the sector ID conversion table 131 to the function being executed. The sector ID of the first dedicated cache area is rewritten.

一方,関数内のローカル変数へのメモリアクセス命令は,コンパイルされてローカルセクタID=1を有する機械語命令に変換される。例えば,図4の機械語命令32が,ローカルセクタIDがID=1,命令文がローカル変数へのメモリアクセス命令になるように変換される。その結果,実行中の関数におけるローカル変数へのメモリアクセス命令が実行されると,図22に示したように,CPUによるメモリアクセス命令の実行処理で,セクタID変換テーブル131のローカルセクタID=1に対応するキャッシュセクタIDが参照され,実行中の関数に割り当てられた第1の専用キャッシュ領域を使用してメモリアクセスが実行される。   On the other hand, a memory access instruction to a local variable in a function is compiled and converted into a machine language instruction having a local sector ID = 1. For example, the machine language instruction 32 in FIG. 4 is converted so that the local sector ID is ID = 1 and the instruction sentence is a memory access instruction to a local variable. As a result, when a memory access instruction to a local variable in the function being executed is executed, as shown in FIG. 22, the local sector ID = 1 in the sector ID conversion table 131 is executed in the memory access instruction execution process by the CPU. The cache sector ID corresponding to is referenced, and memory access is executed using the first dedicated cache area assigned to the function being executed.

上記のように循環的に対応関係を変更することで,実行中の関数に対してどのキャッシュセクタIDが割り当てられているかを簡単に検出することができる。すなわち,対象関数のスタックの深さを,スタックメモリ用キャッシュ領域群のキャッシュ領域の総数(図31,32の例では5個)で除算した余りが,対象関数に割り当てられたキャッシュセクタIDになる。ただし,スタックメモリ領域の先頭をスタックの深さ0とカウントする。したがって,関数Eは,スタックの深さが4であるので,余り(4/5)=4となり,キャッシュセクタID=4の専用キャッシュ領域が割り当てられる。図31,32に示した通りである。   By cyclically changing the correspondence as described above, it is possible to easily detect which cache sector ID is assigned to the function being executed. That is, the remainder obtained by dividing the stack depth of the target function by the total number of cache areas in the stack memory cache area group (5 in the examples of FIGS. 31 and 32) becomes the cache sector ID assigned to the target function. . However, the top of the stack memory area is counted as stack depth 0. Accordingly, since the depth of the stack of the function E is 4, the remainder (4/5) = 4, and a dedicated cache area with a cache sector ID = 4 is allocated. This is as shown in FIGS.

したがって,キャッシュ割当管理部204は,関数が呼び戻されたら元の関数のスタックの深さから,割り当てられた専用キャッシュメモリのキャッシュセクタIDを上記の演算で取得し,セクタID変換テーブルのローカルセクタID=1に対応するキャッシュセクタIDを書き換える。これにより,実行中の関数のメモリアクセスは,その関数に割り当てられた専用キャッシュ領域を利用して行われる。   Therefore, when the function is called back, the cache allocation management unit 204 obtains the cache sector ID of the allocated dedicated cache memory from the depth of the stack of the original function by the above calculation, and the local sector ID of the sector ID conversion table. Rewrite the cache sector ID corresponding to = 1. Thereby, the memory access of the function being executed is performed using the dedicated cache area allocated to the function.

[第2の実施の形態の詳細]
次に,第2の実施の形態について詳細に説明する。図1,2に示した構成は,第2の実施の形態においても同じである。そして,スタックメモリとキャッシュメモリとの関係は,図26に示した通りである。
[Details of Second Embodiment]
Next, the second embodiment will be described in detail. The configuration shown in FIGS. 1 and 2 is the same in the second embodiment. The relationship between the stack memory and the cache memory is as shown in FIG.

図36は,コンパイル工程と対象プロセス起動工程とを示すフローチャート図である。まず,入力部17が起動するソースプログラムを受け付けると(S611),コンパイラ21が,ソースプログラムをコンパイルして機械語プログラムに変換する(S612)。このコンパイルにより,各関数のローカル変数へのアクセス命令は,ローカルセクタID=1を付加した機械語命令に変換される。さらに,コンパイルされたプログラムが開発環境下で実行されて,OSのキャッシュ割当管理部204が,関数呼び戻しに要する時間と,関数呼び出しに要する時間と,メモリアクセス時間とをテスト計測し,スタックメモリ用キャッシュ領域群のキャッシュ領域数と,前述のN個(プリフェッチサイズ2),M個(プリフェッチサイズ1)を計算する(S613)。   FIG. 36 is a flowchart showing the compiling step and the target process starting step. First, when the source program activated by the input unit 17 is received (S611), the compiler 21 compiles the source program and converts it into a machine language program (S612). By this compilation, the access instruction to the local variable of each function is converted into a machine language instruction with a local sector ID = 1. Further, the compiled program is executed in the development environment, and the OS cache allocation management unit 204 performs test measurement of the time required for the function call back, the time required for the function call, and the memory access time. The number of cache areas in the cache area group and the aforementioned N (prefetch size 2) and M (prefetch size 1) are calculated (S613).

次に,本番環境下で,入力部17がコンパイルされたプログラムの起動指令を受け付けると(S614),OSのプロセス管理部202が対象プロセスを起動する(S615)。それとともに,キャッシュ割当管理部204がスタックメモリ用のキャッシュ領域群を事前に計算したキャッシュ領域の数だけ確保するよう指示する(S616)。この指示に応答して,キャッシュメモリ130にスタックメモリ用キャッシュ領域群130-STが確保され,キャッシュセクタ情報設定部132にそれが設定される(S617)。そして,プロセス管理部202がプログラムの各プロセスを実行する(S618)。この各プロセスの実行中に関数が呼び出されたり,呼び戻されたりすると,プロセス管理部202は,関数呼び出し処理と関数呼び戻し処理を実行する(S618)。   Next, when the input unit 17 receives a compiled program start command in the production environment (S614), the OS process management unit 202 starts the target process (S615). At the same time, the cache allocation management unit 204 instructs to secure the number of cache areas for the stack memory by the number of cache areas calculated in advance (S616). In response to this instruction, a stack memory cache area group 130-ST is secured in the cache memory 130 and set in the cache sector information setting unit 132 (S617). Then, the process management unit 202 executes each process of the program (S618). If a function is called or called back during the execution of each process, the process management unit 202 executes function call processing and function call back processing (S618).

図37は,関数呼び戻し処理のフローチャート図である。図37には,呼び出し元関数22−1と呼び出し先関数22−2とが示されている。呼び出し元関数22−1とは,ある関数を呼び出した関数であり,呼び出し先関数22−2とは,その呼び出された関数である。関数呼び戻し処理は,図31で概略説明したが,以下ではOSによる具体的な処理を説明する。   FIG. 37 is a flowchart of the function call back process. FIG. 37 shows a caller function 22-1 and a callee function 22-2. The caller function 22-1 is a function that calls a certain function, and the callee function 22-2 is the called function. The function call back process has been outlined in FIG. 31, but a specific process by the OS will be described below.

まず,関数呼び戻し処理では,呼び出し先関数22−2がその関数の処理を終了する(S621)。これに応答して,OSの関数制御管理部201が呼び出し先関数の終了処理を実行する(S622)。呼び出し先関数の終了処理には,終了する関数についてのCPU内のレジスタやテーブルの退避などが含まれる。呼び出し先関数の終了処理の後に,キャッシュ割当管理部204が,呼び出し元関数からプリフェッチサイズ1(N個)前の関数に,スタックメモリ用キャッシュ領域群130-ST内の空きキャッシュ領域を専用キャッシュ領域として割り当てて,その関数のローカル変数データをメインメモリ内のスタックメモリ領域からプリフェッチ(メモリアクセス)して,割り当てられた空きキャッシュ領域にそのデータを書き込み,展開する(S623)。この空きキャッシュ領域のキャッシュセクタIDは,呼び出し元関数に割り当てられる専用キャッシュ領域のキャッシュセクタIDよりもプリフェッチサイズ1(N)前である。   First, in the function call back process, the callee function 22-2 ends the process of the function (S621). In response to this, the function control management unit 201 of the OS executes termination processing of the callee function (S622). Termination processing of the callee function includes saving of registers and tables in the CPU for the function to be terminated. After the callee function termination processing, the cache allocation management unit 204 assigns the free cache area in the stack memory cache area group 130-ST to the dedicated cache area to the function that is one prefetch size 1 (N) before the caller function. The local variable data of the function is prefetched from the stack memory area in the main memory (memory access), and the data is written into the allocated free cache area and expanded (S623). The cache sector ID of this empty cache area is prefetch size 1 (N) before the cache sector ID of the dedicated cache area assigned to the caller function.

これに伴い,キャッシュメモリ130では,プリフェッチサイズ1(N)前の関数のローカル変数データが,それに対するプリフェッチのメモリアクセス処理により,割り当てられた空きキャッシュ領域に書き込まれ展開される。ただし,このメモリアクセスはメインメモリに対する処理になるため処理時間が長くなるので,このメモリアクセス処理が完了するのを待つことなく,次の処理が実行される。   Along with this, in the cache memory 130, local variable data of the function before the prefetch size 1 (N) is written and expanded in the allocated free cache area by the prefetch memory access processing corresponding thereto. However, since this memory access is a process for the main memory, the processing time becomes long. Therefore, the next process is executed without waiting for the completion of the memory access process.

OSのキャッシュ割当管理部204が,セクタID変換テーブルを更新して,ローカルセクタID=1に対応するキャッシュセクタIDを,呼び出し元関数に対応するキャッシュセクタIDに変更する(S625)。すなわち,図35の時間T2で示したとおりである。   The cache allocation management unit 204 of the OS updates the sector ID conversion table and changes the cache sector ID corresponding to the local sector ID = 1 to the cache sector ID corresponding to the caller function (S625). That is, as shown at time T2 in FIG.

そして,OSの関数制御管理部201が,呼び出し元関数の再開処理を実行する(S626)。この再開処理には,再開する関数についてのCPU内のレジスタやテーブルの設定などが含まれる。その後,呼び出し元関数22−1が処理を再開する(S627)。この呼び出し元関数が処理を再開してローカル変数アクセス命令を実行すると,既にキャッシュメモリ130内の呼び出し元関数に割り当てられているスタックメモリ用キャッシュ領域群130−ST内の専用キャッシュ領域内にそのローカル変数データが書き込まれたままになっているので,キャッシュミスヒットすることはない。   Then, the function control management unit 201 of the OS executes a caller function resume process (S626). This restart processing includes setting of registers and tables in the CPU for the function to be restarted. Thereafter, the caller function 22-1 resumes processing (S627). When this caller function resumes processing and executes the local variable access instruction, the local function is already stored in the dedicated cache area in the stack memory cache area group 130-ST already allocated to the caller function in the cache memory 130. Since the variable data is still written, there is no cache miss hit.

図38は,関数呼び出し処理のフローチャート図である。関数呼び出し処理は,図32で概略説明したが,以下ではOSによる具体的な処理を説明する。   FIG. 38 is a flowchart of the function call process. The function call processing has been outlined with reference to FIG. 32, but the specific processing by the OS will be described below.

まず,関数呼び出し処理では,呼び出し元関数17が関数呼び出しを発生する(S631)。これにより呼び出し先関数が呼び出される。これに応答して,OSの関数制御管理部201が,現在の関数を一時的に停止し,呼び出し先関数への引き渡し処理を実行する(S632)。このとき,関数制御管理部201が,呼び出し先関数にスタックメモリ用キャッシュ領域群内の次の関数用空きキャッシュ領域が割り当て,呼び出し先関数のローカル変数へのメモリアクセスが開始される。次の関数用空きキャッシュ領域には有効なデータが格納されていないので,この呼び出し先関数のローカル変数のメモリアクセスは,元のデータをスタックメモリへ退避処理することなく,開始することができる。   First, in the function call process, the caller function 17 generates a function call (S631). As a result, the callee function is called. In response to this, the function control management unit 201 of the OS temporarily stops the current function and executes a delivery process to the callee function (S632). At this time, the function control management unit 201 allocates the next function free cache area in the stack memory cache area group to the call destination function, and starts memory access to the local variable of the call destination function. Since valid data is not stored in the next function free cache area, the memory access of the local variable of the callee function can be started without saving the original data to the stack memory.

そして,OSのキャッシュ割当管理部204が,呼び出し先関数からプリフェッチサイズ2(M個)前の専用キャッシュ領域の関数のデータを,メインメモリ内のスタックメモリ領域に退避開始させ,2番目の関数用空きキャッシュ領域を確保する(S633)。これにより,キャッシュメモリ130では,呼び出し先関数からプリフェッチサイズ2(M)前の専用キャッシュ領域内の関数のローカル変数データがそのスタックメモリ領域に退避され,2番目の関数用空きキャッシュ領域にされる(S634)。ただし,この退避処理はメインメモリへのアクセスを伴うため処理時間が長くなるので,このメモリアクセス処理が完了するのを待つことなく,次の処理が実行される。   Then, the cache allocation management unit 204 of the OS starts saving the data of the function in the dedicated cache area 2 (M) before the prefetch size from the call destination function in the stack memory area in the main memory, and for the second function A free cache area is secured (S633). As a result, in the cache memory 130, the local variable data of the function in the dedicated cache area whose prefetch size is 2 (M) before the callee function is saved in the stack memory area, and becomes the second function free cache area. (S634). However, since this save process involves access to the main memory, the processing time becomes long. Therefore, the next process is executed without waiting for the completion of the memory access process.

OSのキャッシュ割当管理部204が,セクタID変換テーブルを更新して,ローカルセクタID=1に対応するキャッシュセクタIDを,呼び出し先関数に対応するキャッシュセクタIDに変更する(S635)。すなわち,図35の時間T3で示したとおりである。   The cache allocation management unit 204 of the OS updates the sector ID conversion table and changes the cache sector ID corresponding to the local sector ID = 1 to the cache sector ID corresponding to the call destination function (S635). That is, as shown at time T3 in FIG.

そして,OSの関数制御管理部201が,呼び出し先関数の開始処理を実行する(S636)。この開始処理には,開始する関数についてのCPU内のレジスタやテーブルの設定などが含まれる。その後,呼び出し先関数22−2が処理を開始する(S637)。この呼び出し先関数が処理を再開してローカル変数アクセス命令を実行すると,既にデータが退避済みの空きキャッシュ領域を利用してメモリアクセスを開始することができる。   Then, the function control management unit 201 of the OS executes a call destination function start process (S636). This start processing includes setting of registers and tables in the CPU for the function to be started. Thereafter, the callee function 22-2 starts processing (S637). When this call destination function resumes processing and executes a local variable access instruction, memory access can be started using an empty cache area in which data has already been saved.

また,呼び出し元関数の直前に呼び出されていた関数のうち,呼び出し先関数からプリフェッチサイズ1(N)前より前の関数のローカル変数データが専用キャッシュ領域から退避されて2番目の関数用空きキャッシュ領域として維持されるので,その後更に関数呼び出しが発生してもその関数についてのローカル変数のメモリアクセスを退避処理なしに開始することができる。   Of the functions called immediately before the caller function, the local variable data of the function prior to the prefetch size 1 (N) before the callee function is saved from the dedicated cache area and the second function free cache Since it is maintained as an area, even if a function call occurs thereafter, memory access of the local variable for that function can be started without saving processing.

上記の第2の実施の形態では,キャッシュメモリ制御プログラムは,スタックメモリ用キャッシュ領域群130−ST内に,実行中の関数に割り当てた第1の専用キャッシュ領域と,その直前に呼び出された第2の数(N)の関数に割り当てた第2の専用キャッシュ領域と,第3の数(M)の専用空きキャッシュ領域とを維持している。   In the second embodiment described above, the cache memory control program stores the first dedicated cache area assigned to the function being executed in the stack memory cache area group 130-ST and the first cache area called immediately before that. The second dedicated cache area assigned to the number 2 (N) functions and the third number (M) dedicated free cache area are maintained.

しかしながら,キャッシュメモリ制御プログラムは,スタックメモリ用キャッシュ領域群130−ST内に,実行中の関数に割り当てた第1の専用キャッシュ領域と,その直前に呼び出された第2の数(N)の関数に割り当てた第2の専用キャッシュ領域とを維持し,専用空きキャッシュ領域を維持しないようにしても良い。ただし,この場合は,新たな関数が呼び出された場合に,以前に呼び出された関数の専用キャッシュ領域内のデータを一旦退避してから新たな関数のローカル変数データをメモリアクセスしなければならず,メモリアクセスまでの時間が遅れることになる。   However, the cache memory control program stores the first dedicated cache area assigned to the function being executed in the stack memory cache area group 130-ST and the second number (N) of functions called immediately before it. It is also possible to maintain the second dedicated cache area allocated to and not to maintain the dedicated free cache area. However, in this case, when a new function is called, the data in the dedicated cache area of the previously called function must be temporarily saved and then the local variable data of the new function must be accessed in memory. , The time until memory access is delayed.

以上の通り,第2の実施の形態によれば,関数やモジュールなどのサブルーチンのローカル変数を格納するスタックメモリ領域について,それぞれのサブルーチンに専用キャッシュ領域が割り当てられ,且つ,そのスタックメモリ用キャッシュ領域群のサイズを最小限の大きさで維持するので,キャッシュメモリの領域を効率的に利用しながら,サブルーチンのローカル変数へのメモリアクセスのキャッシュヒット率を向上させ,また,サブルーチンのローカル変数へのメモリアクセスを効率よく開始させることたできる。   As described above, according to the second embodiment, a dedicated cache area is allocated to each subroutine for the stack memory area for storing local variables of subroutines such as functions and modules, and the cache area for the stack memory is allocated. Since the size of the group is maintained at a minimum size, the cache hit rate of memory access to the subroutine local variable is improved while efficiently using the area of the cache memory. Memory access can be started efficiently.

以上の実施の形態をまとめると,次の付記のとおりである。   The above embodiment is summarized as follows.

(付記1)
キャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と,前記第1のサブルーチンの直前に呼び出された第2の数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域と,第3の数の空きキャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御プログラム。
(Appendix 1)
A processor-readable cache memory control program for causing a processor to execute a cache memory control process,
The cache memory control process includes:
A stack memory cache area group allocating step for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A plurality of cache areas in the stack memory cache area group are divided into a first dedicated cache area allocated to the first subroutine being executed, and a second number called immediately before the first subroutine. A cache memory control program comprising a cache area allocation step for maintaining a second dedicated cache area allocated to the second subroutine and a third number of free cache areas.

(付記2)
付記1において,
前記キャッシュ領域割当工程は,
前記第1のサブルーチンが終了して前記第2のサブルーチンのうち前記第1のサブルーチンの直前に呼び出されたサブルーチンが実行開始されるときに,前記第2のサブルーチンより前に呼び出された第3のサブルーチンに前記空きキャッシュ領域を専用キャッシュ領域として割り当てて,前記第3のサブルーチンのスタックメモリ領域内のデータをプリフェッチするキャッシュメモリ制御プログラム。
(Appendix 2)
In Appendix 1,
The cache area allocation step includes:
When the first subroutine is finished and a subroutine called immediately before the first subroutine of the second subroutine is started to be executed, the third subroutine called before the second subroutine is started. A cache memory control program for prefetching data in a stack memory area of the third subroutine by allocating the free cache area as a dedicated cache area to a subroutine.

(付記3)
付記2において,
前記キャッシュ領域割当工程は,
前記第2の数を,前記スタックメモリ領域内のデータのメモリアクセスに要する時間を,前記サブルーチンの呼び戻し処理に要する時間で除算した数以上に維持するキャッシュメモリ制御プログラム。
(Appendix 3)
In Appendix 2,
The cache area allocation step includes:
A cache memory control program for maintaining the second number equal to or more than a number obtained by dividing the time required for memory access of data in the stack memory area by the time required for the call-back processing of the subroutine.

(付記4)
付記1において,
前記キャッシュ領域割当工程は,
前記第1のサブルーチンが実行中に新たな第4のサブルーチンが呼び出されたときに,前記第2のサブルーチンのうち最も早く呼び出されたサブルーチンの専用キャッシュ領域内のデータを前記スタックメモリ領域に退避させて,前記最も早く呼び出されたサブルーチンの専用キャッシュ領域を前記空きキャッシュ領域に割り当てるキャッシュメモリ制御プログラム。
(Appendix 4)
In Appendix 1,
The cache area allocation step includes:
When a new fourth subroutine is called while the first subroutine is being executed, the data in the dedicated cache area of the subroutine called the earliest among the second subroutines is saved in the stack memory area. A cache memory control program for allocating a dedicated cache area of the subroutine called earliest to the free cache area.

(付記5)
付記4において,
前記キャッシュ領域割当工程は,
前記第3の数を,前記専用キャッシュ領域内のデータを前記スタックメモリ領域内に退避するのに要する時間を,前記サブルーチンの呼び出し処理に要する時間で除算した数以上に維持するキャッシュメモリ制御プログラム。
(Appendix 5)
In Appendix 4,
The cache area allocation step includes:
A cache memory control program that maintains the third number equal to or greater than the number of times required to save the data in the dedicated cache area in the stack memory area divided by the time required for calling the subroutine.

(付記6)
キャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,第1の数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記プログラム内で呼び出されたサブルーチンに,前記スタックメモリ用キャッシュ領域群内のキャッシュ領域を専用キャッシュ領域として割り当てると共に,前記割り当てられた専用キャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と前記第1のサブルーチンの直前に呼び出された単数または複数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御プログラム。
(Appendix 6)
A processor-readable cache memory control program for causing a processor to execute a cache memory control process,
The cache memory control process includes:
A stack memory cache area group allocating step for allocating a stack memory cache area group having a first number of cache areas to a stack memory area for a subroutine called in the program;
A cache area in the stack memory cache area group is allocated as a dedicated cache area to a subroutine called in the program, and the allocated dedicated cache area is assigned to a first subroutine being executed. A cache memory control program having a cache area allocation step for maintaining one dedicated cache area and a second dedicated cache area allocated to one or more second subroutines called immediately before the first subroutine .

(付記7)
付記6において,
前記キャッシュ領域割当工程は,
前記スタックメモリ用キャッシュ領域群内の前記第1及び第2の専用キャッシュ領域以外のキャッシュ領域を,有効なキャッシュデータが記録されていない空きキャッシュ領域として維持するキャッシュメモリ制御プログラム。
(Appendix 7)
In Appendix 6,
The cache area allocation step includes:
A cache memory control program for maintaining cache areas other than the first and second dedicated cache areas in the stack memory cache area group as free cache areas in which valid cache data is not recorded.

(付記8)
キャッシュメモリ制御方法であって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と,前記第1のサブルーチンの直前に呼び出された第2の数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域と,第3の数の空きキャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御方法。
(Appendix 8)
A cache memory control method,
A stack memory cache area group allocating step for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A plurality of cache areas in the stack memory cache area group are divided into a first dedicated cache area allocated to the first subroutine being executed, and a second number called immediately before the first subroutine. A cache memory control method comprising: a cache area allocation step of maintaining a second dedicated cache area allocated to the second subroutine and a third number of free cache areas.

(付記9)
キャッシュメモリ制御方法であって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記プログラム内で呼び出されたサブルーチンに,前記スタックメモリ用キャッシュ領域群内のキャッシュ領域を専用キャッシュ領域として割り当てると共に,前記割り当てられた専用キャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と前記第1のサブルーチンの直前に呼び出された単数または複数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御方法。
(Appendix 9)
A cache memory control method,
A stack memory cache area group allocating step for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A cache area in the stack memory cache area group is allocated as a dedicated cache area to a subroutine called in the program, and the allocated dedicated cache area is assigned to a first subroutine being executed. A cache memory control method comprising: a cache area allocating step for maintaining one dedicated cache area and a second dedicated cache area allocated to one or a plurality of second subroutines called immediately before the first subroutine .

(付記10)
キャッシュメモリを内蔵するプロセッサであって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当手段と,
前記スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と,前記第1のサブルーチンの直前に呼び出された第2の数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域と,第3の数の空きキャッシュ領域とに維持するキャッシュ領域割当手段とを有するプロセッサ。
(Appendix 10)
A processor with a cache memory,
A stack memory cache area group allocating means for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A plurality of cache areas in the stack memory cache area group are divided into a first dedicated cache area allocated to the first subroutine being executed, and a second number called immediately before the first subroutine. A processor having cache area allocating means for maintaining in a second dedicated cache area allocated to the second subroutine and a third number of free cache areas.

(付記11)
キャッシュメモリを内蔵するプロセッサであって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当手段と,
前記プログラム内で呼び出されたサブルーチンに,前記スタックメモリ用キャッシュ領域群内のキャッシュ領域を専用キャッシュ領域として割り当てると共に,前記割り当てられた専用キャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と前記第1のサブルーチンの直前に呼び出された単数または複数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域とに維持するキャッシュ領域割当手段とを有するプロセッサ。
(Appendix 11)
A processor with a cache memory,
A stack memory cache area group allocating means for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A cache area in the stack memory cache area group is allocated as a dedicated cache area to a subroutine called in the program, and the allocated dedicated cache area is assigned to a first subroutine being executed. A processor having a cache area allocation means for maintaining one dedicated cache area and a second dedicated cache area allocated to one or more second subroutines called immediately before the first subroutine.

10:プロセッサユニット
12:CPU
13:キャッシュユニット
16:メインメモリ
20:OS
21:コンパイラ
22:アプリケーションプログラム
130:キャッシュメモリ
130_1:共用キャッシュ領域
130_2:専用キャッシュ領域
10: Processor unit 12: CPU
13: Cache unit 16: Main memory 20: OS
21: Compiler 22: Application program 130: Cache memory 130_1: Shared cache area 130_2: Dedicated cache area

Claims (10)

キャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と,前記第1のサブルーチンの直前に呼び出された第2の数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域と,第3の数の空きキャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御プログラム。
A processor-readable cache memory control program for causing a processor to execute a cache memory control process,
The cache memory control process includes:
A stack memory cache area group allocating step for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A plurality of cache areas in the stack memory cache area group are divided into a first dedicated cache area allocated to the first subroutine being executed, and a second number called immediately before the first subroutine. A cache memory control program comprising a cache area allocation step for maintaining a second dedicated cache area allocated to the second subroutine and a third number of free cache areas.
請求項1において,
前記キャッシュ領域割当工程は,
前記第1のサブルーチンが終了して前記第2のサブルーチンのうち前記第1のサブルーチンの直前に呼び出されたサブルーチンが実行開始されるときに,前記第2のサブルーチンより前に呼び出された第3のサブルーチンに前記空きキャッシュ領域を専用キャッシュ領域として割り当てて,前記第3のサブルーチンのスタックメモリ領域内のデータをプリフェッチするキャッシュメモリ制御プログラム。
In claim 1,
The cache area allocation step includes:
When the first subroutine is finished and a subroutine called immediately before the first subroutine of the second subroutine is started to be executed, the third subroutine called before the second subroutine is started. A cache memory control program for prefetching data in a stack memory area of the third subroutine by allocating the free cache area as a dedicated cache area to a subroutine.
請求項2において,
前記キャッシュ領域割当工程は,
前記第2の数を,前記スタックメモリ領域内のデータのメモリアクセスに要する時間を,前記サブルーチンの呼び戻し処理に要する時間で除算した数以上に維持するキャッシュメモリ制御プログラム。
In claim 2,
The cache area allocation step includes:
A cache memory control program for maintaining the second number equal to or more than a number obtained by dividing the time required for memory access of data in the stack memory area by the time required for the call-back processing of the subroutine.
請求項1において,
前記キャッシュ領域割当工程は,
前記第1のサブルーチンが実行中に新たな第4のサブルーチンが呼び出されたときに,前記第2のサブルーチンのうち最も早く呼び出されたサブルーチンの専用キャッシュ領域内のデータを前記スタックメモリ領域に退避させて,前記最も早く呼び出されたサブルーチンの専用キャッシュ領域を前記空きキャッシュ領域に割り当てるキャッシュメモリ制御プログラム。
In claim 1,
The cache area allocation step includes:
When a new fourth subroutine is called while the first subroutine is being executed, the data in the dedicated cache area of the subroutine called the earliest among the second subroutines is saved in the stack memory area. A cache memory control program for allocating a dedicated cache area of the subroutine called earliest to the free cache area.
請求項4において,
前記キャッシュ領域割当工程は,
前記第3の数を,前記専用キャッシュ領域内のデータを前記スタックメモリ領域内に退避するのに要する時間を,前記サブルーチンの呼び出し処理に要する時間で除算した数以上に維持するキャッシュメモリ制御プログラム。
In claim 4,
The cache area allocation step includes:
A cache memory control program that maintains the third number equal to or greater than the number of times required to save the data in the dedicated cache area in the stack memory area divided by the time required for calling the subroutine.
キャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,第1の数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記プログラム内で呼び出されたサブルーチンに,前記スタックメモリ用キャッシュ領域群内のキャッシュ領域を専用キャッシュ領域として割り当てると共に,前記割り当てられた専用キャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と前記第1のサブルーチンの直前に呼び出された単数または複数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御プログラム。
A processor-readable cache memory control program for causing a processor to execute a cache memory control process,
The cache memory control process includes:
A stack memory cache area group allocating step for allocating a stack memory cache area group having a first number of cache areas to a stack memory area for a subroutine called in the program;
A cache area in the stack memory cache area group is allocated as a dedicated cache area to a subroutine called in the program, and the allocated dedicated cache area is assigned to a first subroutine being executed. A cache memory control program having a cache area allocation step for maintaining one dedicated cache area and a second dedicated cache area allocated to one or more second subroutines called immediately before the first subroutine .
キャッシュメモリ制御方法であって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と,前記第1のサブルーチンの直前に呼び出された第2の数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域と,第3の数の空きキャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御方法。
A cache memory control method,
A stack memory cache area group allocating step for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A plurality of cache areas in the stack memory cache area group are divided into a first dedicated cache area allocated to the first subroutine being executed, and a second number called immediately before the first subroutine. A cache memory control method comprising: a cache area allocation step of maintaining a second dedicated cache area allocated to the second subroutine and a third number of free cache areas.
キャッシュメモリ制御方法であって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当工程と,
前記プログラム内で呼び出されたサブルーチンに,前記スタックメモリ用キャッシュ領域群内のキャッシュ領域を専用キャッシュ領域として割り当てると共に,前記割り当てられた専用キャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と前記第1のサブルーチンの直前に呼び出された単数または複数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域とに維持するキャッシュ領域割当工程とを有するキャッシュメモリ制御方法。
A cache memory control method,
A stack memory cache area group allocating step for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A cache area in the stack memory cache area group is allocated as a dedicated cache area to a subroutine called in the program, and the allocated dedicated cache area is assigned to a first subroutine being executed. A cache memory control method comprising: a cache area allocating step for maintaining one dedicated cache area and a second dedicated cache area allocated to one or a plurality of second subroutines called immediately before the first subroutine .
キャッシュメモリを内蔵するプロセッサであって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当手段と,
前記スタックメモリ用キャッシュ領域群内の複数のキャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と,前記第1のサブルーチンの直前に呼び出された第2の数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域と,第3の数の空きキャッシュ領域とに維持するキャッシュ領域割当手段とを有するプロセッサ。
A processor with a cache memory,
A stack memory cache area group allocating means for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A plurality of cache areas in the stack memory cache area group are divided into a first dedicated cache area allocated to the first subroutine being executed, and a second number called immediately before the first subroutine. A processor having cache area allocating means for maintaining in a second dedicated cache area allocated to the second subroutine and a third number of free cache areas.
キャッシュメモリを内蔵するプロセッサであって,
プログラム内で呼び出されるサブルーチンに対するスタックメモリ領域に,複数のキャッシュ領域を有するスタックメモリ用キャッシュ領域群を割り当てるスタックメモリ用キャッシュ領域群割当手段と,
前記プログラム内で呼び出されたサブルーチンに,前記スタックメモリ用キャッシュ領域群内のキャッシュ領域を専用キャッシュ領域として割り当てると共に,前記割り当てられた専用キャッシュ領域を,実行中の第1のサブルーチンに割り当てられた第1の専用キャッシュ領域と前記第1のサブルーチンの直前に呼び出された単数または複数の第2のサブルーチンに割り当てられた第2の専用キャッシュ領域とに維持するキャッシュ領域割当手段とを有するプロセッサ。
A processor with a cache memory,
A stack memory cache area group allocating means for allocating a stack memory cache area group having a plurality of cache areas to a stack memory area for a subroutine called in the program;
A cache area in the stack memory cache area group is allocated as a dedicated cache area to a subroutine called in the program, and the allocated dedicated cache area is assigned to a first subroutine being executed. A processor having a cache area allocation means for maintaining one dedicated cache area and a second dedicated cache area allocated to one or more second subroutines called immediately before the first subroutine.
JP2013193121A 2013-09-18 2013-09-18 Cache memory control program, processor incorporating cache memory, and cache memory control method Active JP6241164B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013193121A JP6241164B2 (en) 2013-09-18 2013-09-18 Cache memory control program, processor incorporating cache memory, and cache memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013193121A JP6241164B2 (en) 2013-09-18 2013-09-18 Cache memory control program, processor incorporating cache memory, and cache memory control method

Publications (2)

Publication Number Publication Date
JP2015060376A true JP2015060376A (en) 2015-03-30
JP6241164B2 JP6241164B2 (en) 2017-12-06

Family

ID=52817857

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013193121A Active JP6241164B2 (en) 2013-09-18 2013-09-18 Cache memory control program, processor incorporating cache memory, and cache memory control method

Country Status (1)

Country Link
JP (1) JP6241164B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018189847A1 (en) * 2017-04-12 2018-10-18 株式会社日立製作所 Storage device and cache memory management method

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120140A (en) * 1991-10-29 1993-05-18 Toshiba Corp Cache memory device
JP2000250813A (en) * 1999-01-15 2000-09-14 Hewlett Packard Co <Hp> Data managing method for i/o cache memory
JP2001273137A (en) * 2000-03-28 2001-10-05 Toshiba Corp Microprocessor
JP2004303232A (en) * 2003-03-20 2004-10-28 Matsushita Electric Ind Co Ltd Data memory cache device and data memory cache system
JP2008097572A (en) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd Processing device, computer system, and mobile apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120140A (en) * 1991-10-29 1993-05-18 Toshiba Corp Cache memory device
JP2000250813A (en) * 1999-01-15 2000-09-14 Hewlett Packard Co <Hp> Data managing method for i/o cache memory
JP2001273137A (en) * 2000-03-28 2001-10-05 Toshiba Corp Microprocessor
JP2004303232A (en) * 2003-03-20 2004-10-28 Matsushita Electric Ind Co Ltd Data memory cache device and data memory cache system
JP2008097572A (en) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd Processing device, computer system, and mobile apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018189847A1 (en) * 2017-04-12 2018-10-18 株式会社日立製作所 Storage device and cache memory management method

Also Published As

Publication number Publication date
JP6241164B2 (en) 2017-12-06

Similar Documents

Publication Publication Date Title
JP6149595B2 (en) Cache memory control program, processor incorporating cache memory, and cache memory control method
US9977738B2 (en) NUMA scheduling using inter-VCPU memory access estimation
US9965324B2 (en) Process grouping for improved cache and memory affinity
US8683125B2 (en) Tier identification (TID) for tiered memory characteristics
CN107273302B (en) Method, apparatus and system for managing workload memory allocation
US7805582B2 (en) Method of managing memory in multiprocessor system on chip
US11275614B2 (en) Dynamic update of the number of architected registers assigned to software threads using spill counts
KR20110048531A (en) Interrupt Control of Virtual Processing Unit
JP6166616B2 (en) Information processing method, information processing apparatus, and program
US20010021959A1 (en) Static cache
JP7164733B2 (en) data storage
KR20120012377A (en) Information processing apparatus and information processing method
CN116225686A (en) CPU scheduling method and system for hybrid memory architecture
JP6135392B2 (en) Cache memory control program, processor incorporating cache memory, and cache memory control method
Jung et al. DeepUM: Tensor migration and prefetching in unified memory
US10585701B2 (en) Dynamically allocating storage elements to provide registers for processing thread groups
JP6241164B2 (en) Cache memory control program, processor incorporating cache memory, and cache memory control method
US9244828B2 (en) Allocating memory and using the allocated memory in a workgroup in a dispatched data parallel kernel
TWI760756B (en) A system operative to share code and a method for code sharing
US8065485B2 (en) Method and apparatus for determining cache storage locations based on latency requirements
KR20130114023A (en) Method for managing a memory in a multi processor system on chip
Scargall et al. Profiling and Performance
CN116643837A (en) Processor using dual queues to manage resources and method of operation thereof
CN116450055A (en) Method and system for distributing storage area between multi-processing cards

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170522

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171023

R150 Certificate of patent or registration of utility model

Ref document number: 6241164

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150