JPWO2008155827A1 - キャッシュ制御装置及び制御方法 - Google Patents

キャッシュ制御装置及び制御方法 Download PDF

Info

Publication number
JPWO2008155827A1
JPWO2008155827A1 JP2009520181A JP2009520181A JPWO2008155827A1 JP WO2008155827 A1 JPWO2008155827 A1 JP WO2008155827A1 JP 2009520181 A JP2009520181 A JP 2009520181A JP 2009520181 A JP2009520181 A JP 2009520181A JP WO2008155827 A1 JPWO2008155827 A1 JP WO2008155827A1
Authority
JP
Japan
Prior art keywords
thread
access request
atomic instruction
instruction
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009520181A
Other languages
English (en)
Other versions
JP4973730B2 (ja
Inventor
直宏 清田
直宏 清田
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
Publication of JPWO2008155827A1 publication Critical patent/JPWO2008155827A1/ja
Application granted granted Critical
Publication of JP4973730B2 publication Critical patent/JP4973730B2/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
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F13/10Program control for peripheral devices
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

複数のスレッドで共有されるキャッシュに対してのアクセス要求を制御するために、各スレッドに対応付けて設けられるフラグを記憶する記憶手段を備えるようにして、スレッドがアトミック命令の実行に入る場合に、記憶手段に記憶されるフラグに規定の値を書き込み、さらに、そのアトミック命令を完了する場合に、その値とは異なる規定の値を書き込むようにすることで、スレッドがアトミック命令を実行中であるのか否かを表示するようにする。そして、あるスレッドからアクセス要求が発行される場合に、記憶手段のフラグ値を参照することで、そのスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断して、別のスレッドがアトミック命令を実行中であることを判断する場合には、アクセス要求を待機させるようにする。これにより、アトミック命令を処理する際に必要となる排他制御処理を簡略な構成に従って実現できるようになる。

Description

本発明は、SMT(Simultaneous Multi Thread)方式のプロセッサで用いられるキャッシュ制御装置及び制御方法に関し、特に、SMT方式のプロセッサにおいて、CAS(Compare And Swap)命令などのアトミック命令を処理する際に必要となる排他制御処理を簡略な構成に従って実現するキャッシュ制御装置及び制御方法に関する。
SMT方式のプロセッサは複数のスレッドを同時に実行するプロセッサである。このSMT方式のプロセッサでは、複数のスレッドでキャッシュが共有されることになるので、シングル・スレッド方式のプロセッサで用いられているキャッシュ制御とは異なる構成のキャッシュ制御を構築する必要がある。
図17に、シングル・スレッド方式のプロセッサで用いられているキャッシュ制御の構成を図示する。
ここで、図中に示す1000は命令制御部、2000はキャッシュ制御部、2001はキャッシュRAM、2002はフェッチ・ポート(Fetch Port)、2003はストア・ポート(Store Port)、2004はフェッチ・ポート2002に対応付けて備えられる選択回路、2005はストア・ポート2003に対応付けて備えられる選択回路、2006はフェッチ・ポート2002に対応付けて備えられるチェック回路、2007はストア・ポート2003に対応付けて備えられるチェック回路、2008はフェッチ・ポート2002およびストア・ポート2003に対応付けて備えられるチェック回路、2009は吐き出し要求のためのチェック回路、2010は論理積回路、2011は優先制御回路である。
図17に示すように、命令制御部1000からのメモリアクセス要求は、一旦、キャッシュ制御部2000にある複数のエントリを持つフェッチ・ポート2002に保持される。
フェッチ・ポート2002の各エントリには命令順に従ってアクセス要求が割り当てられるが、メモリアクセスをアウト・オブ・オーダーで処理するプロセッサにおいては、順不同で読み出されてキャッシュアクセス処理を行い、キャッシュアクセス処理が完了するとそのフェッチ・ポート2002のエントリは開放される。
有効なフェッチ・ポート2002のエントリの中で最も古いエントリは、図示しない制御回路の生成するFP−TOQ(Fetch-Port-Top-Of-Queue)が指し示す。
また、命令制御部1000からのメモリアクセス要求がストア要求である場合には、その要求はフェッチ・ポート2002に保持されると同時に、ストア・ポート2003にも保持される。
ストア要求を処理するときには、アドレス変換処理やアクセス要求の順序性保証などに問題がなければ、その時点でフェッチ・ポート2002のエントリは開放され、後はストア・ポート2003がキャッシュRAM2001へのストア処理を管理し、ストア処理が完了するとそのストア・ポート2003のエントリは開放される。
有効なストア・ポート2003のエントリの中で最も古いエントリは、図示しない制御回路の生成するSP−TOQ(Store-Port-Top-Of-Queue)が指し示す。
命令制御部1000からのメモリアクセス要求の一つに、CAS命令などによるアトミックなロード・ストア要求(以下、フェッチ・アンド・ストア要求と称する)がある。
このフェッチ・アンド・ストア要求のロードからストア実行までの間は、他命令による該当データの参照・更新が禁止されなければならない。
そのため、フェッチ・アンド・ストア要求がデータAにアクセスするときには、
(a−1)フェッチ・アンド・ストア要求の処理は、それに先行するデータAをアクセ スする要求の処理が全て完了するまで抑止する
(a−2)フェッチ・アンド・ストア要求より後にデータAをアクセスする要求の処理 は、フェッチ・アンド・ストア要求の処理が完了するまで抑止する
(b) フェッチ・アンド・ストア要求の処理開始から完了までの間は、キャッシュ RAM2001からデータAを吐き出すことを抑止する
という条件を設けることで、条件(a−1),(a−2)によりフェッチ・アンド・ストア対象データに対するプロセッサ内の排他制御を保証し、条件(b)によりマルチプロセッサ構成におけるプロセッサ間の排他制御を保証する必要がある。
そこで、条件(a−1)については、チェック回路2006,2007を使って、図18および図19のフローチャートに示すように、フェッチ・アンド・ストア要求の処理開始を、それが保持されているフェッチ・ポート2002とストア・ポート2003のエントリがFP−TOQかつSP−TOQであれば許すことで保証している。
ここで、図18のフローチャートでは、選択回路2004,2005の選択処理に従って、フェッチ・ポート2002のFP#mというエントリ(m番目のエントリ)およびストア・ポート2003のSP#nというエントリ(n番目のエントリ)に保持されているアクセス要求(request#m=request#n)を処理することを想定している。
次に、条件(a−2)については、チェック回路2008を使って、図18および図20のフローチャートに示すように、フェッチ・アンド・ストア要求以外のアクセス要求の処理開始を、FP−TOQのエントリからそのアクセス要求が保持されているフェッチ・ポート2002のエントリまでの間にフェッチ・アンド・ストア要求のエントリが存在する場合には抑止し、そのようなエントリが存在しないものの、ストア・ポート2003に保持されている先行ストア要求の対象データと一致する場合には抑止することで保証している。
そして、条件(b)については、チェック回路2009を使って、図21のフローチャートに示すように、キャッシュRAM2001からのデータの吐き出し処理開始を、SP−TOQのエントリがフェッチ・アンド・ストア要求である場合には抑止することで保証している。
このような構成に従って、シングル・スレッド方式のプロセッサでは、フェッチ・アンド・ストア命令の実行にあたって要求されることになる排他制御処理を実現するようにしている。
一方、SMT方式のプロセッサでは、スレッド間の排他制御が必要になることから、このように構成されるシングル・スレッド方式のプロセッサで用いられているキャッシュ制御をそのまま利用する訳にはいかない。
しかるに、SMT方式のプロセッサを実装する場合に、フェッチ・アンド・ストア命令の実行にあたって要求されることになる排他制御処理を、どのような構成に従って実現するのかということについては、現在までのところ開示されていないというのが実情である。
これから、メーカとしては、SMT方式のプロセッサを実装する場合に、CAS命令などのフェッチ・アンド・ストア命令を処理する際に必要となる排他制御処理を実現する新たな構成のキャッシュ制御技術を構築する必要がある。
ここで、本発明に関連する技術として、下記の特許文献1には、SMT方式のプロセッサにおいて、スレッド間での共有データの読み出し及び書き込みの実行順序の一貫性を保証することを実現する発明が記載されている。
WO2004/068361号公報
前述したように、SMT方式のプロセッサでは、スレッド間の排他制御が必要になることから、このように構成されるシングル・スレッド方式のプロセッサで用いられているキャッシュ制御をそのまま利用する訳にはいかない。
しかるに、SMT方式のプロセッサを実装する場合に、フェッチ・アンド・ストア命令の実行にあたって要求されることになる排他制御処理を、どのような構成に従って実現するのかということについては、現在までのところ開示されていないというのが実情である。
これから、メーカとしては、SMT方式のプロセッサを実装する場合に、CAS命令などのフェッチ・アンド・ストア命令を処理する際に必要となる排他制御処理を実現する新たな構成のキャッシュ制御技術を構築する必要がある。
本発明はかかる事情に鑑みてなされたものであって、SMT方式のプロセッサにおいて、CAS命令(Compare And Swap命令)などの複数の処理を不可分に実行するアトミック命令を処理する際に必要となる排他制御処理を簡略な構成に従って実現できるようにする新たなキャッシュ制御技術の提供を目的とする。
〔i〕第1の構成
前記の目的を達成するために、本発明のキャッシュ制御装置は、同時に実行される複数のスレッドで共有されるキャッシュに対してのアクセス要求を制御するために、(1)各スレッドに対応付けて設けられて、そのスレッドがアトミック命令(例えば、アトミックロードストア命令などのアトミック命令)の実行に入る場合に規定の値を表示し、そのアトミック命令を完了する場合にその値とは異なる規定の値を表示するフラグを記憶する記憶手段と、(2)あるスレッドからアクセス要求が発行される場合に、記憶手段の記憶するフラグ値を参照することで、そのスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断する判断手段と、(3)判断手段が別のスレッドがアトミック命令を実行中であることを判断する場合に、アクセス要求を待機させる処理を実行する実行手段と、(4)キャッシュからのデータの吐き出し要求がある場合に、記憶手段の記憶するフラグ値を参照することで、全てのスレッドがアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合に、キャッシュからのデータの吐き出し処理の実行を指示する指示手段と、(5)記憶手段の記憶するフラグ値を参照することで、スレッド内におけるアトミック命令についての排他制御を実行するスレッド内排他制御手段とを備えるように構成する。
このように構成されるときに、さらに、(6)最後にアクセス要求の処理を行ったスレッドがどのスレッドであるのかについて示す情報を記憶する第2の記憶手段と、(7)あるスレッドからアトミック命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、待機処理により待機させられているアクセス要求が存在するのか否かを判断する第2の判断手段と、(8)第2の判断手段が待機処理により待機させられているアクセス要求の存在を判断する場合に、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミック命令に係るアクセス要求を選択するのか、その待機させられているアクセス要求を選択するのかを決定する決定手段と、(9)あるスレッドからアトミックでない命令(例えば、アトミックロードストア命令でない命令)に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、アトミック命令に係るアクセス要求の発行要求があるのか否かを判断する第3の判断手段と、(10)第3の判断手段がアトミック命令に係るアクセス要求の発行要求があることを判断する場合に、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミックでない命令に係るアクセス要求を選択するのか、その発行要求のあるアトミック命令に係るアクセス要求を選択するのかを決定する第2の決定手段とを備えるように構成する。
このように構成される本発明のキャッシュ制御装置では、スレッドがアトミック命令の実行に入る場合に、記憶手段に記憶される該当するフラグに規定の値を書き込み、さらに、そのアトミック命令を完了する場合に、その値とは異なる規定の値を書き込むようにすることで、各フラグがそれに対応付けられるスレッドがアトミック命令を実行中であるのか否かを表示するようにする。
このフラグ値の表示を受けて、あるスレッドからアクセス要求が発行される場合に、記憶手段の記憶するフラグ値を参照することで、そのスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断して、別のスレッドがアトミック命令を実行中であることを判断する場合には、アクセス要求を待機させるようにする。
そして、キャッシュからのデータの吐き出し要求がある場合に、記憶手段の記憶するフラグ値を参照することで、全てのスレッドがアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合には、キャッシュからのデータの吐き出し処理の実行を指示するようにする。すなわち、いずれかのスレッドでアトミック命令を実行中である場合には、キャッシュからのデータの吐き出し処理を待機させるようにするのである。
そして、スレッド内におけるアトミック命令についての排他制御を実行する必要がある場合には、記憶手段の記憶するフラグ値を参照することで、その排他制御を実行するようにする。
この構成を採るときに、特定の1つのスレッドがアトミック命令を実行し続けると、そのスレッド以外のスレッドのアクセス要求が待機され続けることになるという不都合が発生する。
そこで、最後にアクセス要求の処理を行ったスレッドがどのスレッドであるのかについて示す情報を記憶する第2の記憶手段を備えるようにする。
そして、あるスレッドからアトミック命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、待機処理により待機させられているアクセス要求が存在する場合には、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミック命令に係るアクセス要求を選択するのか、その待機させられているアクセス要求を選択するのかを決定するようにする。
この構成を採るときに、あるスレッドからアトミックでない命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、アトミック命令に係るアクセス要求の発行要求がある場合には、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミックでない命令に係るアクセス要求を選択するのか、その発行要求のあるアトミック命令に係るアクセス要求を選択するのかを決定するようにする。
〔ii〕第2の構成
前記の目的を達成するために、本発明のキャッシュ制御装置は、同時に実行される複数のスレッドで共有されるキャッシュに対してのアクセス要求を制御するために、(1)各スレッドに対応付けて設けられて、そのスレッドがアトミック命令(例えば、アトミックロードストア命令などのアトミック命令)の実行に入る場合に規定の値を表示し、そのアトミック命令を完了する場合にその値とは異なる規定の値を表示するフラグを記憶し、さらに、そのスレッドがアトミック命令の実行に入る場合には、そのアトミック命令のアクセス先のアドレス情報を記憶する記憶手段と、(2)あるスレッドからアクセス要求が発行される場合に、記憶手段の記憶するフラグ値を参照することで、そのスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断し、さらに、アトミック命令を実行中であることを判断する場合には、記憶手段の記憶するアドレス情報を参照することで、その実行中のアトミック命令のアクセス先のアドレス情報とそのアクセス要求の指定するアドレス情報とが一致するのか否かを判断する判断手段と、(3)判断手段が別のスレッドがアトミック命令を実行中であることを判断し、かつ、その実行中のアトミック命令のアクセス先のアドレス情報とアクセス要求の指定するアドレス情報とが一致することを判断する場合に、アクセス要求を待機させる処理を実行する実行手段と、(4)キャッシュからのデータの吐き出し要求がある場合に、記憶手段の記憶するフラグ値およびアドレス情報を参照することで、全てのスレッドが吐き出し要求の指定するアドレス情報と一致するアドレス情報をアクセス先とするアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合に、キャッシュからのデータの吐き出し処理の実行を指示する指示手段と、(5)記憶手段の記憶するフラグ値およびアドレス情報を参照することで、スレッド内におけるアトミック命令についての排他制御を実行するスレッド内排他制御手段とを備えるように構成する。
このように構成されるときに、さらに、(6)最後にアクセス要求の処理を行ったスレッドがどのスレッドであるのかについて示す情報を記憶する第2の記憶手段と、(7)あるスレッドからアトミック命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、待機処理により待機させられているアクセス要求が存在するのか否かを判断する第2の判断手段と、(8)第2の判断手段が待機処理により待機させられているアクセス要求の存在を判断する場合に、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミック命令に係るアクセス要求を選択するのか、その待機させられているアクセス要求を選択するのかを決定する決定手段と、(9)あるスレッドからアトミックでない命令(例えば、アトミックロードストア命令でない命令)に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、アトミック命令に係るアクセス要求の発行要求があるのか否かを判断する第3の判断手段と、(10)第3の判断手段がアトミック命令に係るアクセス要求の発行要求があることを判断する場合に、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミックでない命令に係るアクセス要求を選択するのか、その発行要求のあるアトミック命令に係るアクセス要求を選択するのかを決定する第2の決定手段とを備えるように構成する。
このように構成される本発明のキャッシュ制御装置では、スレッドがアトミック命令の実行に入る場合に、記憶手段に記憶される該当するフラグに規定の値を書き込むとともに、そのアトミック命令のアクセス先のアドレス情報を記憶手段に書き込むようにし、さらに、そのアトミック命令を完了する場合に、そのフラグにアトミック命令の実行に入る場合に書き込んだ値とは異なる規定の値を書き込むようにすることで、各フラグがそれに対応付けられるスレッドがアトミック命令を実行中であるのか否かを表示するとともに、アトミック命令を実行中の場合には、アクセス先のアドレス情報を記憶するようにする。
このフラグ値の表示とアドレス情報の記憶とを受けて、あるスレッドからアクセス要求が発行される場合に、記憶手段の記憶するフラグ値を参照することで、そのスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断し、さらに、アトミック命令を実行中であることを判断する場合には、記憶手段の記憶するアドレス情報を参照することで、その実行中のアトミック命令のアクセス先のアドレス情報とそのアクセス要求の指定するアドレス情報とが一致するのか否かを判断して、その判断結果に基づいて、別のスレッドがアトミック命令を実行中であることを判断し、かつ、その実行中のアトミック命令のアクセス先のアドレス情報とアクセス要求の指定するアドレス情報とが一致することを判断する場合には、アクセス要求を待機させるようにする。
そして、キャッシュからのデータの吐き出し要求がある場合に、記憶手段の記憶するフラグ値およびアドレス情報を参照することで、全てのスレッドが吐き出し要求の指定するアドレス情報と一致するアドレス情報をアクセス先とするアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合には、キャッシュからのデータの吐き出し処理の実行を指示するようにする。すなわち、いずれかのスレッドでそのようなアトミック命令を実行中である場合には、キャッシュからのデータの吐き出し処理を待機させるようにするのである。
そして、スレッド内におけるアトミック命令についての排他制御を実行する必要がある場合には、記憶手段の記憶するフラグ値およびアドレス情報を参照することで、その排他制御を実行するようにする。
この構成を採るときに、特定の1つのスレッドがアトミック命令を実行し続けると、そのスレッド以外のスレッドのアクセス要求が待機され続けることになるという不都合が発生する。
そこで、最後にアクセス要求の処理を行ったスレッドがどのスレッドであるのかについて示す情報を記憶する第2の記憶手段を備えるようにする。
そして、あるスレッドからアトミック命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、待機処理により待機させられているアクセス要求が存在する場合には、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミック命令に係るアクセス要求を選択するのか、その待機させられているアクセス要求を選択するのかを決定するようにする。
この構成を採るときに、あるスレッドからアトミックでない命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、アトミック命令に係るアクセス要求の発行要求がある場合には、第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、あるスレッドから発行されたアトミックでない命令に係るアクセス要求を選択するのか、その発行要求のあるアトミック命令に係るアクセス要求を選択するのかを決定するようにする。
以上説明したように、本発明によれば、SMT方式のプロセッサにおいて、CAS命令などのアトミック命令を処理する際に必要となる排他制御処理を簡略な構成に従って実現することができるようになる。
本実施例の適用されるCPUの構成図である。 本実施例を具備する一次キャッシュ制御部の一実施例である。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 最後処理スレッド表示信号制御回路の説明図である。 優先制御回路の実行するフローチャートである。 本実施例を具備する一次キャッシュ制御部の他の実施例である。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 優先制御回路の実行するフローチャートである。 シングル・スレッド方式のプロセッサで用いられているキャッシュ制御の構成図である。 シングル・スレッド方式のプロセッサで用いられているキャッシュ制御処理のフローチャートである。 シングル・スレッド方式のプロセッサで用いられているキャッシュ制御処理のフローチャートである。 シングル・スレッド方式のプロセッサで用いられているキャッシュ制御処理のフローチャートである。 シングル・スレッド方式のプロセッサで用いられているキャッシュ制御処理のフローチャートである。
符号の説明
10 CPU
20 システム制御バス
100 命令・演算制御部
200 一次キャッシュ制御部
201 キャッシュRAM
202 フェッチ・ポート
203 ストア・ポート
204 選択回路
205 選択回路
206 選択回路
207 選択回路
208 優先制御回路
209 FS命令ステータス情報記憶部
210 最終処理スレッド表示信号制御回路
300 二次キャッシュ制御部
301 キャッシュRAM
以下、実施の形態に従って本実施例を詳細に説明する。
図1に、本実施例の適用されるCPU10の構成を図示する。
本実施例の適用されるCPU10は、命令の取り出し要求や演算データの反映要求を発行する命令・演算制御部100と、高速・小容量のキャッシュRAM201を有して、命令・演算制御部100の発行するアクセス要求を受け取り、そのアクセス要求のデータがキャッシュRAM201に格納されている場合には、そのデータを命令・演算制御部100に返すという処理を実行する一次キャッシュ制御部200と、低速・大容量のキャッシュRAM301を有して、命令・演算制御部100の発行するアクセス要求のデータがキャッシュRAM301に格納されている場合には、そのデータを命令・演算制御部100に返すとともにキャッシュRAM201に登録し、キャッシュRAM301に格納されていない場合には、システム制御バス20を介して図示しないメモリにデータの転送を要求するという処理を実行する二次キャッシュ制御部300とを備える。
図2に、本実施例を具備する一次キャッシュ制御部200の一実施例を図示する。
ここで、本実施例の一次キャッシュ制御部200では、スレッド0とスレッド1という2つのスレッドが動作するSMT方式のプロセッサに実装されることを想定しているとともに、16個のエントリを持つフェッチ・ポートと16個のエントリを持つストア・ポートとを備えることを想定している。
本実施例の一次キャッシュ制御部200は、図2に示すように、キャッシュRAM201と、スレッド0用のフェッチ・ポート202-0(図中に示すFP−TH0)と、スレッド1用のフェッチ・ポート202-1(図中に示すFP−TH1)と、スレッド0用のストア・ポート203-0(図中に示すSP−TH0)と、スレッド1用のストア・ポート203-1(図中に示すSP−TH1)と、フェッチ・ポート202-0に対応付けて備えられる選択回路204-0と、フェッチ・ポート202-1に対応付けて備えられる選択回路204-1と、選択回路204-0,1に対応付けて備えられる選択回路205と、ストア・ポート203-0に対応付けて備えられる選択回路206-0と、ストア・ポート203-1に対応付けて備えられる選択回路206-1と、選択回路206-0,1に対応付けて備えられる選択回路207と、優先制御回路208と、FS命令ステータス情報記憶部209とを備える。
ここで、命令・演算制御部100からのメモリアクセス要求は、一旦、一次キャッシュ制御部200のフェッチ・ポート202-0,1にスレッド毎に保持される。そして、フェッチ・ポート202-0,1の各エントリは、要求されたキャッシュアクセス処理が完了するまでアクセス要求を保持し、要求されたキャッシュアクセス処理が完了した時点でアクセス要求を開放する。
また、命令・演算制御部100からのメモリアクセス要求がストア要求であれば、そのメモリアクセス要求はフェッチ・ポート202-0,1に保持されると同時に、ストア・ポート203-0,1にもスレッド毎に保持される。そして、ストア・ポート203-0,1の各エントリは、要求されたキャッシュアクセス処理が完了するまでアクセス要求を保持し、要求されたキャッシュアクセス処理が完了した時点でアクセス要求を開放する。
フェッチ・ポート202-0は、循環的に使用される16個のエントリを有し、スレッド0の発行したアクセス要求を保持する。そして、FP−TOQ−TH0(Fetch-Port-Top-Of-Queue-Thread0)で、スレッド0の発行したアクセス要求の内の処理が完了していない最も古いアクセス要求を保持するエントリ番号を指し示す。
フェッチ・ポート202-1は、循環的に使用される16個のエントリを有し、スレッド1の発行したアクセス要求を保持する。そして、FP−TOQ−TH1(Fetch-Port-Top-Of-Queue-Thread1)で、スレッド1の発行したアクセス要求の内の処理が完了していない最も古いアクセス要求を保持するエントリ番号を指し示す。
ストア・ポート203-0は、循環的に使用される16個のエントリを有し、スレッド0の発行したストア要求を保持する。そして、SP−TOQ−TH0(Store-Port-Top-Of-Queue-Thread0)で、スレッド0の発行したストア要求の内の処理が完了していない最も古いストア要求を保持するエントリ番号を指し示す。
ストア・ポート203-1は、循環的に使用される16個のエントリを有し、スレッド1の発行したストア要求を保持する。そして、SP−TOQ−TH1(Store-Port-Top-Of-Queue-Thread1)で、スレッド1の発行したストア要求の内の処理が完了していない最も古いストア要求を保持するエントリ番号を指し示す。
選択回路204-0は、フェッチ・ポート202-0に対応付けて備えられて、FP−TOQ−TH0の指すエントリを優先するという規定の選択論理に従って、スレッド0の要求するキャッシュアクセス処理のためにフェッチ・ポート202-0のエントリを選択して、そのエントリからアクセス要求を取り出す。
選択回路204-1は、フェッチ・ポート202-1に対応付けて備えられて、FP−TOQ−TH1の指すエントリを優先するという規定の選択論理に従って、スレッド1の要求するキャッシュアクセス処理のためにフェッチ・ポート202-1のエントリを選択して、そのエントリからアクセス要求を取り出す。
選択回路205は、図示しないスレッド選択信号などの指示に従って、選択回路204-0の出力するアクセス要求(スレッド0のアクセス要求)を選択するか、選択回路204-1の出力するアクセス要求(スレッド1のアクセス要求)を選択する。
選択回路206-0は、ストア・ポート203-0に対応付けて備えられて、SP−TOQ−TH0の指すエントリを優先するという規定の選択論理に従って、スレッド0の要求するキャッシュアクセス処理のためにストア・ポート203-0のエントリを選択して、そのエントリからアクセス要求(ストア要求)を取り出す。
選択回路206-1は、ストア・ポート203-1に対応付けて備えられて、SP−TOQ−TH1の指すエントリを優先するという規定の選択論理に従って、スレッド1の要求するキャッシュアクセス処理のためにストア・ポート203-1のエントリを選択して、そのエントリからアクセス要求(ストア要求)を取り出す。
選択回路207は、図示しないスレッド選択信号などの指示に従って、選択回路206-0の出力するアクセス要求(スレッド0のアクセス要求)を選択するか、選択回路206-1の出力するアクセス要求(スレッド1のアクセス要求)を選択する。
優先制御回路208は、選択回路205の選択したアクセス要求と、そのアクセス要求を発行したスレッドに対応付けて備えられるフェッチ・ポート202-0or1 の持つFP−TOQ−TH1or2と、そのアクセス要求を発行したスレッドに対応付けて備えられるストア・ポート203-0or1 の持つSP−TOQ−TH1or2と、選択回路205の選択したアクセス要求がフェッチ・ポート202-0or1 の何番目のエントリのものであるのかという情報(図中ではm番目を想定)と、選択回路207の選択したアクセス要求がストア・ポート203-0or1 の何番目のエントリのものであるのかという情報(図中ではn番目を想定)とを入力して、FS命令ステータス情報記憶部209にFS命令ステータス情報を書き込むとともに、その書き込んだFS命令ステータス情報を参照しながら、選択回路205の選択したアクセス要求の処理を実行するのか、その処理の実行を待機させるのかを決定する。
FS命令ステータス情報記憶部209は、スレッド0に対応付けて記憶されて、スレッド0がフェッチ・アンド・ストア要求を実行中であるときには“1”を表示し、実行中でないときには“0”を表示するFS命令ステータス情報(FS−PEND−STATUS−TH0)を記憶するとともに、スレッド1に対応付けて記憶されて、スレッド1がフェッチ・アンド・ストア要求を実行中であるときには“1”を表示し、実行中でないときには“0”を表示するFS命令ステータス情報(FS−PEND−STATUS−TH1)を記憶する。
このFS−PEND−STATUS−TH0,1という信号は、後述するように、フェッチ・アンド・ストア要求の処理を開始した時点で1にセットされ、フェッチ・アンド・ストア要求の処理を完了した時点で0にリセットされる。
ここで、図2では、選択回路204-0,1および選択回路205の選択処理に従って、スレッドp(p=1or0)に対応付けて設けられるフェッチ・ポート202-pのm番目のエントリに保持されるアクセス要求(request#m)が選択されたことを想定しているとともに、選択回路206-0,1および選択回路207の選択処理に従って、スレッドpに対応付けて設けられるストア・ポート203-pのn番目のエントリに保持されるアクセス要求(request#n=request#n)が選択されたことを想定している。
以下では、選択回路205の選択したアクセス要求を発行したスレッドをスレッドp(p=1or0)と記載し、もう一方のスレッドをスレッドq(q=0or1)と記載することにする。
命令・演算制御部100からのフェッチ・アンド・ストア要求のロードからストア実行までの間は、フェッチ・アンド・ストア要求を発行したスレッド以外のスレッドも含めた他命令による該当データの参照・更新が禁止されなければならない。
そのため、スレッドxのフェッチ・アンド・ストア要求がデータXにアクセスするときには、
(a−1)フェッチ・アンド・ストア要求の処理は、それに先行するデータXをアクセ スするスレッドxの要求の処理が全て完了するまで抑止する
(a−2)フェッチ・アンド・ストア要求より後にデータXをアクセスするスレッドx の要求の処理は、フェッチ・アンド・ストア要求の処理が完了するまで抑止 する
(b) フェッチ・アンド・ストア要求の処理開始から完了までの間は、キャッシュ RAM201からデータXを吐き出すことを抑止する
(c) フェッチ・アンド・ストア要求の処理開始から完了までの間は、データXを アクセスするスレッドx以外のスレッドの要求の処理は、フェッチ・アンド ・ストア要求の処理が完了するまで抑止する
という条件を設けることで、条件(a−1),(a−2)によりフェッチ・アンド・ストア対象データに対するスレッド内の排他制御を保証し、条件(b)によりマルチプロセッサ構成におけるプロセッサ間の排他制御を保証し、条件(c)によりプロセッサ内のスレッド間の排他制御を保証する必要がある。
これらの排他制御を実現する一方式として、フェッチ・アンド・ストア要求の処理数をプロセッサ内の全スレッドあたり一要求にし、フェッチ・アンド・ストア要求の処理中は無条件に他のアクセス要求の処理を全て抑止する、という方式が挙げられる。
図3ないし8に、この方式に従って排他制御を実現する優先制御回路208の実行するフローチャートの一例を図示する。ここで、これらのフローチャートでは、2つのスレッドの内のスレッドpから発行されたフェッチ・アンド・ストア要求に注目して説明しており、もう一方のスレッドをスレッドqで表している。
優先制御回路208は、図3のフローチャートに示すように、先ず最初に、ステップS100で、選択回路205の選択したアクセス要求(request#m)と、選択回路207の選択したアクセス要求(request#n=request#m)とを入力することで、スレッドpについて、フェッチ・ポート202-pのm番目のエントリに保持されるアクセス要求(request#m)を入力するとともに、そのアクセス要求がフェッチ・ポート202-pのm番目のエントリに保持されているということと、そのアクセス要求がストア・ポート203-pのn番目のエントリに保持されているということとを入力する。
続いて、ステップS101で、図4のフローチャートに従って、前述の条件(c)についてチェックを行う。
すなわち、図4のフローチャートに示すように、FS命令ステータス情報記憶部209に記憶される相手方のスレッドqについてのFS−PEND−STATUS−THqの値が0であるのか否かを判断して、その値が0である場合(スレッドqがフェッチ・アンド・ストア要求を実行していない場合)には、変数“チェック”に0を設定し、その値が1である場合(スレッドqがフェッチ・アンド・ストア要求を実行している場合)には、変数“チェック”に1を設定する。
後述するように、変数“チェック”に0が設定されている場合にはアクセス要求の処理を開始し、変数“チェック”に1が設定されている場合にはアクセス要求の処理を待機させるようにしていることから、この図4のフローチャートに従って、前述の条件(c)についてチェックを行うのである。
続いて、図3のフローチャートのステップS102で、変数“チェック”の値が0であるのか否かを判断して、変数“チェック”の値が0ではなくて1であることを判断するときには、ステップS108に進んで、選択回路205の選択したスレッドpのアクセス要求の処理を待機させて、先行要求の処理完了を待つべく処理を終了する。
すなわち、相手方のスレッドqがフェッチ・アンド・ストア要求を実行しているので、選択回路205の選択したスレッドpのアクセス要求の処理を待機させるのである。
一方、ステップS102の判断処理で、変数“チェック”の値が0であることを判断するときには、ステップS103に進んで、選択回路205の選択したアクセス要求がフェッチ・アンド・ストア要求であるのか否かを判断する。
このステップS103の判断処理で、選択回路205の選択したアクセス要求がフェッチ・アンド・ストア要求であることを判断するときには、ステップS104に進んで、図5のフローチャートに従って、前述の条件(a−1)についてチェックを行う。
すなわち、図5のフローチャートに示すように、FP−TOQ−THpがm番目のエントリを指し、かつ、SP−TOQ−THpがn番目のエントリを指している場合には、選択回路205の選択したフェッチ・アンド・ストア要求が最も古いアクセス要求であることで実行に入ってもよいことを示しているので、変数“チェック”に0を設定するとともに、スレッドpがフェッチ・アンド・ストア要求の処理に入ったことを表示すべく、FS−PEND−STATUS−THpに1をセットし、それ以外のときには、変数“チェック”に1を設定することで、前述の条件(a−1)についてチェックを行うのである。
一方、図3のフローチャートのステップS103の判断処理で、選択回路205の選択したアクセス要求がフェッチ・アンド・ストア要求でないことを判断するときには、ステップS105に進んで、図6のフローチャートに従って、前述の条件(a−2)についてチェックを行う。
すなわち、図6のフローチャートに示すように、FS命令ステータス情報記憶部209に記憶されるスレッドpについてのFS−PEND−STATUS−THpの値が0であるのか否かを判断して、その値が0である場合(スレッドpがフェッチ・アンド・ストア要求を実行していない場合)には、変数“チェック”に0を設定し、その値が1である場合(スレッドpがフェッチ・アンド・ストア要求を実行している場合)には、フェッチ・アンド・ストア要求を先行して実行中であることで選択回路205の選択したアクセス要求を実行してはいけないことに合わせて、変数“チェック”に1を設定することで、前述の条件(a−2)についてチェックを行うのである。
続いて、図3のフローチャートのステップS106で、変数“チェック”の値が0であるのか否かを判断して、変数“チェック”の値が0であることを判断するときには、ステップS107に進んで、選択回路205の選択したスレッドpのアクセス要求の処理を開始し、一方、変数“チェック”の値が1であることを判断するときには、ステップS108に進んで、選択回路205の選択したスレッドpのアクセス要求の処理を待機させて、先行要求の処理完了を待つべく処理を終了する。
その後、優先制御回路208は、フェッチ・アンド・ストア要求のロード・ストア処理が完了した時点で、FS−PEND−STATUS−THpを0にリセットし、待機させていた他要求の処理を再開させる。
一方、優先制御回路208は、前述の条件(b)については、図7のフローチャートに従って、そのチェックを行う。
すなわち、図7のフローチャートに示すように、FS命令ステータス情報記憶部209に記憶されるスレッドpについてのFS−PEND−STATUS−THpの値が0であることで、スレッドpがフェッチ・アンド・ストア要求を実行していないことを判断するとともに、FS命令ステータス情報記憶部209に記憶されるスレッドqについてのFS−PEND−STATUS−THqの値が0であることで、スレッドqがフェッチ・アンド・ストア要求を実行していないことを判断するときには、キャッシュRAM201からの該当データの吐き出しを開始し、それ以外のときには、キャッシュRAM201からの該当データの吐き出しを待機させるのである。
このようにして、本実施例によれば、SMT方式のプロセッサにおいて、フェッチ・アンド・ストア要求を処理する際に必要となる排他制御処理を簡略な構成に従って実現することができるようになる。
以上に説明したことから分かるように、いずれかのスレッドがフェッチ・アンド・ストア要求の処理を開始すると、その処理完了までの間、全ての他スレッドのアクセス要求の処理が抑止されることになる。これから、あるスレッドで複数のフェッチ・アンド・ストア要求が発行され続け、そのスレッドのアクセス要求のみが処理され続けると、他スレッドでの処理が全く進まなくなってしまうことが起こる。
そこで、フェッチ・アンド・ストア要求の処理を完了した後、そのスレッドのフェッチ・ポートで再度フェッチ・アンド・ストア要求のエントリが選択されたときに、他スレッドのフェッチ・ポートになんらかのアクセス要求が滞留していれば、その他スレッドのアクセス要求を少なくとも一つは完了させるようにし、それまではフェッチ・アンド・ストア要求の処理を行わないようにすることで、その他スレッドの要求の処理停滞を回避するようにする。
これを実現するために、図8に示すように、最後に処理を完了したアクセス要求のスレッドを示す最後処理スレッド表示信号(REQ−TAKEN−THREAD)を生成する最後処理スレッド表示信号制御回路210を備えるようにする。
この最後処理スレッド表示信号制御回路210は、なんらかのアクセス要求の処理完了時にそのアクセス要求を完了したスレッドのスレッド番号をセットすることで、REQ−TAKEN−THREADを生成する。これから、例えば、スレッドが2つである場合に、REQ−TAKEN−THREADが0を示しているときに、最後にアクセス要求の処理を完了したスレッドがスレッド0であることを意味し、REQ−TAKEN−THREADが1を示しているときに、最後にアクセス要求の処理を完了したスレッドがスレッド1であることを意味する。
図9に、最後処理スレッド表示信号制御回路210を備える場合に、優先制御回路208の実行するフローチャートを図示する。
次に、このフローチャートに従って、REQ−TAKEN−THREADを使って、特定のスレッドのアクセス要求のみが処理され続けることの発生を防止するために優先制御回路208が実行する処理について詳細に説明する。
優先制御回路208は、図9のフローチャートに示すように、先ず最初に、ステップS600で、スレッドpのフェッチ・ポート202-pのエントリを選択することで実行要求のアクセス要求を選択すると、続いて、ステップS601で、そのアクセス要求がフェッチ・アンド・ストア要求であるのか否かを判断する。
この判断処理に従って、実行要求のアクセス要求がフェッチ・アンド・ストア要求であることを判断するときには、ステップS602に進んで、相手方であるスレッドqのフェッチ・ポート202-qの全エントリを参照する。
続いて、ステップS603で、参照したフェッチ・ポート202-qのエントリの中に有効なエントリが存在するのか否かを判断して、有効なエントリが存在することを判断するとき、すなわち、フェッチ・アンド・ストア要求により待たされているスレッドqのアクセス要求が存在することを判断するときには、ステップS604に進んで、REQ−TAKEN−THREADが最後に処理を完了したスレッドがスレッドpであることを表示しているのか否かを判断する。
この判断処理に従って、REQ−TAKEN−THREADがスレッドpであることを表示していることを判断するときには、ステップS605に進んで、スレッドpのアクセス要求については選択せずに、スレッドqのアクセス要求を選択するようにする。
すなわち、最後に処理を完了したスレッドがスレッドpであるので、今回もスレッドpのフェッチ・アンド・ストア要求を選択してしまうと、スレッドqのアクセス要求の処理が停滞してしまうことになるので、スレッドpのアクセス要求については選択せずに、スレッドqのアクセス要求を選択するようにするのである。
一方、ステップS603で、フェッチ・ポート202-qのエントリの中に有効なエントリが存在しない場合には、スレッドqのアクセス要求を選択することはできないので、ステップS606に進んで、スレッドpのアクセス要求(この場合にはフェッチ・アンド・ストア要求)を選択するようにする。
そして、ステップS604で、REQ−TAKEN−THREADがスレッドpではなくてスレッドqを表示しているときには、スレッドqのアクセス要求の処理が停滞してしまうことは起こらないので、ステップS606に進んで、スレッドpのアクセス要求(この場合にはフェッチ・アンド・ストア要求)を選択するようにする。
一方、ステップS601の判断処理で、実行要求のあるスレッドpのアクセス要求がフェッチ・アンド・ストア要求でないことを判断するときには、ステップS607に進んで、FP−TOQ−THqの指すエントリを参照する。
続いて、ステップS608で、その参照したエントリに保持されるスレッドqのアクセス要求がフェッチ・アンド・ストア要求であるのか否かを判断して、フェッチ・アンド・ストア要求であることを判断するときには、ステップS609に進んで、REQ−TAKEN−THREADが最後に処理を完了したスレッドがスレッドpであることを表示しているのか否かを判断する。
この判断処理に従って、REQ−TAKEN−THREADがスレッドpであることを表示していることを判断するときには、ステップS605に進んで、スレッドpのアクセス要求については選択せずに、スレッドqのアクセス要求を選択するようにする。
すなわち、最後に処理を完了したスレッドがスレッドpであるので、今回もスレッドpのアクセス要求を選択してしまうと、スレッドqのアクセス要求(この場合にはフェッチ・アンド・ストア要求)の処理が停滞してしまうことになるので、スレッドpのアクセス要求については選択せずに、スレッドqのアクセス要求(この場合にはフェッチ・アンド・ストア要求)を選択するようにするのである。
一方、ステップS608で、FP−TOQ−THqの指すエントリに保持されるスレッドqのアクセス要求がフェッチ・アンド・ストア要求でないことを判断するときには、アクセス要求が排除されることはないので、ステップS606に進んで、スレッドpのアクセス要求(この場合にはフェッチ・アンド・ストア要求ではないアクセス要求)を選択するようにする。
そして、ステップS609で、REQ−TAKEN−THREADがスレッドpではなくてスレッドqを表示しているときには、スレッドqのアクセス要求の処理が停滞してしまうことは起こらないので、ステップS606に進んで、スレッドpのアクセス要求(この場合にはフェッチ・アンド・ストア要求ではないアクセス要求)を選択するようにする。
このようにして、優先制御回路208は、図9のフローチャートに従って、REQ−TAKEN−THREADを使って、特定のスレッドのアクセス要求のみが処理され続けることの発生を防止するように処理するのである。
次に、図9のフローチャートにより実現される処理について具体的に説明する。
フェッチ・ポート202-0に複数のフェッチ・アンド・ストア要求が保持されている場合、一つ目のフェッチ・アンド・ストア要求の処理が完了したときに、REQ−TAKEN−THREADを0にセットする。
続けて、フェッチ・ポート202-0内で、後続のフェッチ・アンド・ストア要求のエントリが選択されたとき、他方のフェッチ・ポート202-1にアクセス要求が保持されているかを参照し、なんらかのアクセス要求が一つ以上保持されていて、かつ、REQ−TAKEN−THREADが0であれば、フェッチ・ポート202-0のアクセス要求を選択せず、フェッチ・ポート202-1から読み出したスレッド1のアクセス要求を選択し処理する。
このスレッド1のアクセス要求の処理が完了した時点で、REQ−TAKEN−THREADを1にセットする。この後、フェッチ・ポート202-0で滞留していたスレッド0のフェッチ・アンド・ストア要求のエントリが選択されたとき、他方のフェッチ・ポート202-1にアクセス要求が保持されているかを参照し、なんらかのアクセス要求が保持されていたとしても、REQ−TAKEN−THREADが1であるため、スレッド0のフェッチ・アンド・ストア要求の処理を開始する。
そして、このスレッド0のアクセス要求の処理が完了した時点で、REQ−TAKEN−THREADを0にセットする。これにより、フェッチ・アンド・ストア要求の処理によりその他のスレッドのアクセス要求の処理が停滞することを防ぐことが可能となる。
以上に説明した実施例では、フェッチ・アンド・ストア要求の処理数をプロセッサ内の全スレッドあたり一要求にし、フェッチ・アンド・ストア要求の処理中は無条件に他のアクセス要求の処理を全て抑止するという方式を用いたが、別の方式として、フェッチ・アンド・ストア要求の処理数をプロセッサ内のスレッド毎に一要求ずつにし、フェッチ・アンド・ストア要求の対象データを参照・更新する他のアクセス要求の処理のみを抑止する、という方式が挙げられる。
この方式を用いる場合には、前述の条件(a−1),(a−2),(b),(c)について、対象データが一致するということを条件にして抑止するということが加わることになる。
図10に、この方式に従って排他制御を実現する一次キャッシュ制御部200の他の実施例を図示する。
この実施例に従う場合には、FS命令ステータス情報記憶部209は、FS命令ステータス情報として、前述したFS−PEND−STATUS−TH0,1を記憶することに加えて、スレッド0に対応付けて記憶されて、スレッド0のフェッチ・アンド・ストア要求の対象データのアドレスを示すFS−PEND−ADRS−TH0をレジスタを使って記憶するとともに、スレッド1に対応付けて記憶されて、スレッド1のフェッチ・アンド・ストア要求の対象データのアドレスを示すFS−PEND−ADRS−TH1をレジスタを使って記憶するという構成を採る。
これらのレジスタには、フェッチ・アンド・ストア要求の処理を開始した時点で、その対象データのアドレスがセットされ、FS−PEND−STATUS−TH0、FS−PEND−STATUS−TH1の値が1の間はそれぞれのスレッドに対応して有効な値を示す。
図11ないし16に、この方式に従って排他制御を実現する優先制御回路208の実行するフローチャートの一例を図示する。ここで、これらのフローチャートでは、2つのスレッドの内のスレッドpから発行されたフェッチ・アンド・ストア要求に注目して説明しており、もう一方のスレッドをスレッドqで表している。
優先制御回路208は、図11のフローチャートに示すように、先ず最初に、ステップS700で、選択回路205の選択したアクセス要求(request#m)と、選択回路207の選択したアクセス要求(request#n=request#m)とを入力することで、スレッドpについて、フェッチ・ポート202-pのm番目のエントリに保持されるアクセス要求(request#m)を入力するとともに、そのアクセス要求がフェッチ・ポート202-pのm番目のエントリに保持されているということと、そのアクセス要求がストア・ポート203-pのn番目のエントリに保持されているということとを入力する。
続いて、ステップS701で、図12のフローチャートに従って、前述の条件(c)についてチェックを行う。
すなわち、図12のフローチャートに示すように、FS命令ステータス情報記憶部209に記憶される相手方のスレッドqについてのFS−PEND−STATUS−THqの値が0であるのか否かを判断して、その値が1である場合(スレッドqがフェッチ・アンド・ストア要求を実行している場合)には、さらに、選択回路205の選択したアクセス要求の指定するアドレスが、FS命令ステータス情報記憶部209に記憶される相手方のスレッドqについてのFS−PEND−ADRS−THqのアドレスに一致するのか否かを判断する。そして、これらの判断処理に従って、同一データをアクセス先とするフェッチ・アンド・ストア要求がスレッドqで実行されていることを判断する場合には、変数“チェック”に1を設定し、それ以外の場合には、変数“チェック”に0を設定する。
後述するように、変数“チェック”に0が設定されている場合にはアクセス要求の処理を開始し、変数“チェック”に1が設定されている場合にはアクセス要求の処理を待機させるようにしていることから、この図12のフローチャートに従って、前述の条件(c)についてチェックを行うのである。
続いて、図11のフローチャートのステップS702で、変数“チェック”の値が0であるのか否かを判断して、変数“チェック”の値が0ではなくて1であることを判断するときには、ステップS708に進んで、選択回路205の選択したスレッドpのアクセス要求の処理を待機させて、先行要求の処理完了を待つべく処理を終了する。
すなわち、相手方のスレッドqが同一データに対してのフェッチ・アンド・ストア要求を実行しているので、選択回路205の選択したスレッドpのアクセス要求の処理を待機させるのである。
一方、ステップS702の判断処理で、変数“チェック”の値が0であることを判断するときには、ステップS703に進んで、選択回路205の選択したアクセス要求がフェッチ・アンド・ストア要求であるのか否かを判断する。
このステップS703の判断処理で、選択回路205の選択したアクセス要求がフェッチ・アンド・ストア要求であることを判断するときには、ステップS704に進んで、図13のフローチャートに従って、前述の条件(a−1)についてチェックを行う。
すなわち、図13のフローチャートに示すように、FP−TOQ−THpがm番目のエントリを指し、かつ、SP−TOQ−THpがn番目のエントリを指している場合には、選択回路205の選択したフェッチ・アンド・ストア要求が最も古いアクセス要求であることで実行に入ってもよいことを示しているので、変数“チェック”に0を設定し、これに加えて、スレッドpがフェッチ・アンド・ストア要求の処理に入ったことを表示すべく、FS−PEND−STATUS−THpに1をセットするとともに、FS−PEND−ADRS−THpにアドレスを登録し、それ以外の場合には、変数“チェック”に1を設定することで、前述の条件(a−1)についてチェックを行うのである。
一方、図11のフローチャートのステップS703の判断処理で、選択回路205の選択したアクセス要求がフェッチ・アンド・ストア要求でないことを判断するときには、ステップS705に進んで、図14のフローチャートに従って、前述の条件(a−2)についてチェックを行う。
すなわち、図14のフローチャートに示すように、FS命令ステータス情報記憶部209に記憶されるスレッドpについてのFS−PEND−STATUS−THpの値が0であるのか否かを判断して、その値が1である場合(スレッドpがフェッチ・アンド・ストア要求を実行している場合)には、さらに、選択回路205の選択したアクセス要求の指定するアドレスが、FS命令ステータス情報記憶部209に記憶されるスレッドpについてのFS−PEND−ADRS−THpのアドレスに一致するのか否かを判断する。
これらの判断処理で、スレッドpが同一データのフェッチ・アンド・ストア要求を先行して実行中であるということを判断する場合には、選択回路205の選択したアクセス要求を実行してはいけないことを示しているので、変数“チェック”に1を設定し、それ以外の場合には、変数“チェック”に0を設定することで、前述の条件(a−2)についてチェックを行うのである。
続いて、図11のフローチャートのステップS706で、変数“チェック”の値が0であるのか否かを判断して、変数“チェック”の値が0であることを判断するときには、ステップS707に進んで、選択回路205の選択したスレッドpのアクセス要求の処理を開始し、一方、変数“チェック”の値が1であることを判断するときには、ステップS708に進んで、選択回路205の選択したスレッドpのアクセス要求の処理を待機させて、先行要求の処理完了を待つべく処理を終了する。
その後、優先制御回路208は、フェッチ・アンド・ストア要求のロード・ストア処理が完了した時点で、FS−PEND−STATUS−THpを0にリセットし、待機させていた他要求の処理を再開させる。
一方、優先制御回路208は、前述の条件(b)については、図15のフローチャートに従って、そのチェックを行う。
すなわち、図15のフローチャートに示すように、FS命令ステータス情報記憶部209に記憶されるスレッドpについてのFS−PEND−STATUS−THpの値が0であるのか否かということを判断するととにも、FS−PEND−STATUS−THpの値が1である場合には、選択回路205の選択したアクセス要求の指定するアドレスが、FS命令ステータス情報記憶部209に記憶されるスレッドpについてのFS−PEND−ADRS−THpのアドレスに一致するのか否かを判断する。
そして、FS命令ステータス情報記憶部209に記憶されるスレッドqについてのFS−PEND−STATUS−THqの値が0であるのか否かということを判断するととにも、FS−PEND−STATUS−THqの値が1である場合には、選択回路205の選択したアクセス要求の指定するアドレスが、FS命令ステータス情報記憶部209に記憶されるスレッドqについてのFS−PEND−ADRS−THqのアドレスに一致するのか否かを判断する。
これらの判断処理に従って、スレッドpとスレッドqが共にフェッチ・アンド・ストア要求を実行していないことを判断するときと、そのいずれか一方又は双方がフェッチ・アンド・ストア要求を実行しているものの、選択回路205の選択したアクセス要求の対象データとは異なるデータを対象としている場合には、キャッシュRAM201からのその対象データの吐き出しを開始し、それ以外の場合には、キャッシュRAM201からのその対象データの吐き出しを待機させることで、前述の条件(b)についてチェックを行うのである。
このようにして、図10のように構成される一次キャッシュ制御部200では、フェッチ・アンド・ストア要求の対象データが異なれば、スレッド毎に一つずつフェッチ・アンド・ストア要求の処理を実行することが可能になる。
図10のように構成される一次キャッシュ制御部200でも、図8に示した最後処理スレッド表示信号制御回路210の発生するREQ−TAKEN−THREADを使って、特定のスレッドのアクセス要求のみが処理され続けることの発生を防止することが可能である。
図16に、最後処理スレッド表示信号制御回路210を備える場合に、図10のように構成される一次キャッシュ制御部200の備える優先制御回路208の実行するフローチャートを図示する。
優先制御回路208は、図9のフローチャートを実行する場合には、ステップS602で、相手方であるスレッドqのフェッチ・ポート202-qの全エントリを参照すると、続くステップS603で、参照したフェッチ・ポート202-qのエントリの中に有効なエントリが存在するのか否かを判断して、有効なエントリが存在することを判断するとき、すなわち、フェッチ・アンド・ストア要求により待たされているアクセス要求が存在することを判断するときには、直ちに、ステップS604に進んで、REQ−TAKEN−THREADが最後に処理を完了したスレッドがスレッドpであることを表示しているのか否かを判断するようにしている。
これに対して、優先制御回路208は、図16のフローチャートを実行する場合には、フェッチ・アンド・ストア要求の対象データと同一のデータをアクセス先とするアクセス要求のみが待機させられることになるので、これを考慮して、ステップS603に続くステップS604αで、スレッドqにフェッチ・アンド・ストア要求の完了待ちのアクセス要求(アドレス一致により待機させられているアクセス要求)が存在するのか否かを判断して、そのようなアクセス要求がある場合には、ステップS604の処理に進み、そのようなアクセス要求がない場合には、ステップS606の処理に進むようにしている。
このようにして、優先制御回路208は、図10のように構成される一次キャッシュ制御部200においても、図16のフローチャートに従って、REQ−TAKEN−THREADを使って、特定のスレッドのアクセス要求のみが処理され続けることの発生を防止するように処理するのである。
図示実施例に従って本キャッシュ制御装置及び制御方法を説明したが、本キャッシュ制御装置及び制御方法はこれに限定されるものではない。例えば、実施例では、2つのスレッドが動作するSMT方式のプロセッサに実装されることを想定したが、3つ以上のスレッドが動作する場合にもそのまま適用できるものである。
本発明は、SMT方式のプロセッサにおけるキャッシュ制御に適用できるものであり、本発明を適用することで、SMT方式のプロセッサにおいて、CAS命令などのアトミック命令を処理する際に必要となる排他制御処理を簡略な構成に従って実現することができるようになる。

Claims (12)

  1. 同時に実行される複数のスレッドで共有されるキャッシュに対してのアクセス要求を制御するキャッシュ制御装置であって、
    各スレッドに対応付けて設けられて、そのスレッドが複数の処理を不可分に実行するアトミック命令の実行に入る場合に第一の規定値を表示し、そのアトミック命令を完了する場合に前記第一の規定値とは異なる第二の規定値を表示するフラグを記憶する記憶手段と、
    あるスレッドからアクセス要求が発行される場合に、前記記憶手段の記憶するフラグ値を参照することで、アクセス要求を発行したスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断する判断手段と、
    前記判断手段が、前記別のスレッドがアトミック命令を実行中であると判断した場合に、前記発行されたアクセス要求を待機させる処理を実行する実行手段とを備えることを、
    特徴とするキャッシュ制御装置。
  2. 請求項1に記載のキャッシュ制御装置において、
    キャッシュからのデータの吐き出し要求がある場合に、前記記憶手段の記憶するフラグ値を参照することで、全てのスレッドがアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合に、キャッシュからのデータの吐き出し処理の実行を指示する指示手段を備えることを、
    特徴とするキャッシュ制御装置。
  3. 請求項1又は2に記載のキャッシュ制御装置において、
    前記記憶手段の記憶するフラグ値を参照することで、スレッド内におけるアトミック命令についての排他制御を実行するスレッド内排他制御手段を備えることを、
    特徴とするキャッシュ制御装置。
  4. 同時に実行される複数のスレッドで共有されるキャッシュに対してのアクセス要求を制御するキャッシュ制御装置であって、
    各スレッドに対応付けて設けられて、そのスレッドが複数の処理を不可分に実行するアトミック命令の実行に入る場合に第一の規定値を表示し、前記実行されるアトミック命令を完了する場合に前記第一の規定値とは異なる第二の規定値を表示するフラグを記憶し、さらに、そのスレッドがアトミック命令の実行に入る場合には、実行されるアトミック命令のアクセス先のアドレス情報を記憶する記憶手段と、
    あるスレッドからアクセス要求が発行される場合に、前記記憶手段の記憶するフラグ値を参照することで、前記アクセス要求を発行したスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断し、さらに、前記別のスレッドがアトミック命令を実行中であることを判断する場合には、前記記憶手段の記憶するアドレス情報を参照することで、前記別のスレッドが実行中のアトミック命令のアクセス先のアドレス情報と、前記発行されたアクセス要求の指定するアドレス情報とが一致するのか否かを判断する判断手段と、
    前記判断手段が、前記別のスレッドがアトミック命令を実行中であることを判断し、かつ、前記別のスレッドが実行中のアトミック命令のアクセス先のアドレス情報と前記発行されたアクセス要求の指定するアドレス情報とが一致することを判断する場合に、前記発行されたアクセス要求を待機させる処理を実行する実行手段とを備えることを、
    特徴とするキャッシュ制御装置。
  5. 請求項4に記載のキャッシュ制御装置において、
    キャッシュからのデータの吐き出し要求がある場合に、前記記憶手段の記憶するフラグ値およびアドレス情報を参照することで、全てのスレッドが吐き出し要求の指定するアドレス情報と一致するアドレス情報をアクセス先とするアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合に、キャッシュからのデータの吐き出し処理の実行を指示する指示手段を備えることを、
    特徴とするキャッシュ制御装置。
  6. 請求項4又は5に記載のキャッシュ制御装置において、
    前記記憶手段の記憶するフラグ値およびアドレス情報を参照することで、スレッド内におけるアトミック命令についての排他制御を実行するスレッド内排他制御手段を備えることを、
    特徴とするキャッシュ制御装置。
  7. 請求項1ないし6のいずれか1項に記載のキャッシュ制御装置において、
    最後にアクセス要求の処理を行ったスレッドがどのスレッドであるのかについて示す情報を記憶する第2の記憶手段と、
    あるスレッドからアトミック命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、前記待機処理により待機させられているアクセス要求が存在するのか否かを判断する第2の判断手段と、
    前記第2の判断手段が前記待機処理により待機させられているアクセス要求の存在を判断する場合に、前記第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、前記あるスレッドから発行されたアトミック命令に係るアクセス要求を選択するのか、その待機させられているアクセス要求を選択するのかを決定する決定手段とを備えることを、
    特徴とするキャッシュ制御装置。
  8. 請求項7に記載のキャッシュ制御装置において、
    あるスレッドからアトミックでない命令に係るアクセス要求が発行される場合に、そのスレッド以外のスレッドについて、アトミック命令に係るアクセス要求の発行要求があるのか否かを判断する第3の判断手段と、
    前記第3の判断手段がアトミック命令に係るアクセス要求の発行要求があることを判断する場合に、前記第2の記憶手段の記憶する情報を参照することで最後にアクセス要求の処理を行ったスレッドを特定して、その特定したスレッド以外のスレッドの発行したアクセス要求を優先する形で、前記あるスレッドから発行されたアトミックでない命令に係るアクセス要求を選択するのか、その発行要求のあるアトミック命令に係るアクセス要求を選択するのかを決定する第2の決定手段とを備えることを、
    特徴とするキャッシュ制御装置。
  9. 同時に実行される複数のスレッドで共有されるキャッシュに対してのアクセス要求を制御するキャッシュ制御装置が実行するキャッシュ制御方法であって、
    前記キャッシュ制御装置が、
    各スレッドに対応付けて設けられて、そのスレッドが複数の処理を不可分に実行するアトミック命令の実行に入る場合に第一の規定値を表示し、そのアトミック命令を完了する場合に前記第一の規定値とは異なる第二の規定値を表示するフラグを記憶する記憶手段を備える構成を採って、スレッドがアトミック命令の実行に入る場合に、その記憶手段に記憶される該当するフラグに前記第一の規定値を書き込み、さらに、そのアトミック命令を完了する場合に、前記第二の規定値を書き込むようにし、
    あるスレッドからアクセス要求が発行される場合に、前記記憶手段の記憶するフラグ値を参照することで、アクセス要求を発行したスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断し、
    前記判断処理に従って、前記別のスレッドがアトミック命令を実行中であると判断した場合に、前記発行されたアクセス要求を待機させる処理を実行することを、
    特徴とするキャッシュ制御方法。
  10. 請求項9に記載のキャッシュ制御方法において、
    前記キャッシュ制御装置が、
    キャッシュからのデータの吐き出し要求がある場合に、前記記憶手段の記憶するフラグ値を参照することで、全てのスレッドがアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合に、キャッシュからのデータの吐き出し処理の実行を指示することを、
    特徴とするキャッシュ制御方法。
  11. 同時に実行される複数のスレッドで共有されるキャッシュに対してのアクセス要求を制御するキャッシュ制御装置が実行するキャッシュ制御方法であって、
    前記キャッシュ制御装置が、
    各スレッドに対応付けて設けられて、そのスレッドが複数の処理を不可分に実行するアトミック命令の実行に入る場合に第一の規定値を表示し、前記実行されるアトミック命令を完了する場合に前記第一の規定値とは異なる第二の規定値を表示するフラグを記憶し、さらに、そのスレッドがアトミック命令の実行に入る場合には、実行されるアトミック命令のアクセス先のアドレス情報を記憶する記憶手段を備える構成を採って、スレッドがアトミック命令の実行に入る場合に、その記憶手段に記憶される該当するフラグに前記第一の規定値を書き込むとともに、そのアトミック命令のアクセス先のアドレス情報を前記記憶手段に書き込むようにし、さらに、そのアトミック命令を完了する場合に、そのフラグに前記第二の規定値を書き込むようにし、
    あるスレッドからアクセス要求が発行される場合に、前記記憶手段の記憶するフラグ値を参照することで、前記アクセス要求を発行したスレッドとは別のスレッドがアトミック命令を実行中であるのか否かを判断し、さらに、前記別のスレッドがアトミック命令を実行中であることを判断する場合には、前記記憶手段の記憶するアドレス情報を参照することで、前記別のスレッドが実行中のアトミック命令のアクセス先のアドレス情報と、前記発行されたアクセス要求の指定するアドレス情報とが一致するのか否かを判断し、
    前記判断処理に従って、前記別のスレッドがアトミック命令を実行中であることを判断し、かつ、前記別のスレッドが実行中のアトミック命令のアクセス先のアドレス情報と前記発行されたアクセス要求の指定するアドレス情報とが一致することを判断する場合に、前記発行されたアクセス要求を待機させる処理を実行することを、
    特徴とするキャッシュ制御方法。
  12. 請求項11に記載のキャッシュ制御方法において、
    前記キャッシュ制御装置が、
    キャッシュからのデータの吐き出し要求がある場合に、前記記憶手段の記憶するフラグ値およびアドレス情報を参照することで、全てのスレッドが吐き出し要求の指定するアドレス情報と一致するアドレス情報をアクセス先とするアトミック命令を実行中でないのかを判断して、全てのスレッドがその命令を実行中でないことを判断する場合に、キャッシュからのデータの吐き出し処理の実行を指示することを、
    特徴とするキャッシュ制御方法。
JP2009520181A 2007-06-20 2007-06-20 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP4973730B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/062376 WO2008155827A1 (ja) 2007-06-20 2007-06-20 キャッシュ制御装置及び制御方法

Publications (2)

Publication Number Publication Date
JPWO2008155827A1 true JPWO2008155827A1 (ja) 2010-08-26
JP4973730B2 JP4973730B2 (ja) 2012-07-11

Family

ID=40155993

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009520181A Expired - Fee Related JP4973730B2 (ja) 2007-06-20 2007-06-20 演算処理装置及び演算処理装置の制御方法

Country Status (6)

Country Link
US (1) US8261021B2 (ja)
EP (1) EP2159702B1 (ja)
JP (1) JP4973730B2 (ja)
KR (1) KR101086791B1 (ja)
CN (1) CN101689143B (ja)
WO (1) WO2008155827A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444547B2 (en) 2003-06-19 2008-10-28 International Business Machines Corproation Method, system, and product for programming in a simultaneous multi-threaded processor environment
US8719514B2 (en) * 2007-06-27 2014-05-06 Intel Corporation Software filtering in a transactional memory system
US8261124B2 (en) * 2007-12-21 2012-09-04 Spansion Llc System and method for optimized error correction in flash memory arrays
US8627014B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US8621478B2 (en) * 2010-01-15 2013-12-31 International Business Machines Corporation Multiprocessor system with multiple concurrent modes of execution
US8533399B2 (en) * 2010-01-15 2013-09-10 International Business Machines Corporation Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US8838906B2 (en) * 2010-01-08 2014-09-16 International Business Machines Corporation Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
CN101866327B (zh) * 2010-06-23 2012-06-06 展讯通信(上海)有限公司 移动终端及其与计算机连接后的通信方法
US20110320781A1 (en) * 2010-06-29 2011-12-29 Wei Liu Dynamic data synchronization in thread-level speculation
US8788794B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
WO2013188696A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. An instruction definition to implement load store reordering and optimization
WO2013188460A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a distributed structure
EP2862060A4 (en) * 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR FILTERING SAVES FOR PREVENTING THE REQUIREMENT OF CHECKING ALL THE WORDS OF A CACHE MEMORY
TWI646422B (zh) 2012-06-15 2019-01-01 英特爾股份有限公司 在處理器中之免消歧義失序載入/儲存佇列方法、微處理器、和非暫態性電腦可讀取儲存媒體
WO2013188306A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
KR101667167B1 (ko) 2012-06-15 2016-10-17 소프트 머신즈, 인크. Load store 재정렬 및 최적화로부터 생기는 투기적 포워딩 예측 착오/오류로부터의 복원을 구현하는 방법 및 시스템
WO2013188705A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a unified structure
GB2516092A (en) * 2013-07-11 2015-01-14 Ibm Method and system for implementing a bit array in a cache line
US9146870B2 (en) 2013-07-24 2015-09-29 Arm Limited Performance of accesses from multiple processors to a same memory location
JP6221500B2 (ja) * 2013-08-19 2017-11-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6179369B2 (ja) * 2013-11-22 2017-08-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6384380B2 (ja) * 2015-03-27 2018-09-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN108710531B (zh) * 2018-04-20 2021-06-15 深圳市文鼎创数据科技有限公司 循环队列的数据写入方法、装置、终端设备和存储介质
CN109324765A (zh) * 2018-11-01 2019-02-12 郑州云海信息技术有限公司 一种磁盘状态检测方法、装置、设备及存储介质
CN113778674A (zh) * 2021-08-31 2021-12-10 上海弘积信息科技有限公司 一种负载均衡设备配置管理在多核下的免锁实现方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60237567A (ja) * 1984-02-10 1985-11-26 プライム・コンピユ−タ・インコ−ポレイテツド 多重プロセツサシステムにおけるメモリアクセス方法および装置
JPH05233421A (ja) * 1991-05-17 1993-09-10 Sun Microsyst Inc コンピュータ装置およびロード命令と記憶命令を発生し、実行するために記憶装置へ供給する方法
JPH05324471A (ja) * 1992-05-22 1993-12-07 Matsushita Electric Ind Co Ltd キャッシュ制御装置
JPH113268A (ja) * 1996-07-01 1999-01-06 Sun Microsyst Inc 複数のメモリ・モデルを使用してメモリ・トランザクションの実行を並列化するシステムおよび装置
US20040162951A1 (en) * 2003-02-13 2004-08-19 Jacobson Quinn A. Method and apparatus for delaying interfering accesses from other threads during transactional program execution

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US20050210204A1 (en) 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
WO2004068361A1 (ja) 2003-01-27 2004-08-12 Fujitsu Limited 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
US7089374B2 (en) * 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
JP4412981B2 (ja) * 2003-11-26 2010-02-10 株式会社日立製作所 ストレージシステム及同システムにおけるデータキャッシング方法
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7529889B2 (en) * 2006-08-14 2009-05-05 Arm Limited Data processing apparatus and method for performing a cache lookup in an energy efficient manner
KR101077514B1 (ko) * 2007-06-19 2011-10-28 후지쯔 가부시끼가이샤 캐시 제어장치 및 제어방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60237567A (ja) * 1984-02-10 1985-11-26 プライム・コンピユ−タ・インコ−ポレイテツド 多重プロセツサシステムにおけるメモリアクセス方法および装置
JPH05233421A (ja) * 1991-05-17 1993-09-10 Sun Microsyst Inc コンピュータ装置およびロード命令と記憶命令を発生し、実行するために記憶装置へ供給する方法
JPH05324471A (ja) * 1992-05-22 1993-12-07 Matsushita Electric Ind Co Ltd キャッシュ制御装置
JPH113268A (ja) * 1996-07-01 1999-01-06 Sun Microsyst Inc 複数のメモリ・モデルを使用してメモリ・トランザクションの実行を並列化するシステムおよび装置
US20040162951A1 (en) * 2003-02-13 2004-08-19 Jacobson Quinn A. Method and apparatus for delaying interfering accesses from other threads during transactional program execution

Also Published As

Publication number Publication date
WO2008155827A1 (ja) 2008-12-24
KR101086791B1 (ko) 2011-11-25
KR20100013326A (ko) 2010-02-09
US8261021B2 (en) 2012-09-04
CN101689143B (zh) 2012-07-04
EP2159702A1 (en) 2010-03-03
EP2159702B1 (en) 2013-04-17
CN101689143A (zh) 2010-03-31
JP4973730B2 (ja) 2012-07-11
US20100169577A1 (en) 2010-07-01
EP2159702A4 (en) 2010-10-06

Similar Documents

Publication Publication Date Title
JP4973730B2 (ja) 演算処理装置及び演算処理装置の制御方法
EP3353673B1 (en) On-chip atomic transaction engine
US5649157A (en) Memory controller with priority queues
US10402322B2 (en) Systems and methods for faster read after write forwarding using a virtual address
EP3131018B1 (en) Transaction abort method in a multi-core cpu.
JP4983919B2 (ja) 演算処理装置および演算処理装置の制御方法
JP4874165B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
JP2012238306A (ja) ルーティングのための方法及び装置
EP0533427A1 (en) Computer memory control system
JP3756410B2 (ja) 述語データを提供するシステム
EP1622026B1 (en) Cache memory control unit and cache memory control method
US9367461B2 (en) Ordering constraint management within coherent memory systems
JP4779010B2 (ja) バッファリング装置およびバッファリング方法
US20100100709A1 (en) Instruction control apparatus and instruction control method
JP3505728B2 (ja) 記憶制御装置
JP2000330791A (ja) コンピュータシステムおよびその動作方法
US10146441B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
EP2707793B1 (en) Request to own chaining in multi-socketed systems
US20230101748A1 (en) Weak cache line invalidation requests for speculatively executing instructions
EP2782015A1 (en) Processor, information processing apparatus, and method for controlling cache write-back
US20100011172A1 (en) Microcontroller systems having separate address and data buses
JPH05257807A (ja) キャッシュメモリ制御装置
JP4370227B2 (ja) プロセッサ
US8065445B1 (en) On-demand switching between hardware and software implementations of a peripheral device
JPH08123722A (ja) 情報処理システムにおける記憶制御方法および記憶制御装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110307

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120217

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4973730

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees