JP2001109661A - キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム - Google Patents

キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム

Info

Publication number
JP2001109661A
JP2001109661A JP29180799A JP29180799A JP2001109661A JP 2001109661 A JP2001109661 A JP 2001109661A JP 29180799 A JP29180799 A JP 29180799A JP 29180799 A JP29180799 A JP 29180799A JP 2001109661 A JP2001109661 A JP 2001109661A
Authority
JP
Japan
Prior art keywords
program unit
program
cache
address
resource allocation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP29180799A
Other languages
English (en)
Inventor
Kazuo Aisaka
一夫 相坂
Keisuke Toyama
圭介 十山
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP29180799A priority Critical patent/JP2001109661A/ja
Priority to US09/688,360 priority patent/US7000072B1/en
Publication of JP2001109661A publication Critical patent/JP2001109661A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Abstract

(57)【要約】 【課題】 マイクロプロセッサにおけるマルチプロセス
処理の性能を保証する為に、キャッシュのスラッシング
を最小限に押さえる様にプロセスを配置する方法を提供
する。 【解決手段】 OS内にキャッシュの使用状態を制御す
るための管理テーブルを設け、OSはプロセス起動時
に、最頻実行部分(主要部)の位置情報を当該プロセス
から受取り、管理テーブルとの照合により、主要部に対
応するキャッシュアドレスが既存のプロセスとの間で重
複しない様に、プロセスのロードアドレスを調整する。
調整においてはキャッシュメモリの量、構成方式、プロ
セスの優先度を勘案して、高優先プロセスが優先的にキ
ャッシュを使用できるようにしたコンピュータシステ
ム。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータシステ
ムが有するキャッシュメモリの割当方法に関するもので
あり、更には、キャッシュメモリの割当機能を有するオ
ペレーティングシステム及びそのオペレーティングシス
テムにより動作するコンピュータシステムに関する。
【0002】
【従来の技術】マイクロプロセッサのハードウェアが進
歩するにつれて、その上で動作するソフトウェアにも、
従来に増して高度な機能が要求される様になりつつあ
る。この一環として、1台のマイクロプロセッサで複数
のソフトウェアを同時並行的に動作させる「マルチプロ
セス機能」が、パーソナルコンピュータ等の小型の情報
処理装置においても要求される様になっている。
【0003】この実現のためのソフトウェアとして、複
数のプロセスを整理する役目を持つ「オペレーティング
システム(OS)」が用意され、複数のプロセスをメモ
リ空間に配置し、時分割方式で交互に実行させる。メモ
リ・入出力チャネル・CPU時間など、各プロセスが実
行に必要な資源を配分するのもOSの役割である。いく
つかのプロセスの間でそれら資源の奪い合い(競合)が
生じた場合は、OSが適当な方法で調停を行なう。
【0004】マイクロプロセッサの進歩を示すもう一方
の側面として、処理速度の高速化があげられる。現在最
先端のマイクロプロセッサは、約15年前の大型コンピ
ュータを凌ぐ性能を持っており、当時は困難であった映
像処理機能などがマイクロプロセッサを用いて実現され
つつある。
【0005】高速化の為のハードウェア技術としては、
プロセッサに用いる回路素子自体を高速化する事は勿論
であるが、キャッシュメモリの利用により、ハードウェ
アの平均的な処理速度を向上させる技術が広く用いられ
ている。
【0006】
【発明が解決しようとする課題】キャッシュメモリと
は、通常の記憶装置(主記憶メモリ、または単に主記
憶)に付け加えられて利用される少量の高速メモリの事
を言う。キャッシュメモリの読出し/書込み時間は、主
記憶の5〜10倍程度高速である。この一方で主記憶メ
モリの記憶容量は、現在の標準的なパーソナルコンピュ
ータにおいて主記憶が16〜64MBであるのに対し、
キャッシュメモリは8〜32KBと小さい。
【0007】パーソナルコンピュータ等のCPUがプロ
グラムを実行する際に、キャッシュメモリは以下の様に
利用される。
【0008】電源投入直後はキャッシュメモリは空であ
る。プログラムの実行が開始されると、CPUはプログ
ラム中の命令を主記憶から1つずつ読み出して解釈・実
行するが、この時並行して、読み出した命令をキャッシ
ュメモリにコピーしておく。キャッシュメモリが満杯の
場合は、過去にコピーした命令のうち適当なものを消し
て、現在の命令をコピー、つまり上書きする。
【0009】ここまでの過程では、キャッシュメモリを
用いても処理速度は向上しない。しかしながら大半のプ
ログラムでは、途中で処理の繰返しが起こり、プログラ
ムにおいて過去に実行した部分を再度実行する状態が生
じる。この場合CPUは、主記憶にはアクセスせず、キ
ャッシュメモリにコピーされた命令を読み出す。これに
より、読み出しが5〜10倍程度高速にできる。この効
果は、繰返しの回数が多いほど大きい。
【0010】コンピュータのプログラムは、多くの応用
分野において、比較的単純な処理を何回も繰り返して行
なう事が多い。たとえばコンピュータグラフィックスの
プログラムでは、「画面上のある点の明るさを特定の数
式に従って決める」という処理を、画面全部の点につい
て繰り返す。また、会計処理のプログラムでは、「伝票
内の全ての金額を合計する」という処理を、全ての伝票
に対して繰り返す。これらの様に、プログラム中の特定
の部分が集中的に繰り返されるという性質を「プログラ
ムの局在性」と呼び、大半のプログラムがこの性質を持
っている事が知られている。
【0011】つまり、キャッシュメモリによるプログラ
ムの読み出し速度の高速化という効果を得るためには、
繰返し1回分に相当するプログラムのある部分がキャッ
シュメモリにコピーされる必要があり、相応する記憶容
量がキャッシュメモリに必要となる。実用のコンピュー
タにおいては、キャッシュメモリの容量は上記の必要性
を満足するように決定されており、パーソナルコンピュ
ータのCPUとして用いられるマイクロプロセッサの場
合は8〜32KB程度である。
【0012】また、以上の動作においては、CPUはプ
ログラムの命令を読出す際に、当該命令がキャッシュメ
モリにコピーされている(キャッシュヒット)かされて
いない(キャッシュミス)かどうかを判定する必要があ
る。これは従来、以下の方法で行なわれる事が多い。
【0013】キャッシュメモリはメモリの一種であるの
で、各記憶単位(バイト)にアドレスが付されている。
たとえば、キャッシュメモリの容量が8KB(2**1
3バイト、但し**はべき乗を表す)であるならば、各
バイトには2進数の“0000000000000”か
ら“1111111111111”まで、13bitの
アドレスが付されている。一方、主記憶にも同様の方法
でアドレスが付されている。たとえば、主記憶の容量が
32MB(2**25バイト)であるならば、各バイト
には25bitのアドレスが付されている。
【0014】CPUがキャッシュメモリに命令をコピー
する際には、主記憶のアドレス信号線をそのまま流用し
てキャッシュメモリのアドレスとする。但しキャッシュ
メモリの方が容量が小さい(アドレス信号線が少ない)
ので、主記憶のアドレス信号線のうち下位側の相当数を
利用する。例えば上述の容量のメモリにおいて、主記憶
のアドレス A = A24 A23 A22 ... A13 A12 A11 ... A2 A1 A
0(各Anは0又は1) にある命令は、キャッシュメモリのアドレス A= A12 A11 ... A2 A1 A0 にコピーされる。これを数式で表現すると A = A mod( 2**13 ) 但しmodは剰余をとる演算
を表す……[式1]という関係となる。この方法では、
主記憶のアドレスAが与えられれば、対応するキャッシ
ュメモリのアドレスA’は一意的に決定される。
【0015】但しこれだけでは、A’が与えられても、
その内容が主記憶のどの番地のコピーであるかは、Aの
上位側のビットA24〜A13の部分がわからないため
決定できない。そこでキャッシュメモリに命令をコピー
する際には、上記の At = A24 A23 A22 ... A13 を命令と合せてキャッシュメモリのA’番地に記憶して
おく。このためキャッシュメモリには、各バイトに対し
て12(=25−13)bitずつの補助的な記憶容量
を設けておく。上記Atは、主記憶のアドレスAに対す
る「タグ」と呼ばれる。
【0016】なお上記構成は、最も単純なキャッシュメ
モリ構成を説明したものであるが、この構成では1バイ
ト(8bit)の命令を記憶するために12bitのタ
グを合せて記憶せねばならず、効率が悪い。そこで上記
の改良として、ライン構成のキャッシュメモリが普及し
ている。ラインとはキャッシュメモリの連続した複数バ
イト(たとえば4バイト)をひとまとめにした単位であ
り、命令のコピーやキャッシュヒット/ミスの判定はラ
イン単位で行なう。ライン構成の場合、タグは各ライン
に対して1つずつ記憶すれば良いので、記憶容量が節約
できる。各ラインにはアドレスが付されるが、このアド
レスはバイト単位の通常のアドレスとは意味が異なるの
で、エントリアドレス(又は単にエントリ)と呼ばれ
る。
【0017】ライン構成のキャッシュメモリにおいて
も、主記憶のアドレスとキャッシュメモリのアドレス
(エントリアドレスではなくバイト単位のアドレス)と
の対応関係が[式1]で定められる事、プログラムの局
在性がキャッシュメモリを有効に使うための前提条件と
なること、等の性質は変らない。
【0018】勿論、キャッシュメモリにコピーされるの
はプログラム中の命令に限定されることなくプログラム
が扱うデータであっても問題はない。
【0019】以上の様に、キャッシュメモリはコンピュ
ータの性能向上に役立っている。しかしながら、コンピ
ュータをマルチプロセスで使用する際には、キャッシュ
メモリが必ずしも効果的に機能しない場合がある事が近
年わかってきた。
【0020】キャッシュメモリは前項で述べた通り、プ
ログラム(およびデータ)の局在性を前提とした性能向
上方式である。一方マルチプロセスは、複数のプログラ
ムを時分割で同時並行的に処理する方式である。従って
マルチプロセスでは、一定の時間周期で、全く異なった
プログラムへ処理が移行する。これは本質的にプログラ
ムの局在性を損なう原因となる。すなわち、移行の直後
は、キャッシュメモリには移行前のプログラムがコピー
された状態になっているので、移行後のプログラムは主
記憶から命令を読込まねばならず、キャッシュメモリの
効果が得られない。その後、処理の繰返しが生じれば、
キャッシュメモリが有効に働く事になる(各々のプログ
ラムは、個別には十分な局在性を持っているものとす
る)が、その効果も次の移行までに限られる。
【0021】この現象が特に著しいのは、マルチプロセ
スにおける時分割の単位時間(タイムスライス)が短
く、その間にプログラムが少回数(5回程度)の繰返し
しか処理できない場合である。この場合、例えばキャッ
シュメモリが主記憶に比べ10倍高速であるとしても、
最初の1回は主記憶にアクセスせねばならないので、全
体の読出速度は約3.5倍しか高速化しない。これは、
十分な回数の繰返しではほぼ10倍の高速化が得られる
事と比較すると、読出速度を約1/3に低下させる結果
となる。
【0022】上記の様な、キャッシュメモリへの上書き
が頻発するために性能が低下する現象は、スラッシング
と呼ばれている。スラッシングを回避するために、以下
の通りいくつかの改善策が提案されているが、いずれも
十分な効果をあげるに至っていない。
【0023】改善策の第1として、特定のプロセス(優
先プロセス)のみにキャッシュメモリの利用を許し、他
のプロセスは命令をキャッシュメモリにコピーしない、
という方式がある。この方式は、優先プロセスに対して
はシングルプロセスの場合と同等の効果を得る事ができ
る。しかしながら他のプロセスに対しては、キャッシュ
メモリを備えない低性能の処理を強いる事になる。
【0024】改善策の第2として、キャッシュメモリを
並列化する事により、プロセス間でキャッシュの奪い合
いが生じない様にする方式がある。すなわち、キャッシ
ュメモリを複数組(たとえば2組)設け、命令をコピー
する際にはいずれか空いている方の組にコピーする。キ
ャッシュヒット/ミスの判定では、主記憶アドレスから
エントリアドレスを作成した後、当該エントリアドレス
に記憶されたタグを、2つの組両方で主記憶アドレスの
上位ビットと比較し、どちらか一方が一致すればその組
にコピーされている内容を利用する。両方共不一致の場
合はキャッシュミスとなり、主記憶にアクセスする必要
が生じる。
【0025】この方法は、プロセスの数が組の数以下で
あればスラッシングを回避できる。しかしながらプロセ
スの数が組の数を上回ると、前述と同様のスラッシング
が生じる。近年のパソコンでは、多数(5個以上)のプ
ロセスが同時に実行され、しかも各プロセスが更に複数
のサブプロセス(スレッド)に分割される事が多く、こ
れに対応できる様に十分な組数のキャッシュメモリを設
ける事は困難である。また、仮に十分な組数を設けたと
しても、それらを並列に動作させるためには複雑な制御
回路が必要になる。例えば上述のキャッシュヒット/ミ
スの判定では、各組毎にタグの比較を行なった後、比較
結果に従って特定の組を選択する機能が必要となる。特
にキャッシュミスの場合は、主記憶から読み出した命令
をどこの組へ上書きするかを決定する為に複雑な計算
(LRU算法など)が必要となり、処理時間が増大す
る。この結果、キャッシュメモリの特長であるべき高速
性が損なわれる事になり、実用的でない。現在広く使わ
れているパソコン用CPUにおいては、4組(4ウェイ
と呼ばれる)〜8組程度が上限となっている。
【0026】本発明の目的は、上記の状況を改善し、ハ
ードウェアを極力増加させずにスラッシングを回避でき
るキャッシュメモリの使用方法を提供する事にある。
【0027】本発明のその他の目的については、本明細
書及び図面より明らかになるであろう。
【0028】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を以下に示す。
【0029】すなわち、複数のプログラム単位を実行す
るコンピュータシステムが有する資源の割当を、プログ
ラム単位を実行する要求を受付けるステップと、前記プ
ログラム単位の属性を示すパラメータを獲得するステッ
プと、前記パラメータ及び資源割当テーブル及びキャッ
シュ管理テーブルに基づいて前記プログラム単位の実行
に必要な資源を割当てるステップと、前記資源割当の結
果を前記資源割当テーブルに記憶するステップと、前記
プログラム単位が使用する資源の割当を前記キャッシュ
管理テーブルに記憶するステップとにより行う。
【0030】更に、具体的には、前記パラメータは前記
プログラム単位の中で高頻度に実行される部分を示すた
めの主要部位置情報を有し、前記資源割当テーブルは前
記プログラム単位が使用する主記憶のアドレス情報を有
し、前記キャッシュ管理テーブルは前記キャッシュメモ
リのアドレスと前記プログラム単位との対応を示してお
り、前記資源を割当てるステップでは、前記主要部位置
情報と前記アドレス情報と前記キャッシュ管理テーブル
に基づいて、前記プログラム単位の主要部が使用するエ
ントリアドレスが重ならないように前記プログラム単位
が使用する前記主記憶のアドレスを決定することによ
り、資源の割当を行う。
【0031】また、複数のプログラム単位を実行する機
能を有するオペレーティングシステムが、新たなプログ
ラム単位の実行要求を受付けると、前記プログラム単位
の属性を示すパラメータの獲得と、前記パラメータ及び
資源割当テーブル及びキャッシュ管理テーブルに基づい
て前記プログラム単位の実行に必要な資源の割当と、前
記資源の割当の結果の前記資源割当テーブルへの記憶
と、前記プログラム単位が使用するキャッシュメモリの
割当の前記キャッシュ管理テーブルへの記憶とを行う。
【0032】更に、前記キャッシュメモリが複数のペー
ジを有している場合、前記資源割当テーブルは、プログ
ラム単位が使用する主記憶のアドレス情報を有し、前記
キャッシュ管理テーブルは、前記キャッシュメモリのペ
ージとプログラム単位との対応情報を有し、前記資源の
割当とは、前記主要部位置情報及び前記アドレス情報及
び前記キャッシュ管理テーブルに内容に基づいて、前記
プログラム単位が使用する主記憶のアドレスを決定する
ものである。
【0033】また、キャッシュメモリと、CPUと、メ
モリとを有し、前記メモリに格納されたオペレーティン
グシステムによって制御されるコンピュータシステム
は、新たなプログラム単位の実行要求を受付けると、前
記プログラム単位の属性を示すパラメータの獲得と、前
記パラメータ及び資源割当テーブル及びキャッシュ管理
テーブルに基づいて、前記プログラム単位の実行に必要
な資源の割当と、前記資源の割当の結果の前記資源割当
テーブルへの記憶と、前記プログラム単位が使用するキ
ャッシュメモリの割当の前記キャッシュ管理テーブルへ
の記憶とを行う。
【0034】以上に示したの構成により、前述した課題
を解決することが可能となる。スラッシングの大きな要
因は複数のプログラム単位(プロセス又はスレッド)が
キャッシュメモリを奪い合う事にあり、これを回避する
には、従来行なわれてきたハードウェアのみの改善では
限界がある。従って本発明では、ソフト/ハードが協調
した解決策を提案する。すなわち本発明においては、ハ
ードウェア規模に制約がある限りキャッシュメモリを奪
い合う現象はある程度避けられない、という前提の下
に、それが著しいスラッシングに発展しないための方策
を、ソフトウェア側の工夫によって提供する。
【0035】キャッシュミスによる影響が大きいのは、
プログラムの中で高頻度に実行される部分(主要部)で
スラッシングが生じる場合である。ところが、主要部の
大きさはあまり大きくない事が知られている。そこで本
発明では、マルチプロセス環境において、各々のプロセ
スの主要部が互いに異なるキャッシュメモリのアドレス
を使用する様に、プロセスの主記憶上での配置を調整す
る方法を提供する。更に、前記調整を、プロセスにメモ
リその他の資源を割付ける役目を持つ上位のソフトウェ
ア、すなわちオペレーティングシステム(OS)または
相応の管理ソフトに行わせる。OS上で動作するアプリ
ケーションプログラムは、OSが調整を可能とするため
の情報(パラメータ)をOSに提供する。OSの内部に
は、従来から用いられてきた資源管理テーブルに加え
て、キャッシュ管理テーブルを設け、上記の調整に用い
る。
【0036】以上の発明は、ソフトウェア単独で用いて
も有効であるが、ハードウェア側で用意されているスラ
ッシング回避方策(キャッシュメモリをページに分割す
る、等)と併用すると更に効果的である。
【0037】
【発明の実施の形態】以下、本発明の実施例を図面を用
いて説明する。
【0038】まず、本発明の実施対象となるコンピュー
タシステムの全体の構成を図2を用いて説明する。
【0039】コンピュータシステム10000にはハー
ドウェアとして、マイクロプロセッサを用いたCPU1
000、ROM1001、RAM1002が備えられ、
これらがバス1003で接続されている。更にバス10
03には入出力チャネル1004が接続され、これを介
して、大容量の補助記憶装置1005、オペレータが操
作を入力するための入力装置1006、プログラムの実
行結果をオペレータに知らせる為の表示装置1007が
接続される。入力装置としてはキーボード、マウス等
が、表示装置としてはCRTディスプレイ、プリンタ等
が通常用いられる。補助記憶装置1005としては、ハ
ードディスク装置、フロッピィディスク装置などが通常
用いられる。
【0040】CPUの内部には、システムの高速化を図
るためのキャッシュメモリシステム100が設けられ
る。キャッシュメモリの具体例を、図5を用いて説明す
る。
【0041】図5はダイレクトマッピング方式と呼ばれ
る命令用キャッシュメモリシステムのハードウェア構成
であり、キャッシュサイズ8192(8k)バイト、1
ライン4バイト(従ってエントリアドレスは$000〜
$7FF、但し$は16進数を表す記号、となる)の場
合の例である。また主記憶容量は32MB(アドレス2
5bit)でバイト単位にアドレスが付されているもの
とする。主記憶とCPU間での命令の転送は、1バイト
(8bit)幅のデータバスを通じて行なわれるものと
する。
【0042】CPU1000内のキャッシュメモリシス
テム100は、以下の構成要素を有する。
【0043】まず、命令のコピーを記憶するための記憶
手段150が設けられる。記憶手段150はVビット群
151、タグ群152、ライン群153からなる。Vビ
ット群151は、個々のエントリアドレスに対応するV
ビット(有効ビット)111をエントリアドレスの数だ
け並べたものである。タグ群152は、個々のエントリ
アドレスに対応するタグ112をエントリアドレスの数
だけ並べたものである。ライン群153は、個々のエン
トリアドレスに対応するライン113をエントリアドレ
スの数だけ並べたものであり、命令のコピーはここに記
憶される。即ち、キャッシュメモリの本質的な機能を受
け持つ部分である。以上の記憶手段150には、高速の
記憶素子が用いられる。
【0044】アドレス選択回路101は、エントリアド
レスを入力として受け取り、Vビット群151、タグ群
152、ライン群153の各々から、当該エントリアド
レスに対応するVビット111、タグ112、ライン1
13を選択する。選択されたVビット111、タグ11
2、ライン113は、以後のキャッシュメモリシステム
の動作において読出/書込操作の対象となる。
【0045】またキャッシュメモリシステム100に
は、タグを比較するための比較回路103、キャッシュ
ヒット/ミスの区別を示すヒット信号104、ラインの
中から所望のバイトを選択するバイトセレクタ105、
キャッシュミス時に用いるキャッシュフィルカウンタ1
06および加算器107、バイトセレクタ105が使用
するアドレスを選択するためのアドレスセレクタ10
8、等が設けられ、図示の通りに接続されている。
【0046】以上の回路は以下の通り動作する。
【0047】まず、電源投入(又はシステムリセット)
時には、リセット信号126により全てのエントリアド
レスに対するVビットを0にクリアして、キャッシュの
内容を無効とする。
【0048】その後、CPU1000がプログラムカウ
ンタ(PC)1100で指定される主記憶アドレスAの
命令を実行しようとする時、まずキャッシュメモリの対
応するアドレスに当該命令がコピーされているかどうか
を調べる。このためにまず、PCの第2〜12ビット、
つまりエントリアドレスをアドレス選択回路101に入
力し、対応するラインのタグ112およびVビット11
1を求める。タグ112を比較器103によりAの上位
(第13〜24)ビットと比較し、両者が一致かつVビ
ットが1(有効)であれば、当該ラインに所望の命令が
コピーされている事を示すヒット信号104が1とな
る。この場合、当該ライン113をライン群153から
読出した後、Aの第0〜1bitに従ってバイトセレク
タ105により所望のバイトを選択する。以上により選
択されたバイトの内容が所望の命令であり、CPU内の
命令解読回路1200へと入力され、以降の命令実行に
供される。
【0049】ヒット信号104が0の場合はキャッシュ
ミスであり、主記憶から命令を読出してキャッシュにコ
ピーし直す(キャッシュフィル)必要がある。キャッシ
ュフィルの手順は本発明の実施に影響を及ぼさないの
で、以下に概要のみを説明する。
【0050】本キャッシュメモリはライン構成なので、
キャッシュフィルの時には主記憶アドレスAのみなら
ず、同アドレスを含む1ライン(4バイト)分の命令を
キャッシュメモリにコピーする。このためには、キャッ
シュフィルカウンタ106を用いて、当該アドレスと上
位23ビット(第2〜24bit)が同一となる4つの
アドレスを逐次作り出し、アドレスバス121を通じて
主記憶メモリにアクセスし、データバス122を通じて
命令を取得する。取得された命令は、バイトセレクタ1
05により当該ライン内の対応するバイトに振り分けて
記憶(コピー)される。以上が完了した後、当該ライン
のVビット111をキャッシュフィル完了信号125に
より1にセットする。加算器107は、キャッシュフィ
ルカウンタ106を0→1→2→3と変化させて4つの
命令を順次取得する際に、最初に取得する命令が主記憶
アドレスAの命令となるために設けられる。またキャッ
シュフィルが行なわれることを主記憶に知らせるため、
ヒット信号104の論理否定であるキャッシュミス信号
120が主記憶へ伝達される。以上の構成のキャッシュ
メモリによって、プログラムの局在性が成り立つ場合に
は、ハードウェアの平均的な処理速度を向上させる事が
出来る。
【0051】また図2に示すCPUにはタイマ1010
が接続されており、一定時間(たとえば10ミリ秒)毎
にタイマ割込信号線1011を通じてCPUに割込みを
かける。
【0052】以上のコンピュータシステムを動作させる
ソフトウェアとしては以下のものが用意されている。
【0053】特に限定される訳ではないが、ROM10
01内に、オペレーティングシステム(OS)200が
用意され、本コンピュータシステム全体の動作を制御す
る。OSは後述の方法により、複数のプログラム単位を
時分割で並行して実行するマルチプロセス機能を有し、
このための資源割当手段999を内包する。またOSは
自身が動作するための作業領域として、RAM内にOS
領域210を確保し、占有的に使用する。ハードウェア
のうち、入出力チャネル1004、及びこれに接続され
る補助記憶装置1005、入力装置1006、出力装置
1007はOSによりソフトウェア的に制御される。
【0054】またOSがタイマ割込信号に応じて所定の
動作をするため、ROM内の規定のアドレスに、OS内
の割込処理機能プログラムの開始番地である割込アドレ
ス201が記録されている。タイマ割込信号線1011
を通じて割込信号が到来した時には、CPU内部の専用
回路(図示せず)が動作して割込アドレス201を参照
し、同アドレスに分岐する。
【0055】ユーザが使用するアプリケーションプログ
ラム221、222、……、は補助記憶装置1005に
格納されており、必要に応じてオペレータの指示操作の
下に、RAM1002に複写されて実行される。各アプ
リケーションプログラムには、当該プログラムの実行に
必要となる属性情報231、232、……、が付随させ
ており、OSにて利用する。属性情報の内容は、当該プ
ログラムの大きさ、実行開始番地、必要な作業メモリ量
などである。
【0056】以上で述べたシステムにおいて、OSの動
作は図3及び図4の通りとなる。
【0057】まず電源投入(又はシステムリセット)時
に行なう準備動作を、図3のフローチャートを用いて説
明する。
【0058】OSの動作準備完了前に割込が入るのを防
ぐために、割込禁止命令を発行する(ステップ301、
以下、簡略のためs301と記述する)。次に、OS領
域210の中に、以下の変数およびテーブルの領域を確
保し、所要の初期値に初期化する(s302〜s30
6)。プロセス数を示す変数N_procを確保し、初
期値を0とする(s302)。実行中のプロセス番号を
示す変数C_procを確保し、初期値を0とする(s
303)。
【0059】次に、図8aに示した形式のプロセス管理
テーブル700の領域を確保し初期化する(s30
4)。なおプロセス番号0は、OS自身を示すものとす
る。次に、図8bに示した形式の状態保存テーブル75
0の領域を確保する(初期化不要)(s305)。更
に、キャッシュ管理テーブル領域を確保して内容を初期
化する(s306)。この詳細は後述する。
【0060】以上の準備が完了した時点で、タイマ10
10からの割込を許可し(s307)、OSの実行を休
止する。以後OSは割込の都度起動される。
【0061】次にタイマ1010から割込が生じた場合
の動作を説明する。この動作を行うプログラムは、割込
アドレス201以降に格納される。
【0062】割込みが生じた場合にOSが行なう動作
は、2つに大別される。第一の動作は、オペレータから
の操作入力に従って所定のアプリケーションプログラム
を実行する事であり、第二の動作は、複数のプログラム
単位(プロセス)が時分割で実行されてる状況におい
て、プロセスを現在実行中のものから他のものへ切換え
る事(プロセス・スイッチ)である。以上の詳細を、図
4のフローチャートを用いて説明する。
【0063】割込が生じた場合、OSはまず現在のCP
Uの状態を状態保存テーブル750内の退避領域760
に記憶する(s311)。これは割込の直前まで実行さ
れていたプロセスを、OSの動作が完了した後に元の状
態で再開できるようにするためである。記憶する内容
は、CPUの種類により異なるが、割込時に実行中のア
ドレスを示すPC値752、CPUのフラグ状態75
3、CPU内のレジスタの値754、755、……、等
である。
【0064】次にOSは、入力装置1006にオペレー
タからの操作が入力されたかどうかを調べ(s31
2)、その結果に応じて上記第一の動作(s321〜s
327)と第二の動作(s331〜s337)とに分け
て動作を行なう。
【0065】第一の動作の場合には、OSはまず入力装
置1006から実行すべきアプリケーションプログラム
の名称を入力する(s321)。次に補助記憶装置10
05から当該プログラムの属性情報231を取得し(s
322)、この情報と前記各種テーブルの内容を勘案し
て、プロセスの実行に必要な資源であるプログラム領
域、作業領域などを、資源割当手段999により割当て
る(s323)。更に、割当の結果に従ってプロセス管
理テーブルを更新する(s324)。以上の更新が完了
した後、プロセス数を示す変数N_procを1つ増や
し(s325)、この新しいプロセスに対する状態保存
テーブルを初期化する(s326)。すなわち、テーブ
ル内のPC値をプロセスの実行開始アドレスとなるプロ
グラム領域開始番地703の内容 + エントリアドレス
902の値(後述)とし、他の値は適当な初期値(たと
えば0)とする。
【0066】最後にプログラム221をs323で定め
た主記憶アドレスにロードする(s327)。これによ
り、次にプロセス番号3に実行の順番が回ってきた時
に、同プロセスを初期状態から実行する事が可能とな
る。これ以後の処理は、後に記すの第二の動作に合流す
る。
【0067】なお以上においては簡略のため、補助記憶
装置1005に記憶されたアプリケーションプログラム
221、222、……、は、それぞれが1つのプロセス
として実行されるものとした。
【0068】第二の動作では、以下のs331〜s33
7によりプロセスの切換作業を行なう。
【0069】まずプロセス数を示す変数N_procを
参照し、その値により下記のいずれかの処理へ分岐する
(s331)。変数N_procが0の場合は、何もせ
ずにOSの実行を休止し、以後の割込を待つ。変数N_
procが1の場合は、CPUの状態を退避領域760
の内容に戻し(s332)、プロセス番号C_proc
の実行に移る。変数N_procが2以上の場合は以下
のs333〜s337により、実行するプロセスを現在
のC_proc番から次の番号へ切換える。
【0070】まず退避領域760の内容を、状態保存テ
ーブル中の当該プロセス用領域770に複写し(s33
3)、実行すべきプロセスの番号C_procを1つ増
やす(s334)。但しC_procがN_procを
超えた場合は番号を1番に戻す(s335〜s33
6)。
【0071】次に、CPUの状態を状態保存テーブル中
に保存されたC_proc番プロセスの状態に戻し(s
337)、プロセス番号C_procの実行に移る。
【0072】なお実際に用いられるOSでは、上述の機
能がもっと複雑となる。たとえば特定のプロセスを優先
的に実行させるために、同一のプロセスを2回続けて実
行する事がある。また、複数のプロセスで資源の競合が
生じている場合(たとえばプロセスAが作成するデータ
ファイルがプロセスBの入力として使われる場合など)
には、一方のプロセスを強制的に待たせる等の調整を行
なう。更に、オペレータからの操作入力は、上例で示し
た様なアプリケーション実行の操作に限らず、例えば現
在実行中のプロセスを停止させる操作などが考えられ、
相応の機能がOSに要求される。しかしながらこれら
は、本発明の実施に影響を与えるものではないので、こ
こでは割愛する。
【0073】以上の説明において、キャッシュ管理テー
ブル800、及びs323で用いられる割当手段999
は、ハードウェアの構成に応じていくつかの構成が考え
られる。これらを以下に順次説明する。
【0074】まず第1の実施例として、キャッシュメモ
リが図5に示した「ダイレクトマッピング方式」の構成
である場合について説明する。
【0075】この場合スラッシングを防ぐには、複数の
プロセス各々の主要部がキャッシュメモリの同一アドレ
スを使用しないようにプロセスを主記憶上に配置すれば
良い。このためには、アプリケーションプログラムの属
性情報231、232、……、から各々の主要部位置を
取得し、それらから式1により定まるアドレスが相互に
異なる様に、プロセスをロードする主記憶アドレスを決
定すれば良い。
【0076】この場合、属性情報として必要な情報は図
11aの形式となる。即ち、属性情報231には、プロ
グラム名称900、プログラムサイズ901、エントリ
アドレス902、作業領域サイズ903、に加えて、主
要部位置910、主要部サイズ911が記録される。エ
ントリアドレス902および主要部位置910は、当該
プログラム先頭からの相対バイト位置で示す。
【0077】またキャッシュ管理テーブルは、キャッシ
ュメモリの各アドレスが現在どのプロセスにより使用さ
れているか、或いは未使用であるか、を図9aの形式で
記憶する。即ち、キャッシュ管理テーブル800は、キ
ャッシュ番地810と使用するプロセス番号820との
対応表である。あるアドレスが未使用の場合は、プロセ
スが存在しない事を示す値−1をプロセス番号820に
記しておく。OSの準備動作におけるキャッシュ管理テ
ーブル作成(s306)においては、OSが自ら使用す
るアドレスに0を、他の全てのアドレスに−1を記して
おけば良い。なお図9aでは簡略化のため、キャッシュ
メモリのアドレスは128($80)バイトずつまとめ
て扱うものとした。キャッシュ管理テーブル800の実
現方法はこれに限らず、たとえば各プロセス番号に対応
するキャッシュメモリのアドレスの範囲を記憶する方法
でも良い。
【0078】以上の属性情報及びキャッシュ管理テーブ
ル、並びに前述の資源管理テーブル700を用いて、資
源割当手段999は図1のフローチャートに従って動作
する。
【0079】まず、新たなプロセスのプロセス番号を、
実行中のプロセス数に1を加えた値N_proc+1と
する(s2101)。これ以降の資源管理テーブル70
0への書き込みは、プロセス番号N_proc+1を対
象に行なう。プログラム名称900をプログラム名の欄
702に書き込む(s2102)。作業領域サイズ90
3より大きな主記憶の空き領域を資源管理テーブル70
0を用いて探し(s2103)、見つかった領域の開始
番地を欄706に、開始番地+作業領域サイズ−1を欄
707に書き込む(s2104)。これにより主記憶上
に作業領域が確保される。
【0080】プログラムサイズ901+キャッシュサイ
ズ(8KB)より大きな主記憶の空き領域を資源管理テ
ーブル700を用いて探す(s2105)。ここでキャ
ッシュサイズ(8KB)を加算する理由は、後のs21
08においてロードするアドレスをずらす余裕を設ける
ためである。
【0081】主要部サイズ911より大きなキャッシュ
メモリの空き領域をキャッシュ管理テーブル800を用
いて探す(s2106)。前記s2106で見つかった
領域の開始番地から主要部サイズ分のキャッシュ番地8
10に対応するプロセス番号欄820にプロセス番号N
_proc+1を書き込む(s2107)。これにより
同プロセスの主要部に対するキャッシュメモリが確保さ
れる。
【0082】プログラムをロードする主記憶アドレスL
を以下の式3に従って定める(s2108)。
【0083】 L = ( C − P − F )mod S + F [式3] 但し C: s2106で見つかったキャッシュメモリ
領域の先頭番地 P: 主要部位置910の値 S: キャッシュメモリのサイズ F: s2105で見つかった主記憶空き領域の先頭番
地 本ステップにより、ロード後に主要部が使用するキャッ
シュメモリのアドレスがs2106で見つかったキャッ
シュメモリの空き領域に一致する様になる。
【0084】上記s2108によるLを欄703に、L
+プログラムサイズ−1を欄704に、L+エントリア
ドレスを欄705に、それぞれ書き込む(s210
9)。これにより、主記憶上にプログラム領域が確保さ
れる。
【0085】以上によりプロセス実行に必要な資源が得
られたので、資源割当手段999の動作を終了し、図4
bのフローチャートに戻る。
【0086】次に第2の実施例として、ハードウェアが
図6に示した方式の場合について説明する。図6は「ア
プリケーション空間分割方式」と呼ばれる、図5を改良
したキャッシュメモリの構成例である。
【0087】図6においては、キャッシュメモリシステ
ムの構成要素や動作は図5と同じであるが、エントリア
ドレスの作り方が異なっている。すなわち、図5におい
てはエントリアドレスはPCの値のうちの第2〜13b
itを用いていたが、図6においてはエントリアドレス
の上位2ビットに、PCの上位2ビット(第23〜24
bit)をそのまま用いる。これに伴い、タグ112は
ビット数は不変であるが、取出す位置に変更が生じ、P
Cの第11〜22bit(全12ビット)を用いる様に
なる。この構成により、エントリアドレスは $000 〜 $1FF …… ページ0 $200 〜 $3FF …… ページ1 $400 〜 $5FF …… ページ2 $600 〜 $7FF …… ページ3 の4つに分けられ、各々のページが独立したキャッシュ
メモリとして機能する。キャッシュメモリの実質的な容
量であるライン群153の容量は、図5と図6で同一で
ある。
【0088】主記憶アドレスとキャッシュメモリアドレ
ス(エントリアドレスではなくバイト単位のアドレス)
の対応は、図5においては前述の通り A = A mod ( 2 ** 13 ) [式1] となるのに対し、本構成例においては、 A= A mod( 2 ** 11 )+ $200 × ( A ÷ $800000 ) 但し ÷ は整数部のみを値とするものとする …… [式4] となる。[式4]の第2項である$200×(A÷$8
00000)は、アプリケーションプログラムがどのペ
ージを用いるかを、同プログラムに割当られたメモリア
ドレスに従って決定する部分である。言い換えれば、本
方式においては、アプリケーションプログラムのメモリ
への割付を決定する事が、そのままキャッシュメモリの
ページを割当る事になる。
【0089】図6の構成においてスラッシングを防ぐに
は、各々のプロセスが異なるキャッシュメモリのページ
を使用する様に、プロセスを主記憶上に配置すれば良
い。この場合、各プロセスの主要部に関する情報は必要
がなくなり、属性情報として必要な情報は図11bの形
式となる。即ち、属性情報231には、プログラム名称
900、プログラムサイズ901、エントリアドレス9
02、作業領域サイズ903があれば良く、図11aに
示した第1の実施例の場合よりも簡単になる。
【0090】またキャッシュ管理テーブルは、キャッシ
ュメモリの各ページが現在どのプロセスにより使用され
ているか、乃至は未使用であるか、を図9bの形式で記
憶する。即ち、キャッシュ管理テーブル800は、キャ
ッシュページ811と使用するプロセス番号820との
対応表である。あるページが未使用の場合は、プロセス
が存在しない事を示す値−1をプロセス番号820に記
しておく。OSの準備動作におけるキャッシュ管理テー
ブル作成(s306)においては、OSが自ら使用する
ページに0を、他の全てのページに−1を記しておけば
良い。
【0091】以上の属性情報およびキャッシュ管理テー
ブル、並びに前述の資源管理テーブル700を用いて、
資源割当手段999は図12のフローチャートに従って
動作する。
【0092】まず、新たなプロセスのプロセス番号を、
実行中のプロセス数に1を加えた値N_proc+1と
する(s2201)。これ以降の資源管理テーブル70
0への書き込みは、プロセス番号N_proc+1を対
象に行なう。
【0093】プログラム名称900をプログラム名の欄
702に書き込む(s2202)。作業領域サイズ90
3より大きな主記憶の空き領域を資源管理テーブル70
0を用いて探し(s2203)、見つかった領域の開始
番地を欄706に、開始番地+作業領域サイズ−1を欄
707に書き込む(s2204)。これにより主記憶上
に作業領域が確保される。
【0094】以上のs2201〜s2204は、第1の
実施例におけるs2101〜s2104と全く同一であ
る。
【0095】更に、キャッシュメモリの空きページをキ
ャッシュ管理テーブル800を用いて探し(s220
5)、上記s2205で見つかったページに対応するプ
ロセス番号欄820にプロセス番号N_proc+1を
書き込む(s2206)。これにより同プロセスに対す
るキャッシュメモリのページが確保される。
【0096】プログラムをロードする主記憶アドレスL
を以下の式5に従って定める(s2207)。
【0097】 L = C * ( 2 ** 23 ) [式5] 但し C:s2205で見つかったキャッシュメモリの
ページ番号 本ステップにより、ロード後に主要部が使用するキャッ
シュメモリのページがs2205で見つかったページに
一致するようになる。
【0098】上記s2207によるLを欄703に、L
+プログラムサイズ−1を欄704に、L+エントリア
ドレスを欄705に、それぞれ書き込む(s220
8)。これにより、主記憶上にプログラム領域が確保さ
れる。
【0099】以上によりプロセス実行に必要な資源が得
られたので、割当手段999の動作を終了し、図4のフ
ローチャートに戻る。
【0100】なお本実施例においては、1つのプロセス
にキャッシュメモリを2ページ割付ける事も可能であ
る。このためには、s2205において連続した空きペ
ージC’、C’+1を見つけておき、s2207では例
えば、 L = ( C+ 1 ) * ( 2 ** 23 ) − (プログラムサイズ
÷2 ) [式5’]なるL’をプログラムをロードする
主記憶アドレスとする。この結果、プログラムの前半は
キャッシュページC’を、後半はC’+1を用いる事に
なる。
【0101】但し1つのプロセスが複数のキャッシュペ
ージを占有することは、他のプロセスの処理速度を犠牲
にする事になるので、複数ページを割付けるかどうか
は、プロセスの優先度を考慮して判定する必要がある。
このためには図11cに示す様に、要求キャッシュペー
ジ920(又はこれと等価な優先度情報)を属性情報2
31に予め記録しておき、キャッシュページに空きがあ
ってかつプロセスが複数ページを要求する場合にのみ式
5’採用する、とすれば良い。
【0102】また、以上の説明においては、1つのキャ
ッシュページには高々1つのプロセスしか割付けられな
いものとしたが、このままでは同時に実行できるプロセ
スの数がキャッシュページの数に制限されてしまい、効
果的でない。そこで、本実施例と第1の実施例とを併用
した、以下の様な方法が考えられる。
【0103】属性情報231にはプロセスの優先度情報
930を予め記録しておく(図11d)。優先度情報は下
記3段階のいずれかである。 優先度3(最優先) あるキャッシュページを排他的に
使用する。 優先度2(優先) キャッシュページを他プロセスと
共用することがある。但し各々の主要部は、キャッシュ
アドレスを他と共有しない。 優先度1(普通) キャッシュページを他プロセスと
共用することがあり、主要部が同一のキャッシュアドレ
スとなる可能性もある(スラッシングの危険を認め
る)。
【0104】割付手段999は優先度情報930を参照
して、優先度3のプロセスに対しては第2の実施例の方
法で、空いているキャッシュページを割付る。優先度2
のプロセスに対しては、キャッシュページに空きがない
場合は、適当なキャッシュページ(但し優先度3のプロ
セスが使用していないページ)を選択して、第1の実施
例の方法によりキャッシュアドレスを割付ける。優先度
1のプロセスに対しては、第1の実施例の方法を試みる
が、キャッシュアドレスの割付が不可能な場合であって
もそのままプロセスをロードし実行する。
【0105】以上を実施する為のキャッシュ管理テーブ
ル800としては、図10に示したものを使用する。図
10は図9aと図9bを組み合わせたテーブルであり、
キャッシュページ番号811と各ページ内のキャッシュ
アドレス(ページ先頭アドレスからの相対値)810か
らなる2次元の表である。表の各欄821には、当該ペ
ージの当該番地を使用するプロセスの番号が記される。
値−1は未使用を示す。排他使用欄830は、当該ペー
ジを排他的に使用するプロセスが存在するかどうかを表
す。存在する場合はそのプロセス番号を示し、値−1は
複数のプロセスが当該ページを共用している事を、値−
2は当該ページが全く使用されていない事を示す。本テ
ーブルの初期化(s306)は、排他使用欄830を全
て−2、各欄821を全て−1とした後、OS(プロセ
ス番号0)の使用部分を書き込めば良い。
【0106】更に第3の実施例として、ハードウェアが
図7に示した方式の場合について説明する。図7は「キ
ャッシュページレジスタ方式」と呼ばれる、図5を改良
したキャッシュメモリの構成例である。
【0107】図7においては、キャッシュメモリシステ
ムの構成要素や動作は図5と同じであるが、エントリア
ドレスの作り方が異なっている。すなわち、図5におい
てはエントリアドレスはPCの値のうちの第2〜12b
itを用いていたが、図7においては2ビットのレジス
タであるキャッシュページレジスタ160が設けられ、
エントリアドレスの上位2ビットとして用いられる。キ
ャッシュページレジスタの内容は、適当なCPU命令に
よりソフトウェア的に変更されるものとする。これに伴
い、タグ112が2ビット増加し、PCの第11〜24
bit(全14ビット)を用いる様になっている。
【0108】この構成により、エントリアドレスは図6
と同様に、 $000 〜 $1FF …… ページ0 $200 〜 $3FF …… ページ1 $400 〜 $5FF …… ページ2 $600 〜 $7FF …… ページ3 の4つに分けられ、各々のページが独立したキャッシュ
メモリとして機能する。従ってスラッシングを防ぐ方策
も、第2の実施例とほぼ同一ある。異なるのは、図6に
おいては主記憶アドレスの違いによってキャッシュペー
ジが自動的に切換えられていたのに対し、図7において
はOSが明示的にキャッシュページレジスタを書換える
必要が有る、という点である。すなわち図14に示す通
り、図4のプロセス切換手順におけるステップ337の
後に、キャッシュページレジスタ160をキャッシュ管
理テーブル800に従って書き換える操作(s338)
が加わる。
【0109】本実施例では、属性情報231およびキャ
ッシュ管理テーブル800は第2の実施例と同一であ
り、各々図11bおよび図9bに記したものを用いる。
【0110】資源割当手段999は図13のフローチャ
ートに従って動作する。図13のs2301〜s230
8は、図12のs2201〜s2208とs2307を
除いて同一である。s2307では、プログラムサイズ
901より大きな主記憶の空き領域を資源割当テーブル
700を用いて探す事により、プログラムをロードする
主記憶アドレスLを定める。
【0111】本実施例も第2の実施例と同様に、第1の
実施例で示した方法との併用が可能である。
【0112】以上、本発明の実施例を3通り説明した。
【0113】これらの実施例においては、属性情報23
1は外部記憶装置1005から読み込むものとしたが、
プロセス起動を要求する際のパラメータとして属性情報
をOSに与える方法でも良い。
【0114】また、資源割当手段999が割当を失敗し
た場合の動作については特に述べなかったが、表示装置
1007にメッセージを表示してプロセス起動を中止す
る、等適当な措置をとるものとする。
【0115】またこれらの実施例は、OSの機能の一部
として本発明を利用する形態を説明したが、各実施例で
示した機能を有するソフトウェアを既存のOSに外付け
する形態で、本発明を実施しても良い。
【0116】
【発明の効果】以上の様に本発明によれば、スラッシン
グの生じにくいマルチプロセス環境を提供でき、ハード
ウェアの性能を十分に生かすことが可能な資源の割当方
法及びOS及び前記OSにより動作するコンピュータシ
ステムを提供する事が可能になる。
【図面の簡単な説明】
【図1】本発明の第1の実施例における資源割当手段9
99の動作を示すフローチャート。
【図2】本発明の実施対象となるコンピュータシステム
の全体構成を示すブロック図。
【図3】OSの準備動作を説明するフローチャート。
【図4】OSのタイマから割込が生じた場合の動作を説
明するフローチャート。
【図5】キャッシュメモリシステムの第1の構成(ダイ
レクトマッピング方式)を示す回路図。
【図6】キャッシュメモリシステムの第2の構成(アプ
リケーション空間分割方式)を示す回路図。
【図7】キャッシュメモリシステムの第3の構成(キャ
ッシュページレジスタ方式)を示す回路図。
【図8】OSがマルチプロセスの管理に使用する資源割
当テーブルと状態保存テーブルの図。
【図9】本発明における第1の実施例と、第2又は第3
の実施例におけるキャッシュ管理テーブルの構成を示す
図。
【図10】第2又は第3の実施例を第1の実施例と併用
する場合の構成を示す図。
【図11】本発明における第1の実施例と、第2又は第
3の実施例等における属性情報の構成を示す図。
【図12】第2の実施例における資源割当手段999の
動作を示すフローチャート。
【図13】第3の実施例における資源割当手段999の
動作を示すフローチャート。
【図14】第3の実施例におけるOSの動作の違いを説
明するフローチャート。
【符号の説明】
123:論理積回路 124:論理否定回路 99
9:資源割当手段。

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】複数のプログラム単位を実行するコンピュ
    ータシステムが有する資源の割当方法であって、 前記割当方法は、プログラム単位の実行要求を受付ける
    ステップと、 前記プログラム単位の属性を示すパラメータを獲得する
    ステップと、 前記パラメータ及び資源割当テーブル及びキャッシュ管
    理テーブルに基づいて、前記プログラム単位の実行に必
    要な資源を割当てるステップと、 前記資源割当の結果を前記資源割当テーブルに記憶する
    ステップと、 前記プログラム単位が使用するキャッシュメモリの割当
    を前記キャッシュ管理テーブルに記憶するステップとを
    有していることを特徴とする資源の割当方法。
  2. 【請求項2】請求項1において、 前記パラメータは、前記プログラム単位の中で高頻度に
    実行される部分を示すための主要部位置情報を有し、 前記資源割当テーブルは、前記プログラム単位が使用す
    る主記憶のアドレス情報を有し、前記キャッシュ管理テ
    ーブルは、前記キャッシュメモリのアドレスと前記プロ
    グラム単位との対応を示しており、前記資源を割当てる
    ステップでは、前記主要部位置情報と前記アドレス情報
    と前記キャッシュ管理テーブルに基づいて、前記プログ
    ラム単位の主要部が使用するエントリアドレスが重なら
    ないように前記プログラム単位が使用する前記主記憶の
    アドレスを決定することを特徴とする資源の割当方法。
  3. 【請求項3】請求項1において、 前記資源割当テーブルは、前記プログラム単位が使用す
    る主記憶のアドレス情報を有し、前記キャッシュ管理テ
    ーブルは、前記キャッシュメモリのページと前記プログ
    ラム単位との対応を示しており、前記資源を割当てるス
    テップでは、前記パラメータと前記アドレス情報と前記
    キャッシュ管理テーブルに基づいて、前記プログラム単
    位が使用する前記主記憶のアドレスを決定することを特
    徴とする資源の割当方法。
  4. 【請求項4】複数のプログラム単位を実行する機能を有
    するオペレーティングシステムであって、前記オペレー
    ティングシステムは、新たなプログラム単位の実行要求
    を受付けると、前記プログラム単位の属性を示すパラメ
    ータの獲得と、前記パラメータ及び資源割当テーブル及
    びキャッシュ管理テーブルに基づいて、前記プログラム
    単位の実行に必要な資源の割当と、 前記資源の割当の結果の前記資源割当テーブルへの記憶
    と、 前記プログラム単位が使用するキャッシュメモリの割当
    の前記キャッシュ管理テーブルへの記憶とを行うことを
    特徴とするオペレーティングシステム。
  5. 【請求項5】請求項4において、前記キャッシュメモリ
    は、エントリアドレスを有し、前記パラメータは、前記
    プログラム単位の中で高頻度に実行される部分を示す主
    要部位置情報を有し、前記資源割当テーブルは、プログ
    ラム単位が使用する主記憶のアドレス情報を有し、前記
    キャッシュ管理テーブルは、前記キャッシュメモリのア
    ドレスとプログラム単位との対応情報を有し、前記資源
    の割当とは、前記主要部位置情報及び前記アドレス情報
    及び前記キャッシュ管理テーブルに内容に基づいて、前
    記プログラム単位の中の前記高頻度に実行される部分に
    対応する前記エントリアドレスが前記プログラム単位以
    外のプログラム単位の中の高頻度に実行される部分に対
    応するエントリアドレスと重複しないように、前記プロ
    グラム単位が使用する主記憶のアドレスを決定するもの
    であることを特徴とするオペレーティングシステム。
  6. 【請求項6】請求項4において、前記キャッシュメモリ
    は、複数のページを有し、前記資源割当テーブルは、プ
    ログラム単位が使用する主記憶のアドレス情報を有し、
    前記キャッシュ管理テーブルは、前記キャッシュメモリ
    のページとプログラム単位との対応情報を有し、前記資
    源の割当とは、前記主要部位置情報及び前記アドレス情
    報及び前記キャッシュ管理テーブルに内容に基づいて、
    前記プログラム単位が使用する主記憶のアドレスを決定
    するものであることを特徴とするオペレーティングシス
    テム。
  7. 【請求項7】請求項6において、前記プログラム単位か
    ら別のプログラム単位へ実行を移す際、前記キャッシュ
    管理テーブルに従ってキャッシュページレジスタの書換
    を行うことを特徴とするオペレーティングシステム。
  8. 【請求項8】請求項6または7において、前記資源の割
    当とは、前記パラメータが有する優先度情報に基づき、
    前記プログラム単位に割当てる前記キャッシュメモリの
    ページの数を決定する処理を含むものであるを特徴とす
    るオペレーティングシステム。
  9. 【請求項9】請求項6または7において、前記資源の割
    当とは、前記パラメータが有する優先度情報に基づき、
    前記キャッシュメモリの所定のページに割当てるプログ
    ラム単位の数を決定する処理を含むものであることを特
    徴とするオペレーティングシステム。
  10. 【請求項10】キャッシュメモリと、CPUと、メモリ
    とを有するコンピュータシステムであって、前記コンピ
    ュータシステムは、前記メモリに格納されたオペレーテ
    ィングシステムによって制御され、前記オペレーティン
    グシステムは、前記コンピュータシステムがプログラム
    単位の実行要求を受付けると、前記プログラム単位の属
    性を示すパラメータの獲得と、前記パラメータ及び資源
    割当テーブル及びキャッシュ管理テーブルに基づいて、
    前記プログラム単位の実行に必要な資源の割当と、前記
    資源の割当の結果の前記資源割当テーブルへの記憶と、
    前記プログラム単位が使用するキャッシュメモリの割当
    の前記キャッシュ管理テーブルへの記憶とを行うことを
    特徴とするコンピュータシステム。
  11. 【請求項11】請求項10において、前記キャッシュメ
    モリは、エントリアドレスを有し、前記パラメータは、
    前記プログラム単位の中で高頻度に実行される部分を示
    す主要部位置情報を有し、前記資源割当テーブルは、プ
    ログラム単位が使用する主記憶のアドレス情報を有し、
    前記キャッシュ管理テーブルは、前記キャッシュメモリ
    のアドレスとプログラム単位との対応情報を有し、前記
    資源の割当とは、前記主要部位置情報及び前記アドレス
    情報及び前記キャッシュ管理テーブルに内容に基づい
    て、前記プログラム単位の中の前記高頻度に実行される
    部分に対応する前記エントリアドレスが前記プログラム
    単位以外のプログラム単位の中の高頻度に実行される部
    分に対応するエントリアドレスと重複しないように、前
    記プログラム単位が使用する主記憶のアドレスを決定す
    るものであることを特徴とするコンピュータシステム。
  12. 【請求項12】請求項10において、前記キャッシュメ
    モリは、複数のページを有し、前記資源割当テーブル
    は、プログラム単位が使用する主記憶のアドレス情報を
    有し、前記キャッシュ管理テーブルは、前記キャッシュ
    メモリのページとプログラム単位との対応情報を有し、
    前記資源の割当とは、前記パラメータ及び前記アドレス
    情報及び前記キャッシュ管理テーブルに内容に基づい
    て、前記プログラム単位が使用する主記憶のアドレスを
    決定するものであることを特徴とするコンピュータシス
    テム。
  13. 【請求項13】CPUとキャッシュメモリとメモリとを
    有し、複数のプログラム単位を実行するコンピュータシ
    ステムであって、前記コンピュータシステムは、資源の
    割当結果を記憶する資源割当テーブルと前記キャッシュ
    メモリの割当を記憶するキャッシュ管理テーブルとを有
    しており、前記メモリは、前記コンピュータシステムを
    制御するためのオペレーティングシステムを格納する領
    域を有しており、前記オペレーティングシステムは、前
    記複数のプログラム単位の内の一つのプログラム単位を
    実行する際、前記一つのプログラム単位に関するパラメ
    ータを獲得し、前記パラメータ及び前記資源割当テーブ
    ル及び前記キャッシュ管理テーブルの内容に基づいて、
    前記一つのプログラム単位に対応する資源の割当を行う
    ことを特徴とするコンピュータシステム。
  14. 【請求項14】請求項13において、前記キャッシュメ
    モリは、エントリアドレスを有し、前記パラメータは、
    前記プログラム単位の中で高頻度に実行される部分を示
    す主要部位置情報を有し、前記資源割当テーブルは、プ
    ログラム単位が使用する主記憶のアドレス情報を有し、
    前記キャッシュ管理テーブルは、前記キャッシュメモリ
    のアドレスとプログラム単位との対応情報を有し、前記
    資源の割当とは、前記主要部位置情報及び前記アドレス
    情報及び前記キャッシュ管理テーブルに内容に基づい
    て、前記プログラム単位の中の前記高頻度に実行される
    部分に対応する前記エントリアドレスが前記プログラム
    単位以外のプログラム単位の中の高頻度に実行される部
    分に対応するエントリアドレスと重複しないように、前
    記プログラム単位が使用する主記憶のアドレスを決定す
    るものであることを特徴とするコンピュータシステム。
  15. 【請求項15】請求項13において、前記キャッシュメ
    モリは、複数のページを有し、前記資源割当テーブル
    は、プログラム単位が使用する主記憶のアドレス情報を
    有し、前記キャッシュ管理テーブルは、前記キャッシュ
    メモリのページとプログラム単位との対応情報を有し、
    前記資源の割当とは、前記パラメータ及び前記アドレス
    情報及び前記キャッシュ管理テーブルの内容に基づい
    て、前記プログラム単位が使用する主記憶のアドレスを
    決定するものであることを特徴とするコンピュータシス
    テム。
  16. 【請求項16】複数のプログラム単位を実行するコンピ
    ュータシステムを制御するオペレーティングシステムで
    あって、前記オペレーティングシステムは、前記コンピ
    ュータシステムが前記複数のプログラム単位の内の一つ
    のプログラム単位を実行する際、前記一つのプログラム
    単位の主要部が使用するキャッシュメモリのエントリア
    ドレスが、前記複数のプログラム単位の内の前記一つの
    プログラム単位とは異なるプログラム単位の主要部が使
    用する前記キャッシュメモリのエントリアドレスと重複
    しないように、前記一つのプログラム単位に対して資源
    を割当てることを特徴とするオペレーティングシステ
    ム。
  17. 【請求項17】請求項16において、前記資源の割当
    は、前記オペレーティングシステムが有する資源割当手
    段によってなされることを特徴とするオペレーティング
    システム。
  18. 【請求項18】請求項16において、 前記オペレーティングシステムは、前記コンピュータシ
    ステムが有するメモリに格納されていることを特徴とす
    るオペレーティングシステム。
  19. 【請求項19】オペレーティングシステムによって制御
    され、複数のプログラム単位を実行するコンピュータシ
    ステムであって、 前記コンピュータシステムは、前記複数のプログラム単
    位の内の一つを実行する際、前記一つのプログラム単位
    の主要部が使用するキャッシュメモリのエントリアドレ
    スが、前記複数のプログラム単位の内の前記一つのプロ
    グラム単位とは異なるプログラム単位の主要部が使用す
    る前記キャッシュメモリのエントリアドレスと重複しな
    いように、前記オペレーティングシステムに基づいて、
    前記一つのプログラム単位に対して資源を割当てること
    を特徴とするコンピュータシステム。
  20. 【請求項20】請求項19において、 前記資源の割当は、前記コンピュータシステムに存在す
    る資源割当手段によってなされることを特徴とするコン
    ピュータシステム。
  21. 【請求項21】請求項20において、 前記資源割当手段は、前記オペレーティングシステムが
    有していることを特徴とするコンピュータシステム。
