一种单指令多核系统、指令处理方法及存储介质与流程

文档序号:21318704发布日期:2020-06-30 20:49阅读:201来源:国知局
一种单指令多核系统、指令处理方法及存储介质与流程

本发明涉及无线通信系统技术领域,尤其涉及一种单指令多核系统、指令处理方法及存储介质。



背景技术:

随着移动通信技术的不断发展,对通信带宽的需求呈现几何级数的增长趋势。例如,对于单个5g设备而言,其频谱带宽相对于单个4g设备增长了几倍到几十倍,而天线数据也增长了几倍到几十倍,因此,总的通信带宽增长了几十到上百倍。

在现有技术中,通常采用更大“矢量”长度的矢量处理器和更多数量的处理器组系统来应对较大的运算量。然而,采用更大“矢量”长度的矢量处理器,需要增加内核访问外部缓存的带宽,大带宽的外部存储将带来更高的成本,占用大量硬件资源。此外,由于在5g场景下,频谱比较宽,同时天线数量也比较大,但是在很多算法场景下,不同载波的处理流程完全相同,或者不同天线之间的处理流程完全相同,采用更多数量的处理器组成片上系统,将会导致多核系统之间运行相同的程序,造成程序存储和控制部分出现冗余,并且,处理器数量较多时,系统较为复杂。



技术实现要素:

为解决现有存在的技术问题,本发明实施例期望提供一种单指令多核系统、指令处理方法和存储介质,针对具有5g通信等具有并行算法特点的应用场景,通过设计多个矢量执行单元,以分别执行相同的矢量指令,不仅降低了系统的复杂度,而且降低了资源成本。

为达到上述目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种单指令多核系统,所述系统包括:指令控制与标量计算单元、多个矢量执行单元,以及与所述多个矢量执行单元对应的多个数据缓存单元;

所述指令控制与标量计算单元,用于获取待执行指令,并对所述待执行指令进行译码,获取矢量指令;

所述多个矢量执行单元中的每一个矢量执行单元,用于获取矢量数据地址;根据所述矢量数据地址,访问所述多个数据缓存单元中对应的数据缓存单元存储的待处理数据,并对所述待处理数据执行所述矢量指令,获得已处理数据。

在上述系统中,所述系统还包括:数据重排单元和数据重排总线;

所述数据重排单元,用于获取数据重排指令,并根据所述数据重排指令通过所述数据重排总线访问所述多个数据缓存单元,对所述多个数据缓存单元中的所述已处理数据进行数据重排。

在上述系统中,所述数据重排单元,还用于将同步信号发送至所述指令控制与标量计算单元;

所述指令控制与标量计算单元,还用于根据所述同步信号,实现与所述数据重排单元的同步。

在上述系统中,所述系统还包括:指令分发总线;

所述指令分发总线,用于将所述矢量指令分别分发至所述多个矢量执行单元中的每一个矢量执行单元中。

在上述系统中,所述指令控制与标量计算单元,还用于根据所述矢量指令计算所述矢量数据地址;

所述指令分发总线,还用于将所述矢量数据地址分发至所述多个矢量执行单元中的每一个矢量执行单元。

在上述系统中,所述指令分发总线的分发方式为树形结构方式或链式传递方式。

在上述系统中,所述多个矢量执行单元中的每一个矢量执行单元,还用于根据所述矢量指令,分别计算所述矢量数据地址。

在上述系统中,所述系统还包括:指令存储单元;

所述指令存储单元,用于存储所述待执行指令;

所述指令控制与标量计算单元,具体用于从所述指令存储单元获取所述待执行指令。

本发明实施例提供了一种指令处理方法,应用于单指令多核系统,所述方法包括:

通过指令控制与标量计算单元获取待执行指令,并对所述待执行指令进行译码,获取矢量指令;

通过多个矢量执行单元中的每一个矢量执行单元,获取矢量数据地址;

通过所述多个矢量执行单元中的每一个矢量执行单元,根据所述矢量数据地址,访问多个数据缓存单元中对应的数据缓存单元存储的待处理数据,并对所述待处理数据执行所述矢量指令,获得已处理数据。

在上述方案中,所述获得已处理数据之后,所述方法还包括:

通过数据重排单元获取数据重排指令,并根据所述数据重排指令通过数据重排总线访问所述多个数据缓存单元,对所述多个数据缓存单元中的所述已处理数据进行数据重排。

在上述方案中,所述方法还包括:

通过所述数据重排单元,将同步信号发送至所述指令控制与标量计算单元;

通过所述指令控制与标量计算单元,根据所述同步信号,实现与所述数据重排单元的同步。

