CN112639741A - 用于控制联合共享的存储器映射区域的方法和装置 - Google Patents

用于控制联合共享的存储器映射区域的方法和装置 Download PDF

Info

Publication number
CN112639741A
CN112639741A CN201980055778.3A CN201980055778A CN112639741A CN 112639741 A CN112639741 A CN 112639741A CN 201980055778 A CN201980055778 A CN 201980055778A CN 112639741 A CN112639741 A CN 112639741A
Authority
CN
China
Prior art keywords
shared memory
processor
application
space
data
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
CN201980055778.3A
Other languages
English (en)
Other versions
CN112639741B (zh
Inventor
K·山迪
S·加格
J·麦克厄尔拉什
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of CN112639741A publication Critical patent/CN112639741A/zh
Application granted granted Critical
Publication of CN112639741B publication Critical patent/CN112639741B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明公开了用于以直通方式使用和控制多个处理器之间的联合共享存储器映射区域的方法和装置。用于移动设备操作的现有数据管道输入/输出(EO)技术允许高速数据传输、处理器的解耦独立操作、降低软件复杂性、降低功率消耗等。然而,传统的功能和能力仅能从数据管道I/O操作接收边际有益效果,并且在一些情况下,甚至可能受到例如处理开销和/或上下文切换的不利影响。本公开涉及以不需要内核空间干预的“直通”方式动态地隔离和回收联合共享存储器空间以用于数据传输。更直接地,主机存储器的联合共享的区域可由外围客户端和主机客户端两者在用户空间中访问。

Description

用于控制联合共享的存储器映射区域的方法和装置
优先权
本申请要求2018年8月24日提交的相同标题的共同拥有、共同未决的美国专利申请序列号16/112,480的优先权的权益,前述专利申请的全文以引用方式并入本文。
相关申请
本申请涉及2017年12月13日提交的标题为“METHODS AND APPARATUS FORSCHEDULING TIME SENSITIVE OPERATIONS AMONG INDEPENDENT PROCESSORS”的共同拥有的美国专利申请序列号15/840,473;2017年9月29日提交的标题为“METHODS ANDAPPARATUS FOR TRANSMITTING TIME SENSITIVE DATA OVER A TUNNELED BUS INTERFACE”的美国专利申请序列号15/720,603;2018年7月30日提交的标题为“METHODS ANDAPPARATUS FOR VERIFYING COMPLETION OF GROUPS OF DATA TRANSACTIONS BETWEENPROCESSORS”的美国专利申请序列号16/049,624;2015年10月8日提交的标题为“METHODSAND APPARATUS FOR RUNNING AND BOOTING AN INTER-PROCESSOR COMMUNICATION LINKBETWEEN INDEPENDENTLY OPERABLE PROCESSORS”的美国专利申请序列号14/879,024;2015年10月8日提交的标题为“METHODS AND APPARATUS FOR MANAGING POWER WITH AN INTERPROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS”的美国专利申请序列号14/879,027;2015年10月8日提交的标题为“METHODS AND APPARATUS FORRECOVERING ERRORS WITH AN INTER-PROCESSOR COMMUNICATION LINK BETWEENINDEPENDENTLY OPERABLE PROCESSORS”的美国专利申请序列号14/879,030;以及2015年9月16日提交的标题为“METHODS AND APPARATUS FOR AGGREGATING PACKET TRANSFER OVERA VIRTUAL BUS INTERFACE”的美国专利申请序列号14/856,283;上述专利申请中的每一篇专利申请的全文均以引用方式并入本文。
技术领域
本公开整体涉及电子设备及其网络的领域。更具体地,并且在一个示例性方面,本公开涉及用于使用和控制多个处理器之间的联合共享的存储器映射区域的方法和装置。在各种示例性方面,本公开涉及以不需要内核空间干预的“直通”方式动态隔离和回收(reaping back)用于数据传输的存储器空间。
背景技术
消费设备和计算机系统随时间的推移变得越来越复杂,并且已促使产生包含多个处理部件(例如,处理器)的架构。这些多个处理器中的每个处理器在实现例如消费设备(例如,智能电话、平板电脑、膝上型电脑、平板手机、智能手表、便携式媒体播放器、智能家居设备、智能个人助理)的一个或多个功能方面发挥不同的作用。
随时间的推移,各种总线架构和技术已经演进为能够应对越来越快的数据速率并且提供适合于最近具体实施的更高级别的数据吞吐量。初期研究涉及用于移动设备的多处理器架构中的总线技术。例如,处理器间通信(IPC)链路的一个具体实施源自外围部件快速互连(PCIe)技术。PCIe最初设计用于桌面和/或服务器应用。然而,与台式计算应用程序不同,移动设备在功率消耗、处理功率、存储器容量以及任何数量的其他移动性相关约束方面受到显著约束。
尤其是通过模块化设计和抽象的原理,已经能够成功地实现无数不同应用程序上的基于PCIe的连接性。具体地讲,传统的PCIe通信规范将用户空间应用程序与内核空间通信栈分开。每个实体独立地管理其自身的具体实施特定考虑因素;从而实现针对多种不同应用程序要求的“抽象化”通信。这样,不同的应用程序可以自由通信,而不考虑基础传输约束(例如,带宽、拥塞、仲裁等)。
IPC的现有具体实施继承了该相同的规范。IPC允许任何数量的软件应用程序打开所谓的“数据管道”用于通信。用户空间应用程序可以通过读取和写入数据管道来发送和接收数据。内核空间通信栈管理基础数据传输。现有IPC提供了为移动设备操作定制的大量优点,包括例如高速数据传输、处理器的解耦独立操作、降低的软件复杂性、降低的功率消耗,等等。
然而,并非所有类型的数据传输都需要IPC操作的能力或通过IPC操作得到改善。例如,传统的功能和能力可能仅从IPC操作接收边际有益效果,并且在一些情况下,甚至可能受到例如处理开销和/或上下文切换的不利影响。类似地,高度优化的数据传输技术可能不适用于IPC操作以及/或者被设计用于存储器映射技术和规范。例如,已经开发出许多不同的总线技术用于依赖于DMA(直接存储器访问)类型访问的数字音频/视频(A/V)数据传输。更一般地,某些外围应用程序可以更好地适合于用户空间中的存储器映射的I/O。
为此,需要不需要处理器间通信(IPC)的形式的“直通”数据通信的解决方案。更一般地,需要改进的方法和装置来使用和控制多个处理器之间的联合共享的存储器映射区域。
发明内容
本公开尤其通过提供用于使用和控制多个处理器之间的联合共享的存储器映射区域的方法和装置来满足前述需求。
在一个方面,公开了一种用于在第一处理器和第二处理器之间使用联合共享的存储器的方法。在一个实施方案中,该方法包括:打开直通应用程序;针对直通应用程序映射联合共享的存储器空间;经由直通应用程序访问联合共享的存储器空间;以及关闭直通应用程序。
在一个变型中,直通应用程序是用户空间应用程序。在另一个变型中,访问联合共享的存储器空间包括将数据写入联合共享的存储器空间,并且使对等应用程序从联合共享的存储器空间读取写入的数据。在另一个此类变型中,针对直通应用程序映射联合共享的存储器空间包括将存储器设备内的物理地址位置分配给存储器映射的输入/输出(I/O)的虚拟地址。在另一个此类变型中,用户空间应用程序可以读取和写入联合共享的存储器空间的物理地址位置,而无需上下文切换到内核空间通信栈。
在另一个此类变型中,访问联合共享的存储器空间包括使联合共享的存储器空间的多次访问排队。在一个此类具体实施中,响应于关闭直通应用程序,该方法清空多个排队访问中的任何未解决访问。
在另一个此类变型中,访问联合共享的存储器空间包括在环形缓冲器内写入条目。
在另一个此类变型中,改变联合共享的存储器空间的至少一个参数基于非协调消息。
在另一方面,公开了一种装置。在一个实施方案中,该装置包括耦接到外围处理器的主机处理器;以及包括一个或多个指令的非暂态计算机可读介质。在一个示例性实施方案中,指令在被执行时致使主机处理器:经由共享存储器内的内核空间通信栈管理一个或多个数据管道事务处理;在共享存储器内映射联合共享的存储器空间,该联合共享的存储器空间能够经由用户空间中的存储器映射的输入/输出(I/O)访问;以及经由直通应用程序访问联合共享的存储器空间。
在一个变型中,主机处理器包括应用程序处理器,并且直通应用程序包括流式音频应用程序。
在另一个变型中,经由处理器间通信(IPC)驱动程序的传输环(TR)来管理一个或多个数据管道事务处理。在另一个此类变型中,共享存储器内的联合共享的存储器空间从与IPC驱动程序相关联的存储器空间保留。在另一个此类变型中,共享存储器内的联合共享的存储器空间从未分配的存储器分配。
在第二实施方案中,该装置包括:耦接到主机处理器的外围处理器;以及包括一个或多个指令的非暂态计算机可读介质。指令在由外围处理器执行时致使外围处理器:接收标识共享存储器内的联合共享的存储器空间的存储器映射消息;经由直通应用程序访问联合共享的存储器空间;以及传输非协调控制消息以发信号通知与联合共享的存储器空间相关联的事件。
在一个变型中,外围处理器包括媒体处理器,并且直通应用程序包括使用存储器映射的输入/输出(I/O)来访问联合共享的存储器空间的流式音频应用程序。
在另一个变型中,非协调控制消息包括不对应于传输描述符(TD)的完成描述符(CD)。
在又一个变型中,联合共享的存储器空间包括用户空间内的圆形缓冲器。在又一个变型中,经由内核空间通信栈传输非协调控制消息。在又一个变型中,与联合共享的存储器空间相关联的事件包括圆形缓冲器的折返(wrap)。
在又一方面,公开了一种被配置为使用联合共享的存储器空间的处理器。在一个示例性实施方案中,处理器耦接到包括一个或多个指令的非暂态计算机可读介质,该一个或多个指令在由处理器执行时致使处理器经由联合共享的存储器空间对数据进行事务处理。
在又一方面,公开了一种被配置为控制联合共享的存储器空间的处理器。在一个示例性实施方案中,处理器耦接到包括一个或多个指令的非暂态计算机可读介质,该一个或多个指令在由处理器执行时致使处理器控制联合共享的存储器空间的一个或多个参数。
在又一方面,公开了一种用于使多个处理器能够联合共享用于用户空间数据传输的存储器的系统。在一个示例性实施方案中,系统包括消费电子装置。在一个此类变型中,消费电子设备选自包括以下各项的组:智能电话、平板电脑、膝上型电脑、平板手机、智能手表、便携式媒体播放器、智能家居设备、智能个人助理。
在又一方面,公开了一种非暂态计算机可读介质,该非暂态计算机可读介质被配置为使多个处理器能够联合共享用于用户空间数据传输的存储器。在一个示例性实施方案中,非暂态计算机可读介质包括一个或多个指令,该一个或多个指令被配置为当由处理器执行时:打开直通应用程序;针对直通应用程序映射联合共享的存储器空间;经由直通应用程序访问联合共享的存储器空间;以及关闭直通应用程序。
本文公开了被配置为基于存储器使用和/或应用程序要求来优化联合共享的数据结构的存储器管理的各种其他方法和/或装置。在一些实施方案中,公开了被配置为针对不同数据传输进行优化的方法和/或装置。
本文公开了被配置为经由单独的完成数据结构管理多个正在进行的数据传输的各种其他方法和/或装置。在一些实施方案中,描述了被配置为使用完成描述符来调节数据流的方法和/或装置。
本领域的普通技术人员参考如下给出的附图和对示例性实施方案的详细描述将会立即认识到本公开的其他特征和优点。
附图说明
图1为一个示例性装置的逻辑框图,可用于解释本文所述的各种原理。
图1A为可用于解释本文所述的各种原理的套接字的逻辑框图。
图2为可用于解释本文所述的各种原理的一个示例性处理器间通信(IPC)链路的逻辑框图。
图3为可用于解释本文所述的各种原理的一个示例性通信网络的逻辑框图。
图4为在处理器间通信(IPC)数据管道输入/输出(I/O)传输期间使用的数据结构的逻辑框图,可用于解释本文所述的各种原理。
图5是可用于解释本文所述的各种原理的示例性处理器间通信(IPC)数据管道输入/输出(I/O)传输的图形表示。
图6为经由数据套接字的数据传输的逻辑框图,可用于解释本文所述的各种原理。
图7为根据本文所述的各种原理的经由联合共享的存储器的数据传输的逻辑框图。
图8为根据本文所述的各种原理的IPC数据管道I/O传输和存储器映射I/O传输的第一图形表示。
图9为根据本公开的各个方面的用于使用和控制多个处理器之间的联合共享的存储器映射区域的一种一般化方法的逻辑流程图。
所有
Figure BDA0002949814720000061
版权所有2018Apple Inc.保留所有权利。
具体实施方式
现在参考附图,在所有附图中类似标号指代类似部分。
示例性实施方案的具体实施方式
现在详细描述本公开的示例性实施方案。虽然主要在处理器间通信(IPC)链路(例如,具有2015年10月8日提交的标题为“METHODS AND APPARATUS FOR RUNNING ANDBOOTING AN INTER PROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLEPROCESSORS”的共同拥有、共同未决的美国专利申请序列号14/879,024中描述的类型,先前该专利申请的全文以引用方式并入本文)的上下文中讨论了这些实施方案,但是本领域的普通技术人员将认识到,本公开并不限于此。事实上,本公开的各个方面可用于被配置为经由联合共享的存储器接口对多种不同数据类型进行事务处理的任何设备或设备网络,如本文所公开的。
示例性装置
如前所述,总线技术已经演进为能够处理更快的数据速率并且提供更高水平的数据吞吐量。一种此类示例性总线技术被称为所谓的外围部件快速互连(PCIe)总线。PCIe在历史上一直被用作高速串行计算机扩展总线技术;PCIe基于具有将每个端点部件(例如,图形卡、存储器等)连接到根复合体(例如,主机处理器)的单独串行链路的点对点连接。然而,现有的PCIe技术消耗大量功率,并且不适用于消费电子应用中使用的相对较低功率和低延迟通信协议。当前PCIe总线协议执行涉及数据事务处理的操作,这些数据事务处理更适合于“外围”处理器和“主机”处理器之间的批量高吞吐量数据通信。
在该上下文中,现在描述支持两个(或更多个)可独立操作的处理器之间的处理器间通信(IPC)链路的示例性方法和装置。将参考“根复合体”(RC)或主机处理器以及“端点”(EP)或外围处理器来描述以下讨论。出于下文中将变得显而易见的原因,应当理解,关于主机或外围处理器的指定用于简化和/或阐明以下解释,并且不暗示现有的主机或外围功能,或者此类作用不能被颠倒。此外,相关领域的普通技术人员将容易理解,本文所述的各种原理可广泛地应用于两个(或更多个)可独立操作的处理器的任何网络。此外,本文所述的各种原理可应用于从主机处理器到外围处理器的事务处理,反之亦然。
如本文所用,术语“可独立操作的处理器”是指具有处理器时钟域、处理器功率域、处理器代码基础、算术单元、寄存器和/或存储器中的一者或多者的处理系统,该处理系统能够被隔离以允许处理器在处理系统中无需其他处理器的情况下操作。在一个实施方案中,可独立操作的处理器可独立于多个子系统中的其他子系统的功率节省模式转换到各种功率节省模式。在另一个实施方案中,可独立操作的处理器可独立于多个子系统中的其他子系统的节能模式来调节其时钟频率、相位和/或振幅。在又一个实施方案中,可独立操作的处理器可独立于多个子系统中的其他子系统的软件执行来重新引导和/或更新其固件或软件。
如本文所用,“处理器”一般是指响应并且处理存储在例如非暂态计算机可读介质(例如,存储器)内的计算机可读指令或固件的任何逻辑或电路。处理器可体现在根据指令执行逻辑操作的硬件(例如,集成电路(IC)中。处理另选方案的示例包括但不限于精简指令集计算机(RISC)处理器、复杂指令集计算(CISC)处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和可编程逻辑设备(PLD)。
如本文所用,“应用程序处理器”是被配置为执行操作系统(OS)和一个或多个应用程序、固件和/或软件的处理器。术语“操作系统”是指控制和管理对硬件的访问的软件。OS通常支持处理功能,诸如任务调度、应用程序执行、输入和输出管理、存储器管理、安全性和外围访问。如本文所用,术语“应用程序”是指可仅经由由OS提供的程序和接口与硬件进行交互的软件。
如本文所用,“基带处理器”是被配置为与无线网络通信的处理器。无线网络的常见示例包括但不限于长期演进/高级(LTE和LTE-A)技术,IEEE-Std.802.11(其任何变体)、PAN技术诸如蓝牙(IEEE Std.802.15.1)或IEEE Std.802.15.4、“ZigBee”、短消息服务(SMS)、近场通信(NFC)或射频识别(RFID)、WiMAX(IEEE 802.16)、WMAN、3G蜂窝(例如,WCDMA、3GPP、3GPP2和GSM及其改进,以及ISM频带网络)。
在一个实施方案中,IPC总线由被调用并且服务于多个用户空间应用程序的内核空间通信栈管理。简言之,用户空间是处理器从其执行用户进程的系统存储器的一部分。用户空间自由且动态地分配给由(或代表)用户打开的应用程序软件。内核空间是处理器从其执行内核的存储器的一部分。内核空间被严格保留(通常在处理器引导序列期间)以用于运行特权操作系统(OS)进程、扩展程序和大多数设备驱动程序。例如,除非明确允许,否则每个用户空间进程通常在特定存储器空间(其自身的“沙箱”)中运行,并且不能访问其他进程的存储器。相比之下,内核是计算机操作系统的核心;内核可以对系统中的所有其他进程执行完全控制。
术语“操作系统”或“内核”是指控制和管理对硬件的访问的软件。OS通常支持处理功能,诸如任务调度、应用程序执行、输入和输出管理、存储器管理、安全性和外围访问。如本文所用,术语“应用程序”是指可仅经由由OS提供的程序和接口与硬件进行交互的软件。
术语“权限”是指限制或准许处理器执行的任何访问限制或许可。系统特权通常用于计算领域,以减轻对计算机安全漏洞的潜在损害。例如,适当权限的计算机系统将防止恶意软件应用程序影响与其他应用程序和内核相关联的数据和任务执行。
如本文所用,术语“内核内”和/或“内核空间”是指存储在内核空间存储器分配中以及/或者具有访问内核空间存储器分配的权限的数据和/或进程。相比之下,术语“非内核”和/或“用户空间”是指无权访问内核空间存储器分配的数据和/或进程。作为进一步说明,用户空间表示特定于用户进程的地址空间,而非内核空间表示不在内核内的地址空间,但可以特定于或可以不特定于用户进程。
如本文所用,术语“逻辑”用于指但不限于将物理机构、属性或功能表示为数据结构的抽象(通常在软件或机器逻辑中执行)。例如,如本文所用,“逻辑总线接口”等一般是指总线接口作为一系列数据结构的抽象或表示。相比之下,如本文所用,“物理总线接口”是指物理有形总线接口的物理机制、属性或功能。
图1示出了可用于示出本文所述的各种原理的装置100。如图所示,装置100包括第一可独立操作的处理器102A和第二可独立操作的处理器102B,以及物理总线接口104,该物理总线接口被配置为实现两个(或更多个)可独立操作的处理器之间的处理器间通信(IPC)链路。
第一处理器和第二处理器经由总线接口连接。如本文所用,术语“总线接口”是指在处理器和/或外围部件之间传输数据的任何通信系统。总线接口可部分或全部包括硬件部件(接线、光纤和其他传输介质)和/或相关联的软件(包括通信协议和硬件驱动器)。
如本文所用,“处理器间通信链路”或“IPC链路”是指两个(或更多个)处理器之间的任何通信总线,无论处理器是独立地操作、不是独立地操作还是它们的组合。IPC链路可包括被配置为例如在链路的主机侧(例如,根复合体)和外围侧(例如,端点)之间将数据从一个处理器传输至另一个处理器的一个或多个数据管道。IPC链路的给定数据管道可以被配置为以单向或双向方式传输数据。
如本文所用,“单向”涉及数据(例如,指令、分组、信号)在一个方向上的传输或接收,使得数据仅被配置为从给定计算实体(例如,逻辑、电路、处理器)传输至另一个计算实体,而不是在另一个方向上(例如,从另一个计算实体返回到给定计算实体)传输。
另一方面,“双向”或“多向”涉及数据(例如,指令、分组、信号)在两个或更多个方向上的事物处理,使得数据可被配置为在给定计算实体(例如,逻辑、电路、处理器)与另一个计算实体之间传输(反之亦然)。
在一个具体实施中,第一处理器102A包括应用程序处理器。如图1所示,第一处理器102A被耦接到用作IPC总线的主机的根复合体(RC)106A。
在一个具体实施中,第二处理器102B包括无线调制解调器。在各种实施方案中,第二处理器102B包括Wi-Fi调制解调器、蜂窝调制解调器、移动宽带调制解调器、蓝牙调制解调器、NFC调制解调器和/或RFID读取器和/或其他短程和远程协议,以便包括无线通信芯片组。无线调制解调器的其他示例包括但不限于实现例如IEEE Std.802.11(其任何变体,包括Wi-Fi和无线局域网(WLAN)、PAN技术诸如蓝牙或IEEE Std.802.15.4、“ZigBee”、NFC或RFID、WiMAX(IEEE 802.16)、WMAN、3G蜂窝(例如,长期演进/高级(LTE和LTE-A)、WCDMA、3GPP、3GPP2和GSM及其改进)的设备,以及ISM频带设备。
在其他实施方案中,第二处理器102B可以是例如媒体处理器或其他网络处理元件。
如图1所示,第二处理器102B耦接到用作IPC链路的外围设备的端点(EP)106B。
如本文所用,术语“存储器”包括适于存储数字数据的任何类型的集成电路或其他存储设备,包括但不限于ROM、PROM、EEPROM、DRAM、SDRAM、DDR/2SDRAM、EDO/FPMS、RLDRAM、SRAM、“闪存”存储器(例如,NAND/NOR)和PSRAM。在一些情况下,第一处理器和/或第二处理器可具有相关联的非易失性存储器(例如,闪存存储器),该非易失性存储器被配置为存储计算机可读指令,并且在没有电力的情况下保持所存储的计算机可读指令。非暂态计算机可读介质被配置为存储计算机可读指令用于执行。另选地或除此之外,此类计算机可读指令可存储在与处理器中的至少一个处理器相关联的本地高速缓存上。
如本文所用,术语“缓冲器”是指用于临时存储数据的设备、电路、逻辑或计算环境的区域。通常,存储所缓冲的数据,直到给出或接收指令以将所存储的数据移动至另一个实体(例如,处理器、存储器、另一个缓冲器)或“刷新”(空的)缓冲器。根据上下文,术语“缓冲器”可与类似的术语诸如“高速缓存”、“队列”、“共享存储器”或“本地存储器”互换使用。在一个实施方案中,缓冲器可以是一种类型的存储器。缓冲器的类型的示例可包括圆形或环形缓冲器、FIFO(先进先出)、LIFO(后进先出)、轮询调度、最短作业优先、最短剩余时间、高响应比、动态阵列。在另一个实施方案中,缓冲器可以指数据结构或存储器分配,例如由所谓的传输描述符(TD)、完成描述符(CD)、传输描述符环(TR)、完成描述符环(CR)或用于存储和/或组织数据的任何其他此类方案表示的数据。相关领域的普通技术人员将认识到与缓冲和临时数据存储相关的各种其他结构和操作。
第一处理器和第二处理器(102A、102B)两者各自耦接到非暂态计算机可读介质(例如,动态随机存取存储器(DRAM)108)和一个或多个存储器管理单元(MMU)。MMU将(被分配在处理器的存储器映射内的)虚拟存储器地址转换为DRAM 108中的物理地址。在一个此类具体实施中,MMU被进一步细分成MMU 110A和输入输出MMU(IO MMU)110B,从而允许主机和外围设备具有不同的存储器映射(例如,主机的虚拟存储器映射的I/O地址和外围设备的虚拟存储器映射的I/O地址)。虽然示出了前述分割MMU配置,但是在给出本公开的内容的情况下,单个MMU(例如,共享存储器映射)或更多个MMU(三个、四个等存储器映射)可以用成功的等同形式替换。
在正常操作期间,数据事务处理由主机处理器102A和/或外围处理器102B以数据管道形式生成。对应的MMU 110A(或IO MMU 110B)根据数据管道来管理存储器访问,以便确保例如外围设备不会重写、独占或以其他方式无意地干扰主机的存储器分配,反之亦然。更直接地,MMU 110A和IO MMU 110B提供与物理存储器(例如,DRAM)的(数据管道和虚拟存储器映射的形式的)一定程度的隔离。处理器之间的隔离确保每个处理器可在不与另一个处理器协调访问的情况下操作,从而提高总体系统性能。
图1A示出了可用于解释处理器102A和102B的输入/输出(I/O)接口的各个方面的套接字150的一个逻辑表示。“套接字”是用于在单个节点处发送或接收数据的虚拟化内部端点。套接字可被创建(“打开”)或破坏(“关闭”),并且套接字的清单被存储为网络资源表中的条目(可包括许多不同的通信协议(TCP、UDP、IPC等)、目的地、状态和任何其他操作进程(内核扩展程序)和/或参数);更一般地,套接字是一种形式的系统资源。
如图1A所示,套接字150提供在用户空间和内核空间之间跨越的应用程序编程接口(API)。API是在各种软件组件之间通信的一组明确定义的方法。API规范通常包括但不限于:例程、数据结构、对象类别、变量、远程调用和/或计算领域内通常定义的任何数量的其他软件构造。
每个处理器可通过经由套接字API发出命令来独立地创建、修改和/或破坏数据管道。例如,“打开”用户空间应用程序中的管道触发向内核空间通信栈的上下文切换。内核空间通信栈调用IPC资源(另一个上下文切换)。IPC资源为用户空间管道(例如,在共同的DRAM中)创建“后备”存储器分配。此后,将管道标识符返回到用户空间应用程序。由一个处理器写入的数据可由另一个处理器(从其后备DRAM分配)经由管道标识符来检索,反之亦然。
上下文切换通常在处理领域中用于在多个并发任务之间进行切换。例如,计算机系统将在逻辑上对其任务进行分割以优化总体系统操作。具体地讲,处理器将执行任务,然后“上下文切换”到另一个任务,从而确保任何单个进程线程不会从开始到结束独占处理器资源。更直接地,上下文切换是存储进程或线程的状态的过程,使得稍后可以从相同的点对其进行还原并且恢复执行。这允许多个进程共享单个处理器。然而,过量的上下文切换可拖慢处理器性能。需注意,虽然在单个处理器的上下文内讨论了本发明,但是多处理器系统具有类似的概念(例如,多个处理器也执行上下文切换,但是上下文可能不一定由相同的处理器恢复)。
现在参见图2,物理总线接口200包括IPC链路,该IPC链路可大致基于外围部件快速互连(PCIe)标准(例如,《PCI Express基本规范》,4.0版本,发布日期为2017年10月5日,其全文以引用方式并入本文)。鉴于本公开的内容,相关领域的普通技术人员将容易理解,其他总线接口标准可以用成功的等同形式替换。
在示例性实施方案中,物理总线接口200可以是两个IPC端口(RC和EP)之间的点对点通信信道,从而允许发送/接收访问请求(配置读取/写入、I/O读取/写入、存储器读取/写入)和中断两者。在物理层级,链路由一个或多个通道(图2中示出一个通道)组成,每个通道具有接收组件和传输组件(例如,pcie_rx和pci_tx)。每个通道是全双工的字节流,在链路的RC和EP之间同时沿两个方向传输八位“字节”格式的数据包。物理总线接口200可支持表示多个正在进行的数据会话的多个逻辑链路(或虚拟总线接口)。
在一个此类实施方案中,每个虚拟总线接口还可以包括一个或多个“会话”,该一个或多个“会话”为两个逻辑端点之间的数据事务处理(例如,数据报)的持久和/或半持久集合。在一些实施方案中,会话可包括“有状态”事务处理(即,数据事务处理基于会话的当前状态)和/或“无状态”事务处理(即,数据事务处理不基于会话的当前状态)。
图3示出了可用于示出本文所述的各种原理的网络架构300。在一个实施方案中,架构300包括用户设备302,该用户设备包括主机侧处理器(例如,应用程序处理器304)、外围侧处理器(例如,基带处理器306)以及应用程序处理器304和基带处理器306之间的共享存储器模块。应用程序处理器304和基带处理器306可以包括经由IPC链路进行数据通信的可独立操作的处理器。
在各种实施方案中,用户设备302可容纳可独立操作的处理器并且使用其功能。在一个实施方案中,用户设备302可以是用于消费者或最终用户的移动计算设备或系统,诸如智能电话、智能手表、平板电脑或膝上型电脑。用户设备302可被配置用于至少经由基带处理器306进行无线连接和/或有线连接。在一个变型中,处理器包括设置在半导体管芯上用于用户设备操作的集成电路(IC)。例如,基带处理器可以包括用于蜂窝或Wi-Fi连接(或任何其他连接方式,诸如蓝牙、RFID、全球定位系统(GPS))的无线调制解调器(或与之进行数据通信)。
在一些实施方案中,如图所示,用户设备302可与其他外部设备进行数据通信。在一个实施方案中,应用程序处理器304可经由基带310(经由Wi-Fi、蜂窝、蓝牙、NFC等的具体实施)通过有线或无线方式连接到接入点308。接入点308可继而使得能够往返于本地内联网、互联网312和/或其他网络(包括无线网络)交换数据。
在另一个实施方案中,用户设备可以与外围设备(未示出)进行数据通信。示例性外围设备包括但不限于无线键盘、鼠标、音频设备(例如,耳塞、头戴式耳机、扬声器)、家庭和办公室设备(例如,无线打印机),以及其他用户设备。在一些实施方案中,外围设备还可以与其他网络或设备(例如,接入点和/或例如内联网、互联网等)进行数据通信以接收和发送数据。
在实施方案中,由应用程序处理器304生成的数据可经由基带处理器306交换并且向“上游”发送至接入点308,或者数据可经由基带处理器306从接入点向“下游”传输至应用程序处理器304。应用程序处理器和基带处理器中的每一者可生成其自身的数据以供其他处理器处理。
数据管道输入/输出(I/O)-
现在参见图4,示出了可用于示出数据管道I/O操作的一个具体实施的各种数据结构。在例示的实施方案中,所描述的存储器结构驻留在主机处理器存储器内;然而,在给出本公开的内容的情况下,相关领域的普通技术人员将认识到,这些方面不限于此。各种数据结构(例如,索引阵列和/或存储器缓冲器)可分别位于主机侧和/或外围侧存储器上。在其他变型中,数据结构中的一些或全部可位于共同的存储器上以及/或者位于主机处理器和外围处理器两者可访问的任何其他存储器中。
在一个此类具体实施中,输入和输出(I/O)数据在上行链路(UL)和/或下行链路(DL)方向上通过数据管道流动。如本文所用,术语“上行链路”是指从主机或应用程序处理器到外围或基带处理器的传输,并且术语“下行链路”是指从外围或基带处理器到主机或应用程序处理器的传输。接口可具有任何数量的上行链路管道和任何数量的下行链路管道;然而,界面包括至少一个管道。在操作期间,每个软件进程(例如,控制、数据、调试或其他客户端服务)与单个接口相关联。
如图所示,多个不同的“管道”(管道A、管道B...管道n)在应用程序处理器和基带处理器之间对“数据流”进行事物处理。简言之,可以通过“打开”管道来创建传输描述符环(TR),并且通过“关闭”管道来破坏传输描述符环(TR)(例如,与一个处理器的软件进程尝试与另一个处理器的对等软件进程通信相关联)。可用于打开数据管道的参数的常见示例包括但不限于例如:管道类型、地址、条目数量、标识、索引矢量、页眉大小、页脚大小、门铃矢量、优先级、业务类别、中断矢量和/或任何数量的其他数据结构特定的信息。例如,打开TR的消息可包括:缓冲器大小的环地址、缓冲器大小的环条目宽度、缓冲器大小的环条目链、完成类型和/或ID,等等。
IPC链路可包括至少一对单向管道。在一些变型中,IPC链路另选地或除此之外包括至少一对双向或多向管道。在各种其他实施方案中,一个处理器可经由一个或多个IPC链路与多个其他处理器装置进行数据通信。例如,在一些实施方案中,主机可以连接到多个外围处理器。在其他实施方案中,多个主机处理器可连接到给定的外围处理器。更一般地,可以根据上述IPC总线将任何数量的主机和任何数量的处理器连接在一起。
每个管道可与一个“传输描述符环”(TR)相关联。每个TR由传输描述符(TD)构成。TR可由TR头索引阵列(TR HIA)和TR尾索引阵列(TR TIA)描述。每个TR HIA条目指示下一个可用TD的开始,并且TR TIA指示待处理的下一个TD。传输可以是从主机到外围设备,或反之亦然。主机写入指向主机将处理的TR中的下一个空时隙的头指针,而尾指针指向外围处理器将处理的下一个TD的地址。头指针可由主机写入并且由外围设备读取。尾指针可由主机读取并且由外围设备写入。
处理TR可为读取或写入。例如,为了执行写入,主机处理器为由TR定义的写入分配缓冲器。写入的大小决定TR中TD的数量和大小。主机将数据写入缓冲器,并且将缓冲器提供给外围设备。此后,外围设备可以从缓冲器读取以实现写入。类似地,为了执行读取,主机处理器为读取分配缓冲器;读取的大小由TR中的TD的数量和大小确定。读取的最大大小由每个TD中指示的缓冲器的大小确定,并且TD的总数标识排队的读取缓冲器的数量。缓冲器(仍为空)被提供给外围设备,并且外围设备填充缓冲器。当缓冲器已满时,外围设备通知主机并且主机读取存储在缓冲器中的数据。
如图4所示,对外围设备的主机写入形成“上游”管道。当TR的头指针等于其尾指针时,TR为空。例如,管道A的TR_HIA[0]被设定为4;因此,主机可以在索引位置4处写入新的TD。类似地,管道A的TR_TIA[0]被设定为1;因此,外围设备可以在索引位置1处读取并且处理TD。在另一个示例中,从外围设备的主机读取形成“下游”管道。例如,管道B的TR_HIA[0]被设定为2;因此,主机可以在索引位置2处写入新的TD。类似地,管道B的TR_TIA[0]被设定为0;因此,外围设备可以在索引位置1处写入TD。
每个传输描述符(TD)引用对应的后备数据缓冲器。在一个实施方案中,单个TD可描述可由主机和/或外围处理器通过通信链路访问的物理上连续的存储器缓冲器。TD可包括各种字段,诸如描述符的类型、缓冲器的大小、缓冲器的地址、由TD描述的缓冲器特有的标签、指示分组传输中剩余的TD的数量的剩余计数、在TD的开头部分带有信息的页眉、或包含数据诸如元数据或与每个TD相关联的数据的页脚和/或页眉字段。
在各种实施方案中,TD中包括的数据可以广义地指用于递送到另一个处理器或另一个设备的有效载荷。如本文所用,“有效载荷”广义地指包括预期消息的传输的分组数据的一部分。有效载荷不包括用于例如路由消息、错误校正、流控制和其他事务性开销的协议信息。例如,除了有效载荷之外,数据分组(包括例如传输描述符)可包括仅为了促进有效载荷的递送而发送的元数据或其他字段。在另一个示例中,有效载荷可包括在通常不用于有效载荷递送的分组的区段中,诸如传输描述符的页眉或页脚组件。
简言之,在计算领域中使用多种多样的“数据类型”。如本文所用,“数据类型”是指可由逻辑(例如,硬件、固件、编译器或软件、处理器、可编程逻辑等)分类和/或使用以标识如何使用数据的数据的特定格式或构造。数据类型不限于“自然地”理解的数据类型或通用数据类型;一些数据类型可在软件中动态地定义,并且针对特定功能或操作而专门或具体地设计。
所谓的“值”数据类型是向编译器表示一个或多个值的数据类型。值数据类型的常见示例包括但不限于:布尔值、字符、整数、浮点数和固定点数。另一个系列的常用数据类型是所谓的“参考”数据类型;参考数据类型由逻辑解释为“是指”其他数据。参考数据类型的常见示例包括但不限于引用和指针。一些混合数据类型可呈现值或参考数据类型的特性,这取决于它们被逻辑部件处理的方式;此类混合数据类型包括但不限于:阵列、多维阵列、列表、字典、集合、栈、队列和枚举。例如,列表可被视为值并且“内联”编译(例如,列表的每个实例处的编译器副本列表值),或者被视为引用(例如,编译器引用列表的每个实例的存储器位置)。
在本公开的上下文中,如本文所用,术语“指针”是指“指向”或“引用”存储器中的数据位置的特定引用数据类型。通常,指针基于例如基址、参考地址、存储器窗口或其他存储器子集将由编译器转换的存储器地址存储为系统存储器中的绝对位置或系统存储器中的相对位置。在操作期间,指针被“取消引用”以恢复存储在存储器的位置中的数据。
如本文所用,术语“描述符”是指指示如何存储其他数据的数据结构。描述符通常包括多个参数并且可用于标识更复杂的数据结构;例如,描述符可包括类型、大小、地址、标签、标志、页眉、页脚、元数据、到其他数据描述符或位置的结构链路和/或任何其他数量的格式或构造信息中的一者或多者。
如本文所用,术语“元数据”是指描述数据的数据。元数据在应用中广泛变化,但通常属于描述性、结构性和/或管理类别中的一者。描述性元数据以能够实现例如发现和/或标识的方式描述数据。常见示例包括但不限于例如:类型、大小、索引标签和关键字。结构元数据描述数据的结构,例如如何将复合对象放在一起。常见示例包括但不限于例如前缀、后缀、内容列表、顺序和/或描述数字材料的关系和其他特性的任何其他信息。管理元数据提供信息以帮助管理资源;常见的示例包括例如授权和创建信息、访问权限和/或基于错误检查和安全的信息(例如,循环冗余校验(CRC)、奇偶校验等)。
如本文所用,“页脚”组件是指与数据结构或其部分(例如,传输描述符、完成描述符)相关联并且跟随其后的数据。如本文所用,“页眉”组件是指与数据结构或其一部分(例如,传输描述符、完成描述符)相关联并且在其之前的数据。页眉或页脚可以是传输描述符或完成描述符的可选组件。类似地,页眉或页脚可包括描述描述符、分组和/或有效载荷的数据(例如,有效载荷)或元数据。
TD/TR数据结构允许主机和外围处理器两者独立的队列处理。例如,外围设备可以从由第一TD描述的存储器的一个区域读取,而其他主机写入存储器的不同区域以准备不同的TD。处理可基于例如尽力服务、优先化、轮询调度、加权轮询调度或任何数量的其他排序来执行。在一些情况下,TD可根据正在进行的流控制和/或其他带宽管理进行排队和/或刷新。在给出本公开的内容的情况下,普通技术人员将容易理解用于TD处理的各种其他方案,例如,如用于经由IPC链路的各种数据传输方案,如2018年1月9日提交的标题为“METHODSAND APPARATUS FOR REDUCED-LATENCY DATA TRANSMISSION OVER AN INTER-PROCESSORCOMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS”的美国专利申请序列号15/865,638中所述,该专利申请的全文以引用方式并入本文。
重新参考图4,每个管道进一步与一个“完成描述符环”(CR)相关联。每个CR由完成描述符(CD)构成。CR由CR头索引阵列(CR HIA)和CR尾索引阵列(CR TIA)描述。每个CR HIA条目指示下一个可用CD的开始,并且CR TIA指示下一个待处理的CD。完成是(响应于传输描述符)从外围设备到主机。换句话讲,CR HIA由外围设备写入并且指向外围设备可写入的CD中的下一个空狭槽,而CR TIA由主机写入并且指向主机处理器将处理的下一个CD的地址。例如,管道A的CR_HIA[0]被设定为1;因此,外围设备将在索引位置1处写入下一个CD。类似地,管道A的CR_TIA[0]被设定为0;因此,主机可以在索引位置0处理CD。
在操作期间,外围处理器从TR读取TD,并且检索或写入由TR引用或包含在其中的数据。然而,外围处理器可根据其自身的内部考虑因素(而不是依赖于主机处理器的任务调度)处理TD/TR。一旦外围处理器完成处理就确定完成状态并且将该状态写入CD/CR,从而向主机处理器提供显式完成状态信息。CD包含完成信息,该完成信息向主机处理器(发起TD的处理器)指示数据已由外围处理器处理并且可释放针对TD/TR的存储器分配。例如,CR_A的CD0包括标识TD0的唯一标签;因此,CD0提供TD0的完成状态。当主机处理器处理CD0时,针对TD0的存储器分配可被释放和回收以用于后续数据事务处理。
完成机制使得多个处理器能够通过明确确认何时已经例如传输、渲染、消耗和/或以其他方式处理数据来协调。此类信息可用于支持低延迟事务处理,减少和/或基本上消除等待或确认时间,以及/或者提高可独立操作的处理器之间的操作速度。在2018年7月30日提交的标题为“METHODS AND APPARATUS FOR VERIFYING COMPLETION OF GROUPS OF DATATRANSACTIONS BETWEEN PROCESSORS”的美国专利申请序列号16/049,624中更详细地描述了各种其他完成机制,该专利申请被并入本文。
图5示出了用于经由在共享存储器中使用传输描述符(TR/TD)的传输环和完成描述符(CR/CD)的完成环在两个或更多个可独立操作的处理器装置之间进行数据事务处理的一个示例性传输协议。虽然为清楚起见示出了单个TR和CR,但本文所述的各种技术一般与同时操作的多个环一起使用。
在操作期间,可独立操作的处理器(例如,主机处理器或应用程序处理器)的第一处理器502分配共享存储器装置504内的TD并且(经由振铃、写入指针阵列或消息告知中断(MSI)等)通知另一个第二处理器508。
数据可存储在或写入到由一个或多个TD表示的后备存储缓冲器中。在一些变型中,数据可包含在TD自身中,并且TD经由通信链路552(例如,IPC链路和对应的MMU 510A)被递送并且写入共享存储器504。具体地讲,数据可包括待递送到外围设备和/或另一设备或网络实体的有效载荷或信息。在一些变型中,数据可驻留在外部存储器中,并且一个或多个TD可包含指向外部存储器中的位置的数据。TD可置于驻留在共享存储器504中的传输描述符环(TR)数据结构506中。在一个具体实施中,第一处理器502可以写入驻留在主机侧存储器504中的头部索引,指示TD的传输。
在稍后的时间点,第二可独立操作的处理器508(例如,外围处理器或基带处理器)经由通信链路554(例如,经由IO MMU 510B)读取TR 506上的TD,并且从与之相关联的后备缓冲器读取数据或者将数据写入与之相关联的后备缓冲器。例如,第二处理器508读取TD以及/或者针对TD指向的对应的数据或有效载荷取消引用TD。第二处理器508使用完成描述符环(CR)512中的显式完成描述符(CD)来指示完成状态。更直接地,直到对应的CD/CR已经明确标识完成状态,TD/TR指向的存储器或缓冲器才能由第一处理器释放。
第二处理器508可以访问、写入、填充、使用、传输、丢弃和/或以其他方式消耗数据。例如,第二处理器508可经由另一个通信链路556(例如,无线链路、另一IPC链路)将数据传输至另一个设备。在一个变型中,第二处理器508可经由驻留在第二处理器中(或与其进行数据通信)的调制解调器将数据向上游传输至另一个设备。其他设备可以是无线设备,诸如无线耳塞、无线计算机鼠标、移动用户设备和/或其他有线或无线设备。
为了确认数据事务处理的完成,第二处理器508然后可以经由通信链路558(例如,另一个IPC链路或相同的IPC链路552或554的一部分)将一个或多个CD写入驻留在共享存储器504上的完成描述符环(CR)512。第一处理器502可以经由通信链路560(例如,另一个IPC链路或相同IPC链路552、554或558的一部分)读取CR 512上的CD以验证完成的数据事务处理。CD包含向第一处理器(即,发起TD的处理器)明确指示数据已由第二处理器508处理并且可释放针对TD/TR的存储器分配的信息。例如,给定的CD可包括外围设备所检索和完成的TD的标识符,以及/或者缓冲器访问来检索数据或有效载荷的地址。
如前所述,用户空间应用程序对用户空间中的数据管道进行读取和写入,然而数据事务处理发生在内核空间内。图6为套接字事务处理的逻辑表示,可用于解释在数据事务处理期间发生的上下文切换。如其中所示,外围处理器602B将下行链路数据写入用户空间中的数据管道。外围处理器602B上下文切换到内核空间以服务于套接字调用;这可能需要随后的上下文切换到IPC驱动程序,以根据上文讨论的图4和图5中描述的TD/TR和CD/CR方案经由其当前的TD分配将数据写入共享存储器608。
随后,主机处理器602A独立地接收和读取CD/CR并且检索对应的TD/TR。数据经由另一个上下文切换提供给套接字。另外,在内核内也可存在多个线程切换。例如,内核可以从主要中断上下文切换到辅助中断上下文。此后,在辅助中断上下文中,可以发信号通知另一个线程以处理有效载荷。其他具体实施可使用更多或更少的上下文切换层。
如在图6中应当理解的,前述IPC传输方案包括多个上下文切换,以确保每个处理器可以非连续的方式访问共享存储器。虽然每个上下文切换可以暂时停止处理并且消耗存储器资源以保存状态,但是上下文切换可以一起用于有效地批处理通信以提高整体系统效率。例如,一个层可在触发下一个线程之前的一段时间内收集一定量的分组;从而在大量的传输中平摊成本。然而,即使IPC传输方案使可独立操作的处理器能够快速传输大量数据,但由于每单位数据的过量上下文切换,传输少量数据也可能是低效的。
(由本发明的受让人制造的)
Figure BDA0002949814720000211
通常包括本地应用程序以及第三方应用程序两者。出于各种原因(例如,安全性、隐私性等),用户空间软件应用程序不了解基础传输方案。因此,例如,许多传统软件应用程序如正在使用存储器映射的输入/输出(I/O)那样,继承并且继续在用户空间中实现存储器访问保护,即使此类技术在IPC框架内不是必需的。类似地,应当理解,某些应用程序仅能从IPC提供的有益效果接收边际有益效果;例如,非常小的数据传输大小可能无法传输足够的数据来分散IPC开销的成本。此外,由于移动设备具有有限的存储器容量并且可能需要支持任意数量的不同第三方应用程序,因此用于存储器映射的用户空间应用程序的专用存储器的静态分配可能是不期望的或不可行的。
为此,需要用于以不需要内核空间干预的“直通”方式动态隔离和回收用于数据传输的存储器空间的解决方案。
示例操作-
图7为根据本文所述的各种原理的直通套接字事务处理和IPC套接字事务处理的逻辑表示。在一个示例性实施方案中,应用程序可以使用IPC套接字(如前所述),或者可以使用“直通”套接字经由存储器映射的访问直接读取和写入联合共享的存储器。更直接地,直通套接字将主机存储器的联合共享的区域暴露于用户空间中的外围客户端和主机客户端两者。这允许客户端通过存储器访问直接与外围设备进行交互,而无需IPC数据传输。
图8示出了用于实现流式音频处理的直通事务处理的一个示例性实施方案。如其中所示,主机和外围设备的现有用户空间应用程序可使用套接字802,根据上述技术经由内核空间数据管道I/O 804、传输环(TR)806和/或完成环(CR)808对数据进行事务处理(参见例如数据管道输入/输出(I/O))。此外,直通套接字810使得用户空间应用程序能够直接访问共享存储器812而不离开用户空间。换句话讲,直通套接字810可用于直接读取和写入共享存储器,而无需上下文切换到内核空间。
在一个示例性实施方案中,一组直通套接字用于提供流式音频数据传输。简言之,流式音频业务是同步的(即,尽管数据不规则地排队,但数据传输可以固定速率发生)。在一种此类情况下,在每个周期期间传输的数据量具有固定大小。如其中所示,第一组直通套接字810A为上行链路流式音频流保留第一共享存储器区域812A,并且第二组直通套接字810B为下行链路流式音频流保留第二共享存储器区域812B。
在一个示例性实施方案中,流式上行链路音频和下行链路音频经由在用户空间中管理的圆环传输。更直接地,主机和外围设备两者的用户空间应用程序映射共享存储器区域并且将其用作圆形同步环(IR)。示出了两个IR,其中IR_U在上行链路方向上,并且IR_D在下行链路方向上。环包含固定数量的时隙,并且在每个时隙中周期性地生成数据。每个时隙的大小和所生成的数据的周期性可根据各种应用程序约束(例如,上行链路音频数据和下行链路音频数据的速率)来配置。在上行链路方向上,主机上的客户端产生由外围设备消耗的数据。在下行链路方向上,外围设备产生数据,该数据由主机上的客户端消耗。不存在针对IR生成的索引交换或任何中断。相反,主机和外围设备两者独立地跟踪时间,并且周期性间隔用于隐式地协调数据传输。
从前述内容应当理解,用户空间流式音频应用程序控制在IR_U和IR_D中的每一者中生成和消耗数据的速率。因此,鉴于流式音频用户空间应用程序约束,由正常IPC环提供的存储器空间保护是冗余的。此外,通过实现直通操作并且避免不必要的内核空间数据管道I/O,流式音频应用程序可以移除不必要的上下文切换,这进一步减少总体处理开销和存储器交换。
如前所述,主机和外围设备可具有由其独立操作引入的不完美时钟对准。更直接地,主机和处理器可具有在一定程度上变化的独立功率和定时方案。此外,传统的流式音频应用程序可能已被设计用于固定的定时,因此不知道或无法校正不完美时钟对准。因此,使用可独立操作的处理器系统中的直通套接字实现传统的流式音频应用程序而不校正时钟漂移可能导致音频数据的不期望的损失并且/或者引入其他伪影(啁啾声、爆裂声、回波等)。
在一个示例性实施方案中,主机和外围设备可以用非协调方式对联合共享的存储器的控制消息进行事务处理。例如,在流式音频的上下文中,外围设备可经由非协调消息来通知主机IR_U或IR_D缓冲器包装。在一个此类具体实施中,外围设备可使用类型存储器事件的非协调完成描述符(CD)。类似地,主机可经由非协调传输描述符(TD)存储器通知消息向外围设备通知IR_U或IR_D缓冲器包装。
使用非协调即时消息传送允许对等实体适当地补偿时钟漂移。例如,当外围设备向主机指示IR_D缓冲器包装时,主机可验证外围设备的缓冲器包装在足够的操作范围内以保持IR_D操作。如果需要校正,则主机处理器可以减慢或加速其从IR_D的数据消耗。类似地,当外围设备向主机指示IR_U缓冲器包装时,主机可验证外围设备的缓冲器包装在足够的操作范围内以保持IR_U操作。如果需要校正,则主机处理器可减慢或加速其对IR_U的写入。
相关领域的普通技术人员将容易理解,前述流式音频应用程序仅是示例性的。前述技术可以广泛地扩展到可以受益于联合共享的存储器映射区域的使用和控制的任何应用程序。
方法
图9示出了用于使用和控制多个处理器之间的联合共享的存储器映射区域的一般化方法900。
在方法900的步骤902处,打开直通应用程序。如本文所用,术语“直通”是指不需要内核空间应用程序的有益效果、特权或能力来发挥功能的应用程序。一般来讲,非内核应用程序在用户空间内被发起,然而下文描述的各个方面广泛地应用于可受益于存储器空间的直接操纵的任何应用程序。
如前所述,术语“用户空间”是指处理器从中执行用户进程(例如,由用户权限发起以及/或者具有用户权限的进程)的系统存储器的一部分,而“内核空间”是处理器从中执行内核的存储器的一部分。内核空间被严格保留用于运行特权操作系统(OS)进程、扩展程序和大多数设备驱动程序。内核空间应用程序的有益效果、特权或能力的示例包括但不限于:存储器管理(例如,存储器分配/取消分配)、虚拟存储器管理、电源管理、网络通信、进程调度、设备驱动程序访问、文件系统操纵和/或任何数量的其他内核或操作系统功能。
在一个示例性实施方案中,直通应用程序是与对等用户空间应用程序进行数据事物处理的用户空间应用程序。在一个示例性变型中,用户空间应用程序从第一处理器执行,并且对等用户空间应用程序从第二处理器执行。在这种情况下,第一处理器是主机处理器,并且第二处理器是外围处理器。在另一种此类情况下,第一处理器是应用程序处理器,并且第二处理器是基带处理器和/或媒体处理器。在其他实施方案中,第一处理器在第一设备内部,并且第二处理器在第一设备外部;例如,第二处理器可位于远程设备诸如云或雾网络中。
此外,虽然本公开在两个处理器的上下文中呈现,但本文所述的各个方面可应用于任何数量的处理器和/或任何处理器拓扑结构。例如,本文所述的各种技术可以用成功的等同形式应用于根据总线、树形、星形、菊花链或任何其他网络拓扑结构组织的任意数量的处理器。相关领域的普通技术人员将进一步理解,可修改本文所述的各个方面以适合任何数量的处理器和/或任何处理器拓扑结构。
本文所述的各个方面可以用成功的等同形式在不分成用户空间和内核空间的系统中使用。例如,其他系统可被设置为多个特权级(或没有特权级)以及/或者在不同用户空间和/或内核空间应用程序之间实现各种事务性障碍。例如,与不同用户相关联(并且通常从彼此的存储器分配“沙箱化”的)的两个用户空间应用程序可以被配置为联合共享存储器空间而不是直通内核。类似地,用于彼此信任的不同设备的两个内核空间应用程序可被配置为联合共享存储器空间。在又一个变型中,用户空间应用程序可能能够直接写入例如不运行任何特权访问区别的嵌入式设备。根据本公开,其他具体实施可以由普通技术人员用成功的等同形式替换。
在一个示例性实施方案中,应用程序是媒体处理应用程序。媒体处理应用程序的常见示例包括音频和/或视觉媒体处理。在一个实施方案中,媒体处理是流式处理,在其他变型中,媒体处理从缓冲的或以其他方式预先缓存的存储器或数据执行。在其他变型中,可以根据需要以及/或者创建的基础来生成、渲染、修改和/或创建媒体。
在其他实施方案中,应用程序是通信处理应用程序。通信处理应用程序的常见示例包括有线和/或无线数据传输。在一个实施方案中,通信处理应用程序是缓冲用于传输和/或接收的数据的通信栈。各种通信技术可提供例如保证的服务质量(QoS)和/或尽力服务递送。
在一个示例性实施方案中,应用程序被打开。例如,用户可发起电话呼叫,从而创建用于传输从麦克风接收的语音数据的上行链路音频流和用于向扬声器提供语音数据的下行链路音频流。类似地,用户可以由另一用户调用(从而导致代表用户创建上行链路和下行链路媒体流以服务于语音呼叫)。在其他情况下,守护进程(后台用户进程)可以基于其他内核活动(例如,定时器截止等)触发数据传输的创建。例如,守护进程可以周期性地对蜂窝网络进行检查以确定是否发送或接收数据。更一般地,在给出本公开的内容的情况下,相关领域的普通技术人员可以替换用户(或代表用户)对应用程序(媒体或其他项目)的任何创建、实例化和/或初始化。
在其他实施方案中,应用程序可被重新打开、重新实例化、重新初始化或以其他方式从静态恢复。如前所述,可独立操作的处理器的系统可周期性地进入低功率状态(或其他静态模式)。在此类模式期间,处理器可释放活动存储器以例如将应用程序状态存储在低功率存储器和/或非易失性存储器中以及/或者降低功率消耗。在从低功率状态唤醒时,基于所存储的状态恢复先前活动的过程。因此,例如,正在进行的媒体回放可以进入和退出低功率模式,而对用户体验的影响最小。
在方法900的步骤904处,针对直通应用程序映射联合共享的存储器空间。如本文所用,术语“联合共享”是指可由应用程序以直通方式访问的存储器的一部分。在一个示例性实施方案中,联合共享的存储器由多个用户空间应用程序联合共享。在其他实施方案中,联合共享的存储器由多个应用程序联合共享;例如,不同设备的两个内核空间应用程序可共享联合共享的存储器。在给出本公开的内容的情况下,普通技术人员将容易理解用于在多个逻辑实体之间联合共享存储器空间的各种其他方案。
如本文所用,术语“映射”、“在映射”以及“被映射”是指将一个或多个存储器位置分配给存储器映射的输入/输出(I/O)地址。在一个示例性实施方案中,映射存储器将存储器内的物理地址位置分配给虚拟地址位置(存储器映射的I/O地址)。软件使用虚拟地址位置来读取、写入以及/或者以其他方式访问存储器中的特定位置。在一个示例性实施方案中,存储器映射的I/O被进一步提供给存储器管理单元(MMU)。在一些变型中,MMU被分成用于主机或应用程序处理器的MMU和用于一个或多个对应的外围设备的一个或多个IO MMU。如前所述,MMU和/或IO MMU的存储器映射可不同(例如,主机和外围设备可具有映射到相同物理地址空间的不同虚拟地址范围)。
在一个示例性实施方案中,从现有存储器分配“预留”存储器映射的I/O。例如,从先前分配给IPC事务处理的存储器池预留存储器映射的I/O。更直接地,代替从未分配的存储器池分配,从现有分配保留存储器确保总体的存储器消耗不增加。在另选的实施方案中,从未分配的存储器池分配存储器映射的I/O。更一般地,存储器映射的I/O使用专用范围的地址来实现对存储器的直接访问。
在一个示例性实施方案中,存储器映射消息标识共享存储器内用于联合共享的存储器操作的位置。在一个此类具体实施中,存储器映射消息包括TD,该TD由主机侧用户空间应用程序发送,并且由内核空间解释为对联合共享的存储器的请求。在另一个此类具体实施中,存储器映射消息包括由外围设备侧用户空间应用程序发送的CD。可用于打开数据管道的参数的常见示例包括但不限于例如:地址(例如,TR地址)、大小(以TD为单位)、区域标识符、优先级、业务类别和/或其他主机应用程序特定数据。例如,示例性存储器映射消息可导致保留先前创建的TR的多个TD,以被保留用于联合共享的存储器操作。在另一个此类示例中,示例性存储器映射消息可导致具有多个TD的新TR的分配,以从未分配的存储器资源池中进行分配并且用作联合共享的存储器。
在一些实施方案中,存储器映射消息可标识实际存储器映射。在其他实施方案中,存储器映射消息可请求或提出存储器映射;对存储器映射的请求必须在其生效之前被确认。在一些实施方案中,存储器映射消息可以将更多存储器添加到先前映射的联合共享的存储器。
虽然前述讨论描述了用于联合共享的存储器操作的存储器空间的预留和/或分配,但是在给出本公开的内容的情况下,用于隔离用于联合共享的存储器操作的存储器空间的其他技术可以由普通技术人员用成功的等同形式替换。
在方法900的步骤906处,直通应用程序访问联合共享的存储器空间。
在一个示例性实施方案中,直通应用程序和对等应用程序经由联合共享的存储器对数据进行事物处理。数据事务处理可用于提供例如流式数据传输、媒体回放、网络连接、数据处理和/或任何数量的其他数据处理事务处理。例如,在一个此类实施方式中,流传输上行链路音频和下行链路音频经由在用户空间中管理的圆环传输。在一个此类变型中,主机和外围设备两者的应用程序映射共享的存储器区域并且将其用作具有固定数量的时隙的环形缓冲器,并且在每个时隙中周期性地生成数据。每个时隙的大小和所生成的数据的周期性可根据各种应用程序约束(例如,上行链路音频数据和下行链路音频数据的速率)来配置。
在一个示例性实施方案中,在不受益于内核空间保护的情况下执行对联合共享的存储器空间的访问。在一个实施方案中,直通应用程序明确地管理用户空间中的存储器分配,而不是依赖于内核存储器管理。在一个实施方案中,直通应用程序与对等用户空间应用程序协调,以确保两个用户空间应用程序都不竞争联合共享的存储器。在另一个此类实施方案中,直通应用程序授予对等用户空间应用程序对联合共享的存储器的访问权限(从而确保一次只有一个实体在访问存储器)。更直接地,显式管理技术要求对联合共享的存储器空间的控制一次仅由一个实体(如果有的话)管理。
在一些实施方案中,对联合共享的存储器空间的管理可被确定为存储器映射消息的一部分。在其他实施方案中,联合共享的存储器空间的管理可以由用户空间应用程序使用暗示(例如,用户空间应用程序可以是与用户空间应用程序通信的主设备等)。在其他实施方案中,联合共享的存储器空间的管理可以被仲裁或者以其他方式由用户空间应用程序动态地确定。
在一个实施方案中,直通应用程序和对等应用程序隐含地不竞争访问联合共享的存储器空间。暗示的竞争预防可根据时间、部分或访问类型来实现。例如,直通应用程序可仅在对等应用程序不访问联合共享的存储器时才访问联合共享的存储器(反之亦然)。在另一种此类情况下,直通应用程序可仅访问联合共享的存储器空间的对等应用程序不访问的部分(反之亦然)。在其他情况下,直通应用程序可仅读取(或写入)联合共享的存储器空间的对等应用程序仅写入(或读取)的部分。
虽然前述讨论涉及用户空间存储器管理,但其他实施方案可部分地或整体地使用基于内核的存储器管理。更直接地,虽然期望避免用户空间和内核空间之间的上下文切换,但也可存在值得内核空间存储器管理的其他考虑因素。例如,一个用户的用户空间应用程序与另一个用户的另一个用户空间应用程序可能需要内核空间管理以确保事务处理具有适当的权限。类似地,与设备驱动程序直接交互的用户空间应用程序可能需要内核空间访问。
更一般地,相关领域的普通技术人员将容易理解,避免用户空间和内核空间之间的上下文切换仅仅是创建可以在IPC的上下文之外直接访问的联合共享的存储器空间的示例性有益效果。各种其他实施方案可利用本文所述的技术用于完全不同的目的(例如,以保持传统软件分发兼容性、访问权限、驱动程序兼容性、提高事物处理简单性和/或速度等)。
本公开的各种实施方案可能需要在使用期间改变联合共享的存储器空间的各种参数。更直接地,用户空间应用程序对联合共享的存储器使用的动态管理可以是用户空间操作的一种可能的有益效果。可用于影响存储器操作的参数的常见示例包括但不限于:可用大小、事务大小、字长、对部分(或整体)的读取/写入许可、保留空间、读取/写入限制、仲裁策略、服务质量(QoS)、奇偶校验、错误校正和/或任何数量的其他操作参数。
在一个示例性实施方案中,对管理消息的事物处理可以作为带内即时消息传送经由IPC链路进行。例如,主机处理器可使用传输描述符(TD)和/或传输环(TR)来与外围设备进行通信,并且外围处理器可使用完成描述符(CD)和/或完成环(CR)。如前所述,联合共享的存储器操作可以不使用TR/TD和/或CR/CD,因此可以保留带内IPC即时消息传送用于语义,但是使用某些“空”描述符以便标识事务处理不与任何现有的TR/TD或CR/CD相关联。在其他变型中,带内IPC即时消息传送通过例如唯一标识符具体地标识联合共享的存储器区域。在给出本公开的内容的情况下,可以用成功的等同形式替换用于联合共享的存储器空间的带内即时消息传送的其他技术。
在一些实施方案中,TR/TD和/或CR/CD事务处理可以是非协调的。在即时消息传送的上下文中,术语“非协调”是指与不响应于通信或旨在引起响应的对等实体的即时消息传送。例如,外围处理器可发送非协调的CD,并且主机处理器可发送非协调的TD。例如,根据上述IPC格式构造非协调的CD,但不“响应于”先前的TD。类似地,非协调TD不触发对应的CD响应。
在其他实施方案中,TR/TD和/或CR/CD事务处理可以是协调的。在即时消息传送的上下文中,术语“协调的”是指与旨在引起响应或响应于先前通信的对等实体的即时消息传送。例如,主机处理器可以发送具有一个或多个联合共享的存储器参数的TD;作为响应,外围处理器可经由CD确认参数(并且此后设置生效)。此外,应当理解,协调事务处理不一定符合IPC事务处理协议,例如,外围设备可发送CD以改变导致经由来自主机的TD确认的联合共享的存储器操作。此外,在一些情况下,参数变化可能不被接受;例如,主机可能能够忽略或以其他方式否定对由外围设备发起的联合共享的存储器操作的改变。在给出本公开的内容的情况下,可以由普通技术人员替换其他变型。
在一些实施方案中,管理消息可以作为经由例如通用输入/输出(GPIO)到IPC链路的带外即时消息传送和/或联合共享的存储器内的即时消息传送来进行事物处理。例如,在一个示例性实施方案中,用户空间应用程序和对等用户空间应用程序可以标识存储器中用于控制联合共享的存储器操作的特定位置。例如,特定范围的存储器可用作参数交换的主机或外围“邮箱”。
在一个示例性实施方案中,对联合共享的存储器操作的改变由主机和外围处理器非对称地控制。例如,主机(或外围设备)可以更好地控制如何配置联合共享的存储器,而对等实体可仅接受对其进行的改变。在其他情况下,主机和外围设备均对联合共享的存储器具有对称控制。例如,主机和外围设备两者可具有相同的权限来控制和/或修改联合共享的存储器。
在一个示例性实施方案中,主机可传输存储器通知消息以通知外围设备关于联合共享的存储器区域的变化。类似地,在一个示例性实施方案中,外围设备可以传输存储器事件消息以通知主机关于联合共享的存储器区域的变化。在一个此类变型中,主机和/或外围设备还可以提供存储器更新消息,该存储器更新消息具体地标识联合共享的存储器区域的更新的参数。前述内容的变型可附加地包括例如联合共享的存储器的标识符、优先信息、业务类别信息和/或特定于各种用户空间应用程序的数据。
在方法900的步骤908处,关闭直通应用程序并且取消映射联合共享的存储器空间。
在一个示例性实施方案中,应用程序由于用户动作的终止(例如,用户挂断电话和/或呼叫者挂断电话)而关闭。在其他实施方案中,由于其他设备考虑因素而关闭应用程序。例如,在一些情况下,应用程序被关闭,使得设备可以将主机和外围设备中的任一者或两者置于低功率状态。在其他情况下,可关闭应用程序,使得内核可重新捕获用于较高优先级内核线程的存储器;例如,用于正在进行的音频回放的用户空间应用程序可被认为具有比例如确保视频数据流保持流动(fluid)更低的优先级。
在其他情况下,守护进程(后台用户进程)可以基于其他内核活动(例如,定时器截止等)触发联合共享的存储器的破坏。例如,守护进程可以周期性地检查“失控”进程和/或其他后台存储器清理。更一般地,在给出本公开的内容的情况下,相关领域的普通技术人员可以替换用户(或代表用户)对应用程序(媒体或其他项目)的任何破坏、回收和/或清除。
如本文所用,术语“取消映射”、“在取消映射的”和“被取消映射”是指联合共享的存储器从存储器映射的I/O的取消保留/取消分配。例如,存储器映射的I/O可以返回到被分配给IPC事务处理的存储器池。在另一个示例中,存储器映射的I/O返回到未分配存储器的池。可包括在存储器取消映射消息内的参数的常见示例包括但不限于例如:地址(例如,TR地址)、大小(以TD为单位)、区域标识符和/或其他主机应用程序特定数据。虽然前述讨论描述了“回收”联合共享的存储器,但是在给出本公开的内容的情况下,普通技术人员可以用成功的等同形式替换用于返回联合共享的存储器操作的其他技术。
在一个此类具体实施中,存储器映射消息包括由主机侧应用程序发送的TD(或由外围设备侧发送的CD),该TD被内核空间解释为取消映射联合共享的存储器的请求。在一个示例性实施方案中,存储器取消映射消息标识将被取消映射的联合共享的存储器。在其他实施方案中,存储器取消映射消息可仅请求联合共享的存储器的取消映射。在其他实施方案中,存储器取消映射消息可以指示一个用户空间实体已经结束(联合共享的存储器可以由其对等用户空间实体无中断地使用)。
在一些实施方案中,存储器取消映射消息可直接取消映射联合共享的存储器;在其他实施方案中,必须在取消映射请求生效之前确认取消映射请求。在一些实施方案中,存储器取消映射消息整体地取消映射联合共享的存储器。在其他实施方案中,存储器取消映射消息部分地取消映射联合共享的存储器。例如,在一些情况下,动态存储器映射和存储器取消映射交换可用于根据需要缩小或增加联合共享的存储器。
在一个示例性实施方案中,应用程序将刷新其高速缓存中的所有等待的事务处理,并且不发出对联合共享的存储器区域的任何进一步访问。在一些实施方案中,将允许等待的事务处理完成。其他实施方案可允许短时间间隔以允许任何事务处理完成(未完成的事务处理被清空)。在一个此类变型中,响应于存储器取消映射消息的完成,主机回收联合共享的存储器区域。
应当理解,虽然本公开的某些实施方案是按照特定的方法步骤顺序进行描述的,但这些描述仅仅是本文所述的更广泛方法的示例,并且可根据特定应用的需求而修改。在某些情况下,某些步骤可呈现为不必要的或可选的。另外,可将某些步骤或功能添加到所公开的实施方案,或者对两个或多个步骤的性能的次序加以排列。所有此类变型形式被认为包含在本文的公开和权利要求内。
虽然上文的详细描述已显示、描述并且指出应用到各种实施方案的新特征,但应当理解,在不背离本文所述原理的情况下,本领域的技术人员可以对所说明的设备或进程的形式和细节进行各种省略、替换和更改。上述说明是当前所考虑到的最佳模式。该描述绝不是为了进行限制,而是应被视为是对本文描述的一般原理的例示。应结合权利要求确定本公开的范围。
权利要求书(按照条约第19条的修改)
1.一种用于在第一处理器和第二处理器之间使用联合共享存储器的方法,包括:
打开用户空间中的直通应用程序,所述直通应用程序使得能够在所述用户空间中在所述第一处理器和所述第二处理器之间传输数据而不需要访问内核空间;
针对所述直通应用程序映射联合共享存储器空间,所述联合共享存储器空间包括在所述用户空间中能够访问的共享存储器的一部分;
使得能够经由所述直通应用程序访问所述联合共享存储器空间,所述用户空间中的所述数据传输包括经由所述联合共享存储器空间的至少一个存储器映射的输入/输出(I/O)事务,所述I/O事务包括(i)使得所述第一处理器能够将数据结构写入所述用户空间中能够访问的所述部分内的数据结构阵列,以及(ii)使得所述第二处理器能够至少基于对所述数据结构的读取来检索所述数据的至少对应部分,所述数据的所述至少对应部分被存储在后备存储器上;以及
关闭所述直通应用程序。
2.根据权利要求1所述的方法,其中打开所述用户空间中的所述直通应用程序包括打开用户空间应用程序。
3.根据权利要求2所述的方法,其中:
访问所述联合共享存储器空间包括将数据写入所述联合共享存储器空间;以及
所述方法还包括:
使得对等应用程序从所述联合共享存储器空间读取所写入的数据。
4.根据权利要求2所述的方法,其中:
针对所述直通应用程序映射所述联合共享存储器空间包括将存储器设备内的物理地址位置分配给用于所述至少一个存储器映射的输入/输出(I/O)事务的虚拟地址。
5.根据权利要求2所述的方法,其中所述用户空间应用程序能够读取和写入所述联合共享存储器空间的物理地址位置,而无需上下文切换到内核空间通信栈。
6.根据权利要求1所述的方法,其中访问所述联合共享存储器空间包括使所述联合共享存储器空间的多次访问排队。
7.根据权利要求6所述的方法,还包括:
响应于关闭所述直通应用程序,清空所述多个排队访问中的任何未解决访问。
8.根据权利要求1所述的方法,其中访问所述联合共享存储器空间包括在环形缓冲器内写入条目。
9.根据权利要求1所述的方法,还包括:
基于非协调消息改变所述联合共享存储器空间的参数。
10.一种装置,包括:
主机处理器,所述主机处理器耦接到外围处理器;以及
包括一个或多个指令的非暂态计算机可读介质,所述一个或多个指令在由所述主机处理器执行时致使所述主机处理器:
经由共享存储器内的内核空间通信栈管理一个或多个数据管道事务;
针对直通套接字映射所述共享存储器内的联合共享存储器空间,所述直通套接字被配置为提供所述主机处理器和所述外围处理器对所述联合共享存储器空间的访问而不离开用户空间,所述联合共享存储器空间能够在所述用户空间中经由存储器映射的输入/输出(I/O)访问;以及
经由所述直通套接字访问所述联合共享存储器空间。
11.根据权利要求10所述的装置,其中所述主机处理器包括应用程序处理器,并且所述直通应用程序包括流式音频应用程序。
12.根据权利要求10所述的装置,其中所述一个或多个数据管道事务经由处理器间通信(IPC)驱动程序的传输环(TR)来管理。
13.根据权利要求12所述的装置,其中所述共享存储器内的所述联合共享存储器空间是从与所述IPC驱动程序相关联的存储器空间保留的。
14.根据权利要求12所述的装置,其中所述共享存储器内的所述联合共享存储器空间是从未分配的存储器分配的。
15.一种装置,包括:
外围处理器,所述外围处理器耦接到主机处理器;以及
包括一个或多个指令的非暂态计算机可读介质,所述一个或多个指令在由所述外围处理器执行时致使所述外围处理器:
接收标识共享存储器内的联合共享存储器空间的存储器映射消息,所述联合共享存储器空间被配置为使得能够在用户空间内在所述外围处理器和所述主机处理器之间进行数据交换而不引起向内核空间的上下文切换;
经由在所述用户空间中启动的直通应用程序来访问所述联合共享存储器空间;以及
将非协调控制消息传输至所述主机处理器以发信号通知与所述联合共享存储器空间相关联的事件。
16.根据权利要求15所述的装置,其中所述外围处理器包括媒体处理器,并且所述直通应用程序包括流式音频应用程序,所述流式音频应用程序使用存储器映射的输入/输出(I/O)来访问所述联合共享存储器空间。
17.根据权利要求15所述的装置,其中所述非协调控制消息包括不对应于传输描述符(TD)的完成描述符(CD)。
18.根据权利要求15所述的装置,其中所述联合共享存储器空间包括用户空间内的圆形缓冲器。
19.根据权利要求18所述的装置,其中所述非协调控制消息经由内核空间通信栈传输。
20.根据权利要求19所述的装置,其中与所述联合共享存储器空间相关联的所述事件包括所述圆形缓冲器的折返。

Claims (20)

1.一种用于在第一处理器和第二处理器之间使用联合共享存储器的方法,包括:
打开直通应用程序;
针对所述直通应用程序映射联合共享存储器空间;
经由所述直通应用程序访问所述联合共享存储器空间;以及
关闭所述直通应用程序。
2.根据权利要求1所述的方法,其中打开所述直通应用程序包括打开用户空间应用程序。
3.根据权利要求2所述的方法,其中:
访问所述联合共享存储器空间包括将数据写入所述联合共享存储器空间;以及
所述方法还包括:
使得对等应用程序从所述联合共享存储器空间读取所写入的数据。
4.根据权利要求2所述的方法,其中:
针对所述直通应用程序映射所述联合共享存储器空间包括将存储器设备内的物理地址位置分配给用于存储器映射的输入/输出(I/O)的虚拟地址。
5.根据权利要求2所述的方法,其中所述用户空间应用程序能够读取和写入所述联合共享存储器空间的物理地址位置,而无需上下文切换到内核空间通信栈。
6.根据权利要求1所述的方法,其中访问所述联合共享存储器空间包括使所述联合共享存储器空间的多次访问排队。
7.根据权利要求6所述的方法,还包括:
响应于关闭所述直通应用程序,清空所述多个排队访问中的任何未解决访问。
8.根据权利要求1所述的方法,其中访问所述联合共享存储器空间包括在环形缓冲器内写入条目。
9.根据权利要求1所述的方法,还包括:
基于非协调消息改变所述联合共享存储器空间的参数。
10.一种装置,包括:
主机处理器,所述主机处理器耦接到外围处理器;以及
包括一个或多个指令的非暂态计算机可读介质,所述一个或多个指令在由所述主机处理器执行时致使所述主机处理器:
经由共享存储器内的内核空间通信栈管理一个或多个数据管道事务;
在所述共享存储器内映射联合共享存储器空间,所述联合共享存储器空间能够在用户空间中经由存储器映射的输入/输出(I/O)访问;以及
经由直通应用程序访问所述联合共享存储器空间。
11.根据权利要求10所述的装置,其中所述主机处理器包括应用程序处理器,并且所述直通应用程序包括流式音频应用程序。
12.根据权利要求10所述的装置,其中所述一个或多个数据管道事务经由处理器间通信(IPC)驱动程序的传输环(TR)来管理。
13.根据权利要求12所述的装置,其中所述共享存储器内的所述联合共享存储器空间是从与所述IPC驱动程序相关联的存储器空间保留的。
14.根据权利要求12所述的装置,其中所述共享存储器内的所述联合共享存储器空间是从未分配的存储器分配的。
15.一种装置,包括:
外围处理器,所述外围处理器耦接到主机处理器;以及
包括一个或多个指令的非暂态计算机可读介质,所述一个或多个指令在由所述外围处理器执行时致使所述外围处理器:
接收标识共享存储器内的联合共享存储器空间的存储器映射消息;
经由直通应用程序访问所述联合共享存储器空间;以及
传输非协调控制消息以发信号通知与所述联合共享存储器空间相关联的事件。
16.根据权利要求15所述的装置,其中所述外围处理器包括媒体处理器,并且所述直通应用程序包括流式音频应用程序,所述流式音频应用程序使用存储器映射的输入/输出(I/O)来访问所述联合共享存储器空间。
17.根据权利要求15所述的装置,其中所述非协调控制消息包括不对应于传输描述符(TD)的完成描述符(CD)。
18.根据权利要求15所述的装置,其中所述联合共享存储器空间包括用户空间内的圆形缓冲器。
19.根据权利要求18所述的装置,其中所述非协调控制消息经由内核空间通信栈传输。
20.根据权利要求19所述的装置,其中与所述联合共享存储器空间相关联的所述事件包括所述圆形缓冲器的折返。
CN201980055778.3A 2018-08-24 2019-08-02 用于控制联合共享的存储器映射区域的方法和装置 Active CN112639741B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/112,480 2018-08-24
US16/112,480 US10846224B2 (en) 2018-08-24 2018-08-24 Methods and apparatus for control of a jointly shared memory-mapped region
PCT/US2019/045000 WO2020040964A1 (en) 2018-08-24 2019-08-02 Methods and apparatus for control of a jointly shared memory-mapped region

Publications (2)

Publication Number Publication Date
CN112639741A true CN112639741A (zh) 2021-04-09
CN112639741B CN112639741B (zh) 2022-06-03

Family

ID=68281911

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980055778.3A Active CN112639741B (zh) 2018-08-24 2019-08-02 用于控制联合共享的存储器映射区域的方法和装置

Country Status (4)

Country Link
US (1) US10846224B2 (zh)
EP (1) EP3821343A1 (zh)
CN (1) CN112639741B (zh)
WO (1) WO2020040964A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114564429A (zh) * 2022-02-11 2022-05-31 北京智芯微电子科技有限公司 轻量级智能计算紧耦合结构及其数据处理方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US11477123B2 (en) 2019-09-26 2022-10-18 Apple Inc. Methods and apparatus for low latency operation in user space networking
US11249805B2 (en) * 2020-05-26 2022-02-15 Pensando Systems, Inc. Methods and systems for hardware-based memory resource allocation
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
US11586564B2 (en) 2020-11-25 2023-02-21 Samsung Electronics Co., Ltd Head of line entry processing in a buffer memory device
US11762587B2 (en) 2021-05-05 2023-09-19 Samsung Electronics Co., Ltd Method and memory device for atomic processing of fused commands
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
CN115964229B (zh) * 2023-03-16 2023-06-30 北京华环电子股份有限公司 多处理器设备的协同工作方法、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311894A (zh) * 2007-03-30 2008-11-26 英特尔公司 多处理器/多内核消息传递机中的推测预取方法和装置
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
US20160103480A1 (en) * 2014-10-08 2016-04-14 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
US20170147282A1 (en) * 2015-11-24 2017-05-25 Samsung Electronics Co., Ltd. Host cpu-assisted audio processing method and computing system performing the same
US20170286322A1 (en) * 2016-03-31 2017-10-05 Apple Inc. Memory access protection apparatus and methods

Family Cites Families (240)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4805137A (en) 1987-01-08 1989-02-14 United Technologies Corporation Bus controller command block processing system
US4949299A (en) 1987-12-04 1990-08-14 Allen-Bradley Company, Inc. Industrial control communication network and method
JPH02306082A (ja) 1989-05-19 1990-12-19 Nec Corp 冷蔵庫
JPH03169996A (ja) 1989-11-27 1991-07-23 Matsushita Electric Works Ltd 開閉壁の圧接装置
WO1993004429A2 (en) 1991-08-13 1993-03-04 Board Of Regents Of The University Of Washington Method of generating multidimensional addresses in an imaging and graphics processing system
JP2675961B2 (ja) 1992-05-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 実記憶のページをロックするための方法
US5914953A (en) 1992-12-17 1999-06-22 Tandem Computers, Inc. Network message routing using routing table information and supplemental enable information for deadlock prevention
US5485578A (en) 1993-03-08 1996-01-16 Apple Computer, Inc. Topology discovery in a multiple-ring network
US5687316A (en) 1994-07-29 1997-11-11 International Business Machines Corporation Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data
US6334219B1 (en) 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
US5943507A (en) 1994-12-22 1999-08-24 Texas Instruments Incorporated Interrupt routing circuits, systems and methods
JP3829994B2 (ja) 1995-01-06 2006-10-04 富士通株式会社 ファイル装置の開発装置及び開発システム
US5659542A (en) 1995-03-03 1997-08-19 Intecom, Inc. System and method for signalling and call processing for private and hybrid communications systems including multimedia systems
US5790770A (en) 1995-07-19 1998-08-04 Fujitsu Network Communications, Inc. Method and apparatus for reducing information loss in a communications network
DE69632144T2 (de) 1995-11-16 2004-11-25 Loran Network Systems, L.L.C., Wilmington Verfahren zur bestimmung der topologie eines netzwerkes von objekten
US6032179A (en) 1996-08-14 2000-02-29 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Computer system with a network interface which multiplexes a set of registers among several transmit and receive queues
US5903564A (en) 1997-08-28 1999-05-11 Ascend Communications, Inc. Efficient multicast mapping in a network switch
JPH11224455A (ja) 1998-02-05 1999-08-17 Nec Corp ロック装置
US7100020B1 (en) 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6629152B2 (en) * 1998-06-29 2003-09-30 International Business Machines Corporation Message passing using shared memory of a computer
GB2339653B (en) 1998-07-14 2003-06-04 Ibm Multiple synchronous data stream format for an optical data link
US6260152B1 (en) 1998-07-30 2001-07-10 Siemens Information And Communication Networks, Inc. Method and apparatus for synchronizing data transfers in a logic circuit having plural clock domains
US6359863B1 (en) 1998-08-12 2002-03-19 The Regents Of The University Of California Rate allocation system and method for ATM switched networks
US6216178B1 (en) 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6485081B1 (en) 1999-03-24 2002-11-26 Donnelly Corporation Safety system for a closed compartment of a vehicle
CA2299022A1 (en) 1999-04-30 2000-10-30 Nortel Networks Corporation Method and apparatus for bandwidth management of aggregate data flows
US6523073B1 (en) 1999-08-23 2003-02-18 Palm Computing, Inc. Handheld computer system and method to detect and identify a peripheral device
US6553446B1 (en) 1999-09-29 2003-04-22 Silicon Graphics Inc. Modular input/output controller capable of routing packets over busses operating at different speeds
US6970992B2 (en) 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US7152231B1 (en) 1999-11-01 2006-12-19 Harris-Exigent, Inc. High speed interprocess communication
US7509391B1 (en) 1999-11-23 2009-03-24 Texas Instruments Incorporated Unified memory management system for multi processor heterogeneous architecture
US7117273B1 (en) 2000-01-25 2006-10-03 Cisco Technology, Inc. Methods and apparatus for maintaining a map of node relationships for a network
US6931643B2 (en) * 2000-04-03 2005-08-16 Texas Instruments Incorporated Interrupt throttling for inter-processor communications
US6892298B2 (en) 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
EP1182551B1 (en) 2000-08-21 2017-04-05 Texas Instruments France Address space priority arbitration
WO2002032051A2 (en) 2000-10-12 2002-04-18 Signafor, Inc. Advanced switching mechanism for providing high-speed communications with high quality of service
US6625709B2 (en) 2000-10-30 2003-09-23 Microsoft Corporation Fair share dynamic resource allocation scheme with a safety buffer
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6990594B2 (en) 2001-05-02 2006-01-24 Portalplayer, Inc. Dynamic power management of devices in computer system by selecting clock generator output based on a current state and programmable policies
EP1386103B1 (en) 2001-05-08 2005-08-03 Alberto Arena Proportional valve with shape memory alloy (sma) actuator
US20020195177A1 (en) 2001-06-21 2002-12-26 The Aerospace Corporation Conductive shape memory metal deployment latch hinge deployment method
US7062761B2 (en) 2001-07-10 2006-06-13 Micron Technology, Inc. Dynamic arrays and overlays with bounds policies
US6948094B2 (en) 2001-09-28 2005-09-20 Intel Corporation Method of correcting a machine check error
US7015941B2 (en) 2001-10-12 2006-03-21 Malloy Desormeaux Stephen G Hybrid cameras that download electronic images in selected geometric formats and methods
DE10162498A1 (de) 2001-12-19 2003-07-03 Bsh Bosch Siemens Hausgeraete Mehrwegeventil und Kältemaschine mit Mehrwegeventil
US8352624B2 (en) 2002-04-18 2013-01-08 Citrix Systems, Inc. System for and method of streaming data to a computer in a network
US7254562B2 (en) 2002-07-11 2007-08-07 Hewlett-Packard Development Company, L.P. Rule-based packet selection, storage, and access method and system
US7515612B1 (en) 2002-07-19 2009-04-07 Qlogic, Corporation Method and system for processing network data packets
DE10233601A1 (de) 2002-07-24 2004-02-19 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Ventil mit kompaktem Betätigungsmechanismus
JP3983138B2 (ja) 2002-08-29 2007-09-26 富士通株式会社 障害情報収集プログラムおよび障害情報収集装置
US6815873B2 (en) 2002-10-19 2004-11-09 General Motors Corporation Releasable fastener system
US6973701B2 (en) 2002-10-19 2005-12-13 General Motors Corporation Releasable fastening system based on ionic polymer metal composites and method of use
US7032282B2 (en) 2002-10-19 2006-04-25 General Motors Corporation Releasable fastener system
US7013536B2 (en) 2002-10-19 2006-03-21 General Motors Corporation Releasable fastener systems and processes
US8245055B2 (en) 2002-12-31 2012-08-14 Intel Corporation Method for firmware control invocation from power management
US7411973B2 (en) 2003-03-11 2008-08-12 Broadcom Corporation System and method for interfacing with a management system
US7733915B2 (en) 2003-05-01 2010-06-08 Genesis Microchip Inc. Minimizing buffer requirements in a digital video system
US8068485B2 (en) 2003-05-01 2011-11-29 Genesis Microchip Inc. Multimedia interface
US7620062B2 (en) 2003-05-01 2009-11-17 Genesis Microchips Inc. Method of real time optimizing multimedia packet transmission rate
US8204076B2 (en) 2003-05-01 2012-06-19 Genesis Microchip Inc. Compact packet based multimedia interface
US7397774B1 (en) 2003-05-23 2008-07-08 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Downlink data multiplexer
EP1661351A2 (en) 2003-08-13 2006-05-31 Qualcomm, Incorporated A signal interface for higher data rates
US6843465B1 (en) 2003-08-14 2005-01-18 Loren W. Scott Memory wire actuated control valve
WO2005026488A1 (ja) 2003-09-08 2005-03-24 Sony Corporation 制御装置および制御方法、記録媒体、プログラム、並びに建造物
DE10341328B4 (de) 2003-09-08 2005-09-01 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und zugehöriges Verfahren zum Insassenschutz in einem Fahrzeug
US7239581B2 (en) 2004-08-24 2007-07-03 Symantec Operating Corporation Systems and methods for synchronizing the internal clocks of a plurality of processor modules
US7127600B2 (en) 2003-09-30 2006-10-24 Intel Corporation Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting
JP2005110112A (ja) 2003-10-01 2005-04-21 Nec Corp 通信システムにおける無線通信装置の認証方法及び無線通信装置及び基地局及び認証装置。
US7181610B2 (en) 2003-10-07 2007-02-20 Intel Corporation Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension
US20050108385A1 (en) 2003-10-28 2005-05-19 Gabriel Wechter Method and system for managing a discovery-related process in a network
US7149890B2 (en) 2003-11-21 2006-12-12 Intel Corporation Initializing system memory
US7233164B2 (en) 2003-12-17 2007-06-19 Rambus Inc. Offset cancellation in a multi-level signaling system
US7617499B2 (en) 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US20050149711A1 (en) 2003-12-30 2005-07-07 Zimmer Vincent J. Method and system for firmware-based run time exception filtering
DE102004004708B3 (de) 2004-01-30 2005-04-21 Karl Dungs Gmbh & Co. Kg Magnetventil
US20050198777A1 (en) 2004-03-09 2005-09-15 Mabe James H. Hinge apparatus with two-way controllable shape memory alloy (SMA) hinge pin actuator and methods of making two-way SMA parts
US10200504B2 (en) 2007-06-12 2019-02-05 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US7686120B2 (en) 2004-06-09 2010-03-30 Gm Global Technology Operations, Inc. Hood lift mechanisms utilizing active materials and methods of use
JP2006127460A (ja) 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
US7249238B2 (en) 2004-06-15 2007-07-24 International Business Machines Corporation Memory tracking with preservation of alignment semantics
CN101006433B (zh) * 2004-08-25 2012-01-11 日本电气株式会社 信息通信装置和程序执行环境控制方法
US9080894B2 (en) 2004-10-20 2015-07-14 Electro Industries/Gauge Tech Intelligent electronic device for receiving and sending data at high speeds over a network
US7730326B2 (en) 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
NZ556087A (en) 2004-12-02 2010-01-29 Breezway Australia Pty Ltd An automated window system with an overcentre drive mechanism
US8214707B2 (en) 2007-06-26 2012-07-03 Aspera, Inc. Method and system for reliable data transfer
US7398382B2 (en) 2004-12-29 2008-07-08 Intel Corporation Method and apparatus to enhance platform boot efficiency
US7332688B2 (en) 2005-02-19 2008-02-19 Gm Global Technology Operations, Inc. Active material based lockout mechanisms
US7284786B2 (en) 2005-02-19 2007-10-23 Gm Global Technology Operations, Inc. Panels having active material based fold lines
US7364189B2 (en) 2005-04-13 2008-04-29 General Motors Corporation Volume-filling mechanical structures with means for deploying same in a bolster system
US8788822B1 (en) 2005-06-10 2014-07-22 Blue Coat Systems, Inc. Enhanced QoS solution for thin client or remote access sessions
US7802256B2 (en) 2005-06-27 2010-09-21 Microsoft Corporation Class scheduler for increasing the probability of processor access by time-sensitive processes
US7376782B2 (en) 2005-06-29 2008-05-20 Intel Corporation Index/data register pair for indirect register access
US20070043901A1 (en) 2005-08-22 2007-02-22 Mediatek Inc. Optical disc recording system with shared non-volatile memory design
US7607717B2 (en) 2005-09-22 2009-10-27 Gm Global Technology Operations, Inc. Reversibly deployable spoiler
US7643753B2 (en) 2005-09-29 2010-01-05 Broadlight Ltd. Enhanced passive optical network (PON) processor
US7814166B2 (en) 2006-01-27 2010-10-12 Sony Computer Entertainment Inc. Methods and apparatus for virtualizing an address space
US8116312B2 (en) 2006-02-08 2012-02-14 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
JP2007253675A (ja) 2006-03-22 2007-10-04 Toyoda Gosei Co Ltd ロック装置及びグラブボックス
US8099548B2 (en) 2006-03-23 2012-01-17 Microsoft Corporation Power efficient media playback on general purpose portable devices
US20070226375A1 (en) 2006-03-23 2007-09-27 Chu Hsiao-Keng J Plug-in architecture for a network stack in an operating system
JP4609381B2 (ja) 2006-06-14 2011-01-12 株式会社デンソー 異常監視用プログラム、記録媒体及び電子装置
US7650914B2 (en) 2006-06-22 2010-01-26 Autosplice, Inc. Apparatus and methods for filament crimping and manufacturing
US8272048B2 (en) 2006-08-04 2012-09-18 Apple Inc. Restriction of program process capabilities
US20080046689A1 (en) 2006-08-21 2008-02-21 Tien-Fu Chen Method and apparatus for cooperative multithreading
US20090265723A1 (en) 2006-08-31 2009-10-22 Hisayasu Mochizuki Electronic device and control method of the same
US7685476B2 (en) 2006-09-12 2010-03-23 International Business Machines Corporation Early notification of error via software interrupt and shared memory write
US7802116B2 (en) 2006-09-27 2010-09-21 Intel Corporation Subsystem power management
US7770959B2 (en) 2006-10-30 2010-08-10 Gm Global Technology Operations, Inc. Door actuation systems using active materials
US7873964B2 (en) * 2006-10-30 2011-01-18 Liquid Computing Corporation Kernel functions for inter-processor communications in high performance multi-processor systems
US7971393B2 (en) 2006-10-30 2011-07-05 GM Global Technology Operations LLC Door actuation systems
US7500704B2 (en) 2006-11-01 2009-03-10 Gm Global Technology Operations, Inc. Compartment access system with active material component and method for controlling access to an interior compartment
WO2008070138A2 (en) 2006-12-05 2008-06-12 Rambus Inc. Methods and circuits for asymmetric distribution of channel equalization between transceiver devices
US7681012B2 (en) 2007-01-30 2010-03-16 Texas Instruments Incorporated Method, system and device for handling a memory management fault in a multiple processor device
US8390687B2 (en) 2007-03-19 2013-03-05 Ati Technologies Ulc Automated compliance testing for video devices
US7761701B2 (en) 2007-03-26 2010-07-20 Intel Corporation Component firmware integration in distributed systems
US9041241B2 (en) 2007-05-07 2015-05-26 Analogix Semiconductor, Inc. Systems and methods for powering a charging circuit of a communications interface
US8063504B2 (en) 2007-05-07 2011-11-22 Analogix Semiconductor, Inc. Systems and methods for powering circuits for a communications interface
US7941682B2 (en) 2007-05-09 2011-05-10 Gainspan, Inc. Optimum power management of system on chip based on tiered states of operation
US20080301148A1 (en) 2007-06-01 2008-12-04 Microsoft Corporation Methods and apparatus relating to server/client sql environments
KR20090008045A (ko) 2007-07-16 2009-01-21 삼성전자주식회사 디스플레이장치, 호스트 장치 및 그 제어방법
US7631122B1 (en) * 2007-08-30 2009-12-08 Nvidia Corporation System and method for fast hardware atomic queue allocation
US7725663B2 (en) 2007-10-31 2010-05-25 Agere Systems Inc. Memory protection system and method
US20090138650A1 (en) 2007-11-26 2009-05-28 Yen-Cheng Lin Method and apparatus for managing firmware of an optical storage apparatus
US20090172674A1 (en) 2007-12-28 2009-07-02 International Business Machines Corporation Managing the computer collection of information in an information technology environment
EP2225805A4 (en) 2007-12-28 2011-12-28 Autosplice Inc LOW COST CONNECTOR APPARATUS AND METHODS OF USE IN HIGH-SPEED DATA APPLICATIONS
US20090177847A1 (en) 2008-01-09 2009-07-09 International Business Machines Corporation System and method for handling overflow in hardware transactional memory with locks
US20090240874A1 (en) 2008-02-29 2009-09-24 Fong Pong Framework for user-level packet processing
US7853731B1 (en) 2008-03-18 2010-12-14 Integrated Device Technology, Inc. System and method for embedded displayport link training
US8907794B2 (en) 2008-05-30 2014-12-09 Texas Instruments Incorporated Cryptographic lock, method of operation thereof and secure container employing the same
US20100005014A1 (en) 2008-06-26 2010-01-07 Barclays Capital Inc. System and method for providing cost transparency to units of an organization
US7809875B2 (en) * 2008-06-30 2010-10-05 Wind River Systems, Inc. Method and system for secure communication between processor partitions
US20100017655A1 (en) 2008-07-16 2010-01-21 International Business Machines Corporation Error Recovery During Execution Of An Application On A Parallel Computer
WO2010019626A1 (en) 2008-08-14 2010-02-18 Autosplice Inc. Multi-stable actuation apparatus and methods for making and using the same
US7899941B2 (en) 2008-09-30 2011-03-01 Apple Inc. Displayport I2C speed control
US7801161B2 (en) 2008-10-20 2010-09-21 Broadlight, Ltd. Gigabit passive optical network (GPON) residential gateway
CN101447925A (zh) 2008-12-17 2009-06-03 中兴通讯股份有限公司 一种发送多路数据包的方法及系统
US8255725B2 (en) 2009-04-28 2012-08-28 Kabushiki Kaisha Toshiba Information processing apparatus and power-saving control method
US9547535B1 (en) 2009-04-30 2017-01-17 Nvidia Corporation Method and system for providing shared memory access to graphics processing unit processes
US8468285B2 (en) 2009-05-18 2013-06-18 Stmicroelectronics, Inc. Operation of video source and sink with toggled hot plug detection
JP4986247B2 (ja) 2009-06-02 2012-07-25 株式会社ユビキタス プログラム、制御方法、並びに制御装置
US8611406B2 (en) 2009-06-30 2013-12-17 Lsi Corporation System optimization using soft receiver masking technique
JP5374268B2 (ja) 2009-07-28 2013-12-25 ラピスセミコンダクタ株式会社 情報処理装置
KR20110013867A (ko) 2009-08-04 2011-02-10 삼성전자주식회사 메모리 링크 아키텍쳐에서 플래시 레스 부팅 기능을 갖는 멀티 프로세서 시스템
US8218940B2 (en) 2009-08-28 2012-07-10 Dell Products, Lp System and method for managing multiple independent graphics sources in an information handling system
US8799537B1 (en) 2009-09-25 2014-08-05 Analogix Semiconductor, Inc. Transfer of uncompressed multimedia contents and data communications
US8402261B2 (en) 2009-10-02 2013-03-19 Ca, Inc. System and method providing a pluggable architecture for task management on computers
US8719543B2 (en) 2009-12-29 2014-05-06 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US9081501B2 (en) 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US20110246742A1 (en) 2010-04-01 2011-10-06 Kogen Clark C Memory pooling in segmented memory architecture
US8582028B2 (en) 2010-04-06 2013-11-12 Synaptics Incorporated Multi-monitor control
US9781477B2 (en) 2010-05-05 2017-10-03 Cavium, Inc. System and method for low-latency multimedia streaming
KR101320075B1 (ko) 2010-06-18 2013-10-18 엘지디스플레이 주식회사 iDP 인터페이스 기반의 픽셀 클럭 복원 방법과 이를 이용한 표시장치
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8635385B2 (en) 2010-07-16 2014-01-21 Advanced Micro Devices, Inc. Mechanism to handle peripheral page faults
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US8954697B2 (en) 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
US8635412B1 (en) 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US8595414B2 (en) 2010-09-30 2013-11-26 Apple Inc. Selectively combining commands for a system having non-volatile memory
US9098438B2 (en) 2010-09-30 2015-08-04 Texas Instruments Incorporated Synchronized voltage scaling and device calibration
US8904190B2 (en) 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
JP5597104B2 (ja) 2010-11-16 2014-10-01 キヤノン株式会社 データ転送装置及びその制御方法
US9027903B2 (en) 2010-12-15 2015-05-12 Autosplice, Inc. Power-efficient actuator assemblies and methods of manufacture
US8851443B2 (en) 2010-12-15 2014-10-07 Autosplice, Inc. Memory alloy-actuated apparatus and methods for making and using the same
US8819386B1 (en) 2011-01-25 2014-08-26 Emc Corporation Memory efficient use of dynamic data structures used to manage sparsely accessed data
US9342381B2 (en) 2011-02-03 2016-05-17 Symantec Corporation Method and system for establishing a DLP-compliant environment
UA109312C2 (uk) 2011-03-04 2015-08-10 Імпульсно-кодова модуляція з квантуванням при кодуванні відеоінформації
US8504780B2 (en) * 2011-04-08 2013-08-06 Hitachi, Ltd. Computer, computer system, and data communication method
WO2012153200A1 (en) 2011-05-10 2012-11-15 International Business Machines Corporation Process grouping for improved cache and memory affinity
US8831161B2 (en) 2011-08-31 2014-09-09 Apple Inc. Methods and apparatus for low power audio visual interface interoperability
US20130057567A1 (en) 2011-09-07 2013-03-07 Michael Frank Color Space Conversion for Mirror Mode
US8886910B2 (en) 2011-09-12 2014-11-11 Microsoft Corporation Storage device drivers and cluster participation
US8848809B2 (en) 2011-10-14 2014-09-30 Apple, Inc. Methods and apparatus for low power audio visual interface calibration
US20130091772A1 (en) 2011-10-14 2013-04-18 Justin Berger Ice dispensing apparatus with a shape memory alloy actuator
CN104040871B (zh) 2011-10-26 2016-11-16 奥图斯普公司 记忆合金致动设备及其制造及使用方法
US9152580B1 (en) 2011-10-27 2015-10-06 Marvell International Ltd. Method and apparatus for transferring data between a host and an embedded device
US8719464B2 (en) 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
US10368108B2 (en) 2011-12-21 2019-07-30 Ati Technologies Ulc Downstream video composition
CN103377061A (zh) 2012-04-27 2013-10-30 鸿富锦精密工业(深圳)有限公司 固件更新管理系统及方法
JP5962210B2 (ja) 2012-05-25 2016-08-03 富士通株式会社 マルチプロセッサシステム、及びプロセッサ間通信方法
EP2856692A4 (en) 2012-05-31 2016-01-06 Intel Corp SYNCHRONIZATION OF DATA INTERFACE
US9201693B2 (en) 2012-09-04 2015-12-01 Microsoft Technology Licensing, Llc Quota-based resource management
US9978156B2 (en) 2012-10-03 2018-05-22 Avago Technologies General Ip (Singapore) Pte. Ltd. High-throughput image and video compression
US8876062B1 (en) 2012-10-31 2014-11-04 Space Systems/Loral, Llc Shape memory alloy pre-loaded deployment hinge
US9298642B2 (en) 2012-11-01 2016-03-29 Mellanox Technologies Ltd. Sharing address translation between CPU and peripheral devices
CN103853620B (zh) * 2012-11-30 2017-06-09 华为技术有限公司 一种众核处理器进程间相互通信的方法、装置及系统
US9063891B2 (en) 2012-12-19 2015-06-23 Advanced Micro Devices, Inc. Secure computer system for preventing access requests to portions of system memory by peripheral devices and/or processor cores
JP6040767B2 (ja) 2012-12-28 2016-12-07 富士通株式会社 配信システム、配信方法、及びプログラム
US9514478B2 (en) * 2013-01-23 2016-12-06 Facebook, Inc. Conversion tracking for installation of applications on mobile devices
US9363836B2 (en) 2013-04-01 2016-06-07 Silver Spring Networks, Inc. Secure management of radio transmissions in an endpoint device of a network
US10572150B2 (en) 2013-04-30 2020-02-25 Hewlett Packard Enterprise Development Lp Memory network with memory nodes controlling memory accesses in the memory network
US9571402B2 (en) 2013-05-03 2017-02-14 Netspeed Systems Congestion control and QoS in NoC by regulating the injection traffic
JP6194651B2 (ja) 2013-06-17 2017-09-13 富士ゼロックス株式会社 情報処理装置
US9495544B2 (en) 2013-06-27 2016-11-15 Visa International Service Association Secure data transmission and verification with untrusted computing devices
US9100631B2 (en) 2013-08-05 2015-08-04 Cable Television Laboratories, Inc. Dynamic picture quality control
US9170957B2 (en) 2013-08-29 2015-10-27 Qualcomm Incorporated Distributed dynamic memory management unit (MMU)-based secure inter-processor communication
US9223505B2 (en) * 2013-09-18 2015-12-29 Globalfoundries Inc. Administering inter-core communication via shared memory
EP2868853B1 (en) 2013-10-31 2018-12-26 Electrolux Appliances Aktiebolag Household appliance comprising an actuation system
US10459674B2 (en) 2013-12-10 2019-10-29 Apple Inc. Apparatus and methods for packing and transporting raw data
US9892084B2 (en) 2013-12-10 2018-02-13 Apple Inc. Methods and apparatus for virtual channel allocation via a high speed bus interface
US20150212806A1 (en) 2014-01-29 2015-07-30 Transcend Information, Inc. Initialization method and initializaion system for storage device
US9769756B1 (en) 2014-03-26 2017-09-19 Amazon Technologies, Inc. Wake-up quotas and statistics generation
US9507726B2 (en) 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
EP3149881B1 (en) 2014-05-28 2019-07-10 Telefonaktiebolaget LM Ericsson (publ) Geographically advantageous cloud caching
AU2014203218B2 (en) * 2014-06-13 2016-08-25 Canon Kabushiki Kaisha Memory configuration for inter-processor communication in an MPSoC
US9460019B2 (en) 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
US9632569B2 (en) 2014-08-05 2017-04-25 Qualcomm Incorporated Directed event signaling for multiprocessor systems
US9667754B2 (en) 2014-08-11 2017-05-30 Oracle International Corporation Data structure and associated management routines for TCP control block (TCB) table in network stacks
US9913305B2 (en) 2014-08-11 2018-03-06 Intel IP Corporation Systems, methods, and devices for congestion control on a mobile network
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
EP3013008B1 (en) 2014-10-23 2019-02-06 Alcatel Lucent Transmitting data traffic in a communication network
US10085224B2 (en) 2014-11-19 2018-09-25 Apple Inc. Methods and apparatus for synchronization of media playback within a wireless network
US9544069B2 (en) 2014-11-21 2017-01-10 Apple Inc. Methods and apparatus for link training, initialization and management via a high speed bus interface
US9910475B2 (en) 2014-12-23 2018-03-06 Intel Corporation Processor core power event tracing
US10079779B2 (en) 2015-01-30 2018-09-18 Nicira, Inc. Implementing logical router uplinks
US9842036B2 (en) 2015-02-04 2017-12-12 Apple Inc. Methods and apparatus for controlled recovery of error information between independently operable processors
US10503405B2 (en) 2015-02-10 2019-12-10 Red Hat Israel, Ltd. Zero copy memory reclaim using copy-on-write
US9528311B1 (en) 2015-04-16 2016-12-27 Exelis, Inc. Thermal release of a self-opening cover
US9772794B2 (en) 2015-06-05 2017-09-26 University Of Florida Research Foundation, Incorporated Method and apparatus for big data cloud storage resource management
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US9753486B2 (en) 2015-06-15 2017-09-05 University Of Utah Research Foundation Clock gating with an asynchronous wrapper cell
US20170003997A1 (en) 2015-07-01 2017-01-05 Dell Products, Lp Compute Cluster Load Balancing Based on Memory Page Contents
JP6589417B2 (ja) 2015-07-03 2019-10-16 富士通株式会社 起動制御プログラム、起動制御方法及び起動制御装置
WO2017028309A1 (zh) 2015-08-20 2017-02-23 华为技术有限公司 文件数据访问方法和计算机系统
US10725963B2 (en) * 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
US10309726B2 (en) 2015-09-29 2019-06-04 The Boeing Company Hinged baffle for autoclave that deploys at a target temperature during a run cycle
US9710045B2 (en) 2015-10-14 2017-07-18 Quanta Computer Inc. Managing network wake-up commands
US10085214B2 (en) * 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10558580B2 (en) * 2016-02-29 2020-02-11 Apple Inc. Methods and apparatus for loading firmware on demand
US10331600B1 (en) 2016-03-31 2019-06-25 EMC IP Holding Company LLC Virtual I/O queuing
US10067870B2 (en) 2016-04-01 2018-09-04 Intel Corporation Apparatus and method for low-overhead synchronous page table updates
CN105978997A (zh) * 2016-06-24 2016-09-28 北京百度网讯科技有限公司 数据传输方法和系统
US10318450B2 (en) * 2016-07-01 2019-06-11 Intel Corporation Efficient context based input/output (I/O) classification
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10560373B2 (en) 2017-04-06 2020-02-11 Gvbb Holdings S.A.R.L. System and method for timely and uniform distribution for real-time packet transmission
US10289555B1 (en) 2017-04-14 2019-05-14 EMC IP Holding Company LLC Memory read-ahead using learned memory access patterns
US10534601B1 (en) 2017-06-30 2020-01-14 Juniper Networks, Inc. In-service software upgrade of virtual router with reduced packet loss
US11153289B2 (en) 2017-07-28 2021-10-19 Alibaba Group Holding Limited Secure communication acceleration using a System-on-Chip (SoC) architecture
US10592290B2 (en) 2018-01-10 2020-03-17 International Business Machines Corporation Accelerating and maintaining large-scale cloud deployment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311894A (zh) * 2007-03-30 2008-11-26 英特尔公司 多处理器/多内核消息传递机中的推测预取方法和装置
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
US20160103480A1 (en) * 2014-10-08 2016-04-14 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
US20180088660A1 (en) * 2014-10-08 2018-03-29 Apple Inc. Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors
US20170147282A1 (en) * 2015-11-24 2017-05-25 Samsung Electronics Co., Ltd. Host cpu-assisted audio processing method and computing system performing the same
US20170286322A1 (en) * 2016-03-31 2017-10-05 Apple Inc. Memory access protection apparatus and methods

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114564429A (zh) * 2022-02-11 2022-05-31 北京智芯微电子科技有限公司 轻量级智能计算紧耦合结构及其数据处理方法

Also Published As

Publication number Publication date
WO2020040964A1 (en) 2020-02-27
US10846224B2 (en) 2020-11-24
CN112639741B (zh) 2022-06-03
US20200065244A1 (en) 2020-02-27
EP3821343A1 (en) 2021-05-19

Similar Documents

Publication Publication Date Title
CN112639741B (zh) 用于控制联合共享的存储器映射区域的方法和装置
US11159651B2 (en) Methods and apparatus for memory allocation and reallocation in networking stack infrastructures
US11748278B2 (en) Multi-protocol support for transactions
US11500810B2 (en) Techniques for command validation for access to a storage device by a remote client
US11146508B2 (en) Data processing system
US11093284B2 (en) Data processing system
US11379278B2 (en) Methods and apparatus for correcting out-of-order data transactions between processors
US11829303B2 (en) Methods and apparatus for device driver operation in non-kernel space
US7516456B2 (en) Asymmetric heterogeneous multi-threaded operating system
US11606302B2 (en) Methods and apparatus for flow-based batching and processing
US11347567B2 (en) Methods and apparatus for multiplexing data flows via a single data structure
US9405725B2 (en) Writing message to controller memory space
US20210281618A1 (en) System, apparatus, and method for streaming input/output data
US20200210224A1 (en) Methods and apparatus for verifying completion of groups of data transactions between processors
US20220210097A1 (en) Data access technologies
US11176064B2 (en) Methods and apparatus for reduced overhead data transfer with a shared ring buffer
EP4134804A1 (en) Data access technologies

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant