JP2017194964A - メモリの事前割当と関連されたバッファマッピング方式 - Google Patents

メモリの事前割当と関連されたバッファマッピング方式 Download PDF

Info

Publication number
JP2017194964A
JP2017194964A JP2017081927A JP2017081927A JP2017194964A JP 2017194964 A JP2017194964 A JP 2017194964A JP 2017081927 A JP2017081927 A JP 2017081927A JP 2017081927 A JP2017081927 A JP 2017081927A JP 2017194964 A JP2017194964 A JP 2017194964A
Authority
JP
Japan
Prior art keywords
application
operating system
address
memory
physical address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017081927A
Other languages
English (en)
Other versions
JP2017194964A5 (ja
JP6757289B2 (ja
Inventor
ケィ グスーラ,マノイ
K Guthula Manoj
ケィ グスーラ,マノイ
バーヌ プラカシュ ゴルラプディ,ヴェンカタ
Bhanu Prakash Gollapudi Venkata
バーヌ プラカシュ ゴルラプディ,ヴェンカタ
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017194964A publication Critical patent/JP2017194964A/ja
Publication of JP2017194964A5 publication Critical patent/JP2017194964A5/ja
Application granted granted Critical
Publication of JP6757289B2 publication Critical patent/JP6757289B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/656Address space sharing

Landscapes

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

Abstract

【課題】アプリケーション、オペレーティングシステム、及びハードウェア間の効率的な通信を可能にするコンピュータ具現方法を提供する。
【解決手段】オペレーティングシステムがアプリケーションと通信するために利用するコンピュータ具現方法に係る。この方法では、オペレーティングシステムがアプリケーションから直接物理的アドレスを受信し、データ伝達を実現するためにメモリの物理的アドレスに基づいてオペレーティングシステムレベル仮想アドレスを決定する。
【選択図】図1

Description

本発明は一般的にメモリバッファに係り、具体的にはメモリの事前割当と関連されたバッファマッピング方式に係る。
UNIX(登録商標)基盤のストレージ/サーバーシステム内には各々が特定作業を遂行する多様なアプリケーション及び装置ドライバがある。アプリケーション、オペレーティングシステム/カーネル(operating system(OS)/kernel)、及びハードウェアは、効果的に通信するために、しばしばメモリバッファに順にアクセス(pass_around)する。通常、このような通信をする間に、アプリケーションはそのアプリケーションレベル仮想アドレス(application−level virtual address)をオペレーティングシステム/カーネルに伝達する。メモリバッファはアプリケーションレベル仮想アドレスを使用してドライバを呼出し、ドライバはアプリケーションレベル仮想アドレスをオペレーティングシステム/カーネルレベル仮想アドレス(operating system/kernel−level virtual address)にマッピング(mapping)する。
このような変換を容易にするために、仮想及び物理的メモリはページと称される扱い易いサイズのチャンク(chunk)に分割される。このページドモデル(paged model)において、仮想アドレスはオフセット(offset)及び仮想ページフレームナンバー(virtual page frame number)から構成される。プロセッサが仮想アドレスに出会う毎に、プロセッサは仮想アドレスからオフセット及び仮想ページフレームナンバーを抽出する。プロセッサはその後、仮想ページフレームナンバーを物理的ページフレームナンバーに変換してその物理的ページ内の正しいオフセットの位置にアクセスする。
仮想アドレスを物理的アドレスに変換するために、プロセッサは第1に仮想アドレスページフレームナンバーとその仮想ページ内のオフセットを算出する。プロセッサは仮想ページフレームナンバーをプロセスページテーブルへのインデックスとして使用してそのページテーブルエントリを検索する。そのオフセットにおけるページテーブルエントリが有効であれば、プロセッサはこのエントリから物理的ページフレームナンバーを持って来る。プロセッサが仮想ページフレームナンバーを物理的フレームナンバーに変換するのに使用するテーブルはページテーブル(page table)と称される。
仮想アドレスはオフセットを仮想ページナンバーに加算することによって計算される。保護機能を強化するために、使用者領域(空間、スペース)アプリケーション及びカーネルのために別途分離されたページテーブルがある。使用者領域仮想アドレスにアクセスするために、カーネルレベルソフトウェアは使用者領域アドレスをカーネルアドレス領域にマッピングする。このプロセスは使用者領域アドレスのためにカーネルページテーブルエントリを生成することを含む。
ハードウェアに対しては、オペレーティングシステム/カーネルとハードウェアとの間のコネクションは、直接メモリアクセス(direct memory access、以下、DMA)として発生する。DMAを使用して、ハードウェア装置はCPUが介入しなくとも、コンピュータのメーンメモリから、又はコンピュータのメーンメモリへ、データを伝達できる。DMAが作動するために、メモリバッファはハードウェア装置に認識されるアドレス範囲に頻繁にマッピングされる。このアドレス範囲はIO仮想アドレスと称される。このマッピングはアーキテクチャにも依存するが、IO仮想アドレスとコンピュータメーンメモリの物理的アドレスとの間の変換を設定(set_up)することを含む。一般的に、これは入出力メモリ管理装置(Input/Output Memory Management Unit、IOMMU)ハードウェアを使用して発生する。幾つかのアーキテクチャにおいて、IO仮想アドレスはコンピュータメーンメモリの物理的アドレスと同一である。
上述したマッピング方式は、ページテーブルエントリを設定することによってアプリケーションレベル仮想アドレスをオペレーティングシステムレベル仮想アドレスに最初に変換することを要求するので、オペレーティングシステム/カーネルに重い負担を与える。同様に、DMAマッピングはすべてのDMA伝送のためにその都度設定されなければならない。そこで、OS、アプリケーション、及びハードウェア間の通信がさらに効率的にできる方法が要求される。
米国特許第8,909,727号公報 米国特許第6,405,237号公報 米国特許第8,504,744号公報 米国特許第8,166,194号公報 米国特許第7,590,777号公報 米国特許第8,868,867号公報 米国特許第9,092,426号公報 米国特許公開第2007/0255866号明細書
上記の要求に応じるためになされた本発明は、アプリケーションレベル仮想アドレスをオペレーティングシステムレベル仮想アドレスに最初に変換する必要が無く、オペレーティングシステム/カーネルに重い負担を与えない、同様に、すべてのDMA伝送のためにDMAマッピングをその都度設定する必要が無い、ような、アプリケーション、オペレーティングシステム、及びハードウェア間の効率的な通信を可能にするコンピュータ具現方法を提供する。
本発明の一実施形態による発明の概念は、オペレーティングシステムがアプリケーションと通信するために利用するコンピュータ具現方法に係る。この方法では、オペレーティングシステムがアプリケーションから直接物理的アドレスを受信し、データ伝達を実現するためにメモリの物理的アドレスに基づいてオペレーティングシステムレベル仮想アドレスを決定する。
本発明の他の一実施形態による発明の概念は、アプリケーション、オペレーティングシステム、及びハードウェアが、バッファを利用して互いに単一ノードにおいて通信するために利用するコンピュータ具現方法に係る。この方法では、アプリケーションが、アプリケーションレベル仮想アドレスを物理的アドレスに変換し、その物理的アドレスをオペレーティングシステムに対して通信する。そうすると、オペレーティングシステムは、その物理的アドレスを使用してオペレーティングシステムレベル仮想アドレスを決定する。
本発明のその他の一実施形態による発明の概念は、データ伝達制御装置に係り、前記装置は、アプリケーションが自分のアプリケーションレベル仮想アドレスを物理的アドレスに変換し、その物理的アドレスをオペレーティングシステムに通信することを可能にするメモリマッパーを含む。
本発明の実施形態によれば、オペレーティングシステムがアプリケーションから直接物理的アドレスを受信し、データ伝達を実現するためにメモリの物理的アドレスに基づいてオペレーティングシステムレベル仮想アドレスを決定するので、例えば、アプリケーションは単純にオフセットをバッファの開始点のDMAアドレスに加算してオフセットのDMAアドレスを決定できる。このように、アプリケーションレベル仮想アドレスをオペレーティングシステムレベル仮想アドレスに最初に変換する必要が無く、オペレーティングシステム/カーネルに重い負担を与えない、同様に、すべてのDMA伝達のためにDMAマッピングをその都度設定する必要が無い。よって、アプリケーションはカーネルの介入無しでバッファアドレスをハードウェア装置に直接伝達でき、アプリケーション、オペレーティングシステム、及びハードウェア間の効率的な通信が可能になる。
本発明の一実施形態に係る1つの可能な環境を提供する、単一ノードにおける使用者領域、カーネル領域、及びハードウェアを概念的に示した図である。 本発明の一実施形態に係るアプリケーション、オペレーティングシステム、及びハードウェアの間の通信方法を示した概略図である。 本発明の一実施形態に係る使用者領域における多様なアプリケーション、及び同一の物理的アドレスをポインティングし、バッファ共有を可能にするカーネル内の相異なる仮想アドレスを示した概略図である。 本発明の一実施形態に係るアプリケーション、オペレーティングシステム、及びハードウェアの間の通信方法を示した概略図である。
本発明に係るシステムでは、オペレーティングシステムが、メモリバッファが通過される毎にカーネルレベルページテーブル基盤の変換を設定する必要がない。本開示では、アプリケーションは物理的アドレスをカーネルに伝達する。本発明の一実施形態によれば、カーネルはこのようなバッファのために要求されるマッピングを有している。従って、カーネルは仮想アドレスを計算でき、その度にマッピング動作を遂行しなくともよい。すべてのカーネルモジュールが同一の仮想アドレス領域を共有するので、どのオペレーティングシステムモジュール(メモリに割当されたオペレーティングシステムモジュールのみならず)も、物理的アドレスを使用して仮想アドレスを獲得し、バッファ上で動作できる。
相異なるアプリケーションの間で、通信がバッファオフセットを使用して発生する。アプリケーションは仮想アドレスを使用してバッファ上で動作する。アプリケーションは、単純にオフセットをバッファの開始点の仮想アドレスに加算して自分の仮想アドレスを計算できる。
アプリケーションは、単純にオフセットをバッファの開始点のDMAアドレスに加算してオフセットのDMAアドレスを決定できる。アプリケーションはカーネル介入無しでバッファアドレスをハードウェア装置に直接伝達できる。
本開示は単一ノードの状況に対して開示しているが、本発明はこれに制限されない。
図1は本発明の一実施形態に係る1つの可能な環境を提供する、単一ノード(single node)における使用者領域(user space)、カーネル領域(kernel space)、及びハードウェアを概念的に示す。図示されたように、使用者領域を形成するアプリケーション100、オペレーティングシステム/カーネル200、及びハードウェア300は互いに通信して、使用者の要請を受信し、実行する。ハードウェア300は多様な装置、中央処理装置、及びシステムメモリを含む。
オペレーティングシステム200は、使用者領域を形成するアプリケーション100及びハードウェア300の間のインターフェイスを担い、且つ、中でもアプリケーション100にシステムメモリへのアクセスを可能にする。装置ドライバは一般的にオペレーティングシステム200の一部である。メモリマッパーはイメージ及びデータファイルを使用者領域のアプリケーション内にマッピングする。メモリマッピングにおいて、ファイルのコンテンツは仮想アドレスと連結(link)される。
図2は本発明の一実施形態に係るアプリケーション、オペレーティングシステム、及びハードウェアの間の通信方法を示した概略図である。アプリケーション100に関しては、2つのアプリケーション、アプリケーションX及びアプリケーションYが例示される。2つのアプリケーションの各々は自分の仮想アドレスのセットと共に自分の仮想メモリVMを有し、これは図2のVM−X及びVM−Yで示されている。
また、各アプリケーションは自分の各々の仮想ページをメモリの物理的ページにマッピングする自分のページテーブル110を有する。例えば、図示されたように、アプリケーションXの仮想ページフレームナンバー0(VPFN0)は物理的ページフレームナンバー1(PFN1)のメモリにマッピングされ、アプリケーションYの仮想ページフレームナンバー1(VPFN1)は物理的ページフレームナンバー4(PFN4)のメモリにマッピングされる。
ページテーブル110は仮想ページフレームナンバーをオフセットとして使用してアクセスされる。仮想アドレスを物理的アドレスに変換するために、仮想アドレスページフレームナンバー及びその仮想ページ内のオフセットが先に決定される。仮に仮想メモリアドレスが有効であり、テーブルエントリが有効であれば、プロセッサは物理的ページフレームナンバーを取り上げ、これにページサイズを乗じて、物理的メモリのページのベース(base)アドレスを獲得する。その後、オフセットが加えられる。
例えば、図2に示されたように、ページサイズが0x2000であると仮定する。VM−Yの0x2194のアドレスに対して、プロセッサは前記アドレスを仮想ページフレームナンバー1内の0x194のオフセットに変換する。この仮想ページフレームナンバー1は物理的ページフレームナンバー4にマッピングされ、これは0x8000(4x2000)から開始する。0x194のオフセットを物理的ページフレームナンバーに加えて、最終物理的アドレス0x8194を生成する。
従来のアプリケーションは仮想アドレスと仮想アドレスのベースアドレスに対するオフセットと、のみを使用して互いに通信するが、本システムは、アプリケーションが物理的アドレスを使用してカーネルと通信できるようにする。図示されたように、カーネル変換テーブル210は物理的アドレスをオペレーティングシステムレベル仮想アドレスに変換するのに使用される。カーネル変換テーブル210は物理的アドレスの仮想アドレスへの変換を可能にし、各オペレーティングシステムに特有(OS−specific)であり得る。
本発明の一実施形態によれば、メモリは、アプリケーション100と事前割当(Pre−allocation)及び共有され、従って、アプリケーション100及びオペレーティングシステム200は共に物理的アドレステーブルにアクセスできる。ここで使用された“事前割当(Pre−allocation)”は、アプリケーション/カーネル/ハードウェアの各ドメイン間のデータを伝達するためにバッファが使用される前に割当されることを意味する。また、オペレーティングシステム200内の相異なるモジュールは、すべてのモジュールが同一の仮想アドレス領域を共有する場合、物理的アドレスを自分のオペレーティングシステムレベル仮想アドレスに変換する。
各オペレーティングシステムが物理的アドレスを仮想アドレスに変換するのに使用する方法は、各オペレーティングシステムのアーキテクチャに依存する。例えば、リナックス(登録商標)オペレーティングシステムは、アドレスの或る特定範囲に対する単純な算術演算を使用して物理的アドレスを仮想アドレスに変換する。リナックス(登録商標)で具現される場合、本システムの事前割当されたバッファは、物理的アドレスに到達するために単純な算術が使用されたこのようなアドレス範囲に属する。一部の他のオペレーティングシステムは相異なるメカニズムを通じてこの作業を遂行される。
この場合アプリケーションは、オフセットのDMAアドレスを単純にバッファの開始点のDMAアドレスにオフセットを加えて計算できる。このように、アプリケーションはオペレーティングシステム200の介入無しでハードウェア300装置にバッファアドレスを直接伝達できる。
図3は本発明の一実施形態に係る、使用者領域における多重アプリケーション、及び、同一の物理的アドレスをポインティングし、バッファ共有を可能にするカーネル内の相異なる仮想アドレスを示した概略図である。図3ではアプリケーション使用者領域100のアプリケーションX及びアプリケーションYが例示されている。アプリケーションXにおいて“バッファ−1”とラベルされたデータはアプリケーションXのアドレス領域0x3000に格納される。このデータは、例えば図2に示されたプロセスを使用してカーネルアドレス領域0x5000に変換される。
同一のデータ(バッファ−1)は、アプリケーションYのアドレス領域アドレス0x1000のデータに対応するが、2つのアプリケーションX及びYは物理的アドレスを使用して同一のデータを指し示すことができる。“バッファ−2”とラベルされたデータはアプリケーションYの仮想アドレス0x4000に格納され、これはカーネルアドレス領域0x7000に対応する。カーネルモジュールが同一の仮想アドレス領域を共有するという事実のため、如何なるオペレーティングシステムモジュールも図3に示されたカーネルアドレスを使用して仮想アドレスを得る。
図4は本発明の一実施形態に係るアプリケーション、オペレーティングシステム、及びハードウェアの間の通信方法を示した概略図である。具体的には、図4の実施形態は使用者領域(アプリケーション100)のアプリケーション−1(102)及びアプリケーション−2(104)がオフセット106を使用して互いに通信し、アプリケーション−2(104)は物理的アドレス204を使用してカーネルモジュール202と通信することを示す。アプリケーション(例えば、アプリケーション−2(104))はオフセットを利用して生成されたDMAアドレスを使用してハードウェア装置302と直接的に通信できる。
本発明の一実施形態によれば本システムは、機械によって実行可能な少なくとも1つのコードセクションを有するコンピュータプログラムが格納されたコンピュータ読出し可能な格納媒体を含み、これによって上述したような段階を機械に遂行させる。
本発明の一実施形態によれば、本システムはハードウェア、ソフトウェア、又は、ハードウェアとソフトウェアの組合せにより具現できる。本開示は単1のコンピュータシステムを含む単一ノード具現に中心に説明しているが、これは互いに異なる要素が複数個の相互連結されたコンピュータシステムに亘って散在している分散方式において使用するよう適応できよう。任意の種類のコンピュータシステム又は装置は、本願に記載された方法を遂行するように適応するのに適合できる。典型的なハードウェアとソフトウェアの組合せは、ローディングされて実行される時、ここに記述された方法を遂行するようにコンピュータシステムを制御するコンピュータプログラムを有する汎用コンピュータシステムである。
本システムは、上述した方法の具現を可能にするすべての機能を含み、且つコンピュータシステムにローディングされる時、この方法を遂行できる、コンピュータプログラム製品に組込み可能である。本文脈で“コンピュータプログラム”とは、情報処理能力を有するシステムが特定の機能を、(a)直接遂行するように意図された、若しくは、(b)1)別の言語、コード、又は表記法に変換、2)相異なる材質形態に再生、の中でいずれか1つ、或いは双方を行った後に遂行するように意図された命令のセットの、何らかの言語、コード、又は表記法による何らかの表現を意味する。
本発明が特定な実施形態を参照して説明されたが、当業者ならば本発明の範囲を逸脱しない範囲内で多様な変更をなし、等価物で置換できることがを理解できよう。また、本発明の範囲を逸脱せずに本発明の教示に特定状況又は特定材料を適応させる多くの変形が可能であろう。従って、本発明の開示は、本開示が開示された特定実施形態に限定されず、本発明が添付された請求の範囲内に属するすべての実施形態を含むことを意図している。
100 アプリケーション
102 アプリケーション−1
104 アプリケーション−2
106 オフセット
110 ページテーブル
200 オペレーティングシステム
202 カーネルモジュール
204 物理的アドレス
210 カーネル変換テーブル
300 ハードウェア
302 ハードウェア装置
PFNn 物理的ページレームナンバーn
VM 仮想メモリ
VM−X、VM−Y 仮想メモリ−X、仮想メモリ−Y
VPFNn 仮想ページフレームナンバーn