JP29180799A 1999-10-14 1999-10-14 キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム Pending JP2001109661A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP29180799A JP2001109661A (ja) 1999-10-14 1999-10-14 キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム
US09/688,360 US7000072B1 (en) 1999-10-14 2000-10-12 Cache memory allocation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29180799A JP2001109661A (ja) 1999-10-14 1999-10-14 キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム

Publications (1)

Publication Number Publication Date
JP2001109661A true JP2001109661A (ja) 2001-04-20

Family

ID=17773684

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29180799A Pending JP2001109661A (ja) 1999-10-14 1999-10-14 キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム

Country Status (2)

Country Link
US (1) US7000072B1 (ja)
JP (1) JP2001109661A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418567B2 (en) 2004-11-30 2008-08-26 International Business Machines Corporation Cache for an enterprise software system
JP2010524087A (ja) * 2007-04-09 2010-07-15 インテル コーポレイション 電力/パフォーマンスのサービス品質のための優先度に基づくスロットリング
WO2012029149A1 (ja) * 2010-09-01 2012-03-08 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US9535845B2 (en) 2012-10-19 2017-01-03 Renesas Electronics Corporation Cache control device and cache control method

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493418B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Generic method for resource monitoring configuration in provisioning systems
US20050182902A1 (en) * 2004-02-12 2005-08-18 Shuji Miyasaka Signal processing apparatus
US7581064B1 (en) * 2006-04-24 2009-08-25 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP2008257478A (ja) * 2007-04-04 2008-10-23 Internatl Business Mach Corp <Ibm> 検証対象文字列の格納位置出力装置、方法、及びコンピュータ・プログラム
US8239634B2 (en) * 2007-06-05 2012-08-07 Nec Corporation Input/output control based on information specifying input/output issuing source and input/output priority
US8274520B2 (en) * 2007-06-08 2012-09-25 Apple Inc. Facilitating caching in an image-processing system
US9176779B2 (en) * 2008-07-10 2015-11-03 Juniper Networks, Inc. Data access in distributed systems
US8131970B2 (en) * 2009-04-21 2012-03-06 Empire Technology Development Llc Compiler based cache allocation
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US9244939B2 (en) * 2013-06-27 2016-01-26 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Managing I/O operations in a shared file system
US10331583B2 (en) * 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
WO2016097812A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US20220035549A1 (en) * 2020-07-28 2022-02-03 International Business Machines Corporation Trace data protection
CN111984197B (zh) * 2020-08-24 2023-12-15 许昌学院 计算机缓存分配方法
US11914521B1 (en) * 2021-08-31 2024-02-27 Apple Inc. Cache quota control

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119290A (en) 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
US4947319A (en) 1988-09-15 1990-08-07 International Business Machines Corporation Arbitral dynamic cache using processor storage
US5630097A (en) 1991-06-17 1997-05-13 Digital Equipment Corporation Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses
TW219986B (ja) 1991-06-17 1994-02-01 Digital Equipment Corp
US5581737A (en) * 1994-09-12 1996-12-03 International Business Machines Corporation Method and apparatus for expansion, contraction, and reapportionment of structured external storage structures
EP0752644A3 (en) 1995-07-07 2001-08-22 Sun Microsystems, Inc. Memory management unit incorporating prefetch control
US6115793A (en) * 1998-02-11 2000-09-05 Ati Technologies, Inc. Mapping logical cache indexes to physical cache indexes to reduce thrashing and increase cache size
US6408368B1 (en) * 1999-06-15 2002-06-18 Sun Microsystems, Inc. Operating system page placement to maximize cache data reuse
US6216199B1 (en) * 1999-08-04 2001-04-10 Lsi Logic Corporation Hardware mechanism for managing cache structures in a data storage system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418567B2 (en) 2004-11-30 2008-08-26 International Business Machines Corporation Cache for an enterprise software system
CN100485640C (zh) * 2004-11-30 2009-05-06 国际商业机器公司 用于企业软件系统的高速缓存
AU2005310983B2 (en) * 2004-11-30 2009-11-05 International Business Machines Corporation Cache for an enterprise software system
JP2010524087A (ja) * 2007-04-09 2010-07-15 インテル コーポレイション 電力/パフォーマンスのサービス品質のための優先度に基づくスロットリング
US8799902B2 (en) 2007-04-09 2014-08-05 Intel Corporation Priority based throttling for power/performance quality of service
WO2012029149A1 (ja) * 2010-09-01 2012-03-08 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
JP5354108B2 (ja) * 2010-09-01 2013-11-27 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US9075721B2 (en) 2010-09-01 2015-07-07 Fujitsu Limited Computer readable recording medium having stored therein information processing program, information processing apparatus and information processing method
US9535845B2 (en) 2012-10-19 2017-01-03 Renesas Electronics Corporation Cache control device and cache control method

Also Published As

Publication number Publication date
US7000072B1 (en) 2006-02-14

Similar Documents

Publication Publication Date Title
JP2001109661A (ja) キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム
JP4566737B2 (ja) メモリ領域ベースのプリフェッチング
US7577790B2 (en) Caching of dynamic arrays
US6505283B1 (en) Efficient memory allocator utilizing a dual free-list structure
US6430656B1 (en) Cache and management method using combined software and hardware congruence class selectors
US7058945B2 (en) Information processing method and recording medium therefor capable of enhancing the executing speed of a parallel processing computing device
US20040158828A1 (en) Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time
US6421761B1 (en) Partitioned cache and management method for selectively caching data by type
JP3810735B2 (ja) スケーラブル・メモリの効率的なスレッドローカル・オブジェクト割り当て方法
US7761873B2 (en) User-space resource management
JP2006323844A (ja) ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法
US8185693B2 (en) Cache-line aware collection for runtime environments
JP2008003882A (ja) コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体
US7353337B2 (en) Reducing cache effects of certain code pieces
JP2000029691A (ja) デ―タ処理装置
JP2004110240A (ja) キャッシュメモリ装置
CN113535392A (zh) 基于cma实现支持大内存连续分配的内存管理方法及系统
JPH11143774A (ja) キャッシュ制御機構
US20030221067A1 (en) Staggering call stack offsets for multiple duplicate control threads
JPS6032220B2 (ja) 情報処理装置
JP3013742B2 (ja) キャッシュメモリ管理方式
JPH07152652A (ja) 仮想記憶制御方法及び情報処理装置
JP2924708B2 (ja) 情報処理装置
Lopriore Stack cache memory for block-structured programs
JPH0754482B2 (ja) 計算機システム