JP2013125355A - 演算処理装置および演算処理装置の制御方法 - Google Patents
演算処理装置および演算処理装置の制御方法 Download PDFInfo
- Publication number
- JP2013125355A JP2013125355A JP2011272807A JP2011272807A JP2013125355A JP 2013125355 A JP2013125355 A JP 2013125355A JP 2011272807 A JP2011272807 A JP 2011272807A JP 2011272807 A JP2011272807 A JP 2011272807A JP 2013125355 A JP2013125355 A JP 2013125355A
- Authority
- JP
- Japan
- Prior art keywords
- request
- unit
- tte
- address
- arithmetic processing
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
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)
Abstract
【課題】アドレス変換の実行時間を短縮する。
【解決手段】CPUは、複数のスレッドを実行し、仮想アドレスを含むメモリリクエストを出力する演算部と、メモリ2が記憶する複数のアドレス変換対のうち一部を登録するTLB5を有する。また、CPUは、演算部が出力したメモリリクエストに含まれる仮想アドレスに対応するアドレス変換対が、TLB5に登録されていない場合、対応するアドレス変換対の取得要求を、メモリ2に対してスレッド毎に発行するTLB制御部5aを有する。また、CPUは、TLB制御部5aが対応するアドレス変換対の取得要求を発行した場合、対応するアドレス変換対を、メモリ2からのスレッド毎にそれぞれ取得する複数の変換対取得部15〜15bを有する。また、CPUは、複数の変換対取得部15〜15bがそれぞれ取得したアドレス変換対のいずれかを、TLB5に登録するTSBW制御部19を有する。
【選択図】図3
【解決手段】CPUは、複数のスレッドを実行し、仮想アドレスを含むメモリリクエストを出力する演算部と、メモリ2が記憶する複数のアドレス変換対のうち一部を登録するTLB5を有する。また、CPUは、演算部が出力したメモリリクエストに含まれる仮想アドレスに対応するアドレス変換対が、TLB5に登録されていない場合、対応するアドレス変換対の取得要求を、メモリ2に対してスレッド毎に発行するTLB制御部5aを有する。また、CPUは、TLB制御部5aが対応するアドレス変換対の取得要求を発行した場合、対応するアドレス変換対を、メモリ2からのスレッド毎にそれぞれ取得する複数の変換対取得部15〜15bを有する。また、CPUは、複数の変換対取得部15〜15bがそれぞれ取得したアドレス変換対のいずれかを、TLB5に登録するTSBW制御部19を有する。
【選択図】図3
Description
本発明は、演算処理装置および演算処理装置の制御方法に関する。
従来、物理メモリ空間よりも大きな仮想メモリ空間を提供する仮想記憶方式の技術が知られている。例えば、このような仮想記憶方式が適用された情報処理装置は、TTE(Translation Table Entry)−Tagと呼ばれる仮想アドレスとTTE−Dataと呼ばれる物理アドレスとの対であるTTEをメインメモリに記憶する。そして、情報処理装置は、仮想アドレスと物理アドレスとのアドレス変換を行う場合は、メインメモリにアクセスし、メインメモリが記憶するTTEを参照してアドレス変換を実行する。
ここで、アドレス変換のたびにメインメモリにアクセスすると、アドレス変換の実行時間が増加してしまう。そこで、アドレス変換バッファ(TLB:Translation Lookaside Buffer)と呼ばれるTTEを登録するキャッシュメモリを演算処理装置内に設ける技術が知られている。
以下、このようなTLBを有する演算処理装置の一例について説明する。図9は、TLBを有する演算処理装置が実行する処理の一例を説明するためのフローチャートである。なお、図9に示す例は、仮想アドレスによるメモリアクセス要求が発行された際に演算処理装置が実行する処理の一例である。例えば、図9に示す例では、演算処理装置は、メモリアクセス要求が発行されるまで待機する(ステップS1:No)。
そして、演算処理装置は、メモリアクセス要求が発行された場合には(ステップS1:Yes)、メモリアクセスの対象となる記憶領域の仮想アドレスをTTE−TagとするTTEをTLBから検索する(ステップS2)。そして、演算処理装置は、検索対象のTTEがTLBに記憶されていた場合は(ステップS3:Yes)、検索対象のTTEから物理アドレスを取得し、取得した物理アドレスを用いて、キャッシュメモリに対するメモリアクセスを行う(ステップS4)。
一方、演算処理装置は、検索対象となる仮想アドレスがTLBに記憶されていない場合は(ステップS3:No)、後続のメモリアクセス要求に関わる処理をキャンセルするとともに、OS(Operating System)に以下のトラップ処理を実行させる。すなわち、OSは、メモリアクセスの対象となる仮想アドレスをレジスタから読み出す(ステップS5)。
そして、OSは、読み出した仮想アドレスから算出されるTSB(Translation Storage Buffer)ポインタをレジスタから読み出す(ステップS6)。ここで、TSBポインタは、ステップS5にて読み出した仮想アドレスをTTE−TagとするTTEを記憶する記憶領域の物理アドレスである。
また、OSは、読み出したTSBポインタが示す領域からTTEを取得し(ステップS7)、取得したTTEをTLBに登録する(ステップS8)。その後、演算処理装置は、TLBが記憶するTTEを参照し、仮想アドレスと物理アドレスとの変換を行う。
ここで、クラウドコンピュータ等、ハードウェアの仮想化技術が知られているが、このようなハードウェアの仮想化技術が適用された情報処理装置においては、ハイパーバイザが複数のOSとメモリ管理とを実行する。このため、仮想化技術が適用された情報処理装置においてアドレス変換処理が実行される場合は、OSに加えてハイパーバイザが動作するので、アドレス変換処理におけるオーバーヘッドが増大する。また、仮想化技術が適用された情報処理装置においては、複数のOSでトラップ処理が発生した場合に、ハイパーバイザの負荷が増大する結果、トラップ処理のペナルティが増大する。
そこで、TTEの取得処理および登録処理をOSやハイパーバイザではなく、ハードウェアが実行するHWTW(Hard Ware Table Walk)の技術が知られている。以下、図面を用いて、HWTWを有する演算処理装置が実行する処理の一例について説明する。
図10は、従来の演算処理装置が実行する処理の一例を説明するための図である。なお、図10に示す各処理のうち、ステップS11〜S13、S25、ステップS21〜S24は、図9に示すステップS1〜S3、S4、S5〜S8と同様の処理であるものとして、詳細な説明を省略する。
図10に示す例では、演算処理装置は、メモリアクセスの対象となる仮想アドレスをTTE−TagとするTTEがTLBに記憶されていない場合は(ステップS13:No)、先行するメモリアクセス要求に関わるTTEの登録が完了したか否かを判別する(ステップS14)。そして、演算処理装置は、先行するメモリアクセス要求に関わるTTEの登録が完了していない場合には(ステップS14:No)、先行するメモリアクセス要求に関わるTTEの登録が完了するまで待機する。
一方、演算処理装置は、先行するメモリアクセス要求に関わるTTEの登録が完了した場合には(ステップS14:Yes)、HWTWを実行する設定であるか否かを判別する(ステップS15)。そして、演算処理装置は、HWTWを実行する設定であると判別した場合は(ステップS15:Yes)、HWTWを起動する(ステップS16)。HWTWを実行する設定であると判別した場合には、HWTWは、TSBポインタの読み出しを行い(ステップS17)、TSBポインタを用いてメインメモリにアクセスし、取得したTTEをTLBに登録する(ステップS18)。
その後、HWTWは、取得したTTEが正しいか否かを判別し(ステップS19)、正しい場合には(ステップS19:Yes)、取得したTTEをTLBに登録する(ステップS20)。また、HWTWは、TTEが正しくない場合には(ステップS19:No)、OSにトラップ処理を実行させる(ステップS21〜24)。
しかしながら、TTEの取得処理および登録処理をHWTWが逐次的に実行する技術では、先行するメモリアクセス要求に関わるTTEの登録を待ってから次のメモリアクセス要求によるTTEの検索を行う。このため、TLBに登録されていないTTEを用いるメモリアクセス要求が連続して発行された場合は、アドレス変換の実行時間が増大するという問題があった。
本発明は、1つの側面では、アドレス変換の実行時間を短縮することを目的とする。
1つの側面では、仮想アドレスと物理アドレスとを含むアドレス変換対を複数記憶する主記憶装置に接続された演算処理装置である。演算処理装置は、複数のスレッドを実行し、仮想アドレスを含むメモリリクエストを出力する演算処理部と、主記憶装置が記憶する複数のアドレス変換対のうち一部を登録するアドレス変換バッファとを有する。また、演算処理装置は、演算処理部が出力したメモリリクエストに含まれる仮想アドレスに対応するアドレス変換対が、アドレス変換バッファに登録されていない場合、対応するアドレス変換対の取得要求を、主記憶装置に対して複数のスレッド毎に発行する発行部を有する。また、演算処理装置は、発行部が対応するアドレス変換対の取得要求を発行した場合、対応するアドレス変換対を、主記憶装置から複数のスレッド毎にそれぞれ取得する複数の取得部を有する。また、演算処理装置は、複数の取得部がそれぞれ取得したアドレス変換対のいずれかを、アドレス変換部に登録する登録部を有する。
1実施態様によれば、アドレス変換の実行時間を短縮することができる。
以下に添付図面を参照して本願に係る演算処理装置および演算処理装置の制御方法について説明する。
以下の実施例1では、図1を用いて、演算処理装置の一例を説明する。図1は、実施例1に関わる演算処理装置の一例を説明するための図面である。なお、図1では、演算処理装置の一例として、CPU(Central Processing Unit)1の一例を示す。
図1に示す例では、CPU1は、主記憶装置であるメモリ2と接続する。また、CPU1は、命令制御部3、演算部4、アドレス変換バッファ5(TLB:Translation Look Aside Buffer)、L2(Level2)キャッシュ6、L1(Level1)キャッシュ7を有する。また、CPU1は、HWTW(Hard Ware Table Walk)10を有する。また、L1キャッシュ7は、L1データキャッシュ制御部7a、L1データタグ7b、L1データキャッシュ7c、L1命令キャッシュ制御部7d、L1命令タグ7e、L1命令キャッシュ7fを有する。
メモリ2は、CPU1が演算処理に用いるデータを記憶する。例えば、メモリ2は、CPU1が実行する演算処理の対象となる値のデータ、すなわちオペランドと、演算処理に関わる命令のデータとを記憶する。ここで、「命令」とは、CPU1が実行可能な命令をいう。
また、メモリ2は、所定の領域に仮想アドレスと物理アドレスとの対であるTTE(Translation Table Entry)を記憶する。ここで、TTEは、TTE−TagとTTE−Dataとの対を有し、TTE−Tagには仮想アドレスが、TTE−Dataには物理アドレスが格納される。
命令制御部3は、CPU1が実行する処理の流れの制御を行なう。具体的には、命令制御部3は、CPU1において処理すべき命令をL1キャッシュ7から読み込み、解釈し、解釈結果を演算部4に送信する。なお、命令制御部3は、L1キャッシュ7が有するL1命令キャッシュ7fから演算処理に関わる命令を取得し、演算部4は、演算処理に関わる命令やオペランドをL1キャッシュ7が有するL1データキャッシュ7cから取得する。
演算部4は、演算を行う処理部である。具体的には、演算部4は、命令の対象となるデータ、すなわちオペランドを記憶装置から読み込み、命令制御部3によって解釈された命令に従って演算し、演算結果を命令制御部3に送信する。
ここで、命令制御部3や演算部4は、オペランドや命令を取得する場合には、オペランドや命令が格納されたメモリ2の仮想アドレスをTLB5に出力する。また、命令制御部3や演算部4は、CPU1が実行する演算処理の単位であるストランド(スレッド)と仮想アドレスとの組ごとに固有のコンテキストIDをTLB5に出力する。
後述するように、TLB5は、命令制御部3や演算部4が仮想アドレスを出力した場合には、TTEを用いて仮想アドレスを物理アドレスに変換し、変換後の物理アドレスをL1キャッシュ7に出力する。このような場合には、L1キャッシュ7は、TLBが出力した物理アドレスを用いて、命令やオペランドを命令制御部3や演算部4に出力する。その後、命令制御部3や演算部4は、L1キャッシュ7から受信したオペランドや命令を用いて、各種処理を実行する。
TLB5は、メモリ2が記憶するTTEの一部を登録しており、TTEを用いて、命令制御部3や演算部5が出力した仮想アドレスを物理アドレスに変換し、変換後の物理アドレスをL1キャッシュ7に出力するアドレス変換バッファである。具体的には、TLB5は、メモリ2が記憶する複数のTTEのうち、一部のTTEとコンテキストIDとの組を登録する。
そして、TLB5は、命令制御部3や演算部4が仮想アドレスとコンテキストIDとを出力した場合には、以下の処理を実行する。すなわち、TLB5は、自身が登録するTTEとコンテキストIDとの組から、命令制御部3や演算部4が出力した仮想アドレスをTTE−Tagとし、かつ、コンテキストIDが一致するTTEとコンテキストIDとの組を登録しているか判別する。
そして、TLB5は、命令制御部3や演算部4が出力した仮想アドレスをTTE−Tagとし、かつ、コンテキストIDが一致するTTEとコンテキストIDとの組を登録している場合には、TLBヒットしたと判別する。その後、TLB5は、TLBヒットしたTTEのTTE−DataをL1キャッシュ7に出力する。
一方、TLB5は、命令制御部3や演算部4が出力した仮想アドレスをTTE−Tagとし、かつ、コンテキストIDが一致するTTEとコンテキストIDとの組をキャッシュしていない場合には、TLBミスしたと判別する。なお、TLBミスは、MMU(Memory Management Unit)−MISSと表記される場合もある。
このような場合には、TLB5は、HWTW10にTLBミスした仮想アドレスをTTE−TagとするTTEのメモリアクセス要求を発行する。なお、TTEのメモリアクセス要求は、仮想アドレスとTTEのコンテキストIDとメモリアクセス要求を発行することとなった演算処理に関わる処理単位、すなわちストランド(スレッド)、を一意に示すストランドIDとを有する。
また、後述するように、HWTW10は、メモリアクセス要求を受信する複数の受信手段を有しており、TLB5は、TLBミスに係るストランド(スレッド)ごとに異なる受信手段に対してメモリアクセス要求を発行する。このような場合にはHWTW10は、TLB5が発行したメモリアクセス要求の対象となるTTEをL2キャッシュ6およびL1キャッシュ7を介してTLB5に登録する。その後、TLB5は、登録したTTEのTTE−DataをL1キャッシュ7に出力する。
ここで、図2は、実施例1に関わるTLBの一例を説明するための図である。図2に示す例では、TLB5は、TLB制御部5a、TLB本体部5b、コンテキストレジスタ5c、仮想アドレスレジスタ5dを有する。TLB制御部5aは、演算部4またはHWTW10からTTEを取得し、登録する処理を制御する。例えば、TLB制御部5aは、CPU1が実行するプログラムによる新たなTTEを演算部4から取得し、取得したTTEをTLB本体部5bに登録する。
ここで、TLB本体部5bは、各TTEのTTE−TagとTTE−Dataとを対応付けて記憶する。また、各TTE−Tagには、図2中(A)で示す範囲に仮想アドレスが含まれ、図2中(B)で示す範囲にコンテキストIDが含まれる。コンテキストレジスタ5cには、検索対象となるTTEに関わるコンテキストIDが格納され、仮想アドレスレジスタ5dには、検索対象となるTTEのTTE−Tagに含まれる仮想アドレスが格納される。
TLB検索部5eは、TLB本体部5bが記憶するTTEから、TTE−Tagに含まれる仮想アドレスが、仮想アドレスレジスタ5dに記憶された仮想アドレスと一致するTTEを検索する。同時に、TLB検索部5eは、TTE−Tagに含まれるコンテキストIDが、コンテキストレジスタ5cに格納されたコンテキストIDと一致するTTEを検索する。そして、TLB検索部5eは、仮想アドレスおよびコンテキストIDが一致したTTEのTTE−Data、すなわち、検索対象となる仮想アドレスと対の物理アドレスをL1データキャッシュ制御部7aに出力する。
図1に戻って、L1データキャッシュ制御部7aは、TLB5がオペランド取得のために物理アドレスを出力した場合は、以下の処理を実行する。すなわち、L1データキャッシュ制御部7aは、L1データタグ7bのうち、物理アドレスの下位アドレスと対応するキャッシュラインから、物理アドレスのフレームアドレス(上位アドレス)であるタグデータを検索する。そして、L1データキャッシュ制御部7aは、TLB5が出力した物理アドレスのタグデータを検出した場合には、検出されたタグデータと対応付けてキャッシュされたオペランド等のデータをL1データキャッシュ7cに出力させる。一方、L1データキャッシュ制御部7aは、TLB5が出力した物理アドレスのタグデータが検出されなかった場合は、L2キャッシュ6または、メモリ2が記憶するオペランド等のデータをL1データキャッシュ7cに保持する。
また、L1データキャッシュ制御部7aは、後述するHWTW10がTTEのキャッシュ要求であるTRFリクエストを出力した場合には、当該TRFリクエストの対象となるアドレスに格納されたTTEをL1命令キャッシュ7cに保持する。具体的には、L1データキャッシュ制御部7aは、オペランドをL1データキャッシュ7cに保持する際と同様に、L2キャッシュ6またはメモリ2が記憶するTTEをL1データキャッシュ7cに保持する。そして、L1データキャッシュ制御部7aは、HWTW10にTRFリクエストを再度出力させ、L1データキャッシュ7cに保持したTTEをTLB5に登録する。
L1命令キャッシュ制御部7dは、TLBが命令取得のために物理アドレスを出力した場合には、L1データキャッシュ制御部7aと同様の処理を実行することで、L1命令キャッシュ7fに保持する命令を、命令制御部3に出力させる。
また、L1命令キャッシュ制御部7dは、L1命令キャッシュ7fに命令が保持されていない場合は、メモリ2が記憶する命令、または、L2キャッシュ6が記憶する命令をL1命令キャッシュ7fに保持させる。その後、L1命令キャッシュ制御部7dは、L1命令キャッシュ7fが保持する命令を命令制御部3に出力させる。なお、L1命令タグ7e、L1命令キャッシュ7fは、L1データタグ7b、L1データキャッシュ7cと同様の機能を発揮するものとして、詳細な説明を省略する。
なお、L1キャッシュ7は、L1データキャッシュ7cまたはL1命令キャッシュ7fにオペランド、または、命令、または、TTE等のデータが登録されていない場合は、L2キャッシュ6に物理アドレスを出力する。このような場合には、L2キャッシュ6は、L1キャッシュ7が出力した物理アドレスに記憶されるデータをL2キャッシュ6自身が保持しているか判別し、L2キャッシュ6自身が保持している場合には、データをL1キャッシュ7に出力する。一方、L2キャッシュ6は、L1キャッシュ7が出力した物理アドレスに記憶されるデータをL2キャッシュ6自身が保持していない場合は、以下の処理を実行する。すなわち、L2キャッシュ6は、メモリ2からL1キャッシュ7が出力した物理アドレスに記憶されたデータをキャッシュし、キャッシュしたデータをL1キャッシュ7に出力する。
次に、図3を用いて、HWTW10について説明する。図3は、実施例1に係るHWTWの一例を説明するための図である。図3に示す例では、HWTW10は、複数の変換対取得部15〜15b、制御設定レジスタ部16、TSB(Translation Storage Buffer)ポインタ計算部17、リクエストチェック部18、TSBW(TSB Write)制御部19を有する。
なお、以下の説明では、HWTW10が3つの変換対取得部15〜15bを有する例について記載したが、変換対取得部の数はこれに限定されるものではない。なお、以下の説明では、変換対取得部15a、変換対取得部15bは、変換対取得部15と同様の機能を発揮するものとして、詳細な説明を省略する。
変換対取得部15は、複数のリクエスト受信部11〜11b、複数のリクエスト制御部12〜12b、先行リクエスト受信部13、先行リクエスト制御部14を有する。また、TLB5は、TLB制御部5aを有する。TLB制御部5aは、TLBミスが発生した場合には、TLBミスに係るストランド(スレッド)毎に異なる変換対取得部15〜15bに対してリクエストを発行する。
例えば、TLB制御部5aは、CPU1が3つのストランドA〜Cを実行する場合は、以下のようにリクエストを発行する。すなわち、TLB制御部5aは、ストランドAに係るリクエストを変換対取得部15に発行し、ストランドBに係るリクエストを変換対取得部15aに発行し、ストランドCに係るリクエストを変換対取得部15bに発行する。
なお、TLB制御部5aは、各変換対取得部15〜15bに対して、それぞれ特定のストランド(スレッド)に係るリクエストを発行するわけではなく、実行中のストランド(スレッド)に応じて、リクエストの発行先を変更する。例えば、TLB制御部5aは、ストランドA〜Cが実行された後に、ストランド(スレッド)Bが終了し、その後、ストランドA、C、Dと増えた場合には、ストランドBのリクエストを発行していた変換対取得部に対して、ストランドDのリクエストを発行することとしてもよい。
また、TLB制御部5aは、オペランドが格納された記憶領域の仮想アドレスを物理アドレスに変換するTTEを対象とする最初のリクエストである場合、言い換えると、発行するリクエストがリクエストキューの先頭キューに保持されたTOQ(Top Of Queue)である場合には、以下の処理を実行する。すなわち、TLB制御部5aは、リクエストの発行先となる変換対対象部の先行リクエスト受信部13へ発行する。
例えば、TLB制御部5aは、ストランドAにおけるTOQのリクエストを変換対取得部15に発行する場合には、先行リクエスト受信部13にリクエストを発行する。また、TLB制御部5aは、ストランドAの実行時において、発行するリクエストが命令に関するTTEのリクエストである場合や、オペランドに関するTTEの後続のリクエストを発行する場合は、いずれかのリクエスト受信部11〜11aにリクエストを発行する。
リクエスト受信部11〜11bは、TLB制御部5aが発行したリクエストを取得し、保持する。また、リクエスト受信部11〜11bは、後続のリクエスト制御部12〜12bに、リクエストの対象となるTTEを取得させる。
リクエスト制御部12〜12bは、リクエスト受信部11〜11bからリクエストを取得し、取得したリクエストの対象となるTTEを取得する処理を、それぞれ独立して実行する。具体的には、リクエスト制御部12〜12bは、それぞれ複数のテーブルウォーカーであるTSB(Translation Storage Buffer)#0〜#3を有し、各TSB#0〜#3にTTEの取得処理を実行させる。
先行リクエスト受信部13は、オペランドが格納された記憶領域の仮想アドレスを物理アドレスに変換するTTEに対する最初のリクエストを受信する受信部である。また、先行リクエスト制御部14は、各リクエスト制御部12〜12bと同様の機能を発揮し、先行リクエスト受信部13受信するリクエストの対象となるTTEを取得する。つまり、先行リクエスト受信部13および先行リクエスト制御部14は、TOQのリクエストの対象となるTTEを取得する。
このように、TLB制御部5aは、同じ変換対取得部15が有する複数のリクエスト受信部11〜11bおよび複数のリクエスト制御部12〜12bに対しては、同一のストランド(スレッド)に関わるTTEのリクエストを発行する。このため、複数の変換対取得部15〜15bを有するHWTW10は、複数のストランド(スレッド)について、複数のオペランドに関わるTTEの取得処理を並行して実行することができる。
また、変換対取得部15は、複数のリクエスト受信部11〜11b、複数のリクエスト制御部12〜12b、先行リクエスト受信部13、先行リクエスト制御部14を有するので、TOQのリクエストとTOQ以外のリクエストとを同時並列して実行できる。また、変換対取得部15は、TOQのリクエストとTOQ以外のリクエストとを同時並列して実行できるので、後続のリクエストが先行するTOQのリクエストの実行を待つペナルティを隠蔽できる。また、HWTW10は、複数の変換対取得部15〜15bを有するので、オペランドの取得に関わる複数のTTEの取得処理をストランド(スレッド)毎に並行して実行することができる。
制御設定レジスタ部16は、複数のTSBコンフィグレジスタを有する。各TSBコンフィグレジスタには、それぞれTSBポインタを算出するために必要な値が格納される。TSBポインタ計算部17は、TSBコンフィグレジスタに格納された値を用いて、TSBポインタを算出する。そして、TSBポインタ計算部17は、算出したTSBポインタをL1データキャッシュ制御部7aに出力する。
リクエストチェック部18は、L1データキャッシュ7cから送出されたTTEがリクエストの対象であるTTEであるか否かをチェックし、チェック結果をTSBW制御部19に通知する。TSBW制御部19は、リクエストチェック部18によるチェック結果に問題がない、すなわち、L1データキャッシュ7cから送出されたTTEがリクエストの対象のTTEである場合には、登録要求をTLB制御部5aに発行する。この結果、TLB制御部5aは、L1データキャッシュ7cに保持されたTTEを登録することとなる。
一方、リクエストチェック部18は、リクエストチェック部18により、トラップの発生を誘引するトラップ要因が検出された場合には、検出されたトラップ要因をTSBW制御部19に通知する。
以下、リクエスト制御部12が実行するテーブルウォークの一例について図4を用いて説明する。図4は、実施例1に関わるテーブルウォークの一例を説明するための図である。なお、リクエスト制御部12a、12bは、それぞれリクエスト制御部12と同様の処理を実行するものとして、説明を省略する。また、TSB#1〜#3は、TSB#0と同様の処理を実行するものとして、詳細な説明を省略する。
例えば、図4に示す例では、TSB#0は、実行中フラグ、TRF−リクエスト要求フラグ、ムーブイン待ちフラグ、トラップ検出フラグ、完了フラグ、リクエストの対象となるTTEに含まれる仮想アドレスの各データを有する。ここで、実行中フラグとは、TSB#0がテーブルウォークを実行しているか否かを示すフラグ情報であり、TSB#0は、テーブルウォークの実行中は、実行中フラグを「on」にする。
また、TRF−リクエスト要求フラグとは、TSBポインタ計算部17が算出したTSBポインタが示す記憶領域に記憶されたデータの取得要求であるTRFリクエストをL1データキャッシュ制御部7aに発行したか否かを示すフラグ情報である。すなわち、TSB#0は、TRFリクエストを発行した場合には、TRF−リクエスト要求フラグを「on」にする。
また、ムーブイン待ちフラグとは、メモリ2やL2キャッシュ6に格納されたデータをL1データキャッシュ7cに移動させるムーブイン処理が実行されているか否かを示すフラグ情報である。TSB#0は、L1データキャッシュ7cによりムーブイン処理が実行されている場合には、ムーブイン待ちフラグを「on」にする。トラップ検出フラグとは、トラップ要因が検出されたか否かを示すフラグであり、TSB#0は、トラップが検出された場合には、トラップ検出フラグを「on」にする。完了フラグとは、テーブルウォークが完了したか否かを示すフラグであり、TSB#0は、テーブルウォークが完了した場合には、完了フラグを「on」にし、新たなテーブルウォークを実行する場合には、完了フラグを「off」にする。
また、図4に示す例では、TTEは、8バイトのTTE−Tag部と8バイトのTTE−Data部とを有する。TTE−Tag部には、仮想アドレスが格納されており、TTE−Data部には、RA(Real Address:実アドレス)が格納されている。また、図4に示す例では、制御設定レジスタは、TSBコンフィグレジスタ、上限レジスタ、下限レジスタ、オフセットレジスタを有する。なお、RAとは、物理アドレス(PA(Physical Address))を算出するために用いられるアドレスである。
TSBコンフィグレジスタとは、TSB#0〜TSB#3がそれぞれTSBポインタを算出するためのデータが格納されたレジスタである。また、上限レジスタおよび下限レジスタとは、TTEが格納される物理アドレスの範囲を示すデータが格納されたレジスタである。具体的には、上限レジスタには、物理アドレスの上限値(上限PA[46:13])が格納され、下限レジスタには、物理アドレスの下限値(下限PA[46:13])が格納されている。また、オフセットレジスタとは、上限レジスタおよび下限レジスタと対になったレジスタであり、RAからTLBに登録する物理アドレスを算出するためのオフセットPA[46:13]が格納されるレジスタである。
例えば、TSB#0は、リクエスト受信部11が保持するリクエストを参照する。そして、TSB#0は、リクエストの対象となるTTEのコンテキストIDとストランドIDとを用いて、制御設定レジスタ部16が有するTSBコンフィグレジスタ、上限レジスタ、下限レジスタ、オフセットレジスタとを選択する。そして、TSB#0は、TSBコンフィグレジスタのうち、テーブルウォークを実行するか否かを示すテーブルウォーク有効ビットを参照する。図4に示す例では、テーブルウォーク有効ビットは、enableの範囲である。
そして、TSB#0は、テーブルウォークを実行するか否かを示すテーブルウォーク有効ビットが「on」である場合は、それぞれテーブルウォークを開始する。そして、TSB#0は、選択したTSBコンフィグレジスタに設定されたベースアドレス(tsb_base[46:13])をTSBポインタ計算部17に出力させる。また、図4では表示を省略したが、TSBコンフィグレジスタは、TSBのサイズと、ページサイズとを合わせて記憶しており、TSB#0は、TSBのサイズとページサイズとをTSBポインタ計算部17に出力させる。
TSBポインタ計算部17は、制御設定レジスタ部16が出力したベースアドレスと、TSBのサイズと、ページサイズとを用いて、TTEが格納された記憶領域を示す物理アドレスであるTSBポインタを算出する。具体的には、TSBポインタ計算部17は、制御設定レジスタ部16が出力したベースアドレスと、TSBのサイズと、ページサイズとを、以下の式(1)に代入してTSBポインタを計算する。
なお、式(1)中のpaとは、TSBポインタを示し、VAとは、仮想アドレスを示し、VAとは、仮想アドレスを示し、tsb_sizeとはTSBサイズを示し、page_sizeとはページサイズを示す。すなわち、式(1)は、tsb_baseを物理アドレスの「46」ビット目から「13+tsb_size」ビット目とすることを示す。また、式(1)は、VAを物理アドレスの「21+tsb_size+(3×page_size)」ビット目から「13+(3×page_size)」ビット目とし、残りのビットを「0」とすることを示す。
そして、TSB#0は、TSBポインタ計算部17がTSBポインタを算出した場合には、TRFリクエストをL1キャッシュ制御部7aに発行し、TRF−リクエスト要求フラグを「on」にする。具体的には、TSB#0は、TSBポインタ計算部17が算出したTSBポインタをL1データキャッシュ制御部7aに出力させる。これとともに、TSB#0は、TTEのリクエストを受信したリクエスト受信部11を一意に示すリクエストポートID(TRF-REQ-SRC-ID)とTSB#0を示すテーブルウォーカーのID(TSB-PORT-ID)とをL1データキャッシュ制御部7aに送信する。
なお、制御設定レジスタ部16は、複数のTSBコンフィグレジスタを有し、各TSBコンフィグレジスタには、OS(Operating System)により、それぞれ異なるTSBのベースアドレスとTSBのサイズとページサイズとが設定されている。そして、リクエスト制御部12が有する各TSB#0〜#3は、制御設定レジスタ部16からそれぞれ異なるTSBコンフィグレジスタを選択する。このため、各TSB#0〜#3は、TSBポインタ計算部17に、それぞれ異なる値のTSBポインタを算出させるので、同一の仮想アドレスからそれぞれ異なるTSBポインタに対するTRFリクエストを発行することとなる。
例えば、メモリ2には、TTEを格納する領域が4つ存在し、OSが起動時にいずれの領域にTTEを格納するかを設定する。このため、リクエスト制御部12が1つのTSB#0のみを有する場合には、4つの候補全てに対して、TRFリクエストを発行しなければならず、テーブルウォークに要する時間を増大させてしまう。しかし、リクエスト制御部12は、各領域に対してTRFリクエストを発行する4つのTSB#0〜#3を有する場合には、各領域に対するTRFリクエストを各TSB#0〜#3に発行させることで、迅速にTTEを取得することができる。
なお、メモリ2には、TTEを格納する領域を任意の数だけ設定することができる。すなわち、メモリ2にTTEを格納する領域を6つ設定する場合には、リクエスト制御部12に6つのTSB#0〜#5を設置し、各領域に対するTRFリクエストを発行するように設定してもよい。
図4の説明に戻り、L1データキャッシュ制御部7aは、TSB#0が発行したTRFリクエストを取得した場合には、取得したTRFリクエストの対象となるTTEがL1データキャッシュ7cに保持されているか判別する。そして、L1データキャッシュ制御部7aは、TRFのリクエスト対象となるTTEがL1データキャッシュ7cに保持されている場合、すなわちキャッシュヒットした場合には、キャッシュヒットした旨の通知を、TRFリクエストを発行したTSBに送信する。
一方、L1データキャッシュ制御部7aは、TRFのリクエスト対象となるTTEがL1データキャッシュ7cに保持されていない場合、すなわちキャッシュミスした場合は、TTEをL1データキャッシュ7cに保持させる。そして、L1データキャッシュ制御部7aは、再度TRFリクエストの対象となるTTEがL1データキャッシュ7cに保持しているか判別する。
以下、TSB#0によって発行されたTRFリクエストをL1データキャッシュ制御部7aが取得した例について説明する。例えば、TRFリクエストを取得したL1データキャッシュ制御部7aは、リクエストポートIDとテーブルウォーカーのIDとから、リクエスト制御部12のTSB#0によるTRFリクエストであると把握する。
そして、L1キャッシュ制御部7aは、リクエスト発行のプライオリティを取得すると、L1キャッシュ制御用パイプラインにTRFリクエストを投入する。つまり、L1データキャッシュ制御部7aは、TRFリクエストの対象となるTTE、すなわち、TSBポインタが示す記憶領域に格納されたTTEが保持されているか否かを判別する。
そして、L1データキャッシュ制御部7aは、当該TRFリクエストがキャッシュヒットした場合は、L1キャッシュ制御用パイプラインをリクエストが流れ終わったサイクルでTRFリクエストの対象データが保持されていることを示す信号をTSB#0に出力する。このような場合には、TSB#0は、L1データキャッシュ7cから保持されたデータを送出してもらい、リクエストチェック部18を用いて、送出したデータがTLB制御部5aからリクエストされたTTEであるか否かを判別する。
一方、TTEが保持されていない場合、すなわち、TRFリクエストの対象となるTTEがキャッシュミスした場合は、以下の処理を実行する。まず、L1データキャッシュ制御部7aは、図3に示すL1データキャッシュ7cのMIB(Move In Buffer)にTRFリクエストであることを示すフラグを保持させる。
そして、L1データキャッシュ制御部7aは、L1データキャッシュ7cにTRFリクエストの対象となる記憶領域に記憶されたデータのムーブイン処理のリクエストをL2キャッシュ6に発行させる。また、L1データキャッシュ制御部7aは、TRFリクエストがL1キャッシュ制御用パイプラインを流れ終わったサイクルで、L1キャッシュミスしてMIBを確保したことを示す信号をTSB#0に出力する。このような場合には、TSB#0は、ムーブイン待ちフラグを「on」にする。
ここで、L2キャッシュ6は、ムーブイン処理のリクエストが発行された場合には、通常のロード命令と同様の動作で、メモリ2からTRFリクエストの対象となるデータを保持し、保持したデータをL1データキャッシュ7cに送信する。このような場合には、MIBは、L2キャッシュ6から送信されたデータをL1データキャッシュ7cに保持させるとともに、保持させたデータがTRFリクエストの対象となるデータであると判別する。そして、MIBは、TRFリクエストを再度発行する指示をTSB#0に対し発行する。
すると、TSB#0は、ムーブイン待ちフラグ「off」に戻し、TSBポインタ計算部17にTSBポインタを再計算させ、L1データキャッシュ制御部7aにTRFリクエストを再度発行する。そして、L1データキャッシュ制御部7aは、TRFリクエストをL1キャッシュ制御用パイプラインに投入する。すると、L1データキャッシュ制御部7aは、キャッシュヒットしたと判別し、TSB#0にTRFリクエストの対象データが保持されていることを示す信号をTSB#0に出力する。このような場合には、TSB#0は、再度TRFリクエストを発行し、キャッシュヒットしたデータをリクエストL1データキャッシュ7cに送出させる。
ここで、L1データキャッシュ7cとリクエストチェック部18とは、8バイト幅のバスで接続されている。そして、L1データキャッシュ7cは、先にTTE−Data部を送出し、次に、TTE−Tag部を送出する。リクエストチェック部18は、L1データキャッシュ7cが送出したデータを受信し、受信したデータがTRFリクエストの対象となるTTEであるか否かを判別する。
このような場合には、リクエストチェック部18は、TTE−Data部のRAと、上限PA[46:13]および下限PA[46:13]とを比較することで、TTE−Data部のRAが所定のアドレス範囲内に入っているか否かを判別する。これと並行して、リクエストチェック部18は、L1データキャッシュ7cが送出したTTE−Tag部の仮想アドレスと、TSB#0が記憶する仮想アドレスとが一致するか否かを判別する。
そして、TSB#0は、TTE−Data部のRAが所定のアドレス範囲内に入っており、かつ、TTE−Tag部のVAがTSB#0が記憶する仮想アドレスと一致する場合には、TLBに登録するTTEの物理アドレスを算出する。すなわち、TSB#0は、TTE−Data部のRAにオフセットPA[46:13]を加算し、TLB5に登録するTTEの物理アドレスを算出する。なお、リクエストチェック部18は、制御設定レジスタ15に複数の上限レジスタおよび下限レジスタが存在する場合には、最若番の上限レジスタおよび下限レジスタを用いて、TTE−Data部のRAが所定のアドレス範囲内にあるか否かを判別する。
その後、リクエストチェック部18は、チェック結果に問題が無ければTLB5への登録要求をTSBW制御部19に通知する。一方、リクエストチェック部18は、チェック結果に問題が有る場合には、TSB#0によるテーブルウォークの結果にトラップ要因の通知をTSBW制御部19に通知する。また、このような場合には、TSB#0は、トラップ検出フラグを「on」にする。ここで、チェック結果に問題が有る場合とは、L1データキャッシュ7cが送出したTTE−TagとTSB#0が記憶する仮想アドレスが一致しない場合や、RAが所定のアドレス範囲に入らない場合、パスエラーが生じた場合等である。
このように、リクエストチェック部18は、TTE−Data部に対して、TTE−Tag部よりも多くのチェックを実行する。このため、HWTW10は、L1データキャッシュ7cにTTE−Data部から先に出力させることで、総チェックサイクルを短くさせ、テーブルウォーク処理を高速化できる。
TSBW制御部19は、リクエストチェック部18から登録要求が通知された場合には、TLB制御部5aに対してTTEの登録要求を発行する。このような場合には、TLB制御部5aは、リクエストチェック部18がチェックしたTTE−Tag部とリクエストチェック部18が算出した物理アドレスを有するTTE−Dataとを有するTTEをTLB5に登録する。
また、TSBW制御部19は、TLB5に対してTLBミスしたリクエストを再投入させることで、TLB5に登録されたTTEを再度検索させる。この結果、TLB5は、ヒットしたTTEを用いて仮想アドレスを物理アドレスに変換し、変換した物理アドレスを出力する。すると、L1データキャッシュ制御部7aは、通常のデータ取得要求時と同様に、TLB5が出力した物理アドレスが示す記憶領域に格納されたオペランドまたは命令を演算部4に出力する。
一方、TSBW制御部19は、テーブルウォークの結果にトラップ要因の通知を受けた場合には、以下の処理を実行する。すなわち、TSBW制御部19は、リクエスト制御部12が有する他のTSBによるTRFリクエストの結果、取得されたTTEのチェック結果をリクエストチェック部18から通知されるまで待機する。
そして、TSBW制御部19は、リクエスト制御部12が有するいずれかのTSBが発行したTRFリクエストにより取得されたTTEのチェック結果として登録要求を受信した場合には、TLB制御部5aに対してTTEの登録要求を発行する。そして、TSBW制御部19は、処理を終了する。
すなわち、TSBW制御部19は、TSB#0〜#3のうち、いずれかのTSB#0〜#3によってリクエストの対象となるTTEが取得された場合には、その時点でTSB制御部5aにTTEの登録要求を発行する。そして、TSBW制御部19は、他のTSBによるTRFリクエストの結果にトラップ要因が存在する場合にも、それを無視して処理を完了する。
また、TSBW制御部19は、処理を完了する場合には、完了信号をL1データキャッシュ7cのMIBに送信する。MIBは、TRFリクエストフラグが「on」であり、かつ、完了信号を取得すると、TRFリクエスト完了フラグを「on」にする。このような場合には、L1データキャッシュ7cは、L2キャッシュ6からデータが送出された場合にも、起動信号をTSBW制御部19に送信せず、L2キャッシュ6から送出されたデータのキャッシュのみを行う。
また、TSBW制御部19は、先行リクエスト制御部14が有する全てのTSBが発行したTRFリクエストにより取得されたTTEのチェック結果が全てトラップ要因の通知である場合には、以下の処理を実行する。すなわち、TWBW制御部18は、通知されたトラップ要因のうち、最も若い番号のTSBが発行したTRFリクエストに関わるトラップ要因であって、最も優先度の高いトラップ要因をL1データキャッシュ制御部7aに対通知し、トラップ処理を実行させる。
一方、TSBW制御部19は、リクエスト制御部12が有する全てのTSB#0〜#3が発行したTRFリクエストに係るチェック結果が、トラップ要因の通知である場合は、そのまま処理を終了する。また、TSBW制御部19は、他のリクエスト制御部12aおよびリクエスト制御部12bについても、全てのTRFリクエストに係るチェック結果がトラップ要求である場合には、そのまま処理を終了する。
つまり、TSBW制御部19は、TOQに係るトラップ要因が通知された場合にのみ、トラップ処理を実行し、他のリクエストに関わるトラップ要因が通知された場合には、トラップ処理を実行せずに、処理を終了する。これにより、TSBW制御部19は、TTEのリクエストをアウトオブオーダーに実行する場合にも、TOQに関わるトラップ要因が検出された際にのみトラップ処理を実行するL1データキャッシュ制御部7aの論理の変更を不要とする。この結果、複数の変換対取得部15〜15bの制御が容易になる。
このように、HWTW10は、複数のオペランドに関わるTTEについてのテーブルウォークをアウトオブオーダーに実行する。このため、HWTW10は、複数のオペランドに関するTTEを迅速に取得することができる。また、HWTW10は、それぞれ独立に動作する複数の変換対取得部15〜15bを有し、ストランド(スレッド)毎に、TTEのリクエストを異なる変換対取得部15〜15bに割当てる。このため、HWTW10は、ストランド(スレッド)毎に、オペランドに関わるTTEのリクエスト同士をアウトオブオーダーに実行することができる。
なお、TLB制御部5aは、L1データキャッシュ7cからTTEをTLB5に登録させる場合には、CPU1が実行するソフトウェアがストア命令により、TLB5へ新たなTTEを登録するデータイン動作に変換することにより登録させる。このため、TLB制御部5aは、新たな処理を実行するための回路を実装する必要がなく、回路量を削減することができる。
なお、L1キャッシュ制御部7aは、取得したTTEに発生した訂正可能な1ビットエラーを訂正する等の処理を実行するため等の理由により、TRFリクエストがアボートした場合には、TRFリクエストがアボートしたことを示す信号をTSB#0に出力する。このような場合には、TSB#0は、L1データキャッシュ制御部7aに、再度TRFリクエストを発行する。
また、L1キャッシュ制御部7aは、TRFリクエストの対象となるデータに訂正不能なエラーであるUE(Uncorrectable Error)が発生した場合には、UEである旨を示す信号をTSB#0に出力する。このような場合には、L1キャッシュ制御部7aは、TSBW制御部19に、MMU−ERROR−TRAP要因が生じた旨を示す通知を送信する。
また、L1キャッシュ制御部7aは、各信号をTRFリクエストのクエストポートIDとテーブルウォーカーのIDとともに送信することで、TRFリクエストを発行した任意のTSBに対して各信号を送信することができる。
例えば、命令制御部3、演算部4、L1データキャッシュ制御部7a、L1命令キャッシュ制御部7dとは、電子回路である。また、TLB制御部5a、TLB検索部5eとは、電子回路である。また。リクエスト受信部11〜11b、リクエスト制御部12〜12b、先行リクエスト受信部13、先行リクエスト制御部14、TSBポインタ計算部17、リクエストチェック部18、TSBW制御部19とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、TLB本体部5b、コンテキストレジスタ5c、仮想アドレス5d、L1データタグ7b、L1データキャッシュ7c、L1命令タグ7e、L1命令キャッシュ7f、制御設定レジスタ部16とは、レジスタ等の半導体メモリ素子である。
次に、図5a〜5cを用いて、HWTW10が同じストランド(スレッド)に含まれる複数のオペランドに関するTTEの取得リクエストを並行して実行することで、連続してMMUミスが発生した場合にも、アドレス変換に要する時間を短縮することができる点について説明する。図5aは、OSが連続してトラップ処理を実行する処理を説明するための図である。図5bは、従来のHWTWの処理を説明するための図である。図5cは、実施例1に関わるHWTWの処理を説明するための図である。
なお、図5a〜図5c中の通常処理とは、演算処理部によって演算処理が実行されている状態を示す。また、図5a〜図5c中のキャッシュミスとは、アドレス変換後の物理アドレスが示す記憶領域のオペランド読み込みリクエストが、キャッシュミスした後に主記憶装置からオペランドを取得する処理を実行している状態を示す。
図5aに示す例では、従来のCPUは、通常処理の後、TLBを検索した結果、MMUミスを検出する。すると、従来のCPUは、OSにトラップ処理を実行させ、TTEをTLBに登録させる。その後、従来のCPUは、新たに登録したTTEを用いて、アドレス変換を行い、データを検索した結果、キャッシュミスが生じるので、主記憶装置からオペランドを取得する。
続いて、従来のCPUは、TLBの検索を行うが、再度MMUミスを検出するので、再度OSにトラップ処理を実行させ、TTEをTLBに登録させる。その後、従来のCPUは、アドレス変換を行ってデータの検索を行うが、キャッシュミスが発生するので、オペランドを主記憶装置から取得する。このように、従来のCPUは、MMUミスが発生する度に、OSにトラップ処理を実行させる。このため、従来のCPUが通常処理を実行するのは、2度目のMMUミスが発生し、MMUミスが発生したTTEをTLBに登録してからとなる。
次に、図5bを用いて、従来のCPUがHWTWを実行する処理について説明する。例えば、従来のCPUは、MMUミスが検出されると、HWTWを起動させ、TTEの登録処理を実行させる。そして、従来のCPUは、キャッシュしたTTEを用いてアドレス変換を行い、オペランドを取得する。次に、従来のCPUは、再度MMUミスを検出するが、TTEの登録処理をHWTWに実行させるので、MMUミスの検出直後に、通常処理を開始する。しかし、従来のCPUは、MMUミスが発生する度に、TTEの登録処理を1つのHWTWに順次実行させるので、演算処理に要する時間を5%ほどしか短縮することができない。
次に、図5cを用いて、HWTW10を有するCPU1が実行する処理について説明する。CPU1は、1度目のMMUミスを検出した場合には、HWTW10にTTEの登録処理を実行させる。続いて、CPU1は、2度目のMMUミスを検出するが、HWTW10は、HWTW10がTTEの取得処理を実行中であっても、新たなTTEの取得リクエストを発行する。すると、HWTW10は、図5c中(C)に示すように、複数のオペランドに関わるTTEの取得リクエストを並行して実行する。このため、CPU1は、MMUミスが連続する場合にも、迅速にTTEを取得することができる結果、演算処理に要する時間を20%ほど短縮することができる。
次に、図6を用いてCPU1が実行する処理の流れの一例について説明する。図6は、実施例1に関わるCPUが実行する処理の流れを説明するためのフローチャートである。図6に示す例では、CPU1は、メモリアクセスリクエストが発行されたことをトリガとして(ステップS101:Yes)、処理を開始する。なお、CPU1は、メモリアクセスリクエストが発行されていない場合は(ステップS101:No)、処理を開始せずに待機する。
まず、CPU1は、メモリアクセスリクエストが発行された場合は(ステップS101:Yes)、メモリアクセスリクエストの対象となる仮想アドレスを物理アドレスに変換するTTEをTLBから検索する(ステップS102)。そして、CPU1は、TTEがTLBヒットしたか否かを判別する(ステップS103)。次に、CPU1は、TTEがTLBミスした場合には(ステップS103:No)、HWTW10によるテーブルウォークを実行するか否かを示す設定が有効であるか否かを判別する(ステップS104)。すなわち、CPU1は、テーブルウォークを実行するか否かを示すテーブルウォーク有効ビットが「on」であるか否かを判別する。
そして、CPU1は、HWTW10によるテーブルウォークを実行させる場合は(ステップS104:Yes)、HWTW10を起動する(ステップS105)。その後、CPU1は、TSBポインタを算出し(ステップS106)、算出したTSBポインタを用いて、メモリ2のTSB領域にアクセスし、TTEを取得する(ステップS107)。
次に、CPU1は、取得したTTEが正しいか否かをチェックする(ステップS108)。そして、CPU1は、取得したTTEが正しい場合、すなわち、TRFリクエストの対象となるTTEである場合には(ステップS108:Yes)、取得したTTEをTLB5に登録する(ステップS109)。
一方、CPU1は、取得したTTEが誤りである場合には(ステップS108:No)、OSにトラップ処理を実行させる(ステップS110〜S113)。なお、OSによるトラップ処理(ステップS110〜S113)は、従来のCPUが実行する処理と同様(図9中ステップS5〜S8)であるものとし、詳細な説明を省略する。
また、CPU1は、TTEをTLBから検索した結果(ステップS102)、TLBヒットした場合には(ステップS103:Yes)、以下の処理を実行する。すなわち、CPU1は、ヒットしたTTEによってアドレス変換した物理アドレスを用いて、メモリアクセスリクエストの対象データをL1データキャッシュ7cから検索する(ステップS114)。そして、CPU1は、通常時と同様の演算処理を実行し、処理を終了する。
次に、図7を用いて、HWTW10が実行する処理の流れについて説明する。図7は、実施例1に関わるHWTWが実行する処理の流れの一例を説明するための図である。図7に示す例では、HWTW10は、リクエスト受信部11〜11bがリクエストを受信したことをトリガとして(ステップS201:Yes)、処理を開始する。なお、HWTW10は、リクエスト受信部11〜11bがリクエストを受信していない場合は(ステップS201:No)、リクエストを受信するまで待機する。
まず、HWTW10は、テーブルウォークであるTSB#0〜#3を起動させる(ステップS202)。次に、HWTW10は、TSBコンフィグレジスタのテーブルウォーク有効ビットが「on」であるか否かを判別する(ステップS203)。そして、HWTW10は、テーブルウォーク有効ビットが「on」である場合は(ステップS203:Yes)、TSBポインタを算出し(ステップS204)、L1データキャッシュ制御部7aにTRFリクエストを発行する(ステップS205)。
次に、HWTW10は、L1データキャッシュ7cからの応答によりL1データキャッシュ7cにTRFリクエストの対象のTTEが保持されているかをチェックする(ステップS206)。そして、HWTW10は、L1データキャッシュ7cにTTEが保持されていない場合、すなわち、TTEがキャッシュミスした場合は(ステップS206MISS)、TTEのムーブイン(MI:Move In)待ち状態に移行する(ステップS207)。
次に、HWTW10は、MIBにTRFリクエストであることを示すフラグが保持されたか否かを判別し(ステップS208)、MIBにTRFリクエストであることを示すフラグが保持された場合は(ステップS208:Yes)、以下の処理を実行する。すなわち、HWTW10は、再度TSBポインタを算出し(ステップS204)、TRFリクエストを発行する(ステップS205)。一方、HWTW10は、MIBにTRFリクエストであることを示すフラグが保持されていない場合は(ステップS208:No)、再度ムーブイン待ち状態に移行する(ステップS207)。
一方、HWTW10は、L1データキャッシュ7cに対するTRFリクエストがヒットした場合は(ステップS206:HIT)、ヒットしたTTEの候補が正しいTTEであるか否かを判別する(ステップS209)。そして、HWTW10は、TTEの候補が正しいTTEである場合は(ステップS209:Yes)、TLB5に取得したTTEの登録要求を発行し(ステップS210)、テーブルウォークを完了する(ステップS211)。
ここで、HWTW10は、ヒットしたTTEの候補が正しいTTEではない場合は(ステップS209:No)、トラップ要因を検出し(ステップS212)、その後、テーブルウォークを完了する(ステップS211)。また、HWTW10は、L1データキャッシュ7cが記憶するTTEのデータにUEが発生した場合は(ステップS206:UE)、トラップ要因を検出し(ステップS212)、その後、テーブルウォークを完了する(ステップS211)。
また、HWTW10は、TRFリクエストがアボートした場合は(ステップS206:ABORT)、再度、TSB#0〜#3を起動させる(ステップS202)。なお、HWTW10は、テーブルウォーク有効ビットが「off(0)」である場合は(ステップS203:No)、テーブルウォークを実行せずに、処理を完了する(ステップS211)。
次に、図8を用いて、TSBW制御部19が実行する処理の流れの一例について説明する。図8は、実施例1に関わるTSBW制御部が実行する処理の流れの一例を説明するためのフローチャートである。なお、図8に示す例では、TSBW制御部19は、各TSB#0〜#3によるテーブルウォークが完了したことをトリガとして(ステップS301:Yes)、処理を開始する。また、TSBW制御部19は、各TSB#0〜#3によるテーブルウォークが完了していない場合は(ステップS301:No)、処理を開始せずに待機する。
次に、TSBW制御部19は、TSB#0〜#3のいずれかにより、TSBがヒットしたか否かを判別し(ステップS302)、TSBヒットした場合は(ステップS302:Yes)、TLB登録要求をTLB制御部5aに発行する(ステップS303)。次に、TSBW制御部19は、L1データキャッシュ制御部7aに再起動を要求する(ステップS304)。次に、TSB制御部19は、TRFリクエストを再投入することで(ステップS305)、TLBを再度検索させる(ステップS306)。
そして、TSBW制御部19は、TLBヒットしたか否かを判別し(ステップS307)、TLBヒットした場合は(ステップS307:Yes)、L1データキャッシュ7cのキャッシュ検索を実行し(ステップS308)、その後処理を終了する。一方、TSBW制御部19は、TLBミスした場合は(ステップS307:No)、何もせずにそのまま処理を終了する。
一方、TSBW制御部19は、TSB#0〜#3のいずれもがTSBミスした場合は(ステップS302:No)、1つのリクエスト制御部が有する全てのTSBがテーブルウォークを完了したか否かを判別する(ステップS309)。そして、TSBW制御部19は、全てのTSBがテーブルウォークを完了していない場合は(ステップS309:No)、以下の処理を実行する。すなわち、TSBW制御部19は、一定時間待機し(ステップS310)、再度1つのリクエスト制御部が有する全てのTSBがテーブルウォークを完了したか否かを判別する(ステップS309)。
一方、TSBW制御部19は、1つのリクエスト制御部が有する全てのTSBがテーブルウォークを完了した場合は(ステップS309:Yes)、図7中ステップS212にて検出されたトラップ要因をチェックする(ステップS311)。次に、TSBW制御部19は、トラップ要因が発生したTRFリクエストがTOQであるか否かを判別する(ステップS312)。
そして、TSBW制御部19は、トラップ要因が発生したTRFリクエストがTOQに保持されている場合は(ステップS312:Yes)、L1データキャッシュ制御部7aにトラップ要因を通知する(ステップS313)。すると、L1データキャッシュ制御部7aは、OSにトラップ要因を通知し(ステップS314)、トラップ処理を実行させる。その後、TSBW制御部19は、処理を終了する。
一方、TSBW制御部19は、トラップ要因が発生したTRFリクエストがTOQではない場合は(ステップS312:No)、トラップ要因を破棄し(ステップS315)、何もせずにそのまま処理を終了する。
[実施例1の効果]
上述したように、CPU1は、仮想アドレスを物理アドレスに変換するTTEを複数記憶するメモリ2と接続されている。また、CPU1は、複数のスレッドを実行し、仮想アドレスを含むメモリリクエストを出力する演算部4を有する。また、CPU1は、メモリ2からTTEの一部を登録するTLB5を有する。また、CPU1は、演算処理の対象となるデータ、すなわちオペランドが格納された仮想アドレスを物理アドレスに変換するTTEがTLB5に登録されていない場合には、HWTW10にTTEの取得リクエストを発行するTLB制御部5aを有する。
上述したように、CPU1は、仮想アドレスを物理アドレスに変換するTTEを複数記憶するメモリ2と接続されている。また、CPU1は、複数のスレッドを実行し、仮想アドレスを含むメモリリクエストを出力する演算部4を有する。また、CPU1は、メモリ2からTTEの一部を登録するTLB5を有する。また、CPU1は、演算処理の対象となるデータ、すなわちオペランドが格納された仮想アドレスを物理アドレスに変換するTTEがTLB5に登録されていない場合には、HWTW10にTTEの取得リクエストを発行するTLB制御部5aを有する。
また、CPU1は、発行された取得リクエストの対象となるTTEをメモリ2から取得する複数のリクエスト制御部12〜12bを有する複数の変換対取得部15〜15bを有する。そして、TLB制御部5aは、TTEの取得リクエストに関わるストランド(スレッド)ごとに、異なる変換対取得部15〜15bへ発行し、各変換対取得部15〜15bは、それぞれ独立してTTEの取得を実行する。また、CPU1は、各変換対取得部15〜15bが取得したTTEのいずれかを、TLB5に登録するTSBW制御部19を有する。
このため、CPU1は、MMUミスするようなメモリアクセスが連続した場合にも、オペランドが格納された仮想アドレスを物理アドレスに変換する複数のTTEを並行して登録することができる。この結果、CPU1は、アドレス変換に要する時間を短縮することができる。
また、CPU1は、1つのストランド(スレッド)においてオペランドに関わるTTEの取得要求が複数発行された場合にも、各TTEを平行して登録することができるので、演算処理に要する時間を短縮できる。また、CPU1は、異なるストランド(スレッド)においてオペランドに関わるTTEの取得要求が同時に発行された場合にも、各TTEを並行して登録できるので、アドレス変換に要する時間を短縮できる。
例えば、データベースシステムの一例として、リレーショナルデータベース方式が適用されたシステムが知られている。このようなシステムにおいては、各データには、隣接するデータを示す情報が付加されるため、オペランド等のデータを取得する際に、連続してTLBミス(MMUミス)が発生し易い。しかし、CPU1は、複数のオペランドに関わるTTLのリクエストが連続してTLBミスした場合にも、並行して各TTEを取得し、アドレス変換を実行することができるので、演算処理に要する時間を短縮することができる。また、CPU1は、演算処理とは独立して上述した処理を実行するので、さらに演算処理に要する時間を短縮できる。
また、CPU1は、TTEを取得するリクエスト制御部12に複数のTSB#0〜#3を有し、各TSB#0〜#3にそれぞれ異なる領域からTTEを取得させる。すなわち、CPU1は、1つのTTEを取得するリクエストから、それぞれ異なる物理アドレスを算出し、それぞれ異なる物理アドレスに記憶されたTTEを取得する複数のTSB#0〜#3を有する。そして、CPU1は、取得したTTEの候補のうち、TTE−Tagのチェックを行うことで、リクエストと対応する仮想アドレスを含むTTEを取得する。このため、CPU1は、TTEを格納する領域がメモリ2に複数存在する場合にも、迅速にTTEを取得することができる。
また、CPU1は、TTEの取得リクエストが、あるストランド(スレッド)において最初に発行されたオペランドに関わるTTEの取得リクエストである場合、すなわち、TOQである場合には、先行リクエスト受信部13にTTEの取得リクエストを発行する。そして、CPU1は、先行リクエスト制御部14にTOQとなるTTEの取得リクエストを実行させ、TOQに保持されているTTEの取得リクエストを実行した結果、UE等のトラップ要因が発生した場合には、OSにトラップ処理を実行させる。このため、CPU1は、TOQについてのみトラップ処理を実行する従来のL1データキャッシュ制御部7aに、新たな機能を追加しないので、HWTW10の実装を容易に行うことができる。
また、CPU1は、仮想アドレスを用いて算出したTSBポインタをL1データキャッシュ制御部7aに出力することで、TTEをL1データキャッシュ7cに格納させ、L1データキャッシュ7cに格納されたTTEをTSB5に登録する。つまり、CPU1は、TTEをキャッシュメモリに保持し、キャッシュメモリに保持したTTEのうち、取得リクエストに対応するTTEをTSB5に登録する。このため、CPU1は、新たな機能をL1キャッシュ7に付加せずともよいので、HWTW10の実行を容易に行う事ができる。
また、CPU1は、L1データキャッシュ7cにキャッシュされたTTEからエラーが発生しているか否かを判別する場合や、リクエストに関わるTTEであるか否かを判別する場合には、TTE−Data部を先に送出させ、次に、TTE−Tag部を送出させる。このため、CPU1は、チェックに時間を要するTTE−Data部のチェックを先に開始することができるため、TTEを取得する際の時間を増加させることなく、L1キャッシュ7とHWTW10との間のバス幅を削減することができる。
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
(1)変換対取得部15〜15bの数について
上述した実施例1では、HWTW10は、3つの変換対取得部15〜15bを有していた。しかし、実施例はこれに限定されるものではなく、HWTW10は、2つ以上であれば任意の数の変換対取得部を有することとしてもよい。
上述した実施例1では、HWTW10は、3つの変換対取得部15〜15bを有していた。しかし、実施例はこれに限定されるものではなく、HWTW10は、2つ以上であれば任意の数の変換対取得部を有することとしてもよい。
(2)リクエスト受信部11〜11bおよびリクエスト制御部12〜12bの数について
上述した実施例1では、HWTW10は、3つのリクエスト受信部11〜11bおよび3つのリクエスト制御部12〜12bを有していた。しかし、実施例はこれに限定されるものではなく、任意の数のリクエスト受信部およびリクエスト制御部を有することとしてもよい。
上述した実施例1では、HWTW10は、3つのリクエスト受信部11〜11bおよび3つのリクエスト制御部12〜12bを有していた。しかし、実施例はこれに限定されるものではなく、任意の数のリクエスト受信部およびリクエスト制御部を有することとしてもよい。
また、各リクエスト制御部12〜12b、および先行リクエスト制御部14は、複数のTSB#0〜#3を有していたが、実施例はこれに限定されるものではない。すなわち、メモリ2にTTEを記憶される領域が固定である場合には、各リクエスト制御部12〜12bおよび先行リクエスト制御部14は、1つのTSBを有すればよい。また、メモリ2にTTEを記憶する領域の候補が4つ存在する場合は、各リクエスト制御部12〜12bおよび先行リクエスト制御部14は、2つのTSB#0、#1を有し、各TSB#0、#1に2回ずつテーブルウォークを実行させてもよい。
(3)先行リクエスト制御部14について
上述したCPU1は、TOQに関わるTTEの取得リクエストを先行リクエスト制御部14に実行させていた。しかし、実施例はこれに限定されるものではない。例えば、CPU1は、区別の無い同様の機能を有する4つのリクエスト受信部11〜11cおよび4つのリクエスト制御部12〜12cを有する。そして、CPU1は、TOQに関わるTTEの取得リクエストを発行するリクエスト制御部にTOQフラグを持たせる。このような場合には、TSBW制御部19は、TOQフラグを持ったリクエスト制御部によるTRFリクエストの実行結果からトラップ要因を検出した場合にのみ、OSにトラップ処理を実行させればよい。
上述したCPU1は、TOQに関わるTTEの取得リクエストを先行リクエスト制御部14に実行させていた。しかし、実施例はこれに限定されるものではない。例えば、CPU1は、区別の無い同様の機能を有する4つのリクエスト受信部11〜11cおよび4つのリクエスト制御部12〜12cを有する。そして、CPU1は、TOQに関わるTTEの取得リクエストを発行するリクエスト制御部にTOQフラグを持たせる。このような場合には、TSBW制御部19は、TOQフラグを持ったリクエスト制御部によるTRFリクエストの実行結果からトラップ要因を検出した場合にのみ、OSにトラップ処理を実行させればよい。
1 CPU
2 メモリ
3 命令制御部
4 演算部
5 TLB
5a TLB制御部
5b TLB本体部
5c コンテキストレジスタ
5d 仮想アドレスレジスタ
5e TLB検索部
6 L2キャッシュ
7 L1キャッシュ
7a L1データキャッシュ制御部
7b L1データタグ
7c L1データキャッシュ
7d L1命令キャッシュ制御部
7e L1命令タグ
7f L1命令キャッシュ
10 HWTW
11〜11b リクエスト受信部
12〜12b リクエスト制御部
13 先行リクエスト受信部
14 先行リクエスト制御部
15〜15b 変換対取得部
16 制御設定レジスタ部
17 TSBポインタ計算部
18 リクエストチェック部
19 TSBW制御部
2 メモリ
3 命令制御部
4 演算部
5 TLB
5a TLB制御部
5b TLB本体部
5c コンテキストレジスタ
5d 仮想アドレスレジスタ
5e TLB検索部
6 L2キャッシュ
7 L1キャッシュ
7a L1データキャッシュ制御部
7b L1データタグ
7c L1データキャッシュ
7d L1命令キャッシュ制御部
7e L1命令タグ
7f L1命令キャッシュ
10 HWTW
11〜11b リクエスト受信部
12〜12b リクエスト制御部
13 先行リクエスト受信部
14 先行リクエスト制御部
15〜15b 変換対取得部
16 制御設定レジスタ部
17 TSBポインタ計算部
18 リクエストチェック部
19 TSBW制御部
Claims (7)
- 仮想アドレスと物理アドレスとを含むアドレス変換対を複数記憶する主記憶装置に接続された演算処理装置において、
複数のスレッドを実行し、仮想アドレスを含むメモリリクエストを出力する演算処理部と、
前記主記憶装置が記憶する複数のアドレス変換対のうち一部を登録するアドレス変換バッファと、
前記演算処理部が出力したメモリリクエストに含まれる仮想アドレスに対応するアドレス変換対が、前記アドレス変換バッファに登録されていない場合、前記対応するアドレス変換対の取得要求を、前記主記憶装置に対して前記複数のスレッド毎に発行する発行部と、
前記発行部が前記対応するアドレス変換対の取得要求を発行した場合、前記対応するアドレス変換対を、前記主記憶装置から前記複数のスレッド毎にそれぞれ取得する複数の取得部と、
前記複数の取得部がそれぞれ取得したアドレス変換対のいずれかを、前記アドレス変換部に登録する登録部を有することを特徴とする演算処理装置。 - 前記複数の取得部は、
前記複数の取得要求のそれぞれに対応する仮想アドレスから互いに異なる複数の物理アドレスをそれぞれ算出し、
前記登録部は、
前記算出された複数の物理アドレスに記憶された複数のアドレス変換対のうち、前記取得要求に対応する仮想アドレスを含むアドレス変換対を、前記アドレス変換部に登録するすることを特徴とする請求項1記載の演算処理装置。 - 前記発行部は、
前記複数の取得要求のいずれかを、前記演算処理部が実行する前記複数のスレッドのうち最初に発行する場合、前記複数の取得部のうち前記取得部ごとに定められた所定の取得部に対して発行し、
前記所定の取得部は、
前記主記憶装置から取得したアドレス変換対に訂正不可能なエラーが発生した場合に、前記演算処理装置が実行するオペレーティングシステムにトラップ処理を実行させることを特徴とする請求項1又は2記載の演算処理装置。 - 前記複数の取得部は、
前記複数の取得要求のそれぞれに対応する仮想アドレスから互いに異なる複数の物理アドレスをそれぞれ算出し、前記それぞれ算出した複数の物理アドレスをキャッシュメモリにそれぞれ保持し、
前記登録部は、
前記キャッシュメモリが保持した複数のアドレス変換対のうち、前記取得要求に対応する仮想アドレスを含むアドレス変換対を、前記アドレス変換部に登録するすることを特徴とする請求項1〜3のいずれか1項に記載の演算処理装置。 - 前記複数の取得部は、
前記キャッシュメモリが保持した複数のアドレス変換対のうち、いずれかのアドレス変換対にエラーが発生した場合、前記エラーが発生したアドレス変換対の物理アドレスを取得した後に、前記エラーが発生したアドレス変換対の仮想アドレスを取得することを特徴とする請求項4記載の演算処理装置。 - 前記発行部は、
前記演算処理部が出力したメモリリクエストに含まれる仮想アドレスに対応するアドレス変換対が、前記アドレス変換バッファに登録されていない場合、前記所定の取得部以外の取得部に前記取得要求を発行することを特徴とする請求項3〜5のいずれか1項に記載の演算処理装置。 - 仮想アドレスと物理アドレスとを含むアドレス変換対を複数記憶する主記憶装置に接続され、前記主記憶装置が記憶する複数のアドレス変換対のうち一部を登録するアドレス変換バッファを有する演算処理装置の制御方法において、
前記演算処理装置が有する演算処理部が複数のスレッドを実行し、
前記演算処理部が、仮想アドレスを含むメモリリクエストを出力し、
前記演算処理部が出力したメモリリクエストに含まれる仮想アドレスに対応するアドレス変換対が、前記アドレス変換バッファに登録されていない場合、前記演算処理装置が有する発行部が、前記対応するアドレス変換対の取得要求を、前記主記憶装置に対して前記複数のスレッド毎に発行し、
前記発行部が前記対応するアドレス変換対の取得要求を発行した場合、前記演算処理装置が有する複数の取得部が、前記対応するアドレス変換対を、前記主記憶装置から前記複数のスレッド毎にそれぞれ取得し、
前記演算処理装置が有する登録部が、前記複数の取得部がそれぞれ取得したアドレス変換対のいずれかを、前記アドレス変換部に登録することを特徴とする演算処理装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011272807A JP2013125355A (ja) | 2011-12-13 | 2011-12-13 | 演算処理装置および演算処理装置の制御方法 |
US13/710,593 US20130151809A1 (en) | 2011-12-13 | 2012-12-11 | Arithmetic processing device and method of controlling arithmetic processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011272807A JP2013125355A (ja) | 2011-12-13 | 2011-12-13 | 演算処理装置および演算処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013125355A true JP2013125355A (ja) | 2013-06-24 |
Family
ID=48573126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011272807A Withdrawn JP2013125355A (ja) | 2011-12-13 | 2011-12-13 | 演算処理装置および演算処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130151809A1 (ja) |
JP (1) | JP2013125355A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015060499A (ja) * | 2013-09-20 | 2015-03-30 | 富士通株式会社 | 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324855B2 (en) * | 2017-06-23 | 2019-06-18 | International Business Machines Corporation | Associating a processing thread and memory section to a memory device |
CN114489792B (zh) * | 2021-03-25 | 2022-10-11 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US6430667B1 (en) * | 2000-04-13 | 2002-08-06 | International Business Machines Corporation | Single-level store computer incorporating process-local address translation data structures |
US7379994B2 (en) * | 2000-10-26 | 2008-05-27 | Metilinx | Aggregate system resource analysis including correlation matrix and metric-based analysis |
US7028286B2 (en) * | 2001-04-13 | 2006-04-11 | Pts Corporation | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture |
US6988264B2 (en) * | 2002-03-18 | 2006-01-17 | International Business Machines Corporation | Debugging multiple threads or processes |
WO2008155825A1 (ja) * | 2007-06-19 | 2008-12-24 | Fujitsu Limited | 演算処理装置および演算処理方法 |
WO2008155849A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 演算処理装置、tlb制御方法、tlb制御プログラムおよび情報処理装置 |
US20120011176A1 (en) * | 2010-07-07 | 2012-01-12 | Nexenta Systems, Inc. | Location independent scalable file and block storage |
US9053022B2 (en) * | 2011-12-30 | 2015-06-09 | Intel Corporation | Synchronous software interface for an accelerated compute engine |
US9152205B2 (en) * | 2012-08-28 | 2015-10-06 | Intel Corporation | Mechanism for facilitating faster suspend/resume operations in computing systems |
-
2011
- 2011-12-13 JP JP2011272807A patent/JP2013125355A/ja not_active Withdrawn
-
2012
- 2012-12-11 US US13/710,593 patent/US20130151809A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015060499A (ja) * | 2013-09-20 | 2015-03-30 | 富士通株式会社 | 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20130151809A1 (en) | 2013-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100303673B1 (ko) | 저장인스트럭션의결과전달방법및이를구현한프로세서 | |
US9430392B2 (en) | Supporting large pages in hardware prefetchers | |
JP6273733B2 (ja) | 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム | |
JP2018504694A (ja) | 仮想アドレスを使用してアクセスされるキャッシュ | |
US7600098B1 (en) | Method and system for efficient implementation of very large store buffer | |
JP4160589B2 (ja) | 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法 | |
EP2159706A1 (en) | Operation processing apparatus and operation processing method | |
US20090106498A1 (en) | Coherent dram prefetcher | |
WO2001050252A1 (en) | Store to load forwarding predictor with untraining | |
US10853072B2 (en) | Arithmetic processing apparatus and method of controlling arithmetic processing apparatus | |
US9542332B2 (en) | System and method for performing hardware prefetch tablewalks having lowest tablewalk priority | |
US10031852B2 (en) | Arithmetic processing apparatus and control method of the arithmetic processing apparatus | |
JP2016505972A (ja) | 仮想アドレス−物理アドレスページクロスバッファを用いた推測的なアドレッシング | |
US20140075151A1 (en) | Detection of conflicts between transactions and page shootdowns | |
TWI722438B (zh) | 用於進行中操作的指令排序的裝置及方法 | |
KR20150079408A (ko) | 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
JP2013125355A (ja) | 演算処理装置および演算処理装置の制御方法 | |
US11243884B2 (en) | Control flow guided lock address prefetch and filtering | |
JP2017167582A (ja) | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 | |
JP2023531216A (ja) | 命令再フェッチを減らすための、プロセッサにおけるハザードに応答した命令パイプライン・フラッシュ後のフェッチ、フラッシュされた命令の再利用 | |
TWI469044B (zh) | 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 | |
US10754791B2 (en) | Software translation prefetch instructions | |
US10380034B2 (en) | Cache return order optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140805 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20141201 |