用于数据仓库引擎的系统与方法与流程

文档序号:15105967发布日期:2018-08-04 16:53阅读:235来源:国知局

本申请要求于2016年11月30日提交的序列号为15/365,755、名称为“用于数据仓库引擎的系统与方法”的美国非临时申请的优先权,该申请又要求于2015年12月15日提交的序列号为62/267,764、名称为“用于数据仓库引擎(DWE)的系统与方法”的美国临时申请的优先权,上述两个专利申请的内容通过引用并入本文中,如同全文再现。

技术领域

本公开一般涉及用于数据存储的系统与方法,并且在特定实施例中涉及用于数据仓库引擎的系统与方法。



背景技术:

无线接入网络(Radio access network,RAN)片上系统(system-on-a-chip,SoC)基于全局映射存储器的层次结构,其可以是片上或片外的。这些存储器适用于异构计算引擎(compute engine,CE),例如用于控制处理的中央处理单元(central processing unit,CPU)、用于控制和信号处理的混合的数字信号处理器(digital signal processor,DSP)以及用于信号处理的硬件加速器(hardware accelerator,HAC)。

在一些示例中,存储器被视为哑存储器。这可能会引出CPU和DSP管理存储器,从而可能会在CE中造成存储器存取相关的不一致停顿。这可能导致使用巨大的多端口存储器,其可能处理最坏情况下的随机停顿。这可能导致SoC的过度设计和可扩展性的缺乏。



技术实现要素:

实施例数据仓库引擎(data warehouse engine,DWE)包括中央处理单元(CPU)核心和第一数据组织单元(data organization unit,DOU),其中所述第一DOU被配置为聚合读取操作。所述DWE还包括耦合在所述CPU核心与所述第一DOU之间的第一命令队列,其中所述第一命令队列被配置为将命令从所述CPU核心传送到所述第一DOU。

实施例DWE还包括耦合在所述第一DOU和所述CPU核心之间的响应队列,其中所述响应队列被配置为将响应从所述第一DOU传送到所述CPU核心。在一个实施例中,所述第一DOU还被配置为执行即时数据重组。实施例DWE还包括第二DOU和耦合在所述CPU核心与所述第二DOU之间的第二命令队列。在一个实施例中,所述第一DOU被配置为执行解聚写入操作、解聚读取操作和聚合写入操作中的至少一个。

实施例数据组织单元(DOU)包括源高速缓冲存储器和与所述源高速缓冲存储器耦合的命令队列(command queue,cQ)消息解码器,其中所述cQ消息解码器被配置为从中央处理单元(CPU)核心接收消息。所述DOU还包括与所述源高速缓冲存储器耦合的读取接口,其中所述读取接口被配置为根据所述消息从数据存储器接收数据并将所述数据存储在源高速缓冲存储器中。

实施例DOU还包括与所述源高速缓冲存储器耦合的弹性缓冲器以及与所述弹性缓冲器耦合的目的地高速缓冲存储器。

实施例DOU还包括与所述目的地高速缓冲存储器耦合的写入管理器、与所述写入管理器耦合的写入命令队列以及与所述写入命令队列耦合的写入接口。在一个实施例中,所述DOU还包括与所述写入接口耦合的响应队列(response queue,rQ)消息编码器,其中所述rQ消息编码器被配置为向所述CPU发送响应消息。在另一个实施例中,所述DOU包括与所述读取接口耦合的读取数据变换器、与所述读取数据变换器耦合的流缓冲器以及与所述cQ消息解码器和所述流缓冲器耦合的流写入地址生成器。在一个实施例中,所述DOU还包括耦合在所述流缓冲器和所述写入命令队列之间的写入变换器。

实施例DOU还包括与所述cQ消息解码器耦合的事务生成器。所述DOU可以另外包括耦合在所述事务生成器和所述源高速缓冲存储器之间的数据存储分配器和跟踪器。所述DOU还可以包括与所述cQ消息解码器和所述事务生成器耦合的流读取地址生成器以及与所述流读取地址生成器和所述读取接口耦合的读取命令队列。

实施例方法包括数据组织单元(DOU)从中央处理单元接收消息并且所述DOU根据所述消息从源存储器获得第一数据。所述方法还包括重组所述第一数据以产生第二数据并将所述第二数据存储在目的地存储器中。

在实施例方法中,所述源存储器是所述目的地存储器。在另一个实施例方法中,重组所述第一数据包括使用解聚来分散所述第一数据。在一个实施例中,分散所述第一数据包括执行非均匀分散或流分散。在另一个实施例中,重组所述第一数据包括使用聚合来收集所述第一数据。在实施例方法中,收集所述第一数据包括执行非均匀收集或流分散。

前面已经相当广泛地概述了本公开的实施例的特征,以便可以更好地理解随后的本公开的详细描述。本公开的实施例的其它特征和优点将在下文中描述,其形成本公开的权利要求的主题。本领域技术人员应该理解,所公开的概念和具体实施例可以容易地用作修改或设计用于实现本公开的相同目的的其它结构或过程的基础。本领域技术人员还应该认识到,这种等同构造不脱离如所附权利要求书中阐述的本公开的精神和范围。

附图说明

为了更完整地理解本公开及其优点,现在参考结合附图进行的以下描述,其中:

图1示出了实施例数据仓库引擎(DWE);

图2示出了另一个实施例DWE;

图3A和图3B示出了实施例数据组织单元(DOU);

图4示出了由DOU执行的存储分散的实施例方法;

图5示出了由DOU执行的查询收集的实施例方法;

图6示出了由DOU执行的流模式收集的实施例方法;

图7示出了由DOU执行的矩阵转置的实施例方法;

图8示出了由DOU执行的厄密(Hermitian)矩阵压缩存储的实施例方法;

图9示出了由DOU执行的厄密矩阵扩展的实施例方法;

图10示出了由DOU执行的厄密矩阵压缩存储的另一个实施例方法;

图11示出了由DOU执行的厄密矩阵扩展的另一个实施例方法;

图12示出了由DOU执行的厄密矩阵压缩存储的又一实施例方法;

图13示出了由DOU执行的厄密矩阵扩展的又一实施例方法

图14示出了由DWE执行的数据重组的实施例方法的流程图;

图15示出了由DOU执行的数据重组的实施例方法的流程图;

图16示出了由DOU执行的流式传输的实施例方法的流程图;

图17示出了实施例处理系统的框图;和

图18示出了收发器的实施例的框图。

除非另外指明,否则不同附图中的相应数字和符号通常指代对应部分。附图被绘制成清楚地示出实施例的相关方面,并且不一定按比例绘制。

具体实施方式

首先应该理解,虽然下文提供了一个或多个实施例的示例性实现方式,但是可以使用任何数量的当前已知技术或现有技术来实现所公开的系统和/或方法。本申请决不限于这些示例性实现方式、附图和下文所述的技术(包括本文举例说明并且描述的示例性设计和实现方式),而是可以在所附权利要求的范围内以及所附权利要求的等价要件的全部范围内进行修改。

片上系统(SoC)的数据访问模式可能很复杂。存储器输入/输出(input/output,I/O)利用率,特别是双倍数据速率(double data rate,DDR)同步动态随机存取存储器(synchronous dynamic random access memory,SDRAM)接口的存储器输入/输出(input/output,I/O)利用率可以采用去往和来自所述DDR SDRAM的非均匀读取数据和写入数据进行聚合。昂贵的多端口存储库可能基于数据组织,在需要处理数据之前使用语义感知即时数据组织。在2015年10月7日提交的申请号为14/877,155、名称为“用于片上系统的系统与方法”(System and Method for System on a Chip)的美国专利申请中讨论了SoC中的数据访问模式的其它细节,该申请通过引用结合于此。

实时数据仓库(real-time Data Warehouse,rDW)系统和方法包括用于定义、访问和管理实时系统中的存储数据的高效存储管理和方法。在一个实施例中,存储与计算分离。无线数据移动域特定语言使用专门的查询和存储。在2016年5月31日提交的申请号为15/169,094、名称为“用于实时数据仓库的系统与方法”(System and Method for Real-Time Data Warehouse)的美国专利申请中讨论了关于rDW的其它细节,该申请通过引用结合于此。在2016年9月13日提交的申请号为15/264,095、名称为“用于可扩展分布式实时数据仓库的系统与方法”System and Method for Scalable Distributed Real-Time Data Warehouse)的美国专利申请中讨论了关于可扩展分布式rDW(scalable distributed rDW,sdrDW)的额外细节,该申请通过引用结合于此。

实施例数据仓库引擎(DWE)提供智能且灵活的数据移动能力,其具有即时数据重组以及用于非均匀和模式化数据访问的聚合和解聚。在一个实施例中,用户使用明确定义的接口来请求和接收数据,所述数据可以通过改变所述DWE中的软件来在硅后进行修改。在一个实施例中,数据采用已知组织进行存储。一个实施例DWE具有完全软件可编程的数据管理能力。因此,实施例DWE具有无限的配置变化。为了比较,作为有限状态机的直接存储器存取(direct memory access,DMA)仅具有有限数量的配置变化。

在诸如中央处理单元(CPU)和数字信号处理器(DSP)等基于缓存的计算引擎(CE)中,对DDR SDRAM的远程非均匀访问和对级别2(level 2,L2)、共享级别2(shared level 2,SL2)和DDR SDRAM的模式化访问可能会缓存在本地缓存中,这可能会利用局部性,因为缓存是临时的和本地的。可以顺序读取多行缓存。但是,需要以非顺序的方式访问缓存。此外,高速缓存体系结构可能受限于可能支持的方式数量和大小。对于n路高速缓存,n可以是,例如,4、8或16。多个非均匀或模式化访问可能导致显著的高速缓存局部性中断,并且由于有限的高速缓存容量而增加高速缓存未命中。多个非均匀或模式化访问也可能导致冲突缓存未命中,即计算引擎停顿。增加高速缓存的大小和/或方式数量可以缓解由于对存储器的非均匀或模式化访问造成的这些中断。但是,扩展是有问题的,因为缓存的大小设计为能够处理最坏的情况。此外,缓存可能会利用大量的面积、功耗和成本。

在实施例DWE中,当不存在破坏局部性的其它中断时,可以使用局部性以及聚合读取数据和写入数据。在一个实施例中,数据组织单元(DOU)一次只处理一个作业。一个实施例DWE使用源高速缓存缓冲器来聚合DOU内的存储器写入数据,所述源高速缓存缓冲器作为完全关联高速缓存。此外,实施例DOU使用目的地缓冲器,其作为完全关联的缓存进行操作,并聚合DOU中的存储器写入数据。例如,内容可寻址存储器(content addressable memory,CAM)标签可以用于实现源高速缓存和目的地高速缓存。

一个实施例通过读取高速缓存于源存储器中的整个高速缓存行来改善存储器I/O利用率。请求的数据可以是数据的子集或所有数据,被转发给目的地存储器并在其中合并,因此写入数据发生在高速缓存行大小。高速缓存行大小可配置为支持存储器接口的不同突发大小。在其它示例中,高速缓存行大小是固定的并且不可配置。在一个示例中,可以使用CAM标签源和CAM标签目的地。一个实施例DWE执行来自SoC的聚合和解聚。在一个示例中,DWE一次执行聚合和解聚。此外,实施例DWE执行分散、收集和流式传输。

在一个实施例中,用户配置信息提前可用。例如,在诸如物理(physical,PHY)层等无线无线电接入技术(radio access technology,RAT)较低层中,用户配置信息预先从诸如媒体访问控制(media access control,MAC)层等较高层已知。在安排任务以处理数据之前,可以以算法特定格式对数据进行组织。当组织细节提前可用时,共享即时数据组织逻辑可以满足整个系统所需的数据组织。临时快速存储存储器可临时组织并存储慢速远程存储器(如DDR SDRAM)附近的数据。例如,可以使用数据仓库,如rDW或sdrDW。

实施例DOU具有位于源存储器和目的地存储器之间的数据组织逻辑。数据组织逻辑在存储或检索来自慢速远程存储器(例如DDR SDRAM)的数据时组织数据。实施例DOU包含即时数据重组。在一个实施例中,智能控制器耦合在大容量存储器和进行查询的设备之间。

一个实施例使用具有专用查询数据和存储数据的域特定语言来执行语义感知数据移动。具有或不具有高速缓存的CPU使用专用指令来处理所述查询数据和存储数据,并触发DOU执行这些命令。期望使处理所述查询数据和存储数据的CPU核心与执行数据组织和移动的DOU之间的通信和控制成本最小化。实施例DWE可以包括多个CPU和/或多个DOU。

在一个实施例DWE中,CPU核心紧密耦合到DOU。CPU核心可以是任何通用可编程处理器。实施例DOU有效地执行针对查询数据的语义感知数据移动。另外,DOU通过使用用以增加存储器接口的I/O带宽利用率的源存储器和目的地存储器并执行即时算法特定数据组织来将读取数据和写入数据存储并聚合到存储器。一个实施例DWE是灵活且可配置的。一个实施例DWE包括即时域特定数据组织。此外,实施例DWE包括用于在将其从一个存储器移动到另一个存储器时组织和优化非均匀数据访问和模式化流线数据访问的方法和逻辑。

实施例机制利用即时算法特定数据组织将非均匀或模式化读取和写入访问聚合到存储器。在一个示例中,CPU核心紧密耦合到包含源存储器和目的地存储器的DOU。该DOU还可以包括用以在数据需要处理之前,在本地以算法特定的方式组织所述数据的数据组织逻辑。

一个实施例通过聚合来自和去往DDR SDRAM的非均匀读取数据和写入数据来改善存储器I/O带宽利用率,尤其是DDR SDRAM接口的存储器I/O带宽利用率。一个实施例在需要处理数据之前执行语义感知即时域专用数据组织。一个实施例使用专用查询数据和存储数据有效地执行由域专用语言(domain specific language,DSL)描述的语义感知数据移动。一个实施例减少了计算引擎停顿。一个实施例为SoC提供了可扩展性。

图1示出了DWE 100、具有单个DOU的基于队列的实施例DWE子系统、DOU 110。DWE 100包括CPU核心102和CPU存储器子系统104。CPU核心102可以是任何通用可编程处理器。CPU存储器子系统104可以包括高速缓存和/或静态随机存取存储器(static random access memory,SRAM)。

CPU核心102经由基于队列的接口(包括命令队列111和响应队列113)耦合到DOU110。DOU 110通过将读取数据和写入数据聚合到存储器接口并执行即时数据重组来执行数据组织。此外,DOU 110通过命令队列111接收来自CPU核心102的命令,例如,通过128位队列。命令队列111中的命令指示DOU 110如何组织、读取和写入数据。DOU 110通过响应队列113响应CPU核心102,响应队列113可以是32位宽的队列。该响应队列携带命令,例如,其可能表明DOU已完成重组或者DOU在执行所述重组时遇到问题。

数据106从片外数据存储器(未示出)读取并写入CPU存储器子系统104。另外,数据106从CPU核心102写入所述片外数据存储器。设想存在两个读取/写入通道,但是可以使用更多的读取通道和更多的写入通道。在本示例中,有一个数据106。在其它示例中,有更多的数据块。

图2示出了DWE 120,其是具有多个DOU 132的多DOU DWE子系统的实施例。DWE120包括CPU核心122和CPU存储器子系统124,其可以包括高速缓存或SRAM。CPU核心122可以是任一通用可编程处理器。

CPU核心122通过基于队列的接口紧密耦合到DOU 132(n个DOU),包括命令队列133和响应队列135。DOU 132通过命令队列133从CPU核心122接收命令,例如,所述命令队列133可以是128位队列。此外,DOU 132通过响应队列135向CPU核心122传送命令,例如,所述响应队列135可以是32位队列。

数据128由CPU核心122读取自并写入外部数据存储器(未图示)。描绘了两个读取通道和两个写入通道,但是可以有更多的读取通道和写入通道。描绘了一个数据块,但是可以存在更多的数据块。

DOU可以以非均匀访问模式或以流访问模式操作。在非均匀访问模式下,非均匀读取数据和非均匀写入数据的聚合由查询和存储操作支持。另一方面,在流访问模式下,执行流分散和收集操作。

DWE可以支持绝对模式、隐式地址模式和流地址模式。在绝对地址模式下,CPU核心计算针对查询和存储的绝对地址。这些地址嵌入在DOU命令中。在隐式地址模式下,DWE通过在内部生成针对查询和存储的绝对地址来加速所述查询和存储地址计算。例如,DWE可以使用查找表来获得绝对地址的预先计算的偏移量。流地址模式使用内部流地址生成器逻辑在DOU中生成地址。

图3A示出了包括DOU 142和队列接口144的DOU体系结构140。DOU 142通过队列接口144与CPU核心(未示出)通信。队列接口144包括命令队列143和响应队列145。命令队列143可以是128位,并从CPU核心接收编码命令。这些命令指示对外部数据存储的读写操作的地址。此外,这些命令可以指示是否使用了绝对模式、隐式地址模式或流地址模式。命令可用于触发数据的重组。此外,响应队列145可以是32位,并将经编码的响应发送给CPU核心。这些响应指示是否已成功执行请求的事务。

命令队列(cQ)消息解码器152解码从CPU核心接收的命令队列143的输入消息,并基于所述输入消息采取动作。cQ消息解码器152通过链路1从命令队列143接收命令。CQ消息解码器152确定地址、字节数和要执行的动作。例如,cQ消息解码器152可以接收绝对地址。在另一个示例中,cQ消息解码器,例如,使用查找表,根据命令确定绝对地址。cQ消息解码器152可以使用链路6来配置流写入(TX)地址生成器146中的流写入地址。在一个示例中,cQ消息解码器152通过链路7发送消息来配置事务生成器158。cQ消息解码器152发送地址字节给事务生成器158。另外,cQ消息解码器152可以使用链路8上的消息来配置流读取(RX)地址生成器156中的流读取RX地址。此外,cQ消息解码器152可以解码命令并通过链路11向事务生成器158发送消息。CQ消息解码器152通过链路5向源高速缓冲存储器160发送消息。CQ消息解码器152还通过链路3将消息发送给响应队列(rQ)消息编码器150。在一个实施例中,cQ消息解码器152通过链路4与监视时钟154通信。另一实施例不使用监视时钟154。

rQ消息编码器150使用链路2将用于队列接口144的响应队列145中的传输的消息编码到CPU核心。rQ消息编码器150通过链路3从cQ消息解码器152接收消息。rQ消息编码器150通过链路29发送从DOU写入接口(I/F)174接收到的指示当前DOU状态的消息。在一个示例中,响应队列145是32位队列。

非均匀访问引擎270包括事务生成器158、数据存储分配器和跟踪器148、源高速缓冲存储器160、弹性缓冲器162、目的地高速缓冲存储器164和写入管理器170。事务生成器158基于经由链路11从cQ消息解码器152接收到的信息来生成事务。事务生成器158使用链路12向数据存储分配器和跟踪器148发出请求,询问所请求的数据是否在高速缓存内。当数据不在高速缓存内时,数据存储分配器和跟踪器148取消所述事务。所述信息可以包括源地址、目的地地址、大小和流参数。事务生成器158生成并提取事务的地址和大小。另外,事务生成器158生成DOU存储事务,其可以处于非均匀模式或流模式。DOU事务来自CPU内核。事务生成器158向数据存储分配器和跟踪器148发送请求以请求在源高速缓冲存储器160中分配高速缓存行。另外,事务生成器158经由链路13以流水线方式将所述请求提交给RX命令队列178。当所述事务在源高速缓冲存储器160中被命中时,数据存储分配器和跟踪器148发送特殊信号以取消冗余请求。此外,可以使用128位高级可扩展接口(advanced extensible interface,AXI)读取接口,例如接口26,与片外数据存储器(未示出)进行通信。可以使用另一种接口,例如AXI一致性扩展(AXI coherency extension,ACE)、高级高性能总线(advanced high-performance bus,AHB)、高级外围总线(advanced peripheral bus,APB)或其它接口。事务生成器158还通过链路9与弹性缓冲器162通信,并通过链路22与写入管理器170通信。

数据存储分配器和跟踪器148管理并跟踪源高速缓冲存储器160中的存储分配。通过链路12从事务生成器158接收存储分配请求。数据存储分配器和跟踪器148确定是否批准接收到的事务。例如,当请求的数据不在高速缓存中时,请求可能会被拒绝。数据存储分配器和跟踪器148响应事务生成器158,指示该请求是被批准还是被拒绝。当所述事务被批准时,数据存储分配器和跟踪器148基于批准的事务更新对所述高速缓存的跟踪。当请求用于存储事务并且所述数据不在高速缓存中时,数据存储分配器和跟踪器148为所述数据请求所述高速缓存中的空间。此外,当事务被批准并且存储被分配时,数据存储分配器和跟踪器148经由链路14将该事务发送给RX命令队列178。数据存储分配器和跟踪器148经由链路15在源高速缓冲存储器160中分配DOU事务的高速缓存行。当高速缓存行已被分配时,数据存储分配器和跟踪器148向RX命令队列178发送取消信号以避免冗余请求的提交。

源高速缓冲存储器160包含用于捕获DOU事务的源存储器。高速缓冲存储行通过链路15从数据存储分配器和跟踪器148分配。此外,源高速缓冲存储器160存储元数据以唯一地标识源存储行。源高速缓冲存储器160通过链路30从DOU读取接口176接收通信。在一个示例中,使用CAM标签地址。元数据可以包括源地址、目的地地址、目的地字节以及源地址和目的地地址之间的距离。因此,元数据指示数据在被逐出时所去往的目的地。所述数据保留在源存储器中,直到它被逐出。例如,当整个系统被刷新或者其它数据需要在高速缓存中获取位置时,该数据可能会被逐出。当源高速缓冲存储器160被逐出时,可以通过链路18将该数据发送给弹性缓冲器162。

弹性缓冲器162,例如,使用FIFO将来自源高速缓冲存储器160的逐出同步到目的地高速缓冲存储器164的写入。源高速缓冲存储器160经由链路18向弹性缓冲器162发送逐出消息。另外,目的地高速缓冲存储器164经由链路17使来自弹性缓冲器162的命令出队。另外,弹性缓冲器162经由链路9与事务生成器158通信。

目的地高速缓冲存储器164通过利用写入接口来聚合本质上很窄的非均匀写入数据。另外,目的地高速缓冲存储器164通过链路17使从弹性缓冲器162接收到的源存储器逐出的命令出队。当从CPU核心接收到刷新命令时,目的地高速缓冲存储器164通过链路19使用写入管理器170开始刷新目的地存储器。当数据从源存储器被刷新时,目的地高速缓冲存储器164执行收集功能。目的地高速缓冲存储器164聚集从源高速缓冲存储器160中的不同位置收集的更大数据行,直到行被合理地填满或被强制逐出。在一些示例中,目的地高速缓冲存储器164不存在。

写入管理器170对外部数据存储器上的对齐和非对齐地址执行写入操作。通过链路22从事务生成器158接收命令。此外,经由链路19从目的地高速缓冲存储器164接收数据。写入管理器170跟踪写入响应,这些写入响应指示写入是否已被成功提交到存储器。另外,写入管理器170通过链路20生成用于TX命令队列172的适当写入命令。

RX命令队列178对通过链路13接收到的来自事务生成器158的DOU事务的RX命令进行排队。此外,RX命令队列178经由链路14基于来自数据存储分配器和跟踪器148的信号来确定读取命令是提交还是移除。另外,RX命令队列178通过链路S1从流RX地址生成器156接收地址。这些命令通过链路25发送给DOU读取接口176。从RX命令返回的数据被放置在源高速缓冲存储器160中适当分配的源缓存行中以用于非均匀访问模式,并且经由链路S2被放入读取数据变换274中。

DOU读取接口(I/F)176经由链路25执行来自RX命令队列178的读取命令。DOU读取接口176从外部数据存储器(未示出)读入数据。DOU读取接口176在接口27上将读取命令转换成接口专用协议,例如,256位AXI读取接口。此外,DOU读取接口176将该读取数据通过链路30路由给源高速缓冲存储器160中适当的源存储行以用于非均匀访问模式,或经由链路S2路由给读取数据变换274(图3B中所示)。基于读取命令返回的数据经由链路30被放置在源高速缓冲存储器160中的适当分配的源存储行中。

在图3B中,流访问引擎278包括流RX地址生成器156、读取数据变换器274、流缓冲器272、流TX地址生成器146和写入数据变换器276。在一些模式中,例如,流模式之外的模式,流访问引擎278未被使用。

流RX地址生成器156生成用于读取和写入操作的流地址。在一个实施例中,地址模式经由命令消息已经由CPU核心进行编程。例如,命令队列消息通过链路8从cQ消息解码器152接收并且通过链路6从流TX地址生成器146接收。流RX地址生成器156通过链路S1向RX命令队列178发送用于事务的流读取地址。流RX地址生成器156可以通过链路6和8与流TX地址生成器146进行通信。基带应用可以具有多个天线,并且数据可能不被连续存储在存储器中。可以执行流分散/收集,其中,数据从多个不相交的位置被流式传输。数据可以重组为任意形状,例如,使用分散和收集。

读取数据变换器274经由链路S2对从DOU读取接口176接收到的数据执行数据变换。数据变换的一些示例包括压缩、厄密压缩和格式转换,例如,定点到浮点转换或浮点到定点转换。经变换的数据经由链路S3被发送给流缓冲器272。

流TX地址产生器146以流模式生成用于写入操作的流地址。地址模式可以经由命令消息由CPU核心进行编程。流TX地址生成器146经由链路S5将流写入地址提供给流缓冲器272。在执行流地址生成时,可能会绕过一些高速缓存。

流缓冲器272是循环缓冲器,其经由链路S2从读取数据变换器274接收数据。流缓冲器272还通过链路S5从流TX地址生成器146接收传输地址。循环缓冲器用于临时存储流数据。在一个实施例中,流缓冲器272执行转角存储(corner turn),诸如矩阵转置。所述数据经由链路S4从流缓冲器272输出到写入数据变换276。如图所示,流缓冲器272是分离的块。然而,在一个实施例中,流缓冲器272与用于源/目的地高速缓存的存储器重叠。

写入数据变换器276通过链路S4从流缓冲器272接收数据。写入数据变换器276变换所述输出数据。输出数据变换的示例包括扩展、厄密扩展和格式转换,例如,从定点到浮点,或从浮点到定点。经变换的数据经由链路S6被发送给TX命令队列172。

TX命令队列172使写入管理器170与DOU写入接口174同步。通过链路20从写入管理器170接收命令,并且通过链路S6从写入数据变换276接收写入数据。所述命令和写入数据通过链路24被输出到DOU写入接口174。当DOU写入接口停顿时,TX命令队列172提供向后的压力。

DOU写入接口174通过链路24使来自TX命令队列172的传输队列出队,并且通过接口28(例如,AXI写入接口)使来自TX命令队列172的写入数据出队。DOU写入接口174,例如,在接口28上执行接口专用协议转换。例如,可以使用具有字节使能的256位AXI写入接口。所述数据通过接口写入外部数据存储器。此外,通过链路29指示所有去往rQ消息编码器150的写入事务的完成,以发出操作完成的信号。

监视时钟154解决了DOU的死锁。监视时钟154通过链路4与cQ消息解码器152通信。监视时钟可以在请求到达时被打孔,并且当请求被服务时可以再次被打孔。当任务花费太长时间来响应时,监视时钟154刷新系统以防止挂机。

在源存储器中,读取数据被聚合成存储器接口的突发大小,并被存储在源存储器中,因此命中存储器的未来读取访问可以由源存储器服务。在设置源存储器的大小时,需要在局部性的利益和中断的不便之间进行权衡。在目的地存储器中,通过将写入数据缓存到目的地存储器来聚合写入数据。在同一目的地行的范围内的多个窄写入数据可以被聚合为一个高速缓冲行写入。数据存储分配和跟踪可用于管理DOU的内部源存储器和目的地存储器以保留局部性。数据组织逻辑支持经由多维访问模式访问的多个数据流的组织。

图4示出了由DOU 186执行的储存分散方法180。CPU 184向DOU 186发送命令。DOU 186从源存储器182读入数据。源存储器使数据存储在一起,例如按照数据的接收顺序。数据被读入DOU 186,在那里进行重组。在重组中,在源存储器182中连续的数据被分散到目的地存储器188中的非连续位置。所述数据被分散到目的地存储器188的四个不同区域。

图5示出了由DOU 296执行的查询收集方法290。CPU 294向DOU 296发送命令。DOU 296从源存储器292读取数据。所述数据存储在源存储器292的单独区域中。在本示例中,所述数据存储在源存储器292的五个单独的区域中。来自源存储器292的不同区域的数据被交互混合。DOU 296从源存储器292中的非连续位置读入数据,并且将要连续存储在目的地存储器298中的数据收集在一起。然后,DOU 296将收集到的数据存储在目的地存储器298中。

图6示出了由DOU 306执行的用于流收集的方法300。CPU 304向DOU 306发送命令。数据在源存储器302中存储在三个不同区域中。区域301具有地址Addr_A,区域303具有地址Addr_B,区域305具有地址Addr_C。数据从源存储器302被读入DOU 306,在那里所述数据被收集。数据从源存储器302中的非连续位置收集,连续地存储在目的地存储器308中。然后收集到的数据被写入目的地存储器308的Addr_D。

图7示出了用四个元素的转置粒子进行矩阵转置的方法310。CPU 314向DOU 316发送命令。数据从源存储器312被读入DOU 316。源存储器312是以行优先形式存储的8×8矩阵,其中,转置粒子311具有四个元素。行优先形式和列优先形式是以线性存储排列多维数组的两种方法。在行优先形式中,数组行的连续元素在存储器中是连续的。DOU316对数据进行转置。经转置的数据以列优先形式写入目的地存储器318。在列优先形式中,列的连续元素是连续的。

图8示出了厄密矩阵压缩存储的实施例方法的方法320。厄密矩阵是等于其自身共轭转置的复方阵。厄密矩阵的对角元素是实数,因为它们必须等于它们的复共轭。厄密矩阵作为存储器中大端格式的复数据被存储在源存储器322中。复数等于实部(Rxx)和虚部(iIxx)之和。压缩厄密矩阵包括对角元素,其次是下三角元素。上三角元素已被移除,因为它们可以由下三角形元素确定。厄密矩阵作为8×8矩阵行优先形式存储在源存储器322中。DOU 326从CPU 324接收命令。DOU从源存储器322读取厄密矩阵,并执行厄密压缩。压缩厄密矩阵然后作为存储器中大端格式的复数据由DOU 326存储在目的地存储器328中。厄密矩阵的对角元素纯粹是实数。目的地存储器328使用源存储器322的一半存储。

图9示出了厄密矩阵扩展的实施例方法的方法330。DOU 336从CPU 334接收命令。源存储器332包括存储器中大端格式的压缩厄密矩阵。压缩厄密矩阵包括对角元素,其次是下三角元素。DOU 336从源存储器332读入所述压缩厄密矩阵,并且扩展厄密元素。上对角元素被确定为对应的下三角元素的复共轭。扩展的厄密矩阵由DOU 336以大端格式存储在目的地存储器338中。目的地存储器338包含以行优先形式存储的8×8厄密矩阵。在另一个实施例中,厄密矩阵以列优先形式进行存储。

图10示出了厄密矩阵压缩的另一个实施例方法的方法340。DOU 346从CPU 344接收命令。厄密矩阵作为以行优先大端格式存储的8×8矩阵存储在源存储器342中。DOU346从源存储器342读入厄密矩阵并执行厄密压缩。在压缩过程中移除冗余信息。压缩厄密矩阵处于下三角行优先大端格式。DOU 346将压缩厄密矩阵存储在目的地存储器348中。

图11示出了行优先形式的厄密矩阵的厄密扩展方法350。DOU 356从CPU 354接收命令。DOU 356从源存储器352读入压缩厄密矩阵。压缩厄密矩阵以行优先下三角大端格式进行存储。DOU 356对压缩厄密矩阵执行厄密扩展。扩展厄密矩阵以行优先大端格式的8×8矩阵存储在目的地存储器358中。在另一个示例中,厄密矩阵以列优先形式进行存储。

图12示出了厄密矩阵压缩的另一个实施例方法的方法360。DOU 366从CPU 364接收命令。DOU 366从源存储器362读入厄密矩阵,所述厄密矩阵作为行优先大端格式的8×8矩阵进行存储。厄密矩阵以列优先上三角大端格式进行压缩。来自下三角部分的冗余元素被移除。DOU 366将压缩厄密矩阵存储在目的地存储器368中。

图13示出了用于厄密矩阵扩展的方法370。CPU 374向DOU 376发送命令。源存储器372包括上三角列优先大端格式的压缩厄密矩阵。DOU 376从源存储器372读入所述压缩厄密矩阵并执行厄密扩展。下三角元素是基于上三角元素确定的。然后,DOU 376以行优先大端格式的8×8矩阵将扩展矩阵存储在目的地存储器378中。在另一个示例中,厄密矩阵以列优先形式进行存储。