在上述方案中,所述获取矢量指令之后,所述方法还包括:

通过指令分发总线将所述矢量指令分别分发至所述多个矢量执行单元中的每一个矢量执行单元中。

在上述方案中,所述通过所述多个矢量执行单元中的每一个矢量执行单元,获取矢量数据地址,包括:

通过所述指令控制与标量计算单元,根据所述矢量指令计算所述矢量数据地址;

通过所述指令分发总线将所述矢量数据地址分发至所述多个矢量执行单元中的每一个矢量执行单元。

在上述方案中,所述指令分发总线的分发方式为树形结构方式或链式传递方式。

在上述方案中,所述通过所述多个矢量执行单元中的每一个矢量执行单元,获取矢量数据地址,包括:

通过所述多个矢量执行单元中的每一个矢量执行单元,根据所述矢量指令,分别计算所述矢量数据地址。

在上述方案中,所述通过所述指令控制与标量计算单元获取待执行指令,包括:

通过所述指令控制与标量计算单元从指令存储单元获取所述待执行指令。

本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述指令处理方法。

本发明实施例提供了一种单指令多核系统,包括:指令控制与标量计算单元、多个矢量执行单元,以及与多个矢量执行单元对应的多个数据缓存单元;指令控制与标量计算单元,用于获取待执行指令,并对待执行指令进行译码,获取矢量指令;多个矢量执行单元中的每一个矢量执行单元,用于获取矢量数据地址;根据矢量数据地址,访问多个数据缓存单元中对应的数据缓存单元存储的待处理数据,并对待处理数据执行矢量指令,获得已处理数据。也就是说,本发明实施例提供的单指令多核系统,针对具有5g通信等具有并行算法特点的应用场景,通过设计多个矢量执行单元,以分别执行相同的矢量指令,不仅降低了系统的复杂度,而且降低了资源成本。

附图说明

图1为本发明实施例提供的一种单指令多核系统的结构示意图一;

图2为本发明实施例提供的一种示例性的树形分发的结构示意图;

图3为本发明实施例提供的一种示例性的链式分发的结构示意图;

图4为本发明的实施例提供的一种示例性的链式分发结构下矢量执行单元并行执行的示意图;

图5为本发明实施例提供的一种示例性的数据重排总线结构示意图;

图6为本发明实施例提供的一种示例性的链式共享数据的传输示意图;

图7为本发明实施例提供的一种单指令多核系统的结构示意图二;

图8为本发明实施例提供的一种示例性的矢量执行单元和数据重排单元进行数据处理的示意图;

图9为本发明实施例提供的一种单指令多核系统的结构示意图三;

图10为本发明实施例提供的一种单指令多核系统的结构示意图四;

图11为本发明实施例提供的一种单指令多核系统的结构示意图五;

图12为本发明实施例提供的一种示例性的数据搬移示意图一;

图13为本发明实施例提供的一种示例性的数据搬移示意图二;

图14为本发明实施例提供的一种指令处理方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

实施例一

本发明实施例提供了一种单指令多核系统。图1为本发明实施例提供的一种单指令多核系统的结构示意图一。如图1所示,单指令多核系统包括:指令控制与标量计算单元101、多个矢量执行单元102,以及与多个矢量执行单元102对应的多个数据缓存单元103;

指令控制与标量计算单元101,用于获取待执行指令,并对待执行指令进行译码,获取矢量指令。

多个矢量执行单元102中的每一个矢量执行单元,用于获取矢量数据地址;根据矢量数据地址,访问多个数据缓存单元103中对应的数据缓存单元存储的待处理数据,并对待处理数据执行矢量指令,获得已处理数据。

需要说明的是,在本发明的实施例中,单指令多核系统可以应用到5g场景中,具体的,多个矢量执行单元102可以对获取的不同天线的天线数据进行信道估计、插值,以及测量处理,也就是说,多个数据缓存单元103中每一个数据缓存单元可以存储不同天线的天线数据,这些天线数据即为待处理数据,而多个矢量执行单元102中的每一个矢量执行单元可以对多个数据缓存单元103中对应的数据缓存单元中的天线数据,分别执行矢量指令,也就是上述信道估计、插值,以及测量处理,具体的待处理数据和矢量指令本发明实施例不作限定。

在本发明的实施例中,如图1所示,单指令多核系统中还包括指令存储单元104,用于存储待执行指令,指令控制与标量计算单元101具体从指令存储单元104获取待执行指令。待执行指令可由用户根据需求预先设置,存储在指令存储单元104中,具体的待执行指令本发明实施例不作限定。

