CN108293027B - 数据流送单元和用于操作数据流送单元的方法 - Google Patents

数据流送单元和用于操作数据流送单元的方法 Download PDF

Info

Publication number
CN108293027B
CN108293027B CN201680070151.1A CN201680070151A CN108293027B CN 108293027 B CN108293027 B CN 108293027B CN 201680070151 A CN201680070151 A CN 201680070151A CN 108293027 B CN108293027 B CN 108293027B
Authority
CN
China
Prior art keywords
data
unit
dsu
storage unit
compute engine
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
CN201680070151.1A
Other languages
English (en)
Other versions
CN108293027A (zh
Inventor
阿希什·莱·什里瓦斯塔瓦
艾伦·葛加理
苏什马·沃克鲁
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN108293027A publication Critical patent/CN108293027A/zh
Application granted granted Critical
Publication of CN108293027B publication Critical patent/CN108293027B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种数据流送单元(DSU)和一种用于操作DSU的方法。在实施方式中,DSU包括:存储器接口,其被配置成连接至存储单元;计算引擎接口,其被配置成连接至计算引擎(CE);以及地址生成器,其被配置成管理表示存储单元中的地址位置的地址数据。该数据流送单元还包括数据组织单元,该数据组织单元被配置成访问存储单元中的数据并且重新组织所述数据以便转发至计算引擎,其中,存储器接口通信地连接至地址生成器和数据组织单元,其中,地址生成器通信地连接至数据组织单元,并且其中,数据组织单元通信地连接至计算引擎接口。

Description

数据流送单元和用于操作数据流送单元的方法
相关申请的交叉引用
本申请要求于2015年12月3日提交的题为“Data Streaming Unit and Methodfor Operating the Data Streaming Unit”的美国非临时专利申请序列号14/958,773的优先权,该申请通过引用并入本文中,就好像其全部内容再现一样。
技术领域
本发明总体涉及数据流送单元和用于操作数据流送单元的方法,并且在特定实施方式中,涉及无线基带系统和用于操作无线基带系统的方法。
背景技术
传统的无线基带系统包括数字信号处理器(digital signal processor,DSP)、标准非一致访问架构(non-uniform access architecture,NUMA)或缓存以及存储装置(片上存储器或片外DDR存储器)。通常由DSP经由NUMA或缓存来访问存储在存储装置(片上存储器或片外DDR存储器)中的数据。
发明内容
根据本公开内容的一个方面,一种数据流送单元(data streaming unit,DSU),包括:存储器接口,其被配置成连接至存储单元;计算引擎接口,其被配置成连接至计算引擎(compute engine,CE);以及地址生成器,其被配置成管理表示存储单元中的地址位置的地址数据。该数据流送单元还包括数据组织单元,该数据组织单元被配置成访问存储单元中的数据并且重新组织所述数据以便转发至计算引擎,其中,存储器接口通信地连接至地址生成器和数据组织单元,其中,地址生成器通信地连接至数据组织单元,并且其中,数据组织单元通信地连接至计算引擎接口。
根据一个实现方式,数据组织单元被配置成将数据重新组织为矢量形式。
根据一个实现方式,矢量形式包括单指令多数据(single instruction multipledata,SIMD)矢量形式。
根据一个实现方式,DSU还包括被配置成临时存储经重新组织的数据的DSU保持寄存器。
根据一个实现方式,DSU保持寄存器被配置成被映射至位于CE中的计算引擎寄存器。
根据一个实现方式,DSU保持寄存器被配置成从计算引擎接收弹出/推入指令消息。
根据一个实现方式,数据组织单元被配置成访问流数据。
根据一个实现方式,DSU还包括DSU数据存储单元,DSU数据存储单元通信地连接至存储器接口、数据组织单元和计算引擎接口。
根据一个实现方式,DSU数据存储单元是内容可寻址存储器(contentaddressable memory,CAM)标记存储器。
根据一个实现方式,DSU还包括数据格式化单元,数据格式化单元通信地连接至DSU数据存储单元、数据组织单元和DSU保持寄存器,DSU保持寄存器又通信地连接至计算引擎接口。
根据一个实现方式,数据格式化单元包括蝶形网络或CLOS网络。
根据本公开内容的一个方面,一种用于经由数据流送单元(DSU)将数据从存储单元提供至计算引擎(CE)的方法,包括:由DSU从存储单元接收数据;由DSU将数据从第一格式重新组织为第二格式;以及由DSU将具有第二格式的数据临时存储在DSU保持寄存器处。
根据一个实现方式,该方法还包括由CE将具有第二格式的数据从DSU保持寄存器映射至计算引擎寄存器。
根据一个实现方式,该方法还包括由CE将具有第二格式的数据从DSU保持寄存器弹出至计算引擎寄存器。
根据一个实现方式,该方法还包括:由DSU地址生成器生成包括存储单元中的地址的外发地址命令;由数据组织单元将存储单元中的地址与标记阵列中的地址进行比较;当标记匹配时,取消外发地址命令;以及当标记不匹配时,将外发地址命令发送至存储单元。
根据一个实现方式,该方法还包括:当标记匹配时,记录DSU数据存储装置中的槽编号;当标记不匹配时,分配DSU数据存储装置中的空闲槽;以及将数据从存储单元引导至DSU数据存储装置的空闲槽。
根据一个实现方式,第二格式是单指令多数据(SIMD)矢量格式。
根据本公开内容的一个方面,一种系统,包括:计算引擎(CE),其被配置成处理基带数据;存储单元,其被配置成存储基带数据;缓存,其通信地连接至计算引擎和存储单元;以及数据流送单元(DSU),其被配置成通过绕过缓存将基带数据从存储单元提供至计算引擎或者将基带数据从计算引擎提供至存储单元,其中,数据流送单元通信地连接至存储单元和计算引擎。
根据一个实现方式,计算引擎包括矢量寄存器,并且计算引擎被配置成将数据从DSU保持寄存器映射至计算引擎的矢量寄存器。
根据一个实现方式,计算引擎包括矢量寄存器,并且计算引擎被配置成从DSU保持寄存器访问数据,并将该数据从DSU保持寄存器传输至计算引擎的矢量寄存器。
根据一个实现方式,计算引擎包括多个硬件线程,数据流送单元包括多个数据流送单元,并且其中,数据流送单元被分配给硬件线程。
根据一个实现方式,单个数据流送单元被分配给单个硬件线程。
根据一个实现方式,多个硬件线程的子集被分配给多个数据流送单元。
根据本公开内容的一个方面,一种用于操作基带系统的方法,包括:由数据流送单元从存储单元访问第一数据;由数据流送单元将第一数据从第一格式重排为第二格式,其中,第二格式包括矢量格式;以及由计算引擎将具有第二格式的第一数据从DSU保持寄存器映射至或弹出至计算引擎中的矢量寄存器。该方法还包括:由计算引擎在第一次迭代中处理经重排的第一数据,以及由计算引擎将处理后的第一数据存储在存储单元中,其中,计算引擎、数据流送单元和存储单元是独立的硬件设备。
根据一个实现方式,访问第一数据包括直接从存储单元访问第一数据。
根据一个实现方式,存储处理后的第一数据包括不经由数据流送单元而将处理后的第一数据存储在存储单元中。
根据一个实现方式,存储处理后的第一数据包括不经由缓存而将处理后的第一数据存储在存储单元中。
根据一个实现方式,该方法还包括:由数据流送单元从存储单元访问第二数据;由数据流送单元将第二数据从第一格式重排为第二格式,其中,第二格式包括矢量格式;由计算引擎将具有第二格式的第二数据从DSU保持寄存器映射至或弹出至计算引擎、计算引擎中的矢量寄存器;以及由计算引擎在第二次迭代中处理经重排的第二数据。
附图说明
为了更完整地理解本发明及其优点,现在结合附图参考以下描述,在附图中:
图1A示出了根据实施方式的被配置成经由数据流送单元(DSU)将数据从存储单元提供至计算引擎(CE)的无线基带系统;
图1B示出了根据实施方式的被配置成经由DSU将数据从CE提供至存储单元的无线基带系统;
图2A示出了根据实施方式的数据流送单元;
图2B示出了根据实施方式的CAM标记查找的流程图;
图3示出了根据实施方式的高级地址生成逻辑;
图4示出了根据实施方式的多线程计算引擎与多个数据流送单元;
图5A和图5B示出了根据实施方式的多线程计算引擎,其中,线程使用不同数量的数据流送单元;以及
图6示出了根据实施方式的无线基带单元的算法。
具体实施方式
常规的无线处理系统经由标准化的非一致存储器访问(non-uniform memoryaccess,NUMA)架构来访问所存储的数据。无线基带数据访问模式不是顺序的,而是作为替代,在很大程度上跨越地访问多个存储器位置(例如m个存储器位置)。在大多数情况下,m个不同的存储器位置大于数据缓存的n个处理路径,并且这些m个不同位置之间的跨越偏移大于向数据缓存中的每个数据路径分配的大小。这在几乎每次迭代中都会导致显著的冲突缓存未命中,并且造成有价值的DSP资源的低效利用。此外,使用DSP资源来生成地址数据并且将数据重新组织为矢量形式。因此,由于使数据更接近DSP而浪费了宝贵的处理周期。
本发明的实施方式加速计算引擎(CE)的数据访问,并且减少NUMA架构的暂停。本发明的又一实施方式规定:计算引擎例如数字信号处理器(DSP)执行数据处理而不是计算地址或索引,然后等待从存储单元(例如,任何片上存储器和片外DDR存储器)到达的数据。另外,在一些实施方式中,系统将地址计算和数据转换(例如将数据重排为矢量形式)从计算引擎卸载至DSU。在又一实施方式中,DSU在将数据从存储单元提供至计算引擎时绕过NUMA架构(特别是缓存),反之,DSU在将数据从计算引擎提供至存储单元时也绕过NUMA架构(特别是缓存)。
图1A示出了根据实施方式的被配置成经由数据流送单元(DSU)将数据从存储单元提供至计算引擎(CE)的无线基带系统。无线基带系统100包括计算引擎(compute engine,CE)110。计算引擎110可以是数字信号处理器(DSP)。DSP可以是超长指令字(very longinstruction word,VLIW)DSP。CE 110被配置成处理诸如基带信号和控制信号的信号。可替选地,CE 110可以是任何其他处理器。在一些实施方式中,CE 110包括被配置成直接从数据流送单元130接收数据的矢量寄存器115。
无线基带系统100还包括缓存120、数据流送单元(DSU)130以及存储单元140。缓存120通信地连接至CE 110并且通信地连接至存储单元140。DSU 130通信地连接至CE 110并且通信地连接至存储单元140。DSU 130可以不直接通信地连接至缓存120并且可以是独立于缓存120的实体。
缓存120可以是比存储单元140小、快的存储器。缓存120存储来自频繁使用的存储位置的数据的副本。大多数CE 110具有不同的独立缓存,缓存包括指令缓存和数据缓存。数据缓存可以被组织为单级缓存(例如,L1)或者多级缓存(例如,L1、L2等)。缓存120可以包括易失性存储设备例如SRAM或DRAM。缓存120被配置成从CE 110接收数据请求并且向CE 110提供数据。
存储单元140可以包括易失性存储器或非易失性存储器。存储单元140可以仅包括易失性存储器例如DRAM。可替选地,存储单元可以仅包括非易失性存储器例如PCRAM、MRAM(例如,STT-MRAM)或ReRAM。非易失性存储器可以是闪存阵列。在一些实施方式中,存储单元140可以包括硬盘或固态存储器。在各种实施方式中,存储单元140可以包括易失性存储器或非易失性存储器的组合。在一些实施方式中,数据被存储在存储单元140中,其中,数据来自不同的天线。来自这些不同天线的数据可以存储在处于不同位置的块中。所存储的数据可以是基带数据。
DSU 130可以是与CE 110分离的设备(例如,独立芯片)。DSU 130被配置成从CE110接收指令并且将数据从存储单元140提供至CE 110。DSU 130可以绕过缓存120。DSU 130还被配置成计算或生成存储单元140中的数据位置的地址数据。例如,DSU 130可以管理指向存储单元140中的数据块的数据指针。
系统100可以是片上系统(system on chip,SoC)、集成电路(integratedcircuit,IC)。SoC可以包括计算引擎110、缓存120以及DSU 130。SoC还可以包括存储单元140的部分或全部。例如,存储单元140可以包括片上存储器和片外存储器(例如,独立芯片)例如DDR4存储器。在其他实施方式中,计算引擎110和缓存120可以是独立芯片,DSU 130可以是独立芯片并且存储单元可以是独立芯片。在一些实施方式中,DSU 130可以是处理器、微控制器或可编程逻辑器件(programmable logic device,PLD)例如FPGA。
在一些实施方式中,无线基带系统100被包含在基站例如eNB中。
在一些实施方式中,无线基带系统100将地址生成操作和地址计算操作从CE 110卸载至DSU 130。例如,CE 110将用于接收(例如读取)(基带)数据的地址位置的计算外包给DSU 130。然而,在各种实施方式中,CE 110可以不将以下操作外包:向存储单元140呈送或存储(例如,写入)所计算的(基带)数据。这可以以传统方式经由缓存120而不经由DSU 130来完成。
在一些实施方式中,无线基带系统100将至矢量形式的数据重新组织从CE 110卸载至DSU 130。DSU 130可以将数据组织为特定于算法的矢量形式,例如单指令多数据(SIMD)矢量。
在各种实施方式中,无线基带系统100经由DSU 130绕过缓存120并且特别是数据缓存以将数据从存储单元140带到CE 110。DSU 130可以绕过缓存120以仅处理诸如实时数据的数据,而不是处理用于控制无线基带系统100的数据。通过首先检查控制数据的副本是否在缓存120中,无线基带系统100仍然可以使用缓存120从存储单元140中的位置读取控制数据(或者将控制数据写入到存储单元140中的位置)。如果控制数据的副本在缓存120中,则CE 110立即从缓存120读取,这比从存储单元140读取要快得多。
在一些实施方式中,DSU 130而不是CE 110可以执行无线基带矢量信号处理算法的标量部分,例如地址指针管理和数据重新组织,以形成单指令多数据(SIMD)矢量。这具有以下优点:CE 110可以集中于执行信号处理,并且不会浪费有价值的资源用于其他活动例如外围活动。这还具有以下优点:CE 110的程序代码可以被简化并且不需要管理地址指针和数据组织。
在又一实施方式中,DSU 130可以将所存储的数据直接从存储单元140带到CE110。这具有绕过NUMA架构的优点。避免了NUMA架构问题和延迟。例如,避免了冲突缓存未命中。DSU 130可以从多个可配置数量的地址指针获取数据以涵盖无线基带系统中的各种数据访问模式。最后,DSU 130有利地为CE 110提供高效电力管理,因为与由于NUMA架构相关延迟问题造成的暂停相比,CE 110可以被提早断电。
可替选地,在其他实施方式中并且在图1B中示出,无线基带系统100可以将地址计算和地址生成外包给DSU 130。系统100可以被配置成经由DSU 130将来自CE 110的数据写入到存储单元140。除了经由缓存120写入数据之外这可以完成,或者这可以在不使用缓存L1(缓存甚至可以不用于流数据)的情况下完全单独地完成。DSU 130可以排列数据以将分离存储转换成突发(burst)存储,并且因此优化存储器存储操作。DSU 130可以具有经由矢量寄存器到CE 110的直接接口。
现在回到图1A,DSU 130可以将来自存储单元140中的不同地址位置的数据块复制到DSU 130中的DSU存储单元139(在图2A中)。例如,DSU 130可以同时从存储单元140的不同位置读取跨越数据。跨步可以是存储单元140中的将在矢量寄存器中相邻的元素间隔的距离。存储单元140可以将诸如采样模拟数据(来自不同天线)的数据保存在不同位置中。
下面描述如何经由DSU 130将数据从存储单元140加载至计算引擎110。DSU 130可以是将来自存储单元140的流数据提供至CE 110的附加加载路径。在一些实施方式中,可以经由DSU 130中的保持队列寄存器135(图2A)来提供流数据。这些寄存器135可以是在DSU数据存储单元139旁边的在概念上的队列寄存器(下面进一步论述)。
DSU 130可以将跨越数据存储在DSU存储装置139中,DSU存储装置139可以是临时存储装置。DSU 130可以从存储单元140读取在地址位置Blk0处的数据块Blk0、从存储单元140读取在地址位置Blk1处的数据块Blk1、从存储单元140读取在地址位置Blk2处的数据块Blk2以及从存储单元140读取在地址位置BlkN处的数据块BlkN。数据块Blk0、Blk1、Blk2...以及BlkN。跨越数据可以被定位成在DSU存储器139中彼此相邻。DSU 130处理、重排和重新格式化数据块Blk0、Blk1、Blk2...BlkN的数据。例如,数据被复用和解复用以形成数据流,例如数据流DSU Data0、DSU Data1、DSU Data2和DSU DataN。数据流可以最终以矢量形式排列。DSU 130中的矢量形式可以与CE 110中使用的矢量形式相同。矢量形式可以包括SMID矢量形式以启用CE 110的SMID能力。DSU 130可以将这些数据直接写入到CE 110的矢量寄存器115中。CE 110可以不从DSU 130请求数据,而是DSU 130将数据自动地(在没有被请求或提取的情况下)写入到矢量寄存器中。
图2A示出了DSU 130的详情。图2A示出了DSU 130和存储单元140。DSU 130包括地址/数据接口(端口、输入接口或存储器接口)132和输出接口(端口、输出接口或CE接口)138。地址/数据接口132可以连接至将DSU 130与存储单元140连接的总线。总线可以包括数据总线和地址总线。总线可以是标准总线或专有总线。DSU 130的输出接口138可以经由另一总线连接至CE 110。
DSU 130还包括地址生成器133、数据组织单元136(例如,数据存储分配和跟踪单元)以及DSU数据存储单元139(例如,临时存储单元)。地址生成器133通信地连接至接口132(经由命令队列134)并且通信地连接至数据组织单元136。数据组织单元136通信地连接至接口132(经由命令队列134)和DSU数据存储装置139。DSU数据存储装置139又通信地连接至接口132和数据格式化单元137,数据格式化单元137通信地连接至DSU保持寄存器135,该DSU保持寄存器135又通信地连接至输出端口138。DSU 130(特别是地址生成器133)而不是CE 110被配置成(基于CE 110的指令)执行地址生成、地址计算和地址管理。DSU 130而不是CE 110可以被配置成执行数据组织,例如数据重排、数据重新组织和矢量排列。
地址生成器133包括单指针模式或多指针模式的专用多维流地址生成器。地址生成器133可以在每个周期生成新的请求(例如,未调整请求)。命令队列134可以保持命令单元,数据组织单元136修改、取消或释放命令。这些命令被经由接口132发送至存储单元140。
数据组织单元136管理DSU的内部数据存储装置139、跟踪每条数据的生命周期并且发现任何数据重用。内部数据存储装置139可以是内容可寻址存储器(CAM)。CAM可以被组织为CAM标记比较槽。每个槽可以由其标记地址唯一地标识。数据存储装置139可以包括槽阵列。例如,数据存储装置139可以保持以下元数据以跟踪每个槽中的数据的内容和生命周期。
表1DSU数据存储装置元数据
标记地址 32位物理地址
有效 指示标记地址是否有效的一位
就绪 指示数据已经到达该地址的一位
活动 指示是否存在对该数据的任何未完成引用的一位
表2有效、就绪和活动状态位
有效 就绪 说明 可用于分配
0 X 地址无效
1 0 针对槽发送的请求;数据在飞行中
1 1 数据可用/抵达
上述元数据可以帮助数据存储单元139识别数据流中的数据重复使用机会。
图2B示出了根据实施方式的CAM标记查找方法200的流程图。在第一步骤210中,地址生成器133(基于CE 110的指令)生成地址请求给数据组织单元136和命令队列134。在步骤220处,数据组织单元136将地址请求与DSU数据存储装置139的标记阵列中的所有标记进行比较。在地址请求匹配(标记命中)时,在步骤230中,地址组织单元136取消(命令队列134中的)对于该地址的外发命令,并且记录DSU数据存储单元139中的与地址请求匹配的槽编号。当地址不匹配(标记未命中)时,在240处,数据组织单元136分配DSU数据存储单元139中的空闲槽(例如,通过设置槽有效=1并且就绪=0)。不从命令队列中取消外发地址命令,而是更新外发地址命令以包括所分配的槽。该命令将所请求的数据从存储单元140引导至所分配的槽。数据组织单元136可以针对该槽更新特定于槽的元数据(例如,通过设置槽活动=1,这暗指该槽被引用并且将对该槽的最近引用更新为引用队列中的引用的位置)。方法200将所生成的地址转换成表示数据的槽编号以及提取数据的命令。
在一些实施方式中,DSU 130的数据组织单元136可以通过选择在最新的分配之后的一个槽或者选择最低的编号来以FIFO的顺序分配DSU数据存储装置139中的槽。
DSU数据存储单元139可以存储任何数量的元素。重深度缓冲可以使得DSU 130能够在数据流中提前提取,从而隐藏存储器系统延迟。
格式化单元137格式化并且组织适于CE 110的算法的数据。格式化单元137可以是全蝶形网络或简化的CLOS网络。例如,数据格式化单元137可以将数据组织为矢量形式(例如,SMID矢量),并且可以将数据存储到DSU保持寄存器135中。数据组织单元136可以将数据(例如,矢量形式的数据)馈送或写入到CE 110的矢量寄存器中。在其他实施例中,CE 110从DSU保持寄存器135读取或提取数据。下面进一步描述这些方法的一些实施方式。
由于DSU 130可以尝试在CE 110对数据的需求之前提取数据,因此,DSU 130可以保持全部吞吐量。DSU保持寄存器135可以提供少量的弹性缓冲,使得该过程保持完全流水线。DSU保持寄存器的大小依赖于CE 110的流水线以及CE 110如何消耗数据。
在一些实施方式中,无线基带系统110包括多个DSU 130。在这样的情况下,每个DSU 130可以包括针对DSU 130描述的部件。此外,每个DSU 130可以包括与CE 110的接口和与存储单元140的接口。
以下段落描述如何将数据从DSU保持寄存器135加载至CE 110的矢量寄存器。DSU保持寄存器135可以是保持队列寄存器。DSU保持寄存器可以通过传统的对队列的读/写指令例如弹出/推入(POP/PUSH)或任何其他等效方法将数据提供至计算引擎。在第一实施方式中,保持队列寄存器是CE的功能单元的运算对象的一部分。在第二实施方式中,保持队列寄存器具有特殊指令以将数据从保持队列寄存器弹出至CE的VLIW寄存器(例如,VLIW寄存器文件)。
根据第一实施方式,DSU保持队列寄存器可以是CE 110的矢量功能单元中的运算对象的一部分。CE的所有候选指令可以增加附加操作数字段以支持直接从DSU保持队列寄存器135读取数据。这可能需要改变操作数解码字段并且可能增加操作码的大小。为了降低额外的复杂性,可以将CE的寄存器的子集映射至DSU保持队列寄存器135。
根据该实施方式,可以创建C intrinsic代码中的特殊字段,该特殊字段可以转化成暗指该读取是否将从该保持队列寄存器弹出元素的指示。如下所示,可以使用“++”来暗指从队列寄存器的隐式弹出,否则该值保持不变:
在利用“++”的情况下,下面的C intrinsic
elemY=MUL(DSU0++,DSU1++);
转化成
MUL DST_VReg,DSU0_POP_Vreg,DSU1_POP_VReg
在没有“++”的情况下,下面的C intrinsic
elemY=MUL(DSU0,DSU1);
转化成
MUL DST_VReg,DSU0_Vreg,DSU1_VReg.
在第二实施方式中,可以创建特殊指令以将数据从DSU保持寄存器135弹出至CE110中的矢量寄存器文件。根据该实施方式,可以创建要在CE的功能单元上执行的两个特殊指令。这两个指令包括从DSU保持队列寄存器135弹出数据并且将数据移动到内部寄存器文件中。在一些实施方式中,可以使用现有的消息队列弹出指令来实现该功能。
POPDSU的规范形式可以采取以下参数:
POPDSU.xxx Vr,DSU0(用于DSU0)
POPDSU.xxx Vr,DSU1(用于DSU1)
Figure GDA0001678935560000081
其中,计算引擎格式的POPDSU指令规范如下:
操作数
Figure GDA0001678935560000091
汇编语法
POPDSU Vr,DSU0_Vreg(用于DSU0)
描述
POPDSU指令从DSU0的消息队列读取128位数据。读取的数据被写入Vr寄存器。如果DSU消息队列为空,则处理器暂停。
下面是第一实施方式和第二实施方式的示例。
Figure GDA0001678935560000092
Figure GDA0001678935560000101
Figure GDA0001678935560000111
其中,在将指针操作卸载到DSU之后使用以下代码。
针对第一实施方式(更新的矩阵多核):
Figure GDA0001678935560000112
Figure GDA0001678935560000121
针对第二实施方式(更新的矩阵多核):
Figure GDA0001678935560000122
Figure GDA0001678935560000131
图3示出了地址生成器133(与数据组织单元136一起)如何访问存储单元140中的数据的实施方式算法。例如,图3示出了对四个不同基地址位置的流式访问。DSU 130可以同时访问具有多于或少于四个地址位置的存储单元140。对这四个不同位置的访问模式可以不同,例如可以使用不同的参数(例如,维度可以是这样的参数)。例如,在流式访问时,可以使用基地址位置ptr_0、计数COUNT0或COUNT2以及维度DIM1_0来访问第一访问位置,可以使用基地址位置ptr_1、计数COUNT0或COUNT2以及维度DIM1_1来访问第二访问位置,可以使用基地址位置ptr_2、计数COUNT0或COUNT2以及维度DIM1_2来访问第三访问位置,并且可以使用基地址位置ptr_3、计数COUNT0或COUNT2以及维度DIM1_3来访问第四访问位置。然而,在其他实施方式中,对于两个不同的地址位置或者对于所有访问位置,流式访问模式可以是相同的。
图4示出了具有通信地连接至多个DSU 130的CE 110的无线基带单元的实施方式。CE 110可以包括多个硬件线程110A至110N。硬件线程110A至110N可以是独立的硬件线程。CE 110可以通信地连接至指令缓存122,指令缓存122又通信地连接至存储单元140。CE 110还可以通信地连接至数据缓存121,数据缓存121又通信地连接至存储单元140。多个数据流送单元130A至130D可以各自通信地连接至存储单元140。数据流送单元130A至130D中的每一个可以通信地连接至硬件线程110A至110N。每个数据流送单元130A至130D可以被分配给硬件线程110A至110N中的一个。在一些实施方式中,存在与硬件线程110A至110N相同数量的数据流送单元130A至130D。在其他实施方式中,存在比硬件线程110A至110N更多或更少的数据流送单元130A至130D。每个数据流送单元130A至130D可以执行在先前实施方式中描述的功能,并且每个线程110A至110N可以执行在先前实施方式中描述的CE功能。
在图5A的实施方式中,实施方式示出了将一个数据流送单元130A至130D分配给一个硬件线程110A至110D。因此,此处是以一对一关系将有限数量的数据流送单元130A至130D分配给有限数量的硬件线程110A至110D。
在图5B的实施方式中,实施方式示出了将若干个或全部数据流送单元130A至130D分配给硬件线程110A至110D的子集。所有数据流送单元130A至130D可以被分配给少于最大数量的硬件线程110A至110D。例如,四个数据流送单元130A至130D可以被分配给两个硬件线程110A至110B。两个硬件线程110A和110B可以作为一个硬件线程进行操作。剩余的两个硬件线程130C和130D可以经由NUMA架构并且在未分配有数据流送单元130A至130D的情况下以传统方式进行操作。
图6示出了CE 110操作和DSU 130操作的流程图。CE 110的处理流程可以包括步骤410至440。在步骤410中,向CE 110提供功能进入。在步骤415中,地址指针被初始化并且被提供。可以通过将数据从缓存120和存储单元140提供至CE 110来提供地址指针。在下一步骤420中,对DSU 130进行配置。可以通过将数据从缓存120和存储单元140提供至CE 110和DSU 130来对DSU进行配置。
在地址指针被初始化并且对DSU 130进行配置之后,CE 110可以开始处理信号数据(例如来自天线的基带数据)或实时数据。在步骤425中,CE 110执行第一指令集(乘法和累加)并且执行数据处理。通过DSU 130的步骤450提供数据。可以经由DSU从存储单元140提取数据并且例如将该数据重排为矢量形式。在CE 110中可以不将所接收的数据重排为矢量形式。CE 110可以按数据由DSU 130提供(例如,由数据组织单元136写入到DSU保持寄存器135和CE 110的矢量寄存器中)的原样采用数据,并且可以直接对这些数据执行信号处理。
在处理数据之后,在步骤430中,处理后的数据可以被存储在数据缓存120和/或存储单元140中。处理后的数据可以由CE 110经由存储指令(可替选地,经由如关于图1b说明的DSU 130)写入到数据缓存120和/或存储单元140中430。然后,该处理移动至判定块435。块435确定循环是否结束。如果循环未结束,则该处理移动回至信号处理步骤425,其中,由DSU 130经由第二迭代步骤455接收其他数据并且在第二迭代步骤中处理其他数据。在第二步骤455中,DSU 130直接从存储单元140再次提取其他数据并且重排其他数据以用于CE110的第二次迭代。在第二次迭代中执行了第一指令集之后,在步骤430中可以经由存储指令将第二次处理后的数据存储在数据缓存120和/或存储单元140中。在该步骤430之后,处理再次前进至判定步骤435。处理425至435可以迭代M次,其中,数据每次均由DSU 130提取、重排并且传送至CE 110(例如,在步骤450至465中)。当循环结束时,判定块435使处理前进至步骤440,在步骤440中,CE 110退出该功能(或第一指令集)。循环可以是对许多不同的数据执行某些指令集。然后,CE 110可以进入第二功能(第二指令集)并且关于第二功能执行先前描述的所有步骤等。在各种实施方式中,经由缓存120而不经由DSU 130将处理后的数据存储在存储单元140中或者写入存储单元140。
在一些实施方式中,DSU 130的处理流程可以包括步骤450至465。在步骤450中,通过绕过数据缓存120直接从存储单元140提取数据以用于第一次迭代。在数据被提供至CE110之前,可以将该数据从第一格式重排为第二格式。第二格式可以包括矢量形式。对CE110而言第二格式可能是最有效的。在步骤455中,直接从存储单元140提取数据并且重排(或重新格式化)该数据以用于第二次迭代。在数据被提供至CE 110之前,可以将该数据从第一格式重排为第二格式。第二格式可以包括矢量形式。DSU 130在步骤460和465中重复这些动作以进行第三次迭代和第四次迭代,或者可替选地,以进行多达第M次迭代。
在一些实施方式中,DSU 130可以重新使用先前已经请求并且从存储单元140提取的数据。所提取的数据可以临时存储在DSU 130内。该数据中的一些或全部可以被之后的迭代重新使用。这具有数据访问更快的优点,并且减少了对存储单元140的请求的次数。
尽管已经参考说明性实施方式描述了本发明,但是该描述并非意在以限制的意义进行解释。在参考说明书之后,说明性实施方式的各种修改和组合以及本发明的其他实施方式对本领域技术人员而言将是明显的。因此,所附权利要求意在涵盖任何这样的修改或实施方式。

Claims (21)

1.一种数据流送单元(DSU),包括:
存储器接口,其被配置成不经过缓存的连接至存储单元;
计算引擎接口,其被配置成连接至计算引擎(CE);
地址生成器,其被配置成管理表示所述存储单元中的地址位置的地址数据;以及
数据组织单元,其被配置成访问所述存储单元中的数据并且重新组织所述数据以便转发至所述计算引擎,
其中,所述存储器接口通信地连接至所述地址生成器和所述数据组织单元,其中,所述地址生成器通信地连接至所述数据组织单元,并且其中,所述数据组织单元通信地连接至所述计算引擎接口。
2.根据权利要求1所述的数据流送单元,其中,所述数据组织单元被配置成将所述数据重新组织为矢量形式。
3.根据权利要求2所述的数据流送单元,其中,所述矢量形式包括单指令多数据(SIMD)矢量形式。
4.根据权利要求1至3中任一项所述的数据流送单元,还包括被配置成临时存储经重新组织的数据的DSU保持寄存器。
5.根据权利要求4所述的数据流送单元,其中,所述DSU保持寄存器被配置成被映射至位于所述CE中的计算引擎寄存器。
6.根据权利要求1至3和5中任一项所述的数据流送单元,其中,所述DSU保持寄存器被配置成从所述计算引擎接收弹出/推入指令消息。
7.根据权利要求1至3和5中任一项所述的数据流送单元,其中,所述数据组织单元被配置成访问流数据。
8.根据权利要求1至3中任一项所述的数据流送单元,还包括DSU数据存储单元,所述DSU数据存储单元通信地连接至所述存储器接口、所述数据组织单元和所述计算引擎接口。
9.根据权利要求8所述的数据流送单元,其中,所述DSU数据存储单元是内容可寻址存储器(CAM)标记存储器。
10.根据权利要求8所述的数据流送单元,还包括数据格式化单元,所述数据格式化单元通信地连接至所述DSU数据存储单元、所述数据组织单元和DSU保持寄存器,所述DSU保持寄存器又通信地连接至所述计算引擎接口。
11.根据权利要求8所述的数据流送单元,其中,所述数据格式化单元包括蝶形网络或CLOS网络。
12.根据权利要求1所述的数据流送单元,其中,所述数据流送单元被配置为将所述数据从所述计算引擎写入所述存储单元。
13.一种系统,包括:
计算引擎(CE),其被配置成处理基带数据;
存储单元,其被配置成存储所述基带数据;
缓存,其通信地连接至所述计算引擎和所述存储单元;以及
数据流送单元(DSU),其与所述存储单元连接且二者之间没有缓存,并被配置成通过绕过所述缓存将基带数据从所述存储单元提供至所述计算引擎,其中,所述数据流送单元被配置为处理实时数据,而所述缓存被配置为处理控制数据。
14.根据权利要求13所述的系统,其中,所述数据流送单元包括地址生成器和数据组织单元,其中,所述地址生成器被配置成管理表示所述存储单元中的地址位置的地址数据,并且其中,所述数据组织单元被配置成从所述存储单元访问数据,并且将所述数据重新组织为矢量形式以便提供至所述计算引擎。
15.根据权利要求13和14中任一项所述的系统,其中,所述数据流送单元包括DSU保持寄存器,其中,所述计算引擎包括矢量寄存器,并且其中,所述计算引擎被配置成将所述数据从所述DSU保持寄存器映射至所述计算引擎的所述矢量寄存器。
16.根据权利要求13至14中任一项所述的系统,其中,所述计算引擎包括多个硬件线程,其中,所述数据流送单元包括多个数据流送单元,并且其中,所述数据流送单元被分配给所述硬件线程。
17.根据权利要求13至14中任一项所述的系统,其中,单个数据流送单元被分配给单个硬件线程。
18.根据权利要求16所述的系统,其中,所述多个硬件线程的子集被分配给所述多个数据流送单元。
19.根据权利要求13所述的系统,其中,所述数据流送单元被配置为将数据从所述计算引擎写入所述存储单元,并且其中,所述数据为所述实时数据。
20.一种数据流送单元(DSU),包括:
存储器接口,其被配置成直接连接至存储单元;
计算引擎接口,其被配置成连接至计算引擎(CE);
地址生成器,其被配置成管理表示所述存储单元中的地址位置的地址数据;以及
数据组织单元,其被配置成访问所述存储单元中的数据并且重新组织所述数据以便转发至所述计算引擎,
其中,所述存储器接口通信地连接至所述地址生成器和所述数据组织单元,其中,所述地址生成器通信地连接至所述数据组织单元,并且其中,所述数据组织单元通信地连接至所述计算引擎接口。
21.根据权利要求20所述的数据流送单元,还包括DSU数据存储单元,所述DSU数据存储单元通信地连接至所述存储器接口、所述数据组织单元和所述计算引擎接口,其中,所述DSU数据存储单元是内容可寻址存储器(CAM)标记存储器。
CN201680070151.1A 2015-12-03 2016-11-14 数据流送单元和用于操作数据流送单元的方法 Active CN108293027B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/958,773 US10419501B2 (en) 2015-12-03 2015-12-03 Data streaming unit and method for operating the data streaming unit
US14/958,773 2015-12-03
PCT/CN2016/105749 WO2017092564A1 (en) 2015-12-03 2016-11-14 Data streaming unit and method for operating the data streaming unit

Publications (2)

Publication Number Publication Date
CN108293027A CN108293027A (zh) 2018-07-17
CN108293027B true CN108293027B (zh) 2020-10-09

Family

ID=58796298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680070151.1A Active CN108293027B (zh) 2015-12-03 2016-11-14 数据流送单元和用于操作数据流送单元的方法

Country Status (3)

Country Link
US (1) US10419501B2 (zh)
CN (1) CN108293027B (zh)
WO (1) WO2017092564A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9965187B2 (en) * 2016-02-18 2018-05-08 Lawrence Livermore National Security, Llc Near-memory data reorganization engine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739242A (zh) * 2009-11-27 2010-06-16 宇盛通信科技(深圳)有限公司 一种流数据处理方法及流处理器
CN102035778A (zh) * 2009-09-27 2011-04-27 中国科学院计算技术研究所 用于宽带无线通信的数字基带处理器
CN102354304A (zh) * 2011-09-22 2012-02-15 青岛海信信芯科技有限公司 数据传输方法、数据传输装置和soc芯片
CN104202054A (zh) * 2014-09-16 2014-12-10 东南大学 一种硬件lzma压缩实现系统及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US8364924B2 (en) * 2009-10-21 2013-01-29 International Business Machines Corporation Achieving a high throughput in a storage cache application using a flash solid state disk
JP6225687B2 (ja) * 2013-02-18 2017-11-08 富士通株式会社 データ処理装置、およびデータ処理方法
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
CN104753830B (zh) 2013-12-25 2017-10-24 展讯通信(上海)有限公司 基带芯片及其数据处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102035778A (zh) * 2009-09-27 2011-04-27 中国科学院计算技术研究所 用于宽带无线通信的数字基带处理器
CN101739242A (zh) * 2009-11-27 2010-06-16 宇盛通信科技(深圳)有限公司 一种流数据处理方法及流处理器
CN102354304A (zh) * 2011-09-22 2012-02-15 青岛海信信芯科技有限公司 数据传输方法、数据传输装置和soc芯片
CN104202054A (zh) * 2014-09-16 2014-12-10 东南大学 一种硬件lzma压缩实现系统及方法

Also Published As

Publication number Publication date
US10419501B2 (en) 2019-09-17
WO2017092564A1 (en) 2017-06-08
US20170163698A1 (en) 2017-06-08
CN108293027A (zh) 2018-07-17

Similar Documents

Publication Publication Date Title
US11113057B2 (en) Streaming engine with cache-like stream data storage and lifetime tracking
US11994949B2 (en) Streaming engine with error detection, correction and restart
US11573847B2 (en) Streaming engine with deferred exception reporting
US11068164B2 (en) Streaming engine with fetch ahead hysteresis
JPH08328958A (ja) 命令キャッシュ、キャッシュメモリ装置及びその方法
US11709778B2 (en) Streaming engine with early and late address and loop count registers to track architectural state
US11934833B2 (en) Stream data unit with multiple head registers
Jayasena et al. Stream register files with indexed access
CN104765575A (zh) 信息存储处理方法
CN104765574A (zh) 数据云端存储方法
CN104778100A (zh) 一种安全备份数据的方法
CN108293027B (zh) 数据流送单元和用于操作数据流送单元的方法
JP2006099770A (ja) シングルポートメモリを使用した命令キャッシュ
Csordas et al. In search of lost bandwidth: Extensive reordering of DRAM accesses on FPGA
Bae et al. Ssdstreamer: Specializing i/o stack for large-scale machine learning
Chen et al. On-Chip Memory Customization

Legal Events

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