JPWO2008155851A1 - 演算処理装置、エントリ制御プログラムおよびエントリ制御方法 - Google Patents

演算処理装置、エントリ制御プログラムおよびエントリ制御方法 Download PDF

Info

Publication number
JPWO2008155851A1
JPWO2008155851A1 JP2009520205A JP2009520205A JPWO2008155851A1 JP WO2008155851 A1 JPWO2008155851 A1 JP WO2008155851A1 JP 2009520205 A JP2009520205 A JP 2009520205A JP 2009520205 A JP2009520205 A JP 2009520205A JP WO2008155851 A1 JPWO2008155851 A1 JP WO2008155851A1
Authority
JP
Japan
Prior art keywords
entry
registered
tlb
area
registration
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
JP2009520205A
Other languages
English (en)
Other versions
JP4812876B2 (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 JPWO2008155851A1 publication Critical patent/JPWO2008155851A1/ja
Application granted granted Critical
Publication of JP4812876B2 publication Critical patent/JP4812876B2/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
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

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

この演算処理装置は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持するfTLBと、2wayのsTLBとから構成される。また、sTLBとfTLBとは、LRUによって制御される同階層に配置される。そして、演算処理装置は、主記憶部から出力されたエントリをsTLBに登録する場合に、登録先となるsTLBの領域に既にエントリが登録されているか否かを判定し、登録先となるsTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出してfTLBに登録する。

Description

この発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備えた演算処理装置、エントリ制御プログラムおよびエントリ制御方法に関する。
従来より、仮想記憶方式を用いた情報処理装置において、仮想アドレスから物理アドレスへの変換表(ページテーブル)は主記憶に配置される。そして、CPUは、主記憶に展開されたプログラムを実行すると、仮想アドレスから物理アドレスに変換し、変換した物理アドレスにより主記憶上に展開されたプログラムの命令およびデータを参照する。
現在、CPUの動作速度に比べて主記憶上の動作速度が遅く、また、CPUと主記憶との距離も遠いため、CPUが主記憶にアクセスすると多大な処理時間がかかってしまう。また、仮想アドレスから物理アドレスへの変換表も主記憶上に配置されるため、プログラム内の命令やデータの取得を行うごとに、変換表の取得を行っていては、処理に時間がかかる。
そこで、主記憶上に配置されている変換表の一部のエントリをLRU(Least Recently Used)により制御されるTLB(Translation Look-aside Buffer)と呼ばれるキャッシュメモリに登録しておき、CPUは、仮想アドレスから物理アドレスへの変換の際には、まずTLBを参照し、TLBに該当エントリが存在しなければ、次に主記憶上の変換表を参照する情報処理装置が利用されている。最近では、フルアソシアティブTLBと、2wayセットアソシアティブTLBとを同階層に配置した情報処理装置が利用されている(例えば、特許文献1参照)。
ここで、フルアソシアティブTLBと2wayセットアソシアティブTLBとを同階層に配置した情報処理装置について説明する。図10は、フルアソシアティブTLBと2wayセットアソシアティブTLBとを同階層に配置した従来技術である情報処理装置を説明するための図である。図10に示すように、フルアソシアティブTLBと2wayセットアソシアティブTLBとを同階層に配置した複数のページサイズを扱うことができるアーキテクチャにおいて、両TLBには、はじめエントリが何も登録されておらず、はじめて登録されるTLBは、LRUによりsTLB、fTLB共にway0に登録される。本発明におけるTLB登録は、全てセットアソシアティブTLBに登録されることとする。
このような構成において、プログラムが実行されると、CPUは、仮想アドレスから物理アドレスへの変換(エントリA)を行うためにフルアソシアティブTLB、2wayセットアソシアティブTLBの両TLBを参照する。そして、CPUは、両TLBに仮想アドレスへの変換表が登録されていない場合、主記憶上の変換表を参照する目的で主記憶をアクセスし、該当する仮想アドレスに対応する変換表(エントリA)を主記憶から読み出して2wayセットアソシアティブTLBに登録する(図10の(1)参照)。
その後、CPUは、セットアソシアティブTLBのキャッシュラインが同一になる仮想アドレスがTLBを参照してTLBミスした場合、図10の(1)と同様の処理を行い、「エントリB」としてセットアソシアティブTLBの「way1」に登録する(図10の(2)参照)。さらにその後、CPUは、セットアソシアティブTLBのキャッシュラインが同一になる仮想アドレスがTLBを参照してTLBミスした場合、図10の(1)と同様の処理を行い、「エントリC」として、LRUによりセットアソシアティブTLBの「way0」に登録するが、既に登録されている「エントリA」はセットアソシアティブTLBから追い出されることとなる(図10の(3)参照)。
そして、CPUは、セットアソシアティブTLBのキャッシュラインが同一になる仮想アドレスがTLBを参照してTLBミスした場合、図10の(1)と同様の処理を行い、「エントリD」として、LRUによりセットアソシアティブTLBの「way1」に登録するが、既に登録されている「エントリB」はセットアソシアティブTLBから追い出されることとなる(図10の(4)参照)。
特開2005−346358号公報
しかしながら、上記した従来の技術では、スラッシングが発生し、処理性能が低下するという課題があった。具体的には、セットアソシアティブTLBは、一般的に数wayのセットアソシアティブ方式を用いる。例えば、同時に複数のプロセスが実行され、キャッシュをアクセスするキャッシュラインがぶつかるような仮想アドレスが局所的にセットアソシアティブTLBのway数を超える場合、TLBの書換え、つまり、スラッシングが発生する。そして、CPUは、このスラッシングが発生すると、主記憶上の変換表にアクセスする必要があり性能低下に繋がる。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、スラッシングの発生を防止し、処理性能を向上させることが可能である演算処理装置、エントリ制御プログラムおよびエントリ制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、請求項1に係る発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備えた演算処理装置であって、前記主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手段と、前記エントリ登録判定手段により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録するリプレース制御手段、を備えたことを特徴とする。
また、請求項2に係る発明は、上記の発明において、前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のTLBに登録せず破棄し、エラーがない場合に、当該エントリを他のTLBに登録することを特徴とする。
また、請求項3に係る発明は、上記の発明において、前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、TLBから出力されたエントリであることを示す識別子を付加して、他のTLBに登録することを特徴とする。
また、請求項4に係る発明は、上記の発明において、前記リプレース制御手段によってエントリが登録された複数のTLBにおいて、TLBから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するエントリ削除手段をさらに備えたことを特徴とする。
また、請求項5に係る発明は、上記の発明において、前記複数のTLBは、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがTLBから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、当該エントリが他のTLBから出力されたエントリであるか否かを示すリプレースビットとを備えたものであって、前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のTLBに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録することを特徴とする。
また、請求項6に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のTLBに登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のTLBに登録することを抑止することを特徴とする。
また、請求項7に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のTLBに登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるTLBの領域に登録されているエントリを読み出して、他のTLBへの登録を再開することを特徴とする。
また、請求項8に係る発明は、上記の発明において、前記複数のTLBは、主記憶部から直接出力されたエントリを登録する直接登録領域と他のTLBからリプレース制御されたエントリを登録するリプレース登録領域とに分割されており、さらに、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがTLBから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、リプレース制御されて登録されたエントリか否かを示すリプレースビットとを備えたものであって、前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のTLBのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録することを特徴とする。
また、請求項9に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のTLBの直接登録領域に登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のTLBのリプレース領域に登録することを抑止すること、また本状態中は直接登録されるエントリは他のTLBリプレース領域に登録されることを特徴とする。また本状態中は直接登録されるエントリは他のTLBリプレース領域に登録される。
また、請求項10に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のTLBの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるTLBの領域に登録されているエントリを読み出して、他のTLBのリプレース領域への登録を再開することを特徴とする。
また、請求項11に係る発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備えた情報処理装置としてのコンピュータに実行するエントリ制御プログラムであって、前記主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手順と、前記エントリ登録判定手順により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録するリプレース制御手順、をコンピュータに実行することを特徴とする。
また、請求項12に係る発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備えた情報処理装置に適したエントリ制御方法であって、前記主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定するエントリ登録判定ステップと、前記エントリ登録判定ステップにより前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録するリプレース制御ステップ、を含んだことを特徴とする。
本発明によれば、主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定し、登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録するので、スラッシングの発生を防止し、処理性能を向上させることを可能である。
また、本発明によれば、登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のTLBに登録せず破棄し、エラーがない場合に、当該エントリを他のTLBに登録するので、無駄な領域の使用を防止することが可能である。
また、本発明によれば、登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、TLBから出力されたエントリであることを示す識別子を付加して、他のTLBに登録するので、主記憶部から登録されたエントリか、他のTLBからリプレースされたエントリかを容易に判断することが可能である。
また、本発明によれば、TLBから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するので、マルチヒットによる不整合を防止することが可能である。
また、本発明によれば、主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、他のTLBに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録するので、TLBから追い出されないロックエントリ、主記憶部から直接登録されたアンロックエントリ、TLBから出力されたリプレースエントリの3種類のエントリが混在しても、スラッシングの発生を防止し、処理性能を向上させることが可能である。
また、本発明によれば、他のTLBに登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のTLBに登録することを抑止するので、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。
また、本発明によれば、他のTLBに登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるTLBの領域に登録されているエントリを読み出して、他のTLBへの登録を再開するので、エントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、TLBへのエントリ登録処理を迅速に再開することが可能である。
また、本発明によれば、主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、他のTLBのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録するので、登録先のTLBの領域が、他のTLBから出力されたエントリを登録するTLBを直接登録領域とリプレース登録領域とに分割されている場合でも、TLBから追い出されないロックエントリ、主記憶から直接登録されたアンロックエントリ、TLBから出力されたリプレースエントリの3種類のエントリが混在することができ、スラッシングの発生を防止し、処理性能を向上させることが可能である。
また、本発明によれば、他のTLBの直接登録領域に登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のTLBのリプレース領域に登録することを抑止するので、登録先のTLBの領域が、直接登録領域とリプレース登録領域とに分割されている場合でも、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。なお、本状態中は直接登録されるエントリは他のTLBリプレース領域に登録される。
また、本発明によれば、他のTLBの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるTLBの領域に登録されているエントリを読み出して、他のTLBのリプレース領域への登録を再開するので、登録先のTLBの領域が、直接登録領域とリプレース登録領域とに分割されていても、直接登録領域のエントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、TLBへのエントリ登録処理を迅速に再開することが可能である。
図1は、実施例1に係る演算処理装置の概要と特徴を説明するための図である。 図2は、実施例1に係る演算処理装置の構成を示すブロック図である。 図3は、実施例1に係る演算処理装置による処理の流れを示すフローチャートである。 図4は、実施例2に係る演算処理装置の回路構成を説明するための図である。 図5は、実施例3に係る演算処理装置におけるsTLBとfTLBのエントリ登録の流れを説明するための図である。 図6は、実施例4に係る演算処理装置におけるsfTLBのエントリ登録の流れを説明するための図である。 図7は、実施例5に係る演算処理装置における領域が分割されたfTLBのエントリ登録の流れを説明するための図である。 図8は、実施例6に係る演算処理装置における領域が分割されていないfTLBでのリプレース抑止・再開処理の流れを説明するための図である。 図9は、実施例6に係る演算処理装置における領域が分割されているfTLBでのリプレース抑止・再開処理の流れを説明するための図である。 図10は、フルアソシアティブTLBと2wayセットアソシアティブTLBとを同階層に配置した従来技術である情報処理装置を説明するための図である。
符号の説明
10 演算処理装置
11 CPU
11a 演算部/命令制御部
20 L1キャッシュ制御部
21 L1キャッシュRAM
22 MainTLB
22a fTLB
22b sTLB
23 MicroTLB
24 エントリ登録判定部
25 リプレース制御部
30 L2キャッシュ制御部
31 L2キャッシュRAM
40 主記憶部(メモリ)
以下に添付図面を参照して、本実施例に係る演算処理装置、エントリ制御プログラムおよびエントリ制御方法の実施例を詳細に説明する。なお、以下では、本実施例に係る演算処理装置の概要および特徴、演算処理装置の構成および処理の流れを順に説明し、最後に本実施例に対する種々の変形例を説明する。
[演算処理装置の概要および特徴]
まず最初に、図1を用いて、実施例1に係る演算処理装置の概要および特徴を説明する。図1は、実施例1に係る演算処理装置の概要と特徴を説明するための図である。
図1に示すように、この演算処理装置は、LRUによって制御される同階層に配置された2wayのsTLB(セットアソシアティブTLB)とfTLB(フルセットアソシアティブTLB)とから構成される。一般的に、sTLBは、演算処理装置を使用するユーザによって作成されたプログラムに用いられる領域が割当てられ、fTLBは、OS(Operating System)などの制御プログラムに用いられる領域が割当てられる。
これらのTLBは、演算処理装置のCPU(例えば、演算部や命令制御部など)によって主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する。そして、CPUは、プログラムによってデータなどが参照されて、当該データの仮想アドレスから物理アドレスへの変換を行う場合には、まずTLBを参照し、TLBに該当エントリが存在しなければ、次に主記憶上の変換表を参照する。そして、TLBに存在せず主記憶から読み出されたエントリは、CPUによってTLBに登録される。ここで、両TLBには、エントリが何も登録されておらず、はじめて登録されるTLBは、LRUによりway0に登録される。なお、本実施例におけるTLB登録は、全てsTLBに登録されることとする。
このような構成において、この演算処理装置は、上記したように主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持するsTLBとfTLBとを備えたことを概要とするものであり、特に、スラッシングの発生を防止し、処理性能を向上させることが可能である点に主たる特徴がある。
この主たる特徴を具体的に説明すると、演算処理装置は、主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定し、登録先となるTLBの領域に既にエントリが登録されていないので、主記憶部から出力されたエントリをTLBに登録する(図1の(1)参照)。具体的には、演算処理装置は、仮想アドレスから物理アドレスへの変換(エントリA)を行うためにfTLB、sTLBの両TLBを参照する。そして、演算処理装置は、両TLBにエントリAが登録されていないので、主記憶部からエントリAを読み出す。続いて、演算処理装置は、主記憶部から読み出したエントリAの登録先となるsTLBのway0に既に他のエントリが登録されているか否かを判定する。ここでは、既に登録されている他のエントリが存在しないので、演算処理装置は、主記憶から読み出したエントリAをsTLBのway0に登録する。
続いて、演算処理装置は、上記した手法と同様に、仮想アドレスから物理アドレスへの変換(エントリB)を行うためにfTLB、sTLBの両TLBを参照し、両TLBにエントリBが登録されていないので、主記憶部からエントリBを読み出して、エントリBの登録先となるsTLBのway1に既に他のエントリが登録されているか否かを判定する(図1の(2)参照)。ここでは、既に登録されている他のエントリが存在しないので、演算処理装置は、主記憶部から読み出したエントリBをsTLBのway1に登録する。
その後、同様に、演算処理装置は、仮想アドレスから物理アドレスへの変換(エントリC)を行うためにfTLB、sTLBの両TLBを参照し、両TLBにエントリCが登録されていないので、主記憶部からエントリCを読み出して、エントリCの登録先となるsTLBのway0に既に他のエントリが登録されているか否かを判定し、登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録する(図1の(3)参照)。
上記した例で具体的に説明すると、演算処理装置は、仮想アドレスから物理アドレスへの変換(エントリC)を行うためにfTLB、sTLBの両TLBを参照し、両TLBにエントリCが登録されていないので、主記憶部からエントリCを読み出す。そして、演算処理装置は、LRU制御により、エントリAとエントリBのうち最も参照されていない領域、つまり、先に登録されたエントリAが登録されているway0に既にエントリが登録されているか否かを判定する。ここでは、way0にエントリAが既に登録されているので、演算処理装置は、当該既に登録されているエントリAを読み出してfTLBの空の領域の若番号であるway0に登録して、エントリAを読み出したsTLBのway0には、主記憶部から読み出されたエントリCを登録する。
その後、同様に、演算処理装置は、仮想アドレスから物理アドレスへの変換(エントリD)を行うためにfTLB、sTLBの両TLBを参照し、両TLBにエントリDが登録されていないので、主記憶部からエントリDを読み出して、エントリDの登録先となるsTLBのway1に既に他のエントリが登録されているか否かを判定し、登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録する(図1の(4)参照)。
上記した例で具体的に説明すると、演算処理装置は、仮想アドレスから物理アドレスへの変換(エントリD)を行うためにfTLB、sTLBの両TLBを参照し、両TLBにエントリDが登録されていないので、主記憶からエントリDを読み出す。そして、演算処理装置は、LRU制御により、エントリCとエントリBのうち最も参照されていない領域、つまり、先に登録されたエントリBが登録されているway1に既にエントリが登録されているか否かを判定する。ここでは、way1にエントリBが既に登録されているので、演算処理装置は、当該既に登録されているエントリBを読み出してfTLBの空の領域の若番号であるway1に登録して、エントリBを読み出したsTLBのway1には、主記憶部から読み出されたエントリDを登録する。
このように、実施例1に係る演算処理装置は、sTLBに既に登録されているエントリをリプレースしてfTLBに登録することができる結果、上記した主たる特徴のごとく、スラッシングの発生を防止し、処理性能を向上させることを可能である。
[演算処理装置の構成]
次に、図2を用いて、図1に示した演算処理装置の構成を説明する。図2は、実施例1に係る演算処理装置の構成を示すブロック図である。図2に示すように、この演算処理装置10は、CPU11と、L1キャッシュ制御部20と、L2キャッシュ制御部30と、主記憶部40とから構成される。
CPU11は、主記憶部40に記憶される各種プログラムを実行する処理部であり、特に本実施例に密接に関連するものとしては、演算部/命令制御部11aと、L1キャッシュ制御部20とを備える。
演算部/命令制御部11aは、CPU11により実行される演算処理に応じてデータの書き込みおよび読み出しに関する命令を出力し、必要なデータを後述するMicroTLB23、MainTLB22、L1キャッシュRAM21、L2キャッシュRAM31または主記憶部40から取得し、取得されたデータに対する演算処理を行う。
L1キャッシュ制御部20は、演算部/命令制御部11aから仮想アドレスを取得した場合に、対応するデータをL1キャッシュRAM21から取得して演算部/命令制御部11aに出力し、対応するデータがL1キャッシュRAM21に存在しない場合に、L2キャッシュアドレスアクセスをL2キャッシュ制御部30に出力する処理部であり、特に本実施例に密接に関連するものとしては、L1キャッシュRAM21と、MainTLB22と、MicroTLB23と、エントリ登録判定部24と、リプレース制御部25とを備える。
L1キャッシュRAM21は、CPU11と同じモジュールに集積または実装されている高速で少容量なメモリであり、使用頻度の高いデータを記憶することで、CPU11によって実行される命令とデータを一時的に保持するために使われ、主記憶部40が新しいデータの供給に追いつく間、一定量のデータを供給してCPU11が処理を続行できるようにする。
MainTLB22は、主記憶上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持するとともに、特に本実施例に密接に関連するものとしては、sTLB22bとfTLB22aとを備える。なお、両TLBには、エントリが何も登録されておらず、はじめて登録されるTLBは、LRUによりsTLB22bのway0に登録され、その後のTLB登録は、全てsTLB22bに登録される。
fTLB22aは、主記憶上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして、エントリアドレスによる振り分けはなく、全てのラインが検索対象となるフルアソシアティブ方式で記憶する。
sTLB22bは、fTLB22aに登録されるエントリにうち、使用頻度の高いエントリを、同一エントリに異なるフレームアドレスを複数格納することができるNウェイセットアソシアティ方式で記憶する。また、sTLB22bは、2ウェイセットアソシアティ方式を採用したsTLB22bを図示している。
MicroTLB23は、演算部/命令制御部11aによって使用された直近のデータに対応する仮想アドレスから物理アドレスへの変換表の一部を記憶する。MicroTLB23に記憶されるエントリは、MainTLB22に記憶されるエントリであり、演算部/命令制御部11aによって使用された直近のエントリを保持することで、演算部/命令制御部11aによって再び使用される場合には、高速に処理させることができる。
エントリ登録判定部24は、主記憶部40から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定する。具体的に例を挙げれば、演算部/命令制御部11aによって、仮想アドレスから物理アドレスへの変換(エントリA)を行うためにfTLB22a、sTLB22bの両TLBが参照され、両TLBにエントリAが登録されていないので、主記憶部40上からエントリAを読み出されると、エントリ登録判定部24は、主記憶部40から読み出されたエントリAの登録先となるsTLB22bのway0に既に他のエントリが登録されているか否かを判定する。
そして、エントリ登録判定部24は、主記憶部40から読み出されたエントリAの登録先となるsTLB22bのway0に既に他のエントリが登録されていると判定すると、その旨を後述するリプレース制御部25に通知する。
リプレース制御部25は、エントリ登録判定部24により登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録する。具体的に例を挙げれば、sTLB22bには、way0にはエントリA、way1にはエントリBが登録されており、その後のTLB登録は、全てsTLBに登録されることとする。また、fTLB22aには、エントリが何も登録されておらず、はじめてfTLB22aに登録されるエントリは、LRUによりway0に登録されることとする。
その場合、エントリ登録判定部24は、演算部/命令制御部11aによって、仮想アドレスから物理アドレスへの変換(エントリC)を行うためにfTLB22a、sTLB22bの両TLBを参照し、両TLBにエントリCが登録されていないので、主記憶部40からエントリCを読み出して、エントリCの登録先となるsTLB22bのway0に既に他のエントリが登録されているか否かを判定する。そして、エントリ登録判定部24は、エントリCの登録先となるsTLB22bのway0に既にエントリAが登録されているため、その旨をリプレース制御部25に通知する。
通知されたリプレース制御部25は、既に登録されているエントリAを読み出して他のTLBであるfTLB22aの空の領域の若番号であるway0に登録、つまり、エントリのリプレース制御を実施する。それと同時に、主記憶部40から読み出したエントリCをsTLB22bのway0に登録する。
L2キャッシュ制御部30は、L2キャッシュRAM31を備え、L1キャッシュ制御部20からL2キャッシュアクセスアドレスを取得した場合に、取得したL2キャッシュアクセスアドレスに対応するデータを、L2キャッシュRAM31から読み出してL1キャッシュ制御部20に出力する。L2キャッシュRAM31は、L1キャッシュRAM21より低速で主記憶部40より高速であるとともに、L1キャッシュRAM21より容量が大きく主記憶部40より容量が小さいメモリであり、使用頻度の高いデータを記憶する。
主記憶部40は、CPU11によって利用されるデータ、命令および仮想アドレスから物理アドレスへの変換表(ページテーブル)を記憶する大容量のメインメモリであり、CPU11の演算部/命令制御部11a、L1キャッシュ制御部20やL2キャッシュ制御部30からの要求に応答して、対応するデータを要求先の処理部に応答する。
[演算処理装置による処理]
次に、図3を用いて、演算処理装置による処理を説明する。図3は、実施例1に係る演算処理装置による処理の流れを示すフローチャートである。
図3に示すように、sTLB22bへのエントリ登録要求が発生すると(ステップS301肯定)、エントリ登録判定部24は、登録先となるsTLB22bの領域(例えば、way0)に既にエントリが登録されているか否かを判定する(ステップS302)。
そして、エントリ登録判定部24は、登録先となるsTLB22bの領域に既にエントリが登録されていると判定すると(ステップS302肯定)、その旨をリプレース制御部25に通知し、通知されたリプレース制御部25は、登録先となるsTLB22bの領域に既に登録されているエントリを読み出して、fTLB22aの空領域の若番号の領域(例えば、way0)に登録、つまり、エントリのリプレースを実施する(ステップS303)。
それと同時に、リプレース制御部25は、リプレースが実施されたsTLB22bの領域に登録する(ステップS304)。
一方、登録先となるsTLB22bの領域に既にエントリが登録されていないと判定すると(ステップS302否定)、主記憶部40から読み出したエントリをsTLB22bの領域に登録する。
[実施例1による効果]
このように、実施例1によれば、主記憶部40から出力されたエントリをsTLB22bに登録する場合に、登録先となるsTLB22bの領域に既にエントリが登録されているか否かを判定し、登録先となるsTLB22bの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出してfTLB22aに登録するので、スラッシングの発生を防止し、処理性能を向上させることが可能である。
例えば、sTLB22bのway0、way1にそれぞれエントリAとエントリBとが登録されており、fTLB22aにはエントリが登録されていない状態で、演算部/命令制御部11aによってエントリC、エントリB、エントリAの読み出しが実行されたとする。まず、演算部/命令制御部11aは、sTLB22bおよびfTLB22aにエントリCが登録されていないので、主記憶部40からエントリCを読み出して処理を実行するとともにsTLB22bのway0に登録する。そして、演算部/命令制御部11aは、sTLB22bのway1にエントリBが登録されていることにより、sTLB22bのway1からエントリBを読み出して実行する。続いて、演算部/命令制御部11aは、はじめは登録されていたが、エントリCによりsTLB22bからエントリAが追い出されたので登録されておらず、主記憶部40からエントリAを読み出して処理を実行するとともにsTLB22bのway0に「エントリC」を登録する。
このように、はじめは登録されていたが、処理の実行上、sTLB22bから追い出されたエントリを実行する場合に、主記憶部40から読み出して実行する必要があるため、スラッシングが発生する。そこで、本実施例を実施すると、演算部/命令制御部11aは、sTLB22bおよびfTLB22aにエントリCが登録されていないので、主記憶部40からエントリCを読み出して処理を実行し、エントリCの登録先であるsTLB22bのway0に登録されているエントリAをfTLB22aにリプレースしてから、エントリCをsTLB22bのway0に登録するので、エントリAを読み出す場合も、主記憶部40から読み出す必要がなく、fTLB22aから読み出すことができる結果、スラッシングの発生を防止し、処理性能を向上させることを可能である。
また、スラッシングを防止するために、sTLB22bの領域(way数)やfTLB22aの領域を増加させるなどの対応も考えられるが、物理面積の増加するため消費電力が増加する。そこで、本実施例を用いることで、sTLB22bの領域(way数)やfTLB22aの領域を増加させる必要がなく、さらに、新規にTLBを用意する必要もないため、物理面積の削減および低消費電力化に寄与することが可能である。
ところで、実施例1では、sTLBから読み出したエントリは全部fTLBに登録する場合について説明したが、本実施例はこれに限定されるものではなく、sTLBから読み出したエントリのうち、エラーが検出されないエントリだけをfTLBに登録するようにしてもよい。
そこで、実施例2では、図4を用いて、sTLBから読み出したエントリのうち、エラーが検出されないエントリだけをfTLBに登録する場合について説明する。図4は、実施例2に係る演算処理装置の回路構成を説明するための図である。
図4に示すように、sTLBおよびfTLBは、LRUによって制御されている。sTLB−write−enableがsTLBのand回路に入力されると、LRUは、登録すべき領域を決定する。
そして、決定された領域に既にエントリが登録されていると、当該エントリをselecterに出力し、出力されたエントリは、リプレースデータとしてfTLBに入力される。また、sTLBから出力されたエントリは、paritycheck回路に入力されて、パリティチェックが実行されエラーがあるか否かが判定される。
その後、エラーが発生したまたはエラーなしの情報を示すエラー情報がfTLBのand回路に入力される。そして、入力されたエラー情報と、fTLBに入力されたエントリと、現にfTLBに登録されているエントリ情報とから、登録するfTLBの領域が決定されて登録される。ここで、エラー情報として「エラー有り」の情報が入力されている場合には、sTLBから出力されたエントリは、and回路によって破棄され、エラー情報として「エラーなし」の情報が入力されている場合のみ、sTLBから出力されたエントリは、fTLBに登録されることとなる。
このように、実施例2によれば、登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のTLBに登録せず破棄し、エラーがない場合に、当該エントリを他のTLBに登録するので、無駄な領域の使用を防止することが可能である。
例えば、エラーが発生したエントリを登録した場合、登録後にそのエントリを読み出す必要があっても、読み出し値が不正であるなど、読み出すことで問題が発生したり、または、読み出すことが不可能であったりするなどの問題が発生するため、結局、主記憶部から読み出す必要があり、無駄な処理が発生する。このように、読み出せないまたは読み出すことで問題が発生するエントリが存在することとなるため、sTLBからエントリを読み出す際に、当該エントリにエラーがあるかないかを判定し、エラーがないエントリだけをfTLBに登録することができる結果、無駄な領域の使用を防止することが可能である。
ところで、実施例1では、sTLBから読み出したエントリを、そのままfTLBに登録する場合について説明したが、本実施例はこれに限定されるものではなく、sTLBから読み出したエントリをfTLBに登録する際に、主記憶部からではなくTLBから出力されたエントリであることを示す識別子を付加して登録するようにしてもよい。
そこで、実施例3では、sTLBから読み出したエントリをfTLBに登録する際に、主記憶部からではなくTLBから出力されたエントリであることを示す識別子を付加して登録する場合について説明する。図5は、実施例3に係る演算処理装置におけるsTLBとfTLBのエントリ登録の流れを説明するための図である。なお、図5で示す各ビットは、「1」であれば有効、「0」であれば無効であることを示している。
ここでは、説明上、図5に示すsTLBは、2wayのセットアソシアティブTLBであり、ページサイズが8Kのエントリを登録することができ、fTLBは、ページサイズが64Kのエントリが登録できることとする。そして、fTLBには、当該エントリが有効であるか否かを示す「有効ビット」と、他のTLBからリプレースされたエントリであるか否かを示す「リプレースビット」とをそれぞれのエントリごとに備える。また、sTLBのway0には、ページサイズが8Kのエントリ「X」が登録されており、way1には、ページサイズが8Kのエントリ「Y」が登録されている(図5の(1)参照)。なお、「有効ビット」、「リプレースビット」には、当該ビットが有効であれば「1」、無効であれば「0」が登録される。
このような状態において、CPUの演算部/命令制御部がアドレス「X」を一部として含む「X1」にアクセスしたとすると、演算処理装置は、「X1」がsTLBとfTLBとの両方に登録されていないことより、主記憶部からアドレス「X1(ページサイズ=64K)」を読み出して演算部/命令制御部に応答するとともに、「X1」が主記憶部から読み出されたものであり、直前に使用されたものであるため、この読み出した「X1」をfTLBのway0に「有効ビット=1、リプレースビット=0」として登録する(図5の(2)参照)。
その後、CPUの演算部/命令制御部がアドレス「Z」にアクセスしたとすると、演算処理装置は、「Z」がsTLBとfTLBとの両方に登録されていないことより、主記憶部からアドレス「Z(ページサイズ=8K)」を読み出して演算部/命令制御部に応答するとともに、この読み出した「Z」をsTLBのway0に登録するために、sTLBのway0に既に他のエントリが登録されているか否かを判定する。
ここでは、読み出した「Z」の登録先であるsTLBのway0に既に「X」が登録されていることより、演算処理装置は、当該既に登録されているエントリ「X」を読み出して、当該エントリ「X」が主記憶から直接出力されたエントリではなく、TLBから出力されたエントリであることを示す識別子「リプレースビット=1」と「有効ビット=1」を付加して、fTLBのway1に登録する(図5の(3)参照)。
このような状態で、CPUの演算部/命令制御部がアドレス「X」にアクセスしたとすると、演算処理装置は、「X」を含む「X1」と「X」とがfTLBに登録されていることより、マルチヒットを検出することとなる。そこで、fTLBは、sTLBから読み出されて登録されたエントリ「X」を含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリ「X」を削除する、つまり、登録されているエントリ「X」の「有効ビット」を「0」にする(図5の(4)と(5)参照)。
このように、実施例3によれば、登録先となるsTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、sTLBから出力されたエントリであることを示す識別子を付加して、fTLBに登録するので、主記憶から登録されたエントリか、他のTLBからリプレースされたエントリかを容易に判断することが可能である。
また、実施例3によれば、エントリが登録された複数のTLBにおいて、TLBから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するで、マルチヒットによる不整合を防止することが可能である。
ところで、実施例1〜3では、sTLBから読み出したエントリを、領域に空きがあるfTLBに登録する場合について説明したが、本実施例はこれに限定されるものではなく、領域に空きがないfTLBに登録することもできる。
そこで、実施例4では、図6を用いて、sTLBから読み出したエントリを、領域に空きがないfTLBに登録する場合について説明する。図6は、実施例4に係る演算処理装置におけるsfTLBのエントリ登録の流れを説明するための図である。なお、図6で示す各ビットは、「1」であれば有効、「0」であれば無効であることを示している。
図6に示すfTLBは、8つの領域と、それぞれの領域に登録されているエントリが有効である(他のTLBから読み出された場合「有効である」となる)か否かを示す「有効ビット」と、当該エントリがTLBから追い出されないように固定化されているか否かを示す「ロックビット」と、当該エントリが使用された(他のTLBから読み出された場合「使用された」となる)か否かを示す「使用ビット」と、当該エントリが他のTLBから出力されたエントリであるか否かを示す「リプレースビット」とを備える。
そして、ここでは、図6の(1)に示すように、fTLBは、各領域に順に「エントリ名、有効ビット、ロックビット、使用ビット、リプレースビット」として「entry0、1、1、0、0」、「entry1、0、0、0、0」、「entry2、1、1、1、0」、「entry3、1、0、1、0」、「entry4、1、1、0、0」、「entry5、0、0、0、0」、「entry6、1、1、1、0」、「entry7、1、0、0、0」を保持している。
このような状態において、演算処理装置は、sTLBからエントリを読み出してfTLBに登録する際、fTLBに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録する。
具体的に例を挙げて説明すると、演算処理装置は、sTLBから「entry8」を読み出してfTLBに登録する際、登録先となるfTLBに登録されているエントリの有効ビットがオフのうち若番である「entry1」の領域に「entry8、1、0、1、1」を上書き登録する(図6の(2)参照)。続いて、演算処理装置は、sTLBから「entry9」を読み出してfTLBに登録する際、登録先となるfTLBに登録されているエントリの有効ビットがオフのうち若番である「entry5」の領域に「entry9、1、0、1、1」を上書き登録する(図6の(3)参照)。
そして、演算処理装置は、sTLBから「entry10」を読み出してfTLBに登録する際、登録先となるfTLBに登録されているエントリの有効ビットが全てオンであるため、ロックビットがオフかつ使用ビットがオフの若番のエントリである「entry7」の領域に「entry10、1、0、1、1」を登録する(図6の(4)参照)。
続いて、sTLBから「entry11」が読み出されると、演算処理装置は、登録されているエントリの有効ビットが全てオン、かつ、ロックビットが全てオンまたは使用ビットが全てオンであるため、使用ビットを全てオフする(図6の(5)参照)。つまり、演算処理装置は、fTLBに保持される「entry0、1、1、0、0」、「entry8、1、0、1、1」、「entry2、1、1、1、0」、「entry3、1、0、1、0」、「entry4、1、1、0、0」、「entry9、1、0、1、1」、「entry6、1、1、1、0」、「entry10、1、0、1、1」を「entry0、1、1、0、0」、「entry8、1、0、0、1」、「entry2、1、1、0、0」、「entry3、1、0、0、0」、「entry4、1、1、0、0」、「entry9、1、0、0、1」、「entry6、1、1、0、0」、「entry10、1、0、0、1」に変更する。そして、演算処理装置は、ロックビットがオフかつ使用ビットがオフの若番のエントリである「entry8」に「entry11、1、0、1、1」を登録する(図6の(6)参照)。
その後、sTLBから「entry」が読み出されるたびに、図6の(4)と同様に、演算処理装置は、登録先となるfTLBに登録されているエントリの有効ビットが全てオンであるため、ロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく(図6の(7)〜(9)参照)。そして、演算処理装置は、登録されているエントリの有効ビットが全てオン、かつ、ロックビットが全てオンまたは使用ビットが全てオンになると、使用ビットを全てオフして、ロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく。
このように、実施例4によれば、fTLBは、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがTLBから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、当該エントリが他のTLBから出力されたエントリであるか否かを示すリプレースビットとを備え、主記憶部から出力されたエントリの登録先となるsTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、fTLBに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録するので、fTLBから追い出されないロックエントリ、主記憶から直接登録されたアンロックエントリ、sTLBから出力されたリプレースエントリの3種類のエントリが混在しても、スラッシングの発生を防止し、処理性能を向上させることを可能である。
ところで、実施例1〜4では、fTLBが備える全ての領域に対してsTLBから出力されたエントリを登録(リプレース)する場合について説明したが、本実施例はこれに限定されるものではなく、指定されたfTLBの一部の領域にのみsTLBから出力されたエントリを登録することもできる。
そこで、実施例5では、図7を用いて、主記憶から直接出力されたエントリを登録する直接登録領域と他のTLBからリプレース制御されたエントリを登録するリプレース登録領域とに分割したfLTBに対して、sTLBから出力されたエントリを登録(リプレース)する場合について説明する。図7は、実施例5に係る演算処理装置における領域が分割されたfTLBのエントリ登録の流れを説明するための図である。なお、図7で示す各ビットは、「1」であれば有効、「0」であれば無効であることを示している。
図7に示すfTLBは、実施例4と同様、8つの領域と、それぞれの領域に登録されているエントリが有効であるか否かを示す「有効ビット」と、当該エントリがTLBから追い出されないように固定化されているか否かを示す「ロックビット」と、当該エントリが使用されたか否かを示す「使用ビット」と、当該エントリが他のTLBから出力されたエントリであるか否かを示す「リプレースビット」とを備える。
具体的には、図7の(1)に示すように、fTLBは、各領域に順に「エントリ名、有効ビット、ロックビット、使用ビット、リプレースビット」として「entry0、1、1、0、0」、「entry1、0、0、0、0」、「entry2、1、1、1、0」、「entry3、1、0、1、0」、「entry4、1、1、0、0」、「entry5、0、0、0、0」、「entry6、1、1、1、0」、「entry7、1、0、0、0」を保持している。
そして、実施例4と異なる点としては、「entry0」〜「entry3」までの4領域を主記憶から直接出力されたエントリを登録する直接登録領域とし、「entry4」〜「entry7」までの4領域をsTLBからリプレース制御されたエントリを登録するリプレース登録領域としている点である。なお、直接登録を識別する信号がオンのとき、エントリ4〜7は使用ビットがオンの扱いになり(実際には、使用ビットがオンとは限らない)、リプレース登録を識別する信号がオンのとき、エントリ0〜3は、使用ビットがオンの扱いにする(実際には、使用ビットがオンとは限らない)。
このような状態において、演算処理装置は、sTLBからエントリを読み出してfTLBに登録する際、fTLBのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリに登録する。
具体的に例を挙げて説明すると、演算処理装置は、sTLBから「entry8」を読み出してfTLBに登録する際、登録先となるfTLBのリプレース領域に登録されているエントリの有効ビットがオフのうち若番である「entry5」の領域に「entry8、1、0、1、1」を登録する(図7の(2)参照)。続いて、演算処理装置は、sTLBから「entry9」を読み出してfTLBに登録する際、登録されているエントリの有効ビットが全てオンであるため、ロックビットがオフかつ使用ビットがオフの若番である「entry7」の領域に「entry9、1、0、1、1」を登録する(図7の(3)参照)。
その後、sTLBから「entry10」が読み出されると、演算処理装置は、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオフまたは使用ビットが全てオフの場合には、リプレース領域の使用ビットを全てオフにする(図7の(4)参照)。つまり、演算処理装置は、リプレース領域である「entry4、1、1、0、0」、「entry8、1、0、1、1」、「entry6、1、1、1、0」、「entry9、1、0、1、1」を「entry4、1、1、0、0」、「entry8、1、0、0、1」、「entry6、1、1、0、0」、「entry9、1、0、0、1」に変更する。そして、演算処理装置は、ロックビットがオフかつ使用ビットがオフの若番のエントリである「entry8」に「entry10、1、0、1、1」を登録する(図7の(5)参照)。
その後、sTLBから「entry」が読み出されるたびに、図7の(4)と同様に、演算処理装置は、登録先となるfTLBのリプレース領域に登録されている登録されているエントリの有効ビットが全てオンであるため、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく(図7の(1)〜(3)参照)。そして、演算処理装置は、リプレース領域に登録されているエントリの有効ビットが全てオン、かつ、ロックビットが全てオンまたは使用ビットが全てオンになると、リプレース領域の使用ビットを全てオフして、ロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく。
このように、実施例5によれば、fTLBは、主記憶部から直接出力されたエントリを登録する直接登録領域と他のTLBからリプレース制御されたエントリを登録するリプレース登録領域とに分割されており、さらに、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがTLBから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、リプレース制御されて登録されたエントリか否かを示すリプレースビットとを備え、主記憶部から出力されたエントリの登録先となるsTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、fTLBのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録するので、sTLBから出力されたエントリを登録するfTLBを直接登録領域とリプレース登録領域とに分割したとしても、fTLBから追い出されないロックエントリ、主記憶から直接登録されたアンロックエントリ、sTLBから出力されたリプレースエントリの3種類のエントリが混在することができ、スラッシングの発生を防止し、処理性能を向上させることを可能である。
ところで、本実施例は、リプレース先となるfTLBに登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるsTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、fTLBに登録することを抑止し、リプレース先となるfTLBに登録されているエントリのロックビットが全てオンの状態から解放された場合に、当該既に登録されているエントリをsTLBから読み出して、fTLBに登録することもできる。
そこで、実施例6では、図8と図9とを用いて、登録先となるTLBに登録されているエントリのロックビットが全てオンになった場合に、リプレースを抑止し、登録先となるTLBに登録されているエントリのロックビットが全てオンの状態から解放された場合に、リプレースを再開する例について説明する。図8は、実施例6に係る演算処理装置における領域が分割されていないfTLBでのリプレース抑止・再開処理の流れを説明するための図であり、図9は、実施例6に係る演算処理装置における領域が分割されているfTLBでのリプレース抑止・再開処理の流れを説明するための図である。なお、図8と図9に示す各ビットは、「1」であれば有効、「0」であれば無効であることを示している。
まず、図8を用いて、領域が分割されていないfTLBでのリプレース抑止・再開処理の流れを説明する。図8に示すfTLBは、各領域に順に「エントリ名、有効ビット、ロックビット」として「entry0、1、1」、「entry1、1、1」、「entry2、0、0」、「entry3、1、1」、「entry4、1、1」、「entry5、1、1」、「entry6、1、1」、「entry7、1、1」を保持している(図8の(1)参照)。
このような状態において、主記憶部から「entry8」が読み出されると、演算処理装置は、「有効ビット」および「使用ビット」が「0」である「entry2」に対して「entry8、1、1」を登録する(図8の(2)参照)。「entry8、1、1」を登録することで、fTLBは、登録されているエントリのロックビットが全てオンとなる、つまり、「entry0、1、1」、「entry1、1、1」、「entry8、1、1」、「entry3、1、1」、「entry4、1、1」、「entry5、1、1」、「entry6、1、1」、「entry7、1、1」を保持することとなる。
すると、演算処理装置は、fTLBのライトイネーブル信号をオフにして、当該既に登録されているエントリを読み出して登録先となるfTLBに登録することを抑止する。その後、fTLBの「entry1、1、1」のロックビットが「0」にされたりして、「entry1、0、0」に無効化されると(図8の(3)参照)、演算処理装置は、fTLBのライトイネーブル信号をオンにして、当該既に登録されているエントリを読み出してfTLBに登録することを再開する。その後のエントリリプレース処理は、実施例1〜5と同様であるので、ここでは省略する。
次に、図9を用いて、領域が分割されているfTLBでのリプレース抑止・再開処理の流れを説明する。図9に示すfTLBは、各領域に順に「エントリ名、有効ビット、ロックビット」として「entry0、1、1」、「entry1、1、1」、「entry2、0、0」、「entry3、1、1」、「entry4、1、0」、「entry5、0、1」、「entry6、1、1」、「entry7、0、0」を保持している(図9の(1)参照)。
ここで、図8と異なる点は、「entry0」〜「entry3」までの4領域を主記憶から直接出力されたエントリを登録する直接登録領域とし、「entry4」〜「entry7」までの4領域をsTLBからリプレース制御されたエントリを登録するリプレース登録領域としている点である。
このような状態において、主記憶部から「entry8」が読み出されると、演算処理装置は、「有効ビット」および「使用ビット」が「0」である「entry2」に対して「entry8、1、1」を上書き登録する(図9の(2)参照)。「entry8、1、1」を登録することで、fTLBは、直接登録領域に登録されているエントリのロックビットが全てオンとなる、つまり、「entry0、1、1」、「entry1、1、1」、「entry8、1、1」、「entry3、1、1」を保持することとなる。
すると、演算処理装置は、fTLBのライトイネーブル信号をオフにして、当該既に登録されているエントリを読み出して登録先となるfTLBに登録することを抑止する。その後、fTLBの「entry1、1、1」のロックビットが「0」にされたりして、「entry1、0、0」に無効化されると(図9の(3)参照)、演算処理装置は、fTLBのライトイネーブル信号をオンにして、当該既に登録されているエントリを読み出してfTLBのリプレース領域に登録することを再開する。その後のエントリリプレース処理は、実施例1〜5と同様であるので、ここでは省略する。
このように、実施例5によれば、fTLBに登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるsTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、fTLBに登録することを抑止するので、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。
また、実施例5によれば、fTLBに登録されているエントリのロックビットが全てオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるsTLBの領域に登録されているエントリを読み出して、fTLBへの登録を再開するので、エントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、fTLBへのエントリ登録処理を迅速に再開することが可能である。
また、実施例5によれば、fTLBの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるsTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、fTLBのリプレース領域に登録することを抑止するので、fTLBの領域が、直接登録領域とリプレース登録領域とに分割されている場合でも、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。
また、実施例5によれば、fTLBの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるsTLBの領域に登録されているエントリを読み出して、fTLBのリプレース領域への登録を再開するので、fTLBの領域が、直接登録領域とリプレース登録領域とに分割されている場合でも、直接登録領域のエントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、TLBへのエントリ登録処理を迅速に再開することが可能である。
さて、これまで本実施例について説明したが、本実施例は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、(1)sTLBのウェイ数、(2)システム構成等にそれぞれ区分けして異なる実施例を説明する。
(1)sTLBのウェイ数
例えば、実施例1〜6では、sTLBのウェイ数を「2」とした場合について説明したが、ウェイ数を限定するものではなく、3ウェイや5ウェイなどでも同様に処理を行うことが可能である。また、fTLBの領域も同様に、図示した領域の数に限定するものではない。
(2)システム構成等
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理(例えば、主記憶部からの物理アドレスを含むエントリの出力処理など)の全部または一部を手動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合(例えば、エントリ登録判定部とリプレース制御部とを統合するなど)して構成することができる。
以上のように、本演算処理装置、エントリ制御プログラムおよびエントリ制御方法は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備える場合に有用であり、特に、スラッシングの発生を防止し、処理性能を向上させることに適する。

Claims (12)

  1. 主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備えた演算処理装置であって、
    前記主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手段と、
    前記エントリ登録判定手段により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録するリプレース制御手段、
    を備えたことを特徴とする演算処理装置。
  2. 前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のTLBに登録せず破棄し、エラーがない場合に、当該エントリを他のTLBに登録することを特徴とする請求項1に記載の演算処理装置。
  3. 前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、TLBから出力されたエントリであることを示す識別子を付加して、他のTLBに登録することを特徴とする請求項1に記載の演算処理装置。
  4. 前記リプレース制御手段によってエントリが登録された複数のTLBにおいて、TLBから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するエントリ削除手段をさらに備えたことを特徴とする請求項1に記載の演算処理装置。
  5. 前記複数のTLBは、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがTLBから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、当該エントリが他のTLBから出力されたエントリであるか否かを示すリプレースビットとを備えたものであって、
    前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のTLBに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録することを特徴とする請求項1〜4のいずれか一つに記載の演算処理装置。
  6. 前記リプレース制御手段は、前記他のTLBに登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のTLBに登録することを抑止することを特徴とする請求項5に記載の演算処理装置。
  7. 前記リプレース制御手段は、前記他のTLBに登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるTLBの領域に登録されているエントリを読み出して、他のTLBへの登録を再開することを特徴とする請求項6に記載の演算処理装置。
  8. 前記複数のTLBは、主記憶部から直接出力されたエントリを登録する直接登録領域と他のTLBからリプレース制御されたエントリを登録するリプレース登録領域とに分割されており、さらに、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがTLBから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、リプレース制御されて登録されたエントリか否かを示すリプレースビットとを備えたものであって、
    前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のTLBのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録することを特徴とする請求項1〜4のいずれか一つに記載の演算処理装置。
  9. 前記リプレース制御手段は、前記他のTLBの直接登録領域に登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるTLBの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のTLBのリプレース領域に登録することを抑止すること、また本状態中は直接登録されるエントリは他のTLBリプレース領域に登録されることを特徴とする請求項8に記載の演算処理装置。
  10. 前記リプレース制御手段は、前記他のTLBの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるTLBの領域に登録されているエントリを読み出して、他のTLBのリプレース領域への登録を再開することを特徴とする請求項9に記載の演算処理装置。
  11. 主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備えた情報処理装置としてのコンピュータに実行するエントリ制御プログラムであって、
    前記主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手順と、
    前記エントリ登録判定手順により前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録するリプレース制御手順、
    をコンピュータに実行することを特徴とするエントリ制御プログラム。
  12. 主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のTLBを備えた情報処理装置に適したエントリ制御方法であって、
    前記主記憶部から出力されたエントリを複数のTLBのいずれかに登録する場合に、登録先となるTLBの領域に既にエントリが登録されているか否かを判定するエントリ登録判定ステップと、
    前記エントリ登録判定ステップにより前記登録先となるTLBの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のTLBに登録するリプレース制御ステップ、
    を含んだことを特徴とするエントリ制御方法。
JP2009520205A 2007-06-20 2007-06-20 演算処理装置および演算処理装置の制御方法 Expired - Fee Related JP4812876B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/062465 WO2008155851A1 (ja) 2007-06-20 2007-06-20 演算処理装置、エントリ制御プログラムおよびエントリ制御方法

Publications (2)

Publication Number Publication Date
JPWO2008155851A1 true JPWO2008155851A1 (ja) 2010-08-26
JP4812876B2 JP4812876B2 (ja) 2011-11-09

Family

ID=40156017

Family Applications (1)

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

Country Status (4)

Country Link
US (1) US8688952B2 (ja)
EP (1) EP2159707A4 (ja)
JP (1) JP4812876B2 (ja)
WO (1) WO2008155851A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5526626B2 (ja) * 2009-06-30 2014-06-18 富士通株式会社 演算処理装置およびアドレス変換方法
US20130166846A1 (en) * 2011-12-26 2013-06-27 Jayesh Gaur Hierarchy-aware Replacement Policy
US9396113B2 (en) 2013-08-06 2016-07-19 Oracle International Corporation Flexible configuration hardware streaming unit
US9830275B2 (en) * 2015-05-18 2017-11-28 Imagination Technologies Limited Translation lookaside buffer
US20220206955A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Automated translation lookaside buffer set rebalancing

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51140521A (en) * 1975-05-30 1976-12-03 Nec Corp Address exchange device
JPS5998367A (ja) * 1982-11-26 1984-06-06 Nec Corp アドレス変換バツフア方式
JPH01226056A (ja) * 1988-03-04 1989-09-08 Nec Corp アドレス変換回路
JPH03164845A (ja) * 1989-11-22 1991-07-16 Hitachi Ltd アドレス変換バッファ方式
JPH05324477A (ja) * 1992-05-21 1993-12-07 Toshiba Corp アドレス変換バッファ機構
JPH06187244A (ja) * 1992-12-22 1994-07-08 Toshiba Corp アドレス変換バッファ機構
JPH11501745A (ja) * 1995-03-03 1999-02-09 ハル コンピュータ システムズ,インコーポレイティド コンピュータシステム内のアドレス変換用ルックアサイドバッファ
JP2000242558A (ja) * 1999-02-19 2000-09-08 Hitachi Ltd キャッシュシステム及びその操作方法
JP2006039968A (ja) * 2004-07-27 2006-02-09 Fujitsu Ltd アドレス変換バッファ制御装置およびアドレス変換バッファ制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3164845B2 (ja) 1991-08-30 2001-05-14 松下電器産業株式会社 書換え可能な記録媒体の記録方法
DE19526960A1 (de) * 1994-09-27 1996-03-28 Hewlett Packard Co Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung
US5752274A (en) * 1994-11-08 1998-05-12 Cyrix Corporation Address translation unit employing a victim TLB
US5928352A (en) * 1996-09-16 1999-07-27 Intel Corporation Method and apparatus for implementing a fully-associative translation look-aside buffer having a variable numbers of bits representing a virtual address entry
US6418521B1 (en) * 1998-12-23 2002-07-09 Intel Corporation Hierarchical fully-associative-translation lookaside buffer structure
US6941442B2 (en) * 2002-08-02 2005-09-06 Arm Limited Entry lockdown within a translation lookaside buffer mechanism
JP3936672B2 (ja) * 2003-04-30 2007-06-27 富士通株式会社 マイクロプロセッサ
US6931504B2 (en) * 2003-05-06 2005-08-16 Sun Microsystems, Inc. Method and apparatus for relocating objects within an object-addressed memory hierarchy
JP4233492B2 (ja) 2004-06-02 2009-03-04 富士通マイクロエレクトロニクス株式会社 アドレス変換装置
US7343455B2 (en) * 2005-02-09 2008-03-11 International Business Machines Corporation Cache mechanism and method for avoiding cast out on bad victim select and recycling victim select operation
US20060224857A1 (en) * 2005-03-29 2006-10-05 O'connor Dennis M Locking entries into translation lookaside buffers
US7490214B2 (en) * 2006-06-12 2009-02-10 Sun Microsystems, Inc. Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space
WO2009096407A1 (ja) 2008-01-31 2009-08-06 Alps Electric Co., Ltd. 圧力センサ

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51140521A (en) * 1975-05-30 1976-12-03 Nec Corp Address exchange device
JPS5998367A (ja) * 1982-11-26 1984-06-06 Nec Corp アドレス変換バツフア方式
JPH01226056A (ja) * 1988-03-04 1989-09-08 Nec Corp アドレス変換回路
JPH03164845A (ja) * 1989-11-22 1991-07-16 Hitachi Ltd アドレス変換バッファ方式
JPH05324477A (ja) * 1992-05-21 1993-12-07 Toshiba Corp アドレス変換バッファ機構
JPH06187244A (ja) * 1992-12-22 1994-07-08 Toshiba Corp アドレス変換バッファ機構
JPH11501745A (ja) * 1995-03-03 1999-02-09 ハル コンピュータ システムズ,インコーポレイティド コンピュータシステム内のアドレス変換用ルックアサイドバッファ
JP2000242558A (ja) * 1999-02-19 2000-09-08 Hitachi Ltd キャッシュシステム及びその操作方法
JP2006039968A (ja) * 2004-07-27 2006-02-09 Fujitsu Ltd アドレス変換バッファ制御装置およびアドレス変換バッファ制御方法

Also Published As

Publication number Publication date
US20100106938A1 (en) 2010-04-29
EP2159707A1 (en) 2010-03-03
EP2159707A4 (en) 2010-11-24
US8688952B2 (en) 2014-04-01
JP4812876B2 (ja) 2011-11-09
WO2008155851A1 (ja) 2008-12-24

Similar Documents

Publication Publication Date Title
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US7426626B2 (en) TLB lock indicator
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
JP5526626B2 (ja) 演算処理装置およびアドレス変換方法
US7844778B2 (en) Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
CN100416515C (zh) 高速缓冲存储器线清洗指令和执行该指令的方法,装置以及系统
JP7340326B2 (ja) メンテナンス動作の実行
US20070130237A1 (en) Transient cache storage
JP2016534431A (ja) ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上
US8589630B2 (en) Methods and apparatus for handling a cache miss
US20160140042A1 (en) Instruction cache translation management
JP2012212440A (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
US20100185831A1 (en) Semiconductor integrated circuit and address translation method
US11775445B2 (en) Translation support for a virtual cache
US8190853B2 (en) Calculator and TLB control method
JP4812876B2 (ja) 演算処理装置および演算処理装置の制御方法
US20080301372A1 (en) Memory access control apparatus and memory access control method
KR102482516B1 (ko) 메모리 어드레스 변환
US20050028163A1 (en) Processor purging system and method
US7325101B1 (en) Techniques for reducing off-chip cache memory accesses
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ
JPH01125638A (ja) キャッシュメモリ装置
JPH0469748A (ja) 論理キャッシュメモリ
JP2014209392A (ja) リプレースメントデータメモリ装置、中央演算装置及びリプレースメントデータ処理用プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101129

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140902

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees