JP4064380B2 - 演算処理装置およびその制御方法 - Google Patents

演算処理装置およびその制御方法 Download PDF

Info

Publication number
JP4064380B2
JP4064380B2 JP2004221216A JP2004221216A JP4064380B2 JP 4064380 B2 JP4064380 B2 JP 4064380B2 JP 2004221216 A JP2004221216 A JP 2004221216A JP 2004221216 A JP2004221216 A JP 2004221216A JP 4064380 B2 JP4064380 B2 JP 4064380B2
Authority
JP
Japan
Prior art keywords
address
virtual address
identifier
virtual
index
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
JP2004221216A
Other languages
English (en)
Other versions
JP2006040091A (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 JP2004221216A priority Critical patent/JP4064380B2/ja
Priority to US10/986,136 priority patent/US7587574B2/en
Priority to EP04257429A priority patent/EP1622035A3/en
Publication of JP2006040091A publication Critical patent/JP2006040091A/ja
Application granted granted Critical
Publication of JP4064380B2 publication Critical patent/JP4064380B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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]

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

この発明は、仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶装置を有する演算処理装置およびその制御方法に関し、特に、スラッシング現象の発生を効率的に防止することができる演算処理装置およびその制御方法に関する。
従来、コンピュータシステムが実際に有するメモリ空間(実記憶空間)よりも、大きなメモリ空間(仮想記憶空間)を仮想的に利用できるようにした仮想記憶方式が広く用いられている。実記憶空間と仮想記憶空間とは、ページと呼ばれるブロックに分けられている。
そして、仮想記憶空間における仮想ページの仮想アドレスと、実記憶空間における実ページの実アドレスとの間の対応関係は、ページテーブルと呼ばれる一覧表に記憶され、仮想アドレスを実アドレスに変換する際に参照される。
このページテーブルは、通常RAM(Random Access Memory)に記憶されるが、仮想アドレスを実アドレスに変換するたびにRAMに記憶されたページテーブルを参照すると、変換をおこなうのに長い時間がかかってしまう。
このため、RAMより高速にアクセスできるTLB(Translation Lookaside Buffer)と呼ばれるキャッシュがCPU内に設置されている。そして、最近変換された仮想アドレスと実アドレスとの間の対応関係をTLBに保持し、次回変換をおこなう際にそれを参照することにより、アドレスの変換処理を高速におこなえるようにしている。
このTLBは、RAMとCAM(Content Addressable Memory)の2つのメモリから構成されている。RAMで構成されるTLB(以下、TLB−RAMと呼ぶ。)は、より多くのTLBエントリを格納するために、連想度が1以上のセットアソシアティブ方式を採用している。
また、CAMで構成されるTLB(以下、TLB−CAMと呼ぶ。)は、TLB−RAMに記憶可能なページサイズの制限を回避し、さまざまなサイズのページを効率的に検索することができる。
ここで、このTLBに格納されるTLBエントリには、ページサイズと呼ばれるサイズが割り当てられており、このページサイズには、8kバイトページ、64kバイトページ、512kバイトページおよび4Mバイトページの4種類がある。
TLB−RAMは、構造上一種類のページサイズのTLBエントリしか登録できないため、8kバイトページおよび4MバイトページのTLBエントリを登録できるRAMを2つ用意している。一方、TLB−CAMは、すべてのページサイズのTLBエントリを登録することができ、また、ロックエントリと呼ばれる特殊なTLBエントリを登録することができる。
TLBは、要求された仮想アドレスの情報を記憶したTLBエントリがなく、新たなTLBエントリを追加する追加領域もない場合に、TLBエントリの入れ替えをおこなうが、ロックエントリとは、その入れ替えの対象から除外するよう設定されたTLBエントリのことである。
特開平3−20847号公報 特開平5−81132号公報 特開平10−49545号公報
しかしながら、上述した従来技術では、複数のプログラムにより同一の仮想アドレスが用いられた場合に、複数のプログラムにより利用されるTLBエントリが、TLB−RAMの一部の領域(たとえば、先頭から40メガバイトの領域)に集中することとなり、TLBエントリの登録場所を複数のプログラムが奪い合うスラッシング現象が発生するという問題があった。
すなわち、TLB−RAMは、仮想アドレスの一部を、TLBエントリを格納するTLB−RAMをインデックスするインデックスアドレスとして用いるため、同一の仮想アドレスが複数のプログラムにより一斉に利用されると、TLBのヒット率が低下してしまうという問題があった。
この場合、TLBの連想度を増加させるとスラッシング現象の発生を緩和することができるが、TLBの連想度を増加させると回路が複雑になってしまうため、これを実現するのは困難である。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スラッシング現象の発生を効率的に防止することができる演算処理装置およびその制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、仮想アドレスと前記仮想アドレスに対応する実アドレスとの対であるアドレス変換情報を記憶し、前記仮想アドレスを入力して前記実アドレスに変換するアドレス変換装置を有する演算処理装置において、前記アドレス変換装置は、前記演算処理装置が実行中のプログラムにおいて、アドレス変換対象の仮想アドレスが属するアドレス空間を識別する識別子を格納するコンテキスト記憶部と、アドレス変換対象の前記仮想アドレスと前記仮想アドレスに対応する前記識別子を用いて、前記アドレス変換情報を記憶する位置を示すインデックスアドレスを生成するアドレス生成部と、アドレス変換対象の前記仮想アドレスが特定のアドレス空間のみに属する場合には、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を、前記インデックスアドレスが示す位置に記憶する第1のアドレス変換情報記憶部と、
アドレス変換対象の前記仮想アドレスが複数のアドレス空間に属する場合には、入力された仮想アドレスと記憶したアドレス変換情報が有する仮想アドレスとを比較して入力された仮想アドレスに対応するアドレス変換情報を検索する連想記憶装置に、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を記憶する第2のアドレス変換情報記憶部とを有することを特徴とする。
また、本発明は、上記発明において、前記アドレス生成部は、アドレス変換対象の前記仮想アドレスの一部と、前記識別子を排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記アドレス生成部は、アドレス変換対象の前記仮想アドレスの一部と、前記仮想アドレスの一部が有する最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記アドレス生成部は、アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子とを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記アドレス生成部は、アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分が有する最上位ビットの位置に対して最下位ビットの位置が合うように、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分のビット列の並びを反転した仮想アドレスの第2の部分データと、前記最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記アドレス生成部は、アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子の第1の部分と前記識別子の第2の部分を排他的論理和演算した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記識別子データは、前記識別子の第1の部分のビット列の並びを反転した中間データと、前記識別子の第1の部分とは異なる前記識別子の第2の部分とを、前記中間データの最上位ビットの位置に対して前記識別子の第2の部分の最上位ビットの位置が合うように、排的論理和演算を行うことにより生成されることを特徴とする。
また、本発明は、仮想アドレスと前記仮想アドレスに対応する実アドレスとの対であるアドレス変換情報を記憶し、前記仮想アドレスを入力して前記実アドレスに変換するアドレス変換装置を有する演算処理装置の制御方法において、コンテキスト記憶部に、前記演算処理装置が実行中のプログラムにおいて、アドレス変換対象の仮想アドレスが属するアドレス空間を識別する識別子を格納するステップと、アドレス生成部が、アドレス変換対象の前記仮想アドレスと前記仮想アドレスに対応する前記識別子を用いて、前記アドレス変換情報を記憶する位置を示すインデックスアドレスを生成するステップと、アドレス変換対象の前記仮想アドレスが特定のアドレス空間のみに属する場合には、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を、第1のアドレス変換情報記憶部の、前記インデックスアドレスが示す位置に記憶するステップと、アドレス変換対象の前記仮想アドレスが複数のアドレス空間に属する場合には、入力された仮想アドレスと記憶したアドレス変換情報が有する仮想アドレスとを比較して入力された仮想アドレスに対応するアドレス変換情報を検索する連想記憶装置を有する第2のアドレス情報記憶部に、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を記憶するステップとを有することを特徴とする。
また、本発明は、上記発明において、前記インデックスアドレスを生成するステップは、アドレス変換対象の前記仮想アドレスの一部と、前記識別子を排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記インデックスアドレスを生成するステップは、アドレス変換対象の前記仮想アドレスの一部と、前記仮想アドレスの一部が有する最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記インデックスアドレスを生成するステップは、アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子とを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記インデックスアドレスを生成するステップは、アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分が有する最上位ビットの位置に対して最下位ビットの位置が合うように、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分のビット列の並びを反転した仮想アドレスの第2の部分データと、前記最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記インデックスアドレスを生成するステップは、アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子の第1の部分と前記識別子の第2の部分を排他的論理和演算した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする。
また、本発明は、上記発明において、前記識別子データは、前記識別子の第1の部分のビット列の並びを反転した中間データと、前記識別子の第1の部分とは異なる前記識別子の第2の部分とを、前記中間データの最上位ビットの位置に対して前記識別子の第2の部分の最上位ビットの位置が合うように、排的論理和演算を行うことにより生成されることを特徴とする。
本発明によれば、仮想アドレスに係るコンテキストの情報を取得し、取得されたコンテキストの情報に基づいて、アドレス変換に係る情報を記憶する位置を決定することとしたので、プログラムにより変化するコンテキストの情報を用いて記憶位置を決定することにより、スラッシング現象の発生を効率的に防止することができるという効果を奏する。
また、本発明によれば、取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、アドレス変換に係る情報を記憶する位置を決定することとしたので、記憶位置の決定にハッシュ値を用いることにより、スラッシング現象の発生を効率的に防止することができるという効果を奏する。
また、本発明によれば、コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することとしたので、ハッシュ値の算出に仮想アドレスの情報を用いることにより、スラッシング現象の発生を効率的に防止することができるという効果を奏する。
また、本発明によれば、コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することとしたので、コンテキストの情報のビット列を反転することにより、ビット値が頻繁に変化するコンテキストの下位ビットが上位ビットとなるため、算出されるハッシュ値の上位ビットの変化が大きくなり、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
また、本発明によれば、コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することとしたので、コンテキストの情報のビット列を組み合わせることにより、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
また、本発明によれば、仮想アドレスに含まれる複数のビット列と、コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することとしたので、仮想アドレスに含まれる複数のビット列をハッシュ値の算出する際に用いることにより、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
また、本発明によれば、仮想アドレスに含まれるビット列と、仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することとしたので、仮想アドレスに含まれるビット列の一部を反転させてハッシュ値の算出に用いることにより、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
また、本発明によれば、アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、アドレス変換に係る情報が共有される情報である場合に、アドレス変換に係る情報をコンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないこととしたので、アドレス変換に係る情報が共有される情報である場合に、コンテキストの情報に基づいて記憶位置を決定することにより生じる不具合を回避することができるという効果を奏する。
また、本発明によれば、コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、アドレス変換に係る情報を連想メモリに記憶することとしたので、共有されているアドレス変換に係る情報を容易に取り扱うことができ、アドレス変換に係る情報に高速にアクセスすることができるという効果を奏する。
また、本発明によれば、決定されたアドレス変換に係る情報を記憶する位置の情報と、コンテキストの情報とに基づいて、仮想アドレスのビット列を生成することとしたので、元の仮想アドレスのビット列をすべて記憶していなくとも、容易にそれを復元することができるという効果を奏する。
以下に添付図面を参照して、本発明に係る演算処理装置およびその制御方法の好適な実施例を詳細に説明する。
まず、実施例1に係るアドレス変換情報記憶処理について説明する。図1は、実施例1に係るアドレス変換情報記憶処理を説明する説明図であり、図2は、図1に示したハッシュ回路13の詳細を示す図である。ここでは、4MバイトページのTLBエントリを512ライン、2ウェイ構成のTLB−RAMに登録する場合について説明する。
図1に示すように、このアドレス変換情報記憶処理では、64ビットの仮想アドレス10とコンテキストレジスタ11に記憶されたコンテキストの値とに基づいて、仮想アドレス10と物理アドレスとの間のアドレスの変換情報を記憶するTLB−RAM12内の記憶位置(TLB−RAMインデックスアドレス)を決定し、決定された記憶位置にアドレスの変換情報を記憶する。
具体的には、コンテキストレジスタ11の0ビット目から8ビット目までのビット列を反転し、反転したビット列の各値と、仮想アドレス10の22ビット目から30ビット目まで(以降、仮想アドレス10の22ビット目から30ビット目までの部分をインデックスと呼ぶ。)の各値とからハッシュ回路13によりハッシュ値を算出し、算出されたハッシュ値をTLB−RAMインデックスアドレスとして用いる。
ここで、仮想アドレス10の22ビット目から30ビット目までの各値は、従来技術において、4MバイトページのTLBエントリを512ライン、2ウェイ構成のTLB−RAMに登録する場合に、TLB−RAMインデックスアドレスとして用いられていたものである。
また、コンテキストとは、仮想アドレス10を使用するプログラム、あるいは、プログラムにより用いられる仮想アドレス10が属するアドレス空間ごとに与えられた識別子である。
たとえば、SPARC(Scalable Processor Architecture,登録商標)アーキテクチャにおいては、図1に示したように、コンテキストは、現在使用しているアドレス空間に対応する、コンテキストレジスタ11に記憶された値であり、メインフレームアーキテクチャにおいては、STD(Segment−table Designation)に格納されたSTO(Segment−table Origin)の値である。
このコンテキストは、プログラムが切り替えられる場合に、プロセッサ外部のメモリに保存され、再度そのプログラムが実行される場合に、コンテキストレジスタ11またはSTDに復元される。
図2に示すように、図1に示したハッシュ回路13は、複数のEOR(Exclusive OR,排他的論理和)素子から構成されている。各EOR素子は、仮想アドレス10のビット値と、ビット列が反転されたコンテキストレジスタ11のビット値との間の排他的論理和をハッシュ値として算出する。
すなわち、仮想アドレス10の22ビット目の値と、ビット列が反転されたコンテキストレジスタ11の8ビット目の値との間の排他的論理和が算出され、TLB−RAMインデックスアドレスを構成するビット列の最下位ビット(インデックスビット22)にその値が設定される。
同様に、仮想アドレス10の23ビット目の値とコンテキストレジスタ11の7ビット目の値、仮想アドレス10の24ビット目の値とコンテキストレジスタ11の6ビット目の値、・・・、仮想アドレス10の30ビット目の値とコンテキストレジスタ11の0ビット目の値との間の排他的論理和が算出され、それぞれTLB−RAMインデックスアドレスのインデックスビット23からインデックスビット30にそれらの値が設定される。
このように、プログラムが切り替えられるごとに変更となるコンテキストの値を用いてTLB−RAMインデックスアドレスを決定することにより、スラッシング現象の発生を効率的に防止することができる。
また、コンテキストレジスタ11にはコンテキストの情報が下位のビットから順に記憶されていくため、コンテキストレジスタ11のビット列を反転させて用いることにより、ビット値が頻繁に変化するコンテキストの下位ビットが上位ビットとなり、算出されるハッシュ値の上位ビットの変化が大きくなって、TLBインデックスアドレスの値を効率的に分散させることができるようになる。
つぎに、実施例1に係るプロセッサの機能的構成について説明する。図3は、実施例1に係るプロセッサ20の機能的構成を示す図である。図3に示すように、このプロセッサ20は、データが読み書きされるRAM30と、バス40を介して接続されている。
このプロセッサ20は、演算ユニット21、キャッシュ22、バスインターフェース23、コンテキストレジスタ24、グローバルレジスタ25、ハッシュ演算ユニット26およびTLB27を有する。
演算ユニット21は、RAM30やキャッシュ22からデータを読み取ってプログラムに記述された各命令を実行する。キャッシュ22は、RAM30よりもアクセス速度が高速なメモリであり、演算ユニット21がデータに高速にアクセスするために、RAM30から読み出されたデータを一時的に保存する。
バスインターフェース23は、バス40を介してRAM30などとの間でデータの授受をおこなうインターフェースである。コンテキストレジスタ24は、図1に示したコンテキストレジスタ11に対応するものであり、実行されるプログラムごとに入れ替えられるコンテキストを記憶するレジスタである。グローバルレジスタは、仮想アドレスなどを記憶するレジスタである。
ハッシュ演算ユニット26は、コンテキストレジスタ24に記憶されたコンテキストのビット列を反転させ、反転されたビット列のビット値と、仮想アドレスのビット値との間の排他的論理和をハッシュ値として算出する。
また、ハッシュ演算ユニット26は、TLB−RAM27aに登録されたTLBエントリの情報から、仮想アドレスの情報を再生成する。たとえば、仮想アドレスをTLB−RAM27aに記憶した場合、記憶された仮想アドレスのインデックスの部分は、TLBエントリの内容が読み出される場合にのみ参照される。
そこで、TLB−RAM27aに仮想アドレスの情報を記憶するのに必要な記憶領域を削減するため、仮想アドレスのインデックスの部分のビット値をTLB−RAM27aに記憶せず、ハッシュ演算ユニット26は、インデックスの部分のビット値を演算により算出する。
図4は、仮想アドレスのインデックス部分のビット値を算出する処理について説明する図である。図4の例では、TLBエントリが8kバイトのページサイズである場合を示しており、この場合、仮想アドレスの13ビット目から21ビット目までのビット列が、TLB−RAMインデックスアドレスを生成する際に参照されるインデックスの部分となる。
図4に示すように、まず、ハッシュ演算ユニット26は、TLB−RAM27aからTLB登録アドレス50の情報を取得する。ここで、TLB登録アドレス50とは、TLB−RAM12に登録された仮想アドレスの情報であり、元の仮想アドレスのインデックスの部分である13ビット目から21ビット目までのビット列が、ハッシュ演算により算出されたTLB−RAMインデックスアドレス51で置き換えられたものである。
そして、ハッシュ演算ユニット26は、コンテキストレジスタ11から0ビット目から8ビット目までのビット列を取得し、取得したビット列を反転させて、TLB−RAMインデックスアドレス51との間の排他的論理和をハッシュ回路13を用いて算出する。
算出された排他的論理和は、元の仮想アドレスのインデックス部分と一致するため、TLB登録アドレス50の13ビット目から21ビット目までのビット列を算出された排他的論理和のビット列で置き換えることにより、元の仮想アドレス52が再構成される。
このように、元の仮想アドレスのインデックスの部分をTLB−RAM12に記憶していなくとも、TLB−RAMインデックスアドレス51とコンテキストの情報とから元の仮想アドレスを再構成でき、SPARC(登録商標)アーキテクチャにおいて、TLBーRAM12からTLBエントリを読み出す命令と同等の処理を実現することができる。
TLB27は、仮想アドレスを物理アドレスに変換する。具体的には、TLB27は、TLBエントリに、仮想アドレスと、それに対応する物理アドレスとを対応付けたアドレスの変換情報を記憶する。
このTLB27は、TLB−RAM27aと、TLB−CAM27bを有する。TLB−RAM27aは、図1に示したTLB−RAM12に対応するものであり、TLB−RAMインデックスアドレスにより指定されたTLBエントリにアドレスの変換情報を記憶するRAMである。TLB−CAM27bは、記憶している多数のデータの内容と、入力されたデータの内容とを並列に比較して、データを検索することができる連想メモリである。
TLB27は、TLB−RAM27aに記憶するTLBエントリがロックエントリである場合、あるいは、TLBエントリのページサイズがTLB−RAM27aに格納可能なサイズでない場合には、そのTLBエントリをTLB−CAM27bに記憶する。
また、TLB27は、TLBエントリがグローバルエントリである場合に、そのTLBエントリをTLB−CAM27bに記憶する。ここで、グローバルエントリとは、複数のプロセスにより使用されるアドレス空間で共有されるエントリである。
たとえば、SPARC(登録商標)アーキテクチャでは、TLBエントリに含まれるグローバルビットが有効に設定されているエントリであり、メインフレームアーキテクチャでは、コモンセグメントに該当するものである。
TLB−RAM27aに記憶するTLBエントリが、グローバルエントリである場合には、記憶されたTLBエントリをTLB−RAM27aから検索する検索処理や、TLBエントリをTLB−RAM27aから削除するデマップ処理を実行することが困難になる。
具体的には、TLB−RAM27aに登録されているTLBエントリの中からあるTLBエントリを探し出す際、TLBエントリがグローバルエントリでない場合には、TLB27は、仮想アドレスの情報とコンテキストの情報とからTLBエントリが登録されている位置を一度で特定することができる。
しかし、TLBエントリがグローバルエントリである場合には、TLB27は、コンテキストの情報を参照しないので、TLBエントリが登録されている位置を一度に特定することができず、TLB−RAM27aに登録されているTLBエントリの中からあるTLBエントリを探し出すのに1つ1つTLBエントリを調べる必要が生じ、TLBの性能が低下してしまう。
そのため、TLBエントリがグローバルエントリである場合には、TLB27は、そのTLBエントリをTLB−CAM27bに記憶し、一度にTLBエントリの検索処理および削除処理がおこなえるようにする。
つぎに、実施例1に係るTLBエントリの記憶処理の処理手順について説明する。図5は、実施例1に係るTLBエントリの記憶処理の処理手順を示すフローチャートである。まず、TLB27は、TLB−RAM27aに記憶するTLBエントリの情報を取得する(ステップS101)。
そして、TLB27は、TLBエントリがロックエントリであるか否かを、TLBエントリ内に含まれるロックビットが有効に設定されているか否かを調べることにより判定する(ステップS102)。
TLBエントリがロックエントリである場合には(ステップS102,Yes)、TLB27は、そのTLBエントリをTLB−CAM27bに記憶し(ステップS107)、このTLBエントリの記憶処理を終了する。
TLBエントリがロックエントリでない場合には(ステップS102,No)、TLB27は、TLBエントリのページサイズがTLB−RAM27aに格納可能なサイズか否かを調べる(ステップS103)。
そして、TLBエントリのページサイズがTLB−RAM27aに格納可能なサイズでない場合は(ステップS103,No)、TLB27は、ステップS107に移行して、そのTLBエントリをTLB−CAM27bに記憶する。
TLBエントリのページサイズがTLB−RAM27aに格納可能なサイズである場合は(ステップS103,Yes)、TLB27は、TLBエントリがグローバルエントリであるか否かを、TLBエントリ内に含まれるグローバルビットが有効に設定されているか否かを調べることにより判定する(ステップS104)。
グローバルビットが有効である場合には(ステップS104,Yes)、TLB27は、ステップS107に移行して、そのTLBエントリをTLB−CAM27bに記憶する。
グローバルビットが有効でない場合には(ステップS104,No)、ハッシュ演算ユニット26は、図1および図2で説明したように、仮想アドレスの情報とビット列を反転させたコンテキストの情報とを基にしてハッシュ値を算出する(ステップS105)。
その後、TLB27は、算出されたハッシュ値をTLBインデックスアドレスとして用い、TLBインデックスアドレスにより示されるTLB−RAM27aの記憶位置にTLBエントリを記憶して(ステップS106)、このTLBエントリの記憶処理を終了する。
上述してきたように、本実施例1では、ハッシュ演算ユニット26が、仮想アドレスに係るコンテキストの情報を取得し、取得されたコンテキストの情報に基づいて、仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶する位置を示すTLBインデックスアドレスを決定することとしたので、プログラムにより変化するコンテキストの情報を用いてTLBインデックスアドレスを決定することにより、スラッシング現象の発生を効率的に防止することができる。
また、本実施例1では、ハッシュ演算ユニット26が、取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、TLBインデックスアドレスを決定することとしたので、TLBインデックスアドレスの決定にハッシュ値を用いることにより、スラッシング現象の発生を効率的に防止することができる
また、本実施例1では、ハッシュ演算ユニット26が、コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することとしたので、ハッシュ値の算出に仮想アドレスの情報を用いることにより、スラッシング現象の発生を効率的に防止することができる。
また、本実施例1では、ハッシュ演算ユニット26が、コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することとしたので、コンテキストの情報のビット列を反転することにより、ビット値が頻繁に変化するコンテキストの下位ビットが上位ビットとなるため、算出されるハッシュ値の上位ビットの変化が大きくなり、TLBインデックスアドレスの値を効率的に分散させることができる。
また、実施例1では、TLB27が、アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、アドレス変換に係る情報が共有される情報である場合に、アドレス変換に係る情報をコンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないこととしたので、アドレス変換に係る情報が共有される情報である場合に、コンテキストの情報に基づいて記憶位置を決定することにより生じる不具合を回避することができる。
また、実施例1では、TLB27が、コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、アドレス変換に係る情報をTLB−CAM27bに記憶することとしたので、共有されているアドレス変換に係る情報を容易に取り扱うことができ、アドレス変換に係る情報に高速にアクセスすることができる。
また、実施例1では、ハッシュ演算ユニット26が、決定されたTLBインデックスアドレスの情報と、コンテキストの情報とに基づいて、仮想アドレスのビット列を生成することとしたので、元の仮想アドレスのビット列のすべてを記憶していなくとも、容易にそれを復元することができる。
ところで、上記実施例1では、64ビットの仮想アドレスの22ビット目から30ビット目までの各ビット値をインデックスとして取り出し、取り出したインデックスのビット値とコンテキストレジスタのビット値とからTLB−RAMインデックスアドレスを算出することとしたが、仮想アドレスの他の部分のビット値をさらに利用して、TLB−RAMインデックスアドレスを算出することとしてもよい。そこで、実施例2では、TLB−RAMインデックスアドレスの算出に仮想アドレスの他の部分をさらに利用する場合について説明する。
図6は、実施例2に係るアドレス変換情報記憶処理を説明する説明図である。図6に示すように、このアドレス変換情報記憶処理では、TLB−RAMインデックスアドレスを算出する場合に、仮想アドレス60から2つのビット列を抽出する。
そして、抽出した2つのビット列の値と、コンテキストレジスタ61に記憶されたコンテキストの値とに基づいて、TLB−RAM62に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する記憶位置を示すTLB−RAMインデックスアドレスを算出し、TLB−RAMインデックスアドレスにより示される記憶位置にアドレスの変換情報を記憶する。
具体的には、図3に示したハッシュ演算ユニット26が、仮想アドレス60の22ビット目から30ビット目までのビット列の値をインデックスとして取得し、また、仮想アドレス60の31ビット目から39ビット目までのビット列の値を仮想アドレスAとして取得する。さらに、ハッシュ演算ユニット26は、コンテキストレジスタ61の0ビット目から8ビット目までのビット列の値を取得する。
そして、ハッシュ演算ユニット26は、仮想アドレス60から取得した仮想アドレスAのビット列を反転して仮想アドレスBを生成し、また、コンテキストレジスタ61から取得したビット列を反転してコンテキストAを生成する。
続いて、ハッシュ演算ユニット26は、インデックス、仮想アドレスBおよびコンテキストAの3つのビット列の下位ビットから順に番号を割り当てた場合に、同一の番号となる3つのビット値の組の排他的論理和をハッシュ回路63を用いて算出し、ハッシュ値のビット列を生成する。
ここで、ハッシュ回路63は、入力された3つのビット値の排他的論理和を出力するEOR回路である。この場合、インデックス、仮想アドレスBおよびコンテキストAは、9ビットのビット列であるため、ハッシュ回路63により9ビットの排他的論理和のビット列が出力される。
そして、図3に示したTLB27は、ハッシュ演算ユニット26により出力されたビット列をTLB−RAMインデックスアドレスとして用い、TLB−RAMインデックスアドレスにより示されるTLB−RAM62の記憶位置に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する。
上述してきたように、本実施例2では、ハッシュ演算ユニット26が、仮想アドレス60に含まれる複数のビット列(インデックスおよび仮想アドレスA)と、コンテキストの情報のビット列を反転したビット列(コンテキストA)とに基づいてハッシュ値を算出することとしたので、仮想アドレス60に含まれる複数のビット列(インデックスおよび仮想アドレスA)をハッシュ値の算出する際に用いることにより、TLB−RAMインデックスアドレスの値を効率的に分散させることができる。
また、本実施例2では、ハッシュ演算ユニット26が、仮想アドレス60に含まれるビット列(インデックス)と、仮想アドレス60に含まれるビット列を反転したビット列(仮想アドレスB)と、コンテキストの情報のビット列を反転したビット列(コンテキストA)との間の排他的論理和からハッシュ値を算出することとしたので、仮想アドレス60に含まれるビット列の一部を反転させてハッシュ値の算出に用いることにより、TLB−RAMインデックスアドレスの値を効率的に分散させることができる。
ところで、上記実施例2では、64ビットの仮想アドレスから2つのビット列を抽出し、抽出された2つのビット列と、コンテキストレジスタから取得したビット列とを用いてTLB−RAMインデックスアドレスを算出することとしたが、仮想アドレスから3つ以上のビット列を抽出して、TLB−RAMインデックスアドレスを算出することとしてもよい。そこで、実施例3では、仮想アドレスから3つ以上のビット列を抽出して、TLB−RAMインデックスアドレスを算出する場合について説明する。
図7は、実施例3に係るアドレス変換情報記憶処理を説明する説明図である。図7に示すように、このアドレス変換情報記憶処理では、TLB−RAMインデックスアドレスを算出する場合に、仮想アドレス70から6つのビット列を抽出する。
そして、抽出した6つのビット列の値と、コンテキストレジスタ(図示せず)に記憶されたコンテキストの値とに基づいて、仮想アドレスと物理アドレスとの間のアドレスの変換情報をTLB−RAM71に記憶する記憶位置を示すTLB−RAMインデックスアドレスを算出し、TLB−RAMインデックスアドレスにより示される記憶位置にアドレスの変換情報を記憶する。
具体的には、図3に示したハッシュ演算ユニット26が、仮想アドレス70の13ビット目から21ビット目までのビット列の値をインデックスとして取得し、また、仮想アドレス70の22ビット目から30ビット目までのビット列の値、31ビット目から39ビット目までのビット列の値、40ビット目から48ビット目までのビット列の値、49ビット目から57ビット目までのビット列の値、58ビット目から63ビット目までのビット列の値を、仮想アドレスC、仮想アドレスE、仮想アドレスG、仮想アドレスI、仮想アドレスKとしてそれぞれ取得する。
そして、ハッシュ演算ユニット26は、仮想アドレス70から取得した仮想アドレスC、仮想アドレスE、仮想アドレスG、仮想アドレスI、仮想アドレスKのビット列を反転して仮想アドレスD、仮想アドレスF、仮想アドレスH、仮想アドレスJ、仮想アドレスLをそれぞれ生成する。
また、ハッシュ演算ユニット26は、コンテキストレジスタの0ビット目から8ビット目までのビット列の値を取得する。そして、ハッシュ演算ユニット26は、コンテキストレジスタから取得したビット列を反転してコンテキストAを生成する。
続いて、ハッシュ演算ユニット26は、インデックス、仮想アドレスD、仮想アドレスF、仮想アドレスH、仮想アドレスJ、仮想アドレスLおよびコンテキストAの7つのビット列の下位ビットから順に番号を割り当てた場合に、同一の番号となる7つのビット値の組の排他的論理和を、ハッシュ回路72を用いて算出し、ハッシュ値のビット列を生成する。
ここで、ハッシュ回路72は、入力された7つのビット値の排他的論理和を出力するEOR回路である。この場合、インデックス、仮想アドレスD、仮想アドレスF、仮想アドレスH、仮想アドレスJ、仮想アドレスLおよびコンテキストAは、それぞれ9ビットのビット列であるため、ハッシュ回路72により9ビットの排他的論理和のビット列が出力される。
そして、図3に示したTLB27は、ハッシュ演算ユニット26により出力されたビット列をTLB−RAMインデックスアドレスとして用い、TLB−RAMインデックスアドレスにより示されるTLB−RAM71の記憶位置に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する。
上述してきたように、本実施例3では、ハッシュ演算ユニット26が、仮想アドレス70に含まれる複数のビット列(インデックス、仮想アドレスC、仮想アドレスE、仮想アドレスG、仮想アドレスIおよび仮想アドレスK)と、コンテキストの情報のビット列を反転したビット列(コンテキストA)とに基づいてハッシュ値を算出することとしたので、仮想アドレス60に含まれる複数のビット列(インデックス、仮想アドレスC、仮想アドレスE、仮想アドレスG、仮想アドレスIおよび仮想アドレスK)をハッシュ値の算出する際に用いることにより、TLB−RAMインデックスアドレスの値を効率的に分散させることができる。
また、本実施例3では、ハッシュ演算ユニット26が、仮想アドレス70に含まれるビット列(インデックス)と、仮想アドレス70に含まれるビット列を反転した複数のビット列(仮想アドレスD、仮想アドレスF、仮想アドレスH、仮想アドレスJおよび仮想アドレスL)と、コンテキストの情報のビット列を反転したビット列(コンテキストA)との間の排他的論理和からハッシュ値を算出することとしたので、仮想アドレス70に含まれるビット列の一部を反転させてハッシュ値の算出に用いることにより、TLB−RAMインデックスアドレスの値を効率的に分散させることができる。
ところで、上記実施例1から3では、コンテキストレジスタの一部のビット列と、仮想アドレスのビット列とを用いてTLB−RAMインデックスアドレスを算出することとしたが、コンテキストレジスタから複数のビット列を抽出して、TLB−RAMインデックスアドレスを算出することとしてもよい。そこで、実施例4では、コンテキストレジスタから複数のビット列を抽出して、TLB−RAMインデックスアドレスを算出する場合について説明する。
図8は、実施例4に係るアドレス変換情報記憶処理を説明する説明図である。図8に示すように、このアドレス変換情報記憶処理では、TLB−RAMインデックスアドレスを算出する場合に、コンテキストレジスタ80から2つのビット列を抽出する。
そして、抽出した2つのビット列の値と、仮想アドレスのビット列の値とに基づいて、仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する記憶位置を示すTLB−RAMインデックスアドレスを算出し、TLB−RAMインデックスアドレスにより示される記憶位置にアドレスの変換情報を記憶する。
具体的には、図3に示したハッシュ演算ユニット26が、コンテキストレジスタ80の0ビット目から8ビット目までのビット列の値を取得し、そのビット列を反転させてコンテキストAを生成する。
また、ハッシュ演算ユニット26は、コンテキストレジスタ80の9ビット目から12ビット目までのビット列の値を取得し、コンテキストAの上位4ビットとの間の排他的論理和を算出する。
具体的には、ハッシュ演算ユニット26は、コンテキストレジスタ80の9ビット目から12ビット目までのビット列およびコンテキストAの上位4ビットに下位のビットから順に番号を割り当てた場合に、同一の番号となる4つのビット値の組の排他的論理和をEOR回路82を用いて算出し、4ビットのビット列を生成する。さらに、ハッシュ演算ユニット26は、生成された4ビットのビット列と、コンテキストAの下位4ビットとを結合し、コンテキストBを生成する。
また、ハッシュ演算ユニット26は、図6に示したように、仮想アドレスの22ビット目から30ビット目までのビット列の値を取得して、取得したビット列をインデックスとする。さらに、ハッシュ演算ユニット26は、仮想アドレスの31ビット目から39ビット目までのビット列の値を取得してビット列を反転し、その結果得られたビット列を仮想アドレスBとする。
その後、ハッシュ演算ユニット26は、図6に示した場合と同様に、コンテキストB、仮想アドレスBおよびインデックスの3つのビット列の下位ビットから順に番号を割り当てた場合に、同一の番号となる3つのビット値の組の排他的論理和をハッシュ回路83を用いて算出し、ビット列を生成する。
ここで、ハッシュ回路83は、入力された3つのビット値の排他的論理和を出力するEOR回路である。この場合、コンテキストB、仮想アドレスBおよびインデックスは、9ビットのビット列であるため、ハッシュ回路83により9ビットの排他的論理和のビット列が出力される。
そして、図3に示したTLB27は、ハッシュ演算ユニット26により出力されたビット列をTLB−RAMインデックスアドレスとして用い、TLB−RAMインデックスアドレスにより示されるTLB−RAM81の記憶位置に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する。
上述してきたように、本実施例4では、ハッシュ演算ユニット26が、コンテキストの情報に含まれる複数のビット列(コンテキストレジスタ80の0ビット目から8ビット目およびコンテキストレジスタ80の9ビット目から12ビット目)から新たなビット列(コンテキストB)を生成し、生成したビット列(コンテキストB)と仮想アドレスのビット列(インデックスおよび仮想アドレスB)とに基づいてハッシュ値を算出することとしたので、コンテキストの情報のビット列を組み合わせることにより、TLB−RAMインデックスアドレスの値を効率的に分散させることができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
たとえば、上記実施例では、ハッシュ値を計算するためにEOR回路を用いたが、本発明はこれに限定されるものではなく、その他のハッシュ回路を用いてハッシュ値を算出することとしてもよい。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
(付記1)仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶装置であって、
前記仮想アドレスに係るコンテキストの情報を取得する取得手段と、
前記取得手段により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定手段と、
を備えたことを特徴とするアドレス変換情報記憶装置。
(付記2)前記決定手段は、前記取得手段により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする付記1に記載のアドレス変換情報記憶装置。
(付記3)前記決定手段は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする付記2に記載のアドレス変換情報記憶装置。
(付記4)前記決定手段は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記3に記載のアドレス変換情報記憶装置。
(付記5)前記決定手段は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする付記3に記載のアドレス変換情報記憶装置。
(付記6)前記決定手段は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする付記3に記載のアドレス変換情報記憶装置。
(付記7)前記決定手段は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記6に記載のアドレス変換情報記憶装置。
(付記8)前記決定手段は、前記アドレス変換に係る情報が複数のプロセスにより共有されているか否かを判定し、該アドレス変換に係る情報が共有されている場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする付記1〜7のいずれか1つに記載のアドレス変換情報記憶装置。
(付記9)前記決定手段は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする付記8に記載のアドレス変換情報記憶装置。
(付記10)前記決定手段により決定された前記アドレス変換に係る情報を記憶する位置の情報と前記コンテキストの情報とに基づいて、前記仮想アドレスのビット列を生成する生成手段をさらに備えたことを特徴とする付記1〜9のいずれか1つに記載のアドレス変換情報記憶装置。
(付記11)仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶方法であって、
前記仮想アドレスに係るコンテキストの情報を取得する取得工程と、
前記取得工程により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定工程と、
を含んだことを特徴とするアドレス変換情報記憶方法。
(付記12)前記決定工程は、前記取得工程により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする付記11に記載のアドレス変換情報記憶方法。
(付記13)前記決定工程は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする付記12に記載のアドレス変換情報記憶方法。
(付記14)前記決定工程は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記13に記載のアドレス変換情報記憶方法。
(付記15)前記決定工程は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする付記13に記載のアドレス変換情報記憶方法。
(付記16)前記決定工程は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする付記13に記載のアドレス変換情報記憶方法。
(付記17)前記決定工程は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記16に記載のアドレス変換情報記憶方法。
(付記18)前記決定工程は、前記アドレス変換に係る情報が複数のプロセスにより共有されているか否かを判定し、該アドレス変換に係る情報が共有されている場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする付記11〜17のいずれか1つに記載のアドレス変換情報記憶方法。
(付記19)前記決定工程は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする付記18に記載のアドレス変換情報記憶方法。
(付記20)前記決定工程により決定された前記アドレス変換に係る情報を記憶する位置の情報と前記コンテキストの情報とに基づいて、前記仮想アドレスのビット列を生成する生成工程をさらに含んだことを特徴とする付記11〜19のいずれか1つに記載のアドレス変換情報記憶方法。
以上のように、本発明にかかる演算処理装置およびその制御方法は、スラッシング現象の発生を効率的に防止することが必要な演算処理装置およびその制御方法に有用である。
実施例1に係るアドレス変換情報記憶処理を説明する説明図である。 図1に示したハッシュ回路13の詳細を示す図である。 実施例1に係るプロセッサ20の機能的構成を示す図である。 仮想アドレスのインデックス部分のビット値を算出する処理について説明する図である。 実施例1に係るTLBエントリの記憶処理の処理手順を示すフローチャートである。 実施例2に係るアドレス変換情報記憶処理を説明する説明図である。 実施例3に係るアドレス変換情報記憶処理を説明する説明図である。 実施例4に係るアドレス変換情報記憶処理を説明する説明図である。
符号の説明
10,52,60,70 仮想アドレス
11,24,61,80 コンテキストレジスタ
12,27a,62,71,81 TLB−RAM
13,63,72,83 ハッシュ回路
20 プロセッサ
21 演算ユニット
22 キャッシュ
23 バスインターフェース
25 グローバルレジスタ
26 ハッシュ演算ユニット
27 TLB
27b TLB−CAM
30 RAM
40 バス
50 TLB登録アドレス
51 TLBインデックスアドレス
82 EOR回路

Claims (14)

  1. 仮想アドレスと前記仮想アドレスに対応する実アドレスとの対であるアドレス変換情報を記憶し、前記仮想アドレスを入力して前記実アドレスに変換するアドレス変換装置を有する演算処理装置において、
    前記アドレス変換装置は、
    前記演算処理装置が実行中のプログラムにおいて、アドレス変換対象の仮想アドレスが属するアドレス空間を識別する識別子を格納するコンテキスト記憶部と、
    アドレス変換対象の前記仮想アドレスと前記仮想アドレスに対応する前記識別子を用いて、前記アドレス変換情報を記憶する位置を示すインデックスアドレスを生成するアドレス生成部と、
    アドレス変換対象の前記仮想アドレスが特定のアドレス空間のみに属する場合には、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を、前記インデックスアドレスが示す位置に記憶する第1のアドレス変換情報記憶部と、
    アドレス変換対象の前記仮想アドレスが複数のアドレス空間に属する場合には、入力された仮想アドレスと記憶したアドレス変換情報が有する仮想アドレスとを比較して入力された仮想アドレスに対応するアドレス変換情報を検索する連想記憶装置に、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を記憶する第2のアドレス変換情報記憶部と
    を有することを特徴とする演算処理装置。
  2. 前記アドレス生成部は、
    アドレス変換対象の前記仮想アドレスの一部と、前記識別子を排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項1記載の演算処理装置。
  3. 前記アドレス生成部は、
    アドレス変換対象の前記仮想アドレスの一部と、前記仮想アドレスの一部が有する最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項1記載の演算処理装置。
  4. 前記アドレス生成部は、
    アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子とを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項1記載の演算処理装置。
  5. 前記アドレス生成部は、
    アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分が有する最上位ビットの位置に対して最下位ビットの位置が合うように、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分のビット列の並びを反転した仮想アドレスの第2の部分データと、前記最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項1記載の演算処理装置。
  6. 前記アドレス生成部は、
    アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子の第1の部分と前記識別子の第2の部分を排他的論理和演算した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項1記載の演算処理装置。
  7. 前記識別子データは、
    前記識別子の第1の部分のビット列の並びを反転した中間データと、前記識別子の第1の部分とは異なる前記識別子の第2の部分とを、前記中間データの最上位ビットの位置に対して前記識別子の第2の部分の最上位ビットの位置が合うように、排的論理和演算を行うことにより生成されることを特徴とする請求項6記載の演算処理装置。
  8. 仮想アドレスと前記仮想アドレスに対応する実アドレスとの対であるアドレス変換情報を記憶し、前記仮想アドレスを入力して前記実アドレスに変換するアドレス変換装置を有する演算処理装置の制御方法において、
    コンテキスト記憶部に、前記演算処理装置が実行中のプログラムにおいて、アドレス変換対象の仮想アドレスが属するアドレス空間を識別する識別子を格納するステップと、
    アドレス生成部が、アドレス変換対象の前記仮想アドレスと前記仮想アドレスに対応する前記識別子を用いて、前記アドレス変換情報を記憶する位置を示すインデックスアドレスを生成するステップと、
    アドレス変換対象の前記仮想アドレスが特定のアドレス空間のみに属する場合には、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を、第1のアドレス変換情報記憶部の、前記インデックスアドレスが示す位置に記憶するステップと、
    アドレス変換対象の前記仮想アドレスが複数のアドレス空間に属する場合には、入力された仮想アドレスと記憶したアドレス変換情報が有する仮想アドレスとを比較して入力された仮想アドレスに対応するアドレス変換情報を検索する連想記憶装置を有する第2のアドレス情報記憶部に、アドレス変換対象の前記仮想アドレスに対応するアドレス変換情報を記憶するステップと
    を有することを特徴とする制御方法。
  9. 前記インデックスアドレスを生成するステップは、
    アドレス変換対象の前記仮想アドレスの一部と、前記識別子を排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項8記載の制御方法。
  10. 前記インデックスアドレスを生成するステップは、
    アドレス変換対象の前記仮想アドレスの一部と、前記仮想アドレスの一部が有する最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項8記載の制御方法。
  11. 前記インデックスアドレスを生成するステップは、
    アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子とを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項8記載の制御方法。
  12. 前記インデックスアドレスを生成するステップは、
    アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分が有する最上位ビットの位置に対して最下位ビットの位置が合うように、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分のビット列の並びを反転した仮想アドレスの第2の部分データと、前記最上位ビットの位置に対して最下位ビットの位置が合うように前記識別子のビット列の並びを反転した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項8記載の制御方法。
  13. 前記インデックスアドレスを生成するステップは、
    アドレス変換対象の前記仮想アドレスの第1の部分と、前記仮想アドレスの第1の部分とは異なる前記仮想アドレスの第2の部分と、前記識別子の第1の部分と前記識別子の第2の部分を排他的論理和演算した識別子データとを排他的論理和演算することにより、インデックスアドレスを生成することを特徴とする請求項8記載の制御方法。
  14. 前記識別子データは、
    前記識別子の第1の部分のビット列の並びを反転した中間データと、前記識別子の第1の部分とは異なる前記識別子の第2の部分とを、前記中間データの最上位ビットの位置に対して前記識別子の第2の部分の最上位ビットの位置が合うように、排的論理和演算を行うことにより生成されることを特徴とする請求項13記載の制御方法。
JP2004221216A 2004-07-29 2004-07-29 演算処理装置およびその制御方法 Expired - Fee Related JP4064380B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004221216A JP4064380B2 (ja) 2004-07-29 2004-07-29 演算処理装置およびその制御方法
US10/986,136 US7587574B2 (en) 2004-07-29 2004-11-12 Address translation information storing apparatus and address translation information storing method
EP04257429A EP1622035A3 (en) 2004-07-29 2004-11-30 Address translation information storing apparatus and address translation information storing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004221216A JP4064380B2 (ja) 2004-07-29 2004-07-29 演算処理装置およびその制御方法

Publications (2)

Publication Number Publication Date
JP2006040091A JP2006040091A (ja) 2006-02-09
JP4064380B2 true JP4064380B2 (ja) 2008-03-19

Family

ID=34930861

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004221216A Expired - Fee Related JP4064380B2 (ja) 2004-07-29 2004-07-29 演算処理装置およびその制御方法

Country Status (3)

Country Link
US (1) US7587574B2 (ja)
EP (1) EP1622035A3 (ja)
JP (1) JP4064380B2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4362096B2 (ja) * 2004-09-30 2009-11-11 富士通株式会社 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体
US7853825B2 (en) * 2005-08-16 2010-12-14 Hewlett-Packard Development Company, L.P. Methods and apparatus for recovering from fatal errors in a system
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
US7779220B1 (en) * 2007-03-15 2010-08-17 Quantum Corporation Password-based media cartridge authentication
WO2008155846A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited メモリ装置および情報処理装置
US20090315906A1 (en) * 2008-06-18 2009-12-24 Microsoft Corporation Cache arrangement for graphical applications
US8429378B2 (en) * 2010-07-06 2013-04-23 Qualcomm Incorporated System and method to manage a translation lookaside buffer
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
JP5152297B2 (ja) 2010-10-28 2013-02-27 株式会社デンソー 電子装置
KR101820843B1 (ko) 2011-02-18 2018-01-22 삼성전자주식회사 확산방지막을 구비한 엑스선 검출기
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
CN108108188B (zh) 2011-03-25 2022-06-28 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US10275251B2 (en) 2012-10-31 2019-04-30 International Business Machines Corporation Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
US9286068B2 (en) 2012-10-31 2016-03-15 International Business Machines Corporation Efficient usage of a multi-level register file utilizing a register file bypass
US20140122842A1 (en) * 2012-10-31 2014-05-01 International Business Machines Corporation Efficient usage of a register file mapper mapping structure
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
US4761733A (en) * 1985-03-11 1988-08-02 Celerity Computing Direct-execution microprogrammable microprocessor system
JP2668438B2 (ja) * 1989-04-21 1997-10-27 三菱電機株式会社 データ検索装置
JPH0320847A (ja) 1989-06-19 1991-01-29 Fujitsu Ltd キャッシュメモリ制御方式
JPH0581132A (ja) 1991-09-19 1993-04-02 Nec Ibaraki Ltd アドレス変換バツフアのアクセス回路
US5630087A (en) * 1994-11-02 1997-05-13 Sun Microsystems, Inc. Apparatus and method for efficient sharing of virtual memory translations
US5754818A (en) * 1996-03-22 1998-05-19 Sun Microsystems, Inc. Architecture and method for sharing TLB entries through process IDS
JPH1049545A (ja) 1996-08-06 1998-02-20 Fujitsu Ltd 連想記憶装置
US6233668B1 (en) * 1999-10-27 2001-05-15 Compaq Computer Corporation Concurrent page tables
US20020087824A1 (en) * 2000-12-29 2002-07-04 Hum Herbert H.J. System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
GB2395307A (en) 2002-11-15 2004-05-19 Quadrics Ltd Virtual to physical memory mapping in network interfaces
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data

