CN115777098A - 通过循环fifo分散和聚集流式传输数据 - Google Patents
通过循环fifo分散和聚集流式传输数据 Download PDFInfo
- Publication number
- CN115777098A CN115777098A CN202180048678.5A CN202180048678A CN115777098A CN 115777098 A CN115777098 A CN 115777098A CN 202180048678 A CN202180048678 A CN 202180048678A CN 115777098 A CN115777098 A CN 115777098A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer
- frame
- producer
- consumer
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/37—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述了用于通过循环缓冲器执行分散和聚集直接存储器存取(DMA)流式传输的系统、装置和方法。系统包括循环缓冲器、生产者DMA引擎和消费者DMA引擎。在该生产者DMA引擎将第一帧的给定数据块写入该缓冲器或跳过该给定数据块之后,该生产者DMA引擎向该消费者DMA引擎发送更新的写入指针,指示数据信用已被提交给该缓冲器并且该数据信用已准备好被消费。在该消费者DMA引擎从该缓冲器读取或跳过该第一帧的该给定数据块之后,该消费者DMA引擎向该生产者DMA引擎发送更新的读取指针,指示该数据信用已被消费并且该缓冲器中的空间已被释放以供该生产者DMA引擎重新使用。
Description
背景技术
技术领域
本文所述的实施方案涉及计算系统领域,并且更具体地涉及在多个代理之间高效地流式传输数据。
相关技术描述
直接存储器存取(DMA)是计算机系统的一项功能,其允许硬件子系统独立于主处理器(例如,中央处理器(CPU))访问系统存储器。DMA访问中传输的数据类型可因实施方案而异。在计算机系统中传输的一种常见数据类型为图像数据,但本文所述的技术不限于图像数据的传输。其他类型数据的传输也可受益于本说明书中公开的改进方法和机制。但是,出于说明目的,图像数据的传输将用于许多示例。这些示例仅是说明性的,并不排除将所述技术与其他类型的数据一起使用。
计算机系统(例如,电话、平板电脑、膝上型电脑、台式计算机)通常包括或连接到相机或其他图像传感器,以用于捕获图像数据,诸如视频图像或静态图片。此类图像传感器可生成包括一系列单独的图片或帧的图像数据的流(通常称为“图像数据流”)。每个帧可包括指定给定像素的亮度和颜色的多行像素数据。如本文所用,术语“流”被定义为将经受多种类型且大量的处理中的任一种处理的帧序列。
在监视器或其他合适的显示设备上显示图像数据流之前,可对包括在图像数据流中的数据进行处理,以便调整色值、旋转或缩放图像等。为了有利于此类处理,可将图像数据流存储在存储器中,使得专用电路块诸如显示处理器可对图像数据流的特定帧的部分进行操作。在一些情况下,显示处理器还可将经处理的图像数据流存储回存储器中以供将来使用。
在一些计算机系统中,显示处理器或用于处理图像数据的其他电路块可等到图像数据流的完整帧已存储到存储器中后,才开始读取所存储的数据,并开始图像处理操作。这种方式的等待可能导致图像数据流处理中的附加延迟,或者导致存储器利用率低。
发明内容
本发明设想了用于通过循环先进先出(FIFO)缓冲器执行分散和聚集直接存储器存取(DMA)流式传输的系统、装置和方法。在一个实施方案中,系统包括FIFO缓冲器、生产者DMA引擎和消费者DMA引擎。在该生产者DMA引擎将数据集的给定数据块(例如,图像或视频帧)写入缓冲器之后,该生产者DMA引擎向消费者DMA引擎发送更新的写入指针,指示数据信用已被提交给该缓冲器并且该数据信用已准备好被消费。在某些情况下,多个生产者DMA引擎同时将数据集的不同部分传输到缓冲器。在消费者DMA引擎从缓冲器读取或跳过数据集的给定数据块之后,该消费者DMA引擎向该生产者DMA引擎发送更新的读取指针,指示数据信用已被消费并且该缓冲器中的空间已被释放以供该生产者DMA引擎重新使用。在一些情况下,多个消费者DMA引擎同时消费来自缓冲器的数据集的各个区域。
参考以下描述和附图将另外理解这些和其他实施方案。
附图说明
通过结合附图参考以下描述,可更好地理解方法和机制的上文和另外的优点,在附图中:
图1是SOC的一个实施方案的概括框图。
图2是示出数据管理器的一个实施方案的概括框图。
图3是远程伴随DMA系统的一个实施方案的框图。
图4是生产者和消费者路由器表条目之间的逻辑连接的一个实施方案的框图。
图5是远程伴随DMA系统的另一实施方案的框图。
图6是根据一个实施方案的具有可使用的路由描述符字段的表。
图7是由多个生产者产生并由多个消费者消费的超帧的一个实施方案的图。
图8是伴随DMA系统的一个实施方案的时序图。
图9是伴随DMA系统的操作的一个实施方案的时序图。
图10是具有多个生产者和多个消费者的伴随DMA系统的一个实施方案的时序图。
图11是具有多个生产者和多个消费者的伴随DMA系统的一个实施方案的时序图。
图12是用于伴随DMA系统的多帧软件定序例程的一个实施方案的时序图。
图13是用于伴随DMA系统的多帧软件定序例程的一个实施方案的时序图。
图14是根据一个实施方案的具有生产者路由表条目的字段的表。
图15是根据一个实施方案的具有消费者路由表条目的字段的表。
图16是根据一个实施方案的具有与用于DMA引擎的伴随包装器相关联的字段的表。
图17是用于操作生产者DMA引擎的方法的一个实施方案的流程图。
图18是用于操作消费者DMA引擎的方法的一个实施方案的流程图。
图19是用于软件启动伴随DMA链的方法的一个实施方案的流程图。
图20是用于在缓冲器中前进可编程跳过量而不消费数据信用的方法的一个实施方案。
图21是用于生产者DMA引擎产生帧的方法的一个实施方案的流程图。
图22是用于消费者DMA引擎消费帧的方法的一个实施方案的流程图。
图23是系统的一个实施方案的框图。
虽然本公开中所述的实施方案可受各种修改形式和另选形式的影响,但是其具体实施方案在附图中以举例的方式示出并将在本文详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。如在整个本专利申请中所使用的那样,以允许的意义(即,意味着具有可能性)而非强制的意义(即,意味着必须)使用字词“可”。类似地,字词“包括”意味着包括但不限于。
各种单元、电路或其他部件可被描述为“被配置为”实行一个或多个任务。在此类上下文中,“被配置为”是一般意味着“具有”在操作期间实行一个或多个任务的“电路”的结构的宽泛表述。如此,即使在单元/电路/部件当前未接通时,单元/电路/部件也可被配置为执行任务。通常,形成与“被配置为”对应的结构的电路可包括硬件电路。类似地,为了描述中方便,可将各种单元/电路/部件描述为执行一个或多个任务。此类描述应当被解释为包括短语“被配置为”。表述被配置为实行一个或多个任务的单元/电路/部件明确地旨在对该单元/电路/部件不调用35U.S.C.§112(f)。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本公开中描述的实施方案的透彻理解。然而,本领域的普通技术人员应当认识到,可在没有这些具体细节的情况下实践实施方案。在一些实例中,为了便于例示且避免模糊实施方案的描述,尚未详细示出众所周知的电路、结构和技术。
现在参见图1,其示出了片上系统(SOC)100的一个实施方案的框图。SOC 100被示出为耦接到存储器135。顾名思义,SOC 100的部件可集成到单个半导体衬底上作为集成电路“芯片”。在一些实施方案中,这些部件可在系统中的两个或更多个离散芯片上实施。但是,本文中将使用SOC 100作为示例。在例示的实施方案中,SOC 100的部件包括中央处理器(CPU)复合件120、片上外围部件140A-140B(更简洁地称为“外围设备”)、存储器控制器(MC)130、视频编码器150(其自身可视为外围部件)和通信结构110。部件120、130、140A-140B和150可全部耦接到通信结构110。存储器控制器130可在使用期间耦接到存储器135,并且外围设备140B可在使用期间耦接到外部接口160。在例示的实施方案中,CPU复合件120包括一个或多个处理器(P)124和二级(L2)高速缓存122。
外围设备140A-140B可以是SOC 100中包括的任何一组附加硬件功能。例如,外围设备140A-140B可包括视频外围设备,诸如被配置为处理来自相机或其他图像传感器的图像捕获数据的图像信号处理器、被配置为在一个或多个显示设备上显示视频数据的显示控制器、图形处理器(GPU)、视频编码器/解码器、缩放器、旋转器、混合器等。外围设备可包括音频外围设备,诸如麦克风、扬声器、麦克风和扬声器的接口、音频处理器、数字信号处理器、混频器等。外围设备可包括用于SOC 100外部的各种接口160的外围接口控制器(例如,外围设备140B),该SOC包括诸如通用串行总线(USB)、包括PCI Express(PCIe)的外围部件互连(PCI)、串行端口和并行端口等接口。外围设备可包括网络外围设备,例如介质访问控制器(MAC)。可包括任何一组硬件。
在一个实施方案中,SOC 100可包括视频编码器150部件的至少一个实例。视频编码器150可以是可被配置为将输入视频帧从输入格式转换为H.264/高级视频编码(AVC)标准中所述的H.264/AVC格式的H.264视频编码器装置。在一个实施方案中,SOC 100包括CPU复合件120。该CPU复合件120可包括用作SOC 100的CPU的一个或多个CPU处理器124。系统的CPU包括执行系统主要控制软件诸如操作系统的一个或多个处理器。通常,由CPU在使用过程中执行的软件可控制系统的其他部件,以实现系统的期望的功能。处理器124还可执行其他软件,诸如应用程序。应用程序可提供用户功能并且可依赖于操作系统,以进行低级设备控制。因此,处理器124也可称为应用处理器。
该CPU复合件120还可包括其他硬件,诸如L2高速缓存122和/或系统其他部件的接口(例如,通信结构110的接口)。通常,处理器可包括被配置为执行在由处理器实施的指令集架构中定义的指令的任何电路和/或微码。响应于执行指令而由处理器操作的指令和数据通常可存储到存储器135中,尽管某些指令也可被定义为用于对外围设备进行直接处理器访问。处理器可包括在集成电路上实现的处理器内核,该集成电路具有作为片上系统的其他部件或其他程度的集成。处理器还可包括离散的微处理器、处理器内核和/或集成到多芯片模块具体实施中的微处理器、被实施为多个集成电路的处理器等等。
存储器控制器130通常可包括用于从SOC 100的其他部件接收存储器操作并访问存储器135以完成存储器操作的电路。存储器控制器130可被配置为访问任何类型的存储器135。例如,存储器135可为静态随机存取存储器(SRAM)、动态RAM(DRAM)诸如包括双倍数据速率(DDR、DDR2、DDR3等)DRAM的同步DRAM(SDRAM)。可支持DDR DRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器130可包括针对存储器操作的队列,以用于对操作进行排序(并且可能重新排序),并将操作呈现至存储器135。存储器控制器130还可包括用于存储等待写到存储器的写数据和等待返回给存储器操作来源的读数据的数据缓冲器。
通信结构110可为用于在SOC 100部件之间进行通信的任何通信互连器和协议。通信结构110可基于总线,包括共享总线配置、交叉开关配置和具有桥的分层总线。通信结构110还可基于分组,并且可为具有桥的分层、交叉开关、点到点或其他互连器。需注意,SOC100的部件的数量(以及图1中所示的那些部件的子部件的数量,诸如在CPU复合件120内)可因实施方案而异。每个部件/子部件的数量可多于或少于图1中所示的数量。
转向图2,其示出了数据管理器200的框图的实施方案。在例示的实施方案中,数据管理器200包括处理器205、直接存储器存取(DMA)引擎206和存储器207。处理器205和DMA引擎206耦接到系统总线202。处理器205可对应于执行计算操作的通用处理内核,该通用处理内核类似于图1中的处理器124。例如,处理器205可为中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他类型的设备。另选地,在另一实施方案中,处理器205可对应于图1的视频编码器150。在各种实施方案中,处理器205可实施任何合适的指令集架构(ISA)
在一个实施方案中,DMA引擎206能够将数据从源位置传输到目标位置。源位置和目标位置可为存储器位置,诸如存储器207或图1中的存储器块135。在一些实施方案中,DMA引擎206可能够执行分散-聚集式存储器传输或聚集-分散式存储器传输。分散-聚集是指存储器传输,其中源地址是变化的(例如,“分散的”),并且目标为单个地址(例如,“聚集的”)。相应地,聚集-分散则相反。处理器205可对DMA引擎206进行编程,以便一次传输一个或多个数据。
在一个实施方案中,存储器207包括媒体命令队列,处理器205从该媒体命令队列中检索媒体命令。在一些实施方案中,存储器207可被实施为随机存取存储器(RAM)并且还可包括用于处理器205的操作的程序指令。在其它实施方案中,存储器207可为先进先出(FIFO)缓冲器并且可被保留用作媒体命令队列。
在一个实施方案中,由于数据先被发送到各种媒体代理然后再被发送到显示器,因而处理器205执行管理与媒体相关的数据流(诸如要显示的帧)的操作。在其他实施方案中,处理器205管理其他类型的数据的流。在一个实施方案中,处理器205从存储器207中的媒体队列中检索第一命令,并根据该第一命令确定用于执行该命令的目标媒体代理。基于该第一命令,处理器205可将DMA引擎206设置为从另一媒体代理或从存储器(诸如存储器207)中检索帧的第一数据集。DMA引擎206将该第一数据集复制到目标媒体代理。处理器205将第一命令发送到该目标媒体代理以供执行。在该目标媒体代理执行该第一媒体命令时,处理器205从存储器207中的媒体命令队列中检索第二命令。该第二命令可对应于第二媒体代理的第二数据集,在这种情况下,处理器205将DMA引擎206设置为在第一命令继续被执行时将该第二数据集复制到该第二媒体代理。这一过程可针对任何数量的附加数据集和命令继续进行。
在一个实施方案中,DMA引擎206能够在帧伴随模式下与一个或多个其他DMA引擎(未示出)一起操作。如本文所用,“帧伴随模式”被定义为生产者和消费者彼此之间传送共享循环缓冲器的状态以便实施流控制的一种操作模式。共享循环缓冲器的状态可通过写入指针和读取指针的值,以及通过写入指针和读取指针相对于彼此的位置来捕获。在一个实施方案中,共享循环缓冲器小于在生产者和消费者之间传输的全帧。帧伴随模式支持消费者能够知晓何时产生了数据信用价值,并且帧伴随模式支持生产者能够在缓冲器中没有足够可用空间时进行背压。另外,帧伴随模式支持消费者能够以随机顺序读取数据区域,然后在不再需要与跳过的写入信用相关联的数据时将读取指针递增。这一功能实现了对warper读取DMA引擎的支持,该引擎根据可配置的网格读取图块。
需注意,图2中所示的数据管理器200的实施方案仅为示例。图2的图示经简化以突出与本公开相关的特征。各种实施方案可包括不同配置的功能块,包括附加块。
现在参见图3,其示出了远程伴随DMA系统300的一个实施方案的框图。该远程伴随DMA系统300示出了系统的连接和部件,其中生产者DMA引擎305和消费者DMA引擎340远程通信。由于生产者DMA引擎305不具有与消费者DMA引擎340的直接连接,因此该伴随DMA系统300可称为“远程”系统。需注意,伴随DMA系统300是根据一个实施方案的远程伴随DMA系统的一个示例。在其他实施方案中,可采用具有其他类型的部件、其他连接和其他合适结构的其他类型的远程伴随DMA系统。
在一个实施方案中,使用在DMA引擎305和340之间路由的结构写入请求在这两个DMA引擎之间交换指针。这些指针交换导致生产者引擎和消费者引擎之间的线的虚拟化。伴随路由器365和370负责将流控制信息路由到DMA引擎305和340。在一个实施方案中,伴随路由器365和370使用存储在路由器表条目中的信息在生产者DMA引擎和消费者DMA引擎之间路由流控制指针。伴随路由器365和370还负责处理具有多个生产者和/或多个消费者的系统中的多生产者合并和多消费者广播功能。例如,在一个实施方案中,伴随路由器将来自多个生产者DMA引擎的更新一起合并成单个更新的写入指针。在另一实施方案中,伴随路由器将来自多个消费者DMA引擎的更新一起合并成单个更新的读取指针。
在一个具体实施中,伴随路由器365包括用于生产者DMA引擎305的控制逻辑和路由条目表。类似地,伴随路由器370包括用于消费者DMA引擎340的控制逻辑和路由条目表。每个路由器中的路由表由该路由器用来与远程路由器交换指针更新。
在一个具体实施中,路由管理器375管理本地路由器365和370中的路由表的初始化和更新。如本文所用,术语“路由管理器”被定义为管理路由FIFO 380A-380N和路由器中路由的初始化的控制单元(使用软件和/或硬件的任何合适组合来实施)。系统中可存在多于一个路由管理器,并且这些路由管理器可管理该系统中任何伴随路由器的路由。路由FIFO 380A-380N表示由路由管理器375管理的任何数量的路由FIFO。如本文所用,术语“路由FIFO”被定义为指定流中的帧的串行序列的路由描述符的FIFO队列。在一些实施方案中,路由管理器375被过度供应路由FIFO 380A-380N,以防具有路由FIFO的其他子系统中的一个子系统出现断电情况。需注意,术语“路由FIFO”和“路由描述符队列”在本文中可互换使用。
在处理器(例如,图1的处理器124)上执行的软件通过将路由描述符推送到路由管理器375的适当路由FIFO中来调度帧。如本文所用,术语“路由描述符”被定义为指定如何在生产者和消费者之间路由流控制信息的字段。每个伴随DMA子系统在每个生产者DMA中具有生产者路由描述符,在每个消费者DMA中具有消费者路由描述符。每个伴随DMA子系统至少具有一个生产者路由描述符和一个消费者路由描述符,但是通常可具有任何数量的生产者路由描述符和消费者路由描述符。此外,虽然存在从伴随包装器到DMA单元的1:1映射,但是对于每个伴随路由器,可存在多个伴随包装器。
在一个实施方案中,路由管理器375从路由FIFO中弹出路由描述符,并且初始化对应路由器365和370中的路由条目。如本文所用,术语“路由条目”被定义为飞行中的流控制信息的活动状态以及路由描述符的副本。需注意,术语“路由条目”和“路由表条目”在本文中可互换使用。路由管理器375还从路由器365和370接收帧完成消息。帧完成消息用于调度下一个帧的描述符,并且用于初始化路由条目中的指针,以当生产者已移动到下一个帧上而消费者正在完成当前帧时处理帧重叠。
生产者DMA引擎305至少包括写入DMA单元310和伴随包装器315。如本文所用,“生产者DMA引擎”被定义为将数据写入存储器中的缓冲器的写入DMA通道。“生产者DMA引擎”在本文中也可简称为“生产者”。伴随包装器315包括地址包装器320和指针管理器325。地址包装器320管理到循环缓冲器330的数据写入以及针对循环缓冲器332的地址包装情况。地址包装器320生成写入请求(即,数据写入),这些写入请求被发送到结构和存储器子系统330内的循环缓冲器332,并且地址包装器320从循环缓冲器332接收对这些写入请求的响应。指针管理器325经由本地和远程指针管理生产者DMA引擎305和消费者DMA引擎320之间的流控制。
消费者DMA引擎340至少包括读取DMA单元345和伴随包装器350,该伴随包装器包括地址包装器355和指针管理器360。如本文所用,“消费者DMA引擎”被定义为从存储器中的缓冲器读取数据的读取DMA通道。“消费者DMA引擎”在本文中也可简称为“消费者”。伴随包装器350管理针对DMA通道的流控制。当写入DMA引擎310完成将数据块写入缓冲器332时,指针管理器325向伴随路由器365发送缓冲器写入指针更新。该更新通过伴随路由器370流到指针管理器360。缓冲器写入指针更新指示数据信用已被提交给缓冲器332并且准备好被消费。与数据信用对应的数据块的大小可根据实施方案而变化。在一个实施方案中,根据数据的字节数来衡量数据块的大小。在另一实施方案中,根据帧的行数来衡量数据块的大小。在另一实施方案中,根据帧的图块或块来衡量的数据块的大小。
当读取DMA单元345消费数据信用时,指针管理器360向伴随路由器370发送缓冲器读取指针更新,指示该数据信用已被消费并且缓冲器332中的空间已被释放以供DMA生产者引擎305重新使用。缓冲器读取指针更新通过伴随路由器365继续到指针管理器325。
在一个实施方案中,缓冲器332是循环缓冲器。在其他实施方案中,缓冲器330是其他类型的缓冲器。需注意,缓冲器332支持生产者和消费者对存储在缓冲器332中的数据块进行随机访问。这允许数据产生和消费的顺序是随机的。在另一方面,指针更新是顺序的,但是通常可向前跳过多个增量。在一个实施方案中,缓冲器330被视为FIFO,其中生产者将数据信用价值推送到具有递增写入指针的缓冲器中。消费者消费来自具有递增读取指针的缓冲器的数据信用价值。指针地址包含循环缓冲器的大小。指针可通过实际数据访问(读取/写入)来递增,或者指针可在信用被跳过时递增。如本文所用,术语“信用”被定义为生产者和消费者之间的流量控制的单位。根据实施方案,可根据数据的字节数、未压缩帧数据的行数、帧数据条、图块数据(诸如压缩数据)的图块行等来测量信用。用于流控制的循环缓冲器读取和写入指针以信用为单位进行调整。参数“SA-credits”以信用为单位衡量循环缓冲器中的可用空间,并且参数“DA-credits”以信用为单位衡量循环缓冲器中的可用数据。
在一个实施方案中,缓冲器写入指针指向循环缓冲器中生产者将产生数据信用价值的下一个位置。数据的产生是写入数据或在跳过信用的情况下不写入数据。在一个实施方案中,缓冲器读取指针是循环缓冲器中消费者将消费数据信用价值的下一个位置。数据的消费表示消费者已对数据进行了处理,而不管消费者是实际读取数据还是仅跳过数据。
现在转向图4,其示出了生产者和消费者路由器表条目(RTE)之间的逻辑连接的一个实施方案的框图。在一些实施方案中,可能有多个生产者向单个或多个消费者供应数据。在图4中所示的实施方案中,有三个生产者为单个消费者进行馈送。在图4的左侧示出了三个生产者DMA引擎405、410和415。每个生产者DMA引擎405、410和415分别具有对应的RTE条目420、425和430。每个生产者RTE 420、425和430分别与对应的消费者RTE 435、440和445具有逻辑连接。消费者RTE 435、440和445允许数据从对应的生产者传输回消费者DMA引擎450。应当理解,其他实施方案可在其他数量的生产者和/或消费者的RTE之间具有其他数量的逻辑连接。
现在转向图5,其示出了远程伴随DMA系统500的另一实施方案的框图。DMA系统500包括生产者DMA引擎505、伴随包装器507、结构和存储器子系统510、消费者DMA引擎515、伴随包装器517、伴随路由器520和525,以及路由管理器530A-N。每个路由管理器530A-N包括一个或多个对应的路由描述符队列(Desc.Q)535A-N。需注意,路由管理器530A-N可统称为路由管理器。根据实施方案,单个路由管理器或多个路由管理器可管理多个路由描述符队列535A-N。用连接到路由描述符队列535A的虚线以展开形式示出路由描述符队列的示例。路由描述符用生产者标识符(ID)(例如,P1、P2)、帧ID(例如,F0、F1)以及描述符是否为帧的最后一个描述符的指示来标记。应当理解,路由描述符队列535A的这个示例仅是路由描述符队列和存储在其中的描述符的一个示例。在其他实施方案中,可使用其他类型的描述符。
在一个实施方案中,路由管理器530A-530N经由多个路由描述符队列535A-535N同时支持多个帧流,其中每个流一个路由描述符队列。通过将路由描述符推送到对应的路由描述符队列中的软件来调度流的帧。当单个帧涉及多个DMA时,软件为参与该帧的每个DMA推送单独的路由描述符。在一个实施方案中,如果如由占用寄存器(未示出)所指示的,路由描述符队列中存在空间,则软件通过写入适当的寄存器来将与帧相关联的路由描述符推送到期望的路由描述符队列中。在一个实施方案中,低水印阈值寄存器存储阈值。当对应的路由描述符队列中的条目数量下降至低于阈值时,针对软件生成中断,指示路由描述符队列中存在空间。
在一个实施方案中,帧的描述符与组中具有最后一个位组的最后一个描述符分组在一起,从而向路由管理器指示在路由描述符队列中存在描述符的全帧价值。当先前帧完成时,路由管理器将路由描述符的下一个帧价值从路由描述符队列的顶部弹出,并向适当的路由器发送对应的更新消息。当路由器中的路由表条目被路由管理器初始化时,路由器从本地DMA获得更新,然后将流控制消息路由到其他路由器。当DMA引擎完成帧时,DMA引擎通知伴随包装器,该伴随包装器继而通知路由器。响应于接收到DMA引擎已完成帧的通知,路由器向路由管理器发送对应的帧完成消息。然后,路由管理器继续到下一个帧。
在一个实施方案中,DMA系统500能够适应多平面帧的传输。在该实施方案中,多平面帧的每个平面被视为具有其自己的信用和对等物的单独的伴随DMA。同样,在一个实施方案中,DMA系统500支持帧重叠。帧重叠允许当消费者DMA引擎515仍在读取当前(N)帧时,生产者DMA引擎505开始处理下一(N+1)帧。在一个实施方案中,对于每个信用,重叠帧具有相同的字节。然而,对于每个帧,重叠帧可具有不同数量的信用。换句话说,重叠帧可具有不同的帧大小。在一个实施方案中,重叠帧与相同的路由描述符队列相关联。
在另一实施方案中,DMA系统500支持单个生产者以广播方式向多个消费者进行供应。在另一实施方案中,对于超帧或多路复用情形,DMA系统500支持多个生产者向一个消费者进行供应。在一个实施方案中,多个帧生产者被水平地和垂直地级联。此外,超帧内容可因帧而异。此外,在又一实施方案中,DMA系统500支持许多生产者通过单个超帧向许多消费者进行供应。生产者可写入消费的帧内的任何大小和对准的区域。类似地,消费者可读取产生的帧内的任何大小和对准的区域。
现在转向图6,其示出了根据一个实施方案的具有可使用的路由描述符字段的表600。表600包括可包括在被推送到路由描述符队列(例如,图5的路由描述符队列535A)中的路由描述符内的路由描述符字段的示例。例如,字段605指示路由描述符条目是否与生产者相关联。在一个实施方案中,字段605是单个位,其中1指示该条目与生产者相关联,0指示该条目与消费者相关联。最后字段描述符字段610指示该描述符是否为给定帧的最后一个路由描述符。路由器ID字段615标识生产者路由器,并且DMA ID字段620标识生产者DMA引擎。相同缓冲器指示符625指示该帧是否使用与先前帧相同的缓冲器。应当理解,表600表示可在一个特定实施方案中使用的路由描述符字段。在其他实施方案中,其他路由描述符字段可被定义用于路由描述符队列条目。
现在参见图7,其示出了由多个生产者产生并由多个消费者消费的超帧700的一个实施方案的图。在一个实施方案中,超帧700由多个DMA生产者P1-P9产生和传输,并由多个DMA消费者C1-C3消费。区域与生产者和消费者之间的关系经由生产者块和消费者块与相应区域之间的箭头来指示。例如,DMA生产者P1和P2分别将区域705和710传输到DMA消费者C1-C3。此外,DMA生产者P3和P4分别将区域715和720传输到DMA消费者C1。另外,DMA生产者P5、P6、P7和P8分别将区域725、730、735和740传输到DMA消费者C1。
应当理解,图7中所示的超帧700以及生产者和消费者的布置仅指示一个特定实施方案。在其他实施方案中,超帧700可具有区域的其他配置,其他数量的生产者可生成不同的区域,并且/或者其他数量的消费者可消费不同的区域。例如,超帧内的区域的大小和形状可与图7中所示的不同,其中区域的大小、形状和数量根据实施方案而变化。
现在转向图8,其示出了伴随DMA系统的时序图800的一个实施方案。时序图800示出了具有两个生产者和一个消费者的伴随DMA系统的事件序列的一个示例。时序图800的顶部的矩形块805、810、815和820表示生产者0、生产者1、路由管理器和消费者0。对于帧0(或F0)的传输,生产者0将帧0传输到消费者0。传输过程开始于路由管理器在帧的开始处向生产者0和消费者0发送路由指针更新。然后,将具有写入指针值的流控制初始化消息从生产者0发送到消费者0,并且将具有读取指针值的流控制初始化消息从消费者0发送到生产者0。虚线825指示生产者0何时完成传输帧0,这由生产者0向消费者0和路由管理器发送帧完成消息来确认。
出于讨论的目的,假设生产者1向消费者0传输帧1。当帧1的传输开始时,消费者0仍然可消费帧0。路由管理器向生产者1发送路由指针更新,并且路由管理器向消费者0发送帧1的路由更新。生产者1向消费者0发送初始化消息,然后将帧1传输到缓冲器。当帧1的传输完成时,生产者1向消费者0发送帧完成消息。标记为830的虚线指示消费者0何时完成消费帧0并移动到帧1。消费者0向生产者1和路由管理器发送帧完成消息。然后,消费者0从路由管理器接收帧1的路由器指针更新。消费者0向生产者1发送初始化消息,然后消费者0开始消费帧1。当帧1的消费完成时,消费者0向生产者1和路由管理器发送帧完成消息。
现在参见图9,其示出了伴随DMA系统的操作的一个实施方案的时序图900。时序图900示出了具有两个生产者905和910、路由管理器915和消费者920的伴随DMA系统的事件序列。生产者905和910也分别称为生产者0和1,或者称为P0和P1。消费者920在图900中也称为消费者0或C0。帧0(或F0)从生产者0发送到消费者0。在帧0开始时,路由管理器915向生产者0和消费者0发送路由指针更新。然后,在生产者0和消费者0之间交换流控制消息,以提供更新的写入指针值和更新的读取指针值。当生产者0已完成将帧0写入缓冲器时,将具有写入指针更新的帧完成消息发送到消费者0和路由管理器915。虚线925指示缓冲器何时满。
出于讨论的目的,假设生产者1将向消费者0发送帧1。因此,在路由管理器915从生产者0接收到针对帧0的帧完成消息之后,路由管理器915向生产者1发送帧1的路由指针更新。然后,生产者1向消费者0发送帧1的流控制更新。在这个时间点,消费者0仍然正在消费来自缓冲器的帧0的数据,并且生产者1尚未从消费者0接收到更新的读取指针值,因为消费者0正在向生产者0发送这些更新。当消费者0已完成消费来自缓冲器的帧0时,消费者0向生产者0和路由管理器915发送帧完成消息。然后,消费者0向生产者1发送具有更新的读取指针值的帧1的流控制消息。该流控制消息允许消费者0将其开始状态传送给生产者1。
虚线930表示生产者1接收到更新的读取指针值的时间点,该更新的读取指针值指示缓冲器中有更多可用于写入帧1的数据的空间。当生产者1完成将整个帧1写入缓冲器时,生产者1向消费者0和路由管理器915发送帧完成消息。当消费者0完成消费来自缓冲器的整个帧1时,消费者0向生产者1和路由管理器915发送帧完成消息。
现在转向图10,其示出了具有多个生产者和多个消费者的伴随DMA系统的一个实施方案的时序图1000。时序图1000示出了具有三个生产者1005、1010和1015、路由管理器1020以及三个消费者1025、1030和1035的伴随DMA系统的事件序列。生产者1005、1010和1015也分别称为生产者0、1和2,或者称为P0、P1或P2。在图1000中,消费者1025、1030和1035也分别称为消费者0、1和2,或者称为C0、C1和C2。帧0(或F0)从生产者0和1发送到消费者0和1。帧0的传输的发起由虚线1040指示。在帧0开始时,路由管理器1015向生产者0和1并向消费者0和1发送路由指针更新、读取指针更新和写入指针更新。然后,在生产者0和1与消费者0和1之间交换流控制消息,以提供更新的写入指针值和更新的读取指针值。当生产者0和1已完成将帧0写入缓冲器时,将具有写入指针更新的帧完成消息发送到消费者0和1以及路由管理器1015。虚线1045指示在所有生产者已完成传输帧0的其相应部分之后生产者何时可移动到下一个帧(即,帧1)。在虚线1045之后,在生产者0和2与消费者0和1之间创建中间路由,因为生产者0和2在帧1上,而消费者0和1仍然在帧0上。这允许生产者0和2以及消费者0和1继续交换信用。中间路由具有即使生产者和消费者在不同的帧上也在生产者和消费者之间交换的流控制消息。当消费者0和1完成消费来自缓冲器的帧0时,消费者0和1向生产者0和2发送具有读取指针更新的帧完成消息。需注意,图10的讨论将继续到图11的讨论。
现在参见图11,其示出了具有多个生产者和多个消费者的伴随DMA系统的一个实施方案的时序图1100。图11中所示的具有三个生产者1005、1010和1015、路由管理器1020以及三个消费者1025、1030和1035的伴随DMA系统旨在表示图10中所示的相同伴随DMA系统。因此,时序图1100是(图10的)时序图1000中所示的事件序列的延续。在时序图1100的顶部,在消费者0和1已完成消费来自缓冲器的帧0数据之后,消费者0和1向路由管理器1020发送具有读取指针更新的帧完成消息。
虚线1105表示帧1的消费的开始。出于讨论的目的,假设生产者0和2正在向消费者0和2传输帧1。因此,在帧1开始时,路由管理器1020向生产者0和2发送帧1的路由指针更新,并且路由管理器1020向消费者0和1发送帧1的路由更新。然后,路由管理器1020向消费者0和2发送帧1的路由指针更新。由路由管理器1020发送的路由指针更新还包括对写入指针值和读取指针值的指示。此外,路由管理器1020向生产者0和2发送帧1的路由更新。在帧1的传输期间,在生产者0和2与消费者0和2之间交换流控制消息。这些流控制消息包括写入指针更新或读取指针更新。然后,当整个帧1已被传输到缓冲器时,生产者0和2向消费者0和2以及路由管理器1020发送帧完成消息。需注意,当消费者0和2完成消费帧1的数据时,可发送附加消息,但是这些消息未在时序图1100中示出。此外,后续帧可涉及如时序图1000和1100中针对帧0和1所示的类似消息交换。
时序图1000和1100示出了根据一个实施方案的生产者和消费者之间的指针交换。使用指针的一个好处是可将生产者指针发送给尚未开始的消费者。这些消费者可丢弃流控制消息,并且每当消费者被配置时,包括在生产者已完全完成帧之后的时间点,被丢弃的流控制消息被处理为来自生产者的到达消费者的将来写入指针更新。
现在转向图12,其示出了用于伴随DMA系统的多帧软件定序例程的一个实施方案的图1200。在例程开始时,生产者1205和1210、消费者1215和路由管理器1220被解除复位。需注意,生产者1205和1210也称为P0和P1,并且消费者1215也称为C0。在生产者1205和1210、消费者1215和路由管理器1220被解除复位之后,在系统上执行的软件将与帧0相关联的路由描述符推送到适当的路由描述符队列中。在一个实施方案中,软件通过写入对应的路由描述符队列寄存器来将路由描述符推送到路由管理器1220。此外,在生产者1205和1210和消费者1215被解除复位之后,软件将帧0的DMA配置数据推送到影子DMA寄存器中。针对帧1重复帧0的软件定序例程。
现在参见图13,其示出了用于伴随DMA系统的多帧软件定序例程的一个实施方案的图1300。图1300旨在是(图12的)图1200中所示的例程的延续。在图1300的顶部,与具有生产者P0和P1的帧1相比,帧2具有不同的生产者P0和P2。生产者P0和P2也称为生产者1305和1310。消费者1315(也称为C0)在该示例中是唯一的消费者,而路由管理器1320旨在表示路由管理器1220。如图1300所示,正在产生的帧1和帧2生产者的配置之间存在重叠。对于生产者P0和P2两者,软件将帧2的路由描述符推送到路由管理器1320,并且软件将DMA配置数据推送到影子DMA寄存器中。需注意,该软件定序例程可针对任何数量的后续帧继续。
现在转向图14,其示出了根据一个实施方案的具有生产者路由表条目的字段的表1400。表1400的条目1405对应于生产者路由表条目的活动字段。活动字段指示条目是否是活动路由信用。条目1410表示“是生产者?”字段,该字段指示该路由表条目是否与生产者相关联。在一个实施方案中,如果路由表条目与生产者相关联,则“是生产者?”字段将为1,或者如果路由表条目与消费者相关联,则“是生产者?”字段将为0。条目1415对应于本地DMAID字段,该字段标识与路由表条目相关联的本地信用线。条目1420示出了目的地路由器ID字段,该字段包括经由结构写入向其发送信用的远程对等路由器表的ID。在一个实施方案中,远程路由器邮箱的地址存储在远程路由器地址寄存器中。
条目1425对应于目的地DMA ID字段,该字段存储目的地路由器中的DMA引擎的标识符。条目1430示出了路由管理器ID字段,该字段标识发起并管理该路由的路由管理器。在一个实施方案中,路由管理器ID字段的较低位标识路由管理器内的对应路由描述符队列。条目1435对应于缓冲器写入指针字段,该字段包括指向要写入循环缓冲器的下一个信用的位置的生产者写入指针。条目1440示出了缓冲器读取指针字段,该字段存储指向要由消费者消费的下一个信用的指针。
现在参见图15,其示出了根据一个实施方案的具有消费者路由表条目的字段的表1500。条目1505、1510、1515、1520、1525和1530分别与(图14的)表1400的条目1405、1410、1415、1420、1425和1430相同。条目1535示出了缓冲器读取指针字段,该字段存储指向要由消费者消费的下一个信用的指针。条目1540对应于缓冲器写入指针字段,该字段包括指向要写入循环缓冲器的下一个信用的位置的生产者写入指针。条目1535与表1400的条目1440相同,并且条目1540与表1400的条目1435相同,但是对于消费者路由表条目而言顺序相反。
现在转向图16,其示出了根据一个实施方案的具有用于DMA引擎的伴随包装器的字段的表1600。条目1605对应于缓冲器写入指针字段,该字段包括指向要写入循环缓冲器的下一个信用的位置的生产者写入指针。条目1610示出了缓冲器读取指针字段,该字段存储指向要由消费者消费的下一个信用的指针。缓冲器大小字段1615根据信用数量来指定循环缓冲器的大小。在另一实施方案中,缓冲器大小字段1615根据字节数来指定循环缓冲器的大小。在该实施方案中,可执行转换,以将缓冲器大小字段1615中的值转换为信用数量。
对于生产者DMA引擎,帧指针字段1620指向帧中生产者DMA引擎将写入缓冲器中的下一个信用。对于消费者DMA引擎,帧指针字段1620指向帧中消费者DMA引擎将从缓冲器中读取的下一个信用。帧大小字段1625指定包括开始、中间和完成增量的以信用为单位的总帧大小。DMA引擎被认为是在处理了数量等于帧大小字段1625中指定的值的信用之后完成的。帧开始增量字段1630指定在帧开始时要递增的信用数量。帧开始增量字段1630使得生产者能够跳过该生产者不产生的信用。帧中间增量字段1635指定要在帧内部递增的信用数量。帧中点增量字段1635使得能够对写入缓冲器的信用进行子采样或跳过这些信用。帧完成增量字段1640指定当生产者帧完成时要发送给消费者的信用数量。帧完成增量字段1640使得生产者能够跳过该生产者不产生的信用。开始偏移字段1645指定在帧开始时在产生数据之前空间可用信用需要达到的值。禁用远程字段1650指定是否禁用远程流控制消息以便支持NULL连接特征。NULL连接特征允许链路被禁用,同时仍然处理帧的其余部分,就好像所有远程信用都被接收到一样。
现在转向图17,其示出了用于操作生产者DMA引擎的方法1700的一个实施方案的概括流程图。出于讨论的目的,以顺序次序示出该实施方案中(以及图18至图22中)的步骤。然而,在其他实施方案中,一些步骤可以与所示次序不同的次序发生,一些步骤可同时实行,一些步骤可与其他步骤组合,并且一些步骤可不存在。
生产者DMA引擎确定:在发起将帧的至少一部分传输到缓冲器之前,存储器中的缓冲器中是否有空间(框1705)。虽然在传输帧的上下文中描述了方法1700,但是应当理解,这仅是方法1700的一种可能的具体实施。在其他实施方案中,生产者DMA引擎可传输除图像或视频帧之外的其他类型的数据集。如果缓冲器中没有空间(条件框1710,“否”分支),则生产者DMA引擎等待从消费者DMA引擎接收指针更新(即,指示数据信用已被消费并且缓冲器中的空间可用的指针更新)(框1715)。如果缓冲器中有空间(条件框1710,“是”分支),则生产者DMA引擎将帧的给定部分写入缓冲器(框1720)。当生产者DMA引擎完成将帧的给定部分写入存储器中的缓冲器时,生产者将其更新的生产者写入指针的状态发送到消费者DMA引擎,指示数据信用已被提交给存储器并且准备好被消费(框1725)。出于讨论的目的,假设在框1720和1725中提及的数据部分的大小对应于单个数据信用价值。
如果生产者DMA引擎已完成将帧的所有部分写入缓冲器(条件框1730,“是”分支),则生产者DMA引擎生成生产者帧完成消息(框1735)。在框1735之后,方法1700结束。另选地,在框1735之后,针对正在产生视频序列中的下一个帧的每个生产者DMA引擎启动方法1700的另一实例。需注意,可针对生产者DMA引擎发起方法1700的新实例,以当消费者DMA引擎仍在消费先前帧时产生新的帧。如果生产者DMA引擎尚未完成将帧的所有部分写入缓冲器(条件框1730,“否”分支),则方法1700返回到条件框1710。
现在转向图18,其示出了用于操作消费者DMA引擎的方法1800的一个实施方案的概括流程图。消费者DMA引擎确定:在发起对来自缓冲器的帧的至少一部分的消费之前,数据信用是否已被提交给存储器中的缓冲器(框1805)。虽然在消费帧的上下文中描述了方法1800,但是应当理解,这仅是方法1800的一种可能的具体实施。在其他实施方案中,消费者DMA引擎可消费除图像或视频帧之外的其他类型的数据集。如果数据信用尚未被提交给缓冲器(条件框1810,“否”分支),则消费者DMA引擎等待从生产者DMA引擎接收指针更新(即,指示数据信用已被提交给缓冲器并且准备被消费的指针更新)(框1815)。如果数据信用已被提交给缓冲器(条件框1810,“是”分支),则消费者DMA引擎消费或跳过来自缓冲器的帧的一部分(框1820)。当消费者DMA引擎完成消费或跳过来自存储器中的缓冲器的帧的给定部分时,消费者将其更新的消费者读取指针的状态发送到生产者DMA引擎,指示数据信用已被消费并且缓冲器中的空间已被释放(框1825)。出于讨论的目的,假设在框1820和1825中提及的数据部分的大小对应于单个数据信用价值。
如果消费者DMA引擎已完成消费来自缓冲器的帧的所有部分(条件框1830,“是”分支),则消费者DMA引擎生成消费者帧完成消息(框1835)。在框1835之后,方法1800结束。另选地,在框1835之后,针对正在消费视频序列中的下一个帧的每个消费者DMA引擎启动方法1800的另一实例。如果消费者DMA引擎尚未完成消费来自缓冲器的帧的所有部分(条件框1830,“否”分支),则方法1800返回到条件框1810。需注意,方法1800可结合(图17的)方法1700来执行。例如,方法1700的单独实例可由正在向缓冲器传输数据的每个生产者DMA引擎执行,与此同时,方法1800的单独实例由正在消费来自缓冲器的数据的每个消费者DMA引擎执行。
现在参见图19,其示出了用于软件启动伴随DMA链的方法1900的一个实施方案。在一个或多个处理器上执行的软件将伴随DMA链的所有子系统和伴随路由器解除复位(框1905)。一旦伴随DMA链的所有子系统和伴随路由器已被解除复位,并且当软件准备好调度下一个帧时,软件将下一个帧的路由描述符推送到路由管理器中的单个路由描述符队列中(框1910)。此外,软件将DMA配置推送到配置FIFO和/或影子寄存器中(框1915)。需注意,在一些实施方案中,框1915可在框1910之前执行。换句话说,不需要对框1910和1915进行排序,并且可以任何顺序或同时执行这两个框。对于后续帧,软件针对每个帧将路由描述符推送到单个路由描述符队列中,并且将每个DMA配置推送到配置FIFO和/或影子寄存器中(框1920)。通过执行框1920,这确保了一旦后续帧开始流过该链,路由管理器和DMA引擎就准备好处理后续帧。在框1920之后,方法1900结束。需注意,软件可在相关联的帧开始之前的任何时间(包括提前几个帧)推送路由描述符和DMA配置。
现在转向图20,其示出了用于在缓冲器中前进可编程跳过量而不消费数据信用的方法2000的一个实施方案。在将给定帧从生产者DMA引擎传输到消费者DMA引擎期间指定可编程信用跳过量(框2005)。可编程信用跳过量指示在消费来自缓冲器的信用期间消费者DMA引擎在缓冲器内向前跳跃多远。可针对每个帧指定多个不同的可编程信用跳过量。在一个实施方案中,响应于检测到时间扭曲状况而指定可编程信用跳过量。例如,时间扭曲状况涉及在发起帧渲染之后用户的头部移动的情况下更新呈现给用户的图像。在一个实施方案中,应用包括注视跟踪,其中消费者可基于用户在经渲染帧内的注视点来读取该帧的子集或子帧。在其他实施方案中,针对其他场景(诸如,在超帧的生成期间或另外的情况)指定可编程信用跳过量。
接下来,消费者DMA引擎消费来自比读取指针的当前位置超前(in front of)一个或多个信用的缓冲器位置的数据(框2010)。在一个实施方案中,消费者DMA引擎基于可编程信用跳过量来选择框2010中要读取的缓冲器位置。接下来,消费者DMA引擎响应于消费来自比读取指针的当前位置超前一个或多个信用的缓冲器位置的数据而将读取指针递增多个信用(框2015)。然后,消费者DMA引擎向生产者DMA引擎发送更新的读取指针(框2020)。在框2020之后,方法2000结束。通过执行方法2000,消费者DMA引擎允许生产者DMA引擎继续在帧的传输方面取得进展,从而减轻生产者DMA引擎上的任何潜在背压。
现在参见图21,其示出了用于生产者DMA引擎产生帧的方法2100的一个实施方案。在帧开始时,生产者DMA引擎接收或检索对帧的以信用为单位的总帧大小的指示,其中总帧大小潜在地包括开始、中间和/或完成增量(框2105)。生产者DMA引擎跳过由帧开始增量字段指定的数量的信用(框2110)。框2110使得生产者能够跳过该生产者不产生的信用。需注意,帧开始增量字段可等于0,这将意味着生产者DMA引擎不跳过任何信用。如果空间可用信用大于或等于开始偏移字段(条件框2115,“是”分支),则生产者开始产生帧的数据(框2120)。需注意,“产生数据”被定义为写入或跳过数据。否则,如果空间可用信用小于开始偏移字段(条件框2115,“否”分支),则方法2100保持在条件框2115,直到消费者消费足够的数据以使空间可用信用达到由开始偏移字段指定的值为止。
在框2120之后,生产者继续产生数据,直到到达帧中的指定内部点为止(框2125)。然后,生产者将信用数量递增由帧中间增量字段指定的量(框2130)。框2130使得能够对写入缓冲器的信用进行子采样或跳过这些信用。需注意,框2125和2130是可选的,并且在一些实施方案中可被跳过。另选地,在其他实施方案中,框2125和2130可针对帧内的多个不同内部点重复多次。接下来,生产者继续产生帧的剩余数据(框2135)。如果生产者已处理数量等于总帧大小减去帧完成增量的信用(条件框2140,“是”分支),则生产者向消费者发送由帧完成增量字段指定的数量的信用(框2145)。然后,生产者生成生产者帧完成消息(框2150)。在框2150之后,方法2100结束。否则,如果生产者尚未处理数量等于总帧大小减去帧完成增量的信用(条件框2140,“否”分支),则方法2100返回到框2135。
现在参见图22,其示出了用于消费者DMA引擎消费帧的方法2200的一个实施方案。在帧开始时,消费者DMA引擎接收或检索对帧的以信用为单位的总帧大小的指示,其中总帧大小潜在地包括开始、中间和/或完成增量(框2205)。消费者DMA引擎跳过由帧开始增量字段指定的数量的信用(框2210)。框2210使得消费者能够跳过该消费者不消费的信用。需注意,帧开始增量字段可等于0,这将意味着消费者DMA引擎不跳过任何信用。如果数据可用信用大于或等于开始偏移字段(条件框2215,“是”分支),则消费者开始消费帧的数据(框2220)。需注意,“消费数据”被定义为读取或跳过数据。否则,如果数据可用信用小于开始偏移字段(条件框2215,“否”分支),则方法2200保持在条件框2215处,直到生产者产生足够的数据以使数据可用信用达到由开始偏移字段指定的值为止。
在框2220之后,消费者继续消费数据,直到到达帧中的指定内部点(框2225)。然后,消费者将信用数量递增由帧中间增量字段指定的量(框2230)。框2230使得能够对从缓冲器消费的信用进行子采样或跳过这些信用。需注意,框2225和2230是可选的,并且在一些实施方案中可被跳过。另选地,在其他实施方案中,框2225和2230可针对帧内的多个不同内部点重复多次。接下来,消费者继续消费该帧的剩余数据(框2235)。如果消费者已消费数量等于总帧大小减去帧完成增量的信用(条件框2240,“是”分支),则消费者向生产者发送由帧完成增量字段指定的数量的信用(框2245)。然后,消费者生成消费者帧完成消息(框2250)。在框2250之后,方法2200结束。否则,如果消费者尚未消费数量等于总帧大小减去帧完成增量的信用(条件框2240,“否”分支),则方法2200返回到框2235。
现在参见图23,其示出了系统2300的一个实施方案的框图。如图所示,系统2300可表示台式计算机2310、膝上型计算机2320、平板电脑2330、手机或移动电话2340、电视2350(或被配置为耦接到电视机的机顶盒)、手表或其他可穿戴物品2360等的芯片、电路、部件等。其他设备是可能的并且被设想到的。在例示的实施方案中,系统2300包括耦接到一个或多个外围设备2304和外部存储器2302的(图1的)SOC 100的至少一部分。还提供了电源2306,它向SOC 100供应供电电压以及向存储器2302和/或外围设备2304供应一个或多个供电电压。在各种实施方案中,电源2306可表示电池(例如,智能电话、膝上型计算机或平板电脑中的可再充电电池)。在一些实施方案中,可包括装置100的多于一个实例(并且还可包括多于一个外部存储器2302)。
存储器2302可以是任何类型的存储器,诸如动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双数据速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM的移动版本,诸如mDDR3等,和/或SDRAM的低功率版本,诸如LPDDR2等)、RAMBUS DRAM(RDRAM)、静态RAM(SRAM)等。一个或多个存储器设备可以耦接到电路板上以形成存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。另选地,设备可以与SOC 100在芯片堆叠(chip-on-chip)结构、封装堆叠(package-on-package)结构或者多芯片模块结构中安装。
根据系统2300的类型,外围设备2304可包括任何期望的电路。例如,在一个实施方案中,外围设备2304可包括用于各种类型的无线通信的设备,诸如wifi、蓝牙、蜂窝、全球定位系统等。外围设备2304还可包括附加存储装置,包括RAM存储装置、固态存储装置或磁盘存储装置。外围设备2304可包括用户接口设备诸如显示屏,包括触摸显示屏或多点触摸显示屏、键盘或其他输入设备、麦克风、扬声器等。
在各种实施方案中,软件应用程序的程序指令可用于实施先前所描述的方法和/或机制。程序指令可以高级编程语言(诸如C)来描述硬件的行为。另选地,可使用硬件设计语言(HDL),诸如Verilog。程序指令可存储在非暂态计算机可读存储介质上。许多类型的存储介质是可用的。在使用期间可由计算机访问存储介质,以将程序指令和附带数据提供给计算机用于程序执行。在一些实施方案中,合成工具读取程序指令,以便产生包括来自合成库的门列表的网表。
应当强调的是,上述实施方案仅是具体实施的非限制性示例。一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。
Claims (20)
1.一种装置,包括:
缓冲器;
生产者直接存储器存取(DMA)引擎;和
消费者DMA引擎;
其中响应于产生数据集的给定数据块,所述生产者DMA引擎被配置为向所述消费者DMA引擎发送更新的写入指针,指示数据信用已被提交给所述缓冲器并且所述数据信用已准备好被消费;并且
其中响应于消费来自所述缓冲器的所述数据集的所述给定数据块,所述消费者DMA引擎被配置为向所述生产者DMA引擎发送更新的读取指针,指示所述数据信用已被消费并且所述缓冲器中的空间已被释放以供所述生产者DMA引擎重新使用。
2.根据权利要求1所述的装置,其中所述数据集是视频序列的第一帧,其中所述缓冲器的大小小于所述第一帧的大小,并且其中所述生产者DMA引擎被配置为:
将数据写入比所述更新的写入指针的当前位置超前一个或多个数据信用的第一缓冲器位置;以及
在将数据写入所述第一缓冲器位置之后,将所述写入指针递增多个数据信用。
3.根据权利要求2所述的装置,其中所述消费者DMA引擎被配置为:
从比所述更新的读取指针的当前位置超前一个或多个数据信用的第二缓冲器位置读取数据,其中所述第二缓冲器位置由可编程跳过量指定;以及
在从所述第二缓冲器位置读取数据之后,将所述读取指针递增多个数据信用。
4.根据权利要求3所述的装置,还包括路由管理器,所述路由管理器被配置为:
管理多个本地路由器中的路由表的初始化和更新;以及
从对应的路由描述符队列中弹出所述第一帧的路由描述符,并且初始化所述多个本地路由器中的路由条目。
5.根据权利要求3所述的装置,还包括:
多个生产者DMA引擎,所述多个生产者DMA引擎被配置为将所述第一帧的单独部分传输到所述缓冲器;和
伴随路由器,所述伴随路由器被配置为将来自所述多个生产者DMA引擎的更新合并到所述更新的写入指针。
6.根据权利要求3所述的装置,还包括多个消费者DMA引擎,所述多个消费者DMA引擎被配置为消费来自所述缓冲器的所述第一帧的单独部分。
7.根据权利要求3所述的装置,其中所述生产者DMA引擎被配置为在所述消费者DMA引擎完成对所述第一帧的所有部分的消费之前产生第二帧的部分。
8.一种方法,包括:
由生产者直接存储器存取(DMA)引擎产生数据集的给定数据块;
响应于产生所述数据集的所述给定数据块,向消费者DMA引擎发送更新的写入指针,指示数据信用已被提交给缓冲器并且所述数据信用已准备好被消费;
由所述消费者DMA引擎消费与所述数据集的所述给定数据块对应的所述数据信用;以及
响应于消费来自所述缓冲器的所述数据集的所述给定数据块,向所述生产者DMA引擎发送更新的读取指针,指示所述数据信用已被消费并且所述缓冲器中的空间已被释放以供所述生产者DMA引擎重新使用。
9.根据权利要求8所述的方法,其中所述数据集是视频序列的第一帧,并且所述缓冲器的大小小于所述第一帧的大小,所述方法还包括:
由所述生产者DMA引擎将数据写入比所述更新的写入指针的当前位置超前一个或多个数据信用的第一缓冲器位置;以及
在将数据写入所述第一缓冲器位置之后,将所述写入指针递增多个数据信用。
10.根据权利要求9所述的方法,还包括:
由所述消费者DMA引擎从比所述更新的读取指针的当前位置超前一个或多个数据信用的第二缓冲器位置读取数据,其中所述第二缓冲器位置由可编程跳过量指定;以及
在从所述第二缓冲器位置读取数据之后,将所述读取指针递增多个数据信用。
11.根据权利要求10所述的方法,还包括:
由路由管理器管理多个本地路由器中的路由表的初始化和更新;以及
从对应的路由描述符队列中弹出所述第一帧的路由描述符,并且初始化所述多个本地路由器中的路由条目。
12.根据权利要求10所述的方法,还包括:
由多个生产者DMA引擎将所述第一帧的单独的对应部分传输到所述缓冲器;以及
由伴随路由器将来自所述多个生产者DMA引擎的更新合并到所述更新的写入指针。
13.根据权利要求10所述的方法,还包括:由多个消费者DMA引擎消费来自所述缓冲器的所述第一帧的单独部分。
14.根据权利要求10所述的方法,还包括:由所述生产者DMA引擎在所述消费者DMA引擎完成对所述第一帧的所有部分的消费之前,将第二帧的部分写入所述缓冲器。
15.一种系统,包括:
缓冲器;和
生产者直接存储器存取(DMA)引擎;
其中响应于产生数据集的给定数据块,所述生产者DMA引擎被配置为生成更新的写入指针,指示数据信用已被提交给所述缓冲器并且所述数据信用已准备好被消费。
16.根据权利要求15所述的系统,还包括消费者DMA引擎,其中响应于消费来自所述缓冲器的所述数据集的所述给定数据块,所述消费者DMA引擎被配置为向所述生产者DMA引擎发送更新的读取指针,指示所述数据信用已被消费并且所述缓冲器中的空间已被释放以供所述生产者DMA引擎重新使用。
17.根据权利要求16所述的系统,其中所述数据集是视频序列的第一帧,并且其中所述缓冲器的大小小于所述第一帧的大小。
18.根据权利要求17所述的系统,其中所述生产者DMA引擎被配置为:
将数据写入比所述更新的写入指针的当前位置超前一个或多个数据信用的第一缓冲器位置;以及
在将数据写入所述第一缓冲器位置之后,将所述写入指针递增多个数据信用。
19.根据权利要求18所述的系统,其中响应于接收到对给定条件的指示,所述消费者DMA引擎被配置为:
从比所述更新的读取指针的当前位置超前一个或多个数据信用的第二缓冲器位置读取数据,其中所述第二缓冲器位置由可编程跳过量指定;以及
在从所述第二缓冲器位置读取数据之后,将所述读取指针递增多个数据信用。
20.根据权利要求17所述的系统,还包括路由管理器,所述路由管理器被配置为:
管理多个本地路由器中的路由表的初始化和更新;以及
从对应的路由描述符队列中弹出所述第一帧的路由描述符,并且初始化所述多个本地路由器中的路由条目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/922,623 US12001365B2 (en) | 2020-07-07 | 2020-07-07 | Scatter and gather streaming data through a circular FIFO |
US16/922,623 | 2020-07-07 | ||
PCT/US2021/039190 WO2022010673A1 (en) | 2020-07-07 | 2021-06-25 | Scatter and gather streaming data through a circular fifo |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115777098A true CN115777098A (zh) | 2023-03-10 |
Family
ID=77022269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180048678.5A Pending CN115777098A (zh) | 2020-07-07 | 2021-06-25 | 通过循环fifo分散和聚集流式传输数据 |
Country Status (6)
Country | Link |
---|---|
US (2) | US12001365B2 (zh) |
JP (1) | JP2023533728A (zh) |
KR (1) | KR20230034373A (zh) |
CN (1) | CN115777098A (zh) |
DE (1) | DE112021003634T5 (zh) |
WO (1) | WO2022010673A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115842790B (zh) * | 2022-12-29 | 2023-05-02 | 三未信安科技股份有限公司 | 一种应用于PCIe设备的业务数据流量控制方法 |
Family Cites Families (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4864496A (en) | 1987-09-04 | 1989-09-05 | Digital Equipment Corporation | Bus adapter module for interconnecting busses in a multibus computer system |
US5434996A (en) | 1993-12-28 | 1995-07-18 | Intel Corporation | Synchronous/asynchronous clock net with autosense |
US5951635A (en) | 1996-11-18 | 1999-09-14 | Vlsi Technology, Inc. | Asynchronous FIFO controller |
AUPO799197A0 (en) * | 1997-07-15 | 1997-08-07 | Silverbrook Research Pty Ltd | Image processing method and apparatus (ART01) |
US5754614A (en) | 1997-04-03 | 1998-05-19 | Vlsi Technology, Inc. | Gray code counter |
US6012109A (en) | 1997-09-09 | 2000-01-04 | National Instruments Corporation | Video capture device with adjustable frame rate based on available bus bandwidth |
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
JPH11339464A (ja) | 1998-05-28 | 1999-12-10 | Sony Corp | Fifo記憶回路 |
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6771264B1 (en) * | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US6614781B1 (en) * | 1998-11-20 | 2003-09-02 | Level 3 Communications, Inc. | Voice over data telecommunications network architecture |
US6075833A (en) | 1998-12-02 | 2000-06-13 | Quantum Corporation | Method and apparatus for counting signal transitions |
US6615302B1 (en) * | 1999-09-15 | 2003-09-02 | Koninklijke Philips Electronics N.V. | Use of buffer-size mask in conjunction with address pointer to detect buffer-full and buffer-rollover conditions in a CAN device that employs reconfigurable message buffers |
US6842459B1 (en) * | 2000-04-19 | 2005-01-11 | Serconet Ltd. | Network combining wired and non-wired segments |
US6725388B1 (en) | 2000-06-13 | 2004-04-20 | Intel Corporation | Method and system for performing link synchronization between two clock domains by inserting command signals into a data stream transmitted between the two clock domains |
JP2002254729A (ja) | 2001-03-02 | 2002-09-11 | Sharp Corp | 画像データのdma制御装置 |
US8218555B2 (en) * | 2001-04-24 | 2012-07-10 | Nvidia Corporation | Gigabit ethernet adapter |
US7085287B1 (en) * | 2001-06-27 | 2006-08-01 | Cisco Technology, Inc. | Map routing technique implemented in access networks |
US7009618B1 (en) * | 2001-07-13 | 2006-03-07 | Advanced Micro Devices, Inc. | Integrated I/O Remapping mechanism |
WO2003019393A1 (en) * | 2001-08-24 | 2003-03-06 | Intel Corporation | A general intput/output architecture, protocol and related methods to implement flow control |
US6696854B2 (en) | 2001-09-17 | 2004-02-24 | Broadcom Corporation | Methods and circuitry for implementing first-in first-out structure |
WO2003039150A1 (en) * | 2001-10-11 | 2003-05-08 | Serconet Ltd. | Outlet with analog signal adapter, a method for use thereof and a network using said outlet |
US8219736B2 (en) * | 2002-02-12 | 2012-07-10 | Ati Technologies Ulc | Method and apparatus for a data bridge in a computer system |
US7535913B2 (en) * | 2002-03-06 | 2009-05-19 | Nvidia Corporation | Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols |
US6724683B2 (en) | 2002-03-06 | 2004-04-20 | Applied Micro Circuits Corporation | Transferring data between different clock domains |
US20070253430A1 (en) * | 2002-04-23 | 2007-11-01 | Minami John S | Gigabit Ethernet Adapter |
US6680874B1 (en) | 2002-08-29 | 2004-01-20 | Micron Technology, Inc. | Delay lock loop circuit useful in a synchronous system and associated methods |
US7031838B1 (en) * | 2003-03-25 | 2006-04-18 | Integrated Environmental Services. Inc. | System and method for a cradle-to-grave solution for investigation and cleanup of hazardous waste impacted property and environmental media |
US7107393B1 (en) | 2003-03-28 | 2006-09-12 | Xilinx, Inc. | Systems and method for transferring data asynchronously between clock domains |
US7035983B1 (en) | 2003-04-25 | 2006-04-25 | Advanced Micro Devices, Inc. | System and method for facilitating communication across an asynchronous clock boundary |
US6963946B1 (en) | 2003-10-01 | 2005-11-08 | Advanced Micro Devices, Inc. | Descriptor management systems and methods for transferring data between a host and a peripheral |
TWI278748B (en) | 2003-12-05 | 2007-04-11 | Mediatek Inc | Virtual first-in, first-out DMA device |
US6956776B1 (en) | 2004-05-04 | 2005-10-18 | Xilinx, Inc. | Almost full, almost empty memory system |
US7116601B2 (en) | 2004-12-28 | 2006-10-03 | Via Technologies, Inc. | Pseudo-synchronization of the transportation of data across asynchronous clock domains |
US7630361B2 (en) * | 2005-05-20 | 2009-12-08 | Cisco Technology, Inc. | Method and apparatus for using data-over-cable applications and services in non-cable environments |
US8260982B2 (en) | 2005-06-07 | 2012-09-04 | Lsi Corporation | Method for reducing latency |
US7500044B2 (en) | 2005-07-07 | 2009-03-03 | P.A. Semi, Inc. | Digital phase relationship lock loop |
US20070220184A1 (en) | 2006-03-17 | 2007-09-20 | International Business Machines Corporation | Latency-locked loop (LLL) circuit, buffer including the circuit, and method of adjusting a data rate |
US20080056192A1 (en) * | 2006-08-31 | 2008-03-06 | Piping Hot Networks Limited | Latency reduction by adaptive packet fragmentation |
US7570534B2 (en) | 2007-02-15 | 2009-08-04 | Apple Inc. | Enqueue event first-in, first-out buffer (FIFO) |
US20100005199A1 (en) | 2008-07-07 | 2010-01-07 | Texas Instruments Incorporated | Direct memory access (dma) data transfers with reduced overhead |
US9955332B2 (en) * | 2009-01-28 | 2018-04-24 | Headwater Research Llc | Method for child wireless device activation to subscriber account of a master wireless device |
US9557889B2 (en) * | 2009-01-28 | 2017-01-31 | Headwater Partners I Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US11218854B2 (en) * | 2009-01-28 | 2022-01-04 | Headwater Research Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
JP4911230B2 (ja) * | 2010-02-01 | 2012-04-04 | カシオ計算機株式会社 | 撮影装置、並びに制御プログラム及び制御方法 |
US8830228B2 (en) * | 2010-12-20 | 2014-09-09 | Microsoft Corporation | Techniques for enabling remote management of servers configured with graphics processors |
US20120253847A1 (en) * | 2011-03-31 | 2012-10-04 | General Electric Company | Health information telecommunications system and method |
US20180107591A1 (en) * | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
US20130010617A1 (en) * | 2011-07-07 | 2013-01-10 | Qualcomm Atherons, Inc. | Relative position determination of wireless network devices |
US9141568B2 (en) * | 2011-08-25 | 2015-09-22 | Apple Inc. | Proportional memory operation throttling |
WO2013129031A1 (ja) | 2012-02-29 | 2013-09-06 | 三菱電機株式会社 | データ転送装置、データ転送方法及びデータ転送プログラム |
US9569390B2 (en) * | 2012-04-20 | 2017-02-14 | Combined Conditional Access Development And Support, Llc | Protocol for communication |
US8707370B2 (en) * | 2012-07-13 | 2014-04-22 | International Datacasting Corporation | Digital satellite broadcast program distribution over multicast IP broadband networks |
US9075557B2 (en) * | 2013-05-15 | 2015-07-07 | SanDisk Technologies, Inc. | Virtual channel for data transfers between devices |
US9224187B2 (en) * | 2013-09-27 | 2015-12-29 | Apple Inc. | Wavefront order to scan order synchronization |
US9385962B2 (en) | 2013-12-20 | 2016-07-05 | Intel Corporation | Method and system for flexible credit exchange within high performance fabrics |
US20150281126A1 (en) * | 2014-03-31 | 2015-10-01 | Plx Technology, Inc. | METHODS AND APPARATUS FOR A HIGH PERFORMANCE MESSAGING ENGINE INTEGRATED WITHIN A PCIe SWITCH |
US9460019B2 (en) * | 2014-06-26 | 2016-10-04 | Intel Corporation | Sending packets using optimized PIO write sequences without SFENCEs |
CN104951412B (zh) * | 2015-06-06 | 2018-01-02 | 华为技术有限公司 | 一种通过内存总线访问的存储装置 |
US10073977B2 (en) * | 2015-07-20 | 2018-09-11 | Intel Corporation | Technologies for integrity, anti-replay, and authenticity assurance for I/O data |
US10860511B1 (en) * | 2015-12-28 | 2020-12-08 | Western Digital Technologies, Inc. | Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer |
CN112087394A (zh) * | 2017-02-17 | 2020-12-15 | 华为技术有限公司 | 一种报文处理方法及装置 |
US10706612B2 (en) * | 2017-04-01 | 2020-07-07 | Intel Corporation | Tile-based immediate mode rendering with early hierarchical-z |
US11030713B2 (en) * | 2017-04-10 | 2021-06-08 | Intel Corporation | Extended local memory including compressed on-chip vertex data |
CN107193759A (zh) * | 2017-04-18 | 2017-09-22 | 上海交通大学 | 设备内存管理单元的虚拟化方法 |
US10674189B2 (en) * | 2017-06-22 | 2020-06-02 | At&T Intellectual Property I, L.P. | Methods, systems, and devices for providing a video trailer for media content during a voice communication session |
CN110573896B (zh) * | 2017-06-29 | 2022-05-24 | 上海联影医疗科技股份有限公司 | 用于磁共振成像加速的系统和方法 |
JP6833644B2 (ja) * | 2017-09-13 | 2021-02-24 | 株式会社東芝 | 転送装置、転送方法及びプログラム |
US10475150B2 (en) * | 2017-09-29 | 2019-11-12 | Intel Corporation | GPU minimum latency dispatch for short-duration tasks |
US11274929B1 (en) * | 2017-10-17 | 2022-03-15 | AI Incorporated | Method for constructing a map while performing work |
GB2569604B (en) * | 2017-12-21 | 2020-06-03 | Advanced Risc Mach Ltd | Controlling reading and writing of data streams in data processing systems |
US12086705B2 (en) * | 2017-12-29 | 2024-09-10 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10817324B2 (en) * | 2017-12-29 | 2020-10-27 | Virtual Instruments Corporation | System and method of cross-silo discovery and mapping of storage, hypervisors and other network objects |
US10409524B1 (en) * | 2018-04-25 | 2019-09-10 | Advanced Micro Devices, Inc. | Dynamic memory traffic optimization in multi-client systems |
US10630606B1 (en) * | 2019-03-18 | 2020-04-21 | Brightways Corporation | System, method and architecture for data center network switching |
EP3987404A4 (en) * | 2019-06-21 | 2023-01-18 | INTEL Corporation | ADAPTIVE PIPELINE SELECTION TO SPEED UP MEMORY COPY OPERATIONS |
EP3860063A1 (en) * | 2020-01-31 | 2021-08-04 | ADVA Optical Networking SE | A method and apparatus for correcting a packet delay variation |
US11086802B1 (en) * | 2020-03-16 | 2021-08-10 | Arm Limited | Apparatus and method for routing access requests in an interconnect |
-
2020
- 2020-07-07 US US16/922,623 patent/US12001365B2/en active Active
-
2021
- 2021-06-25 WO PCT/US2021/039190 patent/WO2022010673A1/en active Application Filing
- 2021-06-25 JP JP2023500423A patent/JP2023533728A/ja active Pending
- 2021-06-25 DE DE112021003634.3T patent/DE112021003634T5/de active Pending
- 2021-06-25 KR KR1020237003938A patent/KR20230034373A/ko unknown
- 2021-06-25 CN CN202180048678.5A patent/CN115777098A/zh active Pending
-
2024
- 2024-04-16 US US18/637,305 patent/US20240264963A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230034373A (ko) | 2023-03-09 |
WO2022010673A1 (en) | 2022-01-13 |
US20240264963A1 (en) | 2024-08-08 |
DE112021003634T5 (de) | 2023-06-07 |
JP2023533728A (ja) | 2023-08-04 |
US12001365B2 (en) | 2024-06-04 |
US20220012201A1 (en) | 2022-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10120728B2 (en) | Graphical processing unit (GPU) implementing a plurality of virtual GPUs | |
US10423558B1 (en) | Systems and methods for controlling data on a bus using latency | |
US10282805B2 (en) | Image signal processor and devices including the same | |
JP7053713B2 (ja) | 低電力コンピュータイメージング | |
US20240264963A1 (en) | Scatter and Gather Streaming Data through a Circular FIFO | |
KR102029806B1 (ko) | 선입선출 버퍼를 포함하는 시스템 온 칩, 응용 프로세서 및 그것을 포함하는 모바일 장치 | |
US20210342282A1 (en) | Systems and Methods for Arbitrating Traffic in a Bus | |
TW201131368A (en) | Command queue for peripheral component | |
US9201821B2 (en) | Interrupt timestamping | |
US10255218B1 (en) | Systems and methods for maintaining specific ordering in bus traffic | |
WO2019141157A1 (zh) | 一种核间数据传输的装置和方法 | |
US10649922B2 (en) | Systems and methods for scheduling different types of memory requests with varying data sizes | |
US10445851B2 (en) | Image processing apparatus and method | |
US12111721B2 (en) | Error detection and recovery when streaming data | |
TW201423403A (zh) | 共用資源的存取請求之有效率處理 | |
US9176912B2 (en) | Processor to message-based network interface using speculative techniques | |
CN115599717B (zh) | 一种数据搬移方法、装置、设备及介质 | |
US10963172B2 (en) | Systems and methods for providing a back pressure free interconnect | |
JP2006313479A (ja) | 半導体集積回路装置及びデータ転送方法 | |
US20180336147A1 (en) | Application processor including command controller and integrated circuit including the same | |
CN114415951B (zh) | 图像数据访存单元、方法、加速单元及电子设备 | |
US10965478B2 (en) | Systems and methods for performing link disconnect | |
JP5429873B2 (ja) | ビデオフレームdma制御システム | |
JP2014182510A (ja) | データ処理装置及びクロック供給方法 | |
JP2011022877A (ja) | 情報処理装置および方法 |
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 |