JP2017167582A - 演算処理装置、情報処理装置、及び演算処理装置の制御方法 - Google Patents

演算処理装置、情報処理装置、及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP2017167582A
JP2017167582A JP2016049147A JP2016049147A JP2017167582A JP 2017167582 A JP2017167582 A JP 2017167582A JP 2016049147 A JP2016049147 A JP 2016049147A JP 2016049147 A JP2016049147 A JP 2016049147A JP 2017167582 A JP2017167582 A JP 2017167582A
Authority
JP
Japan
Prior art keywords
memory
access
data
address
main memory
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
JP2016049147A
Other languages
English (en)
Inventor
誠之 岡田
Masayuki Okada
誠之 岡田
仁 ▲高▼橋
仁 ▲高▼橋
Hitoshi Takahashi
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 JP2016049147A priority Critical patent/JP2017167582A/ja
Priority to US15/444,964 priority patent/US20170262382A1/en
Publication of JP2017167582A publication Critical patent/JP2017167582A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/604Details relating to cache allocation

Landscapes

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

Abstract

【課題】プログラムの不具合等によるメモリ破壊を低減する。【解決手段】本演算処理装置は、メインメモリに格納されたデータを一時的に登録するキャッシュメモリと、メインメモリに格納されたデータをキャッシュメモリに登録する時に、メインメモリ上で前記登録されるデータが格納されている領域に対応して設定されている識別情報を取得し、前記登録されるデータと共にキャッシュメモリに登録する登録回路と、メインメモリにアクセスする命令を実行するときにアクセス先のアドレスともに指定されるアクセス情報とアクセス対象のデータと共にキャッシュメモリに登録されている識別情報とを比較する比較回路と、比較の結果に応じて、メインメモリにアクセスする命令の実行を停止させるアクセス制限回路と、を備える。【選択図】図13

Description

本発明は、演算処理装置、情報処理装置、及び演算処理装置の制御方法に関する。
演算処理装置であるプロセッサは、ソフトウェアに含まれる命令をフェッチしデコードし実行する。命令には、ロード命令やストア命令などメモリにアクセスするメモリアクセス命令が含まれる。ところで、プロセッサを制御するオペレーティングシステムは、他のプログラム等の要求に従ってメモリの領域割当関数を実行することにより、あるメモリ領域を確保することができる。メモリの領域割当関数により確保したメモリ領域に対するメモリアクセス命令を実行する場合に、プログラムに不具合や誤ったコードが存在した結果、プログラムを実行するプロセッサが正しいアドレスのメモリ領域外のメモリにアクセスする場合がある。また、上記プロセッサが正しいアドレスのメモリ領域のデータを不正なデータに書き換えてしまう場合がある。以上のようなプログラムのバグや誤ったコードにより、メモリ破壊が発生する。また、上記プロセッサが正しいアドレスのメモリ領域外のメモリのデータを参照することで、不具合が生じることがある。
米国特許出願公開第2013/0013843号明細書 特開2015−60499号公報 特開昭57−6952号公報 特開平2−010448号公報
本発明の1つの側面は、プログラムの不具合等によるメモリ破壊を低減することを目的とする。
本発明の1つの側面は、メインメモリにアクセスする演算処理装置によって例示される。すなわち、本演算処理装置は、メインメモリに格納されたデータを一時的に登録するキャッシュメモリを備える。また、本演算処理装置は、前記メインメモリに格納されたデータを前記キャッシュメモリに登録する時に、前記メインメモリ上で前記登録されるデータが格納されている領域に対応して設定されている識別情報を取得し、前記登録されるデータと共に前記キャッシュメモリに登録する登録回路を備える。また、本演算処理装置は、前記メインメモリにアクセスする命令を実行するときにアクセス先のアドレスともに指定されるアクセス情報とアクセス対象のデータと共に前記キャッシュメモリに登録されている識別情報とを比較する比較回路を備える。また、本演算処理装置は、前記比較の結果に応じて、前記メインメモリにアクセスする命令の実行を停止させるアクセス制限回路を備える。
1つの側面によれば、プログラムの不具合等によるメモリ破壊を低減することができる。
メモリ領域の確保を要求するユーザープログラムとOperating Systemの動作を例示する図である。 メモリ破壊の第1の例を示す図である。 メモリ破壊の第2の例を示す図である。 実施形態1におけるプロセッサとメインメモリとを含む情報処理装置を例示する図である。 実施形態1におけるメモリ保護に関連するハードウェアの関係を例示する構成図である。 実施形態1におけるメモリ保護の手順を例示するフローチャートである。 実施形態1におけるメモリ領域割当処理を例示するフローチャートである。 メモリの領域割当関数によるシステムコールに対して、OSがユーザープログラムに返す先頭アドレスのフォーマットを例示する図である。 メモリの割当領域とそれぞれの管理領域識別キー値及び先頭アドレスを例示する図である。 メモリキーテーブルの1エントリのフォーマットである。 実施形態1におけるプロセッサの構成を例示する図である。 TLBユニットの構成を示す図である。 実施形態1におけるL1データTAG、L1データキャッシュ、及びキーチェックユニットの関係を例示する図である。 TAG部18Aの1エントリのフォーマットを例示する図である。 キーテーブルアドレス生成回路の詳細を例示する図である。 キーチェック回路153の詳細図である。 キーチェック回路153の動作真理値表の例である。 実施形態1のプロセッサによる処理を示すフローチャートである。 実施形態1のプロセッサによる処理を示すフローチャートである。 実施形態1におけるTLBユニット14の構成を例示する図である。 実施形態2におけるプロセスの関係を例示する図である。 実施形態2の仮想アドレスの構成を例示する図である。 実施形態2におけるメモリキーの構成を例示する図である。 実施形態2のTAG部の1エントリのフォーマットを例示する図である。 実施形態2のキーチェック回路の動作真理値表を例示する図である。 実施形態2におけるL1データTAG、L1データキャッシュ、及びキーチェックユニットの構成を例示する図である。 実施形態2のキーチェック回路の構成を例示する図である。 実施形態2の情報処理装置で実行されるOSの処理を例示するフローチャートである。
以下、図面を参照して一実施形態に係る演算処理装置について説明する。
[比較例]
図1は、メモリ領域の確保を要求するときのユーザープログラムとOperating
System(OS)の動作を例示する図である。ユーザープログラムは、メモリの領域割当関数mallocにより、サイズ「sizeof(int)」の領域を16個含むメモリ領域の確保(または割当)をOSに要求する(S1)。これに応答して、OSは、メモリ領域を確保し(S2)、確保したメモリ領域の先頭の仮想アドレスをアドレスポインタ pointer1として返す(S3)。これにより、メモリ領域内には、アドレスポインタ pointer1によって示される位置を先頭仮想アドレスとするメモリ領域が割り当てられる。
図2は、メモリ破壊の第1の例を示す図である。図2には、メモリ破壊を発生させるユ
ーザープログラムと主記憶装置としてのメインメモリ30が示されている。ユーザープログラムにも、メモリの領域割当関数mallocが示され、この領域割当関数によりメモリ内にアドレスポインタ pointer1のアドレスを先頭とするサイズ「sizeof(int)」の領域を16個有するメモリ領域2が割り当てられている。
図2の例では、ユーザープログラム内のfor文では、i=0からi=16までのアドレスpointer[i]のメモリ領域に数値「0」を書き込むことが記述されている。その結果、プログラムを実行するプロセッサは、for文の実行により割り当てられたメモリ領域2の範囲外のpointer1[16]に数値「0」を書き込んでしまい(S5)、領域3のデータを破壊してしまうことになる。
図3は、メモリ破壊の第2の例を示す図である。図3には、メモリ破壊を発生させるユーザープログラムとメインメモリ30が示されている。ユーザープログラムには、メモリの領域割当関数mallocと、それに続く正しいコードと誤ったコードが例示されている。
(正しいコード)
*pointer2 = 10;
pointer2[1] = 1;
(誤ったコード)
pointer2 = 10;
pointer2[1] = 1;
メモリの領域割当関数mallocにより、OSが図1と同様の動作を実行して、メモリ内にメモリ領域4を確保して、その先頭の仮想アドレスをアドレスポインタpointer2として返す。一方で、正しいコードは、アドレスポインタpointer2のアドレスに対応するメモリ領域に数値「10」を書き込み、そのアドレスに続くアドレスのメモリ領域に数値「1」を書き込む命令である。
上記正しいコードに対して、誤ったコードでは、プロセッサは、アドレスポインタpointer2に数値「10」を書き込むため、OSから返された先頭の仮想アドレス自体が変更されてしまう(S6)。そして、S6の処理に続くpointer2[1]=1のコードでメモリ領域4とは異なるメモリ領域2内に数値「1」が書き込まれる(S7)。以上の結果、メモリ領域2のデータが破壊される。メモリのデータが破壊されることをメモリ破壊と呼ぶ。
ストア命令のように、プロセッサがデータをメモリ領域内に書き込む場合に加えて、ロード命令のようにプロセッサがデータをメモリ領域からデータレジスタ等に読み出す場合も、問題が生じ得る。つまり、プロセッサが割り当てられたメモリ領域外のデータを読み出すことは、バグに結びつくことがあり、一種のメモリ破壊とみなすことができる。
メモリ破壊の発生を検出する方法としては、例えば、メモリアクセス命令であるロード、ストア命令実行時にトラップを発生させることが考えられる。例えば、プロセッサにデバッガ等のプログラムを実行させ、発生したトラップに応答させればよい。そして、プロセッサにロード、ストア命令でアクセスしようとするアドレスが事前に確保されたメモリ領域のアドレス範囲内か否かをチェックさせればよい。しかし、デバッガ等によるチェックでは、ロード、ストア命令が実行される度にトラップが発生するのでオーバヘッドがきわめて大きくなる。
また、例えば、プロセッサがメモリ割当のときに、メモリに割当られた領域のアドレス範囲を示すアドレス範囲情報をアドレスレンジテーブルに登録しておく方法も提案されて
いる。この方法では、メモリ割当領域に対するメモリアクセス命令の実行に応答して、アドレスレンジテーブルを参照するハードウェアが用いられる。このハードウェアは、メモリアクセス命令のアクセス先アドレスがアドレスレンジテーブルに登録されたアドレス範囲情報で示される範囲内にあるか否かの判定処理を行う。しかし、アドレスレンジテーブルを高速に参照するハードウェアの数、例えば、アドレスレンジテーブルを格納するレジスタ数には制限があり、この制限を超える負荷が生じると、命令実行性能が低下する。
また、例えば、メモリ割当が実行されるメモリのバンクに対して、予備バンクを対応づけておき、予備バンクを用いて、メモリ割当がされた領域へのアクセスが正しいか否かを判定することも考えられる。しかし、この方法では、予備バンクが用意されていることが前提であり、コストが高くなる。また、この方法では、プログラムの実行に従ってアクセスされるメモリと、予備バンクの両方にアクセスが発生し、プロセッサとメモリとの間の通信のための帯域が使用されることになる。
さらに、近年のプロセッサは複数階層のキャッシュメモリを装備している。そこで、例えば、予備バンクをキャッシュに記憶することも考えられる。しかし、プログラムの実行に従ってアクセスされるメモリのデータと、予備バンクのデータをそのままキャッシュに記憶すると、キャッシュの利用効率、あるいはヒット率が低下する。そこで、以下の実施形態では、専用のハードウェアの数の制限、メモリの容量の制限が生じにくく、かつ、プロセッサあるいはキャッシュの利用効率の低下を抑制して、不正なメモリアクセスを検出できる演算処理装置について説明する。
[実施形態1]
以下、図4から図19の図面を参照して、実施形態1に係る演算処理装置、演算処理措置を含む情報処理装置、及び演算処理装置の制御方法について説明する。図4は、実施形態1における演算処理装置としてのCPU10と主記憶装置としてのメインメモリ30とを含む情報処理装置を例示する図である。図4では、CPU(Central Processing Unit)10とメインメモリ30とがバスBUSを介して接続されている。CPU10は、プロセッサとも呼ばれる。CPU10は、命令フェッチとデコードなどを行う命令制御部11と、デコード結果に応じた演算を行う演算部12と、一次(L1)キャッシュ制御部13と二次(L2)キャッシュ制御部20AとL2キャッシュRAM部20Bとを有する。L1キャッシュ制御部13は、メモリの仮想アドレスを物理アドレスに変換するTLB(Translation Look aside Buffer)ユニット14と、L1命令TAG16と、L1命令キャッシュ17と、L1データTAG18と、L1データキャッシュ19とを有する。
さらに、L1キャッシュ制御部13は、ロード、ストア命令などのメモリアクセス命令のアクセス先アドレスがアクセス可能であるか否かを判定するキーチェックユニット15を有する。ここで、メモリアクセス命令のアクセス先アドレスは、例えば、メモリの領域割当関数で割り当てられたメモリ割当領域のアドレスである。実施形態1では、メモリアクセス命令のアクセス先アドレスがキーチェックユニット15でアクセス不可と判定された場合、CPU10は、アクセス不可と判定されたアクセス先アドレスにアクセスする命令がメモリ破壊の原因となる命令であると判断する。キーチェックユニット15は、「メインメモリにアクセスする命令を実行するときにアクセス先のアドレスともに指定されるアクセス情報とアクセス対象のデータと共に前記キャッシュメモリに登録されている識別情報とを比較する比較回路」の一例である。以下、キーチェックユニット15によって例示されるメモリ破壊の原因となる命令を検出する構成をキーチェック機構と呼ぶ。また、キーチェック機構による処理をメモリ破壊検出処理という。
メインメモリ30内には、OS31と、ユーザープログラム32と、ユーザープログラ
ム32からの要求に従ってメモリ領域を割り当てるユーザーデータ領域33と、が展開されている。命令制御部11は、L1命令キャッシュ17、L2キャッシュ制御部20A及びL2キャッシュRAM部20Bを介して、メインメモリ30に実行可能に展開されたOS31及びユーザープログラム32の命令列を取得し、演算部12に実行させる。L1データTAG18とL1データキャッシュ19がメインメモリに格納されたデータを一時的に登録するキャッシュメモリの一例である。命令制御部11と演算部12は、実行部の一例である。
さらに、メインメモリ30内には、アドレス変換テーブル34と、メモリキーテーブル35とが格納されている。アドレス変換テーブル34には、メモリアクセス命令のオペランドに指定される仮想アドレス(Virtual Address、VAと称する)と、メインメモリ30の物理アドレス(Physical Address、PAと称する)の対応が格納されている。メモリキーテーブル35のそれぞれのエントリは、メモリの領域割当関数により割り当てられたメモリ割当領域内の固定長ブロックのそれぞれに対するメモリキーを格納する。
そして、アドレス変換テーブル34の一部のエレメントが、L1キャッシュ制御部13内のTLBユニット14内のTLBに一時的にキャッシュされる。アドレス変換処理では、まずTLBが参照されヒットすれば変換された物理アドレスが出力される。TLBがヒットしなければメインメモリ30内のアドレス変換テーブル34が参照されて、仮想アドレスが物理アドレスに変換される。
図5は、実施形態1におけるメモリ保護に関連するハードウェアの関係を例示する構成図である。また、図6は実施形態1におけるメモリ保護の手順を例示するフローチャートである。
OS31は、メインメモリ30中のユーザーデータ領域33内の固定長のデータブロックに対して、1エントリのメモリキー(MKEY)を割り当てる。メモリキーはメインメモリ30のメモリキーテーブル35に配置される(S11)。
メモリアクセス命令の実行に伴い、メモリアクセス命令のオペランドで示されるアドレスに対応したメインメモリ30の固定長のデータブロックはL1データキャッシュ19にキャッシュされる(S12)。さらに同データブロックに対応するメモリキーも、当該メモリキーデータを含む固定長のデータブロック単位にL1データキャッシュ19にキャッシュされる(S13)。L1データキャッシュ19の制御回路(図13のMKEYライト制御ユニット36)は、キャッシュされたメモリキーデータをさらにL1データTAG18の専用領域にコピーする(S14)。
メモリアクセス命令が実行される時、メモリアクセス命令のオペランドで示されるアドレスに対応したキャッシュデータがL1データキャッシュ19から読み出されると共に、対応するメモリキーデータがL1データTAG18の専用領域から読み出される。このとき、命令制御部11から出力される仮想アドレスVAに含まれるアクセスキーと、L1データTAG18の専用領域から読み出されたメモリキーとの比較がキーチェックユニット15で行われる(S15)。以上の処理によってメモリアクセス命令で示されたアドレスで指定されるメインメモリ30の領域がアクセス許可されているか、されていないかが判定される。
以下、OS31のメモリ領域割当処理について説明する。図7は、実施形態1におけるメモリ領域割当処理を示すフローチャートである。CPU10は、メインメモリ30に実行可能に展開されたOS31及びユーザープログラム32を実行し、図7の処理を実行す
る。以下、実施形態1では、CPU10がプログラムに従って処理を実行する場合に、「プログラムが実行する」と表現することがある。図1で説明したとおり、ユーザープログラム32内のメモリの領域割当関数mallocが実行されると、OS31が次のようにメモリ領域割当処理を実行する。図7に示されるように、OS31は、まず、malloc関数からシステムコールを受信する(S21)。システムコールに応答して、OS31は、ヒープ領域と呼ばれるOS31の仮想メモリ空間にmalloc関数が指定した容量のメモリ領域(以下、メモリ割当領域)を確保する(S22)。さらに、OS31は、メモリの領域割当関数mallocが割り当てたメモリ割当領域を識別する管理領域識別キー値を生成する(S23)。この管理領域識別キー値は、メモリ破壊を検知する対象のメモリ割当領域を識別する情報であり、その生成は、例えば、ランダムな数値を発生して割り当てるなどにより行われる。但し、ただし、管理領域識別キー値は、メモリの領域割当関数mallocによって割り当てられたメモリ領域を識別することが可能な程度に重複が抑止できればどのような数値でもよい。例えば、管理領域識別キー値は、通し番号であってもよい。なお、実施形態1のCPU10では、管理領域識別キー値のALL0値(0x00)及びALL1値(0xFF)は、特別な意味を持つ。そこで、生成する管理領域識別キー値は、ALL0値及びALL1値を除いて割り当てられる。
そして、OS31は、メインメモリ30内のメモリキーテーブル35に、確保したメモリ割当領域の管理領域識別キー値を記憶する(S24)。その後、OS31は、ユーザープログラム32に、管理領域識別キー値と先頭アドレスを返す(S25)。なお、ここでユーザープログラム32に渡すキー値をアクセスキーと呼ばれる。これで、ユーザープログラム32は、アクセスキーと、ユーザープログラム32からのメモリ割当要求により確保されたメモリ割当領域を指定する先頭アドレスを取得する。一方、メモリキーテーブル35に記憶された管理領域識別キー値をメモリキーと呼ばれる。CPU10が実行するユーザープログラム32は第1のプロセスの一例である。CPU10が実行するOS31は、第2のプロセスの一例である。S21からS24の処理は、「第1のプロセスからの要求に従って前記メインメモリ上で領域を割り当てる処理を実行するときに前記割り当てられる領域を識別する識別情報を生成して前記メインメモリの所定領域に格納する」ことの一例である。S25の処理は、「割り当てられた領域のアドレスと共に前記生成された識別情報を前記割り当てられた領域へアクセスするときに指定されるアクセス情報として前記第1のプロセスに引き渡す」ことの一例である。
図8は、メモリの領域割当関数によるシステムコールに対して、OS31がユーザープログラム32に返す先頭アドレスのフォーマットを例示する図である。図8では、メモリ破壊検出のためのキーチェック機構が有効化される場合のアドレスフォーマットF1と、キーチェック機構が無効化される場合のアドレスフォーマットF2とが例示されている。キーチェック機構が有効化される場合は、アドレスフォーマットF1に例示されるように、例えば64ビットのアドレス[63:0]の最上位の8ビット[63:56]にアクセスキー値が埋め込まれる。つまり、OS31は、8ビットのアクセスキー値を先頭アドレス[63:0]の最上位8ビット[63:56]に埋め込んで、ユーザープログラム32に返す。
一方、キーチェック機構が無効化される場合は、アドレスフォーマットF2に示されるように、メモリの領域割当関数によるシステムコールに対して、OS31は、64ビットの先頭アドレスを返す。従って、最上位の8ビットも含めて64ビット全てがアドレス情報になる。
このように、キーチェック機構が有効化される場合に、OS31が64ビットの先頭アドレスの一部のビットを利用してアクセスキー値をユーザープログラム32に返すことで、従来の回路構成の変更箇所を限定してキーチェック機構が実現できる。ただし、先頭ア
ドレスの最上位の8ビットのアドレス情報が失われるので、メモリ割当領域のアドレス範囲は、56ビット[55:0]となる。
なお、アドレス変換ユニットとして作用するTLB14は、仮想アドレス内のキーチェックに利用する8ビットのアクセスキー値をTLBのヒットチェックに際してタグ比較対象から除外する。8ビットのアクセスキー値は、アドレスではなく、メモリ割当関数によるメモリ割当時に設定される値であり、TLB14の処理対象から除外することが必要であるからである。
図9は、メモリのメモリ割当領域とそれぞれの管理領域識別キー値(メモリキー)及び先頭アドレスを例示する図である。また、図10はメモリキーテーブル35の1エントリのフォーマットである。図9の例では、メインメモリ30に対応するOS31の仮想メモリ空間、例えばヒープ領域内に3つのメモリ割当領域MA1〜MA3が確保されている。管理領域識別キー値(例えば、1から3)は、メモリ割当領域MA1〜MA3に対応するメモリキーテーブル35のエントリに格納される。そして、それぞれのメモリ割当領域MA1〜MA3を識別する管理領域識別キー値=1から3と、それぞれのメモリ割当領域の先頭アドレスVA1からVA3とが、OS31によってユーザープログラム32に返される。メモリキーテーブル35は、メインメモリの固定長のブロック列に対応するメインメモリ上の要素列の一例である。
なお、実施形態1では、OS31がヒープ領域を確保する最低単位は、実施形態1のキャッシュラインサイズと同一の128バイトである。ここで、キャッシュラインサイズは、メインメモリ30のデータがキャッシュメモリに登録されるときのデータの固定長ブロックサイズである。そのため、実施形態1では、ヒープ領域に確保されるメモリ割当領域のバウンダリは、キャッシュラインサイズと同一のアドレスバウンダリに揃う。
従って、実施形態1では、もし、ユーザープログラム32がmalloc関数で128バイト以下、または128バイト以上であって128で割り切れないバイト数の領域を要求した場合、OS31が確保する領域はアドレスバウンダリが揃った128バイト単位に切り上げられる。
以上のように、実施形態1では、メモリ割当領域毎に、一つの管理領域識別キー値(メモリキー)が割り当てられるが、一方で、メモリ割当領域には128バイト毎にメモリキーテーブル35内の1エントリが割り当てられる。従って、図9のMA3には384バイト、すなわち128バイトのブロックが3組割り当てられているので、メモリキーテーブルでは、3つのエントリ(K3A〜K3C)がMA3に割り当てられる。この時、3つのエントリ(K3A〜K3C)には全て同一の管理領域識別キー値(図9では0x03)がセットされる。
メモリの領域割当関数によって確保されるメモリ割当領域には、必ずしもメモリ破壊検出処理の対象としないものもある。OS31は、メモリ破壊検出処理の対象としないメモリ割当領域には、管理領域識別キー値としてメモリ破壊検出対象外を示すキー値=ALL0(2進数ですべて0の値、0x00)を発行するようにしてもよい。そして、OS31は、管理領域識別キー値がALL0の場合は、メモリ割当領域に対応するメモリキーテーブル35中のメモリキー値を0x00にセットする。メモリキー値が0x00の場合のキーチェックユニット15の動作については図16の説明において具体的に後述する。
さらに、ユーザーデータ領域33のうち、メモリの領域割当関数によって確保されていないメモリ領域に対しては、すべてのユーザープログラム32からのアクセスが禁止される。そのような場合は、OS31は、管理領域識別キー値としてメモリアクセス対象外を
示すキー値=ALL1(2進数ですべて1の値、0xFF)を発行するようにしてもよい。そして、OS31は、管理領域識別キー値がALL1の場合は、メモリ割当領域に対応するメモリキーテーブル35中のメモリキー値を0xFFにセットする。キー値が0xFFの場合のキーチェックユニット15の動作については、図16の説明において具体的に後述する。
図11は、実施形態1におけるCPU10の構成を例示する図である。以下、図4の構成図と共に説明する。図11にはCPU10の一部の構成が例示されていて、命令の実行完了や実行順などを制御する命令シーケンス制御部11Aと、命令パイプライン40と、一次キャッシュパイプライン50とが例示されている。図中、縦方向の一点鎖線は、パイプラインステージの境界を例示する。命令シーケンス制御部11Aと命令パイプライン40(及び図4の演算部12)は、メインメモリ30に格納された命令列を含むOS31等のシステムプログラム、あるいはユーザープログラム32を実行する。
命令パイプライン40は、命令をL1命令キャッシュ17から取得する命令フェッチ回路11Bと、命令をデコードするデコーダ11Cと、実行アドレス生成器(EAG:Effective Address Generator)12Aとを有する。命令シーケンス制御部11Aと命令フェッチ回路11Bとデコーダ11Cとが、図4の命令制御部11の一部の構成に対応する。また、実行アドレス生成器12Aは、図4の演算部12の一部の構成に対応する。
一方、一次キャッシュパイプライン50は、図4のL1キャッシュ制御部13の一部の構成に対応する。一次キャッシュパイプライン50は、実行アドレス生成器12Aが生成する仮想アドレスVAを物理アドレスにアドレス変換を実行する。アドレス変換は、図11のタグ付きTLBのTAG部14A、データ部14Bと、タグ値の一致を検出するTAG比較器14Cとによって実行される。タグ付きTLBのTAG部14A、データ部14BとTAG比較器14Cが、図4のTLBユニット14に対応する。
このTLBユニット14は、実行アドレス生成器12Aが生成する仮想アドレスを物理アドレスに変換する。タグがヒットすれば、TAG比較器14Cは、データ部14Bからの物理アドレスPAの出力を有効とする。一方、タグがヒットしなければ、TAG比較器14Cは、タグミスヒットをトラップ検出部51に出力する。図11の例では、TLBユニット14は、2パイプラインステージで制御される。なお、図11のパイプライン処理では、のTAG部14Aでのタグ値の検索と、データ部14Bでの物理アドレスPAの検索が並列で実行される。そして、TAG比較器14Cでの比較の結果、タグミスヒットがトラップ検出部51に出力されない限り、データ部14Bから出力される物理アドレスPAがそのまま後段の処理で使用されることになる。
また、一次キャッシュパイプライン50は実行アドレス生成器12Aが生成する仮想アドレスVAから変換された物理アドレスPAで示されるメモリデータが一次キャッシュに登録されている事を検出する。そのため、一次キャッシュパイプライン50は、L1データTAG18のTAG部18Aと、タグ値の一致を検出するTAG比較器18Bを有する。L1データTAG18のTAG部18Aを単にTAG部18Aという。TAG部18AとTAG比較器18Bが図4のL1データTAG18に対応する。従って、TAG部18Aは、図4のL1データTAG18のTAGを記憶する記憶部に相当する。なお、TAG部18Aの制御回路は、仮想アドレスVAの一部(物理アドレスPAの下位アドレスと共通する下位アドレス)によって、TAG部18Aのセットを特定し、セット内のタグ(物理アドレスPAの上位アドレス)を検索する。そして、TAG部18Aは検索された物理アドレスPAの上位アドレスと、下位アドレスとを組み合わせてTAG比較器18Bに出力する。
このTAG比較器18Bが、キャッシュヒットすればキャッシュデータ応答を指示し、キャッシュヒットしなければL2要求制御部52に対してL2要求発行を指示する。なお、キャッシュデータ応答は、図4に例示するように、L1データTAG18からL1データキャッシュ19に出力される制御信号である。また、図11の例では、L1データTAG18は、2パイプラインステージで制御される。L1データTAG18のパイプラインでは、TAG部18Aによる物理アドレスPAのTAGの検索と、タグ付きTLBのTAG部14Aによる仮想アドレスVAのTAGの検索及びデータ部14Bによる物理アドレスPAの検索は並列で実行される。そして、TAG比較器18BからL2要求が発行されない限り、TAG18部Aから出力される物理アドレスが後段の処理で使用され、キャッシュデータ応答がL1データキャッシュ19に出力される。
一次キャッシュパイプライン50は、図4のL1データキャッシュ19から読み出されるメモリデータがアクセス可能であるか否かを判定するためのアクセスキーレジスタ152とキーチェック回路153を有する。アクセスキーレジスタ152は実行アドレス生成器12Aが生成する仮想アドレスに含まれるアクセスキーを記憶し、キーチェック回路153に出力する。キーチェック回路153はアクセスキーレジスタ152から出力されるアクセスキーと、TAG部18Aから出力されるメモリキーを比較しアクセス許可・不許可を判定し、トラップ検出部51、L2要求制御部52に対して通知する。
トラップ検出部51は、TAG比較器14Cからのタグミスヒットと、TAG比較器18Bからのキャッシュミスヒットと、キーチェックユニット15Bからのアクセス不許可信号のいずれかを受信すると、適宜、それらに対応するトラップ・再実行通知を命令シーケンス制御部11Aに出力する。トラップ検出部51は、トラップ検出/再実行検出器と呼ぶこともできる。命令シーケンス制御部11Aは、このトラップ・再実行通知に応答して、命令を再実行するか、または、OS31のトラップハンドラを呼び出して、それぞれに対応する処理を実行させる。トラップ検出部51は、比較の結果に応じて、前記メインメモリにアクセスする命令の実行を停止させるアクセス制限回路の一例である。
図12は、TLBユニット14の構成を示す図である。TLBユニット14は、TLB(Table Look a side Buffer)のTAG部14A及びデータ部14Bを有するTLB本体141と、TAG比較器14Cとを有する。命令制御部11または演算部12から、アクセスアドレスレジスタ143に、メモリアクセス命令のアクセス先の仮想アドレスVAがロードされ、コンテキストレジスタ144に、TLBの属性データがロードされる。ここで、属性データとは、例えば、OS31がプロセスの切り替えを行うときに用いられるコンテキストを識別する情報である。
一方、TLBユニット14のTAG部14A内には仮想アドレスVAとTLBの属性データであるコンテキストctxtとが記憶され、TLBユニット14のデータ部14B内には仮想アドレスVAに対応する物理アドレスPAが記憶されている。従って、メモリアクセス命令のアクセス先の仮想アドレスVAと一致するTAG部14A内の仮想アドレスVAに対応するデータ部14B内の物理アドレスが、変換後のアドレスとして出力される。TLBユニット14における比較処理は以下の通りである。
TAG比較器14Cは、アクセスアドレスレジスタ143及びコンテキストレジスタ144にロードされたメモリアクセス命令に対応する属性データとの組と、TAG部14A内に記憶されている仮想アドレスVA及びコンテキストctxtの組と、を比較する。TAG比較器14Cは、比較器146と、比較器147と、2つの比較器146、147の出力のANDを演算するANDゲート148とを有する。比較器146は、アクセスアドレスレジスタ143内のアクセス先の仮想アドレスVAとTAG部14A内の仮想アドレ
スとを比較し、一致する場合に仮想アドレス一致出力va_mchを出力する。比較器147は、コンテキストレジスタ144内の属性データとTAG部14A内のコンテキストctxtとを比較し、一致する場合にコンテキスト一致出力ctxt_mchを出力する。TAG部14Aを順番に検索しながら、2つの比較器146、147が共に一致していることを検出した時のデータ部14Bの物理アドレスPAが、ANDゲート14Dを介してアドレス変換後の物理アドレスPAとして出力される。
TLBユニット14のTAG部14A内のタグがヒットしない場合は、命令制御部11は、メインメモリ30内のアドレス変換テーブル34からエントリをフェッチしてTLB本体141に登録する。すなわち、命令制御部11は、このTLB本体141の要素の更新時に、TLB登録要求とTLBエントリの更新データ(VAとPA)とをTLBユニット14に出力する。これにより、TLBユニット14のTAG部14A及びデータ部14Bの要素が更新され、一次キャッシュパイプライン50が再度実行され、再度TLBユニット14での検索が行われる。
図13は、実施形態1におけるL1データTAG18、L1データキャッシュ19、及びキーチェックユニット15の関係を例示する図である。また、図14はL1データTAG18のTAG部18Aの1エントリのフォーマットを例示する図である。L1データTAG 18は、TAG情報を記憶するTAG部18Aと、TAG部18Aから読み出されるPA情報(例えば、物理アドレスPAの上位ビット)を使用してL1データキャッシュ19のヒットを検査するTAG比較器18Bを有する。L1データTAG 18は、図4のTLB14において仮想アドレスVAがヒットして、仮想アドレスVAが物理アドレスPAに変換された時、物理アドレスPAで示されるメモリデータがL1データキャッシュ19に登録されているか否かを検査する。L1データTAG 18のTAG部18Aには図14に示される通り、PAIDバリッドビット(PAID―VLD)、PAID部、メモリキーバリッドビット(MKEY−VLD)、メモリキー値が記憶される。
図11で説明したように、命令制御部11によって、ロード命令、ストア命令等のメモリアクセス命令が実行される時、TLBユニット14でのアドレス変換動作と並行して、TAG部18Aがアクセスされる。この時、命令制御部11からの仮想アドレス(下位ビット)が出力され、アドレス選択回路38で命令制御部11からアドレスが選択されTAG部18Aと、L1データキャッシュ19が同時にアクセスされる。TAG部18Aから出力されるPAID−VLDが値1である時、TAG比較器18BによってTLBから出力されるPAとTAG部18Aから出力されるPAIDが比較される。比較の結果が一致している場合、L1データキャッシュヒットであるので、L1データキャッシュ19から読み出されたキャッシュデータが演算部12に応答される。
キーチェックユニット15は、TAG部18Aと並行して動作する。モードレジスタ151は,例えば1ビットを有し、有効(bit=1)の場合はキーチェック回路153の動作が有効化され、無効(bit=0)の場合には、キーチェック回路153の動作が無効化される。アクセスキーレジスタ152は、メモリアクセス時のアクセスキーを記憶するレジスタである。アクセスキーレジスタ152には、演算部12からアクセス先の仮想アドレスVA中のアクセスキー値(図8参照)がロードされる。
キーチェック回路153は、モードレジスタ151の値(有効、無効)、アクセスキーレジスタ152のアクセスキー値、及びTAG部18Aからのキャッシュヒット時のメモリキー値を受け取って実行中のメモリアクセスが許可されるか、許可されないかを検査する。アクセスキーレジスタ152には、演算部12の実行アドレス生成器12Aによって生成されたアクセスキーがロードされている。L1データTAG18は、実行アドレス生成器12Aからの仮想アドレスVA及びTLBユニット14からの物理アドレスPAに基
づいてTAG部18Aを検索し、物理アドレスPAがヒットすると、メモリキー値を出力する。キーチェックユニット15は、アクセスキーレジスタにロードされたアクセスキー値と、L1データTAG18ヒット時のメモリキー値とを比較し、キーチェック機構としての処理を実行する。キーチェック回路153の動作については、図16に従って後述する。
キーテーブルベースアドレスレジスタ154は、メモリキーテーブル35の先頭アドレスを保持するアドレスレジスタである。キーテーブルベースアドレスレジスタ154には、命令実行に先立ち予め演算部12から値がロードされる。キーテーブルアドレス生成回路155は、キーテーブルベースアドレスレジスタ154とTLBユニット14から出力される物理アドレスPAを元にキーテーブルアドレスを生成する。キーテーブルアドレス生成回路155の動作については、図15に従って具体的に後述する。キーテーブルベースアドレスレジスタ154は、メインメモリでの前記要素列の先頭アドレスを指定するアドレスレジスタの一例である。
また、モードレジスタ151がキーチェック機構の有効を示し、メモリキーバリッドビット(MKEY−VLD)が無効である場合、メモリキーを取得するため、L2要求生成回路156がL2キャッシュ制御部20Aに対してL2要求を発行する。なお、図13では省略されているが、モードレジスタ151がキーチェック有効であり、メモリキーバリッドビット(MKEY−VLD)が無効である場合、メモリキーを取得するためのL2要求発行前に、まず、L1データキャッシュ19にメモリキーがキャッシュされているか否かが判定される。そして、メモリキーがキャッシュされていない場合に、L2要求生成回路156がL2キャッシュ制御部20Aに対してL2要求を発行する。
L2キャッシュ制御部20Aはこの要求に対してL2キャッシュRAM部20Bからデータを読み出してL2データ応答信号201によりL1データキャッシュ19にキャッシュデータを応答する。この応答されたキャッシュデータはライトデータ選択回路37で選択されてL1データキャッシュ19に書き込まれる。なお、L2要求信号の発行、及び、L2データ応答信号201の応答、ライトデータ選択回路37によるL1データキャッシュへのデータ書き込み動作は、通常のL1キャッシュメモリ登録処理と同様である(図18AのS37、及び図18BのS45参照)。
MKEYライト制御ユニット36は、TAG部18AのMKEY−VLDフィールド、及びMKEYフィールドに対する書き込みを制御する回路である。MKEYライト制御ユニット36は、アドレスレジスタ361、MKEY−VLD生成回路362、MKEYレジスタ363を有する。MKEYライト制御ユニット36及びライトデータ選択回路37は、メインメモリに格納されたデータを前記キャッシュメモリに登録する時に、前記メインメモリ上で前記登録されるデータが格納されている領域に対応して設定されている識別情報を取得し、前記登録されるデータと共に前記キャッシュメモリに登録する登録回路の一例である。TAG部18Aは、キャッシュメモリで前記アクセス対象のデータを読み出すためのタグ情報が格納されるタグ部の一例である。
L1データキャッシュ19へのデータ登録時(図18AのS37、S38のタイミング)では、MKEY−VLD生成回路362によって値0が生成されてMKEY−VLDフィールドに書き込まれる。この時、アドレスレジスタ361にL1データTAGをMKEY−VLD生成回路362がアクセスしたときに使用されたアドレスが記憶される。以上によってL1データキャッシュ19のミスヒット時の処理が完了し、中断していたパイプラインが再実行される。
そして、パイプライン再実行後、次のMKEY−VLD参照時にMKEY−VLDが0
(無効)であって、かつ、L1データキャッシュにMKEYデータがキャッシュされているときには(図18BのS46のタイミング)、L1データキャッシュから読み出されたMKEYデータがMKEYレジスタ363にセットされる。
そして、図18BのS47のタイミングでは、アドレスレジスタ361に記憶されたアドレスが、アドレス選択回路38で選択される。そして、この選択されたアドレスで指定されるTAG部18Aのエントリに対して、MKEY−VLD生成回路362によって値1が生成されてMKEY−VLDフィールドにライトされる。さらに、上記指定されるTAG部18Aのエントリに対して、MKEYレジスタ363にセットされたMKEYデータがMKEYフィールドにライトされる。
図14のように、TAG部18Aの1エントリは、PAIDバリッドビット(PAID−VLD)とPAID部とメモリキーバリッドビット(MKEY−VLD)とメモリキー値とを有する。PAIDバリッドビットが値0(無効)の場合には、PAID部は無効であり、L1データは無効であり、メモリキー値も無効である。PAIDバリッドビットが値1(有効)で、メモリキーバリッドビットが値0(無効)の場合、PAID部は有効であり、PAID部、すなわちTAGに対応するL1データキャッシュ19には有効なデータがキャッシュされているが、メモリキー値は無効である。一方、メモリキーバリッドビットが値1(有効)の場合、メモリキー値も有効である。
図15はキーテーブルアドレス生成回路155の詳細を例示する。キーテーブルアドレス生成回路155は、まず、物理アドレスPAからメモリキーのインデックスアドレスを生成する。図9で説明した通り、メモリ領域を確保する最低単位を例えば128バイトとした場合、物理アドレスPAの有効ビットを7bit 右シフト回路155Aにより7bitシフトする事によって、メモリキーのインデックスアドレスが求められる。次に、メモリキーのインデックスアドレスとキーテーブルベースアドレスレジスタ154の値を加算回路155Bで加算する事で、目的とするメモリキーのアドレス(キーテーブルアドレス)が求められる。
ここで、キーテーブルベースアドレスレジスタ154はOS31によって設定される。OS31がメインメモリ30上にメモリキーテーブル35を割り当てたときに、メモリキーテーブル35の先頭アドレスをキーテーブルベースアドレスレジスタ154に設定すればよい。
図16はキーチェック回路153の詳細図であり、図17はキーチェック回路153の動作真理値表の例である。キーチェック回路153は、キーチェックユニット15内で、メモリキー値とアクセスキー値とを比較する。すでに述べたように、メモリキー値は、TAG部18Aから読み出される。また、アクセスキー値は、ユーザープログラム32で実行されるメモリアクセス命令の仮想アドレスVAから取得される。アクセスキー値は、図13に例示したように演算部12によってアクセスキーレジスタ152に設定される。また、モードレジスタ151は、キーチェック機構が有効な場合に、値1(有効、真)である。従って、メモリキー値とアクセスキー値とが一致しない場合には、比較回路153Cの出力が反転され、ORゲート153D及びANDゲート153Eにより、トラップ要求がトラップ検出部51に発行される。トラップ検出部51は、トラップの発生の要求を受けて、命令シーケンス制御部11A(図11参照)を通じてOS31にトラップを通知する。
一方、メモリキー値とアクセスキー値とが一致する場合には、トラップ要求の発行がされず、メモリアクセスが許可される。また、メモリキー値がALL1(0xFF)の場合には、比較回路153Cの比較結果によらず、ORゲート153D及びANDゲート15
3Eにより、トラップ要求が発行される。さらに、メモリキー値がALL0(0x00)の場合には、比較回路153Cの比較結果によらず、トラップ要求が抑止され、メモリアクセスが許可される。
図18A、18Bは、TLBユニット14、L1データTAG18、L1データキャッシュ19、及びキーチェックユニット15を含むCPU10による処理を示すフローチャートである。TLBユニット14、L1データTAG18、L1データキャッシュ19、及びキーチェックユニット15はハードウェア回路であるが、その動作シーケンスについてフローチャートにより説明する。また、TLBユニット14、L1データTAG18、L1データキャッシュ19、及びキーチェックユニット15は、一次キャッシュパイプライン50(図11参照)の中で制御されるため、図18A、図18Bのフローチャートの各処理は、パイプラインの再実行動作によって、繰り返し実行される。
デコーダ11Cによるデコードの結果、メモリアクセス命令が発行される(S31)。すると、まず、TLBユニット14において、仮想アドレスVAがTLBユニット14のTAG部14Aでヒットしたか否かが判定される(S32)。仮想アドレスVAがTLBユニット14のTAG部14Aでヒットしなかった場合、命令制御部11は、メインメモリ30内のアドレス変換テーブル34からエントリをフェッチしてTLBに登録する(S33)。S33の処理をTLBリカバリ処理ともいう。このタイミングでは、一次キャッシュパイプライン50は中断しており、TLBリカバリ処理後、パイプライン処理が再実行される。そして、次のS32の判定で、仮想アドレスVAがTLBユニット14のTAG部14Aでヒットした場合、TLBユニット14において、TAG部14Aの検索が実行され、データ部14Bから物理アドレスPAが取得される(S34)。
次に、L1データTAG18において、物理アドレスがL1データキャッシュ19(TAG部18A)にヒットしたか否かが判定される(S35)。物理アドレスがL1データキャッシュ19にヒットしなかった場合、L2要求制御部52からL2要求が発行される(S36)。L2キャッシュ制御部20Aはこの要求に対してL2キャッシュRAM部20Bからデータを読み出してL1データキャッシュ19にキャッシュデータを応答する。すると、L1データTAG18の制御回路及びL1データキャッシュ19の制御回路は、応答されたデータとTAGをL1データキャッシュ19及びL1データTAG18に登録する(S37)。このとき、MKEYライト制御ユニット36は、L1データTAG18のTAG部18AのMKEY−VLDに値0を書き込む(S38)。さらに、MKEY−VLDに値0が書き込まれたTAG部18AのエントリのアドレスがMKEYライト制御ユニット36のアドレスレジスタ361に保持される。以上によって、L1データキャッシュ19がミスヒット場合の処理が完了し、中断していた一次キャッシュパイプライン50が、再実行される。そして、次のパイプライン処理において、再度S35の判定がされる。
S35の判定で物理アドレスがL1データキャッシュにヒットした場合、キーチェック機構が有効であることをモードレジスタ151が示しており(S39でYES)、かつ、TAG部18AのMKEY−VLDが値1(有効)でない場合(S40でNO)、キーテーブルアドレス生成回路155がキーテーブルアドレスを生成する(S41)。そして、メモリキーを取得するため、MKEYライト制御ユニット36がキーテーブルアドレスを使用してL1データキャッシュにアクセスする(S42)。そして、キーテーブルアドレスがL1データキャッシュでヒットしない場合(S43でNO)、L2要求生成回路156がL2キャッシュ制御部20Aに対してL2要求を発行する(S44)。L2キャッシュ制御部20Aはこの要求に対してL2キャッシュRAM部20Bからデータを読み出してL2データ応答信号201通じてL1データキャッシュ19にキャッシュデータを応答する。この応答データはライトデータ選択回路37で選択されてL1データキャッシュ1
9に書き込まれる(S45)。以上によって、L1データキャッシュ19がミスヒット場合の処理が完了し、中断していた一次キャッシュパイプライン50が、再実行される。そして、次のパイプライン処理において、再度S43の判定がされる。
S43の判定で、キーテーブルアドレスがL1データキャッシュでヒットした場合、MKEYライト制御ユニット36は、キャッシュデータ中のメモリキー値を読み出してTAG部18Aに書き込む(S46)。次に、MKEYライト制御ユニット36は、TAG部18AのMKEY−VLDに値1をセットする(S47)。以上によって、TAG部18AのMKEY−VLDが値1(有効)でない場合の処理が完了し、中断していた一次キャッシュパイプライン50が、再実行される。そして、次のパイプライン処理において、再度S40の判定がされる。
S40の判定においてTAG部18AのMKEY−VLDが値1(有効)である場合、キーチェック回路153は、キーチェックを実行する(S48)。S48のキーチェックの結果、トラップが発生しない場合、制御は、S50に戻り、メモリアクセス命令が実行される。一方、S49でトラップ発生の場合、トラップ検出部51は、命令シーケンス制御部11A(図11参照)を通じてOS31にトラップを通知する。その結果、ユーザープログラム32が強制終了される。
図19は、実施形態1におけるTLBユニット14の構成を例示する。図8で説明した通り、実施形態1では、キーチェック機構が有効に設定されている場合には、OS31は、仮想アドレスVA[63:0]の最上位8bit[63:56]に管理領域識別キーを埋め込んで、複数のメモリ割当領域をキーチェックの管理対象領域として識別する。一方、キーチェック機構が無効として設定されている場合には、OS31は、仮想アドレスVA[63:0]には管理領域識別キー[63:56]を埋め込まない。このように、実施形態1の情報処理装置では、既存の仮想アドレスVAの64ビット[63:0]が有効に利用され、キーチェック行うための回路変更ができるだけ回避されている。
その結果、モードレジスタ151が値1の場合、メモリの領域割当関数によるシステムコールに応答してOS31が返す仮想アドレスフォーマットがキー値[63:56]VA[55:0]となり、TLBユニット14のTAG部14Aには、その仮想アドレス(キー[63:56]、VA[55:0])が格納される。一方、アドレス変換の対象となる仮想アドレスとしては、メモリの領域割当関数で割り当てられたメモリ領域外のアドレスもあり得る。従って、TLBユニット14のTAG部14A内には、キー[63:56]VA[55:0]のアドレスとVA[63:0]のアドレスが混在することになる。そこで、実施形態1のTLBユニット14では、モードレジスタ151が値1の場合には、キー[63:56]のマッチング結果を無視するための構成が設けられる。仮想アドレスのフィールドの一部分に、キー[63:56]という仮想アドレスではない情報が埋め込まれるため、TLBユニット14の誤動作を回避するためのである。
すなわち、TLBユニット14では、キーチェック機構を有効にする場合(モードレジスタ151が値1)の場合と、無効にする場合(モードレジスタ151が値0)の場合とで、64ビットの仮想アドレスVA内の最上位8ビット[63:56]の情報が異なる。そこで、実施形態1では、キーチェック機構が有効か否かに応じて、TLBユニット14は異なる制御を実行する。つまり、キーチェック機構が有効な場合(mode=1)は、仮想アドレスVAの最上位8bit[63:56]はキーとして有効であり、仮想アドレスVAの一部としてみなせない。この場合には、TLBユニット14によるTLB判定において、最上位8bitの比較結果が無視される。キーチェック機構が無効な場合(mode=0)は、仮想アドレスVAの最上位8bit[63:56]は仮想アドレスVAの一部として有効である。この場合には、TLB判定では最上位8bit[63:56]の
比較結果がTLB判定に反映される。
図19のTLBユニット14のTAG比較器14Cは、仮想アドレスVAのキー部分[63:56]以外の情報[55:0]を比較する比較器146_1と、キー部分[63:56]を比較する比較器146_2とに分けられている。さらに、TAG比較器14Cは、キー部分[63:56]の比較器146_2の出力と、モードレジスタ151の論理和を演算するORゲート149とを有し、比較器147、146_1とORゲート149の出力がANDゲート148に入力されている。TAG比較器14Cの動作は以下のとおりである。
(1)キーチェック有効フラグが有効(mode=1)の場合;
仮想アドレスVAの最上位8bit[63:56]はキーとして有効であり、仮想アドレスVAの一部とみなせない。そこで、TAG比較器14Cは、有効フラグ(mode=1)によりORゲート149から一致したことを示すマッチ出力(1)が出力され、仮想アドレスVAの最上位8bit[63:56]のキーの比較器146_2の比較結果が無視される。これにより、比較器146_2の出力が不一致の場合でも、比較器147と146_1の出力がともに一致(1)であれば、TAG部14Aの一致、つまりTLBでのヒット(TLB mch)がANDゲート148から出力される。
(2)キーチェック有効フラグが無効(mode=0)の場合;
仮想アドレスVAの最上位8bit[63:56]はキーとして無効であり、仮想アドレスVAの一部とみなすべきであるので、TAG比較器14Cは、有効フラグ(mode=0)によりORゲート149から比較器146_2の出力がそのまま出力され、仮想アドレスVAの最上位48bitのIDの比較器146_2の比較結果がTLBマッチに反映される。これにより、比較器147、146_1、146_2の出力が全て一致した場合に、TAG部14Aの一致、つまりTLBでのヒット(TLB mch)がANDゲート148から出力される。
<実施形態1の効果>
実施形態1の演算処理装置によれば、キーチェック回路153が演算部12から指定されるアクセスキーとL1データTAG18に保存されたメモリキーとを比較する。アクセスキー及びメモリキーは、演算部12を含むCPU10で実行されるプログラムがOS31に領域割当関数で領域の割り当てを依頼したときに、OS31が割り当てられる領域ごとに生成した領域識別情報である。OS31は、この領域識別情報をアクセスキーとして、割り当てた領域の先頭アドレスともにプログラムに引き渡す。一方、OS31は、この領域識別情報を割り当てた領域に対応するメモリキーテーブル35のエントリに格納する。そして、割り当てられた領域のデータがL1データキャッシュ19に登録されるときに、MKEYライト制御ユニット36がメモリキーテーブル35に格納されたメモリキーを登録されるデータのメインメモリ30上のアドレスに対応するL1データTAG18のTAG部18Aに格納するのである。従って、このプログラムを実行するCPU10は、割り当てた領域に対するアクセスキーを有するプログラムからのアクセスか否かを判定でき、不正アクセスを検知できる。すなわち、CPU10は、プログラムに不具合や誤ったコードが存在した結果に基づく、メモリ領域不正アクセスによるメモリ破壊、あるいは不具合を抑止できる。また、CPU10は、ハードウェアの制御回路によって、OS31及びプログラムに対して、上記不正アクセスを検知する機能を提供できる。
また、CPU10は、メインメモリ30におけるメモリキーテーブル35の先頭アドレスを保持するキーテーブルベースアドレスレジスタ154を有する。従って、キーテーブルアドレス生成回路155は、キーテーブルベースアドレスレジスタ154を基に、L1データキャッシュ19に登録されるデータに対応するメモリキーのアドレスを生成できる
。一方、OS31は、キーテーブルベースアドレスレジスタ154にメモリキーテーブル35の先頭アドレスを設定する。この設定によって、OS31は、キーテーブルアドレス生成回路155にメモリキーのアドレスを生成させ、MKEYライト制御ユニット36にメモリキーをL1データTAG18のTAG部18Aに登録させることができる。
また、実施形態1では、メモリキー及びメモリキーバリッドビット(MKEY−VLD)はL1データTAG18のTAG部18Aに登録される。TAG部18Aは、L1データキャッシュ19と比較して容量が小さいので、メモリキー及びメモリキーバリッドビット(MKEY−VLD)を格納する領域を付与するための設計の自由度があり、変更が容易である。
[実施形態2]
上記実施形態1では、単一のプロセス内でのアプリケーションプログラム実行時のメインメモリ30への不正なアクセスを検出するキーチェック機構が例示された。実施形態2では、メモリの領域にRead Only、またはRead/Write可能の属性を与えられた場合の不正なアクセスを検出するチェック機構が例示される。
すなわち、実施形態2では以下の処理が例示される。
(1)複数のプロセス間で、データをやり取りするプロセス間通信での情報処理が想定される。
(2)複数のプロセスからの要求に応じてプロセス間シェアード・メモリを生成する機能を持つメモリ・マネージャが導入される。
(3)プロセス間通信で使うシェアード・メモリの一使用例として、プロセス間でデータを受け渡す際に一方のプロセスはRead及びWriteを実行する。また、他方のプロセスはRead Onlyで受け渡されたデータを参照する。
(4)生成されたシェアード・メモリにアクセスする個々のプロセスに対して、OS31はRead Only、またはRead/Write可能のアクセス権限を許可することができる。実施形態1と同様のキーチェック機構の導入により、Read Onlyしか許可されていないプロセスが、誤ってWriteを行ってデータを破壊する事を防止する事ができる。ただし、実施形態2のキーチェック機構は、実施形態1のキーチェック機構に加えて、Read Only、またはRead/Write可能のアクセス権限をチェックしてもよい。
図20は、実施形態2におけるプロセスの関係を例示する。例えば、プロセス#1で実行されるアプリケーションプログラム APPL#1 32−1は、OS31のメモリ・マネージャにRead/Writeアクセス可能なメモリ獲得要求を行い、獲得された先頭アドレスのポインタを取得する。獲得されたメモリ領域AR1は、プロセス間シェアード・メモリとされる。プロセス#1は、メモリ領域AR1にRead/Writeアクセスが可能である。
一方、プロセス#2で実行されるアプリケーションプログラム APPL#2 32−2は、OS31のメモリ・マネージャに、Read Onlyでアクセス可能なメモリ獲得要求を行い、獲得された先頭アドレスのポインタを取得する。獲得されたメモリ領域AR2も、プロセス間シェアード・メモリとされる。プロセス#2は、メモリ領域AR2にReadアクセスが可能である。実施形態2では、図20のような環境でのチェック機構が例示される。
なお、図20では、複数のプロセス#1、#2が例示されている。しかし、CPU10によるチェック機構の適用が図20の例に限定される訳ではない。例えば、単一のプロセスが、Read Onlyの属性またはRead/Write可能な属性が付与されている異なるメモリの領域にアクセスする場合にも、以下の実施形態2のチェック機構が適用
できる。Read Onlyの属性またはRead/Write可能な属性をアクセス権限ともいう。
図20では、プロセス#1(APPL#1 32−1)、プロセス#2(APPL#2
32−2)がメモリ獲得要求と共にアクセス権限を要求したが、本演算処理装置は、このような処理に限定される訳ではない。一方のプロセス、例えば、プロセス#1(APPL#1 32−1)が他方のプロセス、例えば、プロセス#2(APPL#2 32−2)のアクセス権限を所定のファイル、共有メモリ等に設定し、OS31に引き渡すようにしてもよい。OS31は、プロセス#1(APPL#1 32−1)の設定に従って、プロセス#2(APPL#2 32−2)からのメモリ獲得要求に対して、割り当てた領域にアクセス権限(Read Only属性、あるいは、Read/Write可能な属性等)を設定してもよい。また、OS31は、プロセス#1(APPL#1 32−1)、プロセス#2(APPL#2 32−2)以外の第3のプロセスの設定に従って、プロセス#1(APPL#1 32−1)、プロセス#2(APPL#2 32−2)に割り当てた領域にアクセス権限等の属性を設定してよい。
図21は、実施形態2の仮想アドレスの構成を例示する。ところで、実施形態1では、図8に、OS31がユーザープログラム32に返す先頭アドレスのフォーマットを例示した。実施形態2では、図8でのアドレスフォーマットF1が、図22のアドレスフォーマットF3に変更される。F2では、F1と比べてアクセスキー値が7ビットに減り、最上位にROビット(Read Only bit)が追加される。
図22は、実施形態2におけるメモリキーの構成を例示する。実施形態1の図10のメモリキーテーブル中のメモリキーのフォーマットが、実施形態2では図22の様に変更される。図22では、メモリテーブル中のメモリキー値が7ビットに減り、ROビット(Read Only bit)が追加される。
図23に実施形態2のTAG部18Aの1エントリのフォーマットを例示する。実施形態1の図14のTAG部18Aのエントリのフォーマットが、実施形態2では図23の様に変更される。図23では、メモリキー値が7ビットに減り、ROビット(Read Only bit)が追加される。
図24に実施形態2のキーチェック回路157の動作真理値表を例示する。実施形態1の図17のキーチェック回路153の動作真理値表が、実施形態2では図24の様に変更される。すなわち、メモリキーのROビットまたはアクセスキーのROビットが値1の場合には、実行命令種がStore系つまりデータの書込みを実行する命令に対して、不許可のトラップが発生する。一方、実行命令種がLoad系つまりデータの読み出しを実行する命令に対しては、実施形態1と同様、メモリキー値とアクセスキー値との比較結果が不一致の場合に、不許可のトラップが発生する。キーチェック回路157は、メインメモリにアクセスする命令を実行するときにアクセス先のアドレス及び前記アクセス情報と共に指定される権限範囲情報とアクセス対象のデータ及び前記識別情報と共に前記キャッシュメモリに登録されている権限範囲情報とをさらに比較する処理を実行する回路の一例である。
図25は、実施形態2におけるL1データTAG18、L1データキャッシュ19、及びキーチェックユニット15の構成を例示する図である。実施形態2では、モードレジスタ151Aには、実施形態1で例示されたキーチェック有効ビットに加えて、実行命令種情報が追加される。この実行命令種情報は例えば1ビットの情報である。実行命令種情報の値が1の時は、演算部12がストア命令を実行する事を示し、また、実行命令種情報の値が0の時は、演算部12がロード命令を実行する事を示す。演算部12は、命令実行時
に、モードレジスタ151Aに実行命令種情報を設定する。
さらに、アクセスキーレジスタ152Aには、実施形態1で例示されたメモリアクセス時のアクセスキーに加えて、図21に示す通り、ROビットが追加される。ユーザープログラム32は、領域割当関数によって割り当てられた領域のポインタの一部として、ROビットを受けて取る。また、ユーザープログラム32は、ROビット、アクセスキーが付加されたポインタによって割り当てられた領域にアクセスする。演算部12は、ユーザープログラム32のアクセスによるメモリアクセス命令のオペランドから、ROビットを取得し、アクセスキーと共に、アクセスキーレジスタ152Aに設定する。このROビットはアクセスキーレジスタ152Aに記憶されたアクセスキー値と共にキーチェック回路157に供給される。
さらに、TAG部18Aには、実施形態1で例示された各フィールドに加えて、ROビットが追加される。このROビットはTAG部18Aに記憶されたメモリキー値と共にキーチェック回路157に供給される。OS31は、領域割当関数によるシステムコールによる領域割り当て時に、ユーザープログラム32等からの指定、所定ファイルの設定パラメータ等に従ってROビットを生成し、領域識別情報と共にメモリキーテーブル35のエントリに登録すればよい。MKEYライト制御ユニット36は、実施形態1と同様の手順(図13、図18A、図18B)で、メモリキーテーブル35からL1データキャッシュ19にキャッシュされたROビットとメモリキーとをTAG部18Aに書き込む。ライトデータ選択回路37によるL1データキャッシュ19への書込みとMKEYライト制御ユニット36によるROビットのTAG部18Aへの書込みとは、「メインメモリに格納されたデータを前記キャッシュメモリに登録する時に、前記メインメモリ上で前記登録されるデータが格納されている領域に対応して格納されている権限範囲情報を取得し、前記登録されるデータと共に前記キャッシュメモリに登録」することの一例である。ROビットは、権限範囲情報の一例である。
図26は、実施形態2のキーチェック回路157の構成を例示する。実施形態2のキーチェック回路157は、実施形態1のキーチェック回路153(図16)に対して、ORゲート153F及びANDゲート153Gが追加されている。そして、キーチェック回路157は、実施形態1の各種情報に加えて、モードレジスタ151Aから実行命令種情報、アクセスキーレジスタ152Aからアクセスキー値に付随したROビット、さらにTAG部18Aからメモリキー値に付随したROビットを受け取る。
ORゲート153Fは、アクセスキーレジスタ152からのアクセスキー値に付随したROビットと、TAG部18Aからのメモリキー値に付随したROビットの論理和を実行する。また、ANDゲート153Gは、モードレジスタ151からの実行命令種情報と、ORゲート153Fの出力との論理積を実行する。
そして、キーチェック回路157は、モードレジスタ151Aの動作モードがキーチェック機構有効であって、メモリキー値がALL0以外の場合には、アクセスキーによる判定に加えてROビットによる判定が実行される。すなわち、実行命令種がStore系の命令の場合であって、L1データTAG18からのROビットが1であるか、または実行アドレス生成器12Aからアクセスキーと共に引き渡されるROビットまたはアクセスキービットが1である場合には、ORゲート153FとANDゲート153Gとにより、トラップ要求が発生する。ORゲート153FとANDゲート153Gによる回路は、「メインメモリにアクセスする命令を実行するときに、前記アクセスする命令の種類と前記アクセス先のアドレスと共に指定される権限範囲情報とアクセス対象のデータと共に前記キャッシュメモリに登録されている権限範囲情報とが所定の条件を充足するか否かを判定する判定回路」の一例である。
すなわち、キーチェック回路157は、図24に示す動作真理値表に従ってキーチェックが実施されてトラップが発生するか否かをチェックする。キーチェック回路157は、トラップ発生条件が充足されると、トラップ検出部51にトラップの発生を要求する。トラップ検出部51は、トラップの発生の要求を受けて、命令シーケンス制御部11A(図11参照)を通じてOS31にトラップを通知する。図26において、トラップ検出部51からOSへのトラップの通知は、所定の条件が充足されるときに前記メインメモリにアクセスする命令の実行を停止させることの一例である。
図27は、実施形態2のCPU10を含む情報処理装置で実行されるOS31の処理を例示するフローチャートである。OS31は、アプリケーションプログラム等のユーザープログラムから、領域割当関数によるシステムコールを受信する(S121)。OS31は、S121のシステムコールによりメモリ領域を確保する(122)。次に、OS31は、ROビットを含んだキー値を生成する(S123)。ここで、ROビットは、S121の領域割当関数を呼び出したユーザープログラムによって指定されてもよい。また、S121の領域割当関数を呼び出したユーザープログラム以外の他のプログラムが、所定のファイル、あるいは共有メモリ等において、S121の領域割当関数を呼び出したユーザープログラムのプロセスに対して、ROビットを指定してもよい。OS31は、それぞれのプロセスからの領域割当関数によるシステムコールに対して、所定のファイル、あるいは共有メモリ等における指定に従ってROビットを含んだキー値を生成すればよい。
次に、OS31は、ROビットを含んだキー値によってメインメモリ30上のメモリキーテーブル35を更新する(S124)。そして、OS31は、ユーザープログラムにROビットを含んだアクセスキー値付き仮想アドレスを返す(S125)。ユーザープログラムは、以降の処理において、ROビットを含んだアクセスキー値付き仮想アドレスにより、割り当てられた領域にアクセスすればよい。S124の処理は、第1のプロセス(32)からの要求に従って前記メインメモリ上で領域を割り当てる処理を実行するときに前記割り当てられる領域へのアクセス権限の範囲を示す権限範囲情報を前記割り当てられる領域に対応して前記メインメモリに格納することの一例である。S125の処理は、割り当てられた領域のアドレスと共に前記権限範囲情報を前記第1のプロセスに引き渡すことの一例である。
<実施形態2の効果>
以上により実施形態2では、メモリの領域割当関数からのシステムコールに応答して、OS31がアクセスキー値の最上位ビットをROビットとして使用する。OS31は、アクセスキー値をユーザープログラム32に返す時、読み出しのみを許可する(書き込みは許可しない)ユーザープログラム32に対しては、ROビットを値1にして渡す。または、書き込み及び読み出しの両方を許可するユーザープログラム32に対しては、OS31は、ROビットを値0にして渡す。
もし、割り当てられたメモリ領域に書き込みを許可していないユーザープログラム32が当該メモリ領域にリードを行った場合にはリード命令は、図24に示される通り正常に実行される。一方、同メモリ領域に書き込みを許可していないユーザープログラム32が当該メモリ領域にライトを行った場合は、ライト命令に対して図24に示される通り、トラップが発生して命令は実行されず、メモリの破壊が防止される。
なお、上記実施形態1では、アクセス権限の例として、ROビットを例示したが、CPU10の処理は、ROビットに限定されるものではない。また、実施形態2では、ROビットは、アクセスキー値、メモリキー値の最上位ビット部分に設定された。しかし、アクセスキー値、メモリキー値とは分離して、ROビット等のアクセス権限だけを仮想ドレス
に組み込むようにしてもよい。
10 CPU
11 命令制御部
11B 命令フェッチ回路
11C デコーダ
12 演算部
12A 実行アドレス生成器
14 TLBユニット
14A TLBのTAG部
14B TLBのデータ部
14C タグ比較器
15 キーチェックユニット
16 L1命令TAG
17 L1命令キャッシュ
18 L1データTAG
18A L1データTAG18のTAG部
18B L1データTAG18のTAG比較器18B
19 L1データキャッシュ
20A L2キャッシュ制御回路
20B L2キャッシュRAM部
30 メインメモリ
35 メモリキーテーブル
36 MKEYライト制御ユニット
37 ライトデータ選択回路
38 アドレス選択回路
51 トラップ検出部
52 L2要求制御部
151 モードレジスタ
152 アクセスキーレジスタ
153 キーチェック回路
154 キーテーブルベースアドレスレジスタ
157 キーチェック回路
図11で説明したように、命令制御部11によって、ロード命令、ストア命令等のメモリアクセス命令が実行される時、TLBユニット14でのアドレス変換動作と並行して、TAG部18Aがアクセスされる。この時、命令制御部11からの仮想アドレス(下位ビット)が出力され、アドレス選択回路38で命令制御部11からアドレスが選択されTAG部18Aと、L1データキャッシュ19が同時にアクセスされる。TAG部18Aから出力されるPAID−VLDが値1である時、TAG比較器18BによってTLBから出力されるPAとTAG部18Aから出力されるPAIDが比較される。比較の結果が一致している場合、L1データキャッシュヒットであるので、L1データキャッシュ19から読み出されたキャッシュデータが演算部12に応答される。
キーチェック回路153は、モードレジスタ151の値(有効、無効)、アクセスキーレジスタ152のアクセスキー値、及びTAG部18Aからのキャッシュヒット時のメモリキー値を受け取って実行中のメモリアクセスが許可されるか、許可されないかを検査する。アクセスキーレジスタ152には、演算部12の実行アドレス生成器12Aによって生成されたアクセスキーがロードされている。L1データTAG18は、実行アドレス生成器12Aからの仮想アドレスVA及びTLBユニット14からの物理アドレスPAに基づいてTAG部18Aを検索し、物理アドレスPAがヒットすると、メモリキー値を出力する。キーチェックユニット15は、アクセスキーレジスタ152にロードされたアクセスキー値と、L1データTAG18ヒット時のメモリキー値とを比較し、キーチェック機構としての処理を実行する。キーチェック回路153の動作については、図16に従って後述する。
S43の判定で、キーテーブルアドレスがL1データキャッシュでヒットした場合、MKEYライト制御ユニット36は、キャッシュデータ中のメモリキー値を読み出してMKEYレジスタ363にセットする(S46)。そして、MKEYライト制御ユニット36は、アドレスレジスタ361で指定される、L1データTAG18のTAG部18Aのエントリメモリキー値を書き込む。次に、MKEYライト制御ユニット36は、TAG部18AのMKEY−VLDに値1をセットする(S47)。以上によって、TAG部18AのMKEY−VLDが値1(有効)でない場合の処理が完了し、中断していた一次キャッシュパイプライン50が、再実行される。そして、次のパイプライン処理において、再度S40の判定がされる。
仮想アドレスVAの最上位8bit[63:56]はキーとして無効であり、仮想アドレスVAの一部とみなすべきであるので、TAG比較器14Cは、有効フラグ(mode=0)によりORゲート149から比較器146_2の出力がそのまま出力され、仮想アドレスVAの最上位8bitのキーの比較器146_2の比較結果がTLBマッチに反映される。これにより、比較器147、146_1、146_2の出力が全て一致した場合に、TAG部14Aの一致、つまりTLBでのヒット(TLB mch)がANDゲート148から出力される。
<実施形態1の効果>
図21は、実施形態2の仮想アドレスの構成を例示する。ところで、実施形態1では、図8に、OS31がユーザープログラム32に返す先頭アドレスのフォーマットを例示した。実施形態2では、図8でのアドレスフォーマットF1が、図22のアドレスフォーマットF3に変更される。Fでは、F1と比べてアクセスキー値が7ビットに減り、最上位にROビット(Read Only bit)が追加される。
次に、OS31は、ROビットを含んだキー値によってメインメモリ30上のメモリキーテーブル35を更新する(S124)。そして、OS31は、ユーザープログラムにROビットを含んだアクセスキー値付き仮想アドレスを返す(S125)。ユーザープログラムは、以降の処理において、ROビットを含んだアクセスキー値付き仮想アドレスにより、割り当てられた領域にアクセスすればよい。S124の処理は、第1のプロセスからの要求に従って前記メインメモリ上で領域を割り当てる処理を実行するときに前記割り当てられる領域へのアクセス権限の範囲を示す権限範囲情報を前記割り当てられる領域に対応して前記メインメモリに格納することの一例である。S125の処理は、割り当てられた領域のアドレスと共に前記権限範囲情報を前記第1のプロセスに引き渡すことの一例である。
<実施形態2の効果>
なお、上記実施形態では、アクセス権限の例として、ROビットを例示したが、CPU10の処理は、ROビットに限定されるものではない。また、実施形態2では、ROビットは、アクセスキー値、メモリキー値の最上位ビット部分に設定された。しかし、アクセスキー値、メモリキー値とは分離して、ROビット等のアクセス権限だけを仮想ドレ
スに組み込むようにしてもよい。

Claims (7)

  1. メインメモリにアクセスする演算処理装置であって、
    前記メインメモリに格納されたデータを一時的に登録するキャッシュメモリと、
    前記メインメモリに格納されたデータを前記キャッシュメモリに登録する時に、前記メインメモリ上で前記登録されるデータが格納されている領域に対応して設定されている識別情報を取得し、前記登録されるデータと共に前記キャッシュメモリに登録する登録回路と、
    前記メインメモリにアクセスする命令を実行するときにアクセス先のアドレスともに指定されるアクセス情報とアクセス対象のデータと共に前記キャッシュメモリに登録されている識別情報とを比較する比較回路と、
    前記比較の結果に応じて、前記メインメモリにアクセスする命令の実行を停止させるアクセス制限回路と、を備える演算処理装置。
  2. 第1のプロセスからの要求に従って前記メインメモリ上で領域を割り当てる処理を実行するときに前記割り当てられる領域を識別する識別情報を生成して前記メインメモリの所定領域に格納すると共に、前記割り当てられた領域のアドレスと共に前記生成された識別情報を前記割り当てられた領域へアクセスするときに指定されるアクセス情報として前記第1のプロセスに引き渡す第2のプロセスを実行する実行部をさらに備える請求項1に記載の演算処理装置。
  3. 前記識別情報は、前記メインメモリの固定長のブロック列に対応するメインメモリ上の要素列に格納され、
    前記演算処理装置は、さらに、前記メインメモリでの前記要素列の先頭アドレスを指定するアドレスレジスタを有する請求項1または2に記載の演算処理装置。
  4. 前記は、第1のプロセスからの要求に従って前記メインメモリ上で領域を割り当てる処理を実行するときに前記割り当てられる領域へのアクセス権限の範囲を示す権限範囲情報を前記割り当てられる領域に対応して前記メインメモリに格納すると共に、前記割り当てられた領域のアドレスと共に前記権限範囲情報を前記第1のプロセスに引き渡す第2のプロセスを実行する実行部をさらに備え、
    前記登録回路は、前記メインメモリに格納されたデータを前記キャッシュメモリに登録する時に、前記メインメモリ上で前記登録されるデータが格納されている領域に対応して格納されている権限範囲情報を取得し、前記登録されるデータと共に前記キャッシュメモリに登録し、
    前記比較回路は、前記メインメモリにアクセスする命令を実行するときに、前記アクセスする命令の種類と前記アクセス先のアドレスと共に指定される権限範囲情報とアクセス対象のデータと共に前記キャッシュメモリに登録されている権限範囲情報とが所定の条件を充足するか否かを判定する判定回路を有し、
    前記アクセス制限回路は、前記所定の条件が充足されるときに前記メインメモリにアクセスする命令の実行を停止させる請求項1に記載の演算処理装置。
  5. 前記登録回路は、前記キャッシュメモリで前記アクセス対象のデータを読み出すためのタグ情報が格納されるタグ部に前記識別情報を格納する請求項1から4のいずれか1項に記載の演算処理装置。
  6. メインメモリと、
    前記メインメモリに記憶された命令列を含むプロセスを実行すると共に前記前記メインメモリに記憶されたデータにアクセスする演算処理装置と、を備え、
    前記演算処理装置は、
    第1のプロセスからの要求に従って前記メインメモリ上で領域を割り当てる処理を実行するときに前記割り当てられる領域を識別する識別情報を生成して前記メインメモリの所定領域に格納すると共に、前記割り当てられた領域のアドレスと共に前記識別情報を前記割り当てられた領域へアクセスするときに指定されるアクセス情報として前記第1のプロセスに引き渡す第2のプロセスを実行する実行部と、
    前記メインメモリのデータを一時的に登録するキャッシュメモリと、
    前記メインメモリに格納されたデータを前記キャッシュメモリに登録する時に、前記メインメモリ上で前記登録されるデータが格納されている領域に対応して設定されている識別情報を取得し、前記登録されるデータと共に前記キャッシュメモリに登録する登録回路と、
    前記メインメモリにアクセスする命令を実行するときにアクセス先のアドレスともに指定されるアクセス情報とアクセス対象のデータと共に前記キャッシュメモリに登録されている識別情報とを比較する比較回路と、
    前記比較の結果に応じて、前記アクセス命令の実行を停止させるアクセス制限回路と、を備える情報処理装置。
  7. メインメモリに格納されたデータを一時的に登録するキャッシュメモリを備える演算処理装置の制御方法であって、
    前記メインメモリに格納されたデータを前記キャッシュメモリに登録する時に、前記メインメモリ上で前記登録されるデータが格納されている領域に対応して設定されている識別情報を取得し、前記登録されるデータと共に前記キャッシュメモリに登録し、
    前記メインメモリにアクセスする命令を実行するときにアクセス先のアドレスともに指定されるアクセス情報とアクセス対象のデータと共に前記キャッシュメモリに登録されている識別情報とを比較し、
    前記比較の結果に応じて、前記メインメモリにアクセスする命令の実行を停止させる、演算処理装置の制御方法。
JP2016049147A 2016-03-14 2016-03-14 演算処理装置、情報処理装置、及び演算処理装置の制御方法 Pending JP2017167582A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016049147A JP2017167582A (ja) 2016-03-14 2016-03-14 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US15/444,964 US20170262382A1 (en) 2016-03-14 2017-02-28 Processing device, information processing apparatus, and control method of processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016049147A JP2017167582A (ja) 2016-03-14 2016-03-14 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Publications (1)

Publication Number Publication Date
JP2017167582A true JP2017167582A (ja) 2017-09-21

Family

ID=59788426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016049147A Pending JP2017167582A (ja) 2016-03-14 2016-03-14 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20170262382A1 (ja)
JP (1) JP2017167582A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7497806B2 (ja) 2018-12-28 2024-06-11 インテル・コーポレーション コンピュータシステムの投機的サイドチャネル分析に対する防御

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669784B (zh) * 2017-10-13 2021-06-22 华为技术有限公司 一种进程间通信的方法及系统
PL3793447T3 (pl) 2018-05-15 2023-06-26 New York University System i sposób do orientowania wykonywania zdjęć ultrasonograficznych
EP4248323A1 (en) * 2021-02-12 2023-09-27 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983313A (en) * 1996-04-10 1999-11-09 Ramtron International Corporation EDRAM having a dynamically-sized cache memory and associated method
GB2422926B (en) * 2005-02-04 2008-10-01 Advanced Risc Mach Ltd Data processing apparatus and method for controlling access to memory
JP2008262390A (ja) * 2007-04-12 2008-10-30 Toshiba Corp プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7497806B2 (ja) 2018-12-28 2024-06-11 インテル・コーポレーション コンピュータシステムの投機的サイドチャネル分析に対する防御