Also Published As

Publication number Publication date
US20060026381A1 (en) 2006-02-02
JP2006040091A (ja) 2006-02-09
EP1622035A3 (en) 2007-09-12
EP1622035A2 (en) 2006-02-01
US7587574B2 (en) 2009-09-08

Similar Documents

Publication Publication Date Title
JP4064380B2 (ja) 演算処理装置およびその制御方法
JP3640978B2 (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
JP4268332B2 (ja) 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置
JP3577575B2 (ja) アドレス変換を行う装置及び方法
US5526504A (en) Variable page size translation lookaside buffer
US10191853B2 (en) Apparatus and method for maintaining address translation data within an address translation cache
JP2009512944A (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
US11775445B2 (en) Translation support for a virtual cache
JPH04320553A (ja) アドレス変換機構
US11334499B2 (en) Method for locating metadata
US10810134B2 (en) Sharing virtual and real translations in a virtual cache
JP2020523678A (ja) 論理ディレクトリを使用したキャッシュ構造
KR100895715B1 (ko) 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법
US6810473B2 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
US6990551B2 (en) System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
TWI489279B (zh) 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法
US20030110198A1 (en) Three input variable subfield comparation for fast matching
EP0486154B1 (en) Method of operating a virtual memory system
US20140006747A1 (en) Systems and methods for processing instructions when utilizing an extended translation look-aside buffer having a hybrid memory structure
JPH05216767A (ja) エントリ置き換え制御方式
JPH10105458A (ja) キャッシュメモリシステム
JPH04361341A (ja) Alb読み出し制御方式
JPH0235543A (ja) ページテーブルエントリ無効化装置
JPH0679294B2 (ja) アドレス変換方法
JPH0337217B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070724

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071009

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071210

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071226

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees