JP2006040091A - アドレス変換情報記憶装置およびアドレス変換情報記憶方法 - Google Patents

アドレス変換情報記憶装置およびアドレス変換情報記憶方法 Download PDF

Info

Publication number
JP2006040091A
JP2006040091A JP2004221216A JP2004221216A JP2006040091A JP 2006040091 A JP2006040091 A JP 2006040091A JP 2004221216 A JP2004221216 A JP 2004221216A JP 2004221216 A JP2004221216 A JP 2004221216A JP 2006040091 A JP2006040091 A JP 2006040091A
Authority
JP
Japan
Prior art keywords
address
information
bit
tlb
virtual address
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
JP2004221216A
Other languages
English (en)
Other versions
JP4064380B2 (ja
Inventor
Masanori Doi
正典 土居
Iwao Yamazaki
巌 山崎
Tsutomu Honkurumada
強 本車田
Masahiro Doteguchi
正裕 土手口
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
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/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)

Abstract

【課題】スラッシング現象の発生を効率的に防止すること。
【解決手段】仮想アドレス10に係るコンテキストの情報を、コンテキストレジスタ11の0ビット目から8ビット目までのビット列から取得し、取得されたコンテキストの情報と、仮想アドレス10の22ビット目から30ビット目までのビット列の情報とに基づいて、仮想アドレス10と実アドレスとの間のアドレス変換に係る情報を記憶する記憶位置を示すTLBインデックスアドレスの値をハッシュ回路13を用いて決定する。
【選択図】 図1


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に係るアドレス変換情報記憶処理について説明する。図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 (10)

  1. 仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶装置であって、
    前記仮想アドレスに係るコンテキストの情報を取得する取得手段と、
    前記取得手段により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定手段と、
    を備えたことを特徴とするアドレス変換情報記憶装置。
  2. 前記決定手段は、前記取得手段により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする請求項1に記載のアドレス変換情報記憶装置。
  3. 前記決定手段は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする請求項2に記載のアドレス変換情報記憶装置。
  4. 前記決定手段は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする請求項3に記載のアドレス変換情報記憶装置。
  5. 前記決定手段は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする請求項3に記載のアドレス変換情報記憶装置。
  6. 前記決定手段は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする請求項3に記載のアドレス変換情報記憶装置。
  7. 前記決定手段は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする請求項6に記載のアドレス変換情報記憶装置。
  8. 前記決定手段は、前記アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、該アドレス変換に係る情報が共有される情報である場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする請求項1〜7のいずれか1つに記載のアドレス変換情報記憶装置。
  9. 前記決定手段は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする請求項8に記載のアドレス変換情報記憶装置。
  10. 仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶方法であって、
    前記仮想アドレスに係るコンテキストの情報を取得する取得工程と、
    前記取得工程により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定工程と、
    を含んだことを特徴とするアドレス変換情報記憶方法。
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 true JP2006040091A (ja) 2006-02-09
JP4064380B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155846A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited メモリ装置および情報処理装置

Families Citing this family (39)

* 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
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US7779220B1 (en) * 2007-03-15 2010-08-17 Quantum Corporation Password-based media cartridge authentication
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
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. 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 삼성전자주식회사 확산방지막을 구비한 엑스선 검출기
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
EP2710480B1 (en) 2011-05-20 2018-06-20 Intel Corporation An interconnect structure to support the execution of instruction sequences by a plurality of engines
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
IN2014CN03678A (ja) 2011-11-22 2015-09-25 Soft Machines Inc
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
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
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
US20140122842A1 (en) * 2012-10-31 2014-05-01 International Business Machines Corporation Efficient usage of a register file mapper mapping structure
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
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
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
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
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
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
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
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155846A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited メモリ装置および情報処理装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4064380B2 (ja) 演算処理装置およびその制御方法
JP3640978B2 (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
JP4268332B2 (ja) 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置
JP3740195B2 (ja) データ処理装置
JP3577575B2 (ja) アドレス変換を行う装置及び方法
US6493812B1 (en) Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
US20070050594A1 (en) TLB lock indicator
JP3666689B2 (ja) 仮想アドレス変換方法
JP2009512944A (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
JPH08212136A (ja) 仮想メモリ変換処理を効率的に共有する方法及び装置
JP2007048296A (ja) 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム
JP2020523678A (ja) 論理ディレクトリを使用したキャッシュ構造
KR100895715B1 (ko) 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법
US11334499B2 (en) Method for locating metadata
US6810473B2 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
JPH05216766A (ja) データ・キャッシュとセグメント記述子の間のキャッシュの可干渉性を維持する方法およびコンピュータのメモリ装置
TWI489279B (zh) 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法
US20030110198A1 (en) Three input variable subfield comparation for fast matching
EP0486154B1 (en) Method of operating a virtual memory system
JP2007280421A (ja) データ処理装置
US6327646B1 (en) Translation look-aside buffer utilizing high-order bits for fast access
JP4116346B2 (ja) 演算処理装置及びそのアドレス変換方法
JPS623354A (ja) キヤツシユメモリ・アクセス方式
JPH05216767A (ja) エントリ置き換え制御方式
JP2005108262A (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