需要说明的是,在本发明的实施例中,指令控制与标量计算单元101从指令存储单元104获取待执行指令,对待执行指令进行译码后,获得的不仅为矢量执行,还可以包括标量指令,由于标量指令为较为简单的指令,因此,指令控制与标量计算单元101可以自主执行标量指令,而将矢量指令交由多个矢量执行单元102中的每一个矢量执行单元进行执行。此外,指令控制与标量计算单元101还可以执行程序控制指令。具体的矢量指令本发明实施例不作限定。

在本发明的实施例中,如图1所示,单指令多核系统还包括指令分发总线105,用于将矢量指令分别分发至多个矢量执行单元102中的每一个矢量执行单元中。

需要说明的是,在本发明的实施例中,单指令多核系统中包括多个矢量执行单元102,如图1所示,多个矢量执行单元102具体由n个矢量执行单元组成,即矢量执行单元1、矢量执行单元2、矢量执行单元3,……,矢量执行单元n。指令分发总线105可以根据实际应用场景,按照不同的方式将矢量指令分别分发至多个矢量执行单元102中的每一个矢量执行单元中,从而多个矢量执行单元102中的每一个矢量执行单元获得相同的矢量指令,即矢量执行单元1、矢量执行单元2、矢量执行单元3,……,矢量执行单元n均获得相同的矢量指令。具体的矢量指令的分发方式本发明实施例不作限定。

需要说明的是,在本发明的实施例中,指令分发总线105的分发方式可以为树形结构方式或链式传递方式。

图2为本发明实施例提供的一种示例性的树形分发的结构示意图。如图2所示,指令分发总线105按照树形结构直接将矢量指令分发给每个矢量执行单元,在分发过程中,可以插入寄存器,用于调整时序。

图3为本发明实施例提供的一种示例性的链式分发的结构示意图。如图3所示,指令分发总线105采用链式传递方式将矢量指令分发给每个矢量执行单元,链式传递方式更适合芯片的物理实现。图4为本发明的实施例提供的一种示例性的链式分发结构下矢量执行单元并行执行的示意图。如图4所示,在链式分发结构下,矢量执行单元1、矢量执行单元2、矢量执行单元3,……,矢量执行单元n并行执行相同的矢量指令时在物理时钟上存在一个固定的时延偏差,但是,这种偏差对于实际的吞吐量无影响,对于软件编程可以做到不可见。

需要说明的是,在本发明的实施例中,如图1所示,多个矢量执行单元102对应的多个数据缓存单元103,具体由n个数据缓存单元组成,即数据缓存单元1、数据缓存单元2、数据缓存单元3,……,数据缓存单元n,其中,矢量执行单元1与数据缓存单元1对应,矢量执行单元2与数据缓存单元2对应,矢量执行单元3与数据缓存单元3对应,……,矢量执行单元n与数据缓存单元n对应。

需要说明的是,在现有技术中,单一的矢量执行单元和数据缓存单元,为了应对较大计算量,就必须不断扩大矢量执行单元,增加访问数据缓存单元的带宽。而在本发明的实施例中,单指令多核系统包括上述多个结构独立的矢量执行单元和数据缓存单元,因此,矢量执行单元和数据缓存单元可以进行适当的选择,从而降低数据缓存单元中缓存的并行数据访问的带宽需求。具体的矢量执行单元和数据缓存单元的大小本发明实施例不作限定。

需要说明的是,在本发明的实施例中,如图1所示,多个矢量执行单元102中的每个矢量执行单元不仅对应有独立的数据缓存单元,还具有独立的加载/存储接口。具体的,矢量执行单元1对应加载/存储接口1,矢量执行单元2对应加载/存储接口2,……,矢量执行单元n对应加载/存储接口n。其中,矢量执行单元1具体通过加载/存储接口1访问数据缓存单元1,矢量执行单元1具体通过加载/存储接口2访问数据缓存单元2。

需要说明的是,在本发明的实施例中,单指令多核系统的内核具体包括图1中内核框内的单元。

在本发明的实施例中,多个矢量执行单元102中的每一个矢量执行单元不仅需要通过指令分发单元105接收到相同的矢量指令,还需要获取矢量数据地址,从而访问对应的数据缓存单元中的待处理数据,以执行接收到的矢量指令。其中,多个矢量执行单元102中的每一个矢量执行单元获取矢量数据地址可以通过两种方式,一种为通过指令控制与标量计算单元101获取,一种通过每一个矢量执行单元自身获取。

具体的,在本发明的实施例中,一种情况下,指令控制与标量计算单元101,还用于根据矢量指令计算矢量数据地址,指令分发总线105,还用于将矢量数据地址分发至多个矢量执行单元中的每一个矢量执行单元。可以理解的是,对于指令控制与标量计算单元101计算矢量数据地址,指令分发总线105分发至每一个矢量执行单元的情况,指令分发总线105实际上就是同时分发相同的矢量指令和矢量数据地址至每个矢量执行单元。

需要说明的是,在本发明的实施例中,指令分发总线105分发矢量数据地址的分发方式也可以为上述树形结构方式或链式传递方式。指令分发总线105可以按照树形结构方式同时分发矢量指令和矢量数据地址,也可以按照链式传递方式同时分发矢量指令和矢量数据地址,具体的矢量数据地址的分发方式本发明实施例不作限定。

具体的,在本发明的实施例中,另一种情况下,多个矢量执行单元102中的每一个矢量执行单元,还用于根据矢量指令,分别计算矢量数据地址。

可以理解的是,在本发明的实施例中,多个矢量执行单元102中的每一个矢量执行单元,获取的矢量数据地址可以是完全相同的,也可以根据静态配置存在简单的偏移。每一个矢量执行单元根据矢量数据地址,即可访问对应的数据缓存单元中的待处理数据,从而执行矢量指令。

在本发明的实施例中,如图1所示,单指令多核系统还包括:数据重排单元106和数据重排总线107。数据重排单元106,用于获取数据重排指令,并根据数据重排指令通过数据重排总线107访问多个数据缓存单元103,对多个数据缓存单元103中的已处理数据进行数据重排。

需要说明的是,在本发明的实施例中,多个矢量执行单元102中的每一个矢量执行单元执行矢量指令之后,数据重排单元106可以根据数据重排指令对个数据缓存单元103中的已处理数据进行数据重排,此时,如图4所示,多个矢量执行单元102中的每一个矢量执行单元可以继续执行下一个矢量指令,即指令控制与标量计算单元101可以获取下一个待执行指令,译码后获取下一个矢量指令。

需要说明的是,在本发明的实施例中,数据重排单元106不仅可以进行数据重排,还可以进行标量或小规模的矢量计算。此外,由于数据重排这一步骤较为简单,重排的过程中不需要复杂的软件编程,因此,数据重排单元106具体可以为一个外设单元,仅具备进行数据搬移的功能,以减少系统的复杂度。

需要说明的是,在本发明的实施例中,图5为本发明实施例提供的一种示例性的数据重排总线结构示意图。如图5所示,数据重排总线107,即数据重排单元106用于访问多个数据缓存单元103中每一个数据缓存单元的接口,多个数据缓存单元103具体包括4个数据缓存单元,即数据缓存单元1、数据缓存单元2、数据缓存单元3和数据缓存单元4。数据重排总线107并非传统意义上的片上总线,而是基于地址和数据仲裁的内存访问接口,包括地址部分和数据存储数据部分,源和目的之间不需要经过复杂的握手过程。通常情况下,数据重排总线107访问多个数据缓存单元103的带宽可以比较低,对于5g大多数业务模型来说,数据重排总线107的数据位宽可以仅为加载/存储接口的几分之一,因此可以采用降频或者较小的数据访问位宽。

需要说明的是,在本发明的实施例中,如图5所示,数据重排单元106到多个数据缓存单元103中的每一个数据缓存单元的写接口,即存储数据方向,支持广播模式,即可以将一个运算结果广播到每一个数据缓存单元中。

在本发明的实施例中,如图1所示,单指令多核系统中,数据重排单元106还用于将同步信号发送至指令控制与标量计算单元101;指令控制与标量计算单元101,还用于根据同步信号,实现与数据重排单元101的同步。

需要说明的是,在本发明的实施例中,指令控制与标量计算单元101可以持续不断的从指令存储单元中获取待执行指令,多个矢量执行单元102也可以持续不断的执行不同待执行指令译码得到的矢量指令,同时,数据重排单元106对多个数据缓存单元103的已处理数据进行重排,整个过程为流水线式的过程,例如,多个矢量执行单元102执行完一个矢量指令时,即对多个数据缓存单元103中的待处理数据进行处理之后,数据重排单元106将对多个数据缓存单元103中的数据进行重排,此时,多个矢量执行单元102可以继续执行下一个矢量指令。但是,由于执行矢量指令的时间和进行数据重排的时间是难以预测和估计的,为了避免指令控制与标量计算单元101和数据重排单元106执行过程差距过大,因此,数据重排单元106可以在预设时刻将同步信号发送至指令控制与标量计算单元101,例如,可以在开始进行数据重排之后的t时刻将同步信号发送至指令控制与标量计算单元101,根据同步信号,如果指令控制与标量计算单元101确定数据重排单元106执行过程较慢,则暂停获取下一个待执行指令,等待与数据重排单元106同步,如果指令控制与标量计算单元101确定数据重排单元106执行过程较快,则可以发送同步响应信号至数据重排单元106,数据重排单元106根据同步响应信号,即可暂停数据重排,等待与指令控制与标量计算单元101的同步。当然,指令控制与标量计算单元101与数据重排单元106为双向通信,即也可以由指令控制与标量计算单元101在预设时刻将同步信号发送至数据重排单元106,同样按照上述方法以实现两者的同步。

需要说明的是,在本发明的实施例中,在并行计算的维度发生改变时,多个矢量执行单元102中的每一个矢量执行单元可能无法从多个数据缓存单元103中对应的数据缓存单元中获取到待处理数据,此时需要数据重排单元106对多个数据缓存单元103中每个数据缓存单元进行数据重排,以准备好用于执行矢量指令的待处理数据,此时,数据重排单元106可以将同步信号发送至指令控制与标量计算单元101,指令控制与标量计算单元101将程序指针计数器暂停进行等待,直至数据重排单元106准备好待处理数据之后通知指令控制与标量计算单元101。

需要说明的是,在本发明的实施例中,如果不同的矢量执行单元需要使用相同的数据参与运算,对于5g通信应用而言,不同矢量执行单元可能的共享数据并不多,一般情况下为:公共的参数,不同天线、载波维度共享的测量值或者输入数据,在这些共享数据不同的情况下,可以对这些数据进行复制,保证不同的数据缓存单元都存在该信息,对于数据缓存单元存储空间的占用并不多,具体可以基于数据重排单元,根据数据重排总线106的广播以实现。

具体的,在本发明的实施例中,可以从多个数据缓存单元103中选择一个作为共享数据的存储位置,或者,共享数据还可以通过存放数据的数据缓存单元向相邻的矢量执行单元进行传播,如图6所示。需要说明的是,此时指令分发总线105分发矢量指令的方式也必须采用链式传递的方式,不同的矢量执行单元执行相同的矢量指令在绝对时刻上虽然存在微小的偏差,但在软件的宏观层面上,不同矢量执行单元是同时执行了相同的矢量指令,对处理吞吐量不存在影响。具体的共享数据的方式本发明实施例不作限定。

需要说明的是,在本发明的实施例中,单指令多核系统存在多种变形结构,可以根据实际需求进行调整,或者,可以将结构划分得更为具体,以下将示例性的说明几种具体的单指令多核系统。

图7为本发明实施例提供的一种单指令多核系统的结构示意图二。如图7所示,单指令多核系统与图1所示的单指令多核系统的一部分相同,即同样包括:多个矢量执行单元102、多个数据缓存单元103、指令存储单元104、指令分发总线105、数据重排单元106和数据重排总线107,多个矢量执行单元102具体包括图7所示的4个矢量执行单元,相应的,多个数据缓存单元具体包括图7所示的4个数据缓存单元。该系统还包括:取指单元108、译码单元109、地址计算单元110、外设单元111、重排存储单元112和系统总线113。

需要说明的是,在本发明的实施例中,如图7所示,取指单元108,用于从指令存储单元104中获取待执行指令,译码单元109,用于对待执行指令进行译码,地址计算单元110,用于计算矢量数据地址,也就是说,取指单元108、译码单元109和地址计算单元110三部分集成,其实就相当于图1中的指令控制与标量计算单元101。

需要说明的是,在本发明的实施例中,如图7所示,外设单元111,用于通过数据重排总线107和系统总线113来进行多个数据缓存单元103与外部存储之间的数据搬移,重排存储单元112,用于存储数据重排单元106需要执行的数据重排指令或程序。

需要说明的是,在本发明的实施例中,如图7所示,指令分发总线105,即从地址计算单元110到多个矢量执行单元102进行矢量数据地址和矢量指令分发的单向接口,由于多个矢量执行单元102具体只包括4个矢量执行单元,数量较少,可以采用如图2所示的树形结构进行分发。

需要说明的是,在本发明的实施例中,如图7所示,正常情况下,由于多个矢量执行单元102与数据重排单元106并发运行,形成并发双线程的运行模式,只有在必要的同步时刻通过中断的形式进行时间同步。数据重排单元106与取指单元108之间进行同步信号的传输时,具体可以传输一些关键信息,本发明实施例不作限定。

示例性的,在本发明的实施例中,如图8所示,多个矢量执行单元102具体用于执行5g系统中的部分处理流程,若存在一个上行8天线多输入多输出系统,应用于图7所示的单指令多核系统时,外设单元111将数据搬移到每个数据缓存单元时先按照不同天线数据放至不同数据缓存单元中的原则,4个矢量执行单元并行处理不同用户的4个天线数据的信道估计和插值以及测量工作,此时多个天线之间数据不需要交互。在4个矢量执行单元每并行处理完4根天线,并发启动数据重排单元106进行4个天线数据的重排,每个天线数据按照不同频域资源索引顺序存放到4个数据缓存单元中,为均衡过程做准备。同时数据重排单元106可以完成测量或者同步过程中需要多天线加权的那些测量值,并通过数据重排总线107的广播模式将测量结果反馈到所有数据缓存单元中。4个矢量执行单元并发进行不同频域数据的均衡处理工作,完成后并发启动数据重排单元106进行数据重排,或直接由数据重排单元106完成解调。

可以理解的是,在本发明的实施例中,上述应用于图7所示系统的5g处理方案利用了5g数据的并发特性,可以让数据重排过程尽量的隐藏在计算过程之中。因为5g有大量的频域、天线资源需要处理,因此可以尽可能的将处理过程拆分到比较细的颗粒度,达到系统效率的最大化。

图9为本发明实施例提供的一种单指令多核系统的结构示意图三。如图9所示,相比于图7所示的系统,矢量执行单元的数量由4个增加到8个,相应的,数据缓存单元也由4个增加到8个。

需要说明的是,在本发明的实施例中,如图9所示,由于矢量执行单元规模较为庞大,因此,将地址计算单元110集成到每一个矢量执行单元中,此时,指令分发总线105仅用于分发矢量指令,不用分发矢量数据地址,数据位宽大大减小,仍然可以按照树形结构进行分发。

需要说明的是,在本发明的实施例中,如图9所示,系统中配置了8个地址计算单元110,在资源上有所增加,但是可以支持指令分发总线105按照更简单,即按照树形结构进行分发,降低了芯片的实现难度。

可以理解的是,在本发明的实施例中,如图9所示,由于矢量执行单元较多,因此,对于数据重排单元106的吞吐量要求就越高,数据重排总线107的吞吐量相比于图7的系统需要翻倍。当然,相比于图7所示的系统,图8所示的系统同时并发运算的能力更强,处理延时更短。

图10为本发明实施例提供的一种单指令多核系统的结构示意图四。如图10所示,相比于图9所示的系统,仅有一个地址计算单元110,因此,指令分发总线105需要分发矢量数据地址。

需要说明的是,在本发明的实施例中,如图10所示,由于指令分发总线105需要分发的信息较多,而分发的矢量执行单元也较多,为了减少设计复杂度,指令分发总线105采用图3所示的链式传递的方式进行分发,易于大规模芯片的实现。

需要说明的是,在本发明的实施例中,如图10所示,在链式传递的方式下,可以设计将数据缓存单元1作为矢量执行单元之间共享数据的存储位置,可以通过共享数据链将共享数据传递到任意一个矢量执行单元中。

图11为本发明实施例提供的一种单指令多核系统的结构示意图五。如图11所示,相比于图7所示的系统,减少了数据重排单元106和重排存储单元112,取而代之的是直接采用外设单元111进行不同数据缓存单元之间的数据重排。外设单元111必须支持一些特殊的数据搬移,即可高效覆盖大部分数据重排的场景。

具体的,在本发明的实施例中,外设单元111的源地址段在某一个数据缓存单元,例如数据缓存单元1,目的地址为其它一个或者几个数据缓存单元,外设单元111将从数据缓存单元1读取一段数据,复制到一个或者几个数据缓存单元中去,如图12所示。

具体的,在本发明的实施例中,外设单元111的源地址段在某一个数据缓存单元,例如数据缓存单元1,目的地址为其它一个或者几个数据缓存单元,外设单元111将从数据缓存单元1读取的一段数据,交织写入到其他一个或者几个数据缓存单元中去,如图13所示。

需要说明的是,在本发明的实施例中,外设单元111和取指单元108之间的同步就变成了外设单元111到取指单元108之间的硬件中断。为了高效的进行数据重排,外设单元111支持多个通道,每个通道都有自己预先配置好的重排模式和源与目的地址。在业务软件处理过程中,取值单元108可以直接启动不同的通道来选择启动重排,不用在线进行外设单元111任务的配置。

需要说明的是,在本发明的实施例中,外设单元111并非处理器,所以仅能够进行数据搬移,无法进行简单的计算,因此数据重排单元106所支持的加权等较为复杂的处理是无法由外设单元111完成的,此时只能将不同数据通过外设单元111复制到某一个矢量执行单元当中进行加权等处理。

需要说明的是,在本发明的实施例中,上述图7、图9、图10和图11所示的单指令多核系统,仅是基于图1所示的单指令多核系统列举的一些具体的单指令多核系统,例如,图7所示的单指令多核系统中矢量执行单元的数量为4个,图9所示的单指令多核系统中矢量执行单元的数量为8个,其并非构成对本发明矢量执行单元的数量的限制,仅是基于不同应用场景的举例,具体可以根据实际需求预先设置不同数量的矢量执行单元,本发明实施例不作限定。

本发明实施例提供了一种单指令多核系统,包括:指令控制与标量计算单元、多个矢量执行单元,以及与多个矢量执行单元对应的多个数据缓存单元;指令控制与标量计算单元,用于获取待执行指令,并对待执行指令进行译码,获取矢量指令;多个矢量执行单元中的每一个矢量执行单元,用于获取矢量数据地址;根据矢量数据地址,访问多个数据缓存单元中对应的数据缓存单元存储的待处理数据,并对待处理数据执行矢量指令,获得已处理数据。也就是说,本发明实施例提供的单指令多核系统,针对具有5g通信等具有并行算法特点的应用场景,通过设计多个矢量执行单元,以分别执行相同的矢量指令,不仅降低了系统的复杂度,而且降低了资源成本。

实施例二

本发明实施例提供了一种指令处理方法,应用于单指令多核系统。图14为本发明实施例提供的一种指令处理方法的流程示意图。如图13所示,主要包括以下步骤:

s1401、通过指令控制与标量计算单元获取待执行指令,并对待执行指令进行译码,获取矢量指令。

在本发明的实施例中,如图1所示,指令控制与标量计算单元101与指令存储单元104可以进行通信,即通过指令控制与标量计算单元从指令存储单元104获取待执行指令。

需要说明的是,在本发明的实施例中,待执行指令存储待指令存储单元104中,可以由用户根据实际需求预先设置,具体的待执行指令本发明实施例不作限定。

需要说明的是,在本发明的实施例中,单指令多核系统通过指令控制与标量计算单元101对待执行指令进行译码,不仅可以获取矢量指令,即较为复杂,需要多个矢量执行单元102执行的指令,还同时可以获取到标量指令,即较为简单的指令,标量指令可通过指令控制与标量计算单元101直接执行。

s1402、通过多个矢量执行单元中的每一个矢量执行单元,获取矢量数据地址。

在本发明的实施例中,单指令多核系统,可以通过多个矢量执行单元102中的每一个矢量执行单元,获取矢量数据地址,也就是说,多个矢量执行单元102中的每一个矢量执行单元,都要获取矢量数据地址。

需要说明的是,在本发明的实施例中,存在两种方式获取矢量数据地址,一种为通过指令控制与标量计算单元101获取,一种通过每一个矢量执行单元自身获取。

具体的,在本发明的实施例中,一种情况下,单指令多核系统通过指令控制与标量计算单元101,根据矢量指令计算矢量数据地址,通过指令分发总线105将矢量数据地址分发至多个矢量执行单元102中的每一个矢量执行单元。

需要说明的是,在本发明的实施例中,指令分发总线105的分发方式为树形结构方式或链式传递方式,即单指令多核系统通过指令分发总线105可以按照树形结构方式或链式传递方式将矢量数据地址分发至多个矢量执行单元102中的每一个矢量执行单元。具体的分发方式本发明实施例不作限定。

具体的,在本发明的实施例中,另一种情况下,单指令多核系统通过多个矢量执行单元102中的每一个矢量执行单元,根据矢量指令,分别计算矢量数据地址。

s1403、通过多个矢量执行单元中的每一个矢量执行单元,根据矢量数据地址,访问多个数据缓存单元中对应的数据缓存单元存储的待处理数据,并对待处理数据执行矢量指令,获得已处理数据。

在本发明的实施例中,单指令多核系统通过多个矢量执行单元中的每一个矢量执行单元,根据矢量数据地址,访问多个数据缓存单元中对应的数据缓存单元存储的待处理数据,并对待处理数据执行矢量指令,获得已处理数据。

需要说明的是,在本发明的实施例中,单指令多核系统可以应用到5g场景中,具体的,多个矢量执行单元102可以对获取的不同天线的天线数据进行信道估计、插值,以及测量处理,也就是说,多个数据缓存单元103中每一个数据缓存单元可以存储不同天线的天线数据,这些天线数据即为待处理数据,而多个矢量执行单元102中的每一个矢量执行单元可以对多个数据缓存单元103中对应的数据缓存单元中的天线数据,分别执行矢量指令,也就是上述信道估计、插值,以及测量处理,具体的待处理数据和矢量指令本发明实施例不作限定。

需要说明的是,在本发明的实施例中,单指令多核系统在获取矢量指令之后,需要通过指令分发总线105将矢量指令分别分发至多个矢量执行单元102中的每一个矢量执行单元中,从而保证每一个矢量执行单元均能得到相同的矢量指令,并执行相同的矢量指令。

需要说明的是,在本发明的实施例中,指令分发总线105的分发方式为树形结构方式或链式传递方式,即单指令多核系统通过指令分发总线105可以按照树形结构方式或链式传递方式将矢量指令分发至多个矢量执行单元102中的每一个矢量执行单元。具体的分发方式本发明实施例不作限定。

在本发明的实施例中,单指令多核系统获得已处理数据之后,还可以通过数据重排单元106获取数据重排指令,并根据数据重排指令通过数据重排总线107访问多个数据缓存单元103,对多个数据缓存单元103中的已处理数据进行数据重排。

需要说明的是,在本发明的实施例中,单指令多核系统通过数据重排单元106对已处理数据进行重排时,同时可以通过多个矢量执行单元102继续执行下一个矢量指令。

需要说明的是,在本发明的实施例中,数据重排单元106不仅可以进行数据重排,还可以进行标量或小规模的矢量计算。此外,由于数据重排这一步骤较为简单,重排的过程中不需要复杂的软件编程,因此,数据重排单元106具体可以为一个外设单元,仅具备进行数据搬移的功能,以减少系统的复杂度。

在本发明的实施例中,单指令多核系统还可以通过数据重排单元106,在将同步信号发送至指令控制与标量计算单元101,通过指令控制与标量计算单元101,根据同步信号,实现与数据重排单元106的同步。

具体的,在本发明的实施例中,单指令多核系统通过数据重排单元106可以在预设时刻将同步信号发送至指令控制与标量计算单元101,例如,可以在开始进行数据重排之后的t时刻将同步信号发送至指令控制与标量计算单元101,根据同步信号,如果指令控制与标量计算单元101确定数据重排单元106执行过程较慢,则暂停获取下一个待执行指令,等待与数据重排单元106同步,如果通过指令控制与标量计算单元101确定数据重排单元106执行过程较快,则可以发送同步响应信号至数据重排单元106,通过数据重排单元106根据同步响应信号,即可暂停数据重排,等待与指令控制与标量计算单元101的同步。当然,指令控制与标量计算单元101与数据重排单元106为双向通信,即也可以由指令控制与标量计算单元101在预设时刻将同步信号发送至数据重排单元106,同样按照上述方法以实现两者的同步。

具体的,在本发明的实施例中,在并行计算的维度发生改变时,多个矢量执行单元102中的每一个矢量执行单元可能无法从多个数据缓存单元103中对应的数据缓存单元中获取到待处理数据,此时需要通过数据重排单元106对多个数据缓存单元103中每个数据缓存单元进行数据重排,以准备好用于执行矢量指令的待处理数据,此时,通过数据重排单元106可以将同步信号发送至指令控制与标量计算单元101,通过指令控制与标量计算单元101将程序指针计数器暂停进行等待,直至数据重排单元106准备好待处理数据之后通知指令控制与标量计算单元101。

本发明实施例提供可一种指令处理方法,应用于单指令多核系统,通过指令控制与标量计算单元获取待执行指令,并对待执行指令进行译码,获取矢量指令;通过多个矢量执行单元中的每一个矢量执行单元,获取矢量数据地址;通过多个矢量执行单元中的每一个矢量执行单元,根据矢量数据地址,访问多个数据缓存单元中对应的数据缓存单元存储的待处理数据,并对待处理数据执行矢量指令,获得已处理数据。也就是说,本发明实施例提供的技术方案,针对具有5g通信等具有并行算法特点的应用场景,通过设计多个矢量执行单元,以分别执行相同的矢量指令,不仅降低了系统的复杂度,而且降低了资源成本。

本发明实施例还提供了一种计算机可读存储介质,存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述指令处理方法。计算机可读存储介质可以是是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);或者非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom),快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);也可以是包括上述存储器之一或任意组合的各自设备,如移动电话、计算机、平板设备、个人数字助理等。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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