JP5526626B2 - 演算処理装置およびアドレス変換方法 - Google Patents

演算処理装置およびアドレス変換方法 Download PDF

Info

Publication number
JP5526626B2
JP5526626B2 JP2009156305A JP2009156305A JP5526626B2 JP 5526626 B2 JP5526626 B2 JP 5526626B2 JP 2009156305 A JP2009156305 A JP 2009156305A JP 2009156305 A JP2009156305 A JP 2009156305A JP 5526626 B2 JP5526626 B2 JP 5526626B2
Authority
JP
Japan
Prior art keywords
address
unit
address translation
search
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009156305A
Other languages
English (en)
Other versions
JP2011013858A (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
Priority to JP2009156305A priority Critical patent/JP5526626B2/ja
Priority to US12/825,959 priority patent/US8745356B2/en
Priority to EP10167869A priority patent/EP2275939B1/en
Publication of JP2011013858A publication Critical patent/JP2011013858A/ja
Application granted granted Critical
Publication of JP5526626B2 publication Critical patent/JP5526626B2/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1012Design facilitation
    • 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/1028Power efficiency
    • 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/1056Simplification
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Description

本発明は、演算処理装置およびアドレス変換方法に関する。
従来、メインメモリが本来提供可能な物理的なメモリ空間よりも大きなメモリ空間を仮想的に提供する仮想記憶方式が利用されている。仮想記憶方式を適用するコンピュータは、仮想アドレス(VA: Virtual Address)から物理アドレス(PA: Physical Address)への変換であるアドレス変換を行うために、ページテーブルと呼ばれる仮想アドレスと物理アドレスの対(以下、アドレス変換対と呼称)をメインメモリに記憶する。そして、コンピュータは、演算処理装置(CPU:Central Processing Unit)がフェッチした命令に仮想アドレスが含まれる場合など、アドレス変換が必要な際にメインメモリにアクセスし、ページテーブルを参照してアドレス変換を行う。
しかし、アドレス変換のたびにメインメモリ内のページテーブルを参照しにいくのでは非常に多くの時間が費やされる。このため、通常、コンピュータは、アドレス変換バッファ(TLB:Translation Lookaside Buffer)と呼ばれるアドレス変換専用のキャッシュをCPU内に設け、TLBに一部のアドレス変換対を保持しておき、メインメモリのページテーブルを参照する前にTLBを検索する。
コンピュータがメモリアクセスをする際は、まずTLBにて仮想アドレスを物理アドレスに変換し、物理アドレスを用いて直接メモリに対してアクセスを行うため、TLBのアクセスの速さはそのままメモリアクセスの速さに影響する。アドレス変換を早く実行するためには検索対象となるTLBの容量を小さくすることが有効である。しかし、TLBの容量を小さくしすぎると、TLBでアドレスがヒットしないTLBミスが多発し、その都度ページテーブルを参照することとなるため、かえって時間がかかり、性能が低下してしまう。
近年はプログラムがより大きいアドレス領域を必要としているので、TLBが小さい場合の影響は以前より大きくなってきている。一方でTLBの容量を大きくした場合は、検索にかかる時間は大きくなり、それがハードウェアの性能向上を阻害する可能性がある。
TLBに対する参照方式には、仮想アドレス全体をタグとして参照するフルアソシアティブ方式と仮想アドレスの一部をインデックスタグとして参照するセットアソシアティブ方式がある。また、TLBに用いるメモリには、CAM(Content Addressable Memory)やRAM(Random Access Memory)がある。
フルアソシアティブ方式を用いる場合のメモリには、従来、複数のエントリを同時に検索できるCAMが用いられてきた。CAMをTLBに用いると、回路サイズは増大するが、フルアソシアティブ方式でも高速に検索できる。
セットアソシアティブ方式を用いる場合のメモリには、従来、RAMが用いられてきた。RAMは、比較的小さな実装面積で、多くのTLBエントリを登録できるが、一度に一つのエントリしか参照できない。セットアソシアティブ方式では、仮想アドレスの一部をインデックスタグとし、インデックスタグによって一意に特定されるエントリを読み出すので、RAMであっても高速に検索を行なう事ができる。一方で、セットアソシアティブ方式では、異なる仮想アドレスであってもインデックス部分が同一であれば同一のエントリに登録されるので、インデックスが同じ仮想アドレスに対するアクセスが頻発した場合にはエントリが上書きされて前のデータが消失することとなる。なお、セットアソシアティブ方式では、インデックスタグのセットとWAY数とを複数にすることで、インデックスタグのセット数とWAY数が1の所謂ダイレクトマップに比してエントリの上書き頻度をさげることができる。一方、セットアソシアティブ方式は、フルアソシアティブ方式に比べるとエントリが追い出される頻度は高い。
このように、RAMを用いたセットアソシアティブ方式のTLBと、CAMを用いたフルアソシアティブ方式のTLBには、各々一長一短があり、両者を組み合わせて使用する場合も多い。両者を組み合わせて使用する場合、カーネルによるトラップ処理などの重要な処理に必要なTLBエントリはフルアソシアティブ方式のTLBに登録しておき、TLBから追い出されないようにすることが好適である。フルアソシアティブ方式では、任意のエントリに登録できるので、最大エントリ数を意識していれば、TLBエントリが追い出されないように制御することが可能である。なお、最大エントリ数は、例えば16、32エントリなどである。
特開平8−115262号公報 特開平6−187244号公報 特開昭57−006956号公報
しかしながら、上述した従来技術のようにRAMとCAMを併用している場合、実装面積が大きくなる。そのため、消費電力と製造コストが増加し、登録できるTLBエントリ数も少数に限られるという問題があった。
特に近年、CPUのマルチコア化に伴い、各CPUコアの実装面積を小さくすることが求められているため、TLBの性能を維持しつつ回路サイズを小さくすることは重要な課題であった。
開示の技術は、上記に鑑みてなされたものであって、TLBの実装効率を向上した演算処理装置およびアドレス変換方法を提供することを目的とする。
本願の開示する演算処理装置およびアドレス変換方法は、セットアソシアティブ方式で参照する第1の領域とフルアソシアティブ方式で参照する第2の領域とを備える記憶部をアドレス変換バッファに設ける。そして本願の開示する演算処理装置およびアドレス変換方法は、アドレス変換を行う場合に、第1の領域から検索し、第1の領域にアドレス変換対象の仮想アドレスに対応するアドレス変換対が存在しない場合に第2の領域からアドレス変換対象の仮想アドレスに対応するアドレス変換対を検索する。
本願の開示する演算処理装置およびアドレス変換方法は、TLBの実装効率を向上した演算処理装置およびアドレス変換方法を得ることができるという効果を奏する。
図1は、実施例1にかかるアドレス変換バッファの概要構成図である。 図2は、本実施例1にかかる演算処理装置の概要構成図である。 図3は、命令用とデータ用で分けて登録したTLBの説明図である。 図4は、タグ部31の検索の説明図である。 図5は、アドレス変換バッファ20によるアドレス変換処理のフローチャートである。 図6は、図5に示したsTLB検索の処理動作を説明するフローチャートである。 図7は、図5に示したfTLB検索の処理動作を説明するフローチャートである。 図8は、実施例2にかかるTLB本体部の説明図である。 図9は、2つのfTLBでエントリを二重化する構成の説明図である。 図10は、RAMに登録したfTLBの一部を保持するラッチを設けた構成図である。
以下に、本願の開示する演算処理装置およびアドレス変換方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1にかかるアドレス変換バッファの概要構成図である。また、図2は、本実施例1にかかる演算処理装置の概要構成図である。なお、図2は、演算処理装置であるCPUを構成する構成要素の一部を抽出して例示するものにすぎない。したがって、図2は、本実施例1に係る演算処理装置を構成する全ての構成要素を示すものではなく、また、本実施例1に係る演算処理装置が、図2に例示する全ての構成要素を備えなくともよい。また、図2に示す(1)〜(6)の付番は、説明の便宜上から付与したものであり、処理の順番を示すものではない。
図2に示したように、演算処理装置であるCPU1は、その内部に命令制御部11、演算部12、L1命令タグ13、L1データタグ14、L1命令キャッシュ15、L1データキャッシュ16、L2キャッシュ17、アドレス変換バッファ(TLB)20を有する。
このような構成のもと、CPU1は、コンピュータが備える記憶装置に記憶されている命令に従って演算を行い、演算結果に従って情報を処理する。ここで、「命令」とは、コンピュータを利用する利用者によってキーボードなどから入力されるコマンドや、開発者によってプログラミングされたプログラムの1行としてのコマンドなどのことを意味するものではない。このようなコマンドが、コンピュータにおいて、まず、コンピュータが理解することが可能な機械語に翻訳され、次に、コンピュータが認識することが可能な2進数に再構成され、続いて、CPU1が処理可能な最小単位に分割されると、CPU1が処理可能な命令となる。
命令制御部11は、CPU1が実行する処理の流れの制御を行なう。具体的には、命令制御部11は、CPU1において処理すべき命令を記憶装置から読み込み、解釈し、解釈結果を演算部12に送信する(図2の(1)を参照)。演算部12は、演算を行う処理部である。具体的には、演算部12は、命令の対象となるデータを記憶装置から読み込み、命令制御部11によって解釈された命令に従って演算し、演算結果を命令制御部12に送信する(図2の(1)を参照)。
命令制御部11や演算部12が命令やデータを読み込む記憶装置には、メインメモリとキャッシュメモリがある。キャッシュメモリには、1次(Level1)キャッシュ(以下、L1キャッシュ)や2次(Level2)キャッシュ(以下、L2キャッシュ)などがある。通常、これらのキャッシュメモリは、CPU1内部に階層構造で備えられる。図2に例示するCPU1においては、L1キャッシュとして、命令専用のL1キャッシュであるL1命令キャッシュ15と、データ専用のL1キャッシュであるL1データキャッシュ16とが備えられている。また、L2キャッシュとして、L2キャッシュ17が備えられている。メインメモリ2は、CPU1を構成する構成要素ではないが、記憶装置の一つとしてCPU1の外部に備えられている。
L1命令キャッシュ15およびL1データキャッシュ16は、CPU1と同じクロックで動作することが可能であり、命令制御部11や演算部12からの要求に対して、高速に応答することが可能である(図2の(2)を参照)。しかしながら、L1命令キャッシュ15およびL1データキャッシュ16の容量は、総計で32K〜128KB程度のものが多く、多くの情報を記憶することができない。このため、L2キャッシュ17が、L1命令キャッシュ15およびL1データキャッシュ16に記憶することができない情報のうち、利用頻度の高い情報を記憶することになる(図2の(3)を参照)。なお、L2キャッシュ17に記憶することができない情報については、メインメモリ2に記憶される(図2の(4)を参照)。
命令制御部11や演算部12が処理を開始する時点では、命令やデータは、メインメモリ2上に存在しており、L1命令キャッシュ15やL1データキャッシュ16、あるいはL2キャッシュ17には、何も記憶されていない。命令制御部11や演算部12が命令やデータをメインメモリ2から読み出す際に、命令やデータがL1命令キャッシュ15やL1データキャッシュ16、あるいはL2キャッシュ17にロードされる。命令制御部11や演算部12は、これ以降、低速なメインメモリ2ではなく、高速なL1命令キャッシュ15やL1データキャッシュ16、あるいはL2キャッシュ17から命令やデータを読み出す。
言い換えると、命令制御部12や演算部12が読み出そうとする命令やデータは、必ずしも、L1命令キャッシュ15やL1データキャッシュ16に記憶されているとは限らない。このため、L1命令タグ13やL1データタグ14が、命令制御部11や演算部12に利用されることになる。すなわち、L1命令キャッシュ15やL1データキャッシュ16に命令やデータがロードされるのと同時に、L1命令タグ13やL1データタグ14には、これらの命令やデータがメインメモリ2のどのアドレスに記憶されているかを示す数値がセットされている。したがって、命令制御部11や演算部12は、命令やデータを読み出す際に、まず、L1命令タグ13やL1データタグ14に対して問い合わせ、読み出そうとする命令やデータが、L1命令キャッシュ15やL1データキャッシュ16に記憶されているか否かを確認する。
図1に例示するCPU1においては、仮想記憶方式が適用されている。したがって、図2に示すように、命令制御部11や演算部12が命令やデータを読み出す際には、まず、TLB20に対して、仮想アドレスを指定し(図2の(5)を参照)、TLB20が物理アドレスに変換した上で、L1命令タグ13やL1データタグ14に対して問い合わせを行うことになる(図2の(6)を参照)。
図1に戻り、アドレス変換バッファ20の構成について説明する。図1に示したように、アドレス変換バッファ20は、その内部に仮想アドレスレジスタ21、コンテキストレジスタ22、TLB本体部23、TLB検索部24を有する。
仮想アドレスレジスタ21は、命令制御部11が出力した仮想アドレスを保持するレジスタである。コンテキストレジスタ22は、演算部12が出力するコンテキストを保持するレジスタである。コンテキストは、命令の発行元であるアプリケーションのプロセスを特定する情報である。
TLB本体部23は、タグ部31とデータ部32を有する。タグ部31は、仮想アドレスとコンテキストをエントリとして保持する。仮想アドレスとコンテキストは、検索用のタグとして使用される。また、データ部32は、仮想アドレスと物理アドレスとを対応付けたアドレス変換対をエントリとして保持する。
タグ部31は、RAMを用いて構成する。さらに、RAM上には、エントリをセットアソシアティブ方式で参照する領域とフルアソシアティブ方式で参照する第2の領域とを設ける。したがって、タグ部31を構成するRAMには、セットアソシアティブ方式で参照されるタグと、フルアソシアティブ方式で参照されるタグの双方が登録される。図1では、セットアソシアティブ方式で参照されるタグをsTLB TAG、フルアソシアティブ方式で参照されるタグをfTLB TAGとして示している。
データ部32は、RAMを用いて構成し、sTLB DATAおよびfTLB DATAの各々に対応するアドレス変換対が登録される。
より詳細には、sTLB TAGおよびfTLB TAGは、命令用とデータ用とで分けて登録する。図3は、命令用とデータ用で分けて登録したTLBの説明図である。図3において、IF−fTLB TAGは、フルアソシアティブ方式で参照される命令用のタグである。OP−fTLB TAGは、フルアソシアティブ方式で参照されるデータ用のタグである。IF−sTLB TAGは、セットアソシアティブ方式で参照される命令用のタグである。OP−sTLB TAGは、セットアソシアティブ方式で参照されるデータ用のタグである。
同様に、IF−fTLB DATAは、フルアソシアティブ方式で参照される命令用のタグに対応するアドレス変換対である。OP−fTLB DATAは、フルアソシアティブ方式で参照されるデータ用のタグに対応するアドレス変換対である。IF−sTLB DATAは、セットアソシアティブ方式で参照される命令用のタグに対応するアドレス変換対である。OP−sTLB DATAは、セットアソシアティブ方式で参照されるデータ用のタグに対応するアドレス変換対である。
タグ部31およびデータ部32が512エントリのRAMである場合、OP−sTLB TAGとOP−sTLB DATAに例えば256エントリ分を割り当てる。また、IF−sTLB TAGとIF−sTLB DATAに例えば128エントリ分を割り当てる。
また、OP−fTLB TAGとOP−fTLB DATAに例えば64エントリ分を割り当てる。そして、IF−fTLB TAGとIF−fTLB DATAに例えば64エントリ分を割り当てる。なお、OP−fTLB TAG,OP−fTLB DATA,IF−fTLB TAG,IF−fTLB DATAは、64エントリ分を全て使用する必要は無く、その一部のみ、例えば16エントリ分を使用することとしてもよい。
図1に戻り、TLB検索部24について説明する。TLB検索部24は、仮想アドレスレジスタ21が保持する仮想アドレス(VA)とコンテキストレジスタ22の値との組み合わせが、タグ部31に登録された仮想アドレスおよびコンテキストの値と一致するか否かを判定する。
TLB検索部24内部の比較回路41は、仮想アドレスレジスタ21が保持する値と、タグ部31に登録された仮想アドレスと比較し、比較結果をアンド回路43に出力する。同様に、TLB検索部24内部の比較回路42は、コンテキストレジスタ22が保持する値と、タグ部31に登録されたコンテキストと比較し、比較結果をアンド回路43に出力する。アンド回路43は、仮想アドレスとコンテキストの双方が一致した場合に、TLBヒットを示す値を出力する。なお、仮想アドレスの一致に加えて、コンテキストの一致を求めるのは、異なるプロセスが使用する仮想アドレスが偶然に一致する可能性があるためである。
TLB検索部24がTLBヒットを出力した場合、アドレス変換バッファ20は、仮想アドレスに対応する物理アドレス(VA)をデータ部32から取り出して出力する。一方、TLB検索部24がTLBヒットを出力しなかった、すなわちTLBミスに対応する値を出力した場合には、命令制御部11は、メインメモリに格納されたページテーブルを参照し、仮想アドレスに対応するアドレス変換対を取得し、演算部12に渡す。演算部12は、渡されたアドレス変換対と、実行中のプロセスを示すコンテキストをTLB本体部23に登録する。その後、命令制御部11が命令を再度実行し、TLBに登録したアドレス変換対を用いて仮想アドレスを物理アドレスに変換する。
タグ部31の検索について図4を参照してさらに説明する。セットアソシアティブ方式でタグを検索する場合、仮想アドレスの一部をインデックスとして検索を行なう。例えば、最大256エントリのOP−sTLB TAGを参照する場合、仮想アドレスの8ビットをインデックスとすれば、エントリを一意に特定できる。そのため、インデックスが一致するエントリを参照する1サイクルの処理で検索対象の仮想アドレスがOP−sTLB TAGに存在するか否かを確認できる。
同様に、最大128エントリのIF−sTLB TAGを参照する場合、仮想アドレスの7ビットをインデックスとすれば、エントリを一意に特定できる。そのため、インデックスが一致するエントリを参照する1サイクルの処理で検索対象の仮想アドレスがIF−sTLB TAGに存在するか否かを確認できる。
なお、インデックスとしては、例えば仮想アドレスの末尾を用いればよい。また、仮想アドレスがページ番号とオフセットで構成されている場合、ページ番号部分の末尾を用いてもよい。そして、OP−sTLB TAGやIF−sTLB TAGにエントリを登録する場合、仮想アドレスのインデックス部分に対応する位置に登録を行なう。
一方、フルアソシアティブ方式では、仮想アドレスに依存することなくエントリに登録できるため、参照時にはどの位置に登録されているかが不明である。そこで、OP−fTLB TAGやIF−fTLB TAGを参照する場合、例えば先頭のエントリから順に比較する。そのため、検索に際してエントリの最大数分だけのサイクルがかかることが多い。
このように、フルアソシアティブ方式でRAMにエントリを登録すると、セットアソシアティブ方式に比して時間がかかるため、アドレス変換バッファ20は、まずセットアソシアティブ方式でsTLB(OP−sTLB TAGもしくはIF−sTLB TAG)を検索し、sTLBでの検索がヒットしなかった場合にフルアソシアティブ方式でfTLB(OP−fTLB TAGもしくはIF−fTLB TAG)を検索する。
図5は、アドレス変換バッファ20によるアドレス変換処理のフローチャートである。アドレス変換バッファ20は、命令制御部11から受け取った仮想アドレスと演算部12が指定したコンテキストとの組み合わせをタグ部31のsTLBから検索する(S101)。
検索の結果、仮想アドレスとコンテキストの組み合わせがタグ部31のsTLBに登録されており、TLB検索部24が検索ヒットを出力した場合(S102,Yes)、データ部32から対応するアドレス変換対を得て物理アドレスに変換し、変換結果を出力する(S103)。
一方、仮想アドレスとコンテキストの組み合わせがタグ部31のsTLBに登録されていない場合(S102,No)、つぎにアドレス変換バッファ20は、命令制御部11から受け取った仮想アドレスと演算部12が指定したコンテキストとの組み合わせをタグ部31のfTLBから検索すべきかどうかを判定する(S104)。fTLBの検索は、sTLBの検索に比して時間がかかる。sTLBミスである場合に常にfTLBの検索を行なう事とすると、他の命令の待機時間が長くなる可能性がある。そこで、sTLBミスで、かつ所定の条件を満たす場合のみfTLB検索を行なう事とすれば、待機時間の増加を抑えることができる。fTLB検索の条件としては、たとえば、命令制御部11が制御中の命令のうち、もっとも古い命令についてのみfTLB検索を行なうこととすればよい。
条件が満たされず、fTLBの検索が不可能である場合(S105,No)には、後述するトラップ処理に移行する(S108)。一方、fTLBの検索が可能である場合(S105,Yes)。アドレス変換バッファ20は、fTLB検索を行なう(S106)。
検索の結果、仮想アドレスとコンテキストの組み合わせがタグ部31のfTLBに登録されており、TLB検索部24が検索ヒットを出力した場合(S107,Yes)、アドレス変換バッファ20は、データ部32から対応するアドレス変換対を得て物理アドレスに変換し、変換結果を出力して(S103)、処理を終了する。
一方、仮想アドレスとコンテキストの組み合わせがタグ部31のfTLBに登録されていない場合(S107,No)、アドレス変換バッファ20は、トラップ処理に移行する(S108)。
トラップ処理では、メインメモリ内のページテーブルから、検索ミスした仮想アドレスに対応するアドレス変換対が読み出され、アドレス変換バッファTLB20に登録される。登録に際し、sTLBとfTLBのいずれに登録するかは、アドレス変換対ごとに予め指定し、ページテーブルに記録しておけばよい。
図6は、図5に示したsTLB検索の処理動作を説明するフローチャートである。sTLB検索では、まず、命令制御部11に入力された仮想アドレスとインデックスが同一の仮想アドレスとコンテキストをsTLB TAGのエントリから選択する(S201)。
つぎに、入力された仮想アドレスおよびコンテキストと、選択した仮想アドレスおよびコンテキストを比較する(S202)。比較の結果、仮想アドレスとコンテキストの双方が一致したならば(S203,Yes)、sTLBヒットを出力して(S204)、処理を終了する。
図7は、図5に示したfTLB検索の処理動作を説明するフローチャートである。fTLB検索では、アドレス変換バッファ20は、fTLBの先頭のエントリを選択し(S301)、入力された仮想アドレスおよびコンテキストと、選択したエントリの仮想アドレスおよびコンテキストを比較する(S302)。比較の結果、仮想アドレスとコンテキストの双方が一致したならば(S303,Yes)、アドレス変換バッファ20は、fTLBヒットを出力して(S304)、処理を終了する。
一方、仮想アドレスとコンテキストのいずれかが一致しなければ(S303,No)、アドレス変換バッファ20は、選択中のエントリがfTLB(IF−fTLBもしくはOP−fTLB)の最終エントリであるか否かを判定する(S305)。選択中のエントリが最終エントリでなければ(S305,No)、次のエントリを選択し(S306)、S302に戻る。そして、選択中のエントリが最終エントリであれば(S305,Yes)、そのまま処理を終了する。
なお、図7に示した動作は、fTLBヒットの時点で検索を終了する動作を一例として示したが、fTLBヒットであっても検索を終了せず、常に最終エントリまで検索を続けるようにしてもよい。常に最終エントリまで検索を行なう動作は、図7のフローチャートのS304の後、S305に移行するようにすることで得られる。
以上説明してきたように、本実施例にかかるアドレス変換バッファ20では、従来はCAMに登録していたフルアソシアティブTLBエントリを、RAMに登録する。すなわち、RAMの一部の領域をフルアソシアティブTLBエントリ専用の領域に割り当てる。そして、従来のRAMに登録したセットアソシアティブTLBを検索するのと合わせて、RAMに登録したフルアソシアティブTLBを検索することで、フルアソシアティブ方式のアドレス検索機能を残しつつ、CAMを排して実装面積を削減している。
アドレス検索に用いられる回路、例えば比較回路などは、セットアソシアティブTLBで使用していたものをフルアソシアティブTLBでも共通に使用することかできる。
そのため、従来CAMの為に必要だった実装面積および消費電力を大幅に削減することができる。また、大規模カスタムであるCAMの開発コストを削減することができる。
RAMに登録したフルアソシアティブTLBを検索するには、フルアソシアティブTLBのエントリ数分の検索サイクルを要することになる。そこで、アドレス変換バッファ20では、セットアソシアティブTLBを検索し、該当するエントリがない場合にのみフルアソシアティブTLBを検索する。大容量のセットアソシアティブTLBと小容量のフルアソシアティブTLBでは、セットアソシアティブTLBを利用する確率が高く、フルアソシアティブTLBに登録されている確率は低い。したがってセットアソシアティブTLBの検索を優先することで、フルアソシアティブTLB検索によるサイクル増大が発生する確率を低くすることができる。
さらにフルアソシアティブTLBには主に、トラップ処理などで必要となるエントリが登録されているが、トラップ処理自体に要するサイクル数に比較して、フルアソシアティブTLBを検索することによるサイクル数の増加は軽微であるので、トラップ処理に伴う性能低下の影響も僅かである。
また、フルアソシアティブTLBを検索するリクエストに制限を掛け、極力必要な場合にのみフルアソシアティブTLBを検索することにより、フルアソシアティブTLB検索によるサイクル数増大の発生率を抑える。これにより、あるリクエストがフルアソシアティブTLBを検索する間、RAMへのアクセスがビジーとなって他のリクエストがセットアソシアティブTLBを検索できなくなるという性能劣化を避けることができる。
実施例1では、WAY数が1のセットアソシアティブ方式、所謂ダイレクトマップ方式のTLB構造を利用した場合について説明を行ったが、本実施例2では、WAY数が2のセットアソシアティブ方式のTLBを利用する場合について説明を行なう。
図8は、本実施例2にかかるTLB本体部の説明図である。図8に示したTLB本体部23aは、WAY0のタグ部33、WAY1のタグ部34、WAY0,1で共用するデータ部35を有する。タグ部33,34、データ部35は、それぞれRAMを用いて構成する。
WAY0のタグ部33、WAY1のタグ部34にそれぞれエントリを登録できるので、TLB本体部23aでは各インデックスについて2つずつのエントリを保持することができる。
タグ部33,34は、エントリをセットアソシアティブ方式で参照する領域とフルアソシアティブ方式で参照する第2の領域とを設ける。言い換えると、タグ部31を構成するRAMには、セットアソシアティブ方式で参照されるタグと、フルアソシアティブ方式で参照されるタグの双方が登録される。
タグ部33は、セットアソシアティブ方式で参照する領域に、命令用のタグIF−sTLB TAG WAY0、データ用のタグOP−sTLB TAG WAY0を有する。また、タグ部33は、フルアソシアティブ方式で参照する領域に、命令用のタグIF−fTLB TAG0、データ用のタグOP−fTLB TAG0を有する。
タグ部34は、セットアソシアティブ方式で参照する領域に、命令用のタグIF−sTLB TAG WAY1、データ用のタグOP−sTLB TAG WAY1を有する。また、タグ部34は、フルアソシアティブ方式で参照する領域に、命令用のタグIF−fTLB TAG1、データ用のタグOP−fTLB TAG1を有する。
データ部34は、タグ部33,34の各エントリに対応するアドレス変換対が登録されている。
タグ33,34は、フルアソシアティブでの参照については、複数のWAYを同時に使うことで参照速度の向上に寄与する。2WAYのRAMの構造では同時に2つのエントリを検索できるので、フルアソシアティブTLBを同時に2エントリずつ検索し、フルアソシアティブTLB検索の検索サイクルを半分にすることができる。本実施例2では2WAYを例示しているが、WAY数が大きくなるほど同時に検索を行なうことで検索速度を向上することができる。
フルアソシアティブにおける複数のタグ部の利用は、検索速度の向上のみならず、信頼性の向上にも有効である。
従来、CAM上のfTLBは、システムの基本的なアドレス変換を行うTLBエントリを登録され、エントリの書き換え頻度が低かった。システムの基本的なアドレス変換を登録されることから、エラーなどによるデータ化けが発生した場合、直ちにシステムダウンが発生しシステムに重大な障害を発生させてしまう可能性があった。一般にラッチベースで作られることの多いCAMは、ラッチがデータ反転等のエラーが発生しにくいことから、エラーが比較的起こりにくいといえる。しかし、RAMにエラーが発生する頻度はラッチに比べると大きい。一方で、CAMは回路規模が大きい為、ラッチのエラー頻度×実装面積として計算できるCAMのソフトエラー率は比較的大きい。
図9は、2つのfTLBでエントリを二重化する構成の説明図である。図9に示したように、fTLBでエントリを二重化することで、fTLBのエントリがRAM内でビット反転などのエラーを生じた場合でも、システムに対する障害を引き起こすことなくシステムが正常に、かつ遅延を生じることなく動作する。また、CAMを排して実装面積を縮小していることからソフトエラー率を下げることができる。
また、ビット反転等でfTLBのエントリにエラーか発生した場合は、そのデータを直ちに書き直し、発生したエラーを修復することで、fTLBの信頼性を向上することができる。
図9に示した構成では、タグ部33,34のfTLBに同じエントリを2つ登録することにより二重化する。sTLBの既存回路を利用するので、回路の追加を抑えつつエントリを二重化して信頼性を高めることができる。エントリの読み出し時にはエラーの無い方のエントリを使用してTLB検索動作を正常時と同様に行い、アドレス変換結果を要求元に返すと共に、エラーしたエントリに対しては、正しい方のエントリをRAMに再登録することにより、エラーを自動訂正する。
より詳細には、タグ部33のfTLBから読み出された仮想アドレスおよびコンテキストは、TLB検索部24aとチェック部25aに入力される。同様に、タグ部34のfTLBから読み出された仮想アドレスおよびコンテキストは、TLB検索部24bとチェック部25bに入力される。
TLB検索部24aは、仮想アドレスレジスタ21が保持する仮想アドレスとコンテキストレジスタ22が保持するコンテキストの組み合わせと、タグ部33からの入力を比較して比較結果を出力する。TLB検索部24bは、仮想アドレスレジスタ21が保持する仮想アドレスとコンテキストレジスタ22が保持するコンテキストの組み合わせと、タグ部34からの入力を比較して比較結果を出力する。
チェック部25aは、タグ部33からの入力と、データ部35の対応するデータとを比較してパリティチェックを行い、チェック結果を出力する。同様に、チェック部25bは、タグ部34からの入力と、データ部35の対応するデータとを比較してパリティチェックを行い、チェック結果を出力する。
チェック部25aの結果、エラーがなければ、TLB検索部24aの出力が使用される。また、チェック部25aの結果LB検索部24aの出力にエラーがあり、チェック部25bの結果、エラーがなければ、TLB検索部24bの出力が使用される。
同様に、チェック部25a,25bの結果を用い、エラーの無いタグ部のエントリがグッドタグ部26に登録され、対応するエラーの無いデータ部のエントリがグッドデータ部27に登録される。このグッドタグ部26とグッドデータ部27の登録内容をエラーしたエントリに書き戻すことで、エラーを訂正することかできる。
他の変形例として、RAMに登録したfTLBの一部を保持するラッチをさらに設ける構成とすることもできる。図10は、RAMに登録したfTLBの一部を保持するラッチを設けた構成図である。
図10に示した構成では、fTLBのキャッシュとなるエントリを1エントリだけ、RAMとは別に保持するラッチ29、ラッチ29を検索するラッチ検索部28を設けている。TLB検索部24とラッチ検索部29は、同時に検索を実行可能である。
ラッチ29への登録は、fTLBにヒットしたエントリに関して、アドレス変換結果を要求元に返すとともに、登録すればよい。なお、ここでは1エントリ分をラッチする場合について例示したが、2以上の任意のエントリ分を設けても良い。
以上説明してきたように、本実施例2に開示した構成によっても、実施例1と同様に、フルアソシアティブ方式のアドレス検索機能を残しつつ、CAMを排して実装面積を削減し、消費電力を抑えることができる。
また、2WAYを利用することで、fTLBの検索の高速化や、fTLBの信頼性向上を実現できる。
1 CPU
2 メインメモリ
11 命令制御部
12 演算部
13 L1命令タグ
14 L1データタグ
15 L1命令キャッシュ
16 L1データキャッシュ
17 L2キャッシュ
20 アドレス変換バッファ
21 仮想アドレスレジスタ
22 コンテキストレジスタ
23,23a TLB本体部
24,24a,24b TLB検索部
25a,25b チェック部
26 グッドタグ部
27 グッドデータ部
28 ラッチ検索部
29 ラッチ
31,33,34 タグ部
32,35 データ部
41,42 比較回路
43 アンド回路

Claims (6)

  1. 仮想アドレスを物理アドレスに変換するアドレス変換対の一部をアドレス変換バッファに保持する演算処理装置であって、
    前記アドレス変換バッファは、
    セットアソシアティブ方式で参照する第1の領域と、エントリを順に比較するフルアソシアティブ方式で参照する第2の領域とを備えるランダムアクセスメモリである記憶部と、
    前記仮想アドレスから前記物理アドレスへのアドレス変換を行う場合に、アドレス変換対象の仮想アドレスに対応するアドレス変換対を、前記第1の領域から検索し、前記第1の領域に前記アドレス変換対象の仮想アドレスに対応するアドレス変換対が存在しない場合に、前記第2の領域から前記アドレス変換対象の仮想アドレスに対応するアドレス変換対を検索する検索部と、
    を備えたことを特徴とする演算処理装置。
  2. 前記演算処理装置において、
    前記アドレス変換バッファは、複数の記憶部に前記第1の領域と第2の領域とを設け、前記第2の領域に対して検索を行なう場合に前記複数の記憶部に同時に検索を行なう事を特徴とする請求項1に記載の演算処理装置。
  3. 前記演算処理装置において、
    前記複数の記憶部の第2の領域に前記アドレス変換対を二重化して登録し、前記複数の記憶部の第2の領域に対して検索の結果を検証する検証部と、前記検証の結果に基づいて前記複数の記憶部の第2の領域から各々得られた検索結果を選択する選択部と、をさらに備えたことを特徴とする請求項2に記載の演算処理装置。
  4. 前記演算処理装置において、
    前記第2の領域に登録したアドレス変換対のうち一部を保持するラッチと、前記仮想アドレスから前記物理アドレスへのアドレス変換を行う場合に、前記アドレス変換対象の仮想アドレスに対応するアドレス変換対を前記ラッチから検索するラッチ検索部とをさらに備えたことを特徴とする請求項1〜3のいずれか一つに記載の演算処理装置。
  5. 前記演算処理装置において、
    前記検索部は、前記第1の領域に前記アドレス変換対象の仮想アドレスに対応するアドレス変換対が存在せず、かつ前記アドレス変換が所定の条件を満たす場合に、前記第2の領域に対する検索を行なうことを特徴とする請求項1〜4のいずれか一つに記載の演算処理装置。
  6. 仮想アドレスを物理アドレスに変換するアドレス変換対の一部を記憶部にアドレス変換バッファとして保持する演算処理装置のアドレス変換方法であって、
    前記仮想アドレスから前記物理アドレスへのアドレス変換を行う場合に、アドレス変換対象の仮想アドレスに対応するアドレス変換対を、ランダムアクセスメモリである前記記憶部に設けられた第1の領域から、セットアソシアティブ方式で検索する第1の検索ステップと、
    前記アドレス変換対象の仮想アドレスに対応するアドレス変換対が前記第1の領域に存在しない場合に、前記アドレス変換対象の仮想アドレスに対応するアドレス変換対を、ランダムアクセスメモリである前記記憶部に設けられた第2の領域から、エントリを順に比較するフルアソシアティブ方式で検索する第2の検索ステップと、
    を備えたことを特徴とするアドレス変換方法。
JP2009156305A 2009-06-30 2009-06-30 演算処理装置およびアドレス変換方法 Expired - Fee Related JP5526626B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009156305A JP5526626B2 (ja) 2009-06-30 2009-06-30 演算処理装置およびアドレス変換方法
US12/825,959 US8745356B2 (en) 2009-06-30 2010-06-29 Processor and address translating method
EP10167869A EP2275939B1 (en) 2009-06-30 2010-06-30 Processor and address translating method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009156305A JP5526626B2 (ja) 2009-06-30 2009-06-30 演算処理装置およびアドレス変換方法

Publications (2)

Publication Number Publication Date
JP2011013858A JP2011013858A (ja) 2011-01-20
JP5526626B2 true JP5526626B2 (ja) 2014-06-18

Family

ID=42830364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009156305A Expired - Fee Related JP5526626B2 (ja) 2009-06-30 2009-06-30 演算処理装置およびアドレス変換方法

Country Status (3)

Country Link
US (1) US8745356B2 (ja)
EP (1) EP2275939B1 (ja)
JP (1) JP5526626B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9343177B2 (en) * 2013-02-01 2016-05-17 Apple Inc. Accessing control registers over a data bus
US9823929B2 (en) * 2013-03-15 2017-11-21 Qualcomm Incorporated Optimizing performance for context-dependent instructions
US9645934B2 (en) * 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US9836410B2 (en) 2015-04-15 2017-12-05 Qualcomm Incorporated Burst translation look-aside buffer
JP6592310B2 (ja) * 2015-09-01 2019-10-16 ルネサスエレクトロニクス株式会社 半導体装置
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS576956A (en) 1980-06-16 1982-01-13 Hitachi Ltd Information processor
JPH0335336A (ja) * 1989-06-30 1991-02-15 Toshiba Corp アドレス変換バッファ機構
JPH03164845A (ja) * 1989-11-22 1991-07-16 Hitachi Ltd アドレス変換バッファ方式
JP3229045B2 (ja) 1992-12-22 2001-11-12 株式会社東芝 アドレス変換バッファ機構
JPH08115262A (ja) 1994-10-14 1996-05-07 Hitachi Ltd アドレス変換回路および該アドレス変換回路を具備する電子計算機
JP3922844B2 (ja) * 1999-09-02 2007-05-30 富士通株式会社 キャッシュtag制御方法及びこの制御方法を用いた情報処理装置
US6625715B1 (en) * 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6941442B2 (en) * 2002-08-02 2005-09-06 Arm Limited Entry lockdown within a translation lookaside buffer mechanism
US7017005B2 (en) * 2002-08-28 2006-03-21 Hywire Ltd. Implementation of a content addressable memory using a RAM-cell structure
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7797509B2 (en) * 2007-01-11 2010-09-14 Netlogic Microsystems, Inc. Systems and methods for utilizing an extended translation look-aside buffer having a hybrid memory structure
EP2159707A4 (en) * 2007-06-20 2010-11-24 Fujitsu Ltd ARITHMETIC PROCESSING UNIT, INPUT TAX PROGRAM AND INPUT TAX PROCEDURE

Also Published As

Publication number Publication date
US8745356B2 (en) 2014-06-03
US20100332790A1 (en) 2010-12-30
EP2275939A1 (en) 2011-01-19
EP2275939B1 (en) 2012-08-22
JP2011013858A (ja) 2011-01-20

Similar Documents

Publication Publication Date Title
JP5526626B2 (ja) 演算処理装置およびアドレス変換方法
EP3238074B1 (en) Cache accessed using virtual addresses
US10860323B2 (en) Method and apparatus for processing instructions using processing-in-memory
US8296518B2 (en) Arithmetic processing apparatus and method
US9684606B2 (en) Translation lookaside buffer invalidation suppression
US20160140042A1 (en) Instruction cache translation management
US9720847B2 (en) Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
US10339054B2 (en) Instruction ordering for in-progress operations
US20150356024A1 (en) Translation Lookaside Buffer
US9934152B1 (en) Method and apparatus to use hardware alias detection and management in a virtually indexed physically tagged cache
US7472227B2 (en) Invalidating multiple address cache entries
JP2009512943A (ja) 多階層の変換索引緩衝機構(TLBs)フィールドの更新
US20140173210A1 (en) Multi-core processing device with invalidation cache tags and methods
WO2013084314A1 (ja) 演算処理装置及び演算処理装置の制御方法
KR102482516B1 (ko) 메모리 어드레스 변환
JP5319049B2 (ja) キャッシュシステム
WO2013084315A1 (ja) 演算処理装置、及び、演算処理装置の制御方法
KR102355374B1 (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
US20110283041A1 (en) Cache memory and control method thereof
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ
KR20040047398A (ko) 캐쉬 메모리를 이용한 데이터 억세스 방법
JP6337570B2 (ja) 演算処理装置及び演算処理装置の制御方法
JPWO2013084314A1 (ja) 演算処理装置及び演算処理装置の制御方法
JPWO2013084315A1 (ja) 演算処理装置、及び、演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130827

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131028

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140331

R150 Certificate of patent or registration of utility model

Ref document number: 5526626

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees