JP4981041B2 - キャッシュする方法、装置及びシステム - Google Patents

キャッシュする方法、装置及びシステム Download PDF

Info

Publication number
JP4981041B2
JP4981041B2 JP2008518591A JP2008518591A JP4981041B2 JP 4981041 B2 JP4981041 B2 JP 4981041B2 JP 2008518591 A JP2008518591 A JP 2008518591A JP 2008518591 A JP2008518591 A JP 2008518591A JP 4981041 B2 JP4981041 B2 JP 4981041B2
Authority
JP
Japan
Prior art keywords
thread
data
cache
threads
stage
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.)
Expired - Fee Related
Application number
JP2008518591A
Other languages
English (en)
Other versions
JP2008544417A (ja
Inventor
ダイ,ジンチュアン
リ,ロン
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2008544417A publication Critical patent/JP2008544417A/ja
Application granted granted Critical
Publication of JP4981041B2 publication Critical patent/JP4981041B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本明細書及び特許請求の範囲記載の教示はデータ処理に関し、特にソフトウェア・キャッシングに関する。
パケット処理特有の課題は、スループットを最大化し、最悪のケースのトラフィック・シナリオのレーテンシを最小にする一方で安定性を維持することである。一方、ネットワーク・プロセッサ内の単一の外部メモリ・アクセスに関連したレンテンシは通常、最悪のケースの処理時間よりも大きい。よって、現代のネットワーク・プロセッサは通常、複数のプロセッサを備えた高並列度のアーキテクチャによって実現される。各プロセッサは、複数の処理スレッド(アプリケーション)をサポートすることが可能である。
更に、ネットワーク・アプリケーションは、並列度が高く、長いメモリ・アクセス・レーテンシを隠す目的で通常、マルチスレッド化され、かつ/又はマルチ処理される。新たなパケットがネットワーク・プロセッサに到着すると、一連のタスク(例えば、パケットの受信、ルーティング・テーブルのルックアップ、エンキュー等)がそのパケットに対してネットワーク・プロセッサ内の新たなスレッドによって行われる。しかし、データ又はパケットを更新し得る競合する複数のスレッド間のパケットの処理のインテグリティが維持されることを確実にするために、パケット処理のための局所データ又はパケットに関連した更新は、所定のスレッド順序で、かつアトミックに実行しなければならない。
パケット処理のインテグリティを確実にするために、局所データ又はパケットの順序付けられた部分更新処理は通常、ネットワーク・プロセッサ内で実現される。この処理では、パケットが受信される順序でスレッド・チェインにパケットが配信される。各スレッドは、その順序付けられた部分更新処理に入る前に先行スレッドからの信号を待たなければならない。信号が受信された後、待ちスレッドはデータ又はパケットを読み出し、修正し、メモリに書き戻し、次いで、次の待ちスレッドに完了の信号を送出することが可能である。
この処理は不揮発性動作のレンテンシ(マルチスレッド及び/又はマルチ処理環境でも隠すことが可能でない、読み出し動作に関連したレーテンシなど)をもたらす。
図1A及び図1Bは、例示的な実施例による、マルチスレッド及びマルチ処理の環境における大局データの処理に関連した図である。図1A及び図1Bの図面は、スレッド0及びプロセッサ0から始まる、複数のプロセッサ内の複数スレッドの処理を表す。両方の図面の凡例は、図1A及び図1Bの右側の図に示す。
処理は、マルチスレッド及びマルチ処理環境において処理される大局データ又はパケットに関連する。各スレッドはデータ又はパケットにアクセスしようとし、各スレッドは場合によっては、データ又はパケットを修正又は更新することが可能である。上記処理(以下、「共有データの更新処理」として表す)は、マシン・アクセス可能であり、マシン読み取り可能な媒体内に、図1Bにおけるソフトウェア制御キャッシング命令として実現され、ネットワークを介してアクセス可能である。ネットワークは有線、無線、又は有線及び無線の組み合わせであり得る。
図1Aでは、各スレッドは、所望の大局データ又はパケットをキャッシュから読み出してよい旨の信号を待つ。先行スレッドが前述のデータに行いたい変更を完了してキャッシュに前述のデータを書き戻すまで次のスレッドはデータへの読み出しアクセスを得ないことが図1Aで分かる。これによって、データに対する更新権を有しないスレッド毎にメモリ・アクセス・レーテンシが生じる。
図1Aの処理に関連したレーテンシは、図1Bに表す処理によって隠される。特に、図1Bにおける共有キャッシングの更新処理によって、キャッシュ内のデータへの更新(揮発性)アクセスを特定のスレッドが与えられる前に読み出し目的でデータを特定のプロセッサ内の各スレッドが獲得することが可能になる。例えば、プロセッサ0のスレッド0-3それぞれは、キャッシュ内のデータへの参照を各スレッド0-3が有する状態になるまで順次、又は実質的に並列に信号を互いに転送する。しかし、キャッシュ内のデータに対するその揮発性動作に進む前に、最後のスレッド3から信号を受信するまでスレッド0は待つ。
プロセッサ0内のスレッド0-3全てがもう、データへの読み出しアクセスを有し、キャッシュ内のデータに対して揮発性(書き込み)をスレッド0が実行することがもう可能であることをプロセッサ1内のスレッド3からスレッド0への信号がスレッド0に通知する。この時点で、スレッド0は、キャッシュ内データへの排他的な書き込みアクセスを有する。スレッド0がキャッシュ内の同じデータへの排他的な書き込みアクセスを有する一方、残りのスレッドはキャッシュ内のデータへの読み出しアクセスを有する。
スレッド0は、データを修正し、データに対する変更をキャッシュに書き戻すと、次スレッド(スレッド1)に信号を送出する。これにより、キャッシュ内のデータへの排他的な書き込みアクセスが次スレッドに与えられる。キャッシュ内のデータに対してその更新を最後のスレッド(スレッド3)が実行し、次プロセッサ(プロセッサ1)及びその当初スレッド(スレッド0)に通知されるまでこの処理は続く。このタイプの処理はN-1プロセッサについて続き得る。各プロセッサはY-1個のスレッドを有する。N及びYは0から始まる整数である。
読み出し動作は不揮発であり、通常、キャッシュ・ミスの際にプロセッサによって出されるので、図1Bの共有キャッシングの更新処理が達成される。よって、同じ大局データ又はパケットにスレッドがアクセスしたい場合、各スレッドが当初、データへのアクセスを要求し、特定のプロセッサ内の各スレッドと実質的に並列にキャッシュ内のデータへの参照を提供することが可能である場合に、キャッシュ・ミスがない。一方、キャッシュ・ミスがあった場合、スレッドは、別のデータ又はパケットへのアクセスを望み、キャッシュへのデータのロードは実質的に並列に出すことが可能である。マルチスレッド環境内のデータへのアクセスを当初獲得するうえでのレンテンシがこれによって削減される。
図1Bの共有キャッシングの更新処理は、ネットワーク・プロセッサ内のソフトウェア制御キャッシングとして2段階処理(読み出し段階及び更新段階)として実現することができる。
図2は、例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータの処理に用いるキャッシング・システム200の図である。キャッシング・システム200は、ネットワーク・プロセッサなどのプロセッサの環境内のマシン・アクセス可能であり、マシン読み取り可能な媒体で実現される。
キャッシング・システム200は、コンテンツ・アドレス指定可能なメモリ(CAM)210及び局所メモリ220を含む。CAM220及び局所メモリ220は、図1Bに表すソフトウェア制御キャッシングを提供するようプログラムされる。
CAM210は、最長未使用(LRU)ロジック211及び複数のエントリ212を含む。エントリ212は、データの特定のキャッシングされたエントリ線の状態部分及びタグ部分を記憶する。LRUロジック211は、CAM210内で用いる時間的に順序付けされたエントリ・リストを維持する。
局所メモリ220は、キャッシュ・ラインのデータ部分222を記憶することが可能な索引付けされたレジスタ・ファイル221であり得る。関連したキャッシュ動作(例えば、タグ230のルックアップ、データのロード、データの書き戻し等)それぞれがソフトウェア制御下にある。
実施例では、CAM210は複数の、いくつかの論理CAM210に分割することができる。これは、スレッド内の、連係されていない複数のキャッシング動作を可能にする。
ソフトウェア制御キャッシング・システム200は、図1Bに図示した、共有キャッシングのための更新処理を行う旨の命令によってプログラミングされる。この更新処理は、2段階処理(読み出し段階及び更新段階)として視覚化することができる。各スレッドは、更新段階の開始前に読み出し段階を完了する。更に、読み出し段階を、スレッドそれぞれに並列に、又は実質的に並列に備えることができる。すなわち、読み出し段階の完了のために、キャッシュからのデータへの読み出しアクセスを当初獲得する際に各スレッドがレーテンシをほとんど受けないか、又は全く受けない。
図3A乃至図3Bは、例示的な実施例による、別々のコンテンツ・アドレス指定可能メモリ装置(CAM)及び同じコンテンツ・アドレス指定可能メモリ装置(CAM)を用いたマルチスレッド及びマルチ処理環境におけるデータの処理に関連した図である。処理は、マシン・アクセス可能であり、マシン読み取り可能な媒体で実現される。
図3Aは、別々の論理CAMを用いたスケーラブル・キャッシングを表す。図3Aでは、別々のCAMを用いた2つの更新処理は、図3Aの垂直方向に互いに別個のものである。何れの更新処理も互いに無関係に実行し、進むために他方から信号を受信しなくてよい。図1Bに関して説明したものと同様に、単一更新処理内のプロセッサ0の最後のスレッド3は読み出し参照を有する状態になると当初スレッド0に通知し、スレッド0は、論理CAM内のデータに対して揮発性動作を自由に行うことができる。最後のスレッド3が、データに対するその揮発性動作を完了すると、信号がプロセッサ0のスレッド3からプロセッサ1のスレッド0に送出される。
図3Bは、複数の同じ論理CAMを用いてスケーラブル・キャッシングを表す。図3Bでは、プロセッサ0のスレッド3が第1更新処理内にデータに対してその揮発性処理を完了すると、信号がスレッド3からプロセッサ1のスレッド0に送出され、別の信号が、第2の更新処理のためにプロセッサ0のスレッド0に送出される。すなわち、別々のキャッシングが同じ論理CAMを用いる場合、プロセッサにおける何れかのスレッドによって第2のキャッシングを実行することが可能な状態になる前に、プロセッサにおけるスレッド全てによって第1のキャッシングが完了するように別々のキャッシングを連係させるべきである。
図4A及び図4Bは、例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータの処理中のデッドロックに関連した図である。
ソフトウェア制御キャッシングでは、プロセッサにおける第1のスレッドは、プロセッサにおける最後のスレッドからの信号を待ち得る。前述の待ち状態は図1Bで分かる。図1Bでは、キャッシュにおけるデータに対する更新段階に入る前にスレッド0はスレッド3からの信号を待つ。別の例として、図4Aに示すように更新処理が実現された場合、スレッドの実行は、図4Bに示すものより先に決して進まないことがあり得る。よって、アプリケーションのスレッドに関連した更新処理にデッドロックがないと判定された後、ソフトウェア制御キャッシングを実現すべきである。
図5は、例示的な実施例による、マルチスレッド及びマルチ処理の環境において処理されるデータを更新するソフトウェア制御キャッシング方法500の図である。ソフトウェア制御キャッシングは、マシン・アクセス可能であり、マシン読み取り可能な媒体で実現される。
大局データ又はパケットの更新(ソフトウェア制御キャッシング処理なし)の何れのスレッド・パスにおいても、更新段階の一AWAIT動作及び一ADVANCE動作が存在している。
更に、何れの大局状態更新も処理の更新段階に含まれる。よって、結果として生じるソフトウェア制御処理では、キャッシュ・ルックアップ動作及び書き戻し動作はそれぞれ、実行の何れかの特定のパスにおける更新動作それぞれの前及び後で一度、実行される。更に、キャッシュ・データを更新するために特定の実行パスにおいてアクセスが実行されない場合、対応する読み出し段階の空き更新段階が用いられる。これは、図5に表すロジックによって示すことが可能である。
510では、処理スレッドは、更新処理に進む前に信号「s」を待つ。更新処理が完了すると、信号「s」を次の待ちスレッドに伝搬する。特定のスレッドに対する更新処理が行われない場合、520で、処理スレッドは信号「s」を待ち、次いで、次スレッドに「s」を伝搬することによって進む。
読み出し処理段階及び更新処理段階の組み合わせは530及び540に表す。ここで、530では、そのデータを要求する前に、特定のスレッドは信号「t」を待つ。キャッシュ・ミスが検出された場合、これは、先行スレッドによってデータが要求されていないことを示す。さもなければ、キャッシュ・ミスは発生せず、データは、キャッシュにおける参照によって既に利用可能である。所望のデータへの読み出しアクセスをスレッドが有する状態になると、スレッドは信号「t」を次のスレッドに直ちに転送し、次いで、「t」が戻ってくるのを待つ。「t」が戻ってきた場合、これは、スレッドが、キャッシュにおけるデータをもう更新することが可能であり、排他的制御を有することを示す。更新が完了すると、キャッシュにおけるデータへの揮発性アクセスを待つ次のスレッドに「t」を進める。キャッシュ・データに対する揮発性動作を特定のスレッドが実行したくない場合、540で、そのスレッドは単に待って、読み出し段階に一度、かつ、空き更新段階に一度、信号tを中継する。
図1Aに表す単一更新処理段階は、図1Bに表すような読み出し段階及び更新段階の2段階に変換することが可能である。これを行うために、特定のスレッドに対する揮発性アクセスが与えられる前にキャッシュ・ルックアップ及び読み出し時ミスが挿入され、別のAWAITとADVANCEを含めるよう元の更新段階が修正される。データの大局状態へのアクセスは全て、キャッシュされたデータへの参照に変更され、書き戻し動作はADVANCE前に実行される。
図6は、例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータを処理する複数のスレッド間のソフトウェア制御キャッシングを自動的に実現するための方法600の図である。方法600(以下、「キャッシング・サービス」)は、マシン・アクセス可能であり、マシン読み取り可能な媒体で実現され、ネットワークを介した電磁信号としてアクセス可能であり得る。ネットワークは有線、無線、又は有線及び無線の組み合わせであり得る。
キャッシング・サービスはまず、前述のソフトウェア制御キャッシングによってもたらされ得るデッドロック状態を検出する。最後のスレッドからの信号を当初又は第1のスレッドが待ち、第1のスレッドからの信号を別のスレッドが待つ場合、相互デッドロックが存在する。特定のプロセッサにおける第1のスレッドは、2つの状態下で、最後のスレッドからの信号を待つ。
第1の状態では、第2の段階のAWAITに第1のスレッドが達しており、第1の段階のADVANCEに最後のスレッドが達していない場合、第1のスレッドは最後のスレッドからの信号を待つ。これは、図1Bに、プロセッサ0のスレッド3からの信号を待つプロセッサ0のスレッド0によって示す。この場合、最後のスレッドが第1の段階のADVANCEを通過するまで他スレッドはその実行において第2の段階(更新段階)のAWAITを通過することが可能でない。第1スレッドからの信号を待つ他のスレッドがない場合、ソフトウェア制御キャッシング処理においてデッドロックは存在していない。
第1の段階(読み出し段階)のADVANCEは、処理フローにおいて第2の段階(更新段階)のAWAITに先行するので、AWAIT「s」(スレッド間で信号が転送される)から第2の段階のAWAITへパスが存在している場合、プログラムには、第1状態においてデッドロックがない。ここで、ソースから第2の段階のAWAITへのパスは全て、ADVANCE「s」を含む。さもなければ、その特定の更新はソフトウェア制御キャッシングの適格性がない。
第2のデッドロック状態は、同じ局所CAMを用い、所定の順序で実行される別個の2つのソフトウェア制御キャッシュ処理において生じる。例えば、第1のスレッドが、第2のキャッシング処理の第1の段階のAWAITに達し、最後のスレッドが第1のキャッシング処理の第2の段階のADVANCEにまだ達していない場合、第1のスレッドは、最後のスレッドからの信号を待つ。この状態は図3Bに示す。
前述の場合、第1のキャッシング処理の第2の段階のADVANCEを最後のスレッドが通過するまで、他のスレッドはその実行において、第2のキャッシング処理の第1の段階のAWAITを通過することが可能でない。第1スレッドからの信号を待つ残りのスレッドがない場合、処理においてデッドロックは存在していない。
第2のキャッシング処理の第1の段階のAWAITへのAWAIT「s」からのパス、又は、第1のキャッシング処理の第2の段階のADVANCEへのAWAIT「s」からのパスが存在している場合、第2の状態においてプログラムはデッドロックなしである。ここで、第2のキャッシング処理の第1の段階のAWAITへのソースからのパスは全て、ADVANCE「s」を含む。さもなければ、2つの更新は同じ論理CAMを用いてキャッシングすることが可能でなく、互いに干渉しないと言われる。
ソフトウェア制御キャッシング処理中に、特定のデータに関連した大局状態の適格性のある複数の更新をキャッシングしようとすることがあり得る。別々の論理CAMを用いて2つの更新をキャッシングすることが可能である。しかし、更新が互いに干渉する場合、同じ論理CAMを用いてキャッシングすることが可能でない。よって、キャッシュにおけるデータに対する変換は、適格性のある更新を検出するための干渉グラフとして表すことが可能であり、適格性のある更新毎に適切な論理CAMを割り当てるよう彩色アルゴリズムを処理することができる。
キャッシング・サービスは、複数のCAMを用いてデータに対する干渉状態を検出するための変換処理を提供する。610では、データの大局状態に関連した更新の適格性、及び適格性のある更新間の干渉関係が、データを操作するスレッドの実行パスから計算される。620では、彩色アルゴリズムが、利用可能な論理CAMを用いて処理される。次に、630では、実行パスに適切なキャッシュ・コードを挿入する。次に、この処理の詳細について、図7及び図8によって更に詳細に説明する。
図7は、例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータを処理する複数のスレッド間の適格性状態及び干渉状態を判定するための別の方法700の図である。方法700(以下、「干渉関係検出サービス」)が、マシン・アクセス可能であり、マシン読み取り可能な媒体において実現され、ネットワークを介してアクセス可能である。更新の適格性及び干渉関係がどのようにして計算又は導出されるかを更に例証するために干渉関係検出サービスは図6の610の処理を発展させる。
710では、信号「s」毎に、AWAIT_REQUIRED(s)の組を検査し(ここで、信号「t」は、AWAIT(t)からAWAIT(s)へのパスを有し)、ADVANCE_REQUIRED(s)の組を検査する(ここで、信号「t」は、AWAIT(t)からADVANCE(s)へのパスを有する)よう計算が実行される。AWAIT_REQUIRED(s)及びADVANCE_REQUIRED(s)の組は、順方向選言的(forward disjunctive)データフロー解析を使って計算することができる。よって、命令「n」毎に、データフロー式は以下の通りであり得る。
GEN[n]={信号「t」|命令「n」はAWAIT(t)である}であり;
KILL[n]={}である。
最後に、AWAIT_REQUIRED(s)=Union IN[n]であり、「n」はAWAIT(s)であり、ADVANCE_REQUIRED(s)=Union
IN[m]であり、「m」はADVANCE(s)である。
720では、信号「s」毎に、AWAIT_AVAILABLE(s)組を検査するために計算が行われる。ここで、信号「t」は、ソースからAWAIT(s)への何れのパスもADVANCE(t)を含むような信号である。AWAIT_AVAILABLE(s)の組は、順方向選言的データフロー解析を用いて計算することができる。よって、命令「n」毎に、データフロー式は以下の通りになり得る。
GEN[n]={信号「t」|命令「n」はADVANCE(t)である}であり;
KILL[n]={}である。
最後に、AWAIT_AVAILABLE(s)=共通部分IN[n]であり、ここで「n」はAWAIT(s)である。
730では、大局状態の各更新の適格性は、710及び720での前述の計算組を用いて計算される。更新がキャッシュされた後、その更新部分の元のAWAITは、第2の段階(更新段階)のAWAITによって置き換えられる。したがって、730では、更新段階によって元々保護され、信号「s」を用いて実現される大局状態の更新の場合、AWAIT_REQUIRED(s)がAWAIT_AVAILABLE(s)の部分集合の場合に、その更新がキャッシングに適格である。
更新段階によって元々保護され、信号「s」及び「t」それぞれを用いて実現される適格な2つの更新の場合、「s」がAWAIT_REQUIRED(t)にあるか、又はTがAWAIT_REQUIRED(s)にある。740では、干渉関係は以下のように計算することができる。
(1)「s」がAWAIT_REQUIRED(t)にあり、TがAWAIT_REQUIRED(s)にある場合、それらは互いに干渉する。この場合、2つの更新は別々の制御フロー・パスにおいて別々の順序で実行され、同じ論理CAMを用いて所定の順序でキャッシングすることは可能でない。
(2)「s」がAWAIT_REQUIRED(t)にあり、「t」がAWAIT_REQUIRED(s)にない場合に、AWAIT_REQUIRED(t)がAWAIT_AVAILABLE(t)の部分集合であり、ADVANCE_REQUIRED(s)がAWAIT_AVAILABLE
(t)の部分集合である場合、適格な2つの更新は互いに干渉しない。この場合、信号「s」に関連した更新は、何れかの制御フロー・パスにおける信号「t」に関連した更新前に実行される。更に、2つの更新はともに適格であるので、AWAIT_REQUIRED(t)がAWAIT_AVAILABLE(t)の部分集合になることが確実にされ、よって、第2の状態しか検査しなくてよい。
(3)「s」がAWAIT_REQUIRED(t)になく、「t」がAWAIT_REQUIRED(s)にある場合に、AWAIT_REQUIRED(s)がAWAIT_AVAILABLE(s)の部分集合であり、ADVANCE_REQUIRED(t)がAWAIT_AVAILABLE
(s)の部分集合である場合、上記更新は互いに干渉しない。
図7に示す干渉関係検出サービスの処理は、図6の610の処理を詳細に示す。620の処理によって、干渉関係検出サービスによって計算され、導出される適格な更新の干渉グラフが構築される。更に、620の処理は、利用可能な論理CAMを用いてグラフを彩色しようとする。特定の更新は、彩色することが可能でない場合、キャッシングすることが可能でない。特定の更新を彩色することが可能な場合、彩色される論理CAMを用いてキャッシングされる。図6の630の処理は、図8に更に詳細に表す。
図8は、例示的な実施例による、マルチスレッド及びマルチ処理の環境において処理されるデータの複数のキャッシュを用いてソフトウェア・キャッシング・コードを挿入するための方法の図である。方法800(以下、「キャッシュ・コーディング挿入サービス」)は、マシン・アクセス可能であり、マシン読み取り可能な媒体で実現され、ネットワークを介してアクセス可能である。キャッシュ・コーディング挿入サービスの処理は、図6に示す630の処理を更に詳細に表す。
キャッシュ・コーディング挿入サービスは、ソフトウェア制御キャッシングにおいて用いられるスレッドに別の信号をもたらす。別の信号を論理CAM毎にもたらす。ソフトウェア制御キャッシングは更に、特定の論理CAMによって彩色された適格な更新毎のソフトウェア制御キャッシングを実現する。信号「t」に関連した論理CAMを用いてキャッシングする対象の信号「s」を用いて実現される更新段階によって元々保護される各大局状態の更新は、図8に表すキャッシュ・コーディング挿入サービスによって処理される。
810では、閉集合AW=「n」であることを確認するよう計算が行われる。ここで、nは、AWAIT(s)であり、大局状態のアクセスに達し得るか、又はここで、「n」は集合ADにおいてADVANCE(s)に達し得る。集合AD=「m」であり、ここで、「m」は大局状態のアクセスによって達することが可能であるか、又は「m」は集合AWにおけるAWAIT(s)によって達することができる。集合AW及びADは、2つの選言的データフロー解析(1つは順方向であり、1つは逆方向)を用いて計算することができる。2つの集合AW及びADは、基本的に、キャッシュ読み出し及び書き戻し動作が必要な所である。
820では、キャッシュ読み出し動作が、ソフトウェア制御キャッシング処理内の適切な位置に挿入される。よって、集合AWにおけるAWAIT(s)毎に、(キャッシュ・ルックアップ動作及びミス時読み出し動作を備えた)ソフトウェア制御キャッシングの第1の段階(読み出し段階)が、AWAIT(s)の直前に自動的に挿入される。
830では、キャッシュ・データに対してそのスレッドによって実行される揮発性動作又は不揮発性動作がない、スレッドの処理フローが検出される。この場合、図5に関して前述したように空きキャッシュ読み出し段階がもたらされる。よって、集合AWにないAWAIT(s)毎に、空きのボディーが第1の段階(キャッシュ読み出し部分又は段階)に挿入される。換言すれば、830では、信号が無条件に転送され、キャッシュ読み出し部分又は段階は空き状態である。
840では、キャッシュ・データに対してそのスレッドによって揮発性動作が実行され*−る、スレッドの処理フローに、書き戻し動作が挿入される。同様に、集合ADにおけるADVANCE(s)毎に、そのADVANCE(s)の直前に書き戻し動作を挿入して、ADVANCE生起前にデータがキャッシュに書き戻されることを確実にする。
図1Bによって視覚化されたやり方で、850および860の処理は、更新段階又は更新部分を実現するようソフトウェア制御キャッシング・フローにおけるシグナリングを変更する。
最後に870で、データに対してスレッドによって行われる元のアクセスは、キャッシュ・データへの参照にアクセスするよう変更される。870の後、キャッシュ・コーディング挿入サービスによって挿入される生成キャッシュ・コードを最適化する目的で、部分冗長性除去及びコピー転送などの他の最適化を任意的に実現することができる。
同じデータをアクセスするスレッドに関連した既存の処理フローに本明細書及び特許請求の範囲記載のソフトウェア制御キャッシングを実現するための処理ロジックをどのようにして実現できるかをキャッシュ・コーディング挿入サービスの処理は表している。結果として生じるソフトウェア制御キャッシングによって、第1の段階においてスレッド全てにキャッシュからのデータへの読み出しアクセスを実質的に並列に与えることによってスレッド処理の効率が向上する。デッドロック状態又は干渉状態が存在しないことを確実にし、更新がアトミックに行われることを確実にするよう第2の段階又は更新段階が次いで、順序付けられ、確認される。
図9は、例示的な実施例による、マルチスレッド及びマルチ処理の環境においてデータをキャッシュし、処理するための方法900の図である。方法900(以下、「ソフトウェア制御キャッシング・サービス」)は、マシン・アクセス可能であり、マシン読み取り可能な媒体で実現され、ネットワークを介してアクセス可能である。ソフトウェア制御キャッシング・サービスは、マルチスレッド環境における、かつ、任意的に、マルチ処理環境における複数のスレッドによって参照されるデータの処理を表す。すなわち、ソフトウェア制御キャッシング・サービスは、単一のプロセッサ上でロードし、処理するか、又は911に表すように複数のプロセッサに亘って処理することができる。
910では、キャッシュに収容されたデータへの参照が当初スレッドに転送される。データは、メモリ又は記憶装置からのデータの読み出しの当初スレッドによる試行に応じて参照によって識別される位置でキャッシュに読み出される。その固有のメモリ位置又は記憶位置から所望のデータを当初獲得し、それを参照位置におけるキャッシュに入れる旨をソフトウェア制御キャッシング・サービスに指示するミス時読み出し命令がこれによって生成される。
一実施例では、スレッド間の更新の適格性が912で計算されるように、複数のスレッドに関連したキャッシング処理を修正することによって、910に表す処理が達成される。913では、更新の干渉グラフが彩色され、914では、2段階処理(1つは不揮発性読み出しであり、1つは揮発性動作である)をスレッドが施すためにキャッシング処理にキャッシュ・コードが自動的に挿入される。よって、ソフトウェア制御キャッシング・サービスは、2つの別個の処理(1つは、2段階キャッシング処理を自動的に設定し(912-914によって表し)、1つは、スレッドの実行中にその2段階を実現する(910及び920-941によって表す)。更新適格性を計算し、干渉グラフを彩色し、キャッシュ・コードを挿入する手法の詳細は図6乃至図8に関して前述している。
920では、データへの参照は、最後のスレッドに対する0以上の中間スレッドに反復的に転送される。中間スレッド及び最後のスレッドそれぞれは、当初スレッドの環境内で処理され、それぞれがデータへのアクセスを要求する。キャッシュにおける、参照位置によって識別されるデータへの参照は、中間スレッド及び最後のスレッドに並列に、又は実質的に並列に、ソフトウェア制御キャッシュ・サービスによって、データへの参照が供給される前に、相当なレーテンシをスレッドが受けないように転送することができる。
キャッシュ内のデータへの参照を最後のスレッドが獲得すると、930で、最後のスレッドは、キャッシュ内で参照位置においてデータに対して揮発性動作を実行することがもう可能である旨を当初スレッドに通知する信号を当初スレッドに送出する。当初スレッドがデータに対してその修正を実行し、参照位置でキャッシュに変更を書き戻した後、当初スレッドは931で、次スレッドに信号を転送する。次スレッドは、中間スレッド、又は最後のスレッドの一方である。
932で、次スレッドが最後のスレッドでない場合、揮発性動作を実行する目的でデータへの排他的かつアトミックなアクセスを特定スレッドの処理は、最後のスレッドがデータへの揮発性アクセスを獲得し、その所望の変更をキャッシュ内のデータに行うまで順次反復することが可能である。よって、次スレッドは、単一の実行中に当初スレッドが担った役目を引き受け、キャッシュ内の参照位置に変更を書き戻すと、新たなスレッドが新たな次スレッドに通知する。キャッシュ内のデータに対してその所望の変更を各スレッドが実行するまでこれは続く。
よって、940では、単一の実行中に、データを修正し、キャッシュに参照位置において書き戻すことができる。一実施例では、941で、キャッシュに対して、かつ、やはりデータを収容する更なるキャッシュに対して更新を実行することができる。同一又は別々の複数のキャッシュ(例えば、CAM)間で更新を連係する手法は前述している。
図10は、例示的な実施例による、図9に表すやり方においてデータを処理するようキャッシュ・サービスを修正するための方法1000の図である。方法1000は、マシン・アクセス可能であり、マシン読み取り可能な媒体内の命令として実現される。命令はマシンによって処理されると図10に表す処理を実行する。
命令は、取り外し可能な媒体及び、マシンとのインタフェースに常駐し得る。命令は、アップロードされ、マシンによって処理される。あるいは、命令は、マシンのメモリ内又は記憶装置内に前もって準備し、マシンによって実行することができる。更に他の実施例では、命令を一マシンからネットワークを介してダウンロードし、命令が処理される別のマシン上にインストールすることができる。更に他の実施例では、命令は、別のマシンの指示によって一マシン上でネットワークを介して遠隔に実行することができる。更に、命令は複数のスレッドに対して処理され、特定の任意の実施例では、1011に表すように、1つ又は複数のマシンに関連した複数のプロセッサに亘って処理され得る。
1010では、スレッドの処理に、干渉がなく、更新適格性を有する場合、2段階処理をもたらすようキャッシング・サービスの揮発性段階又は更新段階が命令によって修正される。2段階処理を生成するための当初の自動処理は1012で行われる。すなわち、1013では、命令は、スレッドの更新の適格性を計算し、更新の干渉グラフを彩色し、2段階処理をスレッドが生成するようキャッシュ・コードをキャッシング処理に挿入する。
第1の段階は、複数のスレッドによって要求されるデータをキャッシュに読み出す工程、及び、データへのキャッシュ参照をスレッドそれぞれに与える工程に関連する。書込み動作(揮発性動作)を実行する目的でデータに対する排他的制御を特定のスレッドが与えられる時点の順序を維持することによって、キャッシュ内のデータへの揮発性アクセス又は更新アクセスが第2の段階によって制御される。
1020において、かつ第1の段階(読み出し段階)では、キャッシュ内のデータへの参照がスレッドそれぞれに転送される。当初スレッドの場合、ミス時読み出し動作が行われ、それによって、当初、その固有のメモリ位置又は記憶位置からデータを獲得する旨の命令が導かれる。キャッシュ内のデータへの参照は次いで、1021で、ゼロ以上の中間スレッド、及び最後のスレッドを含み得る残りのスレッドそれぞれに実質的に並列に順次転送される。
1030では、最後のスレッドは、キャッシュ内のデータへの参照を有する状態になると、当初スレッドに通知する。これによって、読み出し段階から更新段階(第2の段階)にキャッシングが移行する。
第2の段階中に、1040で、キャッシュ内のデータの更新、又はそのデータに対する揮発性動作の実行を特定のスレッドが完了すると各スレッドが次スレッドに順次通知する。一実施例では、1041で、スレッドの優先順位を、データへのアクセスをスレッドが要求した時点に応じて判定することができる。よって、当初スレッドが第1のスレッドであるが、それは、当初スレッドがデータに対する第1の要求を行っており、命令によって実行されたミス時読み出し動作を生成したからである。
一実施例では、1042で、特定のスレッドによるデータへの各更新は、キャッシュに対して行い、同時に別々のキャッシュに対して行うことができる。よって、データに対する更新は、複数のキャッシュ間で同期化させることができる。キャッシュは、同じ論理CAM又は別々のCAM(前述の通り)であり得る。
図11は、例示的な実施例によるキャッシング装置1100の図である。キャッシング装置1100は、マシン・アクセス可能であり、マシン読み取り可能な媒体内で実現され、電磁信号としてネットワークを介して任意的にアクセス可能である。
キャッシング装置1100は、キャッシュ・コントローラ1101及びプロセッサ1102を含む。プロセッサ1102はキャッシュ・コントローラ1101をソフトウェア命令として実行し、キャッシュ・コントローラ1101は、複数のスレッド1103A乃至1103Bによって要求されるデータ・アクセスを処理する。プロセッサ1102は、複数のスレッド1103乃至1103Bも実行する。
キャッシュ・コントローラ1101は、図9及び図10それぞれの方法900及び1000に関して前述した処理を実行する。すなわち、キャッシュ・コントローラ1101は、複数スレッド1103A-1103Bによって要求されるデータの2段階キャッシング手法を複数のスレッド1103A-1103Bに提供する。
第1の段階では、ミス時読み出し動作の際に、又は、当初スレッド1103Aによってデータが当初要求された場合に、キャッシュ内の参照にデータを読み出す。データがキャッシュに読み出された後、そのデータへの参照を、残りのスレッド1103B全てに実質的に並列に伝播させる。最後のスレッド1103Bが、キャッシュ内のデータの参照への読み出し参照又はアクセス参照を有する状態になると、最後のスレッド1103Bは信号を第1のスレッド1103Aに送出する。シグナリング及びフローはキャッシュ・コントローラ1101によって管理される。当初スレッド1103Aは次いで、キャッシュ内のデータへの排他的かつアトミックな揮発性アクセスを取得し、その変更を行い、キャッシュへの変更を書き戻す。次に、キャッシュ内のデータへの排他的な揮発性アクセスを次スレッド1103Bが有することを次スレッド1103Bに示すよう当初スレッド1103Aが次スレッド1103Bに通知する。最後のスレッド1103Bがキャッシュ内のデータのその更新を完了するまでこのことは順次続く。この時点で、信号を任意的に、別のプロセッサ上の別のスレッド処理に送出することができる。
一実施例では、キャッシュ・コントローラ1101は、キャッシュ内のデータに行われた変更を、更なる複数のキャッシュと同期化させることができる。更に、特定の場合には、更なるキャッシュが、プロセッサ1002とは別個のプロセッサ上に存在し得る。
更に別の実施例では、キャッシュ・コントローラ1101は、スレッド1103A-1103Bの処理フローを観察し、デッドロック状態が存在し得るように2つ以上のスレッドが互いに干渉し得ることを決定することができる。前述の実施例では、キャッシュ・コントローラ1101は、キャッシュからデータを除去し、データに関連したメモリ又は記憶装置からデータを別の、又は適切なアクセス機構を介して獲得するようスレッド1103A-1103Bに命令することができる。
図12は、例示的な実施例によるキャッシング・システム1200の図である。キャッシング・システム1200は、マシン・アクセス可能であり、マシン読み取り可能な媒体で実現される。キャッシング・システム1200は、図11のキャッシング装置1100を含み、更なる構成部分を含む。
特に、キャッシング・システム1200は、キャッシュ・コントローラ1201、プロセッサ1202及びディスプレイ1203を含む。プロセッサ1202によって、キャッシュ・コントローラ1201及び複数のスレッド1203Aー1203B(データへアクセスしようとする)が実行される。キャッシング・システム1200は、プリンタ1204及びログ1205も含む。次に、前述それぞれを順次説明する。
キャッシュ・コントローラ1201は、図11のキャッシュ・コントローラ1101に関して前述した手法を実行する。同様に、プロセッサ1202は、図11のプロセッサ1102に関して前述した処理を実行する。スレッド1203A乃至1203Bはデータを処理し、図11のスレッド1103A乃至1103Bに関して前述したやり方でキャッシュを介してキャッシュ・コントローラ1201からデータを獲得する。
ディスプレイ1203は、キャッシュ・コントローラ1201、又はキャッシュ・コントローラ1201によって管理される1つ若しくは複数のキャッシュに関連した状態又は結果を示す。
一実施例では、キャッシング・システム1200はプリンタ1204も含む。プリンタ1204は、キャッシュ・コントローラ1201、又は、キャッシュ・コントローラ1201によって管理される1つ若しくは複数のキャッシュに関連した状態若しくは結果を印刷する。
更に別の実施例では、キャッシング・システム1200がログ1205を含む。ログ1205は、キャッシュ・コントローラ1201の動作、又は、キャッシュ・コントローラ1201によって管理される1つ若しくは複数のキャッシュに関連したメモリ又は記憶装置に状態若しくは結果を記録するか収容する。
前述の説明は、限定的でなく、例証的なものである。多くの他の実施例は、当業者には、上記記載をレビューすることによって明らかである。本発明の実施例の範囲はよって、特許請求の範囲、及び前述の特許請求の範囲に権利が与えられる均等物の完全な範囲を参照して判定するものとする。
技術的な開示の特性及び趣旨を読者がすばやく分かることを可能にするために米国特許法施行規則1.72(b)に準拠して要約書を記載する。上記要約書は、特許請求の範囲の範囲又は趣旨を解釈若しくは制限するために用いないものとする。
実施例の前述の説明では、本開示を簡潔にする目的で種々の構成を単一の実施例に集約している。各請求項に明記された構成よりも多い構成を本発明の特許請求の範囲記載の実施例が有するという意図を反映しているとして本開示方法が解されないものとする。むしろ、特許請求の範囲が反映するように、本発明の技術的内容は、開示された単一の実施例の構成全てよりも少ない構成にあり得る。よって、特許請求の範囲を本願の実施例の説明にこれによって組み入れ、各請求項はそれ自身が別個の例示的な実施例とする。
例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータの処理に関連した図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータの処理に関連した図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータの処理に用いるキャッシング・システムの図である。 例示的な実施例による、別々のコンテンツ・アドレス指定可能メモリ装置及び同じコンテンツ・アドレス指定可能メモリ装置を用いたマルチスレッド及びマルチ処理環境におけるデータの処理に関連した図である。 例示的な実施例による、別々のコンテンツ・アドレス指定可能メモリ装置及び同じコンテンツ・アドレス指定可能メモリ装置を用いたマルチスレッド及びマルチ処理環境におけるデータの処理に関連した図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータの処理中のデッドロックに関連した図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータの処理中のデッドロックに関連した図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境において処理されるデータを更新するソフトウェア制御キャッシングの図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータを処理する複数のスレッド間のソフトウェア制御キャッシングを自動的に実現するための方法の図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境におけるデータを処理する複数のスレッド間の適格性状態及び干渉状態を判定するための方法の図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境において処理されるデータの複数のスレッドを用いてソフトウェア・キャッシング・コードを挿入するための方法の図である。 例示的な実施例による、マルチスレッド及びマルチ処理の環境においてデータをキャッシュし、処理するための方法の図である。 例示的な実施例による、図9に表すやり方においてデータを処理するようキャッシュ・サービスを修正するための方法の図である。 例示的な実施例によるキャッシング装置の図である。 例示的な実施例によるキャッシング・システムの図である。

Claims (20)

  1. マルチ処理環境においてデータをキャッシングし、処理する方法であって、
    キャッシュ内に収容されたデータの位置への参照を当初スレッドに、1つ又は複数のプロセッサによって転送する工程と、
    最後のスレッドに達するまで前記参照を次スレッドに反復的に、前記1つ又は複数のプロセッサによって転送する工程であって、前記次スレッドが中間スレッド及び前記最後のスレッドの一方を備える工程と、
    前記当初スレッドによって処理される当初の揮発性動作に前記キャッシュ内の前記データが利用可能である旨を前記最後のスレッドから前記当初スレッドに、前記1つ又は複数のプロセッサによって通知する工程と、
    前記当初の揮発性動作が前記キャッシュ内で更新した後に前記データに対する次の揮発性動作を前記次のスレッドが実行することが適格である旨を前記当初スレッドから前記次スレッドに、前記1つ又は複数のプロセッサによって通知する工程とを備える方法。
  2. 請求項1記載の方法であって、前記最後のスレッドに達するまで、前記データに対して前記キャッシュへの更新が行われた後に前記次スレッドから新たな次スレッドに、前記1つ又は複数のプロセッサにより、反復的に通知する工程を更に備える方法。
  3. 請求項1記載の方法であって、
    更新のために前記当初スレッド、0以上の中間スレッド、及び前記最後のスレッドについて更新の適格性を、前記1つ又は複数のプロセッサによって計算する工程と、
    前記当初スレッド、前記0以上の中間スレッド、及び前記最後のスレッドの更新干渉グラフを、前記1つ又は複数のプロセッサによって彩色する工程であって、前記干渉グラフが、前記当初スレッド、前記0以上の中間スレッド、及び前記最後のスレッドの干渉関係を含む工程と、
    適格性が存在している場合にキャッシュ命令、前記1つ又は複数のプロセッサによって挿入する工程とを備え、前記キャッシュ命令は処理を自動的に可能にする方法。
  4. 請求項3記載の方法であって、彩色する工程は、前記当初スレッド、前記0以上の中間スレッド、及び前記最後のスレッドに関連した利用可能な論理コンテンツ・アドレス指定可能メモリ(CAM)装置を、前記1つ又は複数のプロセッサによって用いる工程を更に含む方法。
  5. 請求項1記載の方法であって、通知する工程は、
    前記当初スレッドによって前記データを、前記1つ又は複数のプロセッサによって修正する工程と、
    前記データを修正データとして前記キャッシュに前記参照の位置において、前記1つ又は複数のプロセッサによって書き戻す工程とを更に含む方法。
  6. 請求項1記載の方法であって、複数のプロセッサに亘って処理する工程を更に備える方法。
  7. 請求項1記載の方法であって、前記キャッシュと、0以上の中間スレッド又は前記最後のスレッドによって用いられる1つ又は複数の更なるキャッシュとに対して前記更新を、前記1つ又は複数のプロセッサによって実行する工程を更に備える方法。
  8. 処理するとマシンに、
    複数のスレッドに関連した処理に干渉がなく、修正の適格性がある場合、第1の段階及び第2の段階を含めるようキャッシング・サービスの揮発性段階を自動的に修正する機能と、
    当初スレッド、0以上の中間スレッド、及び最後のスレッドを含む前記複数のスレッドに、キャッシュ内のデータの位置への参照を第1の段階中に転送する機能と、
    前記最後のスレッドが前記キャッシュ内のデータの位置への参照を含む状態になると前記最後のスレッドから前記当初スレッドに通知する機能と、
    前記キャッシュ内の前記データへの修正を、現在処理しているスレッドが更新した状態になると、前記当初スレッドから始めて前記複数のスレッドそれぞれから前記第2の段階中に順次通知する機能とを実行させる関連した命令を記録させたマシン読み取り可能な記録媒体。
  9. 請求項8記載の記録媒体であって、複数のプロセッサに亘って前記命令を処理する旨の命令を更に含み、別々のキャッシュを各プロセッサが含む記録媒体。
  10. 請求項9記載の記録媒体であって、前記キャッシュ及び前記別々のキャッシュ内の前記データに対して行われる更新を同期化させる旨の命令を更に含む記録媒体。
  11. 請求項8記載の記録媒体であって、
    大局状態の更新の適格性と、前記複数のスレッドの前記更新間の干渉関係とを計算する命令と、
    利用可能な論理コンテンツ・アドレス指定可能なメモリ装置を用いて前記複数のスレッドの干渉グラフを彩色する命令であって、前記干渉グラフが前記複数のスレッドの干渉関係を含む命令と、
    前記媒体の前記命令を実行するために前記複数のスレッドに関連した処理にキャッシュ命令を挿入する命令とを更に含む記録媒体。
  12. 請求項11記載の記録媒体であって、前記スレッド毎に並列に前記第1の段階を実質的に実行する旨の命令を更に含む記録媒体。
  13. 請求項11記載の記録媒体であって、前記第2の段階を処理するために前記スレッドの優先順序を判定する旨の命令を更に含む記録媒体。
  14. 装置であって、
    キャッシュ・コントローラと、
    前記キャッシュ・コントローラを処理するためのプロセッサとを備え、前記キャッシュ・コントローラは、1つ又は複数のキャッシュを介して複数のスレッドのデータへのアクセスを管理し、前記キャッシュ・コントローラは第1の段階及び第2の段階を処理し、前記第1の段階は、前記1つ又は複数のキャッシュ内のデータの位置への参照を前記複数のスレッドそれぞれに供給し、前記第2の段階は、前記1つ又は複数のキャッシュ内の前記データを特定のスレッドが更新した状態になると前記複数のスレッドそれぞれに順次通知する装置。
  15. 請求項14記載の装置であって、前記キャッシュ・コントローラは、前記複数のスレッドのうちの2つ以上が互いに干渉するか否かを決定し、肯定の場合、前記データを前記1つ又は複数のキャッシュから除去する装置。
  16. 請求項14記載の装置であって、キャッシュ・コントローラは、前記1つ又は複数のキャッシュ内の前記データへの修正を同期化させる装置。
  17. 請求項14記載の装置であって、前記1つ又は複数のキャッシュのうちのいくつかが1つ又は複数の別々のプロセッサ上に存在している装置。
  18. 請求項14記載の装置であって、前記第1の段階は、前記データに対する不揮発性動作に関連している装置。
  19. 請求項14記載の装置であって、前記第2の段階は、前記データに対する発性動作に関連している装置。
  20. 請求項14記載の装置であって、前記キャッシュ・コントローラは、前記第1の段階及び前記第2の段階を有する2段階のソフトウェア制御キャッシング処理を自動的に実現するために、前記複数のスレッドに関連した単一段階のキャッシング処理にキャッシュ命令を挿入する装置。
JP2008518591A 2005-06-29 2005-06-29 キャッシュする方法、装置及びシステム Expired - Fee Related JP4981041B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2005/000945 WO2007000081A1 (en) 2005-06-29 2005-06-29 Methods, apparatus, and systems for caching

Publications (2)

Publication Number Publication Date
JP2008544417A JP2008544417A (ja) 2008-12-04
JP4981041B2 true JP4981041B2 (ja) 2012-07-18

Family

ID=37595044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008518591A Expired - Fee Related JP4981041B2 (ja) 2005-06-29 2005-06-29 キャッシュする方法、装置及びシステム

Country Status (6)

Country Link
US (1) US7412568B2 (ja)
EP (1) EP1896956A1 (ja)
JP (1) JP4981041B2 (ja)
KR (1) KR100974106B1 (ja)
CN (1) CN101213527A (ja)
WO (1) WO2007000081A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US8655833B2 (en) * 2008-06-17 2014-02-18 Qualcomm Incorporated Database architecture for supporting group communications among wireless communication devices
US7591019B1 (en) 2009-04-01 2009-09-15 Kaspersky Lab, Zao Method and system for optimization of anti-virus scan
US8438201B2 (en) * 2010-04-30 2013-05-07 Raytheon Applied Signal Technology, Inc. Digital fractional integrator
WO2012046300A1 (ja) * 2010-10-05 2012-04-12 富士通株式会社 情報処理装置、情報処理プログラム、および情報処理方法
WO2012046301A1 (ja) * 2010-10-05 2012-04-12 富士通株式会社 情報処理装置、情報処理プログラム、および情報処理方法
US20130191846A1 (en) * 2010-10-12 2013-07-25 Nec Corporation Data processing method, data processing device, and non-transitory computer readable medium storing data processing program
JP6046870B1 (ja) * 2013-12-05 2016-12-21 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. テーブルネットワークの繰り返し適用のための計算装置
DE102014104142B4 (de) * 2014-03-25 2015-10-22 Intel IP Corporation Quantisierungsschaltung und Verfahren zum Quantisieren einer Eingangsgröße
CN108182152A (zh) * 2017-11-28 2018-06-19 深圳市丰巢科技有限公司 一种基于Redis的本地缓存刷新实现方法及装置
CN112631802B (zh) * 2019-04-29 2024-04-12 杭州涂鸦信息技术有限公司 一种线程间通信方法及相关装置
US20230097115A1 (en) * 2021-09-27 2023-03-30 Advanced Micro Devices, Inc. Garbage collecting wavefront

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69535330T2 (de) * 1994-09-14 2007-05-31 Intel Corporation, Santa Clara Caching-System mit Explitzer Folgeliste
JPH08116192A (ja) * 1994-10-19 1996-05-07 Toshiba Corp 同軸ケーブルのシールド構造
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US5724586A (en) * 1996-09-30 1998-03-03 Nec Research Institute, Inc. Method for improving cache locality of a computer program
JP3604029B2 (ja) * 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
US6665704B1 (en) * 1999-06-18 2003-12-16 Sun Microsystems, Inc. Bounding delays and reducing threading overheads in caching
US6675261B2 (en) * 2000-12-22 2004-01-06 Oblix, Inc. Request based caching of data store data
JP3796124B2 (ja) * 2001-03-07 2006-07-12 株式会社ルネサステクノロジ スレッド間優先度可変プロセッサ
JP3661614B2 (ja) * 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US20040103248A1 (en) * 2002-10-08 2004-05-27 Hass David T. Advanced telecommunications processor
WO2004068361A1 (ja) * 2003-01-27 2004-08-12 Fujitsu Limited 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core

Also Published As

Publication number Publication date
KR100974106B1 (ko) 2010-08-04
US7412568B2 (en) 2008-08-12
CN101213527A (zh) 2008-07-02
EP1896956A1 (en) 2008-03-12
KR20080014085A (ko) 2008-02-13
WO2007000081A1 (en) 2007-01-04
US20080034164A1 (en) 2008-02-07
JP2008544417A (ja) 2008-12-04

Similar Documents

Publication Publication Date Title
JP4981041B2 (ja) キャッシュする方法、装置及びシステム
US6636950B1 (en) Computer architecture for shared memory access
KR100641988B1 (ko) 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치
CN104375958B (zh) 高速缓存存储器管理事务性存储器访问请求
US6757787B2 (en) Adaptive cache coherence protocols
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
KR100704089B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
US20080263284A1 (en) Methods and Arrangements to Manage On-Chip Memory to Reduce Memory Latency
US20050160132A1 (en) Transaction references for requests in a multi-processor network
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
US9928057B2 (en) Method of providing a non-cacheable area in memory
JP2005513611A (ja) データ処理システム
JP2008503821A (ja) 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム
US6704833B2 (en) Atomic transfer of a block of data
JP2020506483A (ja) コンペアアンドスワップトランザクション
JP2006040090A (ja) キャッシュメモリ制御装置、キャッシュメモリ制御方法、中央処理装置、情報処理装置、中央処理方法。
US9367461B2 (en) Ordering constraint management within coherent memory systems
US8010956B1 (en) Control transfer table structuring
TWI758317B (zh) 用於提供資料存取行為原子集的裝置及方法
JP3566746B2 (ja) 情報処理装置
JP2011150427A (ja) マルチプロセッサシステムおよびその制御方法
JPH08123722A (ja) 情報処理システムにおける記憶制御方法および記憶制御装置
JP2000020477A (ja) 情報処理システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110608

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120321

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120419

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150427

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees