JP2017194964A - メモリの事前割当と関連されたバッファマッピング方式 - Google Patents
メモリの事前割当と関連されたバッファマッピング方式 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address 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
オペレーティングシステム200は、使用者領域を形成するアプリケーション100及びハードウェア300の間のインターフェイスを担い、且つ、中でもアプリケーション100にシステムメモリへのアクセスを可能にする。装置ドライバは一般的にオペレーティングシステム200の一部である。メモリマッパーはイメージ及びデータファイルを使用者領域のアプリケーション内にマッピングする。メモリマッピングにおいて、ファイルのコンテンツは仮想アドレスと連結(link)される。
また、各アプリケーションは自分の各々の仮想ページをメモリの物理的ページにマッピングする自分のページテーブル110を有する。例えば、図示されたように、アプリケーションXの仮想ページフレームナンバー0(VPFN0)は物理的ページフレームナンバー1(PFN1)のメモリにマッピングされ、アプリケーションYの仮想ページフレームナンバー1(VPFN1)は物理的ページフレームナンバー4(PFN4)のメモリにマッピングされる。
従来のアプリケーションは仮想アドレスと仮想アドレスのベースアドレスに対するオフセットと、のみを使用して互いに通信するが、本システムは、アプリケーションが物理的アドレスを使用してカーネルと通信できるようにする。図示されたように、カーネル変換テーブル210は物理的アドレスをオペレーティングシステムレベル仮想アドレスに変換するのに使用される。カーネル変換テーブル210は物理的アドレスの仮想アドレスへの変換を可能にし、各オペレーティングシステムに特有(OS−specific)であり得る。
各オペレーティングシステムが物理的アドレスを仮想アドレスに変換するのに使用する方法は、各オペレーティングシステムのアーキテクチャに依存する。例えば、リナックス(登録商標)オペレーティングシステムは、アドレスの或る特定範囲に対する単純な算術演算を使用して物理的アドレスを仮想アドレスに変換する。リナックス(登録商標)で具現される場合、本システムの事前割当されたバッファは、物理的アドレスに到達するために単純な算術が使用されたこのようなアドレス範囲に属する。一部の他のオペレーティングシステムは相異なるメカニズムを通じてこの作業を遂行される。
同一のデータ(バッファ−1)は、アプリケーションYのアドレス領域アドレス0x1000のデータに対応するが、2つのアプリケーションX及びYは物理的アドレスを使用して同一のデータを指し示すことができる。“バッファ−2”とラベルされたデータはアプリケーションYの仮想アドレス0x4000に格納され、これはカーネルアドレス領域0x7000に対応する。カーネルモジュールが同一の仮想アドレス領域を共有するという事実のため、如何なるオペレーティングシステムモジュールも図3に示されたカーネルアドレスを使用して仮想アドレスを得る。
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に記載の方法。
- 前記オペレーティングシステム内に多重のモジュールがあり、前記モジュールの各々は、自分のオペレーティングシステムレベル仮想メモリを有し、
前記モジュールの全てが前記物理的アドレスを使用して前記アプリケーションと直接的に通信することを許容する段階をさらに含むことを特徴とする請求項1に記載の方法。 - アプリケーション、オペレーティングシステム、及びハードウェアが、バッファを利用して互いに単一ノードにおいて通信するために利用するコンピュータ具現方法であって、
前記アプリケーションがアプリケーションレベル仮想アドレスを物理的アドレスに変換し、及び前記オペレーティングシステムに前記物理的アドレスを通信する段階と、
前記オペレーティングシステムが前記物理的アドレスを使用してオペレーティングシステムレベル仮想アドレスを決定する段階と、を含むことを特徴とする方法。 - 前記アプリケーションは、第1アプリケーションであり、第2アプリケーションをさらに含み、
前記第1及び第2アプリケーションは、前記物理的アドレスに適用されるオフセットを使用して互いに通信することを特徴とする請求項4に記載の方法。 - 前記アプリケーションは、前記オペレーティングシステムの介入無しでオフセットを使用して計算された直接メモリアクセス(Direct Memory Access、以下、DMA)アドレスを使用して前記ハードウェアと通信することを特徴とする請求項4に記載の方法。
- 前記オペレーティングシステムは、メモリバッファを事前割当し、前記アプリケーションが使用者入力を受信する前に物理的アドレスマッピング方法を提供することを特徴とする請求項4に記載の方法。
- 前記アプリケーションは、前記アプリケーション、前記オペレーティングシステム、及び前記ハードウェアの間でバッファを使用してデータを伝達する前に、前記物理的アドレス及びメモリのDMAアドレスを獲得することを特徴とする請求項4に記載の方法。
- 前記オペレーティングシステム内に複数のモジュールがあり、前記複数のモジュールの各々は、前記アプリケーションと直接的に通信し、前記物理的アドレスを利用して自分のオペレーティングシステムレベル仮想アドレスを決定することを特徴とする請求項4に記載の方法。
- データ伝達を制御する装置であって、 アプリケーションがアプリケーションレベル仮想アドレスを物理的アドレスに変換し、オペレーティングシステムに前記物理的アドレスを通信することを可能にするメモリマッパーを含むことを特徴とする装置。
- 前記メモリマッパーは、相異なるアプリケーションの各々が自分のアプリケーションレベル仮想メモリを有し、オフセットのみを使用して互いに通信することを許容することを特徴とする請求項10に記載の装置。
- 前記メモリマッパーは、前記アプリケーションがDMAアドレス及びオフセットを使用してハードウェアと直接通信することを許容することを特徴とする請求項10に記載の装置。
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)
| 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)
| 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 |
-
2016
- 2016-10-24 US US15/333,010 patent/US10380012B2/en active Active
-
2017
- 2017-02-24 KR KR1020170024958A patent/KR102814052B1/ko active Active
- 2017-03-09 TW TW106107679A patent/TWI738737B/zh active
- 2017-03-17 CN CN201710160628.1A patent/CN107305509B/zh active Active
- 2017-04-18 JP JP2017081927A patent/JP6757289B2/ja active Active
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 |