CN103890719B - 数字信号处理器以及基带通信设备 - Google Patents

数字信号处理器以及基带通信设备 Download PDF

Info

Publication number
CN103890719B
CN103890719B CN201280051536.5A CN201280051536A CN103890719B CN 103890719 B CN103890719 B CN 103890719B CN 201280051536 A CN201280051536 A CN 201280051536A CN 103890719 B CN103890719 B CN 103890719B
Authority
CN
China
Prior art keywords
instruction
vector
execution unit
vector execution
queue
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.)
Expired - Fee Related
Application number
CN201280051536.5A
Other languages
English (en)
Other versions
CN103890719A (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.)
MediaTek Sweden AB
Original Assignee
MediaTek Sweden AB
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 MediaTek Sweden AB filed Critical MediaTek Sweden AB
Publication of CN103890719A publication Critical patent/CN103890719A/zh
Application granted granted Critical
Publication of CN103890719B publication Critical patent/CN103890719B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种具有向量执行单元的数字信号处理器,其设置为用以执行向量形式的多个数据的指令,包括:本地队列(730),其设置为用以从程序存储器接收指令并在本地队列中保存该指令,直到满足预定条件为止。所述本地队列(730)配置为在某时间上从程序存储器接收指令序列,并存储最后的N条指令,N为整数。向量执行单元中的向量控制器包括队列控制装置(732,721,744),其设置用以使本地队列将存储在本地队列中的具有M条指令的序列重复K次,其中M为小于等于N的整数。由于具有程序存储器中的IDLE命令,因此可减少向量执行单元继续等待的时间。

Description

