JP2003256267A - データ処理方法、これを用いたメモリ領域検索システム及びプログラム - Google Patents

データ処理方法、これを用いたメモリ領域検索システム及びプログラム

Info

Publication number
JP2003256267A
JP2003256267A JP2002054611A JP2002054611A JP2003256267A JP 2003256267 A JP2003256267 A JP 2003256267A JP 2002054611 A JP2002054611 A JP 2002054611A JP 2002054611 A JP2002054611 A JP 2002054611A JP 2003256267 A JP2003256267 A JP 2003256267A
Authority
JP
Japan
Prior art keywords
memory area
area structure
address
memory
pointer
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
JP2002054611A
Other languages
English (en)
Inventor
Kiyokuni Kochiya
清久仁 河内谷
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2002054611A priority Critical patent/JP2003256267A/ja
Priority to US10/376,090 priority patent/US20040024793A1/en
Publication of JP2003256267A publication Critical patent/JP2003256267A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

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

Abstract

(57)【要約】 【課題】 実用的なメモリ領域検索キャッシュを実現す
る手法を提供する。 【解決手段】 コンピュータによるプログラムの実行に
伴うメモリ検索処理をマルチスレッド環境下で実行する
データ処理方法であって、所定の検索アドレスに基づい
て、メモリに格納されているキャッシュテーブル30に
おける該当するエントリを読み込むステップと、このエ
ントリに登録されているポインタに基づき、メモリから
このポインタに指示されているメモリ領域構造体40を
読み込むステップと、キャッシュテーブル30のエント
リが書き換えられておらず、かつ検索アドレスがこのメ
モリ領域構造体40の開始アドレスと終了アドレスとの
間にある場合に、このメモリ領域構造体40を検索結果
として処理するステップとを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータによ
るデータ処理において、所定のアドレスがどのメモリ領
域に属するかを判別する処理を効率的に行う方法に関す
る。
【0002】
【従来の技術】JavaのJITコンパイラにおけるラ
ンタイムモジュールでは、メモリにおける所定のアドレ
スがどのメモリ領域(具体的にはJITコンパイルされ
たコード)に属するかを判別する処理が、頻繁に実行さ
れる。この判別のための検索処理では、二分木を探索す
る必要があり、これは相当に重い(処理コストが大き
い)処理である。しかし、この判別で検索されるアドレ
スにおいて、同じアドレスは同じメモリ領域に存在する
ことが非常に多いので、最近の判別結果をキャッシュに
保存(メモリ領域検索キャッシュ)しておき、判別処理
を行う場合に、保存されている判別結果を参照して検索
を行うことによって処理を高速化することができる。
【0003】従来、この判別結果を保存する手法とし
て、メモリ領域検索キャッシュにおける保存情報の各エ
ントリを、{検索アドレス,対応するメモリ領域構造体
へのポインタ}の2ワードで構成し、これをアトミック
(不可分)に読み書きしていた。図9は、従来のメモリ
領域検索キャッシュのデータ構造を示す図である。図9
を参照すると、キャッシュテーブルのエントリ(以下、
キャッシュエントリ)に、検索アドレス(pc1)と、
対応するメモリ領域構造体へのポインタ(cc1)とが
登録されている。そして、この2ワード分の情報がアト
ミックに読み書きされることが示されている。2ワード
分をアトミックに読み書きするのは、マルチスレッドの
環境下で、所定のスレッドが上記キャッシュエントリの
「検索アドレス」を読み込んだ後、「対応するメモリ領
域構造体へのポインタ」を読む前に、他のスレッドによ
って内容が書き換えられてしまうのを防ぐためである。
すなわち、2ワードを組にして扱うことにより、複数ス
レッド間での登録、検索の一貫性を保証していた。
【0004】
【発明が解決しようとする課題】しかしながら、IA−
64プロセッサでは、2ワード、すなわち128ビット
のデータをアトミックに読み書きする機能が存在しな
い。そのため、メモリ領域検索キャッシュのキャッシュ
エントリを、上記従来の技術にて説明した「検索アドレ
ス」及び「対応するメモリ領域構造体へのポインタ」と
いう2ワードで構成すると、これを1ワードずつ読まな
ければならない。このため、マルチスレッド環境下で
は、「検索アドレス」を読み込んだ後、「対応するメモ
リ領域構造体へのポインタ」を読む前に、他のスレッド
によって内容が書き換えられてしまう可能性がある。し
たがって、この手法によりメモリ領域検索キャッシュを
実現することはできない。
【0005】このような場合、所定のスレッドが「検索
アドレス」を読んだ時点で当該キャッシュをロックし、
他のスレッドがアクセスできないように排他制御するこ
とが考えられる。しかし、ロックをかける処理は処理コ
ストが大きいため、頻繁に発生する、所定のアドレスが
どのメモリ領域に属するかを判別する処理のために行う
ことは好ましくない。
【0006】そこで、本発明は、IA−64プロセッサ
のように1ワード以上のデータをアトミックに扱うこと
ができないプロセッサを対象として、実用的なメモリ領
域検索キャッシュを実現する手法を提供することを目的
とする。
【0007】
【課題を解決するための手段】上記の目的を達成するた
め、本発明は、コンピュータによるプログラムの実行に
伴うメモリ領域検索処理をマルチスレッド環境下で実行
する、次のようなデータ処理方法として実現される。す
なわち、このデータ処理方法は、所定の検索アドレスに
基づいて、メモリに格納されているキャッシュテーブル
における該当するエントリを読み込むステップと、この
エントリに登録されているポインタに基づき、メモリか
らこのポインタに指示されているメモリ領域構造体を読
み込むステップと、この検索アドレスがこのメモリ領域
構造体の開始アドレスと終了アドレスとの間にある場合
に、このメモリ領域構造体を検索結果として処理するス
テップとを含むことを特徴とする。
【0008】このデータ処理方法は、より好ましくは、
メモリ領域構造体を読み込んだ後に、前記キャッシュテ
ーブルの前記エントリが書き換えられているかどうかを
調べるステップをさらに含む。そして、メモリ領域構造
体を処理するステップでは、エントリが書き換えられて
いない場合に、メモリ領域構造体を検索結果として処理
を行う。また、エントリを読み込む機能は、メモリへの
書き込み検知を伴う読み込み命令にてエントリの読み込
みを行い、このエントリの書き換えの有無を調べる機能
は、この読み込み命令の機能により書き込みの有無を検
知する。この読み込み命令としては、IA−64プロセ
ッサの場合、アドバンスドロードが用いられる。
【0009】また、本発明は、コンピュータによるマル
チスレッド環境下での次のようなデータ処理方法として
も実現することができる。すなわち、このデータ処理方
法は、メモリから所望のアドレスのデータを読み込むス
テップと、読み込んだデータを用いて所定の処理を実行
するステップと、この所定の処理を行った後に前記アド
レスのデータが他のスレッドによって書き換えられてい
るかどうかを確認するステップとを含むことを特徴とす
る。
【0010】また、本発明の他のデータ処理方法は、メ
モリから所望のアドレスに書き込まれているポインタを
読み込むステップと、読み込んだポインタにて指示され
ているデータをメモリから読み込むステップと、このデ
ータの読み込み後に前記アドレスの内容が他のスレッド
により書き換えられているかどうかを確認し、書き換え
られていない場合に、このデータを用いて処理を行うス
テップとを含むことを特徴とする。
【0011】本発明のさらに他のデータ処理方法は、メ
モリから所定のアドレスに対応付けられたポインタを読
み込むステップと、読み込んだポインタにて指示されて
いるメモリ領域構造体をメモリから読み込むステップ
と、このポインタを読み込んだ後メモリ領域構造体を読
み込むまでの間に、このポインタが他のスレッドにより
書き換えられているかどうかを確認し、書き換えられて
いない場合に、このメモリ領域構造体を用いて処理を行
うステップとを含むことを特徴とする。
【0012】このデータ処理方法は、より好ましくは、
メモリ領域構造体を読み込んだ後に、このメモリ領域構
造体の開始アドレスと終了アドレスとの間に前記アドレ
スがあるかどうかを調べるステップをさらに含む。そし
て、メモリ領域構造体を処理するステップでは、前記ア
ドレスがメモリ領域構造体の開始アドレスと終了アドレ
スとの間にある場合に、このメモリ領域構造体を検索結
果として処理する。また、ポインタを読み込む機能は、
メモリへの書き込み検知を伴う読み込み命令にてポイン
タの読み込みを行い、このポインタの書き換えの有無を
調べる機能は、この読み込み命令の機能により書き込み
の有無を検知する。この読み込み命令としては、IA−
64プロセッサの場合、アドバンスドロードが用いられ
る。
【0013】上記の目的を達成する他の本発明は、次の
ように構成されたメモリ領域検索キャッシュとして実現
される。すなわち、このメモリ領域検索キャッシュは、
所定のメモリ領域に格納されたメモリ領域構造体と、こ
のメモリ領域構造体へのポインタを登録したキャッシュ
テーブルと、このキャッシュテーブルを参照してメモリ
領域構造体を取得するメモリ領域検索手段とを備え、こ
のメモリ領域検索手段は、キャッシュテーブルのエント
リに基づいてメモリ領域構造体を取得した後に、このエ
ントリが書き換えられていないかを確認し、書き換えら
れていない場合に、取得したメモリ領域構造体を検索結
果として処理することを特徴とする。
【0014】ここで、このキャッシュテーブルは、より
詳しくは、1ワード分のサイズのエントリを有し、この
エントリにメモリ領域構造体へのポインタを登録する構
成とする。また、メモリ領域検索手段は、エントリが書
き換えられていることを検知した場合に、キャッシュテ
ーブルを用いた検索に代えて、二分木探索によりメモリ
領域構造体の検索を行う。
【0015】さらに、本発明は、上述したデータ処理方
法の各ステップに対応する機能、あるいは上述したメモ
リ領域検索システムを、コンピュータにて実現するプロ
グラム(ランタイムモジュール)として実現することが
できる。このプログラムは、磁気ディスクや光ディス
ク、半導体メモリ、その他の記録媒体に格納して配布し
たり、ネットワークを介して配信したりすることによ
り、提供することができる。
【0016】
【発明の実施の形態】以下、添付図面に示す実施の形態
に基づいて、この発明を詳細に説明する。図1は、本実
施の形態によるメモリ領域検索キャッシュが実現される
コンピュータ装置の構成を説明する図である。図1を参
照すると、本実施の形態によるメモリ領域検索キャッシ
ュは、プログラム実行手段またはプログラムを実行して
データ処理を行うデータ処理手段としてのCPU(Cent
ral Processing Unit:中央処理装置)10と、CPU
10を制御するプログラム及び各種のデータが格納され
たメモリ20とを備える。なお、図1には、本実施の形
態における特徴的な構成のみが記載されている。実際に
は、ブリッジ回路(チップセット)及び各種のバスを介
して、種々の周辺装置がCPU10に接続されているこ
とは言うまでもない。また、複数のCPUが1つのメモ
リを共有する構成も可能である。
【0017】図1に示すように、メモリ20は、CPU
10を制御してデータ処理を実行させるプログラム21
と、本実施の形態で提供されるメモリ領域検索キャッシ
ュに用いられるキャッシュテーブル30とを格納してい
る。プログラム21には、本実施の形態によるメモリ領
域検索キャッシュを実現するデータ処理を行うためのラ
ンタイムモジュールも含まれる。また、特に図示しない
が、メモリ20には、所定のメモリ領域に、プログラム
21を実行することにより生成されるメモリ領域構造体
が格納される。なお、図1に示すメモリ20は、必ずし
も単一の記憶装置を示すものではない。すなわちメモリ
20は、主としてRAMにて実現されるメインメモリを
指すが、プログラム21は必要に応じて磁気ディスクな
どの外部記憶装置に退避することができる。
【0018】図2は、本実施の形態におけるメモリ領域
検索キャッシュのデータ構造を示す図である。図2に示
すように、本実施の形態によるメモリ領域検索キャッシ
ュは、データ構造として、1ワード分のエントリを持つ
キャッシュテーブル30と、検索アドレスが指すべき
(対応する)メモリ領域構造体40とを含む。そして、
キャッシュエントリには、1ワードの情報{メモリ領域
構造体へのポインタ}が登録される。この場合、従来の
キャッシュテーブル(図9参照)と異なり、「メモリ領
域構造体へのポインタ」に対応する検索アドレスが同時
キャッシュされていないので、キャッシュテーブル30
を参照して読み込んだメモリ領域構造体40が本当に検
索アドレスに対応したものかどうかを判断することが必
要となる。複数のメモリ領域が重なることはないので、
この判断は、「メモリ領域の開始アドレス」≦「検索ア
ドレス」<「メモリ領域の終了アドレス」を確認するこ
とで可能である。
【0019】ただし、マルチスレッド環境下では、他の
スレッドによって、メモリ領域及びメモリ領域構造体4
0が解放され再利用されることがあるため、キャッシュ
エントリの読み出しが行われてから、対応するメモリ領
域構造体40の開始アドレス及び終了アドレスの読み出
しが行われるまでの間に、キャッシュエントリとメモリ
領域との対応状況が変わってしまうことがある。この場
合、キャッシュエントリに基づいて読み出された当該メ
モリ領域の内容が異なってしまうため、正しいメモリ領
域の検索ができないこととなる。
【0020】図3は、かかる事態を招来するマルチスレ
ッド環境下でのメモリアクセスの例を示す図である。図
3を参照すると、スレッドAにおいて、アドレスpc1
の検索が開始されると(A1)、キャッシュテーブル3
0のpc1に対応するエントリに登録されているcc2
のメモリ領域構造体40へのポインタが読み出される
(A2)。ここで、cc2の開始アドレス及び終了アド
レスの間にアドレスpc1が存在しないものとする。こ
の場合、本来であれば、キャッシュを用いた検索は失敗
するため、二分木探索などの時間のかかる処理が行われ
なければならない。スレッドBは、スレッドAにおける
キャッシュエントリの読み出しの後、cc2のメモリ領
域構造体40を破棄し(B1)、キャッシュテーブル3
0のpc1に対応するエントリを「NULL」として
(B2)、このcc2に他のデータ(ゴミ)を書き込ん
でしまう(B3)。この後、スレッドAは、cc2を読
み出すが(A3)、ここで偶然に、スレッドBにて書き
込まれたデータ(ゴミ)の開始アドレス及び終了アドレ
スの間にアドレスpc1が存在する場合、アドレスpc
1の検索結果として誤った(アドレスpc1に対応する
メモリ領域構造体40ではない)cc2のデータ(ゴ
ミ)を取得することとなる(A4)。
【0021】上記のような事態を防止するため、本実施
の形態では、スレッドAにおいて、cc2を読み出した
後で、pc1に対応するキャッシュエントリの内容の書
き換えがなされたかどうかを確認する。図3の例では、
キャッシュエントリがスレッドBによりB2で書き換え
られているため、キャッシュを用いた検索が正しく失敗
することとなる。pc1に対応するキャッシュエントリ
の書き換えの有無を確認する簡単な手法として、スレッ
ドAにおいて、cc2を読み出した後にもう一度当該キ
ャッシュエントリを読み出して比較することが考えられ
る。しかし、この手法では、次のような場合に書き換え
が行われたことを認識することができない。すなわち、
cc2が読み出された後pc1に対応するキャッシュエ
ントリが読み出されるまでの間に他のスレッドによって
cc2が再びメモリ領域構造体40として使用され、当
該メモリ領域構造体40へのポインタが偶然にpc1に
対応するキャッシュエントリに書き込まれた場合、当該
キャッシュエントリの内容は2回書き換えられているに
もかかわらず、当該キャッシュエントリから読み出され
た内容が同一となるため、書き換えが行われたことを認
識できない。
【0022】そこで、本実施の形態では、pc1に対応
するキャッシュエントリの書き換えの有無を確認する手
段として、IA−64プロセッサで提供されている「ア
ドバンスドロード」という機構を利用する。「アドバン
スドロード」は、IA−64においてデータスペキュレ
ーション(投機的実行)を実現するために設けられた機
構である。データスペキュレーションは、プログラムの
コンパイルにおいて、所定のデータのロードをストアの
前に移動し、メモリ・レイテンシを隠蔽するための技術
である。すなわち、データのロードがストアに依存する
可能性がある場合、単純にロードをストアの前に実行す
ることはできない。そこで、データスペキュレーション
により、コード中に依存性のチェック命令を置き、デー
タの依存性があればリカバリを行う。「アドバンスドロ
ード」は、これを実現するために、所定のアドレスに書
き込みがあったかどうかを検出する機構である。
【0023】すなわち、「アドバンスドロード」は、本
来、データスペキュレーションを実現するために、同一
スレッド内でのメモリ書き込み検知を行う機能である
が、本実施の形態によるメモリ領域検索キャッシュの実
現方法は、この機能を拡張的に用い、複数スレッドにま
たがって利用することにより、他のスレッドによるデー
タ変更を検出するデータ処理を前提としている。図7
は、このアドバンスドロードを複数スレッドにまたがっ
て利用する場合の一般的なデータ処理の流れを説明する
フローチャートである。図7を参照すると、所定のスレ
ッドでアドレスAに書き込まれているデータを使用する
場合、CPU10は、まずアドレスAの内容をレジスタ
(ここでは仮にr15とする)にアドバンスドロードす
る(ステップ701)。そして、レジスタr15に読み
込んだ値で当該スレッドが所望する処理を実行する(ス
テップ702)。この後、ステップ702の処理中に、
他のスレッドによってアドレスAのデータが変更された
かどうかを確認し、変更されていなければ処理を終了す
る(ステップ703)。一方、アドレスAのデータが変
更された場合は、必要なリカバー処理を行い(ステップ
704)、最初から処理をやり直す。
【0024】また、本実施の形態では、1ワード(64
ビット)より大きいデータを不可分に(アトミックに)
読み書きすることができないIA−64プロセッサにお
いて、図7に示したデータ処理を利用することにより、
ロックを用いた排他制御のような重い処理を伴わずに、
複数ワードを不可分に扱うデータ処理を実現する。図8
は、アドバンスドロードを用いて2ワードを不可分に扱
うデータ処理を説明する図である。この場合、1ワード
より大きいデータは、図8(A)に示すように、アドレ
スAに格納されたポインタから指されるデータD1(x
1、y1)に保持される。データ更新時には、新しいデ
ータ構造D2を用意し、内容x2、y2を設定してから
アドレスAに登録する。なお、アドレスAから指されて
いる限り、データD1の内容は変更されることは無い。
逆に、アドレスAから指されていない状態となったデー
タD1は書き換えて良い。
【0025】また、データ処理の流れを説明する図8
(B)のフローチャートを参照すると、所定のスレッド
でアドレスAにて指されているデータを使用する場合、
CPU10は、まずアドレスAの内容(ポインタ)をレ
ジスタ(ここでは仮にr15とする)にアドバンスドロ
ードする(ステップ801)。そして、r15にロード
したポインタから、指されているデータを読み出す(ス
テップ802)。これは2ワード分の個別データ(D
1:x1、y1)である。また、ここでは、読み出され
たデータがレジスタr16、r17にそれぞれ入れられ
たものとする。次に、アドレスAの内容が書き換えられ
ていないか、すなわち、ステップ802でデータx1、
y1を読み出している間に、データD1がアドレスAの
ポインタから指されていない状態に変化していないこと
を確認する(ステップ803)。アドレスAの内容が書
き換えられていないことが確認されたならば、ステップ
802で読み込んだr16、r17の内容、すなわちx
1、y1が不整合な内容ではないことが保証されるの
で、これらのデータを使用して処理を行う(ステップ8
04)。一方、ステップ803でアドレスAの内容が書
き換えられたことが確認されたならば、ステップ801
に戻り、最初から処理をやり直す。
【0026】本実施の形態は、以上説明した、アドバン
スドロードを用いた複数スレッド間でのデータ変更の検
出手法と、これによるIA−64プロセッサでの1ワー
ドより大きいデータを不可分に扱う手法とを、図2に示
したキャッシュテーブル30を参照してメモリ領域構造
体40を取得する目的で用いた。図4は、本実施の形態
によるメモリ領域検索キャッシュを実現するためのアル
ゴリズムを示す図である。図4において、太字で記載し
た「cache_data = IA64_LD_A(cache_addr);」という行
で、キャッシュエントリをアドバンスドロードで読み込
んでいる。また、「if (IA64_CHK_A_CLR(cache_addr))
goto not_cached;」という行で、該当キャッシュエント
リに書き込みがあったか否かを検査している。本実施の
形態では、図4に示したアルゴリズムにおける各種の動
作を、プログラム21の実行中に、必要に応じて呼び出
されるランタイムモジュール(以下、ランタイムと称
す)により実行する。すなわち、CPU10は、プログ
ラム実行中にこのランタイムが呼び出されると、このラ
ンタイムの制御によりメモリ領域検索手段として動作す
る。
【0027】図5、図6は、図4のアルゴリズムに基づ
く本実施の形態のメモリ領域検索キャッシュを用いたデ
ータ処理の動作を説明するフローチャートである。図5
は、メモリ領域検索時の動作であり、図6は、メモリ領
域解放時の動作である。図5に示すように、所定の処理
からの要求に応じて、メモリ領域を検索するためのラン
タイムが呼び出されると、当該ランタイムにおいて、C
PU10は、まず、呼び出し元の処理から受け取った検
索アドレスpcに対応するキャッシュエントリを求め、
当該キャッシュエントリをアドバンスドロードする(ス
テップ501)。
【0028】そして、当該キャッシュエントリの内容が
「NULL」かどうかを調べ、「NULL」以外の値、
すなわちメモリ領域構造体40へのポインタが登録され
ているならば、次に、このポインタにて指示されている
メモリ領域構造体40を読み込み、その開始アドレス及
び終了アドレスを読み出す(ステップ502、50
3)。この後、CPU10は、キャッシュエントリの内
容が書き換えられていないかを確認し(ステップ50
4)、書き換えられていなければ、さらにアドレスpc
がメモリ領域構造体40の開始アドレスから終了アドレ
スまでの範囲内か否かを調べる(ステップ504、50
5)。そして、範囲内であれば、検索結果であるメモリ
領域構造体40を、当該ランタイムの呼び出し元へ返す
(ステップ506)。
【0029】これに対し、ステップ502でキャッシュ
エントリの状態が「NULL」であった場合、ステップ
504でキャッシュエントリの内容が書き換えられてい
た場合、及びステップ505でアドレスpcがメモリ領
域構造体40の開始アドレスから終了アドレスまでの範
囲外である場合は、いずれもキャッシュによるメモリ領
域構造体40の取得が失敗するので、CPU10は次
に、アドレスpcに対応するメモリ領域構造体40を二
分木探索により探索する(ステップ507)。
【0030】そして、検索結果が「NULL」かどうか
を判断し、「NULL」でなければ、二分木探索の結果
であるメモリ領域構造体40へのポインタを該当アドレ
スpcのキャッシュエントリに登録して(ステップ50
8、509)、当該検索結果を、当該ランタイムの呼び
出し元へ返す(ステップ506)。一方、検索結果が
「NULL」であれば、これを検索結果として取得する
(ステップ508、506)。
【0031】次に、メモリ領域解放時の動作を説明す
る。図6を参照すると、CPU10は、メモリ領域を解
放しようとするランタイムにおいて、まず、対象となる
メモリ領域構造体40を二分木探索のための二分木から
外す(ステップ601)。次に、キャッシュテーブル3
0のエントリを順に、メモリ領域構造体40が登録され
ているかどうかを調べ、当該メモリ領域構造体40が登
録されているキャッシュエントリをクリアする(ステッ
プ602〜605)。そして、メモリ領域及びメモリ領
域構造体40を解放する(ステップ606)。
【0032】
【発明の効果】以上説明したように、本発明によれば、
IA−64プロセッサのように1ワード以上のデータを
アトミックに扱うことができないプロセッサにおいて
も、実用的なメモリ領域検索キャッシュを実現すること
ができる。
【図面の簡単な説明】
【図1】 本実施の形態によるメモリ領域検索キャッシ
ュが実現されるコンピュータ装置の構成を説明する図で
ある。
【図2】 本実施の形態によるメモリ領域検索キャッシ
ュのデータ構造を示す図である。
【図3】 マルチスレッド環境下でのメモリアクセスの
例を示す図である。
【図4】 本実施の形態によるメモリ領域検索キャッシ
ュを実現するためのアルゴリズムを示す図である。
【図5】 図4のアルゴリズムに基づく本実施の形態の
メモリ領域検索キャッシュを用いたデータ処理の動作を
説明するフローチャートであり、メモリ領域検索時の動
作を示す図である。
【図6】 図4のアルゴリズムに基づく本実施の形態の
メモリ領域検索キャッシュを用いたデータ処理の動作を
説明するフローチャートであり、メモリ領域解放時の動
作である。
【図7】 アドバンスドロードを複数スレッドにまたが
って利用する場合の一般的なデータ処理の流れを説明す
るフローチャートである。
【図8】 アドバンスドロードを用いて2ワードを不可
分に扱うデータ処理を説明する図である。
【図9】 従来のメモリ領域検索キャッシュのデータ構
造を示す図である。
【符号の説明】 10…CPU(中央処理装置)、20…メモリ、21…
プログラム、30…キャッシュテーブル、40…メモリ
領域構造体
───────────────────────────────────────────────────── フロントページの続き (72)発明者 河内谷 清久仁 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 Fターム(参考) 5B060 AA12 AC18 CD17 5B098 AA03 GA05 GD03 GD15

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータによるプログラムの実行に
    伴うメモリ領域検索処理をマルチスレッド環境下で実行
    するデータ処理方法において、 所定の検索アドレスに基づいて、メモリに格納されてい
    るキャッシュテーブルにおける該当するエントリを読み
    込むステップと、 前記エントリに登録されているポインタに基づき、メモ
    リから当該ポインタに指示されているメモリ領域構造体
    を読み込むステップと、 前記検索アドレスが前記メモリ領域構造体の開始アドレ
    スと終了アドレスとの間にある場合に、当該メモリ領域
    構造体を検索結果として処理するステップとを含むこと
    を特徴とするデータ処理方法。
  2. 【請求項2】 前記メモリ領域構造体を読み込んだ後
    に、前記キャッシュテーブルの前記エントリが書き換え
    られているかどうかを調べるステップをさらに含み、 前記メモリ領域構造体を処理するステップでは、前記エ
    ントリが書き換えられていない場合に、前記メモリ領域
    構造体を検索結果として処理することを特徴とする請求
    項1に記載のデータ処理方法。
  3. 【請求項3】 コンピュータによるマルチスレッド環境
    下でのデータ処理方法において、 メモリから所望のアドレスのデータを読み込むステップ
    と、 読み込んだ前記データを用いて所定の処理を実行するス
    テップと、 前記処理を行った後に前記アドレスのデータが他のスレ
    ッドによって書き換えられているかどうかを確認するス
    テップとを含むことを特徴とするデータ処理方法。
  4. 【請求項4】 コンピュータによるマルチスレッド環境
    下でのデータ処理方法において、 メモリから所望のアドレスに書き込まれているポインタ
    を読み込むステップと、 読み込んだ前記ポインタにて指示されているデータをメ
    モリから読み込むステップと、 前記データの読み込み後に前記アドレスの内容が他のス
    レッドにより書き換えられているかどうかを確認し、書
    き換えられていない場合に、前記データを用いて処理を
    行うステップとを含むことを特徴とするデータ処理方
    法。
  5. 【請求項5】 コンピュータによるマルチスレッド環境
    下でのデータ処理方法において、 メモリから所定のアドレスに対応付けられたポインタを
    読み込むステップと、読み込んだ前記ポインタにて指示
    されているメモリ領域構造体をメモリから読み込むステ
    ップと、 前記ポインタを読み込んだ後前記メモリ領域構造体を読
    み込むまでの間に、当該ポインタが他のスレッドにより
    書き換えられているかどうかを確認し、書き換えられて
    いない場合に、前記メモリ領域構造体を用いて処理を行
    うステップとを含むことを特徴とするデータ処理方法。
  6. 【請求項6】 前記メモリ領域構造体を読み込んだ後
    に、当該メモリ領域構造体の開始アドレスと終了アドレ
    スとの間に前記所定のアドレスがあるかどうかを調べる
    ステップをさらに含み、 前記メモリ領域構造体を処理するステップでは、前記所
    定のアドレスが前記メモリ領域構造体の開始アドレスと
    終了アドレスとの間にある場合に、前記メモリ領域構造
    体を検索結果として処理することを特徴とする請求項5
    に記載のデータ処理方法。
  7. 【請求項7】 所定のメモリ領域に格納されたメモリ領
    域構造体と、 前記メモリ領域構造体へのポインタを登録したキャッシ
    ュテーブルと、 前記キャッシュテーブルを参照して前記メモリ領域構造
    体を取得するメモリ領域検索手段とを備え、 前記メモリ領域検索手段は、前記キャッシュテーブルの
    エントリに基づいて前記メモリ領域構造体を取得した後
    に、当該エントリが書き換えられていないかを確認し、
    書き換えられていない場合に、取得した当該メモリ領域
    構造体を検索結果として処理することを特徴とするコン
    ピュータにおけるメモリ領域検索システム。
  8. 【請求項8】 前記キャッシュテーブルは、1ワード分
    のサイズのエントリを有し、当該エントリに前記メモリ
    領域構造体へのポインタを登録することを特徴とする請
    求項7に記載のメモリ領域検索システム。
  9. 【請求項9】 前記メモリ領域検索手段は、前記エント
    リが書き換えられている場合に、二分木探索により前記
    メモリ領域構造体を検索することを特徴とする請求項7
    に記載のメモリ領域検索システム。
  10. 【請求項10】 コンピュータを制御して、プログラム
    の実行に伴うメモリ領域検索処理をマルチスレッド環境
    下で実行するプログラムであって、 所定の検索アドレスに基づいて、メモリに格納されてい
    るキャッシュテーブルにおける該当するエントリを読み
    込む機能と、 前記エントリに登録されているポインタに基づき、メモ
    リから当該ポインタに指示されているメモリ領域構造体
    を読み込む機能と、 前記検索アドレスが前記メモリ領域構造体の開始アドレ
    スと終了アドレスとの間にある場合に、当該メモリ領域
    構造体を検索結果として処理する機能とを前記コンピュ
    ータに実現させることを特徴とするプログラム。
  11. 【請求項11】 前記コンピュータに、前記メモリ領域
    構造体を読み込んだ後に、前記キャッシュテーブルの前
    記エントリが書き換えられているかどうかを調べる機能
    をさらに実現させ、 前記メモリ領域構造体に対する機能では、前記エントリ
    が書き換えられていない場合に、前記メモリ領域構造体
    を検索結果として処理することを特徴とする請求項10
    に記載のプログラム。
  12. 【請求項12】 前記エントリを読み込む機能は、前記
    メモリへの書き込み検知を伴う読み込み命令にて前記エ
    ントリの読み込みを行い、 前記エントリの書き換えの有無を調べる機能は、前記読
    み込み命令の機能により書き込みの有無を検知すること
    を特徴とする請求項11に記載のプログラム。
  13. 【請求項13】 コンピュータを制御して、マルチスレ
    ッド環境下でデータ処理を行うプログラムであって、 メモリから所定のアドレスに対応付けられたポインタを
    読み込む機能と、 読み込んだ前記ポインタにて指示されているメモリ領域
    構造体をメモリから読み込む機能と、 前記ポインタを読み込んだ後前記メモリ領域構造体を読
    み込むまでの間に、当該ポインタが他のスレッドにより
    書き換えられているかどうかを確認し、書き換えられて
    いないことを条件として実行される、前記メモリ領域構
    造体を用いる機能とを前記コンピュータに実現させるこ
    とを特徴とするプログラム。
  14. 【請求項14】 前記コンピュータに、前記メモリ領域
    構造体を読み込んだ後に、当該メモリ領域構造体の開始
    アドレスと終了アドレスとの間に前記所定のアドレスが
    あるかどうかを調べる機能をさらに実現させ、 前記メモリ領域構造体を処理する機能は、前記所定のア
    ドレスが前記メモリ領域構造体の開始アドレスと終了ア
    ドレスとの間にある場合に、前記メモリ領域構造体を検
    索結果として処理することを特徴とする請求項13に記
    載のプログラム。
  15. 【請求項15】 前記ポインタを読み込む機能は、前記
    メモリへの書き込み検知を伴う読み込み命令にて前記ポ
    インタの読み込みを行い、 前記ポインタの書き換えの有無を調べる機能は、前記読
    み込み命令の機能により書き込みの有無を検知すること
    を特徴とする請求項13に記載のプログラム。
  16. 【請求項16】 コンピュータを制御してプログラムの
    実行に伴うメモリ領域検索処理をマルチスレッド環境下
    で実行するプログラムを、当該コンピュータが読み取り
    可能に記録した記録媒体であって、 前記プログラムは、 所定の検索アドレスに基づいて、メモリに格納されてい
    るキャッシュテーブルにおける該当するエントリを読み
    込む機能と、 前記エントリに登録されているポインタに基づき、メモ
    リから当該ポインタに指示されているメモリ領域構造体
    を読み込む機能と、 前記検索アドレスが前記メモリ領域構造体の開始アドレ
    スと終了アドレスとの間にある場合に、当該メモリ領域
    構造体を検索結果として処理する機能とを前記コンピュ
    ータに実現させることを特徴とする記録媒体。
  17. 【請求項17】 コンピュータを制御してプログラムの
    実行に伴うメモリ領域検索処理をマルチスレッド環境下
    で実行するプログラムを、当該コンピュータが読み取り
    可能に記録した記録媒体であって、 前記プログラムは、 メモリから所定のアドレスに対応付けられたポインタを
    読み込む機能と、 読み込んだ前記ポインタにて指示されているメモリ領域
    構造体をメモリから読み込む機能と、 前記ポインタを読み込んだ後前記メモリ領域構造体を読
    み込むまでの間に、当該ポインタが他のスレッドにより
    書き換えられているかどうかを確認し、書き換えられて
    いないことを条件として実行される、前記メモリ領域構
    造体を用いる機能とを前記コンピュータに実現させるこ
    とを特徴とする記録媒体。
