JP2023072396A - メモリ管理ユニット、メモリ管理方法、及び、情報処理装置 - Google Patents

メモリ管理ユニット、メモリ管理方法、及び、情報処理装置 Download PDF

Info

Publication number
JP2023072396A
JP2023072396A JP2021184935A JP2021184935A JP2023072396A JP 2023072396 A JP2023072396 A JP 2023072396A JP 2021184935 A JP2021184935 A JP 2021184935A JP 2021184935 A JP2021184935 A JP 2021184935A JP 2023072396 A JP2023072396 A JP 2023072396A
Authority
JP
Japan
Prior art keywords
entry
virtual address
hit
tlb
entries
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.)
Pending
Application number
JP2021184935A
Other languages
English (en)
Inventor
新哉 平本
Shinya Hiramoto
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 JP2021184935A priority Critical patent/JP2023072396A/ja
Priority to US17/878,091 priority patent/US11853597B2/en
Publication of JP2023072396A publication Critical patent/JP2023072396A/ja
Pending 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/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】メモリ管理ユニットの物量の増加を抑制する。【解決手段】メモリ管理ユニットは、仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定される第1記憶部と、第1ビット範囲と1以上の第1エントリとを対応付ける第2エントリが設定される第2記憶部と、第1及び第2記憶部に基づき仮想アドレスを物理アドレスに変換する制御部とを備える。制御部は、第2記憶部の探索により第1仮想アドレスの第1ビット範囲と一致する第2エントリがヒットした場合、当該第2エントリに対応する1以上の第1エントリから第1仮想アドレスにより特定される第1エントリの番号を当該第2エントリに設定し、第2仮想アドレスによる探索で同じ第2エントリがヒットし、且つ、第2仮想アドレスにより特定される第1エントリの番号が第2エントリに設定した番号よりも大きい場合、次の1以上の第1エントリの情報をメモリから取得する。【選択図】図16

Description

本発明は、メモリ管理ユニット、メモリ管理方法、及び、情報処理装置に関する。
コンピュータのOS上で動作するプロセスは、独立した仮想アドレス空間を有し、メインメモリへのアクセスに仮想アドレスを用いる。コンピュータのプロセッサは、仮想アドレスをメインメモリの物理アドレスに変換するMMU(Memory Management Unit:メモリ管理ユニット)と、プロセスを実行し、MMUにより変換された物理アドレスを用いてメインメモリにアクセスするプロセッサコアとを備える。
また、メインメモリへのアクセスを行なうIO(Input / Output)装置、例えばネットワークインターフェースは、入力されるパケットの宛先となる仮想アドレスを物理アドレスに変換するIOMMUを備える。IOMMUの構成及び動作は、プロセッサのMMUと同様である。以下、プロセッサのMMUとIO装置のIOMMUとを区別しない場合には、これらを総称して、単に「MMU」と表記する。
MMUは、仮想アドレスから物理アドレスへの変換を高速に行なうために、仮想アドレスと物理アドレスとの対応関係を示す情報が格納される記憶領域、例えばTLB(Translation Lookaside Buffer)を有する。TLBには、メインメモリから取得した変換テーブルに基づき、仮想アドレスに対応する物理アドレスが設定される。
MMUは、プロセス等の変換要求元から取得した仮想アドレスに対応するエントリがTLBに存在する場合(TLBヒット)、TLBから物理アドレスを読み出して変換要求元に応答することで、メインメモリへのアクセスをスキップする。
一方、仮想アドレスに対応するエントリがTLBに存在しない場合(TLBミス)、MMUは、メインメモリから対応関係を示す情報を取得(フェッチ)し、対応関係をプロセッサコアに応答するとともに、TLBに格納する。
また、TLBミスの場合のメインメモリへのアクセスによる変換処理時間の増加を抑制するための手法として、TLBプリフェッチ手法が知られている。TLBプリフェッチ手法では、MMUは、プロセスが次にアクセスする仮想アドレスを予測し、当該仮想アドレスの対応関係を示す情報を予めメインメモリからフェッチし、TLBに格納する。
プロセスがアクセスする仮想アドレスを予測する手法としては、ストア(Store)/ロード(Load)命令のPC(Program Counter)に対応するエントリを含むRPT(Reference Prediction Table)を利用する手法が知られている。
当該手法では、MMUは、プロセスによりストア/ロード命令が実行される都度、当該命令のアクセス対象の仮想アドレス、当該仮想アドレスと同一命令の前回実行時のアクセス対象の仮想アドレスとの差分(ストライド)等をRPTに保存する。
MMUは、TLBミスが発生すると、そのときのストア/ロード命令のPC及び仮想アドレスに対応するエントリにおけるストライドを当該仮想アドレスに加算して得た仮想アドレスを、次にアクセスされる仮想アドレスと予測する。
G. B. Kandiraju and A. Sivasubramaniam, "Going the distance for TLB prefetching: an application-driven study," Proceedings 29th Annual International Symposium on Computer Architecture, 2002, pp. 195-206, doi: 10.1109/ISCA.2002.1003578 T. Chen and J. Baer. Effective hardware based data prefetching for high-performance processors. IEEE Transactions on Computers, 44(5):609-623, May 1995
RPTは、数百(例えば“512”)程度のエントリを有し、各エントリにはPC及びアドレスのビット(bit)幅が合計で数十~百ビット程度確保される。
また、プロセッサが複数のプロセスを実行する場合、MMUは、ロード/ストア命令のPCを特定する際に、プロセスID(Identifier)等の情報を用いる。この場合、RPTは、プロセス数分のエントリを有し、各エントリにはプロセスID等の情報分のビットが追加される。
このように、メモリ管理ユニットによる変換処理時間の増加を抑制するために、変換テーブルの情報をプリフェッチする手法では、RPT等のテーブルをTLBとは別に設けることになり、メモリ管理ユニットの回路量(物量)が増加することになる。これにより、メモリ管理ユニットの製造コスト及び回路規模の増大、消費電力の増加等が引き起こされる可能性がある。
1つの側面では、本発明は、メモリ管理ユニットの物量の増加を抑制することを目的の1つとする。
1つの側面では、メモリ管理ユニットは、第1記憶部と、第2記憶部と、制御部とを備えてよい。前記第1記憶部は、仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定されてよい。前記第2記憶部は、前記仮想アドレスの前記第1ビット範囲と前記1以上の第1エントリとを対応付ける第2エントリが設定されてよい。前記制御部は、前記仮想アドレスを含む変換要求に応じて、前記第1記憶部及び前記第2記憶部に基づき前記仮想アドレスを前記物理アドレスに変換する変換処理を実行してよい。また、前記制御部は、第1仮想アドレスを含む第1変換要求に応じた第1変換処理において、前記第2記憶部の探索により前記第1仮想アドレスの前記第1ビット範囲と一致する第2エントリがヒットした場合、ヒットした前記第2エントリに対応する1以上の第1エントリのうちの、前記第1仮想アドレスに基づき特定される1つの第1エントリの識別番号を、前記ヒットした第2エントリに設定してよい。さらに、前記制御部は、第2仮想アドレスを含む第2変換要求に応じた第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号よりも大きい場合、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリの情報をメモリから取得してよい。
1つの側面では、本発明は、メモリ管理ユニットの物量の増加を抑制することができる。
MMUにおけるアドレス変換処理(TLBヒットの場合)の一例を示す図である。 TLBを説明するための図である。 MMUにおけるアドレス変換処理(TLBミスの場合)の一例を示す図である。 図3に示す変換テーブル取得後の処理の一例を示す図である。 タグエントリとTLBエントリとの関係の一例を示す図である。 仮想アドレスの構成例を示す図である。 RPTを有するMMUにおけるアドレス変換処理の一例を示す図である。 RPTエントリのアドレス情報の一例を示す図である。 一実施形態に係るコンピュータにおけるアドレス変換処理に着目したハードウェア(HW)構成例を示すブロック図である。 一実施形態に係るMMUのHW構成例を示す図である。 タグエントリの一例を示す図である。 タグエントリの状態フィールドの状態遷移の一例を示す図である。 制御部によるアドレス変換処理の動作例を説明するための図である。 制御部によるアドレス変換処理の動作例を説明するための図である。 制御部によるアドレス変換処理の動作例を説明するための図である。 一実施形態に係るMMUによるTLBプリフェッチ処理の動作例を説明するためのフローチャートである。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
〔1-1〕アドレスの変換処理の説明
まず、アドレスの変換処理について説明する。図1は、MMU100におけるアドレス変換処理(TLBヒットの場合)の一例を示す図であり、図2は、TLB130を説明するための図である。図3は、MMU100におけるアドレス変換処理(TLBミスの場合)の一例を示す図であり、図4は、図3に示す変換テーブル取得後の処理の一例を示す図である。
図1に例示するように、MMU100は、制御部110、タグ120、及び、TLB130を備える。
制御部110は、プロセス等の変換要求元から変換要求及び変換情報を取得する。変換情報は、変換対象の仮想アドレス及び各変換要求元に割り当てられたアドレス空間ID等を含む。
タグ120は、変換情報とTLB130とを紐付けた情報を格納する記憶領域であり、各エントリ(タグエントリ)121には変換情報が設定される。
タグエントリ121を示す番号(エントリ番号;タグ番号)は、TLB130のエントリ(TLBエントリ)131を示す番号(TLB番号)に対応する。例えば、タグ番号はTLB番号と一致してよい。
TLB130は、仮想アドレス空間140及び物理アドレス空間150(図2参照)の間の対応関係を示す情報を格納する記憶領域であり、各TLBエントリ131には物理アドレスが設定される。1つのTLBエントリ131は1ページに対応する。
「ページ」は、仮想アドレスと物理アドレスとの間の変換処理の最小単位(一定単位)のサイズである。例えば、アドレスのビット幅が64ビット、ページサイズが4KBである場合、1つのTLBエントリ131には上位52ビットの仮想アドレスと物理アドレスとの対応関係が設定される。なお、仮想アドレスの下位12ビットはそのまま物理アドレスの下位12ビットになる。
制御部110は、タグ120を検索し、変換要求元から取得した変換情報(例えば仮想アドレス及びアドレス空間ID)に一致するエントリ121が存在するか否かを判定する。変換情報に一致するエントリ121がタグ120に存在する場合(TLBヒット)、制御部110は、TLB130から、当該エントリ121に対応するTLBエントリ131の内容を読み出す。これにより、制御部110は、仮想アドレスを物理アドレスに変換する。
変換情報に一致するエントリ121がタグ120に存在しない場合(TLBミス)、図3に例示するように、制御部110は、メインメモリ(図示省略)から仮想アドレスと物理アドレスとの対応関係を示す変換テーブルをフェッチする。
制御部110は、メインメモリから変換テーブルを取得すると、図4に例示するように、変換テーブルの情報に基づき仮想アドレスを物理アドレスに変換し、変換結果の物理アドレスを変換要求元に出力する。また、制御部110は、変換情報をタグエントリ121に、変換テーブルが示す物理アドレスをTLBエントリ131に、それぞれ登録する。
これにより、次回以降の変換要求において同一の仮想アドレスの変換を行なう場合、制御部110は、当該仮想アドレスに一致するタグエントリ121を検出でき(TLBヒット)、変換処理を高速に実施できる。
しかしながら、TLBミスが発生した初回の変換要求では、上述した通りメインメモリへのアクセスが発生するため(図3参照)、変換処理時間が増加し得る。
ところで、タグエントリ121とTLBエントリ131とは、1対1の関係だけでなく、1対多の関係で紐付けられてもよい。
図5は、タグエントリ121とTLBエントリ131との関係の一例を示す図である。図5には、1つのタグエントリ121と、仮想アドレス空間上で連続する4つのTLBエントリ131とを対応付けた例を示す。図5の例では、タグ120の変換情報には、4ページの仮想アドレス間で共通する上位ビットが格納される。
図6は、仮想アドレスの構成例を示す図である。図6に例示するように、仮想アドレスは、タグ検索用の上位ビット141、タグエントリ番号を示す下位ビット142、及び、ページ内アドレス143の領域を備える。上位ビット141は、仮想アドレスの上位所定数のビット範囲であり、第1ビット範囲の一例である。下位ビット142は、仮想アドレスにおける第1ビット範囲に続く所定数のビット範囲であり、第2ビット範囲の一例である。
例えば、ページサイズが4KBであり、1つ(1ページ)のタグエントリ121が4つ(4ページ)のTLBエントリ131と対応付けられている場合、下位ビット142は2ビット幅となり、ページ内アドレス143は12ビット幅となる。
MMUは、変換要求に含まれる仮想アドレスに基づきタグ120の検索を行なう際に、仮想アドレスのうちの上位ビット141が一致する変換情報を持つタグエントリ121を探索する。一致するタグエントリ121が存在する場合、MMUは、下位ビット142を用いて、当該タグエントリ121に対応付けられた4ページ中の1ページのTLBエントリ131を特定する。
図7は、RPT240を有するMMU200におけるアドレス変換処理の一例を示す図であり、図8は、RPTエントリ241のアドレス情報の一例を示す図である。
図7に例示するように、MMU200は、制御部210、タグ220、TLB230に加えて、RPT240を備え、RPT240を用いて、変換要求元が次にアクセスする仮想アドレスを予測することで、TLBプリフェッチを実行する。
RPT240は、変換要求元によるアクセス先に関する情報を格納する記憶領域であり、各エントリ(RPTエントリ)241にはアドレス情報が設定される。制御部210は、RPT240の更新処理と、アドレスの変換処理とを並行して実行する。
図8に示すように、RPTエントリ241のアドレス情報は、例示的に、「PC(プログラムカウンタ)」、「対象アドレス」、「ストライド」、及び、「状態」の項目を含んでよい。「PC」は、ストア/ロード命令の識別情報の一例であり、例えば、実行されるストア命令又はロード命令が格納されているメインメモリ上のアドレスを示す情報であってよい。「対象アドレス」は、ストア/ロード命令によるメインメモリのアクセス対象の仮想アドレスである。「ストライド」は、「対象アドレス」と、同一のストア/ロード命令の前回の実行時にアクセス対象となった対象アドレスとの差分である。「状態」は、「新規登録」、「差分新規登録」、「差分一致」等のエントリの状態を示す。
図7に示すように、制御部210は、変換要求を受信する際に、変換情報とともに、変換要求元のロード/ストア命令のPCを取得し、取得したPCと変換情報に含まれる仮想アドレスとを用いてRPT240のエントリ241を更新する。例えば、PCが“500”のロード命令が3回実行され、1回目から3回目までのそれぞれの仮想アドレスが“1000”、“1004”、“1008”である場合、制御部210は、以下のエントリ241を更新する。
(1回目)PC:500, 対象アドレス:1000, ストライド:-, 状態:新規登録
(2回目)PC:500, 対象アドレス:1004, ストライド:4, 状態:差分新規登録
(3回目)PC:500, 対象アドレス:1008, ストライド:4, 状態:差分一致
なお、1回目の状態“新規登録”は、PC“500”のエントリの初回の登録を意味し、2回目の状態“差分新規登録”は、PC“500”のストライド“4”(=“1004”-“1000”)の初回の登録を意味する。3回目の状態“差分一致”は、PC“500”のストライド“4”(=“1008”-“1004”)が前回(2回目)のストライドと一致したことを意味する。
制御部210は、RPT240に登録されたPCと一致するストア/ロード命令に係る変換処理においてTLBミスが発生すると、PCに対応するRPTエントリ241のストライドを変換要求に係る仮想アドレスに加算した仮想アドレスを特定する。そして、制御部210は、特定した仮想アドレス、すなわち次にアクセスされる可能性の高い仮想アドレスに対応するTLB230の情報をプリフェッチする。
例えば、ロード命令が対象アドレス“1012”にアクセスする場合、制御部210は、対象アドレス“1016”(=“1012”+“4”)に対応する変換テーブルをメインメモリからプリフェッチし、TLB230に登録する。
RPT240を用いるプリフェッチは、メインメモリのアドレスに係る以下の性質を利用したものである。
・プロセスがループ(Loop)等の繰り返し処理を行なう場合、ロード/ストア命令のPCが同一であれば、各繰り返しは、前回と同じアクセスパターンを辿る可能性が高い。
・メモリアクセスパターンの1つにストライドアクセスと呼ばれるアクセスパターンが存在する。ストライドアクセスは、仮想アドレスが“A”→“A+K”→“A+2K”…のように一定の定数K(Kは整数)ずつ増加するアクセスである。上記例では、A=1000, K=4である。
しかしながら、上述したように、RPT240を用いるプリフェッチ手法では、MMU200は、TLB230とは別にRPT240を備えることになり、回路量(物量)が増加する可能性がある。
そこで、一実施形態では、ハードウェアの物量の増加を抑制しつつ、ストライドアクセスのアクセスパターンに対応するTLBプリフェッチを実現するための手法を説明する。例えば、一実施形態では、MMUは、仮想アドレスとTLBとを紐付けて管理するタグにメモリアクセスパターンの情報を格納し、当該情報に基づきTLBプリフェッチを実行することで、TLBミスの発生頻度を低減させ、変換処理時間の増加を抑制する。
〔1-2〕一実施形態に係るコンピュータのハードウェア構成例
図9は、一実施形態に係るコンピュータ1におけるアドレス変換処理に着目したハードウェア(HW)構成例を示すブロック図である。
図9に示すように、コンピュータ1は、アドレス変換処理に着目したHW構成として、例示的に、プロセッサ2、メインメモリ3、及び、IO装置4を備えてよい。
なお、コンピュータ1は、図9に示す構成に加えて、HDD(Hard Disk drive)又はSSD(Solid State Drive)等の記憶装置、マウス及びキーボード等の入力装置、モニタ等の表示装置等の種々の装置を備えてもよい。
プロセッサ2は、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ2は、コンピュータ1内の各ブロックとバス1aで相互に通信可能に接続されてよい。なお、プロセッサ2は、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
プロセッサ2としては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。なお、プロセッサ2として、これらの集積回路の2以上の組み合わせが用いられてもよい。CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
図9に示すように、プロセッサ2は、プロセッサコア21及びプロセッサMMU22を備えてよい。プロセッサ2は、複数のプロセッサコア21を備えてもよい。
プロセッサコア21は、メインメモリ3に展開されたOSプログラムを実行し、OS上で1以上のプロセスを実行する。プロセスは、独立した仮想アドレス空間を有し、メインメモリ3上の格納先(アドレス)を仮想アドレスにより指定する。プロセッサコア21は、プロセッサMMU22に対して、仮想アドレスをメインメモリ3の物理アドレスに変換する変換要求を通知し、プロセッサMMU22による変換結果である物理アドレスを用いてメインメモリ3にアクセスする。
プロセッサMMU22は、メモリ管理ユニット又はメモリ管理装置の一例であり、プロセッサコア21からの変換要求に応じてアドレス変換処理を実行し、変換結果をプロセッサコア21に応答する。
メインメモリ3は、種々のデータやプログラム等の情報を格納するHWの一例である。メインメモリ3としては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ、及び、PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
IO装置4は、プロセッサ2及びメインメモリ3と通信するネットワークIF(Interface)又は通信IFの装置の一例であり、メインメモリ3へのアクセス、例えば、DMA(Direct Memory Access)を実行可能であってよい。
例えば、IO装置4は、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、FC(Fibre Channel)等の光通信等に準拠したアダプタを有するNIC(Network Interface Card)であってもよい。
図9に示すように、IO装置4は、IOコントローラ41及びIOMMU42を備えてよい。
IOコントローラ41は、メインメモリ3へのアクセスを含む、IO装置4における種々の制御を実行する。例えば、IOコントローラ41は、アダプタ及びネットワークを介して接続された装置(コンピュータ1の外部の装置)から受信するパケットに基づき、メインメモリ3へのアクセスを行なってよい。
パケットは、メインメモリ3上のアクセス先(アドレス)を仮想アドレスにより指定してよい。IOコントローラ41は、IOMMU42に対して、パケットに含まれる仮想アドレスをメインメモリ3の物理アドレスに変換する変換要求を通知し、IOMMU42による変換結果である物理アドレスを用いてメインメモリ3にアクセスする。
IOMMU42は、メモリ管理ユニット又はメモリ管理装置の一例であり、IOコントローラ41からの変換要求に応じてアドレス変換処理を実行し、変換結果をIOコントローラ41に応答する。
プロセッサMMU22及びIOMMU42の構成及び動作は、互いに同様である。以下、プロセッサMMU22及びIOMMU42を区別しない場合には、これらを「MMU5」と表記する。
〔1-3〕一実施形態に係るMMUの説明
図10は、一実施形態に係るMMU5のHW構成例を示す図である。図10に示すように、MMU5は、例示的に、制御部51、タグ52、及び、TLB53を備えてよい。なお、図10に示す各構成及び各情報は、特に言及しない場合、図1、図3、図4又は図7に示す同名の構成又は情報と同様である。
制御部51は、仮想アドレスを含む変換要求に応じて、タグ52及びTLB53に基づき仮想アドレスを物理アドレスに変換する変換処理を実行する。例えば、制御部51は、変換要求元から変換要求及び変換情報を取得し、TLBプリフェッチ処理を含む変換処理を実行する。変換要求元は、例えば、プロセッサコア21により実行されるプロセス、又は、IOコントローラ41が処理するパケット等が挙げられる。
タグ52は、変換情報とTLB53とを紐付けた情報を格納する記憶領域であり、各エントリ(タグエントリ)521には変換情報が設定される。タグ52は、タグエントリ521が設定される第2記憶部の一例である。タグエントリ521は、仮想アドレスの第1ビット範囲と1以上のTLBエントリ531とを対応付ける第2エントリの一例である。
なお、タグ52のタグエントリ521とTLBエントリ531とは、1対1、又は、図5及び図10に例示するように、1対多で対応付けられてよい。
変換情報は、変換対象の仮想アドレス及び各変換要求元(例えば各プロセス等)に割り当てられたアドレス空間IDを含んでよい。アドレス空間IDは、変換要求の発行元に割り当てられるアドレス空間の識別情報の一例である。
TLB53は、仮想アドレス空間及び物理アドレス空間(図2参照)の間の対応関係を示す情報を格納する記憶領域であり、各エントリ(TLBエントリ)531には物理アドレスが設定される。TLB53は、1以上のTLBエントリ531が設定される第1記憶部の一例である。TLBエントリ531は、仮想アドレスの第1ビット範囲と一致する物理アドレスを示す第1エントリの一例である。
ここで、一実施形態に係るMMU5は、TLBプリフェッチを実行するか否かの判定に用いられる情報をタグ52に保持させる。これにより、MMU5(コンピュータ1)は、RPTを省略することができ、HWの回路量の増加を抑制できる。
図11は、タグエントリ521の一例を示す図であり、図12は、タグエントリ521の状態フィールドの状態遷移の一例を示す図である。図11に示すように、タグエントリ521は、例示的に、エントリの“有効”又は“無効”を示すフラグ521a、変換情報521b、前回ヒットしたTLB番号521c、及び、状態521dの項目を含んでよい。
フラグ521aは、タグエントリ521の有効又は無効を示す情報の一例である。例えば、フラグ521aが“1”の場合はタグエントリ521が有効(又は無効)であることを示し、“0”の場合はタグエントリ521が無効(又は有効)であることを示してよい。
変換情報521bは、変換対象の仮想アドレス及び各変換要求元(例えば各プロセス等)に割り当てられたアドレス空間IDを含んでよい。このように、タグエントリ521には、アドレス空間IDを含む変換情報521bが含まれるため、制御部51は、アドレス空間IDごとにタグ52のタグエントリ521を設定するといえる。
TLB番号521cは、前回TLBヒットしたTLB53の番号を示す。例えば、TLB番号521cは、変換要求に含まれる変換情報を用いたタグ52の検索においてヒットしたタグエントリ521に対応するTLB番号であってよい。タグエントリ521を示す番号(エントリ番号;タグ番号)は、TLBエントリ531を示す番号(TLB番号)に対応してよい。例えば、タグ番号はTLB番号と一致してもよい。
1つのタグ番号が複数のTLB番号に対応する場合には、タグ番号は、複数のTLBエントリ531の範囲を示してもよい。タグ番号が複数のTLBエントリ531の範囲を示す場合、TLB番号は、当該範囲内のTLBエントリ531のインデックスであってもよく、一例として、仮想アドレスの下位ビット142(図6参照)が示す値であってもよい。換言すれば、TLB番号521cは、ヒットしたタグエントリ521に対応する1以上のTLBエントリ531のうちの、仮想アドレスに基づき特定される1つのTLBエントリ531の識別番号の一例である。
状態521dは、タグエントリ521の状態を示す。例えば、状態521dは、図12に示すように、「新規」、「プリフェッチ未実施」、及び、「プリフェッチ実施済」のステートを有してよい。「新規」は、タグエントリ521を新規登録したときの初期状態である。「プリフェッチ未実施」は、タグエントリ521に基づくTLBプリフェッチが未実施の状態を示す。「プリフェッチ実施済」は、タグエントリ521に基づくTLBプリフェッチが実施済みの状態を示す。
制御部51は、TLBプリフェッチ処理において、ヒットしたTLB番号をタグエントリ521の前回ヒットしたTLB番号521cに設定する。そして、制御部51は、変換処理において今回ヒットしたTLB番号がタグエントリ521中の前回ヒットしたTLB番号521cよりも“1”以上増加している場合に、次のTLB53の情報をプリフェッチする。
一例として、タグエントリ521とTLBエントリ531とが1対n(nは2以上の整数)で対応する場合において、制御部51は、nの値に応じた数のTLBエントリ531をプリフェッチしてよい。
なお、制御部51は、今回ヒットしたTLB番号がタグエントリ521の前回ヒットしたTLB番号521cと連続していない場合であっても、TLB番号の値が前回よりも増加していれば、次のTLB53の情報をプリフェッチしてよい。
例えば、ストライドアクセスが発生している場合、次回以降の変換要求では、今回ヒットしたTLB番号よりも大きいTLB番号に対応する仮想アドレスの変換が要求される可能性が高い。また、上述したように、ストライドアクセスでは、アクセス対象のアドレスが連続しない(所定サイズ置きのアクセスとなる)可能性がある。
そこで、制御部51は、今回ヒットしたTLB番号が前回ヒットしたTLB番号521cよりも大きいことを、ストライドアクセスの発生の検出条件の1つとするのである。制御部51は、ストライドアクセスの発生を検出すると、例えば、次のn個のTLBエントリ531をプリフェッチする。これにより、制御部51は、RPTよりも簡素な構成によって、MMU5による変換処理時間の増加を抑制できる。
次に、図13~図15を参照して、制御部51によるアドレス変換処理の一例を説明する。図13~図15は、制御部51によるアドレス変換処理の動作例を説明するための図である。なお、図13~図15の説明では、タグエントリ521とTLBエントリ531とが1対4(n=4)で対応する場合を例に挙げる。
なお、制御部51は、変換要求元から仮想アドレス及び変換情報を含む変換要求を取得し、仮想アドレス及び変換情報に基づき、タグ52を探索する。例えば、制御部51は、仮想アドレスの上位ビット及びアドレス空間IDに一致するタグエントリ521がタグ52に存在するか否か(TLBヒットか否か)を判定する。
図13に例示するように、変換要求に応じた変換処理でTLBミスが発生した場合(矢印A1参照)、制御部51は、メインメモリ3から変換テーブルをフェッチする(矢印A2参照)。制御部51は、変換テーブルに基づく物理アドレス(例えば物理アドレスA)を変換要求元に応答する(矢印A3参照)。
また、制御部51は、変換テーブルに基づき、タグ52及びTLB53にそれぞれタグエントリ521及びTLBエントリ531を登録する(矢印A4及びA5参照)。なお、矢印A3の処理と、矢印A4及びA5の処理とは、いずれの処理が先に実行されてもよいし、少なくとも一部が並行して実行されてもよい。
図13の例では、登録されるタグエントリ521として、変換情報521bには、4ページの仮想アドレス間で共通する上位ビットが格納される。4ページの仮想アドレスは、それぞれ物理アドレスA~Dに対応する。TLB番号521cには、新規登録であるため値が設定されない。状態521dには、「新規」が設定される。このように、図13の例では、制御部51は、TLBエントリ531の物理アドレスA~Dに対応するタグエントリ521を登録する。
次に、図14を参照して、図13に続く変換要求に応じた変換処理でTLBヒットとなった場合の変換処理の一例を説明する。図14に示す変換処理は、第1仮想アドレスを含む第1変換要求に応じた第1変換処理の一例である。図14では、変換処理において、タグ52の探索により第1仮想アドレスの上位ビット141(図6参照)(及びアドレス空間ID)と一致するタグエントリ521がヒットした場合の処理について説明する。
図14に例示するように、図13に続く変換要求に応じた変換処理でTLBヒットとなった場合(矢印B1参照)、制御部51は、変換情報521bが示すTLBエントリ531を参照する(矢印B2参照)。制御部51は、TLBエントリ531から取得したエントリ内容の物理アドレス(例えば物理アドレスB)(矢印B3参照)を変換要求元に応答する(矢印B4参照)。
また、制御部51は、タグエントリ521を更新する(矢印B5参照)。例えば、制御部51は、タグエントリ521の状態521dを「プリフェッチ未実施」(図14では「未実施」と表記)に更新し、矢印B3で取得したTLBエントリ531を示すTLB番号“1”をTLB番号521cに設定する。なお、矢印B4の処理と、矢印B5の処理とは、いずれの処理が先に実行されてもよいし、少なくとも一部が並行して実行されてもよい。
このように、制御部51は、ヒットしたタグエントリ521に対応する1以上のTLBエントリ531のうちの、第1仮想アドレスに基づき特定される1つのTLBエントリ531の識別番号を、ヒットしたタグエントリ521に設定する。
次に、図15を参照して、図14に続く変換要求に応じた変換処理でTLBヒットとなった場合の変換処理の一例を説明する。図15に示す変換処理は、第2仮想アドレスを含む第2変換要求に応じた第2変換処理の一例である。図15では、変換処理において、タグ52の探索により第2仮想アドレスの上位ビット141(図6参照)(及びアドレス空間ID)と一致するタグエントリ521であって、図14の変換処理と同じタグエントリ521がヒットした場合の処理について説明する。
図15に例示するように、図14に続く変換要求に応じた変換処理でTLBヒットとなった場合(矢印C1参照)、制御部51は、変換情報521bが示すTLBエントリ531を参照する(矢印C2参照)。制御部51は、TLBエントリ531から取得したエントリ内容の物理アドレス(例えば物理アドレスD)(矢印C3参照)を変換要求元に応答する(矢印C4参照)。
また、制御部51は、TLBヒットしたときのタグエントリ521の状態がプリフェッチの実施条件を満たす場合、プリフェッチを実施する。プリフェッチの実施条件は、例えば、以下の(i)及び(ii)の双方を満たすことであってよい。
(i)タグエントリ521の状態521dが「プリフェッチ未実施」を示すこと。
(ii)矢印C3で取得したTLBエントリ531を示すTLB番号が、タグエントリ521の前回ヒットしたTLB番号521cよりも大きいこと、換言すれば、TLBヒットしたTLBエントリ番号が増加していること。
制御部51は、タグエントリ521の状態がプリフェッチの実施条件を満たす場合、次のTLB53の情報をプリフェッチする(矢印C5参照)。次のTLB53の情報とは、例えば、今回TLBヒットしたTLBエントリ531に続くTLBエントリ531であって、未取得の1以上(例えばn個)の連続したTLBエントリ531であってよい。
例えば、制御部51は、下記式(1)に基づき、次のTLB53の情報に対応する仮想アドレスを算出し、当該仮想アドレスに対応する変換テーブルをメインメモリ3からプリフェッチしてよい。
[プリフェッチ対象の仮想アドレス]
= [変換対象の仮想アドレス]
+ [ページサイズ] x [タグに対応するTLBエントリ数] (1)
一例として、ページサイズが“4”KBであり、タグ52に対応するTLBエントリ数(n)が“4”である場合において、“0x1_0000”の仮想アドレスの変換処理でTLBヒットし、プリフェッチが行なわれる場合を想定する。この場合、制御部51は、“0x1_0000 + 0x10000 x 4” = “0x1_4000”の仮想アドレスに対応する、n個のTLBエントリ531を示す変換テーブルをプリフェッチしてよい。
図15の例では、制御部51は、物理アドレスDに続く4つの物理アドレスE~Hに対応するTLBエントリ531をプリフェッチしてよい。
なお、制御部51は、プリフェッチを行なう際に、TLBヒットしたタグエントリ521の状態521dを「プリフェッチ実施済」(図15では「実施済」と表記)に更新する。
このように、制御部51は、第2仮想アドレスに基づき特定される1つのTLBエントリ531のTLB番号がタグエントリ521に設定したTLB番号521cよりも大きい場合、プリフェッチを実行してよい。例えば、制御部51は、ヒットしたタグエントリ521に対応付けられた1以上のTLBエントリ531に続く1以上のTLBエントリ531の情報をメインメモリ3から取得してよい。
制御部51は、プリフェッチを行なうと、TLBミスが発生した際にフェッチを行なうときと同様に、変換テーブルに基づきタグ52及びTLB53を更新する(矢印C6及びC7参照)。
例えば、制御部51は、図15に示すように、物理アドレスE~Hに対応する4ページの仮想アドレス間で共通する上位ビットを変換情報521bに含むタグエントリ521を登録する。当該タグエントリ521は、TLB番号521cに値が設定されず、状態521dに「新規」が設定される。当該タグエントリ521は、TLB53に追加される4つのTLBエントリ531と対応付けられる。また、制御部51は、物理アドレスE~Hに対応する4つのTLBエントリ531をTLB53に登録する。なお、矢印C4の処理と、矢印C5~C7の処理とは、いずれの処理が先に実行されてもよいし、少なくとも一部が並行して実行されてもよい。
なお、矢印C3で取得したTLBエントリ531を示すTLB番号が、タグエントリ521の前回ヒットしたTLB番号521c以下である場合、制御部51は、プリフェッチの実行を抑制してよい。この場合、制御部51は、矢印C3で取得したTLBエントリ531を示すTLB番号を、タグエントリ521の前回ヒットしたTLB番号521cに設定(更新)してよい。
以上のように、一実施形態に係るMMU5によれば、TLBプリフェッチを実行するか否かの判定に用いられる情報をタグ52に格納することで、RPT等のHWを省略した上で、ストライドアクセスに対応するプリフェッチを実現できる。
また、一実施形態に係るタグ52に追加されるTLB番号521c及び状態521dは、数ビット程度のデータサイズである。従って、一実施形態に係る手法によれば、1エントリあたり数十~百ビット程度のデータサイズであるRPTを追加する場合と比較して、HWの物量の増加を抑制することができる。
さらに、一実施形態に係るタグ52には、変換情報521bとして、変換要求元の一例であるプロセスを特定するID(アドレス空間ID)が含まれる。これにより、MMU5は、複数の変換要求元、例えば複数のプロセス、又は、複数の送信元から送信された複数のパケットから、互いに異なるアドレス空間を対象とした変換要求を受信した場合にも、アドレス空間IDごとに適切な変換処理を実行できる。
〔1-4〕動作例
次に、上述した一実施形態に係るコンピュータ1(MMU5)の動作例を説明する。図16は、一実施形態に係るMMU5によるTLBプリフェッチ処理の動作例を説明するためのフローチャートである。
なお、図16では、MMU5におけるアドレス変換処理のうちのTLBプリフェッチ処理に着目し、TLBヒット有無に応じたタグ52及びTLB53の更新処理、並びに、プリフェッチの実行可否の判定処理の動作例を示す。MMU5は、図16に例示するTLBプリフェッチ処理に限らず、変換要求に応じたアドレスの変換結果の出力処理(図13~図15参照)等の、MMU5における種々の処理を実行してよい。
図16に例示するように、制御部51は、取得した変換要求に含まれる変換情報によるタグ52の検索で、TLBヒットが発生したか否かを判定する(ステップS1)。
TLBヒットが発生していない、換言すればTLBミスが発生した場合(ステップS1でNO)、制御部51は、ミスしたTLB53の情報をメインメモリ3からフェッチする(ステップS2)。制御部51は、メインメモリ3からフェッチ(取得)した変換テーブルに基づき、タグ52及びTLB53にエントリを登録し(ステップS3)、TLBプリフェッチ処理が終了する。例えば、制御部51は、ステップS3において、変換テーブルに基づき、状態521dが「新規」のタグエントリ521をタグ52に登録し、タグエントリ521に対応する1以上の(n個の)TLBエントリ531をTLB53に登録する。
TLBヒットが発生した場合(ステップS1でYES)、制御部51は、ヒットしたタグエントリ521の状態521dがプリフェッチ「未実施」か否かを判定する(ステップS4)。
状態521dがプリフェッチ「未実施」ではない場合(ステップS4でNO)、制御部51は、状態521dが「新規」か否かを判定する(ステップS5)。状態521dが「新規」ではない、換言すればプリフェッチ「実施済」である場合(ステップS5でNO)、TLBプリフェッチ処理が終了する。
状態521dが「新規」である場合(ステップS5でYES)、今回のTLBヒットは、タグエントリ521が登録されてから1回目のTLBヒットである。この場合、制御部51は、状態521dをプリフェッチ「未実施」に更新し(ステップS6)、タグエントリ521の前回ヒットしたTLB番号521cを今回ヒットしたTLB番号に更新し(ステップS7)、TLBプリフェッチ処理が終了する。
ステップS4において、状態521dがプリフェッチ「未実施」である場合(ステップS4でYES)、制御部51は、今回ヒットしたTLB番号がタグエントリ521の前回ヒットしたTLB番号521cよりも大きいか否かを判定する(ステップS8)。
今回ヒットしたTLB番号がタグエントリ521の前回ヒットしたTLB番号521c以下である場合(ステップS8でNO)、処理がステップS7に移行する。
今回ヒットしたTLB番号がタグエントリ521の前回ヒットしたTLB番号521cよりも大きい場合(ステップS8でYES)、制御部51は、次のTLB53の情報をメインメモリ3からプリフェッチする。また、制御部51は、タグエントリ521の状態521dをプリフェッチ「実施済」に更新し(ステップS9)、TLBプリフェッチ処理が終了する。なお、制御部51は、プリフェッチにより変換テーブルを取得すると、ステップS3と同様に、変換テーブルに基づき、タグ52及びTLB53にそれぞれタグエントリ521及びTLBエントリ531を登録する。
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、一実施形態では、n=“4”として、1つのタグエントリ521が4つのTLBエントリ531に対応するものとしたが、これに限定されるものではなく、nは“4”以外の値であってもよい。
〔3〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定される第1記憶部と、
前記仮想アドレスの前記第1ビット範囲と前記1以上の第1エントリとを対応付ける第2エントリが設定される第2記憶部と、
前記仮想アドレスを含む変換要求に応じて、前記第1記憶部及び前記第2記憶部に基づき前記仮想アドレスを前記物理アドレスに変換する変換処理を実行する制御部とを備え、
前記制御部は、
第1仮想アドレスを含む第1変換要求に応じた第1変換処理において、前記第2記憶部の探索により前記第1仮想アドレスの前記第1ビット範囲と一致する第2エントリがヒットした場合、ヒットした前記第2エントリに対応する1以上の第1エントリのうちの、前記第1仮想アドレスに基づき特定される1つの第1エントリの識別番号を、前記ヒットした第2エントリに設定し、
第2仮想アドレスを含む第2変換要求に応じた第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号よりも大きい場合、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリの情報をメモリから取得する、
メモリ管理ユニット。
(付記2)
前記制御部は、前記メモリから取得した前記情報に基づき、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリを前記第1記憶部に設定し、前記設定した1以上の第1エントリに対応付けた第2エントリを前記第2記憶部に設定する、
付記1に記載のメモリ管理ユニット。
(付記3)
前記制御部は、前記第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号以下である場合、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号を前記第2エントリに設定する、
付記1又は付記2に記載のメモリ管理ユニット。
(付記4)
前記変換要求は、前記仮想アドレスと、前記変換要求の発行元に割り当てられるアドレス空間の識別情報とを含み、
前記制御部は、
前記識別情報ごとに前記第2記憶部の前記第2エントリを設定し、
前記変換処理において、前記変換要求に含まれる識別情報と、前記仮想アドレスとに基づき、前記第2記憶部を探索する、
付記1~付記3のいずれか1項に記載のメモリ管理ユニット。
(付記5)
前記第1ビット範囲は、前記仮想アドレスの上位所定数のビット範囲であり、
前記識別番号は、前記仮想アドレスにおける前記第1ビット範囲に続く所定数のビット範囲が示す値である、
付記1~付記4のいずれか1項に記載のメモリ管理ユニット。
(付記6)
メモリ管理ユニットの制御部が、
仮想アドレスを含む変換要求に応じて、前記仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定される第1記憶部と、前記仮想アドレスの前記第1ビット範囲と前記1以上の第1エントリとを対応付ける第2エントリが設定される第2記憶部とに基づき前記仮想アドレスを前記物理アドレスに変換する変換処理を実行し、
第1仮想アドレスを含む第1変換要求に応じた第1変換処理において、前記第2記憶部の探索により前記第1仮想アドレスの前記第1ビット範囲と一致する第2エントリがヒットした場合、ヒットした前記第2エントリに対応する1以上の第1エントリのうちの、前記第1仮想アドレスに基づき特定される1つの第1エントリの識別番号を、前記ヒットした第2エントリに設定し、
第2仮想アドレスを含む第2変換要求に応じた第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号よりも大きい場合、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリの情報をメモリから取得する、
処理を実行する、メモリ管理方法。
(付記7)
前記制御部が、前記メモリから取得した前記情報に基づき、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリを前記第1記憶部に設定し、前記設定した1以上の第1エントリに対応付けた第2エントリを前記第2記憶部に設定する、
処理を実行する、付記6に記載のメモリ管理方法。
(付記8)
前記制御部が、前記第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号以下である場合、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号を前記第2エントリに設定する、
処理を実行する、付記6又は付記7に記載のメモリ管理方法。
(付記9)
前記変換要求は、前記仮想アドレスと、前記変換要求の発行元に割り当てられるアドレス空間の識別情報とを含み、
前記制御部が、
前記識別情報ごとに前記第2記憶部の前記第2エントリを設定し、
前記変換処理において、前記変換要求に含まれる識別情報と、前記仮想アドレスとに基づき、前記第2記憶部を探索する、
処理を実行する、付記6~付記8のいずれか1項に記載のメモリ管理方法。
(付記10)
前記第1ビット範囲は、前記仮想アドレスの上位所定数のビット範囲であり、
前記識別番号は、前記仮想アドレスにおける前記第1ビット範囲に続く所定数のビット範囲が示す値である、
付記6~付記9のいずれか1項に記載のメモリ管理方法。
(付記11)
メモリと、
仮想アドレスを前記メモリ上の物理アドレスに変換するメモリ管理ユニットと、を備え、
前記メモリ管理ユニットは、
仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定される第1記憶部と、
前記仮想アドレスの前記第1ビット範囲と前記1以上の第1エントリとを対応付ける第2エントリが設定される第2記憶部と、
前記仮想アドレスを含む変換要求に応じて、前記第1記憶部及び前記第2記憶部に基づき前記仮想アドレスを前記物理アドレスに変換する変換処理を実行する制御部とを備え、
前記制御部は、
第1仮想アドレスを含む第1変換要求に応じた第1変換処理において、前記第2記憶部の探索により前記第1仮想アドレスの前記第1ビット範囲と一致する第2エントリがヒットした場合、ヒットした前記第2エントリに対応する1以上の第1エントリのうちの、前記第1仮想アドレスに基づき特定される1つの第1エントリの識別番号を、前記ヒットした第2エントリに設定し、
第2仮想アドレスを含む第2変換要求に応じた第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号よりも大きい場合、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリの情報を前記メモリから取得する、
情報処理装置。
(付記12)
前記制御部は、前記メモリから取得した前記情報に基づき、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリを前記第1記憶部に設定し、前記設定した1以上の第1エントリに対応付けた第2エントリを前記第2記憶部に設定する、
付記11に記載の情報処理装置。
(付記13)
前記制御部は、前記第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号以下である場合、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号を前記第2エントリに設定する、
付記11又は付記12に記載の情報処理装置。
(付記14)
前記変換要求は、前記仮想アドレスと、前記変換要求の発行元に割り当てられるアドレス空間の識別情報とを含み、
前記制御部は、
前記識別情報ごとに前記第2記憶部の前記第2エントリを設定し、
前記変換処理において、前記変換要求に含まれる識別情報と、前記仮想アドレスとに基づき、前記第2記憶部を探索する、
付記11~付記13のいずれか1項に記載の情報処理装置。
(付記15)
前記第1ビット範囲は、前記仮想アドレスの上位所定数のビット範囲であり、
前記識別番号は、前記仮想アドレスにおける前記第1ビット範囲に続く所定数のビット範囲が示す値である、
付記11~付記14のいずれか1項に記載の情報処理装置。
(付記16)
前記メモリへのアクセスを行なうプロセッサを備え、
前記メモリ管理ユニットは、前記プロセッサに備えられる、
付記11~付記15のいずれか1項に記載の情報処理装置。
(付記17)
前記メモリへのアクセスを行なうIO(Input / Output)装置を備え、
前記メモリ管理ユニットは、前記IO装置に備えられる、
付記11~付記16のいずれか1項に記載の情報処理装置。
1 コンピュータ
2 プロセッサ
21 プロセッサコア
22 プロセッサMMU
3 メインメモリ
4 IO装置
41 IOコントローラ
42 IOMMU
5 MMU
51 制御部
52 タグ
521 タグエントリ
521a 有効/無効フラグ
521b 変換情報
521c 前回ヒットしたTLB番号
521d 状態
53 TLB
531 TLBエントリ

Claims (7)

  1. 仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定される第1記憶部と、
    前記仮想アドレスの前記第1ビット範囲と前記1以上の第1エントリとを対応付ける第2エントリが設定される第2記憶部と、
    前記仮想アドレスを含む変換要求に応じて、前記第1記憶部及び前記第2記憶部に基づき前記仮想アドレスを前記物理アドレスに変換する変換処理を実行する制御部とを備え、
    前記制御部は、
    第1仮想アドレスを含む第1変換要求に応じた第1変換処理において、前記第2記憶部の探索により前記第1仮想アドレスの前記第1ビット範囲と一致する第2エントリがヒットした場合、ヒットした前記第2エントリに対応する1以上の第1エントリのうちの、前記第1仮想アドレスに基づき特定される1つの第1エントリの識別番号を、前記ヒットした第2エントリに設定し、
    第2仮想アドレスを含む第2変換要求に応じた第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号よりも大きい場合、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリの情報をメモリから取得する、
    メモリ管理ユニット。
  2. 前記制御部は、前記メモリから取得した前記情報に基づき、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリを前記第1記憶部に設定し、前記設定した1以上の第1エントリに対応付けた第2エントリを前記第2記憶部に設定する、
    請求項1に記載のメモリ管理ユニット。
  3. 前記制御部は、前記第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号以下である場合、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号を前記第2エントリに設定する、
    請求項1又は請求項2に記載のメモリ管理ユニット。
  4. 前記変換要求は、前記仮想アドレスと、前記変換要求の発行元に割り当てられるアドレス空間の識別情報とを含み、
    前記制御部は、
    前記識別情報ごとに前記第2記憶部の前記第2エントリを設定し、
    前記変換処理において、前記変換要求に含まれる識別情報と、前記仮想アドレスとに基づき、前記第2記憶部を探索する、
    請求項1~請求項3のいずれか1項に記載のメモリ管理ユニット。
  5. 前記第1ビット範囲は、前記仮想アドレスの上位所定数のビット範囲であり、
    前記識別番号は、前記仮想アドレスにおける前記第1ビット範囲に続く所定数のビット範囲が示す値である、
    請求項1~請求項4のいずれか1項に記載のメモリ管理ユニット。
  6. メモリ管理ユニットの制御部が、
    仮想アドレスを含む変換要求に応じて、前記仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定される第1記憶部と、前記仮想アドレスの前記第1ビット範囲と前記1以上の第1エントリとを対応付ける第2エントリが設定される第2記憶部とに基づき前記仮想アドレスを前記物理アドレスに変換する変換処理を実行し、
    第1仮想アドレスを含む第1変換要求に応じた第1変換処理において、前記第2記憶部の探索により前記第1仮想アドレスの前記第1ビット範囲と一致する第2エントリがヒットした場合、ヒットした前記第2エントリに対応する1以上の第1エントリのうちの、前記第1仮想アドレスに基づき特定される1つの第1エントリの識別番号を、前記ヒットした第2エントリに設定し、
    第2仮想アドレスを含む第2変換要求に応じた第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号よりも大きい場合、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリの情報をメモリから取得する、
    処理を実行する、メモリ管理方法。
  7. メモリと、
    仮想アドレスを前記メモリ上の物理アドレスに変換するメモリ管理ユニットとを備え、
    前記メモリ管理ユニットは、
    仮想アドレスの第1ビット範囲と一致する物理アドレスを示す1以上の第1エントリが設定される第1記憶部と、
    前記仮想アドレスの前記第1ビット範囲と前記1以上の第1エントリとを対応付ける第2エントリが設定される第2記憶部と、
    前記仮想アドレスを含む変換要求に応じて、前記第1記憶部及び前記第2記憶部に基づき前記仮想アドレスを前記物理アドレスに変換する変換処理を実行する制御部とを備え、
    前記制御部は、
    第1仮想アドレスを含む第1変換要求に応じた第1変換処理において、前記第2記憶部の探索により前記第1仮想アドレスの前記第1ビット範囲と一致する第2エントリがヒットした場合、ヒットした前記第2エントリに対応する1以上の第1エントリのうちの、前記第1仮想アドレスに基づき特定される1つの第1エントリの識別番号を、前記ヒットした第2エントリに設定し、
    第2仮想アドレスを含む第2変換要求に応じた第2変換処理において、前記第2記憶部の探索により前記第1変換処理と同じ第2エントリがヒットし、且つ、前記第2仮想アドレスに基づき特定される1つの第1エントリの識別番号が前記第2エントリに設定した識別番号よりも大きい場合、前記ヒットした第2エントリに対応付けられた1以上の第1エントリに続く1以上の第1エントリの情報を前記メモリから取得する、
    情報処理装置。
JP2021184935A 2021-11-12 2021-11-12 メモリ管理ユニット、メモリ管理方法、及び、情報処理装置 Pending JP2023072396A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021184935A JP2023072396A (ja) 2021-11-12 2021-11-12 メモリ管理ユニット、メモリ管理方法、及び、情報処理装置
US17/878,091 US11853597B2 (en) 2021-11-12 2022-08-01 Memory management unit, method for memory management, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021184935A JP2023072396A (ja) 2021-11-12 2021-11-12 メモリ管理ユニット、メモリ管理方法、及び、情報処理装置

Publications (1)

Publication Number Publication Date
JP2023072396A true JP2023072396A (ja) 2023-05-24

Family

ID=86324625

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021184935A Pending JP2023072396A (ja) 2021-11-12 2021-11-12 メモリ管理ユニット、メモリ管理方法、及び、情報処理装置

Country Status (2)

Country Link
US (1) US11853597B2 (ja)
JP (1) JP2023072396A (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US8984254B2 (en) * 2012-09-28 2015-03-17 Freescale Semiconductor, Inc. Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance
US20190163641A1 (en) * 2017-11-27 2019-05-30 Intel Corporation Page translation prefetch mechanism
US11853225B2 (en) * 2019-10-11 2023-12-26 Texas Instruments Incorporated Software-hardware memory management modes

Also Published As

Publication number Publication date
US20230153021A1 (en) 2023-05-18
US11853597B2 (en) 2023-12-26

Similar Documents

Publication Publication Date Title
US7089398B2 (en) Address translation using a page size tag
JP5536956B2 (ja) コンピューティング環境においてアドレス空間を管理するための方法、コンピュータ・システム、コンピュータ・プログラム
US7917724B2 (en) Protection of user-level applications based on page table information
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US11797678B2 (en) Memory scanning methods and apparatus
JP7249272B2 (ja) キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法
US10649907B2 (en) Apparatus and method for handling page invalidate requests in an address translation cache
EP2159706B1 (en) Operation processing apparatus and operation processing method
US20160140042A1 (en) Instruction cache translation management
JP7062695B2 (ja) 論理ディレクトリを使用したキャッシュ構造
US20190065400A1 (en) Apparatus and method for efficient utilisation of an address translation cache
US7552254B1 (en) Associating address space identifiers with active contexts
JP2013097671A (ja) アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
CN114238167B (zh) 信息预取方法、处理器、电子设备
US10929306B2 (en) Arithmetic processor, information processing apparatus, and control method of arithmetic processor
US11645208B2 (en) Translation bandwidth optimized prefetching strategy through multiple translation lookaside buffers
US9507729B2 (en) Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor
WO2023194849A1 (en) Shadow pointer directory in an inclusive hierarchical cache
JP2023072396A (ja) メモリ管理ユニット、メモリ管理方法、及び、情報処理装置
US11556475B2 (en) Power optimized prefetching in set-associative translation lookaside buffer structure
US20220100653A1 (en) Page table walker with page table entry (pte) physical address prediction
US10127159B1 (en) Link consistency in a hierarchical TLB with concurrent table walks
CN114218132B (zh) 信息预取方法、处理器、电子设备
CN114238176B (zh) 处理器、用于处理器的地址翻译方法、电子设备
CN115794681B (zh) 适用于risc-v的多级可扩展tlb***及其地址转换方法