数字信号处理器以及基带通信设备
技术领域
本发明涉及基于SIMT的数字信号处理器。
背景技术
多数移动通信设备使用包括一个或多个数字处理器(DSP)的射频收发器。
这种处理器中频繁执行的多数功能是针对大量采样数据而完成的。因此,采用一种称为单指令多数据流(Single Instruction Multiple Data,SIMD)处理器的处理器,因为它可以实现单个指令操作多个数据项,而不是每次操作一个整数。这种处理器能够处理向量指令,这意味着单一指令对多个数据单元执行相同功能。因此,它们可称为向量执行单元。数据被分组为字节或字,并封装为要操作的向量。
作为SIMD架构的进一步改进,已经开发出单指令流多任务流(SingleInstruction Multiple Tasks,SIMT)架构。通常,SIMT架构中已具有与作为内核处理器一部分的整数执行单元相关的一个或两个SIMD类向量执行单元。
国际专利申请WO2007/018467公开了一种根据SIMT架构的DSP,其具有包括整数处理器和程序存储器的处理器内核,以及与内核连接但未集成在内核中的两个向量执行单元。该向量执行单元可以为复杂算法逻辑单元(ComplexArithmetic Logic Units,CALU)或复杂乘法累加单元(CMAC,ComplexMultiply-Accumulate Units)。该内核具有向执行单元分配指令的程序存储器。在WO2007/018467专利文献中,每一向量执行单元具有单独的指令解码器。这可以有效地方式实现向量执行单元的使用在彼此之间独立,以及与处理器的其他部分之间独立。
因此,在SIMT架构中具有若干执行单元。通常每个时钟周期里,可由程序存储器向执行单元中的一个单元发出一条指令。由于向量运算通常处理大向量,因此,在一个时钟周期里一个向量执行单元中接收的指令将要花费数个时钟周期来进行处理。因此,在随后的时钟周期里,可向处理器的其他计算单元发出指令。由于向量指令运行在长向量上,因此许多RISC指令可在向量操作期间执行。
多种基带算法可分解为更小的基带任务链,其中在任务之间几乎没有后向依赖性。该属性不仅容许在向量执行单元上并行执行不同任务,它也可通过使用上述指令集架构而加以利用。
为提供控制流同步并控制该数据流,“空闲”指令通常可用于中止控制流直到给定的向量操作完成。“空闲”指令将中止进一步的指令提取直到满足特定条件。该条件可以是向量执行单元中的向量指令的完成。
DSP任务通常包括具有两至三条指令的序列,下文将对其进行更详细地讨论。这表明向量执行单元将接收向量指令来进行运算,并在提供的数据向量上执行该向量指令直到整个向量完成为止。下一条指令将是处理该结果并将其存储在存储器中,理论上这可在对整个向量执行计算后随即发生。然而,向量执行单元通常得等待几个时钟周期才能得到它的下一条指令,因为处理器内核忙于等待其他向量单元完成操作,这导致向量执行单元的低效利用。随着向量执行单元数量的增长,向量执行单元处于非活动状态的可能性增大。
发明内容
由同一申请人与本申请同日提交的、名称为“数字信号处理器和基带通信设备”的共同未决专利申请涉及增强这种处理器中的并行程度。根据该共同未决专利申请,该问题是通过在每个向量执行单元中提供本地队列而解决的。特定向量执行单元的本地队列能够存储用于该向量执行单元的多条命令,并将其反馈至与程序存储器的状态无关的向量执行单元。
因此,根据此共同未决专利申请的处理通过提高处理器中的并行度而变得更有效。本发明基于如下认知:在现有技术中,已完成向量指令的向量执行单元通常不能立即接收下一指令。当向量执行单元准备好接收新指令而程序存储器中的第一条命令用于另一处于繁忙状态的向量执行单元时,上述情况将会发生。在此情况下,没有一个向量执行单元能接收新命令直到其他向量执行单元准备好接收其下一命令为止。由于为各个向量执行单元提供本地队列,因此可同时为向量单元提供针对一个向量单元的包括数条指令的一批指令。SYNC指令暂停从本地队列读取指令直到满足条件为止,该条件通常为数据通路准备好接收并执行另一指令。这两个特征共同使得指令序列能够即刻发送到指令执行单元,存储在本地队列中,并在向量执行单元中依序处理,以使得向量执行单元一旦完成一条指令就能开始下一条指令。采用这种方式,每一向量执行单元可在最少的非活动时间情况下工作。
本发明的目的在于使处理器内部的通信尽可能有效。
根据本发明通过在数字信号处理器中使用向量执行单元来实现所述发明目的,所述向量执行单元设置为用以执行包括针对向量形式的多数据进行操作的向量指令的指令,其中,向量执行单元包括
向量控制单元(向量控制器),其设置为用以判断指令是否为向量指令,若是,通知用以保存该向量长度的计数寄存器,所述向量控制器进一步设置并控制指令的执行,其中,所述向量执行单元包括
-设置为用以接收来自程序存储器的至少第一指令和第二指令的本地队列,并在本地队列中保存第二指令直到预定条件满足为止
-所述本地队列设置为用以在某时间从程序存储器接收指令序列,并存储最后的N条指令,N为整数,
-其中,所述向量控制器包括设置为用以按照将存储在本地队列中的M条指令的序列重复K次的方式控制所述本地队列的队列控制装置,其中,M为小于等于N的整数。
优选的是,向量控制器基于从内核接收的发出信号来控制指令的执行。或者,该发出信号可由向量执行单元本身在本地处理。
队列控制装置优选包括:
-缓冲管理器,其设置为用以记录要重复的M条指令,以及指令应当重复的次数K,其中M和K为整数;
-重复控制装置,其设置为用以监测指令序列的重复执行,以判断指令的重复何时应当停止;
-指令计数寄存器,其设置为用以保存要重复的指令数M及其在队列中的位置。
根据本发明,本地队列设置为例如循环缓冲器的形式,以存储最后的N条指令,其中N为整数。可配置为任意合适的整数,例如16。向量执行单元则具有用以将队列中最后M条指令重复K次的重复指令,其中M和K同样为合适的整数。K可以从控制寄存器文件、指令字或者其他来源获取。在此情况下,向量执行单元还包括对重复次数进行计数到K次的重复计数器。重复功能设置为用以在停止指令重复前,递减(或递增)重复计数器K次。
根据本发明,由于同一指令集合可从存储器发送一次,并在向量执行单元中执行多次,因此节省了控制通路中的带宽。这与现有技术的解决方案相反,在现有技术中,每次将要执行的时候,通过从程序存储器中发送同一指令序列获得指令循环。对于K值很大的情况,这尤其有利。
缓冲管理器可设置为用从控制寄存器文件中或者指令字本身获取整数K。
在优选实施例中,重复控制装置为用以记录K次重复的计数器。
根据本发明实施例的处理器特别用于数字信号处理器,特别是基带处理器。因此,本发明还涉及一种数字信号处理器,包括:
-处理器内核,包括配置为用以执行整数指令的整数执行单元;以及
-与处理器内核分开并与之耦合的至少第一和第二向量执行单元,其中,每一向量执行单元分别为如上所述的向量执行单元;
-所述数字信号处理器包括程序存储器和发出逻辑,其中,程序存储器设置为用以保存用于第一和第二向量执行单元的指令,发出逻辑用于向第一和第二向量执行单元发出包括向量指令的指令。
通常,程序存储器可设置在处理器内核中,并可设置为用以为整数执行单元保存指令。
本发明还涉及一种适于多模有线和无线通信的基带通信设备,包括:
-前端单元,设置为用以发送和/或接收通信信号;
-耦合至模拟前端单元的可编程数字信号处理器,其中可编程数字信号处理器为如上所述的数字信号处理器。
在优选的实施例中,本文通篇提及的向量执行单元为SIMD类向量执行单元或者为用以操作向量数据的可编程协处理器。
根据本发明实施例的处理器对于数字信号处理器尤其是基带处理器而言特别有用。前端单元可以为模拟前端单元,其设置为用以发送和/或接收射频或基带信号。
这种处理器广泛用于不同类型的通信设备中,例如移动电话、电视接收器和线缆调制解调器。因此,基带通信设备可设置用于无线通信网络中的通信,例如作为移动电话或者移动数据通信设备。基带通信设备也可设置用于根据其他无线标准例如蓝牙或者WiFi的通信。它也可以为电视接收器、线缆调制解调器、WiFi调制解调器,或者能够向其处理器发送基带信号的任意其他类型的通信设备。应该理解术语“基带”仅指处理器内部处理的信号。实际接收和/或发送的通信信号可以为在有线或无线连接上接收的任意合适类型的通信信号。这些通信信号通过该设备的前端单元以适当的方式转换为基带信号。
附图说明
以下通过举例并参照附图对本发明进行更详细的说明。
图1为根据本发明实施例的基带处理器的框图;
图2为显示图1中处理器内核的一个实施例的指令发出管线的示意图;
图3显示了SIMT处理器内的指令发出逻辑;
图4显示了根据现有技术的向量执行单元;
图5显示了具有本地队列的向量执行单元;
图6显示了根据本发明总体实施例的具有本地队列的向量执行单元;
图7显示了根据本发明的本地队列。
具体实施方式
图1为根据本发明的实施例的基带处理器PBBP500的框图。PBBP500包括处理器内核,其包括RISC类型的执行单元,并用RISC数据通路510表示。PBBP还具有多个向量执行单元520,530,各个单元分别包括向量控制单元275和SIMD数据通路525,535。如本领域常见的,各条数据通路525,535可包括若干数据通路。例如,数据通路535通常可具有四条并行的CMAC数据通路,它们共同构成数据通路525。
为了对多个向量执行单元进行控制,内核硬件500包括耦合至程序计数器502的程序流控制单元501,该程序计数器502又耦合至程序存储器(PM)503。PM503耦合至复用器504、单元字段提取器508。复用器504耦合至指令寄存器505,其耦合至指令解码器506。指令解码器506进一步耦合至控制信号寄存器(CSR)507,其又耦合至RISC数据通路510的剩余部分。
类似地,向量执行单元520和530中的每一个还设置为用以接收来自位于内核中的程序存储器503的指令。向量执行单元包括各自的向量长度寄存器521,531、指令寄存器522,532、指令解码器523,533以及CSR524,534,它们耦合至各自的数据通路525和535。以下结合图3将会更详细地就与本发明相关的方面说明这些单元及其功能。
图2为现有技术中处理从程序存储器到不同向量执行单元的指令的示例,用以说明本发明的基本问题。图2左列表示时间(单位为执行时钟周期)。其余列从左向右依次表示第一和第二向量执行单元(更确切地说是CMAC203和CALU205的数据通路)和整数执行单元的执行管线以及发到此处的指令。更具体地说,在第一时钟周期内,复向量指令(如CMAC256)被发到CMAC203。如图所示,向量指令需要多个周期来完成。在下一时钟周期里,向量指令被发到CALU205。在下一时钟周期里,整数指令被发到整数执行单元510。在随后的几个周期内,当执行向量指令时,可将任意数量的整数指令发到整数执行单元510。要注意的是,尽管图中未示出,其余向量执行单元也可以相似的方式同时执行指令。
在某些情况下,“空闲(idle)”指令可包括在指令序列中,以阻止内核程序流控制器从程序存储器提取指令。例如,为了使程序流与向量指令的完成同步,“空闲”指令可用于将指令的提取挂起直到特定条件已满足为止。该条件通常是涉及的向量执行单元已执行完在先的向量指令并能接收新的指令。在此情况下,涉及的向量执行单元520,530的向量控制器275向程序流控制器501发送诸如标志的指示,表示该向量执行单元准备好接收另一指令。
空闲指令可在同一时刻用于多个向量执行单元。在此情况下,不再从程序存储器503发送进一步的指令,直到涉及的向量执行单元520,530中的每一个单元已发送了指示其准备好接收新指令的标志为止。
在图2的示例中,“空闲”指令在上述整数指令之后发出。在本示例中,空闲指令用于中止控制流直到由CMAC203执行的向量操作完成为止。
接下来将基于具有任意数量的执行单元的SIMT DSP来讨论随后的示例。为简单起见,本示例中假设全部单元为CMAC向量执行单元,但实际上不同类型的单元可混合并一起使用。
在许多基带处理算法和程序中,算法可分解为若干DSP任务,分别包括“前言(prolog)”、向量操作和“结语(epilog)”。前言主要用于在向量操作可执行之前清空累加器、设定寻址模式和指针以及类似操作。当向量操作已完成时,向量操作的结果可进一步由任务中“结语”部分的代码处理。在SIMT处理器中,通常只需要一条向量指令来完成向量操作。
以下通过根据现有技术的示例性任务来举例说明一个DSP任务的典型布局:
本示例中的代码片段执行超过512个复数数值的复数点积运算,然后再次将结果存储到存储器中。该例程要求由处理器内核提取如下指令。
在上述示例中,将setcmvl、cmac和star指令发到CMAC向量执行单元,并在CMAC向量执行单元中执行,而ld、out和idle指令在整数内核(“内核”)中执行。
向量指令的向量长度指示向量执行单元应当操作多少数据字(采样)。向量长度可以任意适合的方式例如下列其中之一的方式来设定:
1)通过专用指令设定,例如上文中的setcmvl.123
2)在指令本身中携带,例如,根据如图2所示的形式:cmac.123携带
3)由控制寄存器设定,例如根据形式out r0、cmac_vector_length来设定
指令idle#cmac0命令内核程序流控制器停止提取新指令直到CMAC0单元完成其向量操作为止。在空闲功能释放并允许提取新指令之后,提取“star”指令并将其分发至CMAC0向量执行单元。明星指令命令CMAC向量执行单元将累加结果存储至存储器。在下一示例中,还是说明现有技术,其中使用两个向量执行单元。与第一向量执行单元相关的指令序列与上文相同:
在此情况下,第二向量执行单元被命令以执行长度为2048的向量操作,这花费的时间将为第一向量执行单元中长度为512的操作的时间的4倍。因此,第一向量执行单元将在第二向量执行单元之前结束操作。由于通过idle#cmac1指令命令程序存储器保持下一指令直到第二向量执行单元结束操作为止,因此直到第二向量执行单元结束操作,它才能向第一向量执行单元发送新的指令。由于具有与第二向量执行单元相关的空闲指令,因此对于超过1000个的时钟周期而言第一向量执行单元将是非活动的。
上述示例采用两个向量执行单元。将会理解,由于与一个特定的向量执行单元相关的空闲指令将潜在地影响更多数量的其他向量执行单元,因此向量执行单元的数量越多,问题更大。根据本发明,可通过为每一向量执行单元提供本地队列来减小该问题。本地队列设置为用以从处理器内核的程序存储器接收针对其向量执行单元的要连续执行的一条或多条指令,并向该向量执行单元一次转发一条指令。
同时,引入命令本地队列保持下一条指令直到特定条件满足的命令。该条件可以为例如向量执行单元已完成前一命令或数据通路准备好接收新的指令。为简单起见,在本文中这一新命令称为SYNC。该条件可在针对SYNC指令的指令字中规定,或者可从控制寄存器文件或其他来源读取。
下文给出采用新SYNC命令的指令序列的示例:
与现有技术相反,两个命令序列中的每一个可发送至与同一指令相关的向量执行单元的本地队列,并存储于此,同时等待发送一条命令到向量执行单元内部的指令解码器。如上文所述,sync命令用于中止本地队列直到向量执行单元结束cmac命令操作,其中该cmac命令为向量指令,并因此需要几个时钟周期来执行。
图3显示了现有技术中基带处理器700的指令发出逻辑,其可用做本发明的起点。基带处理器包括含有程序存储器PM702的RISC内核701和RISC程序流控制单元703,其中该存储器为处理器中的不同执行单元保存指令。从程序存储器702提取指令发送至发出逻辑单元705,该逻辑单元对于全部指令单元而言是常见的,并设置为用以控制向哪里发送各个特定指令。发出逻辑705对应于图1中的单元字段提取器508和发出控制器509这些单元。在此情况下,发出逻辑连接至若干向量执行单元710,712,714,并通过复用器715耦合至RISC内核和数据通路单元716,后者为RISC内核的一部分,对应于图1中的505,506,507和510表示的单元。如上文所述,在一个实施例中包括实际指令的指令字发送至全部执行单元,而与特定指令对应的发出信号仅发送至将要执行该指令的执行单元。在备选实施例中,发出信号由各个向量执行单元在本地处理。
图4显示了根据现有技术的向量执行单元710,其可以为图3中向量执行单元710,712,714中的一种。向量执行单元710具有向量控制器720、向量长度计数器721、指令寄存器722和指令解码单元723。与图3相同,图4中的向量执行单元710接收来自程序存储器702的指令,不过图4进行了简化。指令字为实际指令,其被接收到指令寄存器722中并转发至指令解码器723。经由发出逻辑单元705在向量控制器中接收发出信号,并将其用于控制指令字的执行。如果发出信号是活动的,则将指令载入到指令寄存器中解码并执行,否则将其丢弃。向量控制器720还管理向量长度计数器721和系统中使用的其他控制信号,这将在下文中讨论。
传统上,可在每个时钟周期内从程序存储器702中提取用于执行单元中的一个的一条指令。指令字中的单元字段可从指令字中提取,并用于控制将指令分发到哪个控制单元。例如,如果单元字段为“000”,则可将指令分发至RISC数据通路。这可能导致发出逻辑705允许命令字通过复用器715而进入RISC内核716(图4中未示出),然而在本周期内并没有新的指令要载入到向量执行单元。然而,如果单元字段保存任意其他值,那么发出逻辑705可使对应的指令向所针对的向量执行单元发出信号。然后,所选择的向量执行单元中的向量控制器720使指令字通过,并进入所述向量执行单元的指令寄存器722。在此情况下,NOP指令将被发送至RISC内核716中的RISC数据通路指令寄存器。
当将指令分发到向量执行单元时,为处理向量指令,可从指令字提取向量长度字段并存储在计数寄存器721中。该计数寄存器可用于记录相应的向量指令中的向量的长度,以及发送表示该向量执行单元已做好准备以接收另一指令的标志的时间。当相应的向量执行单元已完成向量操作时,向量控制器720可产生发送至程序流控制703(图4中未示出)的信号(标志),以表示该单元做好准备接受新指令。此外,每一向量执行单元520,530(参考图1)的向量控制器720可在执行单元内部生成用于前言和结语声明的控制信号。例如,这种控制信号可控制用于向量操作的VLU和VSU,并且也可管理奇向量长度。
当发出逻辑705通过解码单元字段判定应当发送特定指令到特定向量执行单元时,将指令字从程序存储器702载入至指令寄存器722。而且,如果(通过向量控制器)确定该指令携带向量长度字段,则将该值载入至计数寄存器721作为向量长度值。向量控制器720对部分指令字解码,以判断该指令是否为向量指令以及是否携带向量长度信息。若是,则向量控制器720为计数寄存器721激活信号,以将表示向量长度的数值载入到计数寄存器721中。向量控制器720也命令指令解码器单元723开始对该指令解码,并开始向数据通路724发送控制信号。指令寄存器722中的指令随后通过指令解码器723来进行解码,其控制信号在发送至数据通路之前保存在控制信号寄存器724中。计数寄存器721以常规方式记录指令应重复的次数,也就是向量长度。
图5显示了根据本发明的向量执行单元810。向量执行单元包括图4所示的现有技术的向量执行单元的全部组件,其采用相同的附图标记。此外,根据本发明的向量执行单元具有本地队列730,其设置为用以保存从程序存储器接收的若干条指令。设置为用以控制本地队列730的队列控制器732设置在向量控制单元720中。队列730和队列控制器732彼此连接以交换信息和命令。例如,队列控制器732可包括设置为用以记录队列730中的指令数量的计数器。作为备选,队列可记录其自身的状态,并将表示队列是排满的、或空的、或将要排满或者将要变空的信息发送到队列控制器732。因此,队列控制器732保存关于本地队列730的状态信息,并且可发送控制信号以开始、中止或清空本地队列730。指令解码器723设置为用以通知向量控制器730目前正在执行哪一条指令。
如上所述,许多DSP任务可实现为指令序列,例如前言(prolog)、向量指令和结语(epilog)。向量指令将运行多个时钟周期,在此期间不再提取新指令。在此情况下,如上所述,新SYNC指令用于使本地队列保存下一指令直到满足特定条件。当队列控制器732被通知指令解码器723已经解码“sync”指令时,将在队列控制器732中设定一种用以停止本地队列730直到满足条件的模式。这通常采用其余的向量长度信息以及来自向量解码器的与当前指令相关的信息来实现。也可使用从数据通路724发送到队列控制器732的标志。该条件通常为向量指令的处理已结束,使得指令执行单元中的指令解码器723准备好处理下一条指令。
本地队列730可以为适用于保存所期望指令数量的任意类型队列。在一个实施例中,其为能够保存适当数量的指令(例如8条指令)的FIFO序列。
图6显示了根据本发明优选实施例的向量执行单元910。图6所示的向量执行单元包括与图5相同的单元,它们以相同方式互连。但是,在本实施例中,本地队列730为适于重复特定数量的指令的循环队列。在同一指令序列要执行很多次的实施方式中,这将非常有益。有时执行次数可超过1000次。在此情况下,由于不必每次将要处理的相同指令从内核单元向向量执行单元再次发送,因此可节省控制通路中的大量带宽。
如图5所示,在向量控制器720中设置队列控制器732。在图6所示的实施例中,还具有设置为用以记录要重复的指令以及指令应重复的次数的缓冲器管理器744。为此,设置由向量控制器720控制的两个寄存器:用于存储指令重复次数的重复寄存器746和设置为用以保存将要重复的指令的数量的指令计数寄存器748。
由于发至向量执行单元的全部指令均通过队列730即循环缓冲器,该缓冲器将存储最后的N条(通常为8-16条)指令。重复寄存器746配置为用以保存要执行的重复次数。重复寄存器746可通过控制寄存器文件而装载,或者通过发向向量执行单元的指令字或者其他方法来读取。
指令计数存储器748配置为保存用以表示循环缓冲器730中应有多少条指令包括在重复循环中的数量。指令计数寄存器可通过控制寄存器文件而装载,或者通过发向向量执行单元的指令字或者其他方法来读取。
当将“重复”指令或具有“重复标志”的指令集发向向量执行单元时,指令解码器723连同向量控制器720一起命令队列控制器732将指令从循环缓冲器730中分发到指令寄存器722。
如图5所示,当指令解码器723遇到“sync”指令时,指令解码器命令队列控制器732停止从本地队列、循环队列中提取指令,直到预定条件出现为止。该条件通常为从队列中提取的在先指令已经完成,使得解码器准备好接收新指令。
尽管本文将本地队列730和指令寄存器722显示为单独的实体,但是它们也可以组合到一个单元中。例如,向量寄存器722可被集成为本地队列的最后一个组件。
缓冲管理器744监管本地缓冲器730的操作,并管理当前存储在循环缓冲器中的指令的重复,其中,队列控制器732管理从循环缓冲器/队列730中分发的指令的开始/停止。
缓冲管理器744进一步管理重复寄存器746,并记录已执行的重复数量。当重复寄存器746中指定的重复次数完成时,向向量控制器720发送信号,该信号随后可发送至程序流控制703(图6未示出)以指示操作完成。
当请求的重复次数已完成时,循环缓冲器730的行为默认返回到队列功能,以存储最后发出的指令从而使得可以开始新的重复指令。
图7显示了根据本发明实施例的本地队列的工作原理。水平线901表示队列本身。第一垂直箭头表示写指针903,其指示新指令当前被写入队列的位置。相应的水平箭头905表示写指针移动的方向,其为朝向图的右侧。
第二垂直箭头表示读指针907,其指示当前要从中读取待执行指令在队列中的位置。相应的水平箭头909表示读指针的移动方向,其与写入指针907的方向相同。写指针903与读指针907之间的距离为队列的当前长度,即,当前队列中指令的数量。
在图7所示的示例中,将要重复多次的指令序列写入该队列中。序列的开始和序列的结束由与水平线901相交的第一垂直线911和第二垂直线913表示。向后指向的箭头915表示当读指针907到达由第二垂直线913表示的命令序列的末尾时,读指针将循环回到由第一垂直线911表示的命令序列的开始。该操作将重复直到指令序列已执行指定的次数为止。
控制逻辑(未示出)设置为用以记录序列中要被重复的指令数量,以及这些指令在序列中的位置。这包括,例如:
·要重复的指令序列的起始位置911
·要重复的指令序列的末尾位置913
·要重复的指令序列的重复次数
可将序列的起始位置或者末尾位置(而不是序列的起始和结束)连同序列的长度(即序列中包括的指令的数量)一起存储。当读指针907或者写指针903到达队列末尾时,其将移动至队列的起始端并继续分别从起始端读取或者写入。