Also Published As

Publication number Publication date
US20170262382A1 (en) 2017-09-14

Similar Documents

Publication Publication Date Title
JP6273733B2 (ja) 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
US10019263B2 (en) Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
US4463420A (en) Multiprocessor cache replacement under task control
TWI637320B (zh) 根據儲存資歷實施來自不同執行緒轉送的執行緒不可知之載入儲存緩衝區
US10592300B2 (en) Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization
US10048964B2 (en) Disambiguation-free out of order load store queue
US9965277B2 (en) Virtual load store queue having a dynamic dispatch window with a unified structure
US9904552B2 (en) Virtual load store queue having a dynamic dispatch window with a distributed structure
US9058284B1 (en) Method and apparatus for performing table lookup
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
KR20130140582A (ko) 제로 사이클 로드
EP2862058B1 (en) A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order
US9990198B2 (en) Instruction definition to implement load store reordering and optimization
US20150095588A1 (en) Lock-based and synch-based method for out of order loads in a memory consistency model using shared memory resources
CN109313693B (zh) 针对偶发存储器访问程序指令的许可控制
US10853072B2 (en) Arithmetic processing apparatus and method of controlling arithmetic processing apparatus
JP2017167582A (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP7443641B2 (ja) 命令の機密としての動的な指定
US20150095591A1 (en) Method and system for filtering the stores to prevent all stores from having to snoop check against all words of a cache
US11513966B2 (en) Apparatus and method with value prediction for load operation
US11397686B1 (en) Store-to-load forwarding using physical address proxies to identify candidate set of store queue entries
US11416406B1 (en) Store-to-load forwarding using physical address proxies stored in store queue entries