CN101876892B - 面向通信和多媒体应用的单指令多数据处理器电路结构 - Google Patents
面向通信和多媒体应用的单指令多数据处理器电路结构 Download PDFInfo
- Publication number
- CN101876892B CN101876892B CN 201010179340 CN201010179340A CN101876892B CN 101876892 B CN101876892 B CN 101876892B CN 201010179340 CN201010179340 CN 201010179340 CN 201010179340 A CN201010179340 A CN 201010179340A CN 101876892 B CN101876892 B CN 101876892B
- Authority
- CN
- China
- Prior art keywords
- instruction
- simd
- data
- module
- processor
- 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
Links
Images
Abstract
本发明属于高性能并行计算处理器技术领域,具体为一种面向通信和多媒体应用的单指令多数据处理器电路结构。包括SIMD整数运算单元、流水线控制单元、处理器异常控制单元、SIMD乘除法运算单元和适用于SIMD运算的扩展寄存器文件单元。其中,SIMD整数运算单元,在常规整数运算单元基础上增加SIMD相关数据通路,实现单条指令同时对多个数据进行运算;寄存器文件地址空间由32个扩展到64个,添加相应的映射表配置映射关系,构成适用于SIMD运算的扩展寄存器文件单元。本发明根据现有的开源精简指令集处理器架构,从SIMD角度挖掘指令内部的并行性,提出了一套面向众核片上网络的处理器架构。经过验证,运算效率显著提升。
Description
技术领域
本发明属于高性能并行计算处理器技术领域,具体为一种面向通信和多媒体应用,适用于众核片上网络的新型单指令多数据(SIMD)处理器电路结构。
背景技术
单指令多数据(SIMD)是Single Instruction Multiple Data的缩写。SIMD这一概念最早由Flynn提出。后来基于这一思想,也就是一条指令对多条数据通路执行运算,研制了一系列的并行运算架构,包括最早的vector processor,被广泛运用在早期的超大型计算机研制中。上世纪80年代,由Lockheed Martin开发的GAPP架构获得广泛认可,GAPP(Geometric-Arithmetic Parallel Processor)处理器基于SIMD架构,在目前的视频、音频处理领域得到很好的应用。上世纪90年代,SIMD作为一种技术被广泛用于通用处理器的扩展,用于增强通用处理器的多媒体处理能力。其中包括Intel公司的MMX,SSE,SSE2,AMD的3Dnow!,IBM公司也和Motorola公司、Apple公司联合开发了基于PowerPC的SIMD扩展技术VMX,以及Freescale公司专有的Altivec SIMD处理器。用以增强原有通用处理器的并行数据处理能力。以ARM公司,MIPS公司为代表的嵌入式处理器设计厂家,也在其相应的处理器解决方案上,提出了多媒体、DSP扩展指令集架构以及相应的SIMD技术,例如ARM公司的NEON技术和MIPS的DSP扩展、3D扩展技术。
众核处理器(Many-core Processor)是近几年出现的新型处理器解决方案,与传统的单核处理器相比,并行计算能力更强,可扩展性与可配置性也更好,功耗水平也有一定的优势。与传统的专用集成电路相比,灵活性更强,可以支持多种标准和算法,因此近年来得到广泛关注。众核处理器本质上是采用一定的网络拓扑结构将一定数量的微处理器联接起来,采用特定的路由算法负责不同微处理器之间的通信,以获得更好的并行计算能力。另外,在众核处理器中所使用的单个微处理器与传统的微处理器还有所不同,需要面向众核通信架构作一定的架构修改,本发明就是基于面向众核处理器架构所提出的一款SIMD处理器内核,主要面向通信和多媒体应用。
发明内容
本发明目的在于提供一种适用于下一代众核处理器,面向通信和多媒体应用的新型单指令多数据处理器电路结构。
本发明基于开源精简指令集(RISC)处理器架构,根据众核处理器片上网络(NoC,Network-on-Chip)特征与通信多媒体应用运算特征,提出了一种新的SIMD处理器电路结构。能够更好地适用于众核架构下的处理器核通信,并从指令层次提升了内部的并行计算能力,主要由SIMD整数运算单元,流水线控制单元,处理器异常控制单元,SIMD乘除法运算单元,扩展寄存器文件单元共计五个模块组成。
关于SIMD运算模式的定义一般较为宽泛,在本发明针对的多媒体通信应用领域中,所处理数据的位宽一般为8比特(例如快速傅里叶变换FFT,Reed-Solomn纠错码编解码计算,LDPC纠错码编解码计算等),因此充分利用现有寄存器位宽资源,引入SIMD的设计理念,可以提升数据的并行处理能力。因此引入4比特,8比特和16比特三种新的位宽模式,与开源RISC架构下的32比特位宽模式融合,以获得更优秀的并行数据处理能力,这也是本发明的核心。详见图-1。
除依据数据的位宽分类外,SIMD指令根据参与运算数据逻辑关系可分为标量-标量模式和向量-标量模式。标量-标量模式下,在SIMD算术逻辑运算单元、乘除法运算单元和数据移位单元中,数据根据对应比特位确定逻辑关系参加运算,为一对一的形式。而在向量-标量模式下,数据的逻辑关系由指令显式指定,可以实现多对一的运算效果。同时,配套增加向量-标量模式下的寄存器传输,数据访问指令以及相应的跳转控制指令。关于标量-标量和标量-向量运算模式详见图-2和图-3。
每一个模块都充分考虑对原有开源RISC指令集与新添加SIMD指令的支持。SIMD整数运算单元,支持SIMD指令与普通RISC指令两种模式的运算。流水线控制单元,适用于SIMD指令与普通指令模式下,对指令流水中的数据相关、控制相关和结构相关进行判定并对指令流水做相应的调整。处理器异常控制单元,适用于SIMD指令与普通指令模式下,对指令流水中的中断、异常指令等意外情况作相应处理。SIMD乘除法运算单元,负责普通指令和SIMD指令的乘除法运算、乘加乘减运算,以及SIMD指令模式下多对一向量-标量乘法运算。适用于SIMD运算的扩展寄存器文件单元,在现有开源RISC架构寄存器文件基础上,将地址空间由32个扩展到64个,并添加相应的映射表配置映射关系,适用于SIMD指令运算,增加SIMD指令的并行计算能力。关于五个组成模块的系统架构,如图3所示,输入输出信号如表-1所示。
当指令被发射到SIMD处理器内核中,首先被SIMD整数运算单元获取,经过其内部的译码模块得到相应控制信号。控制信号将传输到流水线控制单元和处理器异常控制单元,得到相应的流水线控制操作。同时根据具体的指令,SIMD乘除法单元将获得输入操作数与操作模式信号,给出运算结果。扩展寄存器文件单元将根据每条指令的需求读出或 写入具体寄存器单元的值。关于指令的流水线示意,如图-4所示。
(1)SIMD整数运算单元
SIMD整数运算单元,是SIMD处理器核心组成部分,是获取数据、进行运算并返回运算结果的重要功能单元。如图-5所示,该运算单元由取指模块、译码模块、SIMD移位模块、SIMD算术逻辑运算模块、逻辑1计数模块、数据前推模块、数据获取模块和数据对齐模块共计8个模块组成。
取指模块根据发射的指令判断是否取入下一条指令,当流水线控制模块要求插入空指令或重复执行上一条指令时,取指模块不接受下一条指令输入。当完成取值后,指令将流入译码模块。译码模块根据指令编码判断为普通的RISC架构指令或者为添加的SIMD运算指令,产生相应的控制信号。之后指令将流入数据运算通路,根据指令和译码信号产生的结果访问适用于SIMD指令的扩展寄存器文件单元取得操作数,或者通过数据获取模块访问内存获得操作数,之后通过SIMD算术逻辑运算模块、移位模块、逻辑1计数模块或者SIMD乘除法模块对数据进行运算。数据前推模块判断指令间的相关性,以实现相应的数据前推和数据转发,以消除指令的数据相关与结构相关。最后运算结果将经过数据对齐模块,放回寄存器堆中或者内存中。数据对齐模块的作用是将待存放的数据按照内存所要求的格式对齐,再存放到存储器中。
其中SIMD移位模块和SIMD算术逻辑运算模块是SIMD整数运算单元的核心组成部分。SIMD移位模块不仅支持开源RISC架构下的移位指令,同时支持SIMD模式下4比特,8比特和16比特移位功能。包含逻辑左移,逻辑右移和算术右移。其支持的SIMD指令详见表-2。SIMD算术逻辑运算单元模块是整个SIMD处理器数据通路的关键,负责执行加、减、与、或、异或和或非等原子运算。与SIMD移位模块类似,SIMD算术逻辑运算不仅支持开源RISC架构下的运算指令,也支持SIMD模式下的4比特,8比特,16比特运算指令。SIMD算术逻辑运算模块支持的SIMD指令详见表-3
(2)流水线控制单元和处理器异常控制单元
流水线控制单元负责SIMD处理器中流水线控制信号的产生。在指令流水中,数据相关、控制相关和结构相关是常见的相关类型。特别是增加SIMD指令,并且将原先的32个寄存器扩展到64个寄存器后,流水线控制单元需要做相应的修改。具体的方法是,增加对SIMD指令相关性的判断逻辑,同时将原先针对32个寄存器的相关性判断逻辑转变为针对64个寄存器的判断逻辑。
处理器异常控制单元负责处理SIMD处理器中异常指令、外部中断和程序跳转失效等异常情况。在SIMD模式下,我们新增了SIMD跳转指令,因此需要将开源RISC处理器 架构下的异常控制单元做一定的扩展。
(3)SIMD乘除法运算单元
SIMD乘除法运算单元支持标量-标量和向量-向量两种模式的乘除法运算,支持4比特、8比特、16比特和32比特四种位宽模式的SIMD指令运算。在本发明中,我们对SIMD乘除法运算单元采取可重构设计理念。在保证灵活性的同时,节约了硬件开销。同时本发明优化了SIMD乘除法运算单元数据通路,去除了通信多媒体领域不常用的32比特与32比特相乘运算,引入了实用性更强的SIMD运算指令,于是有效提升了该运算单元的性能,减小了相应的延迟等待。
(4)扩展寄存器文件单元
为了更好的发挥出SIMD指令在通信多媒体应用领域中的强大性能,在众核处理器架构中减少处理器核对内存的访问以降低功耗,本发明引入了扩展的寄存器文件,将原先的32个寄存器扩展为现在64个寄存器。同时为便于众核处理器架构下处理器核与路由之间利用FIFO的通信效率,本发明将FIFO读端口和写端口映射到第63和64号寄存器中,加快了FIFO的通信效率。此外,由于本发明沿用开源RISC指令集架构,需要在指令集架构中实现32个虚寄存器与64个实寄存器的映射。本发明提出了基于映射表的粗细粒度结合的映射配置方法,在保证配置灵活性的同时也实现了映射规则的规范性和易用性。
综上所述,上述发明内容,提出了一种适用于未来众核处理器架构的,面向通信和多媒体应用领域的SIMD处理器电路架构。通过对处理器关键模块的设计和SIMD指令的设计,能够高效的实现多种通信和多媒体应用,做到通用性与高性能兼备。根据对本发明的初步评估,可以在本发明方案中,高效实现多种通信内接收机纠错码算法,并且实现的性能指标与面向特定应用的专用集成电路相差无几,实现了设计目标。
附表说明
表-1新型SIMD处理器电路架构输入输出信号说明。
表-2 SIMD移位模块支持SIMD指令一览。
表-3 SIMD算术逻辑运算模块支持的SIMD指令。
表-4新型SIMD处理器支持的SIMD指令一览。
表-5寄存器扩展配置-复位指令一览。
附图说明
图-1新型SIMD处理器SIMD指令运算模式示意图(一个32比特的寄存器可看做8个4比特子寄存器,或者4个8比特子寄存器,或者2个16比特子寄存器,或者1个32 比特寄存器)
图-2 SIMD指令运算向量-标量模式示意图。
图-3 SIMD指令运算标量-标量模式示意图。
图-4面向通信多媒体应用的新型SIMD处理器流水线示意图。
图-5面向通信多媒体应用的新型SIMD处理器架构示意图。
图-6扩展寄存器单元设计示意图。
图-7 SIMD移位模块psll.o指令运算示意图。
图-8 SIMD乘除法运算单元工作模式示意图。
具体实施方式
根据发明内容中的方案,面向多媒体和通信多媒体应用的单指令多数据处理器电路结构的具体实施方式如下:
(1)指令集架构设计
指令集包括开源RISC架构指令和SIMD指令两部分,本发明在原有开源RISC架构指令集基础上,增加了SIMD指令。为了便于记忆,增添的指令命名规则如下:
标量-标量类型:
xxx.d:表示32比特×32比特指令,这类指令也就是开源RISC所支持的指令
xxx.h:表示16比特×16比特算术逻辑运算指令或32比特*16比特乘除法运算指令,指令高六位是111100
xxx.o表示8比特×8比特算术逻辑运算指令或16比特*16比特乘除法运算指令,指令高六位是110100
xxx.q:表示4比特×4比特算术逻辑运算指令或8比特*8比特乘除法运算指令,指令高六位是101100
向量-标量类型:
pxxx.h:表示多对一模式下16比特×16比特算术逻辑运算指令,指令高六位是111100
pxxx.o:表示多对一模式下的8比特×8比特算术逻辑运算指令或16比特×16比特MDU指令,指令高六位是111100
pxxx.q:表示多对一模式下的4比特×4比特算术逻辑运算指令或8比特*8比特乘除法运算指令,指令高六位是111100
条件跳转,判断置位类型:
xxx.o:表示8比特模式下的条件跳转和判断置位指令。
在通信和多媒体应用领域,需要运算的数据格式通常为8比特,因此目前只实现8比特模式下的条件跳转和判断置位指令。
处理器支持的SIMD指令详见表-4。
(2)关键模块设计
SIMD处理器中关键模块的设计主要分为3个部分进行:SIMD算术逻辑运算模块,SIMD移位模块,SIMD乘除法运算单元。
i.SIMD算术逻辑运算模块灵活配置内部数据运算通路。SIMD算术逻辑运算模块可配合指令实现下列四种SIMD运算模式。
模式=00,4比特*8组 模式=01,8比特*4组
模式=10,16比特*2组 模式=11,32比特*1组
ii.SIMD移位模块除支持开源RISC架构下指令的移位指令,也支持SIMD运算模式下移位指令。如下所示:
逻辑左移指令:PSLL.o/PSLL.h(packed shift left logical)
逻辑右移指令:PSRL.o/PSRL.h(packed shift right logical)
算术右移指令:PSRA.o/PSRA.h(packed shift right arithmetic byte/word).
图-7以psll.o为例,说明了移位运算情况,指令格式为psll.o rd,rt,sa
rd为目标寄存器,rt为源寄存器,sa是移位的偏移量。
iii.SIMD乘除法运算单元支持4种SIMD模式的乘法运算
模式=00,4组8比特*8比特 模式=01,2组16比特*16比特
模式=10,1组32比特*16比特 模式=11,1组32比特*32比特
图-8以两个操作数A=A3A2A1A0,B=B3B2B1B0为例,说明在各种模式下SIMD乘除法运算单元的运算情况。
SIMD乘除法运算单元采取三级流水线,通过对部分积的调度实现不同的运算模式:
M级:产生A3B3,A3B2...A0B0共16个16bit部分积;
A级:不同模式下,对部分积采用不同的组合叠加方式,得到结果并进行乘加乘减;
W级:写回寄存器。
(3)扩展寄存器单元设计与先入先出队列(FIFO)寄存器地址映射
为了更好的发挥出SIMD指令在通信多媒体应用领域中的强大性能,在众核处理器架构中减少处理器核对内存的访问以降低功耗,本发明引入了扩展的寄存器文件,将原先的32个寄存器扩展为现在64个寄存器,包含原先的32个核心寄存器和32个扩展寄存器。如图-6所示。此外,由于本发明沿用开源RISC指令集架构,需要在指令中显式定义32个 虚寄存器与64个实寄存器的映射,通过配置指令实现对映射表进行实时配置,以充分利用64个实寄存器。此外,本发明提出了基于映射表的粗细粒度结合的映射配置方法,在保证配置灵活性的同时也实现了映射规则的规范性和易用性。关于具体的映射规则,请参加表-5。
因为本发明面向未来众核处理器架构,因此需要考虑到处理器核与众核网络的通信问题。在众核处理器中,处理器通过路由相互连接成一个大的NoC(Network-on-Chip)。而处理器与路由通信的端口即为FIFO口。FIFO通常采取异步FIFO,连接起路由时钟域和处理器时钟域,通过一个读口和一个写口实现数据交换。传统的方法是将读口和写口映射到内存地址空间中,通过对内存地址的访问来实现FIFO数据交换。这种做法的缺点是速度慢:首先需计算内存地址,然后再去寻址访问FIFO。另外,访存指令的功耗水平也较高。由此,我们将FIFO的读端口和写端口映射到第63和64号实寄存器中,这样讲内存地址映射改为寄存器地址映射,可以加快了FIFO的通信效率,减少功耗开销。同时,我们为FIFO映射关系专门增加快速配置与复位指令。请参加表-5。
(4)架构综合设计
此外,还需要针对SIMD指令设计译码模块、数据前推模块、流水线控制单元和处理器异常控制单元,以保证对SIMD指令相关性的正确判断,保证指令的正常流水。
完成上述四个阶段,就实现了整个单指令多数据处理器电路结构。本发明借鉴开源RISC处理器架构,在其基础上增加了SIMD指令,扩展寄存器文件,并将众核网络FIFO通信地址映射到寄存器文件中。通过这些改进,本发明可以很好地适用于众核处理器,应用于通信和多媒体领域。根据仿真结果,本方案能够适用于Reed-Solomon纠错编解码,LDPC纠错编解码,DVB-H,DVB-T以及HDTV等通信多媒体应用领域。
附表
表-1新型SIMD处理器电路架构输入输出信号说明
支持指令 | 简要说明 | 实现形式 | 指令编码 |
psll.q | 4比特向量-标量逻辑左移 | psll.q rd,rt,sa | 101100+00000+rt(5)+rd(5)+sa(5)+111011 |
psll.o | 8比特向量-标量逻辑左移 | psll.o rd,rt,sa | 110100+00000+rt(5)+rd(5)+sa(5)+111011 |
psra.h | 16比特向量-标量逻辑左移 | psll.h rd,rt,sa | 111100+00000+rt(5)+rd(5)+sa(5)+111011 |
psra.q | 4比特向量-标量算术右移 | psra.q rd,rt,sa | 101100+00000+rt(5)+rd(5)+sa(5)+111100 |
psra.o | 8比特向量-标量算术右移 | psra.o rd,rt,sa | 110100+00000+rt(5)+rd(5)+sa(5)+111100 |
psra.h | 16比特向量-标量算术右移 | psra.h rd,rt,sa | 111100+00000+rt(5)+rd(5)+sa(5)+111100 |
psrl.q | 4比特向量-标量逻辑右移 | psrl.q rd,rt,sa | 101100+00000+rt(5)+rd(5)+sa(5)+111101 |
psrl.o | 8比特向量-标量逻辑右移 | psrl.o rd,rt,sa | 110100+00000+rt(5)+rd(5)+sa(5)+111101 |
psrl.h | 16比特向量-标量逻辑右移 | psrl.h rd,rt,sa | 111100+00000+rt(5)+rd(5)+sa(5)+111101 |
表-2 SIMD移位模块支持SIMD指令一览
支持指令 | 简要说明 | 实现形式 | 指令编码 |
add.q | 4比特标量-标量模式有符 号加法 | add.q rd,rs,rt | 101100+rs(5)+rt(5)+rd(5)+00000+100000 |
add.o | 8比特标量-标量模式有符 号加法 | add.o rd,rs,rt | 110100+rs(5)+rt(5)+rd(5)+00000+100000 |
add.h | 16比特标量-标量模式有符 号加法 | add.h rd,rs,rt | 111100+rs(5)+rt(5)+rd(5)+00000+100000 |
sub.q | 4比特标量-标量模式有符 号减法 | sub.q rd,rs,rt | 101100+rs(5)+rt(5)+rd(5)+00000+100010 |
[0084]
sub.o | 8比特标量-标量模式有符 号减法 | sub.o rd,rs,rt | 110100+rs(5)+rt(5)+rd(5)+00000+100010 |
sub.h | 16比特标量-标量模式有符 号减法 | sub.h rd,rs,rt | 111100+rs(5)+rt(5)+rd(5)+00000+100010 |
padd.o | 8比特向量-标量模式相加 | padd.o rd,rs,(offset)rt | 110100+rs(5)+rt(5)+rd(5)+offset(5)+111000 |
padd.h | 16比特向量-标量模式相加 | padd.h rd,rs,(offset)rt | 111100+rs(5)+rt(5)+rd(5)+offset(5)+111000 |
psub.o | 8比特向量-标量模式相减 | psub.o rd,rs,(offset)rt | 110100+rs(5)+rt(5)+rd(5)+offset(5)+111001 |
psub.h | 16比特向量-标量模式相减 | psub.h rd,rs,(offset)rt | 111100+rs(5)+rt(5)+rd(5)+offset(5)+111001 |
表-3 SIMD算术逻辑运算模块支持的SIMD指令
支持指令 | 简要说明 | 实现形式 | 指令编码 |
add.d | 有符号32位加法 | add.d rd,rs,rt | 000000+rs(5)+rt(5)+rd(5)+00000+100000 |
add.q | 有符号4位加法 | add.q rd,rs,rt | 101100+rs(5)+rt(5)+rd(5)+00000+100000 |
add.o | 有符号8位加法 | add.o rd,rs,rt | 110100+rs(5)+rt(5)+rd(5)+00000+100000 |
add.h | 有符号16位加法 | add.h rd,rs,rt | 111100+rs(5)+rt(5)+rd(5)+00000+100000 |
sub.d | 有符号32位减法 | sub.d rd,rs,rt | 000000+rs(5)+rt(5)+rd(5)+00000+100010 |
sub.q | 有符号4位减法 | sub.q rd,rs,rt | 101100+rs(5)+rt(5)+rd(5)+00000+100010 |
sub.o | 有符号8位减法 | sub.o rd,rs,rt | 110100+rs(5)+rt(5)+rd(5)+00000+100010 |
sub.h | 有符号16位减法 | sub.h rd,rs,rt | 111100+rs(5)+rt(5)+rd(5)+00000+100010 |
madd.d | 32*32位有符号乘加指令 | madd.d rs,rt | 011100+rs(5)+rt(5)+00000+00000+000000 |
madd.q | 8*8位有符号乘加指令 | madd.q rs,rt | 101100+rs(5)+rt(5)+00000+00000+000000 |
madd.o | 16*16位有符号乘加指令 | madd.o rs,rt | 110100+rs(5)+rt(5)+00000+00000+000000 |
madd.h | 32*16位有符号乘加指令 | madd.h rs,rt | 111100+rs(5)+rt(5)+00000+00000+000000 |
maddu.d | 32*32位乘加,不置符号位 | maddu.d rs,rt | 011100+rs(5)+rt(5)+00000+00000+000001 |
maddu.q | 8*8位乘加,不置符号位 | maddu.q rs,rt | 101100+rs(5)+rt(5)+00000+00000+000001 |
maddu.o | 16*16位乘加,不置符号位 | maddu.o rs,rt | 110100+rs(5)+rt(5)+00000+00000+000001 |
maddu.h | 32*16位乘加,不置符号位 | maddu.h rs,rt | 111100+rs(5)+rt(5)+00000+00000+000001 |
msub.d | 32*32位有符号乘减指令 | msub.d rs,rt | 011100+rs(5)+rt(5)+00000+00000+000100 |
msub.q | 8*8位有符号乘减指令 | msub.q rs,rt | 101100+rs(5)+rt(5)+00000+00000+000100 |
msub.o | 16*16位有符号乘减指令 | msub.o rs,rt | 110100+rs(5)+rt(5)+00000+00000+000100 |
msub.h | 32*16位有符号乘减指令 | msub.h rs,rt | 111100+rs(5)+rt(5)+00000+00000+000100 |
[0087]
msubu.d | 32*32位乘减,不置符号位 | msubu.d rs,rt | 011100+rs(5)+rt(5)+00000+00000+000101 |
msubu.q | 8*8位乘减,不置符号位 | msubu.q rs,rt | 101100+rs(5)+rt(5)+00000+00000+000101 |
msubu.o | 16*16位乘减,不置符号位 | msubu.o rs,rt | 110100+rs(5)+rt(5)+00000+00000+000101 |
msubu.h | 32*16位乘减,不置符号位 | msubu.h rs,rt | 111100+rs(5)+rt(5)+00000+00000+000101 |
mul.d | 32*32位有符号乘法 | mul.d rd,rs,rt | 011100+rs(5)+rt(5)+rd(5)+00000+000010 |
mul.q | 8*8位有符号乘法 | mul.q rd,rs,rt | 101100+rs(5)+rt(5)+rd(5)+00000+000010 |
mul.o | 16*16位有符号乘法 | mul.o rd,rs,rt | 110100+rs(5)+rt(5)+rd(5)+00000+000010 |
mul.h | 32*16位有符号乘法 | mul.h rd,rs,rt | 111100+rs(5)+rt(5)+rd(5)+00000+000010 |
mult.d | 32*32位有符号乘法,结果 放到hi,lo寄存器中 | mult.d rs,rt | 000000+rs(5)+rt(5)+00000+00000+011000 |
mult.q | 8*8位有符号乘法,结果放 到hi,lo寄存器中 | mult.q rs,rt | 101100+rs(5)+rt(5)+00000+00000+011000 |
mult.o | 16*16位有符号乘法,结果 放到hi,lo寄存器中 | mult.o rs,rt | 110100+rs(5)+rt(5)+00000+00000+011000 |
mult.h | 32*16位有符号乘法,结果 放到hi,lo寄存器中 | mult.h rs,rt | 111100+rs(5)+rt(5)+00000+00000+011000 |
multu.d | 32*32位乘法,不置符号位 | multu.d rs,rt | 000000+rs(5)+rt(5)+00000+00000+011001 |
multu.q | 8*8位乘法,不置符号位 | multu.q rs,rt | 101100+rs(5)+rt(5)+00000+00000+011001 |
multu.o | 16*16位乘法,不置符号位 | multu.o rs,rt | 110100+rs(5)+rt(5)+00000+00000+011001 |
multu.h | 32*16位乘法,不置符号位 | multu.h rs,rt | 111100+rs(5)+rt(5)+00000+00000+011001 |
padd.o | 8比特向量-标量模式相加 | padd.o rd,rs,(offset)rt | 110100+rs(5)+rt(5)+rd(5)+offset(5)+111000 |
padd.h | 16比特向量-标量模式相加 | padd.h rd,rs,(offset)rt | 111100+rs(5)+rt(5)+rd(5)+offset(5)+111000 |
psub.o | 8比特向量-标量模式相减 | psub.o rd,rs,(offset)rt | 110100+rs(5)+rt(5)+rd(5)+offset(5)+111001 |
psub.h | 16比特向量-标量模式相减 | psub.h rd,rs,(offset)rt | 111100+rs(5)+rt(5)+rd(5)+offset(5)+111001 |
pmul.q | 8比特向量-标量模式相乘 | pmul.q rd,rs,(offset)rt | 101100+rs(5)+rt(5)+rd(5)+offset(5)+111010 |
pmul.o | 16比特向量-标量模式相乘 | pmul.o rd,rs,(offset)rt | 110100+rs(5)+rt(5)+rd(5)+offset(5)+111010 |
psll.o | 8比特向量-标量逻辑左移 | psll.o rd,rt,sa | 110100+00000+rt(5)+rd(5)+sa(5)+111011 |
psll.h | 16比特向量-标量逻辑左移 | psll.h rd,rt,sa | 111100+00000+rt(5)+rd(5)+sa(5)+111011 |
psra.o | 8比特向量-标量算术右移 | psra.o rd,rt,sa | 110100+00000+rt(5)+rd(5)+sa(5)+111100 |
psra.h | 16比特向量-标量算术右移 | psra.h rd,rt,sa | 111100+00000+rt(5)+rd(5)+sa(5)+111100 |
psrl.o | 8比特向量-标量逻辑右移 | psrl.o rd,rt,sa | 110100+00000+rt(5)+rd(5)+sa(5)+111101 |
[0088]
psrl.h | 16比特向量-标量逻辑右移 | psrl.h rd,rt,sa | 111100+00000+rt(5)+rd(5)+sa(5)+111101 |
plb | 向量-标量模式Load Byte | plb rt,sa, offset(base) | 100111+base(5)+rt(5)+shamt(2)+offset(14) |
psb | 向量-标量模式Store Byte | psb rt,sa, offset(base) | 101101+base(5)+rt(5)+shamt(2)+offset(14) |
prt.o | 向量-标量模式寄存器间定 位传输 | prt.o rt,sat,rs,sas | 000000+rs(5)+rt(5)+sas(2)+sas(2)+000000 +111110 |
pxor.o | 8比特向量-标量模式按位 异或 | pxor.o rt,rs | 110100+rs(5)+rt(5)+00000_00000+111111 |
beq.o | 8比特向量-标量模式相等 跳转指令 | beq.o rs,sas,rt,sat,offset | 011000+rs+rt+sas(2)+sat(2)+offset(12) |
bne.o | 8比特向量-标量模式不等 跳转指令 | bne.o rs,sas,rt,sat,offset | 011001+rs+rt+sas(2)+sat(2)+offset(12) |
bltz.o | 8比特向量-标量模式小于 跳转指令 | bltz.o rs,sas,offset | 000001+rs+11000+sas(2)+00+offset(12) |
bgez.o | 8比特向量-标量模式大等 于跳转指令 | bgez.o rs,sas,offset | 000001+rs+11001+sas(2)+00+offset(12) |
blez.o | 8比特向量-标量模式小等 于跳转指令 | blez.o rs,sas,offset | 000001+rs+11010+sas(2)+00+offset(12) |
bgtz.o | 8比特向量-标量模式大于 跳转指令 | bgtz.o rs,sas,offset | 000001+rs+11011+sas(2)+00+offset(12) |
slt.o | 8比特向量-标量模式判断 置位指令 | slt.o rd,rs,sas,rt,sat | 000000+rs+rt+rd+0+sas(2)+sat(2)+101000 |
sltu.o | 8比特向量-标量模式判断 置位指令 | sltu.o rd,rs,sas,rt,sat | 000000+rs+rt+rd+0+sas(2)+sat(2)+101001 |
表-4新型SIMD处理器支持的SIMD指令一览
表-5寄存器扩展配置-复位指令一览 。
Claims (5)
1.一种面向通信和多媒体应用的单指令多数据处理器电路结构,其特征在于,由SIMD整数运算单元,流水线控制单元,处理器异常控制单元,SIMD乘除法运算单元,扩展寄存器文件单元共计五个模块组成;
SIMD整数运算单元,支持SIMD指令与普通RISC指令两种模式的运算,其中SIMD指令定义为,单条指令对多个数据同时运算;
流水线控制单元,适用于SIMD指令与普通指令模式下,对指令流水中的数据相关、控制相关和结构相关进行判定并对指令流水做相应的调整;
处理器异常控制单元,适用于SIMD指令与普通指令模式下,对指令流水中的中断、异常指令情况作相应处理;
SIMD乘除法运算单元,负责普通指令和SIMD指令的标量-标量乘除法运算、乘加乘减运算,以及SIMD指令模式下向量-标量乘法运算;
适用于SIMD运算的扩展寄存器文件单元,在现有开源RISC架构寄存器文件基础上,将地址空间由32个扩展到64个,并添加相应的映射表配置映射关系,适用于SIMD指令运算,增加SIMD指令的并行计算能力;
当指令被发射到SIMD处理器内核中,首先被SIMD整数运算单元获取,经过其内部的译码模块得到相应控制信号;控制信号将传输到流水线控制单元和处理器异常控制单元,得到相应的流水线控制操作;同时根据具体的指令,SIMD乘除法单元将获得输入操作数与操作模式信号,给出运算结果;扩展寄存器文件单元将根据每条指令的需求读出或写入具体寄存器单元的值;
所述SIMD整数运算单元可以同时兼容开源精简指令集(RISC)架构指令与新添加的SIMD指令,它由取指模块,译码模块,SIMD移位模块,SIMD算术逻辑运算模块,逻辑1计数模块,数据前推模块,数据获取模块,数据对齐模块组成;其中:
取指模块根据发射的指令判断是否取入下一条指令,当流水线控制模块要求插入空指令或重复执行上一条指令时,取指模块不接受下一条指令输入;当完成取值后,指令将流入译码模块;译码模块根据指令编码判断为普通的RISC架构指令或者为添加的SIMD运算指令,产生相应的控制信号;之后指令将流入数据运算通路,根据指令和译码信号产生的结果访问适用于SIMD指令的扩展寄存器文件单元取得操作数,或者通过数据获取模块访问内存获得操作数,之后通过SIMD算术逻辑运算模块、移位模块、逻辑1计数模块或者SIMD乘除法模块对数据进行运算;流水线控制单元和处理器异常控制单元根据指令和译码模块产生的控制信号,判断指令的相关性和合法性,对指令流水线做相应调整;数据的运算结果通过数据对齐模块按照规范的存储格式重新存放,然后根据指令写入SIMD寄存器文件模块或者写入内存;最后,为了适用于多核互联,增添相应的与多核网络路由器通信的先入先出队列(FIFO)端口,并且将FIFO端口映射到扩展的寄存器文件地址空间中,加快处理器与FIFO通信的效率。
2.根据权利要求1所述的电路结构,其特征在于,SIMD算术逻辑运算单元、乘除法运算单元和数据移位单元同时支持开源RISC架构下乘除法运算指令执行,也支持新添加SIMD指令的执行;SIMD模式分为4比特,8比特,16比特和32比特四种位宽模式,其中32比特模式为开源RISC架构指令集运算模式;在SIMD模式下,一个32比特的寄存器看做8个4比特子寄存器,或者4个8比特子寄存器,或者2个16比特子寄存器;SIMD指令利用已有的32比特寄存器位宽,在不同位宽模式下将其看成多个特定位宽的数据,实施单条指令对多个数据的并行操作;
除依据数据的位宽分类外,SIMD指令根据参与运算数据逻辑关系,分为标量-标量模式和向量-标量模式;标量-标量模式下,在SIMD算术逻辑运算单元、乘除法运算单元和数据移位单元中,数据根据对应比特位确定逻辑关系参加运算,为一对一的形式;在向量-标量模式下,数据的逻辑关系由指令显式指定,实现多对一的运算;同时,配套增加向量-标量模式下的寄存器传输,数据访问指令以及相应的跳转控制指令;
此外,SIMD算术逻辑运算单元、乘除法运算单元采用可重构设计方法,最大程度地复用硬件,保证了灵活性的同时节省了硬件开销。
3.根据权利要求1所述的电路结构,其特征在于,寄存器文件单元由开源RISC架构下的32个增加到64个;其中第63号和第64号寄存器作为FIFO的映射端口;在开源RISC架构下,寄存器文件地址寻址域支持最多32个寄存器,因此采取映射表来实现32个虚寄存器地址与64个实寄存器间的逻辑关系映射;通过显式地通过指令配置映射表,实现虚实寄存器间的映射关系切换;配置指令分为细粒度配置与粗粒度配置结合的方式;前者用以修改单个虚寄存器映射关系,后者用以同时修改4组、8组、16组、32组虚寄存器的映射关系;通过细粒度和粗粒度配置指令结合的方式,方便地配置虚实寄存器映射关系。
4.根据权利要求1所述的电路结构,其特征在于,流水线控制单元为面向SIMD指令的控制逻辑,内部采用实寄存器地址判断相关性,实现对指令流水的正确控制,处理器异常控制模块负责开源RISC指令与SIMD指令中的指令异常,对及时给予处理。
5.根据权利要求1至4之一所述的电路结构,其特征在于SIMD处理器为面向众核片上网络的新型架构,在扩展寄存器文件地址中预留两个寄存器地址作为FIFO的映射地址;FIFO为先入先出电路逻辑,负责跨时钟域的数据交换;FIFO将处理器核与片上网络路由器相连,负责不同处理器核之间的数据收发;将FIFO映射到寄存器地址空间中,以减少访存次数,减少通过FIFO通信的延迟等待时间,提高处理器核之间的通信效率;另外,将FIFO的读口映射为第63号实寄存器,将FIFO的写口映射为第64号实寄存器,通过调用寄存器地址空间,以实现对FIFO的快捷访问,减少FIFO通信开销。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010179340 CN101876892B (zh) | 2010-05-20 | 2010-05-20 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010179340 CN101876892B (zh) | 2010-05-20 | 2010-05-20 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101876892A CN101876892A (zh) | 2010-11-03 |
CN101876892B true CN101876892B (zh) | 2013-07-31 |
Family
ID=43019454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010179340 Expired - Fee Related CN101876892B (zh) | 2010-05-20 | 2010-05-20 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101876892B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736895B (zh) * | 2011-04-07 | 2015-06-10 | 中兴通讯股份有限公司 | 一种实现寄存器文件间的数据传输方法及装置 |
CN102141974A (zh) * | 2011-04-11 | 2011-08-03 | 复旦大学 | 一种多核处理器核间通信方法及其电路结构 |
CN104011664B (zh) * | 2011-12-23 | 2016-12-28 | 英特尔公司 | 使用三个标量项的超级乘加(超级madd)指令 |
CN103744644B (zh) * | 2014-01-13 | 2017-03-01 | 上海交通大学 | 采用四核结构搭建的四核处理器系统及数据交换方法 |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US9665372B2 (en) * | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
GB2546465B (en) * | 2015-06-05 | 2018-02-28 | Advanced Risc Mach Ltd | Modal processing of program instructions |
CN111580865B (zh) * | 2016-01-20 | 2024-02-27 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
CN107844832A (zh) * | 2017-10-30 | 2018-03-27 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN110825435B (zh) * | 2018-08-10 | 2023-01-24 | 昆仑芯(北京)科技有限公司 | 用于处理数据的方法和装置 |
CN109388373B (zh) * | 2018-10-12 | 2023-03-14 | 芯来科技(武汉)有限公司 | 用于低功耗内核的乘除法器 |
CN109981337B (zh) * | 2019-02-04 | 2021-04-30 | 复旦大学 | 面向数据开放共享的多源数据对齐方法 |
CN112506468B (zh) * | 2020-12-09 | 2023-04-28 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
CN112631660A (zh) * | 2020-12-16 | 2021-04-09 | 广东赛昉科技有限公司 | 一种并行提取指令的方法与可读存储介质 |
CN112764810B (zh) * | 2021-01-20 | 2022-09-20 | 重庆邮电大学 | 一种应用于处理器的寄存器控制simd指令扩展方法 |
CN114661355B (zh) * | 2022-05-24 | 2022-12-02 | 深圳市智想科技有限公司 | Risc架构处理器的寄存器架构、寄存器组及risc架构处理器 |
CN115861026B (zh) * | 2022-12-07 | 2023-12-01 | 格兰菲智能科技有限公司 | 数据处理方法、装置、计算机设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6988121B1 (en) * | 1999-10-01 | 2006-01-17 | Sun Microsystems, Inc. | Efficient implementation of multiprecision arithmetic |
CN101322111A (zh) * | 2005-04-07 | 2008-12-10 | 杉桥技术公司 | 每个线程具有多个并发流水线的多线程处理器 |
-
2010
- 2010-05-20 CN CN 201010179340 patent/CN101876892B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6988121B1 (en) * | 1999-10-01 | 2006-01-17 | Sun Microsystems, Inc. | Efficient implementation of multiprecision arithmetic |
CN101322111A (zh) * | 2005-04-07 | 2008-12-10 | 杉桥技术公司 | 每个线程具有多个并发流水线的多线程处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN101876892A (zh) | 2010-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101876892B (zh) | 面向通信和多媒体应用的单指令多数据处理器电路结构 | |
US11163720B2 (en) | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations | |
CN102231102B (zh) | 基于余数系统的rsa密码处理方法及协处理器 | |
US20190018815A1 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
CN109213723A (zh) | 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和系统 | |
CN102122275A (zh) | 一种可配置处理器 | |
Gschwind et al. | A novel SIMD architecture for the Cell heterogeneous chip-multiprocessor | |
CN101504599A (zh) | 适于数字信号处理应用的专用指令集微处理系统 | |
CN107667345A (zh) | 打包数据对齐加计算指令、处理器、方法和系统 | |
TW384447B (en) | Processor with reconfigurable arithmetic data path | |
CN102682232B (zh) | 一种高性能超标量椭圆曲线密码处理器芯片 | |
US6675286B1 (en) | Multimedia instruction set for wide data paths | |
CN109614145B (zh) | 一种处理器核心结构及数据访存方法 | |
CN104035896A (zh) | 一种适用于2.5d多核系统的融合存储器的片外加速器 | |
Bos et al. | Topics in computational number theory inspired by Peter L. Montgomery | |
CN101398784A (zh) | 一种二维寻址方法及装置 | |
US7698535B2 (en) | Asynchronous multiple-order issue system architecture | |
CN112506468B (zh) | 支持高吞吐多精度乘法运算的risc-v通用处理器 | |
Curran | IBM zEnterprise 196 processor | |
US7028068B1 (en) | Alternate phase dual compression-tree multiplier | |
Liu et al. | Vector Memory-Access Shuffle Fused Instructions for FFT-like Algorithms | |
LaDuca et al. | Hiding communication delays in clustered microarchitectures | |
Naresh et al. | CRAM: Coded registers for amplified multiporting | |
Anders et al. | A formal semantics of exposed datapath architectures with buffered processing units | |
González et al. | Execute |
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 |
Granted publication date: 20130731 Termination date: 20170520 |
|
CF01 | Termination of patent right due to non-payment of annual fee |