Claims (12)

  1. オペレーティングシステムがアプリケーションと通信するために利用するコンピュータ具現方法であって、
    前記アプリケーションから直接物理的アドレスを受信する段階と、
    データ伝達を実現するためにメモリの前記物理的アドレスに基づいてオペレーティングシステムレベル仮想アドレスを決定する段階と、を含むことを特徴とする方法。
  2. 前記アプリケーションが使用者入力を受信する前にメモリ割当を遂行し、前記アプリケーションと前記割当を共有する段階をさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記オペレーティングシステム内に多重のモジュールがあり、前記モジュールの各々は、自分のオペレーティングシステムレベル仮想メモリを有し、
    前記モジュールの全てが前記物理的アドレスを使用して前記アプリケーションと直接的に通信することを許容する段階をさらに含むことを特徴とする請求項1に記載の方法。
  4. アプリケーション、オペレーティングシステム、及びハードウェアが、バッファを利用して互いに単一ノードにおいて通信するために利用するコンピュータ具現方法であって、
    前記アプリケーションがアプリケーションレベル仮想アドレスを物理的アドレスに変換し、及び前記オペレーティングシステムに前記物理的アドレスを通信する段階と、
    前記オペレーティングシステムが前記物理的アドレスを使用してオペレーティングシステムレベル仮想アドレスを決定する段階と、を含むことを特徴とする方法。
  5. 前記アプリケーションは、第1アプリケーションであり、第2アプリケーションをさらに含み、
    前記第1及び第2アプリケーションは、前記物理的アドレスに適用されるオフセットを使用して互いに通信することを特徴とする請求項4に記載の方法。
  6. 前記アプリケーションは、前記オペレーティングシステムの介入無しでオフセットを使用して計算された直接メモリアクセス(Direct Memory Access、以下、DMA)アドレスを使用して前記ハードウェアと通信することを特徴とする請求項4に記載の方法。
  7. 前記オペレーティングシステムは、メモリバッファを事前割当し、前記アプリケーションが使用者入力を受信する前に物理的アドレスマッピング方法を提供することを特徴とする請求項4に記載の方法。
  8. 前記アプリケーションは、前記アプリケーション、前記オペレーティングシステム、及び前記ハードウェアの間でバッファを使用してデータを伝達する前に、前記物理的アドレス及びメモリのDMAアドレスを獲得することを特徴とする請求項4に記載の方法。
  9. 前記オペレーティングシステム内に複数のモジュールがあり、前記複数のモジュールの各々は、前記アプリケーションと直接的に通信し、前記物理的アドレスを利用して自分のオペレーティングシステムレベル仮想アドレスを決定することを特徴とする請求項4に記載の方法。
  10. データ伝達を制御する装置であって、 アプリケーションがアプリケーションレベル仮想アドレスを物理的アドレスに変換し、オペレーティングシステムに前記物理的アドレスを通信することを可能にするメモリマッパーを含むことを特徴とする装置。
  11. 前記メモリマッパーは、相異なるアプリケーションの各々が自分のアプリケーションレベル仮想メモリを有し、オフセットのみを使用して互いに通信することを許容することを特徴とする請求項10に記載の装置。
  12. 前記メモリマッパーは、前記アプリケーションがDMAアドレス及びオフセットを使用してハードウェアと直接通信することを許容することを特徴とする請求項10に記載の装置。
JP2017081927A 2016-04-22 2017-04-18 メモリの事前割当と関連されたバッファマッピング方式 Active JP6757289B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662326537P 2016-04-22 2016-04-22
US62/326,537 2016-04-22
US15/333,010 2016-10-24
US15/333,010 US10380012B2 (en) 2016-04-22 2016-10-24 Buffer mapping scheme involving pre-allocation of memory

Publications (3)

Publication Number Publication Date
JP2017194964A true JP2017194964A (ja) 2017-10-26
JP2017194964A5 JP2017194964A5 (ja) 2020-05-28
JP6757289B2 JP6757289B2 (ja) 2020-09-16

Family

ID=60090251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017081927A Active JP6757289B2 (ja) 2016-04-22 2017-04-18 メモリの事前割当と関連されたバッファマッピング方式

Country Status (5)

Country Link
US (1) US10380012B2 (ja)
JP (1) JP6757289B2 (ja)
KR (1) KR102814052B1 (ja)
CN (1) CN107305509B (ja)
TW (1) TWI738737B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119637B (zh) * 2018-02-07 2023-04-14 联发科技股份有限公司 硬件控制方法与硬件控制系统
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
WO2024128825A1 (ko) * 2022-12-14 2024-06-20 삼성전자 주식회사 전자 장치 및 메모리 관리 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0926929A (ja) 1994-10-11 1997-01-28 Sun Microsyst Inc 効率のよいデータ転送メカニズムに関する方法及び装置
US7493465B2 (en) * 2004-05-17 2009-02-17 Oracle International Corporation Method and system for extended memory with user mode input/output operations
US20050273571A1 (en) * 2004-06-02 2005-12-08 Lyon Thomas L Distributed virtual multiprocessor
US7590777B2 (en) 2004-12-10 2009-09-15 International Business Machines Corporation Transferring data between system and storage in a shared buffer
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US20070255866A1 (en) 2006-05-01 2007-11-01 Eliezer Aloni Method and system for a user space TCP offload engine (TOE)
US8015388B1 (en) * 2006-08-04 2011-09-06 Vmware, Inc. Bypassing guest page table walk for shadow page table entries not present in guest page table
US8166194B2 (en) 2006-12-13 2012-04-24 Microsoft Corporation Lock-free shared audio buffer
US7979645B2 (en) * 2007-09-14 2011-07-12 Ricoh Company, Limited Multiprocessor system for memory mapping of processing nodes
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8504744B2 (en) 2010-10-28 2013-08-06 Alcatel Lucent Lock-less buffer management scheme for telecommunication network applications
US8909727B2 (en) 2010-11-24 2014-12-09 International Business Machines Corporation RDMA read destination buffers mapped onto a single representation
US9092426B1 (en) * 2011-01-03 2015-07-28 Applied Micro Circuts Corporation Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
US8909894B1 (en) * 2011-03-16 2014-12-09 Tintri Inc. Automatically aligning virtual blocks to physical blocks
US8868867B2 (en) 2011-09-15 2014-10-21 The Regents Of The University Of California Method for reducing latency of accessing data stored in a file system on a computer storage device by caching file system permission information in the computer storage device
CN102402487B (zh) * 2011-11-15 2014-10-22 北京天融信科技股份有限公司 一种零拷贝接收报文的方法和系统
US10210096B2 (en) * 2013-10-01 2019-02-19 Ampere Computing Llc Multi-stage address translation for a computing device

Also Published As

Publication number Publication date
US10380012B2 (en) 2019-08-13
TW201738756A (zh) 2017-11-01
CN107305509B (zh) 2023-07-04
TWI738737B (zh) 2021-09-11
CN107305509A (zh) 2017-10-31
JP6757289B2 (ja) 2020-09-16
KR20170121045A (ko) 2017-11-01
KR102814052B1 (ko) 2025-05-28
US20170308460A1 (en) 2017-10-26

Similar Documents

Publication Publication Date Title
JP6757289B2 (ja) メモリの事前割当と関連されたバッファマッピング方式
EP3594807B1 (en) Virtual disk file format conversion method and device
US9875208B2 (en) Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches
EP3159802B1 (en) Sharing method and device for pcie i/o device and interconnection system
EP3206132B1 (en) File access method, system and host
JP2013546104A (ja) 入出力メモリ管理ユニット(iommu)二層アドレッシング
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US10754679B2 (en) Method and apparatus for handling network I/O device virtualization
CN112612574A (zh) 输入输出设备的内存访问管理单元、系统及地址转换方法
US20130097358A1 (en) Method for sharing memory of virtual machine and computer system using the same
US10140214B2 (en) Hypervisor translation bypass by host IOMMU with virtual machine migration support
US10671419B2 (en) Multiple input-output memory management units with fine grained device scopes for virtual machines
JP2017194964A5 (ja)
WO2023087778A1 (zh) 窗口信息处理方法、装置、电子设备及存储介质
CN103873489A (zh) 具有PCIe接口的装置共享系统及方法
US11150928B2 (en) Hypervisor translation bypass
WO2019056380A1 (zh) 一种数据访问的方法和装置
JP2021504804A (ja) 仮想マシンの動的アドレス変換のためのコンピュータ実装方法、システム、およびコンピュータ・プログラム
US20190102321A1 (en) Techniques to provide access protection to shared virtual memory
US12189726B2 (en) On-demand paging support for confidential computing
JP2022541059A (ja) ヘテロジニアスコンピューティングのための統合カーネル仮想アドレス空間
US8593472B1 (en) System and method for accessing a frame buffer via a storage driver
CN116126455A (zh) 一种虚拟机的数据处理方法、计算设备及存储介质
US20200241939A1 (en) System and methods of zero-copy data path among user level processes
CN113805845A (zh) 随机数序列生成方法和随机数引擎

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200414

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200414

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200414

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200813

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200828

R150 Certificate of patent or registration of utility model

Ref document number: 6757289

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