JP2016528640A - 物理メモリアドレスを問い合わせる方法及び装置 - Google Patents

物理メモリアドレスを問い合わせる方法及び装置 Download PDF

Info

Publication number
JP2016528640A
JP2016528640A JP2016535319A JP2016535319A JP2016528640A JP 2016528640 A JP2016528640 A JP 2016528640A JP 2016535319 A JP2016535319 A JP 2016535319A JP 2016535319 A JP2016535319 A JP 2016535319A JP 2016528640 A JP2016528640 A JP 2016528640A
Authority
JP
Japan
Prior art keywords
buffer
page table
stored
thread
table entry
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
JP2016535319A
Other languages
English (en)
Other versions
JP6198952B2 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016528640A publication Critical patent/JP2016528640A/ja
Application granted granted Critical
Publication of JP6198952B2 publication Critical patent/JP6198952B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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
    • 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/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • 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/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

Landscapes

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

Abstract

本発明は、物理メモリアドレスを問い合わせる方法及び装置を提供する。ここで、本方法は、スタンバイバッファに記憶されている、アドレス指定を実行するべき第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、仮想アドレスを伝達し、第2のスレッドによって送信されるメモリアドレス指定要求メッセージを受信するステップと、バイパス変換バッファ及びプリフェッチバッファにおいて、仮想アドレスに従って、対応する物理アドレスを問い合わせるステップとを含む。本発明において提供される、物理メモリアドレスを問い合わせる方法及び装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。

Description

本出願は、2013年8月20に中国特許庁に出願され、「METHOD AND APPARATUS FOR QUERYING PHYSICAL MEMORY ADDRESS」と題された中国特許出願第201310364417.1号の優先権を主張し、この中国特許出願は、その全体が参照によって本明細書に組み込まれる。
本発明は、情報技術の分野に関し、特に、物理メモリアドレスを問い合わせる方法及び装置に関する。
現在のところ、プロセッサは、主に、仮想アドレス(Virtual Address,略してVA)を使用して、メモリアドレス指定を実行し、実際の物理アドレス(Physical Address,略してPA)空間よりもずっと大きいアドレス指定空間は、仮想アドレス技術を使用することによって生成され得る。仮想メモリを使用するプロセッサは、主に、ページング(Paging)メカニズムを使用する。仮想アドレス空間は、ページ(Page)単位で分割される。それに応じて、物理アドレス空間も、ページ(Page)単位で分割される。仮想アドレスを使用することによってメモリアドレス指定を実行するプロセスにおいて、プロセッサ内のメモリ管理ユニット(Memory Management Unit,略してMMU)は、受信された仮想アドレスを物理アドレスに変換する必要がある。現在のところ、プロセッサは、主に、バイパス変換バッファを使用する。バイパス変換バッファは、プロセッサによって最近アクセスされたメモリの仮想アドレスと物理アドレスとの間のマッピング関係を含む変換索引バッファ(Translation Lookaside Buffer,略してTLB)である。TLB内にバッファリングされるデータは、メモリページテーブルエリアに記憶されるデータと一致する。メモリページテーブルエリアにおいて、仮想アドレスと物理アドレスとの間のマッピング関係を含む各レコードは、ページテーブルエントリ(Page Table Entry,略してPTE)と称される。同様に、TLBも、ページテーブルエントリPTEのうちの一部又は全部さえもバッファリングする。
メモリアドレス指定が、仮想アドレスを使用することによって実行される場合、アプリケーションプログラムによって送信された仮想アドレスを受信した後、まず、メモリ管理ユニットMMUは、バイパス変換バッファのTLBにおいて検索を実行する。TLBが、仮想アドレスに対応するページテーブルエントリをバッファリングする場合、すなわち、TLBがヒットした(Hit)場合、メモリ管理ユニットは、レベル1キャッシュ(Level 1 Cache)におけるデータアクセスを、ページテーブルエントリ内の物理アドレスを使用することによって実行する。物理アドレスに対応するデータが、レベル1キャッシュに存在しない場合、メモリ管理ユニットは、レベル2キャッシュ(Level 2 Cache)におけるデータアクセスを実行する。物理アドレスに対応するデータが、レベル2キャッシュに存在しない場合、メモリ管理ユニットは、メモリにおけるデータアクセスを実行する。TLBが、仮想アドレスに対応するページテーブルエントリを含まない場合、すなわち、TLBがミスした(Miss)場合、ソフトウェア又はオペレーティングシステム(Operating System,略してOS)は、仮想アドレスに対応する物理アドレスを検索し、仮想アドレスと物理アドレスとの間のマッピング関係をページテーブルエントリとして使用し、ページテーブルエントリをTLB内に記憶する必要があり、それにより、メモリ管理ユニットMMUが、後続の検索を実行し得る。
従来技術において、プリフェッチバッファ(Prefetch Buffer,略してPB)は、メモリ管理ユニットMMUに配置される。メモリ管理ユニットMMUにおいて、PBは、複数のページテーブルエントリを記憶する。物理メモリアドレスのアドレス指定が実行される場合、まず、TLBが、対応する物理アドレスについて検索され、TLBがミスした後、PBが、対応する物理アドレスについて検索され続ける。対応する物理アドレスが、PBに存在する場合、データアクセスは、物理アドレスを使用することによって実行され、ヒットしたページテーブルエントリは、TLB内に記憶される。対応する物理アドレスが、PBに存在しない場合、メモリ内の複数のページテーブルエントリは、PB内に記憶されて、PBに現在記憶されているデータが上書きされる。
しかしながら、マルチスレッドプロセッサの場合、複数のハードウェアスレッドは、1つのTLBを共有し、TLBの容量は限られているため、ハードウェアスレッドの数が、比較的大きい場合、TLBにおけるページテーブルエントリの数は、マルチスレッド要件を満たすことができない。結果として、各ハードウェアスレッドが、仮想アドレスを使用することによってメモリアドレス指定を実行する場合、TLBのミス率は、比較的高くなる。TLBがミスした後に初めて、仮想アドレスに対応するページテーブルエントリが、メモリから取得され、次いで、バッファリングされ得る。そのため、アドレス指定時間は、比較的長くなる。
本発明は、物理メモリアドレスを問い合わせる方法及び装置を提供して、アドレス指定時間が従来技術において比較的長くなるという問題を解決する。
第1の態様によれば、本発明は、物理メモリアドレスを問い合わせる方法であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するステップと、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、
第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信するステップと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップと
を含む方法を提供する。
第1の態様の第1の取り得る実装手法において、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップは、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、第1の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ、又は、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、第2の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ
を含む。
第1の態様の第1の取り得る実装手法によれば、第2の取り得る実装手法において、本方法は、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第3の物理アドレスについてメモリに問い合わせるステップ
をさらに含む。
第1の態様の第1の取り得る実装手法及び第2の取り得る実装手法によれば、第3の取り得る実装手法において、仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、本方法は、
仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第2の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ
をさらに含む。
第1の態様の第2の取り得る実装手法によれば、第4の取り得る実装手法において、本方法は、
仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶するステップ
をさらに含む。
第1の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、及び第4の取り得る実装手法によれば、第5の取り得る実装手法において、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップの前に、本方法は、
バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップと、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除するステップ
をさらに含む。
第1の態様の第5の取り得る実装手法によれば、第6の取り得る実装手法において、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップの後に、本方法は、
スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除するステップ
をさらに含む。
第1の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、第4の取り得る実装手法、第5の取り得る実装手法、及び第6の取り得る実装手法によれば、第7の取り得る実装手法において、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ、又は、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ
を含む。
第1の態様の第7の取り得る実装手法によれば、第8の取り得る実装手法において、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、本方法は、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリを、プリフェッチバッファ内に記憶するステップ
をさらに含む。
第2の態様によれば、本発明は、物理メモリアドレスを問い合わせる装置であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するように構成された判定モジュールと、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成された実行モジュールであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、実行モジュールと、
第2のスレッドに対応するメモリアドレス指定要求メッセージを受信するように構成された受信モジュールであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信モジュールと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成された問い合わせモジュールと
を備える装置を提供する。
第2の態様の第1の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、第1の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する、又は、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、第2の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する
ように具体的に構成される。
第2の態様の第1の取り得る実装手法によれば、第2の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第3の物理アドレスについてメモリに問い合わせる
ようにさらに構成される。
第2の態様の第1の取り得る実装手法及び第2の取り得る実装手法によれば、第3の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第2の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除する
ようにさらに構成される。
第2の態様の第2の取り得る実装手法によれば、第4の取り得る実装手法において、問い合わせモジュールは、
仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する
ようにさらに構成される。
第2の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、及び第4の取り得る実装手法によれば、第5の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成される。
第1の態様の第5の取り得る実装手法によれば、第6の取り得る実装手法において、実行モジュールは、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成される。
第2の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、第4の取り得る実装手法、第5の取り得る実装手法、及び第6の取り得る実装手法によれば、第7の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする、又は、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする
ように具体的に構成される。
第2の態様の第7の取り得る実装手法によれば、第8の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリを、プリフェッチバッファ内に記憶する
ようにさらに構成される。
第3の態様によれば、本発明は、メモリと、バイパス変換バッファと、スタンバイバッファと、プリフェッチバッファと、プロセッサとを備える、物理メモリアドレスを問い合わせる装置であって、
メモリは、命令を記憶するように構成され、
バイパス変換バッファは、変換索引バッファTLBを記憶するように構成され、
スタンバイバッファは、バイパス変換バッファに記憶されているTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成され、
プリフェッチバッファは、スタンバイバッファに記憶されている、対応するスレッドのページテーブルエントリを記憶するように構成され、
プロセッサは、メモリ内に記憶された命令を実行して、第1の態様に係る、物理メモリアドレスを問い合わせる方法を実行するように構成される、
装置を提供する。
本発明において提供される、物理メモリアドレスを問い合わせる方法及び装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
本発明の実施形態又は従来技術における技術的解決策をより明確に説明するために、下記は、実施形態又は従来技術を説明するために必要とされる添付の図面を簡単に紹介する。明らかに、添付の図面は、下記の説明において、本発明のいくつかの実施形態を示し、当業者は、創作的努力なしに、これらの添付の図面から他の図面をさらに導き出し得る。
本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。 本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。 バイパス変換バッファの変換索引バッファTLBにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。 対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファPB内に記憶するステップの概略図である。 仮想アドレスVAに従って物理メモリアドレスのアドレス指定をするステップの概略図である。 本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。 本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。
本発明の実施形態の目的、技術的解決策、及び利点をより明確にするために、下記は、本発明の実施形態における技術的解決策を、本発明の実施形態において添付の図面を参照しつつ、明確かつ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の一部ではあるが、全部ではない。創作的努力なしに本発明の実施形態に基づいて当業者によって得られる全ての他の実施形態は、本発明の保護範囲内に収まるべきものである。
図1は、本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。図1に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、PC、PAD、及び携帯電話に対して適用可能であり得る。下記のステップは、前述の様々な端末デバイスにおける中央演算処理装置(Central Processing Unit,略してCPU)によって実行され得、具体的には、CPUにおけるメモリ管理ユニットMMUなどによって実行され得る。本方法は、具体的には、下記を含む:
S101:プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第1のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第2のスレッドは、第1のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
S102:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
具体的には、アドレス指定を実行するべき、S101に従って判定されるスレッド、すなわち、第2のスレッドは、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファPB内に記憶する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。プリフェッチバッファPBに記憶されるページテーブルエントリは、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき各対応するスレッドのIDを含む。
本明細書において留意すべきことは、スタンバイバッファの数が1つ又は複数となり得ることである。例えば、各スレッドは、1つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、1つ又は複数となり得る。例えば、各スレッドは、1つのバイパス変換バッファ及び1つのプリフェッチバッファに対応し得る。
S103:第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
具体的には、アドレス指定を実行するべきスレッド、すなわち、第2のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスVAを伝達する。
S104:仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファPBに記憶されたページテーブルエントリは、仮想アドレスVAに従って、同時に問い合わせをされ得る。仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファ又はプリフェッチバッファPBに存在する場合、データアクセスは、この物理アドレスを使用することによって実行される。仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファPBにも存在しない場合、メモリに問い合わせがされて、仮想アドレスVAに対応する物理アドレスが得られる。
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
図2は、本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。図2に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、PC、PAD、及び携帯電話に対して適用可能であり得る。下記のステップは、中央演算処理装置CPUによって実行され得、具体的には、CPUにおけるメモリ管理ユニットMMUなどによって実行され得る。本方法は、具体的には、下記を含む:
S201:プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第1のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第2のスレッドは、第1のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
S202:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
下記のステップS203又はS204は、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数と、プリフェッチバッファPBの記憶容量との間の関係に従って、ここでは選択的に実行され得る。
S203:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
S204:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
具体的には、アドレス指定を実行するべき、S201に従って判定されるスレッド、すなわち、第2のスレッドは、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの一部又は全部をプリフェッチバッファPB内に記憶し、PBに現在記憶されているデータを削除する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
随意的な実装手法として、各スレッドは、1つのスタンバイバッファに対応し得、各スタンバイバッファに記憶されるページテーブルエントリは、TLBにおいて設定時間内に問い合わせをされない、対応するスレッドのページテーブルエントリであり得る。図3は、バイパス変換バッファの変換索引バッファTLBにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。図3に示されるように、バイパス変換バッファの変換索引バッファTLBに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。各スレッドに対応するスタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応を含む。スタンバイバッファ選択ユニットは、設定時間内に問い合わせをされず、TLBに記憶されるページテーブルエントリ及び対応するスレッドIDを受信し、このスレッドIDに従って、対応するスレッドのスタンバイバッファ内にページテーブルエントリを記憶する。
図4は、対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファPB内に記憶するステップの概略図である。図4に示されるように、スタンバイバッファ選択ユニットは、アドレス指定を実行するべき判定済みのスレッドに従って、対応するスレッドIDと、アドレス指定を実行するべきスレッドのスタンバイバッファ内のページテーブルエントリの一部又は全部とを、プリフェッチバッファPB内に記憶し、それにより、プリフェッチバッファPBは、TLBにおいて置換される、アドレス指定を実行するべきスレッドのページテーブルエントリを記憶する。TLBにおいて置換されるこれらのページテーブルエントリのうちの大部分は、ページテーブルエントリが必要とされるという理由で置換されるのではなく、TLBの記憶容量が限定されており、スレッドの数が大きいため、いくつかのスレッドのよく使用されるページテーブルエントリが置換されるという理由で置換される。
本明細書においては、32個のスレッドが、128個のページテーブルエントリの記憶容量を有する1つのバイパス変換バッファを共有し、各スレッドに対応するスタンバイバッファの記憶容量及び各スレッドに対応するプリフェッチバッファPBの記憶容量が、32個のページテーブルエントリに設定され得、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の全てのページテーブルエントリが、プリフェッチバッファPB内に記憶され得、プリフェッチバッファPBに現在記憶されているデータは削除され得る、と仮定される。バイパス変換バッファ及びプリフェッチバッファPBは、仮想アドレスVA間の比較を、連想記憶メモリ(content addressable memory,略してCAM)を使用することによって完了させ得る。プリフェッチバッファPBの記憶容量の増加は、チップ消費電力を増加させ得、したがって、比較的小さい記憶容量を有するプリフェッチバッファPB、例えば、8個のページテーブルエントリの記憶容量を有するプリフェッチバッファPBが選択され得る。それにより、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の最短の記憶時間を有する8個のページテーブルエントリが、プリフェッチバッファPB内に記憶され得、プリフェッチバッファPBに現在記憶されているデータは削除され得る。
S205:第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
具体的には、アドレス指定を実行するべきスレッド、すなわち、第2のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスVAを伝達する。
S206:仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
下記のステップS207、S208、又はS209は、バイパス変換バッファ及びプリフェッチバッファPBにおけるアドレス指定結果に従って、ここでは選択的に実行され得る。
S207:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、第1の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ。
S208:仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、第2の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行し、仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリをバイパス変換バッファに記憶し、仮想アドレス及び第2の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ。
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
S209:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第3の物理アドレスについてメモリに問い合わせをし、仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する。
具体的には、図5は、仮想アドレスVAに従って物理メモリアドレスのアドレス指定をするステップの概略図である。図5に示されるように、バイパス変換バッファに記憶されるページテーブルエントリ及びプリフェッチバッファPBに記憶されるページテーブルエントリは、仮想アドレスVAに従って、同時に問い合わせをされ得る。
仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファに存在する場合、すなわち、バイパス変換バッファのTLBがヒットした(TLB−Hit)場合、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在してもしなくても、すなわち、プリフェッチバッファPBが、ヒットしても(PB−Hit)又はミスしても(PB−Miss)、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第1の物理アドレスPA1に従って実行される。
仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファに存在しない、すなわち、バイパス変換バッファのTLBがミスした(TLB−Miss)が、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在する、すなわち、プリフェッチバッファPBがヒットした(PB−Hit)場合、データアクセスは、プリフェッチバッファPB内に発見される物理アドレス、すなわち、第2の物理アドレスPA2に従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリが、バイパス変換バッファのTLB内に記憶される。プリフェッチバッファPBが、スタンバイバッファ内の第2のスレッドのページテーブルエントリの一部のみを記憶する場合、例えば、前述のプリフェッチバッファPBが、第2のスレッドの、スタンバイバッファにおける最短の記憶時間を有する8個のページテーブルエントリのみを記憶する場合、プリフェッチバッファPB内のヒットしたページテーブルエントリは、TLB内に記憶され、第2のスレッドの、比較的短い記憶時間を有する次のページテーブルエントリは、スタンバイバッファから抽出され、プリフェッチバッファPB内に記憶され得る。
仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファPBにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファPBとの双方がミスした(TLB−Miss及びPB−Miss)場合、仮想アドレスVAと、仮想アドレスVAに対応する物理アドレスについての対応するスレッドID、すなわち、第3の物理アドレスPA3とに従って、ページテーブル走査ユニットを使用することによって、メモリに問い合わせがされる。データアクセスは、発見された第3の物理アドレスPA3に従って実行される。発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリ、及び対応するスレッドIDは、バイパス変換バッファのTLB内に同時に記憶される。
ステップS208又はS209について、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリは、スタンバイバッファ内に記憶され、設定時間内に問い合わせをされないページテーブルエントリは、バイパス変換バッファから削除される。
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、スタンバイバッファから削除される。
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し(First Input First Output,略してFIFO)」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
図6は、本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。図6に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置60は、物理メモリアドレスを問い合わせる前述の方法を実行する特定のエンティティであり、具体的には、判定モジュール61と、実行モジュール62と、受信モジュール63と、問い合わせモジュール64とを含む。
判定モジュール61は、プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するように構成される。
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第1のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第2のスレッドは、第1のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
実行モジュール62は、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
具体的には、下記の2つのケースが、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数とプリフェッチバッファPBの記憶容量との間の関係に従って存在する。
ケース1:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
ケース2:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
具体的には、アドレス指定を実行するべき、判定モジュール61によって判定されるスレッド、すなわち、第2のスレッドに従って、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの一部又は全部が、プリフェッチバッファPB内に記憶される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。プリフェッチバッファPBに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき対応するスレッドのIDを含む。
ここで留意するべきことは、スタンバイバッファの数が1つ又は複数であり得ることである。例えば、各スレッドは、1つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、1つ又は複数であり得る。例えば、各スレッドは、1つのバイパス変換バッファ及び1つのプリフェッチバッファに対応し得る。
受信モジュール63は、第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するように構成される。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
具体的には、アドレス指定を実行するべきスレッド、すなわち、第2のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスVAを伝達する。
問い合わせモジュール64は、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成される。
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファPBに記憶されたページテーブルエントリは、仮想アドレスVAに従って、同時に問い合わせをされ得る。下記の3つのケースは、ここでは、バイパス変換バッファ及びプリフェッチバッファPBにおけるアドレス指定結果に従って存在し得る。
ケース1:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、メモリは、第1の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。
具体的には、仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファに存在する場合、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在してもしなくても、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第1の物理アドレスに従って実行される。
ケース2:仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、メモリは、第2の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは、バイパス変換バッファ内に記憶され、仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは削除される。
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファには存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
具体的には、仮想アドレスVAに対応する物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在する場合、データアクセスは、プリフェッチバッファPB内に発見される物理アドレス、すなわち、第2の物理アドレスに従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページエントリは、バイパス変換バッファのTLB内に記憶される。プリフェッチバッファPBが、スタンバイバッファ内の第2のスレッドのページテーブルエントリのうちの一部のみを記憶する場合、プリフェッチバッファPB内のヒットしたページテーブルエントリが、TLB内に記憶された後に、1つのページテーブルエントリが、スタンバイバッファから読み出され、プリフェッチバッファPB内に記憶され得る。
ケース3:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、メモリは、仮想アドレスに対応する第3の物理アドレスについて問い合わせをされ、仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリは、バイパス変換バッファ内に記憶される。
具体的には、仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファPBにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファPBとの双方がミスした場合、メモリは、仮想アドレスVAに対応する物理アドレス、すなわち、第3の物理アドレスについて問い合わせをされる必要があり、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリは、バイパス変換バッファのTLB内に記憶される。
さらに、実行モジュール62は、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成され得る。
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
さらに、実行モジュール62は、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成され得る。
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し(FIFO)」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
図7は、本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。図7に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置は、メモリ71と、バイパス変換バッファ72と、スタンバイバッファ73と、プリフェッチバッファ74と、プロセッサ75とを含む。
メモリ71は、命令を記憶するように構成される。
バイパス変換バッファ72は、変換索引バッファTLBを記憶するように構成される。
スタンバイバッファ73は、バイパス変換バッファに記憶されるTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成される。
プリフェッチバッファ74は、スタンバイバッファに記憶される、対応するスレッドのページテーブルエントリを記憶するように構成される。
プロセッサ75は、メモリに記憶された命令を実行して、図1又は図2に示される、物理メモリアドレスを問い合わせる方法を実行するように構成される。
具体的には、メモリ71は、高速RAMメモリを含み得、又は不揮発性メモリ(non−volatile memory)、例えば、少なくとも1つのディスクメモリを含み得る。随意的に、メモリ71は、少なくとも1つの記憶装置を含み得る。メモリ71は、命令を記憶し、物理メモリアドレスを問い合わせる装置が実行される場合、プロセッサ75は、メモリ71と通信し、プロセッサ75は、命令を実行し、それにより、物理メモリアドレスを問い合わせる装置は、本発明の実施形態において提供される、物理メモリアドレスを問い合わせる方法を実行することができる。
スタンバイバッファ73は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのIDを含み得る。バイパス変換バッファ72は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのIDを含み得る。プリフェッチバッファ74は、仮想アドレスとの間の対応を含むページテーブルエントリを記憶し、アドレス指定を実行するべき対応するスレッドのIDを含み得る。
ここで留意すべきことは、スタンバイバッファ73の数が1つ又は複数であり得ることである。例えば、各スレッドは、1つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファ72の数とプリフェッチバッファ74の数との双方は、1つ又は複数であり得る。例えば、各スレッドは、1つのバイパス変換バッファ及び1つのプリフェッチバッファに対応し得る。
この実施形態におけるプロセッサは、集積回路チップであってもよく、信号処理能力を有する。実装プロセスにおいて、前述の方法におけるステップは、プロセッサ内のハードウェアの集積論理回路又はソフトウェアの形式の命令を使用することによって完了され得る。前述のプロセッサは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向けプロセッサ(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)若しくは別のプログラマブルロジックコンポーネント、ディスクリートゲート若しくはトランジスタロジックコンポーネント、又はディスクリートハードウェアコンポーネントであってもよく、これらは、本発明の実施形態において開示された方法、ステップ、及び論理ブロック図を実装又は実行し得る。前述のプロセッサは、マイクロプロセッサであってもよく、又は前述のプロセッサは、任意の従来のプロセッサなどであってもよい。本発明の実施形態を参照しつつ開示された方法のステップは、ハードウェアプロセッサを用いて直接実行及び完了されてもよく、又はプロセッサ内のハードウェアモジュールとソフトウェアモジュールとの組み合わせを用いて実行及び完了されてもよい。ソフトウェアモジュールは、本技術分野における成熟した記憶媒体、例えば、ランダムアクセスメモリ、フラッシュメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的消去可能プログラマブルメモリ、又はレジスタなどに位置し得る。記憶媒体は、メモリに位置し、プロセッサは、メモリ内の情報を読出し、前述の方法におけるステップを、プロセッサのハードウェアとの組み合わせにおいて完了する。
本発明の実施形態は、チップをさらに提供する。ここで、チップは、物理メモリアドレスを問い合わせるように構成され、チップは、前述のプロセッサを含み得る。
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、プロセッサ75は、メモリ71に記憶される命令を実行し、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、バイパス変換バッファ及びプリフェッチバッファに同時に問い合わせをする。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
当業者は、前述の方法実施形態のステップの全部又は一部がプログラム命令関連ハードウェアによって実装され得ることを理解し得る。前述のプログラムは、コンピュータ読取可能な媒体に記憶され得る。プログラムが実行されると、前述の方法実施形態のステップが実行される。前述の記憶媒体は、プログラムコードを記憶することができる任意の媒体、例えば、ROM、RAM、磁気ディスク、又は光ディスクなどを含む。
最後に、留意すべきことは、前述の実施形態が本発明の技術的解決策を説明することを意図されたものに過ぎず、本発明を限定することを意図されたものではないことである。本発明は、前述の実施形態を参照しつつ詳細に説明されているが、当業者は、当業者が前述の実施形態において説明された技術的解決策に対して変形を行い得ること、又はその技術的特徴の一部若しくは全部に対して均等な置換を行い得ることを理解するべきである。しかしながら、こうした変形又は置換は、対応する技術的解決策の本質を、本発明の実施形態における技術的解決策の範囲から逸脱させるものではない。
本発明は、情報技術の分野に関し、特に、物理メモリアドレスを問い合わせる方法及び装置に関する。
現在のところ、プロセッサは、主に、仮想アドレス(Virtual Address,略してVA)を使用して、メモリアドレス指定を実行し、実際の物理アドレス(Physical Address,略してPA)空間よりもずっと大きいアドレス指定空間は、仮想アドレス技術を使用することによって生成され得る。仮想メモリを使用するプロセッサは、主に、ページング(Paging)メカニズムを使用する。仮想アドレス空間は、ページ(Page)単位で分割される。それに応じて、物理アドレス空間も、ページ(Page)単位で分割される。仮想アドレスを使用することによってメモリアドレス指定を実行するプロセスにおいて、プロセッサ内のメモリ管理ユニット(Memory Management Unit,略してMMU)は、受信された仮想アドレスを物理アドレスに変換する必要がある。現在のところ、プロセッサは、主に、バイパス変換バッファを使用する。バイパス変換バッファは、プロセッサによって最近アクセスされたメモリの仮想アドレスと物理アドレスとの間のマッピング関係を含む変換索引バッファ(Translation Lookaside Buffer,略してTLB)である。TLB内にバッファリングされるデータは、メモリページテーブルエリアに記憶されるデータと一致する。メモリページテーブルエリアにおいて、仮想アドレスと物理アドレスとの間のマッピング関係を含む各レコードは、ページテーブルエントリ(Page Table Entry,略してPTE)と称される。同様に、TLBも、ページテーブルエントリPTEのうちの一部又は全部さえもバッファリングする。
メモリアドレス指定が、仮想アドレスを使用することによって実行される場合、アプリケーションプログラムによって送信された仮想アドレスを受信した後、まず、メモリ管理ユニットMMUは、バイパス変換バッファのTLBにおいて検索を実行する。TLBが、仮想アドレスに対応するページテーブルエントリをバッファリングする場合、すなわち、TLBがヒットした(Hit)場合、メモリ管理ユニットは、レベル1キャッシュ(Level 1 Cache)におけるデータアクセスを、ページテーブルエントリ内の物理アドレスを使用することによって実行する。物理アドレスに対応するデータが、レベル1キャッシュに存在しない場合、メモリ管理ユニットは、レベル2キャッシュ(Level 2 Cache)におけるデータアクセスを実行する。物理アドレスに対応するデータが、レベル2キャッシュに存在しない場合、メモリ管理ユニットは、メモリにおけるデータアクセスを実行する。TLBが、仮想アドレスに対応するページテーブルエントリを含まない場合、すなわち、TLBがミスした(Miss)場合、ソフトウェア又はオペレーティングシステム(Operating System,略してOS)は、仮想アドレスに対応する物理アドレスを検索し、仮想アドレスと物理アドレスとの間のマッピング関係をページテーブルエントリとして使用し、ページテーブルエントリをTLB内に記憶する必要があり、それにより、メモリ管理ユニットMMUが、後続の検索を実行し得る。
従来技術において、プリフェッチバッファ(Prefetch Buffer,略してPB)は、メモリ管理ユニットMMUに配置される。メモリ管理ユニットMMUにおいて、PBは、複数のページテーブルエントリを記憶する。物理メモリアドレスのアドレス指定が実行される場合、まず、TLBが、対応する物理アドレスについて検索され、TLBがミスした後、PBが、対応する物理アドレスについて検索され続ける。対応する物理アドレスが、PBに存在する場合、データアクセスは、物理アドレスを使用することによって実行され、ヒットしたページテーブルエントリは、TLB内に記憶される。対応する物理アドレスが、PBに存在しない場合、メモリ内の複数のページテーブルエントリは、PB内に記憶されて、PBに現在記憶されているデータが上書きされる。
しかしながら、マルチスレッドプロセッサの場合、複数のハードウェアスレッドは、1つのTLBを共有し、TLBの容量は限られているため、ハードウェアスレッドの数が、比較的大きい場合、TLBにおけるページテーブルエントリの数は、マルチスレッド要件を満たすことができない。結果として、各ハードウェアスレッドが、仮想アドレスを使用することによってメモリアドレス指定を実行する場合、TLBのミス率は、比較的高くなる。TLBがミスした後に初めて、仮想アドレスに対応するページテーブルエントリが、メモリから取得され、次いで、バッファリングされ得る。そのため、アドレス指定時間は、比較的長くなる。
本発明は、物理メモリアドレスを問い合わせる方法及び装置を提供して、アドレス指定時間が従来技術において比較的長くなるという問題を解決する。
第1の態様によれば、本発明は、物理メモリアドレスを問い合わせる方法であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するステップと、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、
第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信するステップと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップと
を含む方法を提供する。
第1の態様の第1の取り得る実装手法において、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップは、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、第1の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ、又は、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、第2の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ
を含む。
第1の態様の第1の取り得る実装手法によれば、第2の取り得る実装手法において、本方法は、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第3の物理アドレスについてメモリに問い合わせるステップ
をさらに含む。
第1の態様の第1の取り得る実装手法及び第2の取り得る実装手法によれば、第3の取り得る実装手法において、仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、本方法は、
仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第2の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ
をさらに含む。
第1の態様の第2の取り得る実装手法によれば、第4の取り得る実装手法において、本方法は、
仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶するステップ
をさらに含む。
第1の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、及び第4の取り得る実装手法によれば、第5の取り得る実装手法において、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップの前に、本方法は、
バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップと、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除するステップ
をさらに含む。
第1の態様の第5の取り得る実装手法によれば、第6の取り得る実装手法において、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップの後に、本方法は、
スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除するステップ
をさらに含む。
第1の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、第4の取り得る実装手法、第5の取り得る実装手法、及び第6の取り得る実装手法によれば、第7の取り得る実装手法において、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ、又は、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ
を含む。
第1の態様の第7の取り得る実装手法によれば、第8の取り得る実装手法において、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、本方法は、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリを、プリフェッチバッファ内に記憶するステップ
をさらに含む。
第2の態様によれば、本発明は、物理メモリアドレスを問い合わせる装置であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するように構成された判定モジュールと、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成された実行モジュールであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、実行モジュールと、
第2のスレッドに対応するメモリアドレス指定要求メッセージを受信するように構成された受信モジュールであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信モジュールと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成された問い合わせモジュールと
を備える装置を提供する。
第2の態様の第1の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、第1の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する、又は、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、第2の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する
ように具体的に構成される。
第2の態様の第1の取り得る実装手法によれば、第2の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第3の物理アドレスについてメモリに問い合わせる
ようにさらに構成される。
第2の態様の第1の取り得る実装手法及び第2の取り得る実装手法によれば、第3の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第2の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除する
ようにさらに構成される。
第2の態様の第2の取り得る実装手法によれば、第4の取り得る実装手法において、問い合わせモジュールは、
仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する
ようにさらに構成される。
第2の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、及び第4の取り得る実装手法によれば、第5の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成される。
の態様の第5の取り得る実装手法によれば、第6の取り得る実装手法において、実行モジュールは、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成される。
第2の態様の第1の取り得る実装手法、第2の取り得る実装手法、第3の取り得る実装手法、第4の取り得る実装手法、第5の取り得る実装手法、及び第6の取り得る実装手法によれば、第7の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする、又は、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする
ように具体的に構成される。
第2の態様の第7の取り得る実装手法によれば、第8の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリを、プリフェッチバッファ内に記憶する
ようにさらに構成される。
第3の態様によれば、本発明は、メモリと、バイパス変換バッファと、スタンバイバッファと、プリフェッチバッファと、プロセッサとを備える、物理メモリアドレスを問い合わせる装置であって、
メモリは、命令を記憶するように構成され、
バイパス変換バッファは、変換索引バッファTLBを記憶するように構成され、
スタンバイバッファは、バイパス変換バッファに記憶されているTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成され、
プリフェッチバッファは、スタンバイバッファに記憶されている、対応するスレッドのページテーブルエントリを記憶するように構成され、
プロセッサは、メモリ内に記憶された命令を実行して、第1の態様に係る、物理メモリアドレスを問い合わせる方法を実行するように構成される、
装置を提供する。
本発明において提供される、物理メモリアドレスを問い合わせる方法及び装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
本発明の実施形態又は従来技術における技術的解決策をより明確に説明するために、下記は、実施形態又は従来技術を説明するために必要とされる添付の図面を簡単に紹介する。明らかに、添付の図面は、下記の説明において、本発明のいくつかの実施形態を示し、当業者は、創作的努力なしに、これらの添付の図面から他の図面をさらに導き出し得る。
本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。 本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。 バイパス変換バッファの変換索引バッファTLBにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。 対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファPB内に記憶するステップの概略図である。 仮想アドレスVAに従って物理メモリアドレスのアドレス指定をするステップの概略図である。 本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。 本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。
本発明の実施形態の目的、技術的解決策、及び利点をより明確にするために、下記は、本発明の実施形態における技術的解決策を、本発明の実施形態において添付の図面を参照しつつ、明確かつ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の一部ではあるが、全部ではない。創作的努力なしに本発明の実施形態に基づいて当業者によって得られる全ての他の実施形態は、本発明の保護範囲内に収まるべきものである。
図1は、本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。図1に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、PC、PAD、及び携帯電話に対して適用可能であり得る。下記のステップは、前述の様々な端末デバイスにおける中央演算処理装置(Central Processing Unit,略してCPU)によって実行され得、具体的には、CPUにおけるメモリ管理ユニットMMUなどによって実行され得る。本方法は、具体的には、下記を含む:
S101:プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第1のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第2のスレッドは、第1のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
S102:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
具体的には、アドレス指定を実行するべき、S101に従って判定されるスレッド、すなわち、第2のスレッドは、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファPB内に記憶する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。プリフェッチバッファPBに記憶されるページテーブルエントリは、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき各対応するスレッドのIDを含む。
本明細書において留意すべきことは、スタンバイバッファの数が1つ又は複数となり得ることである。例えば、各スレッドは、1つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、1つ又は複数となり得る。例えば、各スレッドは、1つのバイパス変換バッファ及び1つのプリフェッチバッファに対応し得る。
S103:第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
具体的には、アドレス指定を実行するべきスレッド、すなわち、第2のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスVAを伝達する。
S104:仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファPBに記憶されたページテーブルエントリは、仮想アドレスVAに従って、同時に問い合わせをされ得る。仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファ又はプリフェッチバッファPBに存在する場合、データアクセスは、この物理アドレスを使用することによって実行される。仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファPBにも存在しない場合、メモリに問い合わせがされて、仮想アドレスVAに対応する物理アドレスが得られる。
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
図2は、本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。図2に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、PC、PAD、及び携帯電話に対して適用可能であり得る。下記のステップは、中央演算処理装置CPUによって実行され得、具体的には、CPUにおけるメモリ管理ユニットMMUなどによって実行され得る。本方法は、具体的には、下記を含む:
S201:プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第1のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第2のスレッドは、第1のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
S202:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
下記のステップS203又はS204は、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数と、プリフェッチバッファPBの記憶容量との間の関係に従って、ここでは選択的に実行され得る。
S203:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
S204:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
具体的には、アドレス指定を実行するべき、S201に従って判定されるスレッド、すなわち、第2のスレッドは、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの一部又は全部をプリフェッチバッファPB内に記憶し、PBに現在記憶されているデータを削除する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
随意的な実装手法として、各スレッドは、1つのスタンバイバッファに対応し得、各スタンバイバッファに記憶されるページテーブルエントリは、TLBにおいて設定時間内に問い合わせをされない、対応するスレッドのページテーブルエントリであり得る。図3は、バイパス変換バッファの変換索引バッファTLBにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。図3に示されるように、バイパス変換バッファの変換索引バッファTLBに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。各スレッドに対応するスタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応を含む。スタンバイバッファ選択ユニットは、設定時間内に問い合わせをされず、TLBに記憶されるページテーブルエントリ及び対応するスレッドIDを受信し、このスレッドIDに従って、対応するスレッドのスタンバイバッファ内にページテーブルエントリを記憶する。
図4は、対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファPB内に記憶するステップの概略図である。図4に示されるように、スタンバイバッファ選択ユニットは、アドレス指定を実行するべき判定済みのスレッドに従って、対応するスレッドIDと、アドレス指定を実行するべきスレッドのスタンバイバッファ内のページテーブルエントリの一部又は全部とを、プリフェッチバッファPB内に記憶し、それにより、プリフェッチバッファPBは、TLBにおいて置換される、アドレス指定を実行するべきスレッドのページテーブルエントリを記憶する。TLBにおいて置換されるこれらのページテーブルエントリのうちの大部分は、ページテーブルエントリが必要とされるという理由で置換されるのではなく、TLBの記憶容量が限定されており、スレッドの数が大きいため、いくつかのスレッドのよく使用されるページテーブルエントリが置換されるという理由で置換される。
本明細書においては、32個のスレッドが、128個のページテーブルエントリの記憶容量を有する1つのバイパス変換バッファを共有し、各スレッドに対応するスタンバイバッファの記憶容量及び各スレッドに対応するプリフェッチバッファPBの記憶容量が、32個のページテーブルエントリに設定され得、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の全てのページテーブルエントリが、プリフェッチバッファPB内に記憶され得、プリフェッチバッファPBに現在記憶されているデータは削除され得る、と仮定される。バイパス変換バッファ及びプリフェッチバッファPBは、仮想アドレスVA間の比較を、連想記憶メモリ(content addressable memory,略してCAM)を使用することによって完了させ得る。プリフェッチバッファPBの記憶容量の増加は、チップ消費電力を増加させ得、したがって、比較的小さい記憶容量を有するプリフェッチバッファPB、例えば、8個のページテーブルエントリの記憶容量を有するプリフェッチバッファPBが選択され得る。それにより、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の最短の記憶時間を有する8個のページテーブルエントリが、プリフェッチバッファPB内に記憶され得、プリフェッチバッファPBに現在記憶されているデータは削除され得る。
S205:第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
具体的には、アドレス指定を実行するべきスレッド、すなわち、第2のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスVAを伝達する。
S206:仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
下記のステップS207、S208、又はS209は、バイパス変換バッファ及びプリフェッチバッファPBにおけるアドレス指定結果に従って、ここでは選択的に実行され得る。
S207:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、第1の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ。
S208:仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、第2の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行し、仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリをバイパス変換バッファに記憶し、仮想アドレス及び第2の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ。
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
S209:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第3の物理アドレスについてメモリに問い合わせをし、仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する。
具体的には、図5は、仮想アドレスVAに従って物理メモリアドレスのアドレス指定をするステップの概略図である。図5に示されるように、バイパス変換バッファに記憶されるページテーブルエントリ及びプリフェッチバッファPBに記憶されるページテーブルエントリは、仮想アドレスVAに従って、同時に問い合わせをされ得る。
仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファに存在する場合、すなわち、バイパス変換バッファのTLBがヒットした(TLB−Hit)場合、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在してもしなくても、すなわち、プリフェッチバッファPBが、ヒットしても(PB−Hit)又はミスしても(PB−Miss)、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第1の物理アドレスPA1に従って実行される。
仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファに存在しない、すなわち、バイパス変換バッファのTLBがミスした(TLB−Miss)が、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在する、すなわち、プリフェッチバッファPBがヒットした(PB−Hit)場合、データアクセスは、プリフェッチバッファPB内に発見される物理アドレス、すなわち、第2の物理アドレスPA2に従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリが、バイパス変換バッファのTLB内に記憶される。プリフェッチバッファPBが、スタンバイバッファ内の第2のスレッドのページテーブルエントリの一部のみを記憶する場合、例えば、前述のプリフェッチバッファPBが、第2のスレッドの、スタンバイバッファにおける最短の記憶時間を有する8個のページテーブルエントリのみを記憶する場合、プリフェッチバッファPB内のヒットしたページテーブルエントリは、TLB内に記憶され、第2のスレッドの、比較的短い記憶時間を有する次のページテーブルエントリは、スタンバイバッファから抽出され、プリフェッチバッファPB内に記憶され得る。
仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファPBにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファPBとの双方がミスした(TLB−Miss及びPB−Miss)場合、仮想アドレスVAと、仮想アドレスVAに対応する物理アドレスについての対応するスレッドID、すなわち、第3の物理アドレスPA3とに従って、ページテーブル走査ユニットを使用することによって、メモリに問い合わせがされる。データアクセスは、発見された第3の物理アドレスPA3に従って実行される。発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリ、及び対応するスレッドIDは、バイパス変換バッファのTLB内に同時に記憶される。
ステップS208又はS209について、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリは、スタンバイバッファ内に記憶され、設定時間内に問い合わせをされないページテーブルエントリは、バイパス変換バッファから削除される。
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、スタンバイバッファから削除される。
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し(First Input First Output,略してFIFO)」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
図6は、本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。図6に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置60は、物理メモリアドレスを問い合わせる前述の方法を実行する特定のエンティティであり、具体的には、判定モジュール61と、実行モジュール62と、受信モジュール63と、問い合わせモジュール64とを含む。
判定モジュール61は、プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するように構成される。
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第1のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第2のスレッドは、第1のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
実行モジュール62は、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
具体的には、下記の2つのケースが、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数とプリフェッチバッファPBの記憶容量との間の関係に従って存在する。
ケース1:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第2のスレッドの全てのページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
ケース2:スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第2のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
具体的には、アドレス指定を実行するべき、判定モジュール61によって判定されるスレッド、すなわち、第2のスレッドに従って、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの一部又は全部が、プリフェッチバッファPB内に記憶される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのIDを含む。プリフェッチバッファPBに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき対応するスレッドのIDを含む。
ここで留意するべきことは、スタンバイバッファの数が1つ又は複数であり得ることである。例えば、各スレッドは、1つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、1つ又は複数であり得る。例えば、各スレッドは、1つのバイパス変換バッファ及び1つのプリフェッチバッファに対応し得る。
受信モジュール63は、第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するように構成される。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
具体的には、アドレス指定を実行するべきスレッド、すなわち、第2のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスVAを伝達する。
問い合わせモジュール64は、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成される。
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファPBに記憶されたページテーブルエントリは、仮想アドレスVAに従って、同時に問い合わせをされ得る。下記の3つのケースは、ここでは、バイパス変換バッファ及びプリフェッチバッファPBにおけるアドレス指定結果に従って存在し得る。
ケース1:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在する場合、メモリは、第1の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。
具体的には、仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファに存在する場合、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在してもしなくても、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第1の物理アドレスに従って実行される。
ケース2:仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、メモリは、第2の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは、バイパス変換バッファ内に記憶され、仮想アドレス及び第2の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは削除される。
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第1の物理アドレスは、バイパス変換バッファには存在しないが、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリのうちの1つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
具体的には、仮想アドレスVAに対応する物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスVAに対応する物理アドレスが、プリフェッチバッファPBに存在する場合、データアクセスは、プリフェッチバッファPB内に発見される物理アドレス、すなわち、第2の物理アドレスに従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページエントリは、バイパス変換バッファのTLB内に記憶される。プリフェッチバッファPBが、スタンバイバッファ内の第2のスレッドのページテーブルエントリのうちの一部のみを記憶する場合、プリフェッチバッファPB内のヒットしたページテーブルエントリが、TLB内に記憶された後に、1つのページテーブルエントリが、スタンバイバッファから読み出され、プリフェッチバッファPB内に記憶され得る。
ケース3:仮想アドレスに対応する第1の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第2の物理アドレスが、プリフェッチバッファに存在しない場合、メモリは、仮想アドレスに対応する第3の物理アドレスについて問い合わせをされ、仮想アドレス及び第3の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリは、バイパス変換バッファ内に記憶される。
具体的には、仮想アドレスVAに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファPBにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファPBとの双方がミスした場合、メモリは、仮想アドレスVAに対応する物理アドレス、すなわち、第3の物理アドレスについて問い合わせをされる必要があり、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリは、バイパス変換バッファのTLB内に記憶される。
さらに、実行モジュール62は、
スタンバイバッファに記憶されている第2のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成され得る。
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
さらに、実行モジュール62は、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成され得る。
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し(FIFO)」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
図7は、本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。図7に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置は、メモリ71と、バイパス変換バッファ72と、スタンバイバッファ73と、プリフェッチバッファ74と、プロセッサ75とを含む。
メモリ71は、命令を記憶するように構成される。
バイパス変換バッファ72は、変換索引バッファTLBを記憶するように構成される。
スタンバイバッファ73は、バイパス変換バッファに記憶されるTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成される。
プリフェッチバッファ74は、スタンバイバッファに記憶される、対応するスレッドのページテーブルエントリを記憶するように構成される。
プロセッサ75は、メモリに記憶された命令を実行して、図1又は図2に示される、物理メモリアドレスを問い合わせる方法を実行するように構成される。
具体的には、メモリ71は、高速RAMメモリを含み得、又は不揮発性メモリ(non−volatile memory)、例えば、少なくとも1つのディスクメモリを含み得る。随意的に、メモリ71は、少なくとも1つの記憶装置を含み得る。メモリ71は、命令を記憶し、物理メモリアドレスを問い合わせる装置が実行される場合、プロセッサ75は、メモリ71と通信し、プロセッサ75は、命令を実行し、それにより、物理メモリアドレスを問い合わせる装置は、本発明の実施形態において提供される、物理メモリアドレスを問い合わせる方法を実行することができる。
スタンバイバッファ73は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのIDを含み得る。バイパス変換バッファ72は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのIDを含み得る。プリフェッチバッファ74は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、アドレス指定を実行するべき対応するスレッドのIDを含み得る。
ここで留意すべきことは、スタンバイバッファ73の数が1つ又は複数であり得ることである。例えば、各スレッドは、1つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファ72の数とプリフェッチバッファ74の数との双方は、1つ又は複数であり得る。例えば、各スレッドは、1つのバイパス変換バッファ及び1つのプリフェッチバッファに対応し得る。
この実施形態におけるプロセッサは、集積回路チップであってもよく、信号処理能力を有する。実装プロセスにおいて、前述の方法におけるステップは、プロセッサ内のハードウェアの集積論理回路又はソフトウェアの形式の命令を使用することによって完了され得る。前述のプロセッサは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向けプロセッサ(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)若しくは別のプログラマブルロジックコンポーネント、ディスクリートゲート若しくはトランジスタロジックコンポーネント、又はディスクリートハードウェアコンポーネントであってもよく、これらは、本発明の実施形態において開示された方法、ステップ、及び論理ブロック図を実装又は実行し得る。前述のプロセッサは、マイクロプロセッサであってもよく、又は前述のプロセッサは、任意の従来のプロセッサなどであってもよい。本発明の実施形態を参照しつつ開示された方法のステップは、ハードウェアプロセッサを用いて直接実行及び完了されてもよく、又はプロセッサ内のハードウェアモジュールとソフトウェアモジュールとの組み合わせを用いて実行及び完了されてもよい。ソフトウェアモジュールは、本技術分野における成熟した記憶媒体、例えば、ランダムアクセスメモリ、フラッシュメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的消去可能プログラマブルメモリ、又はレジスタなどに位置し得る。記憶媒体は、メモリに位置し、プロセッサは、メモリ内の情報を読出し、前述の方法におけるステップを、プロセッサのハードウェアとの組み合わせにおいて完了する。
本発明の実施形態は、チップをさらに提供する。ここで、チップは、物理メモリアドレスを問い合わせるように構成され、チップは、前述のプロセッサを含み得る。
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、プロセッサ75は、メモリ71に記憶される命令を実行し、第2のスレッドのアドレス指定されるべき仮想アドレスに従って、バイパス変換バッファ及びプリフェッチバッファに同時に問い合わせをする。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第2のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
当業者は、前述の方法実施形態のステップの全部又は一部がプログラム命令関連ハードウェアによって実装され得ることを理解し得る。前述のプログラムは、コンピュータ読取可能な媒体に記憶され得る。プログラムが実行されると、前述の方法実施形態のステップが実行される。前述の記憶媒体は、プログラムコードを記憶することができる任意の媒体、例えば、ROM、RAM、磁気ディスク、又は光ディスクなどを含む。
最後に、留意すべきことは、前述の実施形態が本発明の技術的解決策を説明することを意図されたものに過ぎず、本発明を限定することを意図されたものではないことである。本発明は、前述の実施形態を参照しつつ詳細に説明されているが、当業者は、当業者が前述の実施形態において説明された技術的解決策に対して変形を行い得ること、又はその技術的特徴の一部若しくは全部に対して均等な置換を行い得ることを理解するべきである。しかしながら、こうした変形又は置換は、対応する技術的解決策の本質を、本発明の実施形態における技術的解決策の範囲から逸脱させるものではない。

Claims (19)

  1. 物理メモリアドレスを問い合わせる方法であって、
    プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するステップと、
    スタンバイバッファに記憶されている前記第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、前記スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、
    前記第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップであって、前記メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信するステップと、
    前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせるステップと
    を含む、方法。
  2. 前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせる前記ステップが、
    前記仮想アドレスに対応する第1の物理アドレスが、前記バイパス変換バッファに存在する場合、前記第1の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行するステップ、又は、
    前記仮想アドレスに対応する第1の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する第2の物理アドレスが、前記プリフェッチバッファに存在する場合、前記第2の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行するステップ
    を含む、請求項1に記載の方法。
  3. 前記方法が、
    前記仮想アドレスに対応する前記第1の物理アドレスが、前記バイパス変換バッファに存在せず、前記仮想アドレスに対応する前記第2の物理アドレスが、前記プリフェッチバッファに存在しない場合、前記仮想アドレスに対応する第3の物理アドレスについて前記メモリに問い合わせるステップ
    をさらに含む、請求項2に記載の方法。
  4. 前記仮想アドレスに対応する前記第1の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第2の物理アドレスが、前記プリフェッチバッファに存在する場合、前記方法は、
    前記仮想アドレス及び前記第2の物理アドレスに対応し、前記プリフェッチバッファに記憶されているページテーブルエントリを前記バイパス変換バッファ内に記憶し、前記仮想アドレス及び前記第2の物理アドレスに対応する前記ページテーブルエントリを前記プリフェッチバッファから削除するステップ
    をさらに含む、請求項2に記載の方法。
  5. 前記方法が、
    前記仮想アドレス及び前記第3の物理アドレスに対応し、前記メモリ内に発見されるページテーブルエントリを前記バイパス変換バッファ内に記憶するステップ
    をさらに含む、請求項3に記載の方法。
  6. スタンバイバッファに記憶されている前記第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶する前記ステップの前に、前記方法が、
    前記バイパス変換バッファに記憶されたページテーブルエントリの数が、前記バイパス変換バッファの記憶容量を超える場合、前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶するステップと、前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記バイパス変換バッファから削除するステップと
    をさらに含む、請求項1から5のいずれか一項に記載の方法。
  7. 前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶する前記ステップの後に、前記方法が、
    前記スタンバイバッファに記憶されたページテーブルエントリの数が、前記スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリを前記スタンバイバッファから削除するステップ
    をさらに含む、請求項6に記載の方法。
  8. スタンバイバッファに記憶されている前記第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶する前記ステップが、
    前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量以下である場合、前記スタンバイバッファに記憶されている、前記第2のスレッドの全ての前記ページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きするステップ、又は、
    前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記スタンバイバッファに記憶されている前記第2のスレッドの、前記プリフェッチバッファの前記記憶容量に等しい数のページテーブルエントリを前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きするステップ
    を含む、請求項1から7のいずれか一項に記載の方法。
  9. 前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリの前記数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記方法が、
    前記仮想アドレスに対応する前記第1の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第2の物理アドレスが、前記プリフェッチバッファに存在する場合、前記プリフェッチバッファに記憶された前記ページテーブルエントリを除いて、前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリのうちの1つのページテーブルエントリを、前記プリフェッチバッファ内に記憶するステップ
    をさらに含む、請求項8に記載の方法。
  10. メモリ内の物理アドレスを問い合わせる装置であって、
    プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第1のスレッドから第2のスレッドへ将来の設定時間内に切り替えられると判定するように構成された判定モジュールと、
    スタンバイバッファに記憶されている前記第2のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成された実行モジュールであって、前記スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファTLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、実行モジュールと、
    前記第2のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するように構成された受信モジュールであって、前記メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信モジュールと、
    前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせるように構成された問い合わせモジュールと
    を備える、装置。
  11. 前記問い合わせモジュールが、
    前記仮想アドレスに対応する第1の物理アドレスが、前記バイパス変換バッファに存在する場合、前記第1の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行する、又は、
    前記仮想アドレスに対応する第1の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する第2の物理アドレスが、前記プリフェッチバッファに存在する場合、前記第2の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行する
    ように具体的に構成される、請求項10に記載の装置。
  12. 前記問い合わせモジュールが、
    前記仮想アドレスに対応する前記第1の物理アドレスが、前記バイパス変換バッファに存在せず、前記仮想アドレスに対応する前記第2の物理アドレスが、前記プリフェッチバッファに存在しない場合、前記仮想アドレスに対応する第3の物理アドレスについて前記メモリに問い合わせる
    ようにさらに構成される、請求項11に記載の装置。
  13. 前記問い合わせモジュールが、
    前記仮想アドレスに対応する前記第1の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第2の物理アドレスが、前記プリフェッチバッファに存在する場合、前記仮想アドレス及び前記第2の物理アドレスに対応し、前記プリフェッチバッファに記憶されているページテーブルエントリを前記バイパス変換バッファ内に記憶し、前記仮想アドレス及び前記第2の物理アドレスに対応する前記ページテーブルエントリを前記プリフェッチバッファから削除する
    ようにさらに構成される、請求項11又は12に記載の装置。
  14. 前記問い合わせモジュールが、
    前記仮想アドレス及び前記第3の物理アドレスに対応し、前記メモリ内に発見されるページテーブルエントリを前記バイパス変換バッファ内に記憶する
    ようにさらに構成される、請求項12に記載の装置。
  15. 前記実行モジュールが、
    スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリが、前記プリフェッチバッファ内に記憶される前に、前記バイパス変換バッファに記憶されたページテーブルエントリの数が、前記バイパス変換バッファの記憶容量を超える場合、前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶し、前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記バイパス変換バッファから削除する
    ようにさらに構成される、請求項10から14のいずれか一項に記載の装置。
  16. 前記実行モジュールが、
    前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリが、前記スタンバイバッファ内に記憶された後に、前記スタンバイバッファに記憶されたページテーブルエントリの数が、前記スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリを前記スタンバイバッファから削除する
    ようにさらに構成される、請求項15に記載の装置。
  17. 前記実行モジュールが、
    前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量以下である場合、前記スタンバイバッファに記憶されている、前記第2のスレッドの全ての前記ページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きする、又は、
    前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記スタンバイバッファに記憶されている前記第2のスレッドの、前記プリフェッチバッファの前記記憶容量に等しい数のページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きする
    ように具体的に構成される、請求項10から16のいずれか一項に記載の装置。
  18. 前記実行モジュールが、
    前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリの前記数が、前記プリフェッチバッファの記憶容量よりも大きく、前記仮想アドレスに対応する前記第1の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第2の物理アドレスが、前記プリフェッチバッファに存在する場合、前記プリフェッチバッファに記憶された前記ページテーブルエントリを除いて、前記スタンバイバッファに記憶されている前記第2のスレッドの前記ページテーブルエントリのうちの1つのページテーブルエントリを、前記プリフェッチバッファ内に記憶する
    ようにさらに構成される、請求項17に記載の装置。
  19. メモリと、バイパス変換バッファと、スタンバイバッファと、プリフェッチバッファと、プロセッサとを備える、物理メモリアドレスを問い合わせる装置であって、
    前記メモリは、命令を記憶するように構成され、
    前記バイパス変換バッファは、変換索引バッファTLBを記憶するように構成され、
    前記スタンバイバッファは、前記バイパス変換バッファに記憶されている前記TLBにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成され、
    前記プリフェッチバッファは、前記スタンバイバッファに記憶されている、対応するスレッドのページテーブルエントリを記憶するように構成され、
    前記プロセッサは、前記メモリ内に記憶された前記命令を実行して、請求項1から9のいずれか一項に記載の、物理メモリアドレスを問い合わせる前記方法を実行するように構成される、
    装置。
JP2016535319A 2013-08-20 2014-08-07 物理メモリアドレスを問い合わせる方法及び装置 Active JP6198952B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310364417.1 2013-08-20
CN201310364417.1A CN104424117B (zh) 2013-08-20 2013-08-20 内存物理地址查询方法和装置
PCT/CN2014/083875 WO2015024451A1 (zh) 2013-08-20 2014-08-07 内存物理地址查询方法和装置

Publications (2)

Publication Number Publication Date
JP2016528640A true JP2016528640A (ja) 2016-09-15
JP6198952B2 JP6198952B2 (ja) 2017-09-20

Family

ID=52483060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016535319A Active JP6198952B2 (ja) 2013-08-20 2014-08-07 物理メモリアドレスを問い合わせる方法及び装置

Country Status (6)

Country Link
US (1) US10114762B2 (ja)
EP (1) EP3023878B1 (ja)
JP (1) JP6198952B2 (ja)
KR (1) KR101768828B1 (ja)
CN (2) CN107608912B (ja)
WO (1) WO2015024451A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740621B2 (en) * 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US10503661B2 (en) 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US9672159B2 (en) * 2015-07-02 2017-06-06 Arm Limited Translation buffer unit management
CN109684238A (zh) * 2018-12-19 2019-04-26 湖南国科微电子股份有限公司 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘
CN111552653B (zh) * 2020-05-14 2021-01-29 上海燧原科技有限公司 页表的读取方法、装置、设备及计算机存储介质
CN114238167B (zh) * 2021-12-14 2022-09-09 海光信息技术股份有限公司 信息预取方法、处理器、电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5998367A (ja) * 1982-11-26 1984-06-06 Nec Corp アドレス変換バツフア方式
JPH0652058A (ja) * 1992-07-30 1994-02-25 Matsushita Electric Ind Co Ltd アドレス変換装置
US20060206686A1 (en) * 2005-03-08 2006-09-14 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
JP2011028610A (ja) * 2009-07-28 2011-02-10 Fujitsu Ltd プロセッサ及び演算処理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181590B2 (en) * 2003-08-28 2007-02-20 Intel Corporation Method for page sharing in a processor with multiple threads and pre-validated caches
US8219780B2 (en) * 2005-09-16 2012-07-10 Hewlett-Packard Development Company, L.P. Mitigating context switch cache miss penalty
US8213393B2 (en) * 2006-08-21 2012-07-03 Citrix Systems, Inc. Methods for associating an IP address to a user via an appliance
CN100487660C (zh) * 2007-05-28 2009-05-13 中兴通讯股份有限公司 一种多线程处理器动态内存管理系统及方法
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
US8161246B2 (en) * 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8397049B2 (en) 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US8880844B1 (en) * 2010-03-12 2014-11-04 Trustees Of Princeton University Inter-core cooperative TLB prefetchers
CN101833440B (zh) * 2010-04-30 2013-01-02 西安交通大学 编译器支持下的推测多线程内存数据同步执行方法及装置
WO2012149723A1 (zh) 2011-09-02 2012-11-08 华为技术有限公司 虚拟内存区域的查询、遍历方法及装置
CN102708211A (zh) * 2012-05-30 2012-10-03 福建星网视易信息系统有限公司 一种基于多线程检索并加载数据的方法
US20140108766A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetching tablewalk address translations
US9349386B2 (en) * 2013-03-07 2016-05-24 Analog Device Global System and method for processor wake-up based on sensor data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5998367A (ja) * 1982-11-26 1984-06-06 Nec Corp アドレス変換バツフア方式
JPH0652058A (ja) * 1992-07-30 1994-02-25 Matsushita Electric Ind Co Ltd アドレス変換装置
US20060206686A1 (en) * 2005-03-08 2006-09-14 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
JP2011028610A (ja) * 2009-07-28 2011-02-10 Fujitsu Ltd プロセッサ及び演算処理方法

