JP6636526B2 - データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス - Google Patents

データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス Download PDF

Info

Publication number
JP6636526B2
JP6636526B2 JP2017533440A JP2017533440A JP6636526B2 JP 6636526 B2 JP6636526 B2 JP 6636526B2 JP 2017533440 A JP2017533440 A JP 2017533440A JP 2017533440 A JP2017533440 A JP 2017533440A JP 6636526 B2 JP6636526 B2 JP 6636526B2
Authority
JP
Japan
Prior art keywords
page table
control device
management unit
memory control
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017533440A
Other languages
English (en)
Other versions
JP2018503903A (ja
Inventor
云 ▲陳▼
云 ▲陳▼
广▲飛▼ ▲張▼
广▲飛▼ ▲張▼
昆鵬 宋
昆鵬 宋
Original Assignee
ホアウェイ・テクノロジーズ・カンパニー・リミテッド
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 ホアウェイ・テクノロジーズ・カンパニー・リミテッド filed Critical ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Publication of JP2018503903A publication Critical patent/JP2018503903A/ja
Application granted granted Critical
Publication of JP6636526B2 publication Critical patent/JP6636526B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • G06F2212/1024Latency reduction
    • 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
    • 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/684TLB miss handling

Landscapes

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

Description

本発明は、コンピュータ技術の分野に関し、詳細には、メモリ管理ユニット、メモリ制御デバイス、およびデータ処理方法に関する。
コンピュータアーキテクチャ技術の発展とともに、マルチコア(Multi-Core)アーキテクチャ、さらにはメニーコア(Many Core)アーキテクチャをプロセッサチップ上で統合することは徐々に主流になっている。このアーキテクチャタイプのチップは、マルチコアプロセッサチップと呼ばれるか、またはチップマルチプロセッサ(Chip Multi-Processors、CMPs)チップと呼ばれる。既存のマルチコアプロセッサチップは概して、不均一キャッシュアーキテクチャ(Non-Uniformed Cache Architecture、NUCA)を有する。特に、各プロセッサコア(Core)は、レベル1キャッシュ(Level 1 cache)をプライベートに所有し、マルチコアプロセッサチップ上のプロセッサコアは、論理的にはレベル2キャッシュ(Level 2 cache)を共有する。ただし、プロセッサチップ上のキャッシュ容量は限られているので、マルチコアプロセッサチップの稼動中プロセスに関与するデータの一部は、マルチコアプロセッサチップの外のメモリデバイスにも記憶される場合がある。マルチコアプロセッサチップ上に統合されたメモリコントローラを使うことによって、マルチコアプロセッサチップは通信し、メモリデバイスは通信を実施する。
現代のオペレーティングシステムは、メモリ管理のための抽象化技術、すなわち、仮想メモリ(Virtual Memory)技術を提供する。つまり、プログラムは、仮想アドレス空間(Virtual Address Space)中で稼動し、どのプログラムも仮想メモリ中のアドレスを使う。オペレーティングシステムは、プログラムによって送られた仮想アドレスの、現実の物理アドレスへの「変換」において、メモリ管理ユニット(Memory Management Unit、MMU)を支援する。仮想アドレスと物理アドレスとの間の変換関係は概して、ページテーブル(Page Table)に記憶される。ページテーブルは、比較的大きい空間を占め、したがって、概して、チップの外のメモリデバイスに記憶され、いくつかの最も頻繁に使われるページテーブルのみが、プロセッサチップ上のトランスレーションルックアサイドバッファ(Translation Look-aside Buffer、TLB)に記憶される。
したがって、仮想アドレスを毎回取得した後、プロセッサは最初に、TLBから、仮想アドレスに対応する物理アドレスを照会する。仮想アドレスに対応する物理アドレスがTLB中に見つからない場合、プロセッサは、チップの外のメモリデバイスから、仮想アドレスに対応する物理アドレスを照会する必要がある。ページテーブルは概して、複数のレベルを有して設計されるので、プロセッサは、プロセッサによって必要とされる物理アドレスを取得するために、メモリデバイスに複数回アクセスする必要がある。したがって、メモリデバイスへのアクセスのたびに、プロセッサチップ上の通信チャネルへの負担を引き起こす。
本発明の実施形態は、物理アドレスの取得のためにプロセッサがメモリデバイスに複数回アクセスするプロセスがプロセッサチップ上の通信チャネルへの負担を引き起こすという問題を解決するのを助けるための、データ処理方法、メモリ管理ユニット、およびメモリ制御デバイスを提供する。
本発明の実施形態の第1の態様は、メモリ管理ユニットによって、仮想アドレスを受信するステップと、メモリ管理ユニットによって、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断するステップと、メモリ管理ユニットによって、ページテーブルベースアドレスを取得するためにページ・テーブル・ベース・アドレス・レジスタを読み取るステップと、メモリ管理ユニットによって、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子IDを取得するステップと、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップと、メモリ管理ユニットによって、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信するステップであって、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得される、ステップと、メモリ管理ユニットによって、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するステップとを含むデータ処理方法を提供する。
第1の態様に関連して、第1の態様の第1の実装様式では、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップの前に、データ処理方法は、メモリ管理ユニットによって、ページテーブルウォーク動作識別子を生成するステップをさらに含み、ページテーブルウォーク動作識別子はページテーブルウォーク動作を示し、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップは、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、メモリ制御デバイスのID、およびページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化するステップと、メモリ管理ユニットによって、オンチップルータを使うことによってデータパケットをメモリ制御デバイスに送るステップとを含む。
第1の態様の第1の実装様式に関連して、第1の態様の第2の実装様式では、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップの前に、データ処理方法は、メモリ管理ユニットによって、仮想アドレスを送るスレッドのIDを取得するステップと、メモリ管理ユニットによって、メモリ管理ユニットに対応するプロセッサのIDを取得するステップであって、データパケットは、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDをさらに運ぶ、ステップとをさらに含む。
第1の態様の第1または第2の実装様式に関連して、第1の態様の第3の実装様式では、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップの前に、データ処理方法は、メモリ管理ユニットによって、仮想アドレスを送るスレッドの優先度情報を取得するステップをさらに含み、データパケットは優先度情報をさらに運ぶ。
第1の態様または第1の態様の第1もしくは第2もしくは第3の実装様式に関連して、第1の態様の第4の実装様式では、メモリ管理ユニットによって、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信するステップは、メモリ管理ユニットによって、メモリ制御デバイスによって送られたデータパケットを受信するステップを含み、メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。
第1の態様の第4の実装様式に関連して、第1の態様の第5の実装様式では、メモリ制御デバイスによって送られるデータパケットは、ページテーブルウォーク動作完了識別子をさらに含み、メモリ管理ユニットによって、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するステップの前に、データ処理方法は、メモリ管理ユニットによって、ページテーブルウォーク動作完了識別子に従って、メモリ制御デバイスによって送られたデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認するステップをさらに含む。
第1の態様の第4または第5の実装様式に関連して、第1の態様の第6の実装様式では、メモリ制御デバイスによって送られるデータパケットはスレッドのIDをさらに含み、メモリ管理ユニットによって、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するステップの後、方法は、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化するステップをさらに含む。
第1の態様の実装様式のうちのいずれか1つに関して、第1の態様の第7の実装様式では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットは、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含んでよく、仮想アドレスの識別子は、仮想アドレスを示すのに使われ、メモリ管理ユニットは、仮想アドレスと仮想アドレスの識別子との間の対応を記憶し、メモリ管理ユニットは、仮想アドレスのものであるとともにメモリ制御デバイスによって送られる識別子をさらに受信し、仮想アドレスと仮想アドレスの識別子との間の記憶された対応に従って仮想アドレスを取得する。
本発明の実施形態の第2の態様は、メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するステップと、メモリ制御デバイスによって、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップと、メモリ制御デバイスによってメモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るステップとを含むデータ処理方法を提供する。
第2の態様に関連して、第2の態様の第1の実装様式では、メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するステップは、メモリ制御デバイスによって、オンチップルータを使うことによって、メモリ管理ユニットによって送られたデータパケットを受信するステップを含み、データパケットは、仮想アドレス、ページテーブルベースアドレス、プロセッサのID、およびスレッドのIDを含み、プロセッサのIDは、メモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDであり、メモリ制御デバイスによってメモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るステップは、メモリ制御デバイスによって、物理アドレス、スレッドのID、およびプロセッサのIDをパケットの中にパックするステップと、パケットをメモリ管理ユニットに送るステップとを含む。
第2の態様の第1の実装様式に関連して、第2の実装様式では、データパケットはページテーブルウォーク動作識別子をさらに含み、メモリ制御デバイスによって、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップの前に、方法は、メモリ制御デバイスによって、ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するステップをさらに含む。
第2の態様の第2の実装様式に関連して、第3の実装様式では、データパケットは優先度情報をさらに含み、メモリ制御デバイスによって、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップの前に、方法は、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、メモリ制御デバイスによってページテーブルウォーク動作キャッシュに、優先度情報、ならびに優先度情報に対応する仮想アドレスおよびページテーブルベースアドレスを記憶するステップと、メモリ制御デバイスによって、ページテーブルウォーク動作キャッシュ中に記憶された優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するステップとをさらに含む。
第1の態様の第7の実装様式に対応する、第2の態様の実装様式のうちのいずれか1つに関連して、第2の態様の第4の実装様式では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットが、仮想アドレス、仮想アドレスの識別子、およびページテーブルベースアドレスを含む場合、メモリ制御デバイスは、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスおよび仮想アドレスの識別子を送る。
本発明の実施形態の第3の態様は、メモリ管理ユニットを提供し、このメモリ管理ユニットは、
仮想アドレスを受信するように構成された受信モジュールと、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断し、ページテーブルベースアドレスを取得するために、ページ・テーブル・ベース・アドレス・レジスタを読み取り、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子IDを取得するように構成された処理モジュールと、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送り、処理モジュールは、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信するようにさらに構成され、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得され、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するように構成された送付モジュールとを含む。
第3の態様に関連して、第3の態様の第1の実装様式では、処理モジュールは、ページテーブルウォーク動作識別子を生成するようにさらに構成され、ページテーブルウォーク動作識別子はページテーブルウォーク動作を示し、送付モジュールは、仮想アドレス、ページテーブルベースアドレス、メモリ制御デバイスのID、およびページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化し、オンチップルータを使うことによって、データパケットをメモリ制御デバイスに送るように特に構成される。
第3の態様の第1の実装様式に関連して、第2の実装様式では、受信モジュールは、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを取得するようにさらに構成され、データパケットは、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDをさらに運ぶ。
第3の態様の第1または第2の実装様式に関連して、第3の実装様式では、受信モジュールは、仮想アドレスを送るスレッドの優先度情報を取得するようにさらに構成され、データパケットは優先度情報をさらに運ぶ。
第3の態様または第3の態様の第1もしくは第2もしくは第3の実装様式に関連して、第4の実装様式では、処理モジュールが、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信することは、処理モジュールによって、メモリ制御デバイスによって送られたデータパケットを受信することを含み、メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。
第3の態様の第4の実装様式に関連して、第5の実装様式では、メモリ制御デバイスによって送られるデータパケットは、ページテーブルウォーク動作完了識別子をさらに含み、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する前に、処理モジュールは、ページテーブルウォーク動作完了識別子に従って、メモリ制御デバイスによって送られたデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることをさらに確認する。
第3の態様の第3または第4の実装様式に関連して、第6の実装様式では、メモリ制御デバイスによって送られたデータパケットは、スレッドのIDをさらに含み、処理モジュールは、物理アドレスに従ってトランスレーションルックアサイドバッファを更新した後、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化するようにさらに構成される。
第3の態様または第3の態様の実装様式のうちのいずれか1つに関連して、第7の実装様式では、送付モジュールによってメモリ制御デバイスに送られるデータパケットは、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含むことができ、仮想アドレスの識別子は、仮想アドレスを示すのに使われ、処理モジュールは、仮想アドレスと仮想アドレスの識別子との間の対応を記憶し、受信モジュールは、仮想アドレスのものであるとともにメモリ制御デバイスによって送られる識別子をさらに受信し、処理モジュールは、仮想アドレスと仮想アドレスの識別子との間の記憶された対応に従って、仮想アドレスを取得するようにさらに構成される。
本発明の実施形態の第4の態様は、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するように構成された受信モジュールを含むメモリ制御デバイスと、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するように構成された処理モジュールと、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るように構成された送付モジュールとを提供する。
第4の態様に関連して、第4の態様の第1の実装様式では、受信モジュールは、オンチップルータを使うことによって、メモリ管理ユニットによって送られたデータパケットを受信するように特に構成され、データパケットは、仮想アドレス、ページテーブルベースアドレス、プロセッサのID、およびスレッドのIDを含み、プロセッサのIDは、メモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDであり、送付モジュールは、物理アドレス、スレッドのID、およびプロセッサのIDをパケットの中にパックし、パケットをメモリ管理ユニットに送るように特に構成される。
第4の態様の第1の実装様式に関連して、第2の実装様式では、データパケットは、ページテーブルウォーク動作識別子をさらに含み、受信モジュールは、データパケットを受信し、ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するようにさらに構成される。
第4の態様の第2の実装様式に関連して、第3の実装様式では、データパケットは優先度情報をさらに含み、受信モジュールは、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、ページテーブルウォーク動作キャッシュに、優先度情報、ならびに優先度情報に対応する仮想アドレスおよびページテーブルベースアドレスを記憶するようにさらに構成され、処理モジュールは、ページテーブルウォーク動作キャッシュ中に記憶された優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するようにさらに構成される。
第3の態様の第7の実装様式に対応する、第4の態様の実装様式のうちのいずれか1つに関連して、第4の態様の第4の実装様式では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットが、仮想アドレス、仮想アドレスの識別子、およびページテーブルベースアドレスを含む場合、送付モジュールは、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスおよび仮想アドレスの識別子を送る。
本発明の実施形態の第5の態様は、第3の態様または第3の態様の実装様式のうちのいずれか1つによるメモリ管理ユニットを含むとともに、第4の態様または第4の態様の実装様式のうちのいずれか1つによるメモリ制御デバイスと、少なくとも1つのオンチップルータとをさらに含むプロセッサチップを提供し、少なくとも1つのオンチップルータは、メモリ制御デバイスとメモリ管理ユニットとの間の通信接続を確立するように構成される。
上に挙げた実施形態によると、TLB missが起こると、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される様々なタイプの情報をデータパケット中にパックし、データパケットをオンチップルータに送り、それにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信ネットワークに対して引き起こされる負担を削減し、というのは、メモリ管理ユニットはすべて、複数レベルページテーブルが照会される必要があるとき、データパケットを複数回送る必要があるからである。
本発明の実施形態における、または従来技術における技術的解決策をより明確に記載するために、以下で、実施形態に必要とされる添付の図面について簡潔に記載する。明らかに、以下の説明における添付の図面は、本発明のいくつかの実施形態を示し、当業者は、これらの添付の図面から、創造的努力なしで他の図面をさらに導き出すことができよう。
本発明の実施形態において適用されるプロセッサチップの概略アーキテクチャ図である。 本発明の方法実施形態1において適用されるデータ処理方法の概略フローチャートである。 本発明の方法実施形態2において適用されるデータ処理方法の概略フローチャートである。 本発明のデバイス実施形態1において適用されるメモリ管理ユニットの概略構造図である。 本発明のデバイス実施形態2において適用されるメモリ制御デバイスの概略構造図である。 本発明のデバイス実施形態2において適用される別のメモリ制御デバイスの概略構造図である。 本発明のデバイス実施形態3において適用されるプロセッサチップの概略構造図である。
本発明の実施形態の目的、技術的解決策、および利点をより明らかにするために、以下では、本発明の実施形態における技術的解決策について、本発明の実施形態における添付の図面を参照して、明快および完全に説明する。明らかに、記載する実施形態は、本発明の実施形態の一部ではあるが、すべてではない。創造的努力なしで、本発明の実施形態に基づいて当業者によって得られるすべての他の実施形態は、本発明の保護範囲内であるものとする。
本明細書を通して、「プロセッサコア」という用語は一般に、プロセッサチップであるとともにデータ処理タスクを実行する1つもしくは複数の処理ユニットを指すか、またはプロセッサコアもしくは処理コアと呼ばれ得るか、または信号処理能力をもつ集積回路チップ、たとえば、汎用プロセッサ、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラム可能ゲートアレイ(Field Programmable Gate Array、FPGA)であり得る。
本明細書を通して、「メモリ管理ユニット」(英文全称:Memory Management Unit、英文略称:MMU)という用語は、仮想メモリおよび物理メモリの制御ラインを管理するように構成され、仮想アドレスを物理アドレスにマップし、ハードウェア機構のメモリアクセス認可を与えることも担当し、一般に、中央処理装置中に置かれる。マルチコア処理チップ上の各メモリ管理ユニットはまた、メモリ管理ユニットが置かれているプロセッサと通信する。
本明細書を通して、「メモリ制御デバイス」という用語は、従来のメモリコントローラによって所有されるとともにメモリデバイスにアクセスする際にCPUを支援するための機能を有するだけでなく、本明細書におけるページテーブルウォーク動作の実行に関連した機能も有するデバイスを指す。一般に、従来のメモリコントローラまたは従来のメモリコントローラの機能を有するユニットも、メモリ制御デバイスに統合される必要がある。
本明細書を通して、「トランスレーションルックアサイドバッファ」(英文全称:Translation look-aside buffer、英文略称:TLB)という用語は、送信ルックアサイドバッファまたはページテーブルバッファとも呼ばれ、一般にメモリ管理ユニット中に置かれ、ページテーブルの照会を高速化するための、いくつかの最も頻繁に使われるページテーブルを記憶するように構成される。さらに、本明細書におけるトランスレーションルックアサイドバッファヒット(TLB hit)は、仮想アドレスを受信するとき、メモリ管理ユニットが最初に、仮想アドレスに従ってTLBを照会することを意味する。対応する物理アドレスがTLBに記憶されていることが分かった場合、TLB hitが起こる。相応して、対応する物理アドレスがTLB中で見つからない場合、TLB missが起こり、この場合、仮想アドレスに対応する物理アドレスを取得してTLBを更新するために、ページテーブルウォーク動作が実行される必要がある。
本明細書を通して、「ページテーブルウォーク動作」(英文全称:Page Table Walk)という用語は、仮想アドレスおよびページテーブルベースアドレスに従って物理アドレスを取得する動作である。一般に、ページテーブルは複数のレベルに分割され、たとえば、ページテーブルが4つのレベルに分割される場合、ページテーブルウォーク動作が一度実行されると、ページテーブルベースアドレスおよび仮想アドレスの第1の部分に従って、レベル1ページテーブルが最初に照会される。レベル1ページテーブル中の対応するアドレスに記憶されたデータが取得された後、データが、要求される物理アドレスであるかどうか判断される。データが、要求される物理アドレスでない場合、レベル2ページテーブルが、データおよび仮想アドレスの第2の部分に従って照会され、次いで、レベル2ページテーブル中の対応するアドレスに記憶されたデータが取得される。上記プロセスは、レベル4ページテーブル中の対応するアドレスに記憶されたデータが取得されるまで繰り返される。アドレスは、仮想アドレスに対応する物理アドレスであり、ページテーブルウォーク動作が完了する。
本発明の実施形態におけるプロセッサチップのアーキテクチャ
図1は、本発明の実施形態によるプロセッサチップのアーキテクチャの一部の、概略図を記載する。図1はプロセッサチップのアーキテクチャの一部であり、プロセッサチップの実際のアーキテクチャは、図1に示す複数の部分の拡張を用いて形成され得ることが当業者には理解できよう(図1の、点線で置き換えられる部分は、破線ボックスに示される1つまたは複数の部分である)。プロセッサチップは一般に、複数のプロセッサコアを含み、マルチコアプロセッサチップとも呼ばれる。各プロセッサコアは、メモリ管理ユニットに対応し、TLBがメモリ管理ユニット中に配設される。各プロセッサコアは、オンチップルータを使うことによって別のプロセッサコアと通信することができ、またはプロセッサチップ上のメモリ制御デバイスと通信することができる。どのプロセッサコアも、メモリ制御デバイスを使うことによって、プロセッサチップの外のメモリデバイスと通信することができる。
方法実施形態1
この方法実施形態1はデータ処理方法を提供し、データ処理方法の概略フローチャートが図2に示されている。この方法は、メモリ管理ユニット、またはメモリ管理ユニットの機能が統合されている別のデバイスによって使われてよい。
ステップ202:メモリ管理ユニットが仮想アドレスを受信する。
ARMv8アーキテクチャにおいて使われる48ビット仮想アドレスが例として使われ、この仮想アドレスは一般に、4レベルのページテーブルを使う。仮想アドレス全体が5つのフィールドに分割され、VA[11:0]がページテーブル中のオフセットアドレスであり、VA[20:12]は、レベル3ページテーブルが位置するオフセットアドレスであり、VA[29:21]は、レベル2ページテーブルが位置するオフセットアドレスであり、VA[38:30]は、レベル1ページテーブルが位置するオフセットアドレスであり、VA[47:39]は、レベル0ページテーブルが位置するオフセットアドレスである。
ステップ203:メモリ管理ユニットが、仮想アドレスがトランスレーションルックアサイドバッファにヒットするかどうか判断する。
ステップ204:メモリ管理ユニットが、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断する。
上記の例に基づいて、仮想アドレスを受信した後、メモリ管理ユニットは最初に、VA[47:12]を使うことによって、TLB中のコンテンツアドレス可能メモリ(英文全称:Content Addressable Memory、英文略称:CAM)を照会する。Table 1(表1)に示すCAMが、例として使われる。メモリ管理ユニットが、CAM中でVA[47:12]のいかなる一致項目も見つけなかった場合、そのことは、トランスレーションルックアサイドバッファがヒットしないことを示し、TLB missが起こる。
ステップ205:メモリ管理ユニットが、仮想アドレスがトランスレーションルックアサイドバッファにヒットすると判断し、仮想アドレスに従って物理アドレスを取得して、アドレスマッピングを完了する。
上記の例に基づいて、メモリ管理ユニットがCAM中でVA[47:12]の一致項目を見つけた場合、そのことは、TLB hitが起こることを示す。この場合、メモリ管理ユニットは、CAMを使うことによって、VA[47:12]に対応するランダムアクセスメモリ(英文全称:Random access memory、英文略称:RAM)アドレスを取得し、RAMアドレスに従ってRAMにアクセスして、対応するRAMアドレスに記憶された物理アドレス、たとえば、PA[47:12]を取得する。この場合、PA[47:12]およびVA[11:0]によって形成される48ビットアドレスは、ステップ202において受信された48ビット仮想アドレスに対応する物理アドレスであり、アドレスマッピングが完了する。
ステップ206:メモリ管理ユニットがページ・テーブル・ベース・アドレス・レジスタを読み取って、ページテーブルベースアドレスを取得する。
たとえば、ステップ203において、トランスレーションルックアサイドバッファがヒットしない場合、ステップ204の後、メモリ管理ユニットはページ・テーブル・ベース・アドレス・レジスタにアクセスする。上記の例に基づいて、ARMv8アーキテクチャにおけるページ・テーブル・ベース・アドレス・レジスタはTTBR0/TTBR1であり、ページテーブルベースアドレス、たとえば、ページ・テーブル・ベース・アドレス・レジスタ中に記憶されたTTBR[47:12]が読み取られる。
ステップ208:メモリ管理ユニットが、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得する。
上記の例に基づいて、TTBR[47:12]を取得した後、メモリ管理ユニットは、TTBR[47:12]とメモリ制御デバイスのIDとの間の事前設定された対応に従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得する。実際、異なるページテーブルベースアドレスに対応するページテーブルが、異なるメモリデバイス中に記憶され、異なるメモリデバイスはまた、異なるメモリ制御デバイスによって管理される。したがって、ページテーブルベースアドレスは、メモリ制御デバイスのIDにも対応する。
随意に、ステップ210の前に、メモリ管理ユニットは、ページテーブルウォーク動作識別子をさらに生成し得る。ページテーブルウォーク動作識別子は、ページテーブルウォーク動作を示す。実際、ページテーブルウォーク動作識別子の形は限定されない。メモリ制御デバイスは、ページテーブルウォーク動作識別子に従って、ページテーブルウォーク動作識別子を運ぶデータパケット中で運ばれる内容が、ページテーブルウォーク動作に使われることを識別することができる。相応して、プロセッサコアによって送られたデータパケットが、通常のデータ読取り/書込み動作を実行するためのデータパケットである場合、データパケットは、メモリ制御デバイスが異なるタイプのデータパケットを受信した後、異なるタイプのデータパケットを異なるやり方で識別し、処理するためにメモリ制御デバイスによって使われる別の動作識別子を運ぶことができる。
随意に、ステップ210の前に、メモリ管理ユニットは、仮想アドレスを送るスレッドのIDと、メモリ管理ユニットに対応するプロセッサのIDとをさらに取得することができる。スレッドがデータを読み取るか、または書き込む必要があるとき、メモリ管理ユニットがTLBにアクセスし、TLB missが起きた場合、スレッドは、ページテーブルウォーク動作が完了した後でのみ、実行され続けてよい。したがって、スレッドは一般に、中断される必要があり、たとえば、プロセッサコアのスレッド選択モジュール中に記憶される必要がある。仮想アドレスに対応する物理アドレスを運ぶデータパケットがメモリ管理ユニットに戻される必要があるとき、最初に、オンチップルータが、メモリ管理ユニットにデータパケットをルーティングするために、メモリ管理ユニットに対応するプロセッサのIDを必要とし、次いで、メモリ管理ユニットが、物理アドレスを運ぶデータパケットを受信し、トランスレーションルックアサイドバッファの更新を完了した後、スレッド選択モジュール中で複数のスレッドが中断され得るので、メモリ管理ユニットは、スレッド選択モジュール中で対応するスレッドをアクティブ化するために、物理アドレスに対応するスレッドのID番号も必要とする。ページテーブルウォーク動作およびトランスレーションルックアサイドバッファの更新が完了したので、スレッドによって送られる仮想アドレスはトランスレーションルックアサイドバッファに明確にヒットし、そうすることによってスレッドは稼動し続けることができる。
随意に、ステップ210の前に、メモリ管理ユニットは、仮想アドレスを送るスレッドの優先度情報をさらに取得することができる。特に、優先度情報は、仮想アドレスを送るスレッドが、優先的に処理される必要があることを示すことができ、異なるスレッドによって送られた仮想アドレスに対応するデータパケットの異なる処理優先度を見分けるのに使われ、ページテーブルウォーク動作に使われるデータパケットおよび通常の読取り/書込み動作用のデータパケットの異なる処理優先度も示すことができる。
ステップ210:メモリ管理ユニットが仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送る。
たとえば、ステップ202〜ステップ208において仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDを取得した後、メモリ管理ユニットは、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDを、プロセッサチップのオンチップ通信プロトコルに準拠するデータパケット中にカプセル化し、データパケットをオンチップルータに送り、そうすることによって、オンチップルータは、データパケットを、データパケット中で運ばれるメモリ制御デバイスのIDに従って、対応するメモリ制御デバイスにルーティングすることができる。
別の例では、メモリ管理ユニットが、ステップ202〜ステップ208において仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDを取得した後、メモリ管理ユニットは、データパケットのカプセル化を担当しない場合がある。そうではなく、メモリ管理ユニットは、上記データをプロセッサコアまたは専用データパケットカプセル化モジュールに送る。プロセッサコアまたは専用データパケットカプセル化モジュールは、データをデータパケット中にカプセル化し、データパケットをオンチップルータに送る。オンチップルータは、データパケットを、データパケット中にカプセル化されたメモリ制御デバイスのIDに従って、対応するメモリ制御デバイスにルーティングする。
随意に、ステップ210の前に、メモリ管理ユニットがページテーブルウォーク動作識別子をさらに生成した場合、ステップ210におけるデータパケットは、ページテーブルウォーク動作識別子をさらに含み得る。
随意に、ステップ210の前に、メモリ管理ユニットが、仮想アドレスを送るスレッドのIDと、メモリ管理ユニットに対応するプロセッサのIDとをさらに取得した場合、ステップ210におけるデータパケットは、仮想アドレスを送るスレッドのIDと、メモリ管理ユニットに対応するプロセッサのIDとをさらに含み得る。
随意に、ステップ210の前に、メモリ管理ユニットが、仮想アドレスを送るスレッドの優先度情報をさらに取得した場合、ステップ210におけるデータパケットは、仮想アドレスを送るスレッドの優先度情報をさらに含み得る。
Table 2(表2)は、ステップ210におけるデータパケットの可能フレーム構造を示す。ページテーブルウォーク動作識別子、プロセッサのID、ならびにスレッドのIDおよび優先度情報はすべて、随意の内容である。
随意の解決策では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットは、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含み得ることに留意されたい。仮想アドレスの識別子は、仮想アドレスを示すのに使われる。メモリ管理ユニットは、仮想アドレスと仮想アドレスの識別子との間の対応を記憶する。つまり、メモリ管理ユニットは最初に、仮想アドレスと仮想アドレスの識別子との間の対応を記憶し、次いで、仮想アドレスの識別子をデータパケット中にカプセル化し、データパケットをメモリ制御デバイスに送り、それにより、メモリ制御デバイスが、ページテーブルウォーク動作を完了し、データパケットを戻したとき、データパケットは、仮想アドレスを運ぶ必要はないが、仮想アドレスの識別子をのみを運ぶ必要がある。
ステップ212:メモリ管理ユニットが、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信し、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得される。
たとえば、ステップ210において、メモリ管理ユニットがデータパケットを送った後、メモリ制御デバイスは、データパケットの内容に従ってページテーブルウォーク動作を実行して、仮想アドレスに対応する物理アドレスを取得する。メモリ管理ユニットは、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスをさらに受信する。
随意に、ステップ212において、メモリ管理ユニットは、メモリ制御デバイスによって送られたデータパケットを受信する。メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。
随意に、ステップ210においてメモリ管理ユニットによってメモリ制御デバイスに送られたデータパケットが、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含み得る場合、ステップ212においてメモリ制御デバイスによって送られたデータパケットは、仮想アドレスの識別子と、仮想アドレスに対応する物理アドレスとを運ぶ。
ステップ214:メモリ管理ユニットが、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する。
たとえば、物理アドレスを受信した後、メモリ管理ユニットは、トランスレーションルックアサイドバッファ中のCAMおよびRAMを更新する必要があり、それにより、VA[47:12]に従ってCAMを再度照会するとき、メモリ管理ユニットは、RAMアドレスを見つけ、RAMアドレスを使うことによって対応するRAMを照会して、物理アドレスを取得し、つまり、トランスレーションルックアサイドバッファにヒットすることができる。
随意に、ステップ212において、メモリ管理ユニットが、メモリ制御デバイスによって送られたデータパケットを受信した場合、そして、データパケットはページテーブルウォーク動作完了識別子をさらに含む。データパケットに従ってトランスレーションルックアサイドバッファを更新する前に、メモリ管理ユニットは、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認する必要がある。具体的には、様々なタイプのデータパケットがプロセッサチップ上で同時に送信され得るので、データパケットを受信したとき、プロセッサコアまたはメモリ管理ユニットは、データパケットのタイプを見分ける必要がある。したがって、データパケットは、データパケットのタイプを識別するのに使われるページテーブルウォーク動作完了識別子をさらに含む。ページテーブルウォーク動作完了識別子は、上記ページテーブルウォーク動作識別子に対応し、後者は、データパケットが、ページテーブルウォーク動作用に使われる内容を含むことを示すのに使われ、前者は、データパケットが、ページテーブルウォーク動作が完了した後に取得された内容を含むことを示すのに使われる。
随意に、ステップ212においてメモリ管理ユニットによって受信されたデータパケットがスレッドのIDをさらに含み、スレッドのIDが、仮想アドレスを送るスレッドのIDである場合、トランスレーションルックアサイドバッファを更新した後、メモリ管理ユニットは、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化する。特に、メモリ管理ユニットによって送られたデータパケットが、仮想アドレスを送るスレッドのIDを運ぶ場合、メモリ制御デバイスが、データパケットに対応する物理アドレスを取得した後、メモリ制御デバイスによってメモリ管理ユニットに送られたデータパケットはスレッドのIDをさらに運び、それにより、メモリ制御デバイスによって送られたデータパケットを受信し、トランスレーションルックアサイドバッファを更新した後、メモリ管理ユニットは、スレッドのIDに従って、対応するスレッドをアクティブ化すればよい。
Table 3(表3)は、メモリ制御デバイスによって送られたデータパケットの可能フレーム構造を示す。ページテーブルウォーク動作完了識別子、プロセッサのID、スレッドのID、および仮想アドレスはすべて、随意の内容である。
この方法実施形態では、メモリ管理ユニットが仮想アドレスを受信し、TLB missが起きた場合、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される様々なタイプの情報をデータパケット中にパックし、データパケットをオンチップルータに送り、そうすることにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信チャネルに対して引き起こされる負担が削減し、というのは、複数レベルページテーブルが照会される必要があるとき、複数のプロセッサコアのメモリ管理ユニットがすべて、データパケットを複数回送る必要があるからである。その上、メモリ管理ユニットとメモリ制御デバイスとの間の通信の回数量が削減され、むしろ、メモリ制御デバイスが、チップの外のメモリデバイスへの複数回のアクセスを完了するので、ページテーブルウォーク動作の完了も高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
方法実施形態2
この方法実施形態2はデータ処理方法を提供し、データ処理方法の概略フローチャートが図3に示されている。この方法は、メモリ制御デバイス、またはメモリ制御デバイスの機能が統合されている別のデバイスによって使われ得る。
ステップ402:メモリ制御デバイスが、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信する。
具体的には、メモリ制御デバイスは、メモリ管理ユニットによって送られたデータパケットを受信する。データパケットは、仮想アドレスおよびページテーブルベースアドレスを運ぶ。データパケットは、方法実施形態1のステップ210およびステップ210の随意の解決策において言及したデータパケットであってよい。
随意に、データパケットは、プロセッサのIDおよびスレッドのIDをさらに含む。プロセッサのIDは、ステップ402におけるメモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDである。
随意に、データパケットは、ページテーブルウォーク動作識別子をさらに含む。この場合、メモリ制御デバイスがステップ404を実施する前に、メモリ制御デバイスは、ページテーブルウォーク動作識別子に従って、データパケットは、ページテーブルウォーク動作を実行するのに使われると判断する。
随意に、データパケットは優先度情報をさらに含む。この場合、ステップ404が実施される前に、ページテーブルウォーク動作識別子に従って、データパケットは、ページテーブルウォーク動作を実行するのに使われることが最初に確認され、データパケットは次いで、ページテーブルウォーク動作キャッシュ、たとえば、Table 4(表4)に記憶される。相応して、メモリ制御デバイスは、別のデータパケット、たとえば、通常のデータ読取り/書込みデータパケットをさらに受信する場合もあり、これらのデータパケットは、通常のデータ読取り/書込みを示す識別子も含む。これらのデータパケットを受信した後、メモリ制御デバイスは、これらのデータパケットをアンパックし、アンパック後に取得された内容をデータ読取り/書込みキャッシュに記憶すればよい。
ステップ404:メモリ制御デバイスが、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行して、仮想アドレスに対応する物理アドレスを取得する。
具体的には、方法実施形態1に基づいて、仮想アドレス全体が5つのフィールドに分割され、VA[11:0]はページテーブル中のオフセットアドレスであり、VA[20:12]は、レベル3ページテーブルが位置するオフセットアドレスであり、VA[29:21]は、レベル2ページテーブルが位置するオフセットアドレスであり、VA[38:30]は、レベル1ページテーブルが位置するオフセットアドレスであり、VA[47:39]は、レベル0ページテーブルが位置するオフセットアドレスであり、ページテーブルベースアドレスはTTBR[47:12]である。
最初に、メモリ制御デバイスは、物理アドレス1={TTBR[47:12], VA[47:39], 000}を形成し、物理アドレス1に従って、ページテーブルを記憶するメモリデバイスを照会し、物理アドレス1に対応するページテーブル中の内容を読み取り、内容がボトムレベルのページテーブルであるかどうか判断する。たとえば、物理アドレス1に対応するページテーブル中の内容の最下位2ビットが01である場合、そのことは、ページテーブルがボトムレベルのページテーブルであることを示し、物理アドレス1に対応するページテーブルは、ページテーブルウォーク動作用に要求される物理アドレスを含む。物理アドレス1に対応するページテーブル中の内容の最下位2ビットが10である場合、そのことは、ページテーブルがボトムレベルのページテーブルではないことを示し、ページテーブル中の内容、たとえば、L0_Dspt[47:12]が読み取られる。
第2に、物理アドレス2={L0_Dspt[47:12], VA[38:30], 000}が形成され、上記プロセスが、ボトムレベルのページテーブルが見つかり、ボトムレベルのページテーブル中に含まれる物理アドレスが取得されるまで、再度繰り返される。4レベルのページテーブルが、例として使われる。レベル4ページテーブルにおいて取得される物理アドレスはL4_Dspt[47:12]であり、L4_Dspt[47:12]とVA[11:0]が、新たな48ビットアドレスを形成する。アドレスは、ステップ402における、仮想アドレスに対応する物理アドレスである。したがって、ページテーブルウォーク動作は完了する。実際、ページテーブルのレベルの量に関するとともに、ページテーブル中の内容が次のレベルのページテーブルそれともボトムレベルのページテーブルをポイントするのかを識別する複数の実装様式があり、ここでは単にいくつかの例について記載することに留意されたい。
随意に、ステップ402において受信されたデータパケットは優先度情報を含む。ステップ404の前に、データパケットがページテーブルウォーク動作キャッシュ中にキャッシュされている場合、ステップ404を実施する前に、メモリ制御デバイスは最初に、ページテーブルウォーク動作キャッシュ、たとえば、Table 4(表4)中の優先度情報の各断片に従って、優先的に処理されるべきである仮想アドレスおよびページテーブルベースアドレスを選択する。メモリ制御デバイスが、通常のデータ読取り/書込みデータパケットをさらに受信し、データパケットをデータ読取り/書込みキャッシュに記憶する場合、メモリ制御デバイスは、データ読取り/書込みキャッシュおよびページテーブルウォーク動作キャッシュ中に記憶されたタスクの優先度を包括的に考慮することによって、優先的に処理されるべきタスクをさらに選択すればよい。
随意に、ステップ406の前に、メモリ制御デバイスは、ページテーブルウォーク動作完了識別子をさらに生成する。ページテーブルウォーク動作完了識別子は、方法実施形態1のステップ212において、メモリ管理ユニットによって受信されたデータパケット中で運ばれるページテーブルウォーク動作識別子である。
ステップ406:メモリ制御デバイスが、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送る。
随意に、ステップ402におけるデータパケットがプロセッサのIDおよびスレッドのIDをさらに含む場合、ステップ404において物理アドレスを取得した後、メモリ制御デバイスは、物理アドレス、スレッドのID、およびプロセッサのIDをパケット中にさらにパックし、パケットをメモリ管理ユニットに送ってよい。メモリ制御デバイスによって送られるデータパケットは、方法実施形態1におけるTable 3(表3)に示すデータパケットに対応する。
随意に、ステップ406の前に、メモリ制御デバイスがページテーブルウォーク動作完了識別子をさらに生成する場合、メモリ制御デバイスは、ページテーブルウォーク動作完了識別子をメモリ管理ユニットにさらに送ってよく、そうすることにより、データパケットに従ってトランスレーションルックアサイドバッファを更新する前に、メモリ管理ユニットは、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認する必要がある。
この方法実施形態では、ページテーブルウォーク動作を実行するために要求される内容を受信した後、メモリ制御デバイスはページテーブルウォーク動作を実行し、それにより、ページテーブルウォーク動作のプロセス中のページテーブルへの複数回のアクセスは、メモリ制御デバイスとチップの外のメモリデバイスとの間で完了するだけでよい。メモリ管理ユニットとメモリ制御デバイスとの間で複数の対話が実施される必要はなく、そうすることによって、チップに対して通信負担が軽くなる。その上、メモリ制御デバイスとメモリデバイスとの間の直接対話により、効率も増大し、ページテーブルウォーク動作の完了が高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
デバイス実施形態1
本発明の装置実施形態1は、メモリ管理ユニット600を提供する。メモリ管理ユニット600の概略構造図が、図4に示されている。メモリ管理ユニット600は、受信モジュール602、処理モジュール604、および送付モジュール606を含む。
受信モジュール602は、仮想アドレスを受信するように構成される。
具体的には、受信モジュール602は、実際の稼動中プロセスにおいて、方法実施形態1におけるステップ202を実施する。
随意に、受信モジュール602は、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを取得するようにさらに構成される。詳細については、方法実施形態1のステップ210の前の、メモリ管理ユニットの随意のアクションを参照されたい。
随意に、受信モジュール602は、仮想アドレスを送るスレッドの優先度情報を取得するようにさらに構成される。詳細については、方法実施形態1のステップ210の前の、メモリ管理ユニットの随意のアクションを参照されたい。
処理モジュール604は、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断し、ページテーブルベースアドレスを取得するために、ページ・テーブル・ベース・アドレス・レジスタを読み取り、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得するように構成される。
具体的には、処理モジュール604は、実際の稼動中プロセスにおいて、方法実施形態1における、ステップ204〜ステップ208と、ステップ204〜ステップ208の随意の解決策とを実施する。
随意に、処理モジュール604は、ページテーブルウォーク動作識別子を生成するようにさらに構成される。ページテーブルウォーク動作識別子は、ページテーブルウォーク動作を示す。詳細については、方法実施形態1のステップ210の前の、メモリ管理ユニットの随意のアクションを参照されたい。
送付モジュール606は、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るように構成される。
具体的には、送付モジュール606は、実際の稼動中プロセスにおいて、方法実施形態1における、ステップ210と、ステップ210の随意の解決策とを実施する。
随意に、処理モジュール604がページテーブルウォーク動作識別子を生成した場合、送付モジュール606は、ページテーブルウォーク動作識別子をメモリ制御デバイスに送るようにさらに構成される。詳細については、方法実施形態1におけるステップ210の随意のアクションを参照されたい。
随意に、受信モジュール602が、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを取得した場合、送付モジュール606は、メモリ制御デバイスに、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを一緒に送るようにさらに構成される。詳細については、方法実施形態1におけるステップ210の随意のアクションを参照されたい。
随意に、受信モジュール602が、仮想アドレスを送るスレッドの優先度情報を取得した場合、送付モジュール606は、メモリ制御デバイスに、仮想アドレスを送るスレッドの優先度情報を送るようにさらに構成される。詳細については、方法実施形態1におけるステップ210の随意のアクションを参照されたい。
処理モジュール604は、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信し、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得され、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するようにさらに構成される。
具体的には、処理モジュール604は、実際の稼動中プロセスにおいて、方法実施形態1におけるステップ212およびステップ214をさらに実施する。
随意に、処理モジュール604が、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信することは、処理モジュール604によって、メモリ制御デバイスによって送られたデータパケットを受信することを含み、メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。代替として、受信モジュール602は、メモリ制御デバイスによって送られたデータパケットを受信し、受信モジュール602は、処理モジュール604に、データパケット中で運ばれる仮想アドレスおよび仮想アドレスに対応する物理アドレスを送る。
随意に、メモリ制御デバイスによって送られたデータパケットはページテーブルウォーク動作完了識別子をさらに含み、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する前に、処理モジュール604は、ページテーブルウォーク動作完了識別子に従って、メモリ制御デバイスによって送られたデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることをさらに確認する。代替として、受信モジュール602によって受信されたデータパケットはページテーブルウォーク動作完了識別子をさらに含み、受信モジュール602は、処理モジュール604に、データパケット中で運ばれる仮想アドレスおよび仮想アドレスに対応する物理アドレスと一緒にページテーブルウォーク動作識別子を送り、処理モジュール604は、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認し、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する。
随意に、メモリ制御デバイスによって送られたデータパケットはスレッドのIDをさらに含み、処理モジュール604は、物理アドレスに従ってトランスレーションルックアサイドバッファを更新した後、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化するようにさらに構成される。代替として、受信モジュール602によって受信されたデータパケットはスレッドのIDをさらに含み、受信モジュール602は、処理モジュール604に、データパケット中で運ばれる仮想アドレスおよび仮想アドレスに対応する物理アドレスと一緒にスレッドのIDを送り、物理アドレスに従ってトランスレーションルックアサイドバッファを更新した後、処理モジュール604は、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化する。
このデバイス実施形態は、メモリ管理ユニットを提供する。メモリ管理ユニットが仮想アドレスを受信し、TLB missが起きた場合、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される様々なタイプの情報をデータパケット中にパックし、データパケットをオンチップルータに送り、そうすることにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信チャネルに対して引き起こされる負担が削減し、というのは、複数レベルページテーブルが照会される必要があるとき、複数のプロセッサコアのメモリ管理ユニットがすべて、データパケットを複数回送る必要があるからである。その上、メモリ管理ユニットとメモリ制御デバイスとの間の通信の回数量が削減され、むしろ、メモリ制御デバイスが、チップの外のメモリデバイスへの複数回のアクセスを完了するので、ページテーブルウォーク動作の完了も高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
デバイス実施形態2
本発明のデバイス実施形態2は、メモリ制御デバイス800を提供する。メモリ制御デバイス800の概略構造図が、図5に示されている。メモリ制御デバイスは、受信モジュール802、処理モジュール804、および送付モジュール806を含む。
受信モジュール802は、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するように構成される。
具体的には、図5に示すように、オンチップルータからデータパケットを取得した後、受信モジュール802は、データパケットを解析して、データパケット中で運ばれる仮想アドレスおよびページテーブルベースアドレスを取得し、仮想アドレスおよびページテーブルベースアドレスを処理モジュール804に送る。
随意に、データパケットは、プロセッサのIDおよびスレッドのIDをさらに含む。プロセッサのIDは、仮想アドレスおよびページテーブルベースアドレスを送るメモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDである。
随意に、データパケットは、ページテーブルウォーク動作識別子をさらに含む。受信モジュール802は、データパケットを解析して、ページテーブルウォーク動作識別子、仮想アドレス、およびページテーブルベースアドレスを取得し、ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断し、次いで、仮想アドレスおよびページテーブルベースアドレスを処理モジュール804に送るようにさらに構成される。受信モジュール802によって受信されたデータパケットが、通常のデータ読取り/書込み動作を実行するためのデータパケットである場合、データパケットは、メモリ制御デバイスが異なるタイプのデータパケットを受信した後、異なるタイプのデータパケットを異なるやり方で識別し、処理するためにメモリ制御デバイスによって使われる別の動作識別子を運ぶことができる。
処理モジュール804は、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行して、仮想アドレスに対応する物理アドレスを取得するように構成される。
具体的には、処理モジュール804は、仮想アドレスおよびページテーブルベースアドレスに従ってメモリデバイスにアクセスし、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行する。具体的な動作詳細については、方法実施形態2におけるステップ404の内容を参照されたい。
随意に、処理モジュール804は、ページテーブルウォーク動作完了識別子を生成するようにさらに構成され、メモリ管理ユニットは、ページテーブルウォーク動作完了識別子に従って、ページテーブルウォーク動作完了識別子を運ぶデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認する。
送付モジュール806は、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るように構成される。
随意に、受信モジュール802によって受信されたデータパケットがプロセッサのIDおよびスレッドのIDを含む場合、送付モジュール806は、物理アドレス、スレッドのID、およびプロセッサのIDをパケットの中にパックし、パケットをメモリ管理ユニットに送るようにさらに構成される。
随意に、処理モジュール804が、ページテーブルウォーク動作完了識別子をさらに生成した場合、送付モジュール806は、ページテーブルウォーク動作完了識別子をデータパケットの中にカプセル化し、データパケットをメモリ管理ユニットに送るようにさらに構成される。
随意に、図6に示すように、データパケットが優先度情報およびページテーブルウォーク動作識別子をさらに含む場合、メモリ制御デバイス800は、ページテーブルウォーク動作キャッシュ808をさらに含む。ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、受信モジュール802は、優先度情報、仮想アドレス、およびページテーブルベースアドレスを、記憶のためにページテーブルウォーク動作キャッシュ808に送る。処理モジュール804は、ページテーブルウォーク動作キャッシュ808に記憶された優先度情報の各断片に従って、最も高い優先度をもつ優先度情報に対応する仮想アドレスおよびページテーブルベースアドレスを判断し、ページテーブルウォーク動作を実行する。
このデバイス実施形態は、メモリ制御デバイスを提供する。ページテーブルウォーク動作を実行するために要求される内容を含むデータパケットを受信した後、メモリ制御デバイスはページテーブルウォーク動作を実行し、それにより、ページテーブルウォーク動作のプロセス中の、ページテーブルへの複数回のアクセスは、メモリ制御デバイスとチップの外のメモリデバイスとの間で完了するだけでよい。メモリ管理ユニットとメモリ制御デバイスとの間で複数の対話が実施される必要はなく、そうすることによって、チップに対して通信負担が軽くなる。その上、メモリ制御デバイスとメモリデバイスとの間の直接対話により、効率も増大し、ページテーブルウォーク動作の完了が高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
デバイス実施形態3
本発明のデバイス実施形態3は、デバイス実施形態1における任意の随意のメモリ管理ユニットを含むとともに、デバイス実施形態2における任意の随意のメモリ制御デバイスをさらに含むプロセッサチップと、メモリ制御デバイスとメモリ管理ユニットとの間の通信接続を確立するように構成された少なくとも1つのオンチップルータとを提供する。
プロセッサチップの実際の稼動中、最初に、メモリ管理ユニットは、仮想アドレスを受信し、TLB missが起きた後、ページテーブルウォーク動作を実行するために要求される情報をオンチップルータに送り、オンチップルータは、必要な情報を対応するメモリ制御デバイスに送る。次いで、ページテーブルウォーク動作を実行するために要求される情報を運ぶデータパケットを受信した後、メモリ制御デバイスは、ページテーブルウォーク動作を実行するために要求されるとともにデータパケット中で運ばれる情報に従ってページテーブルウォーク動作を実行して、物理アドレスを取得し、物理アドレスをパケットの中にパックし、パケットをオンチップルータに送る。オンチップルータがデータパケットをメモリ管理ユニットにルーティングした後、メモリ管理ユニットは、物理アドレスに従ってトランスレーションルックアサイドバッファを更新し得る。プロセスの具体的な実装詳細については、方法実施形態1および2ならびにデバイス実施形態1および2を参照されたい。詳細について、ここで再度は記載しない。
本実施形態は、プロセッサチップ1000の最適化された作業手順について記述する。プロセッサチップ1000は、メモリ管理ユニット1002と、少なくとも2つのオンチップルータ、つまり、オンチップルータ1004およびオンチップルータ1022と、メモリ制御デバイス1006とを含む。
ステップ1:メモリ管理ユニット1002は、仮想アドレスAを受信し、仮想アドレスAに従ってトランスレーションルックアサイドバッファを照会し、TLB missが起こる。詳細については、方法実施形態1におけるステップ202およびステップ204を参照されたい。
ステップ2:メモリ管理ユニット1002は、ページテーブルウォーク動作識別子を生成し、ページ・テーブル・ベース・アドレス・レジスタを読み取ってページテーブルベースアドレスを取得し、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得する。この例では、メモリ制御デバイス1006は、ページテーブルベースアドレスに対応するメモリ制御デバイスであると想定される。詳細については、方法実施形態1におけるステップ208を参照されたい。
ステップ3:メモリ管理ユニット1002は、仮想アドレスを送るスレッドのID、スレッドに対応する優先度情報、およびメモリ管理ユニット1002に対応するプロセッサのIDを取得し、オンチップルータ1022に、これらの情報断片を、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDと一緒に送る。具体的には、上記情報はデータパケットの形で送られてよく、データパケットの構造については、Table 2(表2)を参照されたい。詳細については、方法実施形態1におけるステップ210およびステップ210の前の随意のステップを参照されたい。
ステップ4:オンチップルータ1022および別のオンチップルータは、メモリ制御デバイスのIDに従って、上記情報を運ぶデータパケットをオンチップルータ1004にルーティングし、オンチップルータ1004は、データパケットをメモリ制御デバイス1006に送る。
ステップ5:メモリ制御デバイス1006がデータパケットを受信する。受信モジュール1008は最初に、データパケット中で運ばれたページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断し、次いで、データパケットを解析し、データパケットの内容をページテーブルウォーク動作キャッシュ1012に記憶する。相応して、受信モジュール1008によって受信されたデータパケット中で運ばれる識別子が、データパケットが通常のデータ読取り/書込み動作パケットであることを示す場合、受信モジュール1008は、データパケットを解析し、データパケットをデータキャッシュ1010に記憶する。通常のデータ読取り/書込み動作はページテーブルウォーク動作とは異なるので、ここで、2つの異なるキャッシュが、データパケットの内容を記憶するのに使われてよい。実際には、1つのキャッシュが使われてもよく、異なる動作タイプが、処理中に見分けられる。ページテーブルウォーク動作キャッシュ1012に記憶されたデータパケットの内容が、Table 4(表4)に示されている。詳細については、方法実施形態2におけるステップ402およびステップ402の随意のステップを参照されたい。
ステップ6:ページテーブルウォーク処理モジュール1016が、ページテーブルウォーク動作キャッシュ1012に記憶されているとともに処理されるべき各ページテーブルウォーク動作についての情報に対応する優先度情報に従って、処理優先度が最も高いページテーブルウォーク動作を選択する。実際には、優先度選択は、ページテーブルウォーク動作キャッシュ1012とデータキャッシュ1010の両方において実施されてもよいことに留意されたい。ページテーブルウォーク動作処理モジュール1016とデータ処理モジュール1014の両方が、それぞれの動作を処理する準備ができているので、データセレクタ(Multiplexer)1018は、メモリコントローラ1020と対話するために、2つのモジュールのうちの1つを選択する。その上、ここで、メモリコントローラ1020の機能は、従来のメモリコントローラのものと同様であり、つまり、従来のメモリコントローラが、このデバイス実施形態におけるメモリ制御デバイス1006に統合されていることに留意されたい。その上、ここで、ページテーブルウォーク処理モジュール1016、データセレクタ1018、およびメモリコントローラ1020は、デバイス実施形態2における処理モジュール804に統合されてよい。実際には、これらの3つのモジュールは、別々に展開されてもよい。
ステップ7:ページテーブルウォーク処理モジュール1016が、データセレクタ1018を使うことによってメモリコントローラ1020にアクセスし、ページテーブルウォーク動作キャッシュ1012に記憶された仮想アドレスAおよび対応するページテーブルベースアドレスに従ってページテーブルウォーク動作を完了し、仮想アドレスAに対応する物理アドレスBを取得する。詳細については、方法実施形態2におけるステップ404を参照されたい。
ステップ8:ページテーブルウォーク動作処理モジュール1016が、ページテーブルウォーク動作完了識別子を生成し、送付モジュール1022に、ページテーブルウォーク動作完了識別子を、仮想アドレスAに対応するデータパケット中で運ばれる物理アドレスB、プロセッサのID、およびスレッドのIDと一緒に送り、送付モジュール1022が、ページテーブルウォーク動作完了識別子、プロセッサのID、スレッドのID、および物理アドレスBをデータパケットの中にカプセル化し、データパケットをオンチップルータ1004に送る。データパケットの構造については、Table 3(表3)を参照されたい。
ステップ9:オンチップルータ1004および別のオンチップルータが、データパケット中で運ばれるプロセッサのIDに従って、データパケットをオンチップルータ1022にルーティングし、オンチップルータ1022がデータパケットをメモリ管理ユニット1002に送る。
ステップ10:データパケットを受信した後、メモリ管理ユニット1002は、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われると判断し、データパケットを解析して、データパケット中で運ばれる仮想アドレスAおよび物理アドレスBを取得し、仮想アドレスAおよび物理アドレスBに従って、トランスレーションルックアサイドバッファの更新を完了する。詳細については、方法実施形態1におけるステップ214を参照されたい。
ステップ11:トランスレーションルックアサイドバッファの更新を完了した後、メモリ管理ユニット1002は、スレッドのものであるとともにデータパケット中で運ばれるIDに従って、スレッドのIDを有効にし、そうすることにより、ステップ1においてTLB missが起こると、スレッドが実行され続けることができないために中断されているスレッドが実行され続けてよい。この場合、スレッドは、仮想アドレスに対応する物理アドレスにアクセスする必要がある。トランスレーションルックアサイドバッファの更新が完了しているので、このときはトランスレーションルックアサイドバッファのアクセスにおいて、TLB hitが明確に起こる。したがって、スレッドは実行され続けてよい。
このデバイス実施形態は、プロセッサチップを提供する。プロセッサチップ上のメモリ管理ユニットが仮想アドレスを受信し、TLB missが起きた場合、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される情報を対応するメモリ制御デバイスに送り、対応するメモリ制御デバイスはページテーブルウォーク動作を完了し、それにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信ネットワーク上で引き起こされる負担を削減し、というのは、複数のプロセッサコアのメモリ管理ユニットはすべて、複数レベルページテーブルが照会される必要があるとき、データパケットを複数回送る必要があるからである。その上、メモリ管理ユニットとメモリ制御デバイスとの間の通信の回数量が削減され、むしろ、メモリ制御デバイスが、チップの外のメモリデバイスへの複数回のアクセスを完了するので、ページテーブルウォーク動作の完了も高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
上記実施形態において、各実施形態の記述はそれぞれの焦点を有する。実施形態において詳しく記載されていない部分については、他の実施形態における関連記述に対して参照を行えばよい。方法実施形態1における実装詳細およびデバイス実施形態1におけるメモリ管理ユニットの機能は本質的に同じであり、方法実施形態2における実装詳細およびデバイス実施形態2におけるメモリ制御デバイスの機能は本質的に同じであることに留意されたい。デバイス実施形態1およびデバイス実施形態2において記載したデバイスは、デバイス実施形態3を形成するように、プロセッサチップ上で統合される。したがって、これらの3つの間の技術的詳細は互いを参照する場合がある。
最後に、上記実施形態は、本発明を限定することではなく、本発明の技術的解決策を記載することを意図しているにすぎないことに留意されたい。本発明を、上記実施形態を参照して詳しく記載したが、当業者は、本発明の実施形態の技術的解決策の範囲から逸脱することなく、上記実施形態に記載した技術的解決策に対する修正を依然として行っても、そのいくつかの技術的特徴に対する等価な置換えを行ってもよいことを理解されたい。
600 メモリ管理ユニット
602 受信モジュール
604 処理モジュール
606 送付モジュール
800 メモリ制御デバイス
802 受信モジュール
804 処理モジュール
806 送付モジュール
808 ページテーブルウォーク動作キャッシュ
1000 プロセッサチップ
1002 メモリ管理ユニット
1004 オンチップルータ
1006 メモリ制御デバイス
1008 受信モジュール
1010 データキャッシュ
1012 ページテーブルウォーク動作キャッシュ
1014 データ処理モジュール
1016 ページテーブルウォーク処理モジュール、ページテーブルウォーク動作処理モジュール
1018 データセレクタ(Multiplexer)
1020 メモリコントローラ
1022 オンチップルータ、送付モジュール

Claims (23)

  1. メモリ管理ユニットによって、仮想アドレスを受信するステップと、
    前記メモリ管理ユニットによって、前記仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断するステップと、
    前記メモリ管理ユニットによって、ページテーブルベースアドレスを取得するためにページ・テーブル・ベース・アドレス・レジスタを読み取るステップと、
    前記メモリ管理ユニットによって、前記ページテーブルベースアドレスに従って、前記ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子(ID)を取得するステップと、
    前記メモリ管理ユニットによって、前記仮想アドレスおよび前記ページテーブルベースアドレスを、複数の前記メモリ制御デバイスの中の前記IDに対応する前記メモリ制御デバイスに送るステップと、
    前記メモリ管理ユニットによって、前記メモリ制御デバイスによって送られるとともに前記仮想アドレスに対応している物理アドレスを受信するステップであって、前記物理アドレスは、前記仮想アドレスおよび前記ページテーブルベースアドレスに従って、前記メモリ制御デバイスによってページテーブルウォーク動作を実行することによって取得される、ステップと、
    前記メモリ管理ユニットによって、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新するステップとを含むデータ処理方法。
  2. 前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップの前に、前記データ処理方法は、
    前記メモリ管理ユニットによって、ページテーブルウォーク動作識別子を生成するステップであって、前記ページテーブルウォーク動作識別子はページテーブルウォーク動作を示す、ステップをさらに含み、
    前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップは、
    前記メモリ管理ユニットによって、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスの前記ID、および前記ページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化するステップと、
    前記メモリ管理ユニットによって、オンチップルータを使うことによって前記データパケットを前記メモリ制御デバイスに送るステップとを含む、請求項1に記載のデータ処理方法。
  3. 前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップの前に、前記データ処理方法は、
    前記メモリ管理ユニットによって、前記仮想アドレスを送るスレッドのIDを取得するステップと、
    前記メモリ管理ユニットによって、前記メモリ管理ユニットに対応するプロセッサのIDを取得するステップとをさらに含み、
    前記データパケットは、前記仮想アドレスを送る前記スレッドの前記IDおよび前記メモリ管理ユニットに対応する前記プロセッサの前記IDをさらに運ぶ、請求項2に記載のデータ処理方法。
  4. 前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップの前に、前記データ処理方法は、
    前記メモリ管理ユニットによって、前記仮想アドレスを送る前記スレッドの優先度情報を取得するステップをさらに含み、
    前記データパケットは前記優先度情報をさらに運ぶ、請求項3に記載のデータ処理方法。
  5. 前記メモリ管理ユニットによって、前記メモリ制御デバイスによって送られるとともに前記仮想アドレスに対応している物理アドレスを受信する前記ステップは、
    前記メモリ管理ユニットによって、前記メモリ制御デバイスによって送られたデータパケットを受信するステップを含み、前記メモリ制御デバイスによって送られた前記データパケットは、前記仮想アドレスと、前記仮想アドレスに対応する前記物理アドレスとを運ぶ、請求項1から4のいずれか一項に記載のデータ処理方法。
  6. 前記メモリ制御デバイスによって送られた前記データパケットは、ページテーブルウォーク動作完了識別子をさらに含み、
    前記メモリ管理ユニットによって、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新する前記ステップの前に、前記データ処理方法は、
    前記メモリ管理ユニットによって、前記ページテーブルウォーク動作完了識別子に従っ
    て、前記メモリ制御デバイスによって送られた前記データパケットが前記トランスレーションルックアサイドバッファを更新するのに使われることを確認するステップをさらに含む、請求項5に記載のデータ処理方法。
  7. 前記メモリ制御デバイスによって送られた前記データパケットは、スレッドのIDをさらに含み、
    前記メモリ管理ユニットによって、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新する前記ステップの後、前記データ処理方法は、
    前記スレッドの前記IDに従って、前記スレッドの前記IDに対応する前記スレッドをアクティブ化するステップをさらに含む、請求項5または6に記載のデータ処理方法。
  8. メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するステップと、
    前記メモリ制御デバイスによって、前記仮想アドレスに対応する物理アドレスを取得するために、前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップと、
    前記メモリ制御デバイスによって前記メモリ管理ユニットに、前記仮想アドレスに対応する前記物理アドレスを送るステップとを含むデータ処理方法であって、
    前記仮想アドレスおよび前記ページテーブルベースアドレスは、前記メモリ制御デバイスの識別子(ID)とともにデータパケットの中にカプセル化された後に前記IDに対応する前記メモリ制御デバイスに送られ、前記メモリ制御デバイスの前記IDは、複数のメモリ制御デバイスの中から前記メモリ制御デバイスを識別するために使用される、
    データ処理方法。
  9. メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信する前記ステップは、
    前記メモリ制御デバイスによって、オンチップルータを使うことによって、前記メモリ管理ユニットによって送られたデータパケットを受信するステップであって、前記データパケットは、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスのID、プロセッサのID、およびスレッドのIDを含み、前記プロセッサは、前記メモリ管理ユニットに対応するプロセッサであり、前記仮想アドレスは、前記スレッドによって送信される、ステップを含み、
    前記メモリ制御デバイスによって前記メモリ管理ユニットに、前記仮想アドレスに対応する前記物理アドレスを送る前記ステップは、
    前記メモリ制御デバイスによって、前記物理アドレス、前記スレッドの前記ID、および前記プロセッサの前記IDをパケットの中にパックし、前記パケットを前記メモリ管理ユニットに送るステップを含む、請求項8に記載のデータ処理方法。
  10. 前記データパケットは、ページテーブルウォーク動作識別子をさらに含み、
    前記メモリ制御デバイスによって、前記仮想アドレスに対応する物理アドレスを取得するために、前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行する前記ステップの前に、前記データ処理方法は、
    前記メモリ制御デバイスによって、前記ページテーブルウォーク動作識別子に従って、前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するステップをさらに含む、請求項9に記載のデータ処理方法。
  11. 前記データパケットは優先度情報をさらに含み、
    前記メモリ制御デバイスによって、前記仮想アドレスに対応する物理アドレスを取得するために、前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行する前記ステップの前に、前記データ処理方法は、
    前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、前記メモリ制御デバイスによってページテーブルウォーク動作キャッシュに、前記優先度情報、ならびに前記優先度情報に対応する前記仮想アドレスおよび前記ページテーブルベースアドレスを記憶するステップと、
    前記メモリ制御デバイスによって、前記ページテーブルウォーク動作キャッシュ中に記憶された前記優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するステップとをさらに含む、請求項10に記載のデータ処理方法。
  12. 仮想アドレスを受信するように構成された受信モジュールと、
    前記仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断し、ページテーブルベースアドレスを取得するために、ページ・テーブル・ベース・アドレス・レジスタを読み取り、前記ページテーブルベースアドレスに従って、前記ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子(ID)を取得するように構成された処理モジュールであって、前記メモリ制御デバイスの前記IDは、複数のメモリ制御デバイスから前記メモリ制御デバイスを識別するために使用される、処理モジュールと、
    前記仮想アドレス、および前記ページテーブルベースアドレスを、複数の前記メモリ制御デバイスの中の前記IDに対応する前記メモリ制御デバイスに送るように構成された送付モジュールとを備えるメモリ管理ユニットであって、
    前記処理モジュールは、前記メモリ制御デバイスによって送られるとともに前記仮想アドレスに対応している物理アドレスを受信し、前記物理アドレスは、前記仮想アドレスおよび前記ページテーブルベースアドレスに従って、前記メモリ制御デバイスによってページテーブルウォーク動作を実行することによって取得され、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新するようにさらに構成される、メモリ管理ユニット。
  13. 前記処理モジュールは、ページテーブルウォーク動作識別子を生成するようにさらに構成され、前記ページテーブルウォーク動作識別子はページテーブルウォーク動作を示し、
    前記送付モジュールは、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスの前記ID、および前記ページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化し、オンチップルータを使うことによって、前記データパケットを前記メモリ制御デバイスに送るように特に構成される、請求項12に記載のメモリ管理ユニット。
  14. 前記受信モジュールは、前記仮想アドレスを送るスレッドのIDおよび前記メモリ管理ユニットに対応するプロセッサのIDを取得するようにさらに構成され、
    前記データパケットは、前記仮想アドレスを送る前記スレッドの前記IDおよび前記メモリ管理ユニットに対応する前記プロセッサの前記IDをさらに運ぶ、請求項13に記載のメモリ管理ユニット。
  15. 前記受信モジュールは、前記仮想アドレスを送る前記スレッドの優先度情報を取得するようにさらに構成され、
    前記データパケットは前記優先度情報をさらに運ぶ、請求項14に記載の前記メモリ管理ユニット。
  16. 前記処理モジュールは、
    前記メモリ制御デバイスによって送られたデータパケットを受信するように構成され、前記メモリ制御デバイスによって送られた前記データパケットは、前記仮想アドレスと、前記仮想アドレスに対応する前記物理アドレスとを運ぶ、請求項12から15のいずれか一項に記載の前記メモリ管理ユニット。
  17. 前記メモリ制御デバイスによって送られた前記データパケットはページテーブルウォーク動作完了識別子をさらに含み、
    前記処理モジュールは、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新する前に、前記ページテーブルウォーク動作完了識別子に従って、前記メモリ制御デバイスによって送られた前記データパケットが前記トランスレーションルックアサイドバッファを更新するのに使われることを確認するようにさらに構成される、請求項16に記載のメモリ管理ユニット。
  18. 前記メモリ制御デバイスによって送られた前記データパケットはスレッドのIDをさらに含み、
    前記処理モジュールは、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新した後、前記スレッドの前記IDに従って、前記スレッドをアクティブ化するようにさらに構成される、請求項16または17に記載の前記メモリ管理ユニット。
  19. メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するように構成された受信モジュールと、
    前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行して、前記仮想アドレスに対応する物理アドレスを取得するように構成された処理モジュールと、
    前記メモリ管理ユニットに、前記仮想アドレスに対応する前記物理アドレスを送るように構成された送付モジュールとを備えるメモリ制御デバイスであって、
    前記仮想アドレスおよび前記ページテーブルベースアドレスは、前記メモリ制御デバイスの識別子(ID)とともにデータパケットの中にカプセル化された後に前記IDに対応する前記メモリ制御デバイスに送られ、前記メモリ制御デバイスの前記IDは、複数のメモリ制御デバイスの中から前記メモリ制御デバイスを識別するために使用される、
    メモリ制御デバイス。
  20. 前記受信モジュールは、前記メモリ管理ユニットによって送られたデータパケットを、オンチップルータを使うことによって受信するように特に構成され、前記データパケットは、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスのID、プロセッサのID、およびスレッドのIDを含み、前記プロセッサは、前記メモリ管理ユニットに対応するプロセッサであり、前記仮想アドレスは、前記スレッドによって送信され、
    前記送付モジュールは、前記物理アドレス、前記スレッドの前記ID、および前記プロセッサの前記IDをパケットの中にパックし、前記パケットを前記メモリ管理ユニットに送るように特に構成される、請求項19に記載のメモリ制御デバイス。
  21. 前記データパケットは、ページテーブルウォーク動作識別子をさらに含み、
    前記受信モジュールは、前記データパケットを受信し、前記ページテーブルウォーク動作識別子に従って、前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するようにさらに構成される、請求項20に記載のメモリ制御デバイス。
  22. 前記データパケットは優先度情報をさらに含み、
    前記受信モジュールは、前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、ページテーブルウォーク動作キャッシュに、前記優先度情報と、前記優先度情報に対応する前記仮想アドレスおよび前記ページテーブルベースアドレスとを記憶するようにさらに構成され、
    前記処理モジュールは、前記ページテーブルウォーク動作キャッシュ中に記憶された前記優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するようにさらに構成される、請求項21に記載のメモリ制御デバイス。
  23. 請求項12から18のいずれか一項に記載の前記メモリ管理ユニットを備え、請求項19から22のいずれか一項に記載の前記メモリ制御デバイスと、少なくとも1つのオンチップルータとをさらに備え、前記少なくとも1つのオンチップルータは、前記メモリ制御デバイスと前記メモリ管理ユニットとの間の通信接続を確立するように構成される、プロセッサチップ。
JP2017533440A 2015-03-27 2015-03-27 データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス Active JP6636526B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/075205 WO2016154789A1 (zh) 2015-03-27 2015-03-27 数据处理方法、内存管理单元及内存控制设备

Publications (2)

Publication Number Publication Date
JP2018503903A JP2018503903A (ja) 2018-02-08
JP6636526B2 true JP6636526B2 (ja) 2020-01-29

Family

ID=57003847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017533440A Active JP6636526B2 (ja) 2015-03-27 2015-03-27 データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス

Country Status (6)

Country Link
US (1) US10353824B2 (ja)
EP (1) EP3211534B1 (ja)
JP (1) JP6636526B2 (ja)
KR (1) KR101994952B1 (ja)
CN (1) CN107209724B (ja)
WO (1) WO2016154789A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180009217A (ko) * 2016-07-18 2018-01-26 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US11048644B1 (en) * 2017-12-11 2021-06-29 Amazon Technologies, Inc. Memory mapping in an access device for non-volatile memory
US11307903B2 (en) 2018-01-31 2022-04-19 Nvidia Corporation Dynamic partitioning of execution resources
US10817338B2 (en) * 2018-01-31 2020-10-27 Nvidia Corporation Dynamic partitioning of execution resources
US11216592B2 (en) * 2018-08-02 2022-01-04 Qualcomm Incorporated Dynamic cryptographic key expansion
US11360704B2 (en) 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device
US20220231962A1 (en) 2019-05-23 2022-07-21 Hewlett Packard Enterprise Development Lp System and method for facilitating data request management in a network interface controller (nic)
CN112860600A (zh) * 2019-11-28 2021-05-28 深圳市海思半导体有限公司 一种加速硬件页表遍历的方法及装置
US11461237B2 (en) 2019-12-03 2022-10-04 International Business Machines Corporation Methods and systems for translating virtual addresses in a virtual memory based system
US11163695B2 (en) 2019-12-03 2021-11-02 International Business Machines Corporation Methods and systems for translating virtual addresses in a virtual memory based system
CN113347239B (zh) * 2021-05-27 2023-01-10 北京奇艺世纪科技有限公司 通信请求处理方法、装置、系统、电子设备及存储介质
CN115072502B (zh) * 2022-07-01 2023-11-07 猫岐智能科技(上海)有限公司 电梯终端服务器系统及控制方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04148352A (ja) * 1990-10-11 1992-05-21 Fujitsu Ltd 複数プロセッサを備える情報処理装置におけるアドレス変換方式
JPH0561772A (ja) * 1991-09-03 1993-03-12 Nec Corp 情報処理システム
US6665788B1 (en) * 2001-07-13 2003-12-16 Advanced Micro Devices, Inc. Reducing latency for a relocation cache lookup and address mapping in a distributed memory system
US7752417B2 (en) 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US8700883B1 (en) * 2006-10-24 2014-04-15 Nvidia Corporation Memory access techniques providing for override of a page table
US8170042B2 (en) * 2007-11-27 2012-05-01 Cisco Technology, Inc. Transmit-side scaler and method for processing outgoing information packets using thread-based queues
US8015361B2 (en) 2007-12-14 2011-09-06 International Business Machines Corporation Memory-centric page table walker
US8140781B2 (en) 2007-12-31 2012-03-20 Intel Corporation Multi-level page-walk apparatus for out-of-order memory controllers supporting virtualization technology
CN102132263A (zh) * 2009-06-24 2011-07-20 松下电器产业株式会社 存储器访问控制装置、集成电路、存储器访问控制方法及数据处理装置
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US8244978B2 (en) * 2010-02-17 2012-08-14 Advanced Micro Devices, Inc. IOMMU architected TLB support
EP2416251B1 (en) * 2010-08-06 2013-01-02 Alcatel Lucent A method of managing computer memory, corresponding computer program product, and data storage device therefor
US20120331265A1 (en) 2011-06-24 2012-12-27 Mips Technologies, Inc. Apparatus and Method for Accelerated Hardware Page Table Walk
GB2501274B (en) * 2012-04-17 2020-05-13 Advanced Risc Mach Ltd Management of data processing security in a secondary processor
US9213649B2 (en) * 2012-09-24 2015-12-15 Oracle International Corporation Distributed page-table lookups in a shared-memory system
CN103116556B (zh) * 2013-03-11 2015-05-06 无锡江南计算技术研究所 内存静态划分虚拟化方法
US9135183B2 (en) * 2013-03-13 2015-09-15 Samsung Electronics Co., Ltd. Multi-threaded memory management
CN104239238B (zh) * 2013-06-21 2018-01-19 格芯公司 用于管理转换旁视缓冲的方法和装置
US20160147667A1 (en) * 2014-11-24 2016-05-26 Samsung Electronics Co., Ltd. Address translation in memory

Also Published As

Publication number Publication date
EP3211534B1 (en) 2020-03-11
WO2016154789A1 (zh) 2016-10-06
KR20170083584A (ko) 2017-07-18
KR101994952B1 (ko) 2019-07-01
CN107209724B (zh) 2020-02-14
US10353824B2 (en) 2019-07-16
JP2018503903A (ja) 2018-02-08
EP3211534A4 (en) 2017-12-13
US20170270051A1 (en) 2017-09-21
EP3211534A1 (en) 2017-08-30
CN107209724A (zh) 2017-09-26

Similar Documents

Publication Publication Date Title
JP6636526B2 (ja) データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス
JP6434168B2 (ja) スイッチへのアドレスキャッシュ
US9619387B2 (en) Invalidating stored address translations
JP6133896B2 (ja) 物理アドレスを用いる非割当てメモリアクセス
US9460024B2 (en) Latency reduction for direct memory access operations involving address translation
EP2472412B1 (en) Explicitly regioned memory organization in a network element
US10095631B2 (en) System address map for hashing within a chip and between chips
JP2018503181A (ja) キャッシュ一貫性を有するマルチコアプロセッサ
US11693805B1 (en) Routing network using global address map with adaptive main memory expansion for a plurality of home agents
JP2008507019A (ja) メモリ管理システム
US20100205344A1 (en) Unified cache structure that facilitates accessing translation table entries
EP2266040A2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
JP6088951B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
US20170228164A1 (en) User-level instruction for memory locality determination
US10310759B2 (en) Use efficiency of platform memory resources through firmware managed I/O translation table paging
US9798674B2 (en) N-ary tree for mapping a virtual memory space
US9984003B2 (en) Mapping processing method for a cache address in a processor to provide a color bit in a huge page technology
US10762137B1 (en) Page table search engine
US10366008B2 (en) Tag and data organization in large memory caches
US10754789B1 (en) Address translation for storage class memory in a system that includes virtual machines
US11003591B2 (en) Arithmetic processor, information processing device and control method of arithmetic processor
US10210083B1 (en) Address remapping for efficient use of distributed memory
JP2019164411A (ja) 管理装置、情報処理装置、管理方法、およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170620

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190619

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191218

R150 Certificate of patent or registration of utility model

Ref document number: 6636526

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