JP2002054611A 2002-02-28 2002-02-28 データ処理方法、これを用いたメモリ領域検索システム及びプログラム Pending JP2003256267A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002054611A JP2003256267A (ja) 2002-02-28 2002-02-28 データ処理方法、これを用いたメモリ領域検索システム及びプログラム
US10/376,090 US20040024793A1 (en) 2002-02-28 2003-02-27 Data processing method, and memory area search system and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002054611A JP2003256267A (ja) 2002-02-28 2002-02-28 データ処理方法、これを用いたメモリ領域検索システム及びプログラム

Publications (1)

Publication Number Publication Date
JP2003256267A true JP2003256267A (ja) 2003-09-10

Family

ID=28665718

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002054611A Pending JP2003256267A (ja) 2002-02-28 2002-02-28 データ処理方法、これを用いたメモリ領域検索システム及びプログラム

Country Status (2)

Country Link
US (1) US20040024793A1 (ja)
JP (1) JP2003256267A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102239188A (zh) 2008-10-07 2011-11-09 陶氏环球技术有限责任公司 使用高活性链转移剂制造的具有改进的光学性质的高压低密度聚乙烯树脂
US20110196105A1 (en) * 2010-02-08 2011-08-11 Dow Global Technologies Inc. Novel high pressure, low density polyethylene resins produced through the use of highly active chain transfer agents

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK46493D0 (da) * 1993-04-22 1993-04-22 Frank Uldall Leonhard Metode for signalbehandling til bestemmelse af transientforhold i auditive signaler
US6629111B1 (en) * 1999-10-13 2003-09-30 Cisco Technology, Inc. Memory allocation system
US6735760B1 (en) * 2000-11-08 2004-05-11 Sun Microsystems, Inc. Relaxed lock protocol
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition

Also Published As

Publication number Publication date
US20040024793A1 (en) 2004-02-05

Similar Documents

Publication Publication Date Title
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
KR101291016B1 (ko) 사용자 핸들러 등록 장치, 프로세서, 시스템 및 방법
US8024505B2 (en) System and method for optimistic creation of thread local objects in a virtual machine environment
US7502897B2 (en) Object based conflict detection in a software transactional memory
JP5182816B2 (ja) 共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム
US9513959B2 (en) Contention management for a hardware transactional memory
US9626187B2 (en) Transactional memory system supporting unbroken suspended execution
JP4774056B2 (ja) トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置
US20070198978A1 (en) Methods and apparatus to implement parallel transactions
US20080320282A1 (en) Method And Systems For Providing Transaction Support For Executable Program Components
US7209918B2 (en) Methods and apparatus for locking objects in a multi-threaded environment
US10169092B2 (en) System, method, program, and code generation unit
US20060026371A1 (en) Method and apparatus for implementing memory order models with order vectors
JP2009521767A (ja) 有限トランザクションメモリシステム
KR20000076584A (ko) 컴퓨터 프로세싱 시스템에서의 로드 연산을 재순서화하기위한 방법 및 장치
US6260191B1 (en) User controlled relaxation of optimization constraints related to volatile memory references
JP2017520857A5 (ja)
US6490668B2 (en) System and method for dynamically moving checksums to different memory locations
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JPH07311740A (ja) コンピュータ
JP2003256267A (ja) データ処理方法、これを用いたメモリ領域検索システム及びプログラム
JPH07152551A (ja) コンピュータシステムおよびプログラム実行方法
US8725992B2 (en) Programming language exposing idiom calls to a programming idiom accelerator
CN111522600B (zh) 一种在dsp上的异构计算框架构建方法及系统
JP4370227B2 (ja) プロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050426

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060124

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060203

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060418