CN103777923B - Dma向量缓冲区 - Google Patents

Dma向量缓冲区 Download PDF

Info

Publication number
CN103777923B
CN103777923B CN201310502511.9A CN201310502511A CN103777923B CN 103777923 B CN103777923 B CN 103777923B CN 201310502511 A CN201310502511 A CN 201310502511A CN 103777923 B CN103777923 B CN 103777923B
Authority
CN
China
Prior art keywords
memory
protection
processor
memory access
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.)
Active
Application number
CN201310502511.9A
Other languages
English (en)
Other versions
CN103777923A (zh
Inventor
A·J·希格哈姆
M·S·艾伦
J·L·瑞德福特
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.)
Analog Devices Global ULC
Analog Devices International ULC
Original Assignee
Analog Devices Technology
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 Analog Devices Technology filed Critical Analog Devices Technology
Publication of CN103777923A publication Critical patent/CN103777923A/zh
Application granted granted Critical
Publication of CN103777923B publication Critical patent/CN103777923B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

根据一个示例实施方案,公开一种直接存储器访问(DMA)引擎和缓冲区。所述向量缓冲区可为显式可编程,且可包括用于重新排序非单位步长向量数据的先进逻辑电路。示例MEMCPY指令可向所述DMA缓冲区提供访问请求,所述DMA缓冲区然后可异步为所述请求提供服务。逐位保护被设置在使用中的存储器上,且当读取每一位时被清除。

Description

DMA向量缓冲区
相关申请的交叉引用
本申请请求2012年10月23日提交的题为“Compiler Directed Direct MemoryAccess(DMA)Vector Buffer”的美国临时申请61/717,564的优先权,所述申请以引用的方式全部并入。
技术领域
本公开一般涉及计算机处理器,且更具体说来,涉及直接存储器访问缓冲区。
背景技术
并行处理通常由处理器来实施以优化处理应用,例如,由数字信号处理器(DSP)来实施以优化数字信号处理应用。处理器可操作为单指令多数据(SIMD)或数据并行处理器以实现并行处理。在SIMD操作中,单指令被发送到处理器的若干处理元件,其中每个处理元件可对不同数据执行相同的操作。
在向量处理中,“步长(stride)”代表每个元素的增量程序步大小,步长可与元素大小相同或不相同。例如,32位(4字节)的元素数组尤其是在有32位数据字长的处理器上可具有4字节的步长。当每N个元素访问一个项目时,出现非单位步长。例如,在步长为4的情况下,访问每4个字。
附图说明
通过结合附图阅读时的以下详细描述来更好地理解本公开。应强调,根据行业的标准实践,各种特征并非按比例绘制且只用于说明的目的使用。实际上,为达到清楚讨论的目的,各种特征的尺寸可任意增大或减小。
图1是示出本公开的各种组件和子系统之间的互连的方块图。
图2是根据本公开的各种方面的示例存储器子系统的方块图。
图3是根据本公开的各种方面的处理器系统的示意方块图。
图4是示出根据本公开的各种方面的图1的处理器系统的操作所产生的示例数据流的方块图。
图5是根据本公开的各种方面的存储器缓冲区之间的示例读写周期的方块图。
图6是根据本公开的各种方面的受保护的缓冲区的方块图。
图7是根据本公开的各种方面的受保护的缓冲区的另外的方块图。
图8是根据本公开的各种方面的由DMA引擎执行的示例方法的流程图。
图9是根据本公开的各种方面的示例硬件指令的方块图。
具体实施方式
概述
根据本说明书的一个方面,公开一种直接存储器访问(DMA)引擎,其包括经配置以进行以下操作的逻辑电路:接收定向到存储器块的DMA请求;开始DMA传送;以及当DMA传送进行时,更新与存储器块中的DMA传送完成的部分相关联的保护。
根据本说明书的另一方面,一种处理器包括提供定向到存储器块的存储器指令的电路,该指令经配置以:测试与存储器块相关联的保护;如果设置保护,那么停滞指令;和如果未设置保护,那么:识别空闲的DMA通道;和将对存储器块的DMA请求发送到DMA引擎。
根据本说明书的又一方面,公开一种计算机实施的方法,包括:接收定向到被寻址的存储器区域的存储器访问请求;在存储器区域上设置至少一个保护;识别空闲存储器通道来为存储器访问请求提供服务;发起数据传送来为存储器访问请求提供服务;和在完成数据传送的至少一部分之后,释放与完成部分相关联的保护。
示例实施方案的详细描述
包括例如中央处理器(CPU)和数字信号处理器(DSP)的处理器持续速度和复杂性增大的速度比存储器技术的速度大。由于增大的能力又意味着处理器可在单个时间增量中处理更多数据,所以进一步加剧了处理器速度与存储器速度的明显分歧。这可成为执行的有用每秒操作(OPS)的数量的限制因素。例如,如果快速处理器依赖慢速存储器,那么快速处理器的大部分时间可闲置,等待数据操作数写入寄存器,或者等待旧的计算结果从寄存器写出。另外,以处理器的速度运行或接近处理器的速度运行的存储器可能比相对于处理器慢速的存储器要贵几个数量级。
一个解决方案是提供一级或更多级本地、芯片上或靠近芯片的存储器,诸如高速缓存或本地L1存储器。本地存储器以处理器的速度运行或接近处理器的速度运行,并因此从处理器的角度看来可几乎立即提供数据。高速缓存持有在较慢主存储器中具有原始位置的数据的副本,并提供表格来追踪当前在本地存储器中的数据和它们与主存储器中相同数据的一致性。因此,处理器可通过主存储器地址来寻址数据,但是如果副本存储在本地存储器中,那么就可从本地存储器接收副本。在一些实施方案中,本地L1存储器可为可直接寻址。
存储器体系结构中影响性能的另一方面是数据放置。如果有关于数据如何在存储器和处理器之间的路径上移动的限制,那么可更有效地实施该路径。例如,向量处理器的每个处理元件可被限制只访问某些数据,诸如具有特定地址对齐的那些数据。因此,如果数据是以特定方式排列,那么算法可更有效,特定方式可能不是简单的线性块。
选择数据加载到高速缓存或本地存储器的任务可由独立的硬件来处理,独立的硬件使用某些已知算法来选择存储器以预加载,通常提取存储器的大型相邻块,如常见于在相邻块上操作。然而,在高速缓存“缺失”的情况下,其中请求的数据还未预提取到高速缓存,处理器“停滞”,有时停滞多达几十或几百个时钟周期,而有用数据从主存储器提取。
例如,可能很快又需要最近访问的数据(时间局部性),且使用试探法来增大所需数据在高速缓存中的可能性,以提取尚未被访问的项目(诸如提取邻近请求的那些项目的项目(空间局部性))和对访问模式的分析以预测后续访问。
在一些情况下,程序员可保持高速缓存操作为不可知。程序员只根据数据的主存储器地址来寻址数据,且数据移入和移出主存储器完全由硬件管理。然而,在一些情况下,高速缓存空间将浪费在无用数据上,且一些高速缓存缺失是不可避免的,从而导致处理器停滞。非显式高速缓存控制器也不解决非线性数据放置的问题。
替代性方法是使快速存储器和慢速存储器都可直接寻址并显式编程直接存储器访问(DMA)控制器以传送数据。具有算法知识的程序员可确保只将有用数据加载到本地存储器,且确保当需要时可获得有用数据。一些DMA控制器也可被编程以在数据移动之后重组数据,从而解决数据放置问题。
非高速缓存或高速缓存加L1存储器处理器可依赖DMA引擎来有效地把数据复制进处理器的存储器或从处理器的存储器复制出来。一些DMA体系结构未与处理器指令执行同步(或者最多松散匹配),并因此难以编程,使得数据刚好及时到达(或写出)。由于DMA引擎是与核心并行有效操作的独立的处理器,所以可安排数据移动以免在核心使用存储器先前重写核心需要的存储器,且反之亦然。
称为宽向量处理器的另一类处理器可在静态排程、可预测循环代码中最有效地执行,从而可有效地消耗并产生长的相邻向量。与通用PC不同,向量处理器常被编程以只进行小部分固定的、重复的任务。作为传统高速缓存的替代或补充,向量处理器可依赖本地“L1”存储器。向量处理器的数据缓冲区也可不以相邻向量的形式组织在L1存储器的外部。
根据本公开的某些方面,显式预提取机制可由用户或编译器编程。特别说来,本公开的一个实施方案提供一种处理器体系结构和方法,以通过显式可编程、异步、基于DMA的数据预提取器来最小化最坏情况的等待时间;促进DMA控制器编程的基于指令的方法;以及使DMA传送与核心同步。另外,所公开的DMA控制器可具有足够的寻址复杂性来启用从非单位步长存储器到处理器的本地L1存储器的有效映射。
另外,根据本公开的某些方面,处理器体系结构促进DMA数据移动与处理核心的同步。例如,如下文进一步描述,公开一种将显式同步数据预加载/后存储到指令级处理器的方法,且该方法可用“原语”实施。这个上下文中的原语是指可用以结合其它原语或更高级操作来构建更高级操作且以非限制性实例的方式可为用户可访问硬件指令、作为另一硬件指令的部分执行的用户不可访问操作、用户可访问软件程序或作为不同用户可访问软件程序的部分执行的用户不可访问软件程序的基本或原语操作。该方法可通过将一个或更多个DMA通道用于支持处理器级存储器(诸如L1存储器)来实现。在示例实施方案中,DMA通道与处理器加载/存储单元共享硬件互锁,并与数据高速缓存共享大量硬件。一个或更多个处理器指令可向DMA通道提供有效的通信。另外,尤其对于向量处理,DMA通道可将复杂的甚至非单位步长/分散-集中寻址模式映射到处理器的L1存储器中的连续向量缓冲区区域或从连续向量缓冲区区域映射复杂的甚至非单位步长/分散-集中寻址模式。特别说来,如下文进一步描述,本公开提供某些示例实施方案,以非限制性实例的方式包括:
a.与简单发布将异步完成的存储器请求的核心同步执行的MEMCPY原语;
b.存储器(例如,L1存储器)上的保护位,或其它替代性的保护,诸如比较器;
c.当设置保护位时的处理器读取或写入操作停滞;
d.设置或清除保护位的MEMCPY原语;
e.当读取或写入位置时设置或清除保护位的异步存储器传送;
f.具有步长模式的MEMCPY型原语(即,二维(2d)DMA);和
g.不具有步长模式的MEMCPY型原语(即,一维(1d)DMA)。
现参看附图,图1是根据本公开的示例实施方案的数字信号处理系统100的方块图。在图1中,系统总线220判定若干子系统之间的通信,子系统例如包括核心300、本地L1存储器120、DMA引擎212、主存储器320和I/O设备310。DMA引擎212经配置将数据(诸如操作数)从主存储器320(或某个其它I/O设备310)传送到L1存储器120。核心300操作这些数据以在L1存储器120中产生结果,以及然后DMA引擎212将结果传送到主存储器320或I/O设备310。
图2是根据本公开的各种方面的存储器子系统200的示意方块图。存储器子系统200与核心300通信并与系统总线220通信,核心300可包括一个或更多个处理元件。存储器子系统200包括本地L1存储器120、包括DMA通道210的DMA引擎212,且在一些实施方案中,存储器子系统200可为特别专用于为计算阵列130的处理元件PE提供服务(图3)的DMA引擎,或者可包括特别专用于相同目的的DMA通道。存储器子系统200可通过系统总线220与输入/输出(I/O)设备310、其它设备或它们的组合互连。本地L1存储器120可为在一些实施方案中与计算阵列130集成在单一芯片上的快速的小存储器,而主存储器320(图1)可为较大的相对慢速芯片外存储器。然而,本领域那些技术人员将认识到,已知且常使用存储器的其它组合和配置。
提供DMA引擎212来在数字信号处理系统100的各种设备之间直接传送数据(图1)。在一个实施方案中,L1存储器120和主存储器320(图1)都可直接寻址,使得程序员可显式编程DMA引擎212来在系统组件之间传送数据。
在示例实施方案中,DMA引擎212能够访问多个DMA通道210。在操作中,如下文进一步描述,示例MEMCPY原语发布DMA请求,且DMA引擎212寻找空闲的DMA通道210。如果没有通道空闲,那么DMA引擎212提供“DMA阻塞”信号以警告核心300(图3)没有DMA通道可用。一旦通道变得可用,那么DMA引擎212提供“DMA非阻塞”。为了提供DMA请求例如作为MEMCPY原语的部分,核心300可将源起始地址、目标起始地址、源结束地址和目标结束地址写到通道的寄存器214,并然后终止原语。
DMA引擎212以循环方式为有效DMA通道210提供服务,从而执行来自源起始地址的单传送并然后在移到下一通道之前增量起始寄存器中的地址。一旦起始地址增量超过对应的结束地址,那么DMA通道就空闲下来供后来的MEMCPY原语再使用。在其它实施方案中,可使用在通道之间判定的其它方法,诸如为最久以前完成传送的通道提供服务或随意选择通道。
示例保护机制可由比较器230提供。例如,当核心300执行加载指令时,它的地址被与所有目标起始和结束地址作比较,且如果它落入任何范围,那么停滞加载直到起始地址增量到超过加载指令的地址。类似地,当存储指令的地址落入任何源范围时,停滞存储指令。
图3是根据本公开的各种方面的示例数字信号处理器(DSP)核心300的示意方块图,示出了相对于核心300原位置的L1存储器120。为达到清楚的目的且为了更好地理解本公开的一些新颖概念,简化了图1。可添加另外的特征到300或整体DSP系统100,且下文描述的一些特征可在DSP300的其它实施方案中被更换或消除。另外,DSP系统100只是作为可受益于本公开的处理器的一个示例实施方案而提供的。可使用包括中央处理单元和其它可编程设备的其它类型的处理器,且广义上,本说明书的公开内容可结合符合已知冯诺依曼结构的任何机器使用。
核心300可包括通过互连网络144通信地耦合到L1存储器120的控制单元110和计算阵列130。在实例中,计算阵列130包括可执行计算和数据处理功能的多个处理元件PE。核心300的一些实施方案可包括其它组件,诸如用于执行微控制器指令的微控制器、直接存储器访问(DMA)单元和到芯片外设备的各种接口。另外,虽然存储器120在这里示出为L1存储器的单个逻辑块,但是本领域那些技术人员将认识到,存储器120可包括系统主存储器、各种等级的芯片上高速缓存和/或其它易失性或非易失性存储器技术。为达到这个示例实施方案的目的,存储器120被视为非高速缓存本地L1存储器,且主存储器320被视为相对低速主系统存储器。
控制单元110促进程序在核心300上执行。控制单元110可包括算术逻辑单元和数据地址生成(ALU-DAG)单元112、程序定序器114和程序存储器116。控制单元110也可包括其它组件,诸如指令高速缓存、计时器和指令寄存器。ALU-DAG单元112支持通用整数运算并提供地址作为存储器地址。例如,当在L1存储器120和寄存器(诸如下文描述的计算阵列130的寄存器堆)之间传送数据时,ALU-DAG112提供存储器地址。ALU-DAG单元112可向数据存储器(例如,L1存储器120或主存储器320)和/或程序存储器116提供地址。程序定序器114向程序存储器116提供指令地址以进行指令提取。程序存储器116存储核心300实施以处理数据的程序(诸如存储在存储器120中的程序),且也可存储过程数据。程序包括具有一个或更多个指令的指令集,且核心300通过提取指令、解码指令并执行指令来实施程序。在实例中,程序可包括实施各种DSP算法的指令集。
L1存储器120存储将由核心300处理的信息/数据(数据存储器)、由核心300实施以处理信息/数据的程序(程序存储器)或它们的组合。在所描绘的实施方案中,L1存储器120具有多个组块化交织的存储器结构,使得存储器120包括存储器组块M1、M2、M3……Mn,其中n是L1存储器120的存储器组块的总数。在实例中,L1存储器120是随机存取存储器,诸如静态随机存取存储器(SRAM)、动态RAM(DRAM)、快闪或其它适当的存储器技术。在实例中,一个或更多个存储器组块M是独立的RAM。或者,在各种实施中,L1存储器120是另一适当类型的存储器。
互连网络140、142和144与控制单元110、L1存储器120和计算阵列130互连,从而在控制单元110、存储器120和计算阵列130之间提供通信路径。互连网络140、互连网络142和互连网络144可包括单根总线、多根总线、交叉矩阵网络、单级网络、多级网络、其它类型的互连网络或它们的组合。控制单元110通过互连网络142发布指令和数据地址到计算阵列130。互连网络142因此通过互连网络142把指令和数据的地址传送到计算阵列130的各种处理元件PE。互连网络144传送来自存储器(诸如L1存储器120、程序存储器116、其它存储器或它们的组合)的数据和/或指令,使得核心300中任何寄存器的内容可传送到任何其它寄存器或任何存储器位置,且存储器120可提供数据操作数(值)到计算阵列。
在一些实施方案中,计算阵列130包括多个处理元件PE1、PE2、PE3……PEN,其中N是计算阵列的处理元件的总数。在实例中,计算阵列110可包括四个处理元件(PE1、PE2、PE3和PE4)。处理元件PE执行DSP算法的数值处理。处理元件PE可独立操作、并行操作或作为SIMD引擎操作。在本实例中,每个处理元件PE可为向量处理器。或者,处理元件PE可为标量处理器和向量处理器的组合。
处理元件PE每个都包括各自的计算单元(CU)152。在所描绘的实施方案中,计算单元152可相同,但是本公开考虑计算单元152不相同的实施方案。本公开还考虑一个或更多个处理元件PE不包括计算单元152的配置。在本实例中,计算单元152每个都包括算术逻辑单元(ALU)、乘法累加器(MAC)、移位器、其它计算单元或它们的组合。ALU可执行算术及逻辑运算,诸如加、减、求反、递增、递减、绝对值、与、或、异或、非、除法原语、其它算术运算、其它逻辑运算或它们的组合。示例MAC可执行乘法运算以及乘法和累加运算,诸如单周期乘法、乘法/加法、乘法/减法、其它运算或它们的组合。移位器可执行逻辑和算术移位、位操作、规格化、去规格化、指数求导运算、其它运算或它们的组合。各种算术运算、逻辑运算和其它运算可用定点和浮点格式执行。在各种实施方案中,ALU、MAC和/或移位器包括与之相关的寄存器。
处理元件PE也可每个都包括各自的寄存器堆154。在所描绘的实施方案中,寄存器堆154可相同,但是本公开考虑寄存器堆154不相同的实施方案。本公开还考虑一个或更多个处理元件PE不包括寄存器堆154的配置。寄存器堆154包括在处理元件PE和数据互连网络(例如,互连网络144)之间传送数据并存储结果的寄存器。在本实例中,寄存器堆154可包括各自的通用寄存器组155,通用寄存器组155包括宽度依赖于核心300的设计需要的通用寄存器,诸如32位通用寄存器、40位通用寄存器、64位通用寄存器、128位通用寄存器、其它宽度通用寄存器或它们的组合。为达到以下讨论的目的,通用寄存器155包括32位通用寄存器。
核心300可经配置以执行各种并行操作。例如,在单循环期间,处理元件PE可访问指令(通过互连网络142)并从存储器访问N个数据操作数(通过互连网络144)以进行同步处理。在SIMD模式下,核心300可并行处理多个数据流。例如,当在SIMD模式下时,单循环中的核心300可通过互连网络142把单指令分派给每个处理元件PE或多个处理元件PE;通过互连网络144从存储器(存储器120、程序存储器116、其它存储器或它们的组合)加载N个数据集,每个处理元件PE一个数据集(在实例中,每个数据集可包括两个数据操作数);在处理元件PE中同步执行单指令;和把来自同步执行的数据结果存储在存储器120中。
图4示出根据本公开的各种方面的可在核心300操作期间产生的示例数据流。这个操作可通过在L1存储器120中分配多个缓冲区来优化,使得DMA引擎212传送和核心操作可并行发生,其中L1存储器120包括多个缓冲区(例如,如图5示出,四个缓冲区(缓冲区1、缓冲区2、缓冲区3和缓冲区4))。图4的方块图示出整体数据流,其中DMA引擎212把数据直接从主存储器120传送到L1缓冲区1120-1。同时,DMA引擎212可能能够处理从L1存储器缓冲区120-2到主存储器120的写入。
例如,如图5所见,在第一时间段t1中,核心300可从缓冲区510-1读取数据(操作数)且把结果写入缓冲区510-2,而DMA缓冲区210-1传送来自缓冲区3510-3的结果(先前由核心300计算),且另一DMA缓冲区210-2把未来数据(供核心300计算)传送到缓冲区4510-4(图5)。这由以下伪代码示出:
for(时间t1){
缓冲区_1(操作数)→核心(结果)→缓冲区_2;
缓冲区3(先前结果)→DMA引擎_1→主存储器;
主存储器(未来操作数)→DMA引擎_2→缓冲区_4);
}
一旦这些活动结束,缓冲区可切换且过程再次启动。例如:
for(时间t2){
缓冲区_4(操作数)→核心(结果)→缓冲区_1;
缓冲区2(先前结果)→DMA引擎_1→主存储器;
主存储器(未来操作数)→DMA引擎_2→缓冲区_3);
}
在第三时间段期间,缓冲区可再次切换如下:
for(时间t3){
缓冲区_3(操作数)→核心(结果)→缓冲区_4;
缓冲区_1(先前结果)→DMA引擎_1→主存储器;
主存储器(未来数据)→DMA引擎_2→缓冲区_2);
}
编程这个并行活动的一个困难是使核心300和DMA缓冲区210同步。为了解决这个困难,可显式编码DMA引擎212以确保DMA引擎212写入的数据在核心300试图读取数据之前可用,且确保核心300写入的数据在DMA引擎212试图读取数据之前可用。有天赋的程序员可理论预测每个处理固定量的数据所花费的最大和最小时间,并在两者之间安排足够的延迟以确保阅读器追不上写入器。然而,随着系统发展,基于原始计算的假设可失效。
如图6示出,一种确保存储器缓冲区能力的示例方法实施软件握手,使得核心300和DMA引擎212都知道一个何时完成写入,这样另一个就可以开始阅读了。
然而,如图7示出,本公开的示例实施方案添加了保护610(诸如保护位、比较器或类似标记机制)以促进核心300和DMA引擎210之间的同步。这可使得能够进行安全存储器操作,同时消耗比图6示出的软件握手体系结构所需要的更少的存储器缓冲区510。保护610阻止核心300访问存储器缓冲区510中DMA引擎212正使用的部分。当存储器操作开始时,整个存储器缓冲区510被保护,且随着传送进行,所保护区域被减小到只有存储器缓冲区510中留待处理的部分。在一些实施方案中,被保护的存储器传送可被称为“受保护传送”。
因此,根据一些实施方案,如图7示出的,核心300和DMA引擎212可安全使用相同缓冲区510。在图7中,核心300把结果写入存储器缓冲区510-3,同时DMA引擎212把结果传送出去到DMA缓冲区210-1,以及核心300从存储器缓冲区510-4读取操作数,同时DMA引擎212把数据传送到DMA缓冲区210-2。
在本公开的一个特定实施方案中,一组保护位610被添加到L1存储器120,使得每个保护位610与L1存储器120的某一数量的字节相关。也可添加原语以发起批量数据传送。例如,本公开提出发起把指定大小的数据块从外部地址(例如,从主存储器320)传送到L1存储器120中的地址的“存储器拷贝入”(MEMCPY_IN)原语:
MEMCPY_IN(address_in_L1,external_address,size)
也添加“存储器拷贝出”(MEMCPY_OUT)原语以发起把指定大小的数据块从L1存储器120中的地址传送到外部地址(例如,在主存储器120中):
MEMCPY_OUT(address_in_L1,external_address,size)
本领域那些技术人员将认识到,根据本发明实施方案的MEMCPY原语不需要具有专用名MEMCPY或者与本文公开的示例原语相同。
图8是从DMA引擎212的角度看来示例MEMCPY方法的流程图。始于块800,在块810,DMA引擎212接收定向到存储器块的存储器访问请求,包括例如起始地址、字长或数据串大小和传送的若干字,这些都根据本领域已知的方法。在块830,DMA引擎212检查空闲的DMA通道210。如果没有空闲的DMA通道210,那么在块840,DMA引擎212设置DMA阻塞,DMA阻塞通知核心300不可启动DMA操作直到DMA通道210清空为止。一旦发现空闲的DMA通道,那么在块850就设置DMA非阻塞。
在块860,DMA引擎212发起DMA传送,在块870,DMA传送以部分传送开始,意指所请求的存储器操作的第一部分完成。例如,如果DMA请求是从存储器加载四个字,那么DMA引擎212可在第一时钟周期上完成加载第一字。在块882,DMA引擎212然后可清除与第一字相关联的任何保护,诸如与第一字相关联的保护位。保护位用作示例保护机制,但是可使用本说明书中公开的任何保护,且本领域那些技术人员将认识到其它可能性的保护机制。另外,虽然本实施方案“清除”保护,但是本领域那些技术人员将认识到可用指示存储器区域已可用的各种方式来更新保护。
在清除保护位之后,在决定块880,DMA引擎212检查全块存储器访问是否已完成。如果未完成,那么方法返回到块870以传送所请求的存储器的下一部分。如果完成了,那么在块890,DMA终止。
图9是从核心300的角度看来用于执行存储器加载和存储操作的示例方法的流程图。当DMA引擎212继续为先前的存储器请求提供服务时,可执行该方法,且该方法可执行作为MEMCPY原语的部分或结合MEMCPY原语执行。明确的目的是把某些操作结合到一起考虑,即使核心300经配置把这些操作视为独立的指令或原语。例如,核心300可提供独立的MEMCPY原语,以如上文所述分开设置保护位,同时加载和存储原语是分开提供的。然而,在替代性实施方案中,加载和存储原语自身可经配置以设置保护位而不实质改变本文公开的方法的精神。
始于块900,在块910,核心300发布读(“加载”)或写(“存储”)访问请求。在块920,核心300检查是否看到有保护设置在请求的存储器块上。如果所请求块的全部或部分被保护,那么MEMCPY指令停滞且在块930进入等待状态。一旦所请求存储器区域的保护位被清除,那么在块960,核心300就发布可定向到DMA引擎212的块存储器访问请求。在发布DMA请求之后,在块970,MEMCPY原语可终止而不用等待DMA引擎212完成存储器操作。
MEMCPY原语的其它实施方案可具有例如以二维DMA的方式指定通过外部或内部存储器的步长的附加参数。
在其他实施方案中也可提供替代性保护方法。例如,在来自核心300的访问请求之后,所请求地址可使用比较器(如图2示出)直接与有效MEMCPY操作的范围作比较。这个方法把MEMCPY原语限制为简单的块数据操作,但也包括发起阶段上的较小延迟。这也可允许L1存储器120外面的区域被保护。
在又一实施方案中,通过用以确保到快速存储器的数据传送的完整性的标准硬件握手协议来使阅读器停滞。例如,通过先进可扩展接口(AXI)从属端口读取L1存储器120的DMA控制器212可通过在指示已接受地址的从属断言ARREADY和指示数据可用的断言RVALID之间的潜在较长的延迟来停滞。
停滞DMA引擎120(或核心300)可能是不可接受的。因此,根据本发明的另一实施方案,硬件标志在VSTORE事件之后产生DMA引擎212的中断,VSTORE事件发起存储器事务而不是盲目地发起传送和停滞,如图9示出。在处理器侧,标志状态转换可发起快速线程交换(在硬件线程处理器的情况下)。如果允许多个DMA通道210,那么这个实施方案需要把有效位映射到DMA通道210中断的机制。
根据本公开的某些实施方案,由于向量缓冲区的阅读器和写入器自动保持同步,所以程序员可把DMA增量地引入他们的应用。例如,当开发应用时,可在循环持续时间向缓冲区分配对齐约束,且只有当应用工作时,才调整缓冲区的寿命以最大化核心300和DMA引擎212的并行操作。即使在调谐应用之后,如果在异常系统状态下阅读器追得上写入器,那么保护位610也确保正确的操作。
根据本公开的各种实施方案,MEMCPY原语可用软件实施且通过API访问,或用硬件实施且通过硬件指令访问。
在本公开的另一示例实施方案中,也可添加使目标范围归零的MEMZERO原语。
在本公开的又一示例实施方案中,添加硬件队列以保护传送,使得可使若干受保护传送排队,且每个传送将以先进先出(FIFO)顺序完成。如果当队列满时发布MEMCPY,那么MEMCPY将被停滞。
如果在停滞期间发生中断,如果MEMCPY原语正在等待先前的MEMCPY原语完成,那么MEMCPY原语可停滞无法接受的长时间。在示例实施方案中,为了不无限期地延迟中断,MEMCPY原语经配置处理中断。特别说来,因为MEMCPY原语不开始执行,所以在中断处理完成之后,中断机制将返回到MEMCPY原语并重新执行MEMCPY原语。
在又一示例实施方案中,当队列空时,MEMCPY原语可断言中断位。可屏蔽中断位,使得不实际发生中断。也可添加等待指令以停滞,直到断言特定中断位为止。这可被其它未屏蔽中断抢占,但在中断处理完成之后,它将返回到等待。只有指定中断将使等待指令完成。
在又一示例实施方案中,添加超时计数器控制寄存器,使得不良传送不会引起无限等待。这个示例寄存器可只在等待指令有效时计数。在例如3,000周期的某一阈值时间之后,寄存器可经配置迫使等待进入关闭状态。
在又一示例实施方案中,可用保护L1高速缓存120中的缓冲区510的“有效”或“脏”位来实施等待。每当数据写入缓冲区510就可设置脏位以指示已修改缓冲区510。在排队DMA请求之后,示例MEMCPY原语也可把目标缓冲区510标记为失效或“脏”。一旦DMA引擎212把数据移入缓冲区510的部分或从缓冲区510的部分移出,它就把缓冲区510标记为有效或“干净”。
在又一示例实施方案中,MEMCPY原语和DMA传送可经配置以在可高速缓存存储器区域操作。这可能需要例如与高速缓存控制器互动以获取一个或更多个高速缓存行的所有权。然后可合成保护位以使核心300和DMA引擎212根据回写高速缓存控制器的“标准”有效和脏位同步。标准位可具有包括以下的定义:
a.失效:这一行并非逻辑上在高速缓存中。读取(由DMA引擎212或核心300读取)应停滞直到这一行被标记为有效。
b.有效:数据可供读取,且该行不需回写到存储器。
有效和脏状态都暗示该行不能“终止”。该行应在改变状态之前回写到主存储器。
如果DMA引擎212把数据移到高速缓冲存储器,即,写到缓冲区,那么它就应与高速缓存控制器互动以在核心300试图例如通过加载指令首先访问存储器地址时阻止控制器疏忽试图把该行填充。在完成DMA写入缓冲区的高速缓存行部分之后,可设置有效位(因此,解决停滞状态,使得到该高速缓存行区域的加载指令将进行)。
如果DMA引擎212把数据从高速缓存移到主存储器320,那么它可能需要与高速缓存控制器通信以控制映射到缓冲区的行。DMA引擎212然后可等待缓冲区区域的每个高速缓存行被标记为有效和脏,如高速缓存控制逻辑电路在来自核心300的写操作之后所设置。在完成DMA从高速缓存写入主存储器320之后,DMA引擎212然后可清除有效和脏位。
根据又一实施方案,L1高速缓存访问和失效数据的核心读取停滞,直到设置有效位为止。写入脏区域也延迟,直到DMA引擎212把它们标记为干净。有利地,脏位的使用启用与标准C“memcpy()”调用具有相同语义的MEMCPY原语,所以代码可用便携式方式写入。
在又一实施方案中,L1存储器中的双缓冲程序由以下代码表示,其中有一个输入缓冲区(dram_buffer0)和一个输出缓冲区(dram_buffer 1),其中a和b是L1存储器中的两个缓冲区。这个代码进行了至少三次传输,其中第一次预提取输入,中间的一次进行工作,且最后一次保存最终输出。
这整个序列可作为宏提供,或核函数例程可标记为直接插入的。
本公开还考虑以下内容来最大化用于流传输核函数的存储器带宽。可提供二维MEMCPY原语。这个版本的原语可接收三维参数:源行步长、目标行步长和行数。在这种情况下,单原语可总共需要多达六个操作数。
在一些示例实施方案中,为向量缓冲区提供应用编程接口(API)。例如:
VBuf*vbuf(const void*external_address,size_t count,size_t stride,size_t elsize);
VBuf*vbuf2d(const void*external_address,size_t ycount,
size_t ystride,size_t xcount,size_t xstride,size_t elsize);
其中,*vbuf分配count*elsize的缓冲区,而*vbuf2d分配ycount*xcount*elsize字节的缓冲区。
这种情况可使用高速缓存行有效位粒度,即使非单位步长并不映射到相邻高速缓存行区域。
更一般的API可独立地完全指定慢速和快速(外部/内部)、直接存储器访问(起始地址、计数、步长、elsize)。这可使用elsize-粒度有效位。
DMA也可具有自己的(或走处理器的)页表来找到虚拟到物理的映射,但是在一些情况下,这可需要更多的循环和更多硬件。
在又一实施方案中,可提供一种方法来返回向量缓冲区处理以用于其它API调用,如下。
void*vload(VBuf*);
在一个实例中,这种方法可使先前与VBuf相关联的任何缓冲区失效、使用来自VBuf的参数来开始到缓冲区的DMA传送,并返回指针到向量缓冲区的开始端。
在又一实施方案中,如下可提供一种方法来发起向量存储操作。
void*vstore(VBuf*);
在一个实例中,这种方法可使先前与VBuf相关联的任何缓冲区失效、开始从缓冲区的DMA传送(其停滞直到数据可用(或在第一有效位设置之后产生第一DMA中断)),并返回指针到向量缓冲区的开始端。
在又一实施方案中,如下提供一种方法来释放到向量缓冲区的指针。
void vrelease(VBuf*);
在一个实例中,这种方法等待直到完成任何未解决的DMA传送并释放缓冲区和所有相关资源。
API也可包括例程来对缓冲区状态提供更细粒度的控制,如下。
void vinvalidate(VBuf*);/*使缓冲区无效*/
void vsend(VBuf*);/*开始从缓冲区的DMA传送*/
void vreceive(VBuf*);/*开始到缓冲区的DMA传送*/
与本地分配缓冲区使用的实例包括:
VBuf*xb=vbuf(x,1024,4,sizeof(x[0]));
VBuf*yb=vbuf(y,1024,1,sizeof(y[0]));
float*xp=vload(xb);
float*yp=vstore(yb);
for(i=0;i<1024;++i)
yp[i]=xp[i]*xp[i];
vrelease(xb);
vrelease(yb);
随后,数据移动可通过使vbuf和vload调用上升高于循环并使vrelease下降低于循环来优化。
在又一示例实施方案中,有效位可用以使阅读器和写入器能够同时访问相同的缓冲区,这样可通过减小等待一个完成所花费的时间来改善应用的性能。然而,为了避免竞争状态,在发起DMA传送之前,有效位自身应设置成失效状态。
需要写入的有效位的数量可通过增大每一位描述的数据字节的数量来减小。然而,这也减小了缓冲区大小和对齐的选择。一个示例解决方案是把数据宽度设置成类似于高速缓存行长度,例如在32和128字节之间。可并行写入的有效位的数量可通过把它们打包到相同的物理存储器子组来增大。
在又一实施方案中,核心300等待直到有效位被设置而未通过使用两个指令禁用中断。第一指令启动与设置位的处理元件PE异步运行的状态机。可中断的第二指令等待状态机完成。
诸如上文概括的API可对于较大数量的缓冲区使用小数量的DMA通道。这可由基于描述符的DMA控制器212通过把每个事务的描述符链接到DMA控制器212正处理的清单来实现。为了在传送出缓冲区之后确保传送进入缓冲区不被停滞,每个方向应使用单独的通道。
一些DSP具有可配置为高速缓存的L1存储器220,所以包括有效位的高速缓存标签已存在。根据本公开,允许L1的部分用作向量缓冲区并允许部分用作高速缓存的组合方案为达两个目的可再使用相同的有效位。
在以上实施方案的讨论中,任何电容器、时钟、DFF、分频器、电感器、电阻器、放大器、开关、数字核心、晶体管和/或其它部件可易于被替代、取代或以其他方式修改以满足特定的电路需要。另外,应注意,互补电子设备、硬件、软件等的使用提供一种用于实施本公开的教导的同样可行的选择。
在一个示例实施方案中,附图中任何数量的电路可在相关电子设备的板上实施。该板可为可固定电子设备的内部电子系统的各种组件并进一步为其他外围设备提供连接器的一般电路板。更具体说来,该板可提供系统的其它组件可用以电通信的电连接。任何合适的处理器(包括数字信号处理器、微处理器、支持芯片组等)、存储器元件等可基于特定配置需要、处理要求、计算设计等来适当地耦接到该板。诸如外部存储器、附加传感器、用于音频/视频显示的控制器和外围设备的其它组件可作为插卡、通过电缆连接到该板或集成到该板本身。
在另一示例实施方案中,附图的电路可实施为独立模块(例如,具有经配置以执行特定应用或功能的相关组件和电路的设备)或实施为到电子设备的专用硬件的插件模块。应注意,本公开的特定实施方案可易于部分或整体包括在片上系统(SOC)封装中。SOC代表把计算机或其它电子系统的组件集成到单芯片中的IC。它可包括数字、模拟、混合信号和通常射频功能:所有这些都可提供在单芯片基板上。其它实施方案可包括多芯片模块(MCM),其中多个单独的IC位于单电子封装中且经配置以通过电子封装彼此紧密互动。在各种其它实施方案中,放大功能可在专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其它半导体芯片中的一个或更多个硅核心中实施。
还必须要注意,本文概括的所有规格、尺寸和关系(例如,处理器的数量、逻辑运算等)仅为示例和教导的目的而提供。在不脱离本公开的精神或所附权利要求书的范围的情况下,这样的信息可显著地改变。规格只适用于一个非限制性实例,因此,应这样理解规格。在以上描述中,参看特定处理器和/或组件布置描述了示例实施方案。在不脱离所附权利要求书的范围的情况下,可对这样的实施方案进行各种修改和改变。因此,描述和附图应视为说明性的而非限制性的。
注意,上文参看附图讨论的活动适用于涉及信号处理的任何集成电路,尤其适用于可执行专用软件程序或算法的那些集成电路,其中的一些可与处理数字化实时数据相关联。某些实施方案可涉及多DSP信号处理、浮点处理、信号/控制处理、固定功能处理、微控制器应用等。
在某些上下文中,本文讨论的特征可适用于医疗系统、科学仪器、无线和有线通信、雷达、工业过程控制、音频和视频设备、电流检测、仪器(可能高精度)以及其它基于数字处理的系统。
此外,上文讨论的某些实施方案可用用于医学成像、患者监测、医疗仪器和家庭保健的数字信号处理技术提供。这可包括肺监视器、加速计、心率监视器、起搏器等。其它应用可包括汽车安全系统技术(例如,稳定性控制系统、驾驶员辅助系统、制动系统、任何种类的信息娱乐和内部应用)。另外,动力系统(例如,在混合动力汽车和电动汽车中)可把高精度数据转换产品用于电池监测、控制系统、报告控制、维护活动等。
在又一示例场景中,本公开的教导可适用于包括帮助提高生产率、能量效率和可靠性的过程控制系统的工业市场。在消费应用中,上述信号处理电路的教导可用于图像处理、自动聚焦和图像稳定(例如,用于数码相机、摄像机等)。其它消费应用可包含用于家庭影院系统、DVD记录器和高清晰度电视的音频和视频处理器。另一些消费应用可涉及先进的触摸屏控制器(例如,用于任何类型的便携式媒体设备)。因此,这样的技术可易于成为智能电话、平板计算机、安全系统、PC、游戏技术、虚拟现实、模拟训练等的部分。
应注意,在本文提供的许多实例的情况下,可用两个、三个、四个或更多个电子组件来描述互动。然而,这只是为了清楚和举例的目的而进行。应理解,系统可用任何适当的方式来合并。附图的任何所示组件、模块和元件可连同类似设计替代物组合成各种可能的配置,所有这些都明显在本说明书的宽泛范围内。在某些情况下,可通过仅参考有限数量的电元件来更容易地描述给定流的集合的一个或更多个功能。应理解,附图的电路和教导可容易地扩展,且可容纳大量的组件,以及更复杂/高级的布置和配置。因此,当潜在应用到大量其它体系结构时,提供的实例不应限制电路的范围或约束电路的宽范围的教导。
注意,在本说明书中,“一个实施方案”、“示例实施方案”、“实施方案”、“另一实施方案”、“一些实施方案”、“各种实施方案”、“其它实施方案”、“替代性实施方案”等中包括的对各种特征(例如元件、结构、模块、组件、步骤、操作、特性等)的参考意在是指本公开的一个或更多个实施方案中包括任何这样的特征,但可能或可能不必在相同实施方案中组合。
本领域的技术人员可判断许多其它改变、替代、变化、变更和修改,并且预期本公开包括落入所附权利要求的范围内的所有这些改变、替换、变化、变更和修改。为了帮助美国专利和商标局(USPTO),以及另外帮助本申请上发布的任何专利的任何读者理解所附权利要求书,申请人希望注意的是申请人:(a)并不希望任何所附权利要求援引35U.S.C.第112条的第六(6)段,因为它在本申请的提交日期就存在,除非用语“……的构件”或“……的步骤”特别用于特定权利要求中;且(b)说明书中的任何陈述不旨在以其他未在所附权利要求书中反映的任何方式来限制本公开。
其它注意事项、实例和实施
应注意,上述装置的所有可选特征也可参照本文描述的方法或过程来实施,且实例中的细节可在一个或更多个实施方案中任何处使用。
在第一实例中,提供了一种可为任何类型的计算机的部分的系统(可包括任何合适的电路、分频器、电容器、电阻器、电感器、ADC、DFF、逻辑门、软件、硬件、链路等),该系统还可包括耦接到多个电子组件的电路板。系统可包括使用第一时钟来把数据从数字核心时钟传输到宏的第一数据输出的构件,第一时钟是宏时钟;使用第二时钟来把数据从宏的第一数据输出时钟传输到物理接口的构件,第二时钟是物理接口时钟;使用宏时钟来把第一重置信号从数字核心时钟传输到宏的重置输出的构件,第一重置信号输出用作第二重置信号;使用第三时钟来取样第二重置信号以产生取样重置信号的构件,第三时钟提供比第二时钟的时钟频率大的时钟频率;和响应于取样重置信号的转变而把第二时钟重置为物理接口中的预定状态的构件。
在这些(上述)实例中,“用于……的构件”可包括(但不限于)使用本文讨论的任何合适的组件,连同任何合适的软件、电路、集线器、计算机代码、逻辑、算法、硬件、控制器、接口、链路、总线、通信路径等。在第二实例中,系统包括存储器,存储器进一步包括机器可读指令,当机器可读指令被执行时使系统执行上面讨论的任何活动。

Claims (18)

1.一种直接存储器访问引擎,其包括经配置以进行以下操作的逻辑电路:
接收定向到包括多个部分的存储器块的直接存储器访问请求;
传送所述存储器块的所述多个部分中的一个部分;以及
清除与所述存储器块中的所传送的部分相关联的保护。
2.如权利要求1所述的直接存储器访问引擎,其中所述逻辑电路还经配置以:
在接收所述直接存储器访问请求之后:
提供直接存储器访问阻塞信号;
识别空闲的直接存储器访问通道;以及
在识别空闲的直接存储器访问通道之后,提供直接存储器访问未阻塞信号。
3.如权利要求1所述的直接存储器访问引擎,其中所述保护包括保护位。
4.如权利要求3所述的直接存储器访问引擎,其中所述保护位也充当高速缓冲存储器的脏位或无效位。
5.如权利要求1所述的直接存储器访问引擎,其中清除所述保护包括改变界定受保护的存储器块的保存界限的缓冲区,使得所述缓冲区不包括存储器中已被传送的部分。
6.如权利要求1所述的直接存储器访问引擎,还包括用于处理多个直接存储器访问请求的队列,其中所述队列以先进先出顺序操作。
7.如权利要求1所述的直接存储器访问引擎,还经配置以自动重新排序包括非单位步长向量的数据。
8.一种包括提供定向到存储器块的存储器指令的电路的处理器,所述指令经配置以:
测试与所述存储器块相关联的保护;
如果设置了所述保护,那么停滞所述指令;以及
如果未设置所述保护,那么:
识别空闲的直接存储器访问通道;以及
将对所述存储器块的直接存储器访问请求发送到直接存储器访问引擎,
其中,所述保护包括多个保护位,所述存储器块包括多个部分,设置所述保护包括设置所述多个保护位,所述多个保护位中的每一位与所述存储器块的所述多个部分中的一个部分相关联。
9.如权利要求8所述的处理器,其中所述处理器经配置以在发送所述直接存储器访问请求之后终止所述指令。
10.如权利要求8所述的处理器,其中所述保护包括识别使用中的存储器块的地址范围的缓冲区,且其中测试所述保护包括将所述请求的存储器块与所述使用中的存储器块的所述地址范围比较。
11.如权利要求8所述的处理器,其中设置所述保护包括使用标准硬件握手协议。
12.如权利要求8所述的处理器,其中所述处理器被配置成在发起所述直接存储器访问传送之后:
不禁用中断;
发布启动状态机的第一指令;以及
发布可中断的且等待所述状态机完成的第二指令。
13.如权利要求8所述的处理器,其中所述存储器指令是经配置以将数据从所述存储器块传送到所述处理器的加载指令。
14.如权利要求8所述的处理器,其中所述存储器指令是经配置以将数据从所述处理器传送到所述存储器块的存储指令。
15.一种计算机实施的方法,其包括:
接收定向到被寻址的存储器区域的存储器访问请求;
在所述存储器区域上设置至少一个保护,其中所述至少一个保护中的每个保护与所述存储器区域的一部分关联;
识别空闲存储器通道来为所述存储器访问请求提供服务;
发起数据传送来为所述存储器访问请求提供服务;以及
在完成所述数据传送的至少一部分之后,释放与所述完成部分相关联的保护。
16.如权利要求15所述的方法,其中:
所述保护包括将存储器的一个或更多个区域识别为使用中的存储器缓冲区;
设置所述保护包括将所述存储器区域识别为使用中的存储器区域;以及
释放所述保护包括从所述存储器缓冲区移除所述存储器区域中的所述数据传送已完成的所述部分。
17.如权利要求15所述的方法,还包括在发起所述数据传送之后终止提供所述存储器访问请求的指令。
18.如权利要求15所述的方法,其中设置所述保护包括设置保护位,且释放所述保护包括释放所述保护位。
CN201310502511.9A 2012-10-23 2013-10-23 Dma向量缓冲区 Active CN103777923B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261717564P 2012-10-23 2012-10-23
US61/717,564 2012-10-23
US14/040,367 2013-09-27
US14/040,367 US9092429B2 (en) 2012-10-23 2013-09-27 DMA vector buffer

Publications (2)

Publication Number Publication Date
CN103777923A CN103777923A (zh) 2014-05-07
CN103777923B true CN103777923B (zh) 2017-09-05

Family

ID=49447990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310502511.9A Active CN103777923B (zh) 2012-10-23 2013-10-23 Dma向量缓冲区

Country Status (4)

Country Link
US (1) US9092429B2 (zh)
EP (1) EP2725498B1 (zh)
KR (1) KR101572204B1 (zh)
CN (1) CN103777923B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201828B2 (en) 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
US9342306B2 (en) 2012-10-23 2016-05-17 Analog Devices Global Predicate counter
JP6155723B2 (ja) * 2013-03-18 2017-07-05 富士通株式会社 レーダ装置及びプログラム
US11354244B2 (en) 2014-11-25 2022-06-07 Intel Germany Gmbh & Co. Kg Memory management device containing memory copy device with direct memory access (DMA) port
US9563572B2 (en) 2014-12-10 2017-02-07 International Business Machines Corporation Migrating buffer for direct memory access in a computer system
DE102015104776B4 (de) * 2015-03-27 2023-08-31 Infineon Technologies Ag Verfahren und Vorrichtung zum Verarbeiten von Radarsignalen
CN105335130B (zh) * 2015-09-28 2018-06-26 深圳市中兴微电子技术有限公司 一种处理器及其处理任务的方法
US20170155717A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Direct memory access for endpoint devices
US10929339B2 (en) * 2016-10-17 2021-02-23 Yokogawa Electric Corporation Generation of multiple worksheet exportation
US10503434B2 (en) 2017-04-12 2019-12-10 Micron Technology, Inc. Scalable low-latency storage interface
US10503552B1 (en) * 2017-04-28 2019-12-10 Ambarella, Inc. Scheduler for vector processing operator readiness
US10783240B2 (en) * 2017-09-29 2020-09-22 Stmicroelectronics, Inc. Secure environment in a non-secure microcontroller
US10515036B2 (en) * 2017-10-25 2019-12-24 Microchip Technology Incorporated Bit manipulation capable direct memory access
DE102017126723A1 (de) 2017-11-14 2019-05-16 Infineon Technologies Ag Vorrichtung und Verfahren zum Verarbeiten von Radarsignalen
JP2020004247A (ja) * 2018-06-29 2020-01-09 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
US10606775B1 (en) 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
US11301295B1 (en) * 2019-05-23 2022-04-12 Xilinx, Inc. Implementing an application specified as a data flow graph in an array of data processing engines
TWI773106B (zh) * 2021-01-28 2022-08-01 華邦電子股份有限公司 具有運算功能的記憶體裝置及其操作方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881192A (zh) * 2005-03-21 2006-12-20 惠普开发有限公司 用于虚拟机环境中直接输入输出的方法和设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247689A (en) 1985-02-25 1993-09-21 Ewert Alfred P Parallel digital processor including lateral transfer buses with interrupt switches to form bus interconnection segments
EP0429733B1 (en) 1989-11-17 1999-04-28 Texas Instruments Incorporated Multiprocessor with crossbar between processors and memories
WO1991017507A1 (en) 1990-05-07 1991-11-14 Mitsubishi Denki Kabushiki Kaisha Parallel data processing system
CA2138263C (en) 1993-09-27 2000-02-22 Yukihiko Okumura Multiprocessor
US6782440B2 (en) * 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
GB2409063B (en) 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
US20060090025A1 (en) 2004-10-25 2006-04-27 Tufford Robert C 9U payload module configurations
ATE493703T1 (de) 2004-11-03 2011-01-15 Koninkl Philips Electronics Nv Programmierbare datenverarbeitungsschaltung, die simd-befehle unterstützt
US7664889B2 (en) * 2005-09-29 2010-02-16 Intel Corporation DMA descriptor management mechanism
US20110022754A1 (en) 2007-12-06 2011-01-27 Technion Research & Development Foundation Ltd Bus enhanced network on chip
US20100082894A1 (en) * 2008-09-26 2010-04-01 Mediatek Inc. Communication system and methos between processors
US20120054379A1 (en) * 2010-08-30 2012-03-01 Kafai Leung Low power multi-touch scan control system
US9146743B2 (en) 2012-07-11 2015-09-29 International Business Machines Corporation Generalized bit manipulation instructions for a computer processor
US9342306B2 (en) 2012-10-23 2016-05-17 Analog Devices Global Predicate counter
US20140115278A1 (en) 2012-10-23 2014-04-24 Analog Devices, Inc. Memory architecture
US9201828B2 (en) 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881192A (zh) * 2005-03-21 2006-12-20 惠普开发有限公司 用于虚拟机环境中直接输入输出的方法和设备

Also Published As

Publication number Publication date
CN103777923A (zh) 2014-05-07
KR20140051797A (ko) 2014-05-02
US20140115195A1 (en) 2014-04-24
EP2725498A2 (en) 2014-04-30
EP2725498B1 (en) 2017-12-13
US9092429B2 (en) 2015-07-28
EP2725498A3 (en) 2015-08-12
KR101572204B1 (ko) 2015-11-26

Similar Documents

Publication Publication Date Title
CN103777923B (zh) Dma向量缓冲区
US11468003B2 (en) Vector table load instruction with address generation field to access table offset value
EP3602278B1 (en) Systems, methods, and apparatuses for tile matrix multiplication and accumulation
US6260088B1 (en) Single integrated circuit embodying a risc processor and a digital signal processor
US5606520A (en) Address generator with controllable modulo power of two addressing capability
US9489343B2 (en) System and method for sparse matrix vector multiplication processing
US5613146A (en) Reconfigurable SIMD/MIMD processor using switch matrix to allow access to a parameter memory by any of the plurality of processors
CN106104488B (zh) 用于支持任务间通信的基于硬件的原子操作
US5410649A (en) Imaging computer system and network
US5212777A (en) Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5339447A (en) Ones counting circuit, utilizing a matrix of interconnected half-adders, for counting the number of ones in a binary string of image data
US6038584A (en) Synchronized MIMD multi-processing system and method of operation
US5197140A (en) Sliced addressing multi-processor and method of operation
US6948050B1 (en) Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware
CN103218208B (zh) 用于实施成形的存储器访问操作的系统和方法
EP2725497A1 (en) Memory arbitration circuit and method
US11934308B2 (en) Processor cluster address generation
US10997102B2 (en) Multidimensional address generation for direct memory access
CN101751356B (zh) 用于改进直接存储器存取传送效率的方法、系统和装置
WO2013090389A1 (en) Vector size agnostic single instruction multiple data (simd) processor architecture
Schaumont et al. Trivium Crypto-Coprocessor
Korneev Modern Microprocessors Third Edition

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: ANALOG DEVICES TECHNOLOGY COMPANY

Effective date: 20150105

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150105

Address after: Bermuda (UK) Hamilton

Applicant after: ANALOG DEVICES GLOBAL

Address before: Bermuda (UK) Hamilton

Applicant before: Analog Devices Global

GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Limerick

Patentee after: Analog Devices Global Unlimited Co.

Address before: Limerick

Patentee before: Analog Devices Global

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: Limerick

Patentee after: Analog Devices Global

Address before: Bermuda (UK) Hamilton

Patentee before: Analog Devices Global

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210701

Address after: Limerick

Patentee after: ANALOG DEVICES INTERNATIONAL UNLIMITED Co.

Address before: Limerick

Patentee before: Analog Devices Global Unlimited Co.