APP下载

基于SIMD体系结构的指令级并行结构设计

2017-02-03刘有耀张仲伟

电子设计工程 2017年21期
关键词:处理单元体系结构流水线

刘有耀,张仲伟

(西安邮电大学电子工程学院,陕西西安710061)

SoC的概念提出之后[1-3],随着并行计算技术与深亚微米技术进步,出现了以网络互连的大规模并行处理系统芯片(MPP SoC),即阵列处理器系统芯片(Array Processor SoC),目前系统芯片体系结构还处在发展阶段。目前多核阵列处理器(Multi-core Processor)是处理器发展的趋势。随着微电子工艺技术的不断突破,在单个芯片上能够集成越来越多的电路,为多核处理器的出现提供条件。在实现软件无线电时,多核CPU+GPU体系架构已经是经典的解决方案,通过不同的数据映射到不同的处理单元或GPU单元中,得到并行处理,提高LTE系统基带算法的执行效率。下一代通信系统中存在大量的非数据并行算法[4-5],无法通过基于指令流的大规模数据并行计算提高计算效率。要求处理器能支持指令级并行(Instruction-level Parallelism,ILP)、数据级并行(Data-level Parallelism ,DLP)、线程级并行(Thread-level Parallelism,TLP)计算进行各种规则计算和不规则计算[6-7]。所以为了满足新时期的用户体验,我们需要研究适用于高性能计算的多核并行处理器,具有一定的实际意义和应用价值。

1 结构模型

在计算机体系结构模型分类中[8],共有10种类型:基于指令流(机器执行的指令序列)计算的系统结构有单指令单数据SISD(Single Instruction Single Data,SISD)、单指令多数据 SIMD(Single Instruction Multiple Data,SIMD)、多指令单数据 MISD(Multiple Instruction Single Data,SIMD) 和 MIMD(Multiple Instruction Multiple Data,SIMD)4种;基于数据流计算的体系结构有SD与MD两种;基于构令流计算的体系结构有SCSD、MCSD、SCMD与MCMD 4种。

按照Flynn的分类[9],主要还是两种指令流计算模式的并行计算的体系结构,一种是数据级并行的SIMD体系结构,多不同的数据相同的操作;第二种是指令级并行的MIMD体系结构对不同的数据不同的操作。

SIMD体系结构,在同一个控制部件管理下,对多个处理单元广播同一个指令,但操作的对象是不同的数据,能够完成数据级并行(DLP)操作,特别适合多媒体等数据密集的应用,所以我们还需要开发在SIMD体系机构中的指令级并行,实现高性能计算。SIMD体系结构的计算机,它在同一时间访问内存,得到多个数据进行计算,这是它的优势。同时可以在处理单元集成具有ASIC功能的电路,如FFT算法电路、运算估计电路、图片算法电路及加速芯片等,扩展SIMD体系结构的功能。但是由于多媒体应用变得越来越多样化,单一的功能单元作为加速部件已经不满足要求,而且较短的处理单元结构更加易于编译器优化,所以考虑多个SIMD结构组合,也即本文的设计方案即将提到的以SIMD结构与VLIW结构结合形成小规模的并行单元片,再以独立的单元构成阵列互连结构,组成多核阵列结构的处理器。

2 阵列结构设计

2.1 阵列结构的体系结构

设计是基于SIMD体系结构的简单RISC处理器,指令集选用开放程度高的、广泛开发应用的MIPS[10-11]。RISC体系结构的一个突出的优势就是便于利于流水线技术的应用,而流水线又是处理器设计当中的重要核心技术。

设计处理器首先需要定义一个规范,这里定义一个简单的指令集[12-13],面向无线通信的处理器单元的指令是根据通信算法的仿真提取优化得出的结果。采用load/store结构,兼容使用MIPS处理器的一些指令,32位固定长度。

算数运算指令:ADD加法、SUB减法、ADDI立即数加法。

逻辑运算指令:AND与、OR或、NOR或非、XOR异或、ANDI与立即数、OR或立即数、XORI异或立即数。

移位指令:SLL左移、SRL右移。

条件分支指令:BEQ条件分支。

无条件跳转指令:J跳转。

数据传送指令:LD取数据、ST存储数据。

空指令:NOP空操作。

(1)尾砂粒度及成分组成。尾矿库中尾砂按粒度划分,以粉砂为主,平均粒径d50=0.04~0.1 mm,加权平均粒径dp=0.05~0.15 mm,不均匀系数Cu=3~4,粘粒含量1%~5%,局部大于20%。尾砂物质主要成分是石英,其次是难选铁氧化物,再次是少量的绿泥石和碳酸盐类矿物。

上述指令中包含三类典型的指令:整数操作运算类、控制CTRL类、存储MEM类。算数类主要进行PE阵列单元的算数、逻辑等操作,控制类主要有传送、跳转返回等指令,存储指令负责PE寄存器与存储DRAM之间的数据交换。整数处理器指令格式分为3种,如表1所示,两个操作数和结果都在寄存器的运算类R型指令;一个操作数、一个立即数的运算类指令,读取指令和条件指令,均为I型指令;第三类是跳转类J型指令,如表1所示。

表1 指令格式

指令格式中的opcode代表6位指令主操作码,rd是5位的目的寄存器号,rs是5位源操作数号,rt是5位源/目的寄存器器号,或指定其他特定功能。Imm是16位立即数,或数据存储数据加载指令的数据地址字节偏移量和分支指令中相对程序计数器的偏移量。shamt是位移偏移量,func是功能码,target address是目标地址,提供跳转指令地址用,J型指令中rd/rs用于其他用途。

为了需要处理器较高的性能、较高的处理速度,在单位时间内能够处理较多的数据任务,处理器向着多核或阵列处理器的方面迈进。这里设计简单的多核处理器系统芯片,采用二位Mesh结构的互联网络[14],连接处理单元PE内核,处理单元可以认为是一个个IP核,能够完成各种同样的或不一样的功能,整体示意图如图1所示。

二维互连结构使得多核处理器的处理能力得到了大幅提升,在SIMD计算模式下能够进行数据流的并行数据处理(DLP)。通过同构或异构PE处理单元,在PE内部也实现并行化的设计,采用超长指令字(VLIW)的技术[15-16],对每个PE执行单元发送指令,达到能够在指令级实现并行(ILP)操作,也即能够自同一时间SIMD体系结构能够执行多指令多数据MIMD计算模式。同理,SIMD体系结构的处理器也能够在实现单指令单数据SISD、多指令单数据MISD计算模式。达到在计算机体系结构层次实现体系结构的统一。在单个处理单元层次,设想同时采用双发射的结构,进一步提高处理器单元的资源利用率,提升性能。

图1 处理器阵列结构示意图

2.2 阵列处理单元设计

处理单元PE,对指令和数据并行处理。针对多媒体数据长度多打8或16位,所以在设计数据时选择16位。有两个部分组成:指令配置模块,多个ALU模块单元。把指令配置单元中的超长指令,分配到每一个实际的处理单元中进行译码执行处理。

每个ALU处理单元都有3个部分组成:译码控制部分、寄存器文件与运算ALU部分、运算结果会写部分。

处理器的控制器设计,是将一个个微指令转换成控制信号,供各数据通路部件使用。根据PE中指令配置模块分配的指令,译码解析成一系列流水线各级使用的控制信号,送到各个功能指令能够顺利执行。

2.2.1 处理单元数据通路设计

取指单元分为两个操作部分:从指令存储icache中读取指令字节和程序器PC(Promgram Counter)计算指令地址。

译码ID级,负责对来自取指级指令的译码,产生控制信号,指导整个阵列单元的处理功能、数据的存储、分支控制等。

执行单元完成最后的运算等操作,分为寄存器模块和ALU模块。ALU的所有数据都来自寄存器文件中,寄存器模块根据控制模块ctrl的指令的相应操作数码进行读取数据,设置有通用寄存器和专用寄存器。专用寄存器用于存储类指令和路由类指令数据的存储。在时钟上升沿来临时根据读使能信号进行读取数据,在下降沿对寄存器进行写数据操作。

存储dcache用一个可读可写的ram完成,这里不研究存储结构,ram当作理想的存储来模拟实现数据通路的顺序完成。根据写使能信号,在时钟上升沿对alu的数据进行存储,根据读使能信号和地址信息读取相应的数据,结果经回写单元送到寄存器文件中。

2.2.2 PE核结构实现

指令级并行(ILP)。当指令间不存在相关时,它们在流水线中可以重叠取来并行执行多个指令在不同的处理单元并行执行。这种指令序列中存在的潜在的并行性成为指令级并行。对于高性能的处理器,有3个影响其性能的因素:指令数、IPC每个时钟周期的指令数、时钟频率。同等条件下,为了提高IPC,实际运行中必须挖掘程序中指令间的并行,让一个时钟周期能够并行执行多条指令。指令级并行的实现方式有两种,首先是通过流水线的方式使指令的执行可以重叠进行以提高效率;另一种方式是采用多发射的技术,在一个周期内处理器内处理循环中运行着多条指令,这种实现方式有超标量和超长指令字(VLIW:Very Long Instruction Word)处理机。一般的处理器将流水线分为四级或五级,如表2。

表2 处理器单元四级流水线

采用流水线的方式执行指令,一般处理器中的指令包含如下几个步骤;1)从指令存储器中读取指令;2)指令译码对指令进行解析;3)执行部件进行处理操作;4)与存储器进行交互数据;5)回写寄存器操作。

二维互联结构使得多核处理器的处理能力得到大幅提升,在SIMD计算模式下能够进行数据流的并行处理(DLP),同时在PE处理单元的内部,PE单元内核结构如图2所示。通过同构或异构ALU运算处理单元,在PE内部也实现并行化的设计,采用超长指令字(VLIW)的技术,对每个ALU执行单元发送指令,达到能够在指令级实现并行(ILP)操作。

根据超长指令字技术,来实现PE内核中多个处理单元的连接。其结构如图2所示。内部构成的是4*4的结构,每一列执行相同的指令,即超长指令包含中有四列处理单元的操作,每一列的指令是双发射的64位,所以指令配置单元超长指令是256位。指令配置单元接受来自指令内存中的超长指令,然后拆分到4个独立的指令缓存中读出指令。

图2 阵列单元内部结构示意图

3 电路功能仿真验证与分析

一个简单的C程序,在实际执行之前,先由编译器翻译成一条条的汇编指令,随后汇编指令送到指令存储器中等待调用。这里对双发射PE处理单元的功能验证,由汇编程序指令送到处理器执行。

单核设计,其仿真程序如图3:图中左边是模拟汇编程序,右边是理论结果,程序中使用了基本的运算指令,如加减、与或跳转返回。

图3 单核处理单元模拟仿真程序

按顺序执行,其实际仿真结果如图4所示,图中采集的信号有alu结果输出、程序计数器pc和跳转返回信号Jmp、return等。结构显示与理论结果一致。

图4 单核功能仿真结果截取图

上述简单的程序,仿真处理器简单指令的顺利执行,对单核处理器的控制器、数据通路、流水线的顺利完成进行正确的实现。如运算指令加减,逻辑指令与或,I型立即数指令,位移指令、跳转指令等。

在没有数据冒险检测的情况下,进依靠编译器的编排指令顺序,来实现一个双发射的处理单元,其仿真检测程序如图5所示。

图5 双发射处理单元仿真程序

依照上面的程序编排指令,在仿真工具上仿真,得到的结果如图6所示。图中显示的回写单元的数据,数据运算alu_out1的输出,源操作数的输出和程序计数器。编译器的编排,在有冒险的指令间插入空操作,结果输出会是0,ALU的结果输出到回写单元,再写回到寄存器中,如此需要2个时钟周期。图中还模拟了存取数据指令,先存再取。

按照相同的方法设计多发射阵列处理单元——双发射四核处理器单元,双发射能够让运算处理与存取数据并存运行,提高性能,让4个ALU单元同时执行相同的运算。仿真四核处理单元,其汇编程序及运行结果如图5和7所示,图中采集的数据有ALU的输出、回写的数据输出、3个源操作数和程序计数器PC的值。

双发射的仿真验证表示双发射处理器能够执行当前的指令如加减、存取,数据通路正常,程序中的冒险插入空操作处理运行正常。另外双发射仿真验证结果表示四核处理单元的正常运行,打包整个四核电路就可以构成阵列PE单元的一部分,排列4个这个四核电路和一个指令配置单元,形成PE单元如图1所示。

图6 双发射处理单元仿真结果(没冒险检测)

图7 四核处理单元仿真结果截取图

4 结论

本文对多核处理器系统芯片进行设计,深入研究处理器原理、指令级并行及互连,在此基础上对多核处理器单元片、互连通信节点单元进行电路设计。分模块化进行设计实现处理单元电路PE,采用四级流水线线术、多发射多核技术。对这些电路设计进行仿真和验证,表明多核处理器电路能够实现指令级并行、数据级并行操作。

[1]Mannheim K.Man&Soc Age Reconstructn[M].Routledge,2013.

[2]Gulliver P H.Socl Contrl African Soc Ils 72[M].Routledge,2013.

[3]周红月.SoC系统级建模与仿真平台的设计与研究[D].天津:天津大学,2012.

[4]孔令兵.5G移动通信发展趋势与若干关键技术[J].通信电源技术,2015,32(4):551-563.

[5]Patil C S,Karhe R R,Aher M A.Development of mobile technology:a survey[J]. International JournalofAdvanced Research in Electrical,Electronics and Instrumentation Engineering,2012,1(5):374-379.

[6]沈绪榜,孙璐.计算模式的统一研究[J].计算机学报,2014,37(7):1435-1444.

[7]Soliman M I,Ahmed F S.Exploiting ILP,DLP,TLP,and MPI to accelerate matrix multiplication on Xeon processors[C]//Engineering and Technology(ICET),2014 International Confe-rence on.IEEE,2014:1-6.

[8]王晗.基于多核环境下的多线程并行程序设计方法研究[D].太原:中原工学院,2014.

[9]李涛,肖灵芝.面向图形和图像处理的轻核阵列机结构[J].西安邮电学院学报,2012,17(3):41-47.

[10]李辉楷,韩军,翁新钎,等.精简指令集计算机协处理器设计[J].计算机工程,2012,38(23):240-242,246.

[11]袁婷,刘怡俊.自主设计精简指令集的流水线CPU[J].微电子学与计算机,2015(2):124-128.

[12]朱博元,刘高辉,李政运,等.RISC指令集众核处理器功能验证与实现[J].计算机工程与应用,2014(21):54-58.

[13]李春江,徐颖,黄娟娟,等.SIMD指令集设计空间的形式化描述[J].计算机科学,2013,40(6):32-36.

[14]赵克敏.片上网络基础研究及拓扑结构设计[D].西安:西安电子科技大学,2012.

[15]杨惠陈书明.一种基于VLIW结构的高性能变长指令发射机制[J].计算机研究与发展,2013,50(10):2239-2246.

[16]宋云朋.基于超长指令字的ASIP设计与实现[D].西安:西安电子科技大学,2013.

猜你喜欢

处理单元体系结构流水线
不同生物链组合对黄河下游地区引黄水库富营养化及藻类控制
城市污水处理厂设备能耗及影响因素分析研究
长填龄渗滤液MBR+NF组合工艺各处理单元的DOM化学多样性
一种高可用负载均衡网络数据采集处理的方法及系统
流水线
基于粒计算的武器装备体系结构超网络模型
作战体系结构稳定性突变分析
报废汽车拆解半自动流水线研究
基于DODAF的装备体系结构设计
基于云计算的航天器控制系统自组织体系结构