厄密矩阵压缩和扩展是压缩和扩展的示例。在其它实施例中,使用不同的压缩和扩展方法。

图14示出了由DOU执行的用于重组数据的实施例方法的流程图260。最初,在步骤262中,DOU从CPU接收命令。所述命令可以通过队列接口进行接收。所述队列接口可以是256位接口、128位接口、64位接口或32位接口。所述消息指示DOU重组数据。

在步骤263中,DOU从外部数据存储器读入数据。所述数据可以通过接口读取,例如AXI接口。

然后,在步骤264中,DOU基于在步骤262中接收到的命令来重组在步骤263中读取的数据。读取数据和写入数据被聚合到存储器接口。

在步骤266中,重组的数据被写入到外部数据存储器。这可以通过接口完成,例如AXI接口。

在步骤268中,DOU向CPU核心发送响应。所述响应可以通过消息队列发送,所述消息队列可以是64位、32位或16位。所述响应指示所述数据重组是否成功。

图15示出了在DOU中执行操作的实施例方法的流程图220。最初,在步骤222中,DOU从CPU核心接收命令。所述消息在命令队列中接收,例如128位队列。可以使用其它大小的队列,例如256位队列、64位队列或32位队列。所述命令指示DOU采取适当的行动。

接下来,在步骤224中,DOU对所述消息进行解码。消息接收器确定地址、字节数和要执行的动作。例如,消息接收器可以接收绝对地址。在另一个示例中,消息接收器,例如,使用查找表来基于所述命令确定绝对地址。消息接收器可以对流读取和写入地址进行配置。在一个示例中,消息接收器,例如,通过将地址字节发送给事务生成器来配置事务生成器。消息接收器还可以从片外数据存储器接收,例如,指示读取或写入的成功或失败的消息。

在步骤226中,DOU设置监视时钟。所述监视时钟用于防止死锁。

在步骤228中,DOU生成流读取地址。流读取地址可以基于由CPU核心编程的模式来生成。流地址是基于在步骤222中接收到的命令而生成的,并被发送给读取命令队列。流地址以流模式生成。在其它模式下,如隐式地址模式和隐式地址模式,不会生成流地址。

在步骤230中,DOU生成DOU事务。为非均匀模式或流模式生成事务。源存储器中用于分配的缓存行的请求被发送。另外,请求以流水线方式提交给读取命令队列。当源存储器中命中了事务时,所述请求被取消。

在步骤232中,数据存储分配和跟踪由DOU进行管理。源存储器中DOU事务的存储行被分配和跟踪。当所请求的存储行已经被分配时,发送取消信号到读取命令队列以避免冗余请求。

在步骤234中,DOU执行读取命令。所述读取命令在读取命令队列中进行接收。根据数据存储分配和跟踪提交或删除命令。通过接口从外部数据存储器读取数据,例如AXI接口。从读取命令返回的数据被放置在源高速缓冲存储器中适当分配的源行中。

在步骤242中,DOU从源高速缓冲存储器读取。读取数据被转换为接口专用协议,并被输出。要返回到存储器的读取数据被路由到目的地存储器中的相应存储行。可以使用非均匀模式逐出FIFO来协调来自源存储器的读取和去往目的地存储器的写入。

在步骤244中,数据被写入目的地存储器。窄的非均匀写入数据被聚合成突发写入数据。读取来自非均匀模式逐出FIFO的源存储器命令。当从CPU核心接收到刷新命令时,刷新源存储器。

在步骤250中,执行写入操作。写入操作可以执行用于外部数据存储器上的对齐或非对齐地址。可以使用接口来写入数据,例如AXI接口。此外,写入响应指示所述写入已被提交到存储器,并被跟踪。

在步骤237中,读取和/或写入消息由DOU发送给CPU核心。所述消息指示读取操作和/或写入操作是否成功。可以通过响应队列发送响应消息。

在步骤238中,评估在步骤226中设置的监视时钟。如果一段时间后还没有完成操作,监视时钟将取消这些操作。这可以防止系统挂机。

图16示出了由DOU执行的流访问的实施例方法的流程图380。在步骤382中,在将输入数据存储在流缓冲器中之前,对输入数据执行读取数据变换。变换的示例包括压缩、厄密压缩和格式转换。格式转换的示例包括从定点到浮点的转换,以及从浮点到定点的转换。在一个示例中,执行流收集。

在步骤384中,生成流写入地址。流写入地址经由命令消息基于由DWE的核心编程的模式生成。流写入地址生成器从流缓冲器中读取数据。然后,流写入地址生成器创建并向写入命令队列发送适当的存储器写入请求。

在步骤386中,使用流缓冲器,即循环缓冲器。执行循环缓冲以临时存储流数据。可以执行诸如矩阵转置等转角存储。在一个实施例中,流缓冲器是分离的块。在另一个实施例中,流缓冲器与用于源和/或目的地高速缓存的存储器重叠。

在步骤388中,在将输出数据写入到写入命令队列之前,对输出数据执行写入数据变换。输出数据变换的示例包括扩展、厄密扩展和格式转换,例如从定点到浮点的转换,或者从浮点到定点的转换。

在步骤390中,执行写入操作。写入管理器与DOU写入接口同步。当DOU写入接口停顿时可能会产生背压。写入命令与写入数据一起从写入队列中移除。可以对所要写入的数据执行接口专用协议转换。例如,可以将所述数据转换成AXI形式,例如具有字节使能的256位AXI接口。当写入事务完成时,DOU写入接口通知消息编码器所述操作完成。

一个实施例聚合存储器存取以改善存储器控制器引脚利用率和带宽。DWE可能在DDR存储器中有用,以改善带宽和引脚利用率。一个实施例通过以缓存友好的方式组织数据来减少高速缓存损失和复杂性。多个天线主导的基带数据访问模式涉及从多个位置收集的数据。nodeB上的不同接收天线的多路高速缓存用于覆盖来自多个地址的访问数据。一个实施例使得诸如DSP等可编程计算引擎能够更高效地执行信号处理功能。一个实施例减少了可能以其它方式用于管理地址指针和数据组织的程序代码。一个实施例从多个可配置数量的地址指针中获取数据以覆盖无线基带算法中的各种数据访问模式。一个实施例减少了用于HAC的基于多端口多组存储器的数据组织的使用。一个实施例对可编程计算引擎使用高效电源管理。数据重组的使用可能会减少所需存储器的大小。

表1示出了DWE模拟。数据组织以及聚合和解聚的性能数据在基线核心(baseline core,Bmode)上并采用DWE(Dmode)执行。Bmode代表没有DWE的SoC系统实现方式。Dmode表示嵌入在SoC系统实现方式中的基于DOU的DWE。DOU比基准访问模式的性能提高了60%,包括与配置DOU和元数据更新相关的开销。

表1

实施例方法和逻辑用于在将数据从一个存储器存储移动到另一个存储器存储时聚合、组织和优化非均匀数据访问和模式化流线数据访问。一个实施例结合了源存储器和目的地存储器。实施例DOU以算法特定格式排列数据,例如,连续存储在存储器中的矩阵,转置分布式矩阵(非连续地存储在存储器中)以及压缩和扩展厄密矩阵。

图17示出了用于执行本文描述的方法的实施例处理系统600的框图,其可以安装在主机设备中。如图所示,处理系统600包括处理器604、存储器606和接口610-614,其可以(或可以不)如图17所示那样设置。处理器604可以是适于执行计算和/或其它处理相关任务的任一组件或组件集合,并且存储器606可以是适于存储由处理器604执行的编程和/或指令的任一组件或组件集合。在一个实施例中,存储器606包括非暂时性计算机可读介质。接口610、612、614可以是使处理系统600与其它设备/组件和/或用户进行通信的任一组件或组件集合。例如,接口610、612、614中的一个或多个可以适于将来自处理器604的数据、控制或管理消息传送到安装在主机设备和/或远程设备上的应用。作为另一个示例,接口610、612、614中的一个或多个可以适于使用户或用户设备(例如,个人计算机(PC)等)与处理系统600交互/通信。处理系统600可以包括未在图17中描绘的附加组件,例如长期存储器(例如,非易失性存储器等)。

在一些实施例中,处理系统600被包括在正在访问电信网络或者以其它方式部分地访问电信网络的网络设备中。在一个示例中,处理系统600位于诸如基站、中继站、调度器、控制器、网关、路由器、应用服务器或者电信网络中的任何其它设备等的无线或有线电信网络中的网络侧设备中。在其它实施例中,处理系统600位于访问无线或有线电信网络的用户侧设备中(诸如移动台、用户设备(UE)、个人计算机(PC)、平板电脑、可穿戴通信设备(例如,智能手表等)或适于访问电信网络的任何其它设备)。

在一些实施例中,接口610、612、614中的一个或多个将处理系统600连接到适于通过电信网络上发送和接收信令的收发器。图18示出了适于通过电信网络发送和接收信令的收发器700的框图。收发器700可以安装在主机设备中。如图所示,收发器700包括网络侧接口702、耦合器704、发送器706、接收器708、信号处理器710和设备侧接口712。网络侧接口702可以包括适于通过无线或有线电信网络发送或接收信令的任一组件或组件集合。耦合器704可以包括适于促进通过网络侧接口702的双向通信的任一组件或组件集合。发送器706可以包括适于将基带信号转换为适合于通过网络侧接口702传输的调制载波信号的任一组件或组件集合(例如,上变频器、功率放大器等)。接收器708可以包括适于将通过网络侧接口702接收的载波信号转换成基带信号的任一组件或组件集合(例如,下变频器、低噪声放大器等)。信号处理器710可以包括适于将基带信号转换为适合于通过设备侧接口712传送的数据信号的任一组件或组件集合,或者反之亦然。设备侧接口712可以包括适于在信号处理器710和主机设备内的组件(例如,处理系统600、局域网(local area network,LAN)端口等)之间传送数据信号的任一组件或组件集合,等等。

收发器700可以通过任何类型的通信介质发送和接收信令。在一些实施例中,收发器700通过无线介质发送和接收信令。例如,收发器700可以是适于根据诸如蜂窝协议(例如,长期演进(long-term evolution,LTE)等)的无线电信协议、无线局域网(wireless local area network,WLAN)协议(例如,Wi-Fi等)或任何其它类型的无线协议(例如,蓝牙、近场通信(nearfield communication,NFC)等)等进行通信的无线收发器。在这样的实施例中,网络侧接口702包括一个或多个天线/辐射元件。例如,网络侧接口702可以包括被配置用于多层通信的单个天线、多个分开的天线或多天线阵列,例如单输入多输出(single input multiple output,SIMO)、多输入单输出(multiple input single output,MISO)、多输入多输出(multiple input multiple output,MIMO)等。在其它实施例中,收发器700通过有线介质(例如,双绞线电缆、同轴电缆、光纤等)发送和接收信令。特定处理系统和/或收发器可利用所示的所有组件,或仅利用所述组件的子集,集成度可能因设备而异。

虽然已经结合说明性实施例对本申请进行了描述,但是并不应在限制性意义上来理解本说明书。在参照说明书后,说明性实施例以及本申请其它实施例的各种修改和组合对本领域技术人员而言将变得显而易见。因此,所附权利要求书将涵盖任何这样的修改或实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1