Also Published As

Publication number Publication date
EP3023878B1 (en) 2019-01-30
KR20160040665A (ko) 2016-04-14
CN107608912A (zh) 2018-01-19
CN104424117A (zh) 2015-03-18
WO2015024451A1 (zh) 2015-02-26
US10114762B2 (en) 2018-10-30
CN104424117B (zh) 2017-09-05
KR101768828B1 (ko) 2017-08-16
JP6198952B2 (ja) 2017-09-20
US20160170904A1 (en) 2016-06-16
EP3023878A4 (en) 2016-07-06
EP3023878A1 (en) 2016-05-25
CN107608912B (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
JP6198952B2 (ja) 物理メモリアドレスを問い合わせる方法及び装置
US20200057729A1 (en) Memory access method and computer system
US7805588B2 (en) Caching memory attribute indicators with cached memory data field
TWI531912B (zh) 具有用於多上下文計算引擎的轉譯後備緩衝之處理器、用於致能多執行緒以存取於處理器中之資源之系統和方法
KR100562906B1 (ko) 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
US8966219B2 (en) Address translation through an intermediate address space
US7793070B2 (en) Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
JP2020529656A (ja) アドレス変換キャッシュ
CN111061655B (zh) 存储设备的地址转换方法与设备
JP6088951B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
JP2009020881A (ja) 可変のページサイズのメモリ編成を実装する処理システム
US20070094476A1 (en) Updating multiple levels of translation lookaside buffers (TLBs) field
US20180089094A1 (en) Precise invalidation of virtually tagged caches
US9875191B2 (en) Electronic device having scratchpad memory and management method for scratchpad memory
WO2014201998A1 (zh) 一种tlb管理方法及装置
US8543791B2 (en) Apparatus and method of reducing page fault rate in virtual memory system
US8015361B2 (en) Memory-centric page table walker
US9836410B2 (en) Burst translation look-aside buffer
KR102482516B1 (ko) 메모리 어드레스 변환
Bletsch ECE 650 Systems Programming & Engineering Spring 2018

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170703

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170822

R150 Certificate of patent or registration of utility model

Ref document number: 6198952

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250