Claims (14)

1.一种用于数字信号处理器的向量执行单元(520,530),其中,所述数字信号处理器具有处理器内核、设置为用以为多个执行单元保存指令的程序存储器以及设置为用以保存由所述向量执行单元使用的数据的多个数据存储单元,所述向量执行单元设置为用以执行包括针对向量形式的多数据进行操作的向量指令的指令,所述向量执行单元包括设置为用以接收并存储指令的指令寄存器(722)、设置为用以解码存储在所述指令寄存器中的指令的指令解码器(723)以及由所述指令解码器控制的至少一条数据通路,所述向量执行单元还包括向量控制器(275,720),其设置为用以判断指令是否为向量指令,若是,通知用以保存向量长度的计数寄存器(531),所述向量控制器(275,720)进一步设置并控制指令的执行,其中,所述向量执行单元包括
-设置为用以接收来自程序存储器的至少第一指令和第二指令的本地队列(730),并在本地队列中保存第二指令直到预定条件满足为止,
-所述本地队列(730)设置为用以同时从程序存储器接收指令序列,并存储最后的N条指令,N为整数,
-其中,所述向量控制器(275,720)包括设置为用以按照将存储在本地队列(730)中的M条指令的序列重复K次的方式控制所述本地队列的队列控制装置(732,721,744),其中,M为小于等于N的整数。
2.根据权利要求1所述的向量执行单元,其中,所述向量控制器(275,720)设置为用以接收发出信号并基于此发出信号控制指令的执行。
3.根据权利要求1所述的向量执行单元,其中,所述队列控制装置包括
-缓冲管理器(744),其设置为用以记录要重复的M条指令,以及指令应当重复的次数K,其中M和K为整数;
-重复控制装置(746),其设置为用以监测指令序列的重复执行,以判断指令的重复何时应当停止;
-指令计数寄存器(748),其设置为用以保存要重复的指令数M及其在队列(901)中的位置。
4.根据权利要求3所述的向量执行单元,其中,所述缓冲管理器(744)设置为用以从控制寄存器文件中获取整数K。
5.根据权利要求3所述的向量执行单元,其中,所述缓冲管理器(744)设置为用以从指令字中获取整数K。
6.根据权利要求3-5中任一项所述的向量执行单元,其中,所述重复控制装置为设置用以记录K次重复的计数器。
7.一种数字信号处理器,包括:
-处理器内核(500),其包括配置为执行整数指令的整数执行单元(510);以及
-与处理器内核分开并与之耦合的至少第一和第二向量执行单元(520,530),其中,每一向量执行单元为如上述任一项权利要求所述的向量执行单元;
所述数字信号处理器包括程序存储器(503)和发出逻辑(705),其中,程序存储器配置为用以保存用于第一和第二向量执行单元的指令,发出逻辑用于向所述第一和第二向量执行单元(520,530)发出包括向量指令的指令。
8.根据权利要求7所述的数字信号处理器,其中,所述程序存储器(503)还设置为用以为所述整数执行单元(510)保存指令。
9.根据权利要求7或8所述的数字信号处理器,其中,所述程序存储器(503)设置在所述处理器内核(500)中。
10.一种适用于多模有线和无线通信的基带通信设备,包括
-配置为发送和/或接收通信信号的前端单元;
-耦合至所述前端单元的可编程数字信号处理器,其中所述可编程数字信号处理器为采用了如权利要求1-6中任一项所述的向量执行单元的数字信号处理器。
11.根据权利要求10所述的基带通信设备,其中,所述前端单元为模拟前端单元,其设置为用以发送和/或接收射频或基带信号。
12.根据权利要求11所述的基带通信设备,其中,所述基带通信设备设置为用以用于在蜂窝通信网络中的通信。
13.根据权利要求10所述的基带通信设备,其中,所述基带通信设备为电视接收器。
14.根据权利要求10所述的基带通信设备,其中,所述基带通信设备为线缆调制解调器。
CN201280051536.5A 2011-10-18 2012-09-17 数字信号处理器以及基带通信设备 Expired - Fee Related CN103890719B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1150967-6 2011-10-18
SE1150967A SE535856C2 (sv) 2011-10-18 2011-10-18 Digital signalprocessor och basbandskommunikationsanordning
PCT/SE2012/050980 WO2013058696A1 (en) 2011-10-18 2012-09-17 Digital signal processor and baseband communication device

Publications (2)

Publication Number Publication Date
CN103890719A CN103890719A (zh) 2014-06-25
CN103890719B true CN103890719B (zh) 2016-11-16

Family

ID=47501629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280051536.5A Expired - Fee Related CN103890719B (zh) 2011-10-18 2012-09-17 数字信号处理器以及基带通信设备

Country Status (6)

Country Link
US (1) US20140281373A1 (zh)
EP (1) EP2751669A1 (zh)
KR (1) KR20140078718A (zh)
CN (1) CN103890719B (zh)
SE (1) SE535856C2 (zh)
WO (1) WO2013058696A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US10019264B2 (en) * 2016-02-24 2018-07-10 Intel Corporation System and method for contextual vectorization of instructions at runtime
GB2560059B (en) * 2017-06-16 2019-03-06 Imagination Tech Ltd Scheduling tasks
CN108364065B (zh) * 2018-01-19 2020-09-11 上海兆芯集成电路有限公司 采布斯乘法的微处理器
CN111065190B (zh) * 2019-12-05 2022-01-28 华北水利水电大学 基于Zigbee通信的智能灯光控制方法及系统
CN113900712B (zh) * 2021-10-26 2022-05-06 海光信息技术股份有限公司 指令处理方法、指令处理装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5499350A (en) * 1979-12-29 1996-03-12 Fujitsu Limited Vector data processing system with instruction synchronization
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6950929B2 (en) * 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
US7299342B2 (en) * 2005-05-24 2007-11-20 Coresonic Ab Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
US7415595B2 (en) * 2005-05-24 2008-08-19 Coresonic Ab Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory
US20070198815A1 (en) 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
US9519617B2 (en) * 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499350A (en) * 1979-12-29 1996-03-12 Fujitsu Limited Vector data processing system with instruction synchronization
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器

Also Published As

Publication number Publication date
US20140281373A1 (en) 2014-09-18
SE1150967A1 (sv) 2013-01-15
KR20140078718A (ko) 2014-06-25
EP2751669A1 (en) 2014-07-09
SE535856C2 (sv) 2013-01-15
CN103890719A (zh) 2014-06-25
WO2013058696A1 (en) 2013-04-25

Similar Documents

Publication Publication Date Title
CN103890719B (zh) 数字信号处理器以及基带通信设备
CN114168525B (zh) 可重构并行处理
EP3451162B1 (en) Device and method for use in executing matrix multiplication operations
CN103890718B (zh) 数字信号处理器及基带通信设备
CN104603749B (zh) 用于在单指令多数据simd处理系统中控制发散分支指令的方法和设备
CN104583941B (zh) 用于在多线程处理系统中选择性激活恢复检查操作的方法和设备
CN105579967A (zh) Gpu发散栅栏
CN106233248B (zh) 用于在多线程处理器上执行发散操作的方法和设备
KR101586770B1 (ko) 데이터 처리 장치
US9804853B2 (en) Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction
CN104756069B (zh) 元素选择单元及其中的方法
KR100639146B1 (ko) 카테시안 제어기를 갖는 데이터 처리 시스템
JP2004515856A (ja) ディジタル信号処理装置
CN104035748B (zh) 包括打包源字段和目的地字段的微操作
JP6191457B2 (ja) 演算処理装置、演算処理方法
JP2011008485A (ja) データ処理装置
KR20120037755A (ko) 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161116

Termination date: 20200917