文献标识码: A
文章编号: 0258-7998(2014)02-0030-03
处理器是集成电路发展的重要产物。处理器首先经历了单核时代,当功耗成为单核处理器发展的瓶颈时提出了多核。进入多核时代后,多核处理器虽然在一定程度上解决了功耗问题,但是功耗问题依然存在,随着集成CPU计算核心数目的增多,功耗问题更加明显。多核还面临着程序分配的问题,尤其是核心较多时这个问题更加明显。如何分配程序使各个计算核心的计算效率更高,这个问题和功耗问题不谋而合,当各个核心的计算效率变高时,功耗自然会下降。显然,增加多核处理器的计算效率来降低功耗是一种绿色计算。由此提出了多线程的概念来管理多核处理器的计算。进入多线程时代后,处理器迎来了巨大的发展空间[1-2]。
RMI公司的XLR系列网络处理器具有8个核,每个核上具有4个硬件线程,每一个硬件线程在逻辑上可以看作一个虚拟的CPU(vCPU)。核上提供对硬件线程的支持,主要是为了提高CPU的利用率及进程上下文切换的能力[3]。
本文在多态并行处理器的基础上提出硬件线程管理器。与XLR处理器对比,本文中的多态处理器具有16个核,每个核具有8个SIMD线程和8个MIMD线程,同时也提高了处理器的利用率和进程上下文切换的能力。
1 多态并行处理器
多态并行处理器是一种适用于图形和图像处理的并行阵列机,这种结构的阵列机支持SIMD(Single Instruction Multiple Data)和MIMD(Multiple Instruction Stream Multiple Data Stream)两种工作模式,同时还具有异步执行、近邻通信以及远程路由器通信的机制[4]。
本文的线程管理器就是基于此多态并行处理器提出的,如图1所示。16个(4×4的二维阵列)基本处理单元(PE)、路由器(RU,即图中R)、行控制器RC(Row Controller)、列控制器CC(Column Controller)和簇控制CLC(Cluster Controller)器组成一个基本簇。每个PE都包含上、下、左、右4个通信寄存器,也使得每个簇的PE个数可以自由定制(例如m×n的PE)[5]。
图1中的T(即Thread Manager,简称TM)就是针对这种灵活高效的处理器结构而提出的专用硬件线程管理器。
2 线程管理器工作流程
在加入线程管理器之前,基本簇中的每个PE工作与否在很大程度上决定于指令寄存器中加载的指令是否通信阻塞以及需要的数据是否到来。如果每个PE在工作过程中与相邻PE进行数据通信很少,那么多态并行处理器整体的计算效率就会比较大。但是当PE间数据通信较多时,处理器计算效率就会明显下降。
本文提出的基于多态并行处理器的线程管理器解决了处理器计算效率的问题。该线程管理器包含8个SIMD线程。在执行指令的过程中,如果执行到近邻通信的指令,则线程管理器会监视通信寄存器CR(Communi-
cation Register)的通信状态;如果遇到远程调度路由指令,则线程管理器会监视路由器RU的通信状态。当遇到近邻通信指令和远程调度指令时,线程管理器会切换其他的线程以减少等待通信数据带来的延迟,有效地提高处理器的执行效率。
3 线程管理器功能描述
线程管理器需要监测PE中MIMD模式下8个线程的执行状态,若遇到近邻通信指令或者路由指令,则需要切换线程或者进行其他响应操作,具体详见3.2节。除此之外,线程管理器还需要管理MIMD模式的8个线程的运行及切换(注:SIMD模式由SC控制器统一管理控制)。
3.1 线程寄存器
线程寄存器包括2组寄存器、线程配置表寄存器和线程状态表寄存器。
线程配置表寄存器共58位,包括5个域,如表1所示。这5个域的意义:quant 表示该线程分配的一次执行时间;I-base表示该线程的指令存储基地址;I-size表示该线程分配的指令存储大小;M-base表示该线程的数据存储基地址;M-size表示该线程分配的数据存储大小。
线程状态表寄存器共38位,包括6个域,如表2所示。这6个域的意义:PC表示该线程当前执行的指令地址;status表示当前线程的状态;avail表示当前线程正在执行指令的两个源操作数和一个目的操作数的存在与否;mask表示源操作数和目的操作数是否被当前执行的指令使用;rank表示调度优先权,0表示优先权最高;stamp为时间戳,表示该线程在quant时间内的运行时间。
3.2 路由指令处理方法
路由指令通信分为两种,一种是PE执行过程中遇到路由指令,另一种是RU传来路由指令。
3.2.1 PE发出路由指令
MOVEF:按照调度算法切换线程,线程调度算法详见3.3节。
MOVET:挂起当前线程,停止所有线程的工作,当路由器发来finish后,再启动当前挂起的线程。
此外,CALLR同MOVEF;RETR无操作;MVT、MOVET、MVF、CALLC则同MOVEF。
3.2.2 RU发出路由指令
MOVET:首先路由器发来请求信号request,然后挂起正在工作的线程,停止所有线程的工作;停止后给路由器响应信号respond,路由器开始传输数据;传输结束后会发来一拍的结束信号finish,同时发来线程号thread_id,然后启动thread_id线程。
MOVEF:操作与MOVET类似,唯一不同的是最终启动的是之前挂起的线程。
此外,CALLR、RETR、MVT、RETC均同MOVET。
3.3 线程调度算法
本文设计的调度算法具体如下[6]:
(1)每次执行线程,只执行rank值为0线程。
(2)运行时间达到分配的执行时间时,该线程停止执行,该线程rank值变为最大。
(3)遇到近邻通信阻塞时,该线程停止执行,且rank值变为最大。
(4)遇到路由通信阻塞时,该线程停止执行,具体执行方法参照3.2节。
(5)阻塞数据到来时,正在执行的线程停止执行,rank值加1,被唤醒的线程rank值变成0。
下面以0、1、2、6 4个线程为例来描述线程调度算法,如图2所示。
(1)idle:空闲状态,表示该线程没有指令需要执行。当该线程加载好指令及数据后,线程跳转到ready状态。
(2)ready:就绪状态,表示该线程已经具备可执行的条件。当该线程被选中执行时,线程跳到run状态。
(3)run:运行状态,表示该线程正在运行。当该线程运行时间值stamp等于一次分配的执行时间quant时或者强制停止运行时,该线程跳转到ready状态;当该线程运行完毕时,该线程跳转到idle状态;当该线程发生阻塞时,该线程跳转到wait状态。
(4)wait:等待状态,表示该线程正在等待阻塞数据的到来。当路由或近邻通信的阻塞数据到来时,该线程就会跳转到ready就绪状态,等待该线程被选中执行。
5 仿真及性能分析
本文在ModelSim中完成了功能仿真,编写了4×4阵列的汇编程序。仿真结果如图4所示。由图可见结果正确,能够正常执行、切换、停止线程[7]。
在完成功能仿真的同时,本文还进行了简单的性能分析。本文使用了8个不同的16核PE的无线程程序,将第1种程序放在16个PE的0号线程,第2种程序放在16个PE的1号线程,以此类推,8个线程都放入程序。经统计,使用线程管理器后,总的程序计算时钟数为3 127;不加入线程管理器时,8个程序的总计算时钟数为3 762。性能提升计算式:
由式(1)可得,性能提升百分比为16.9%。
本文提出了一种适用于多态并行处理器的硬件线程管理器,完成了电路设计、功能仿真工作,最终在Xilinx V6 550 FPGA上实现。这种硬件线程管理器能够管理处理器中MIMD模式下的8个线程,同时能够配合完成SMID模式操作。线程管理器的提出使得通信数据阻塞带来的等待不复存在,可以大大提升处理器的执行效率,降低处理器的功耗。
今后的研究工作重点是通过完成大量的测试,分析线程管理器的性能,根据分析结果改进线程管理器调度算法,以满足更高的性能需求。
参考文献
[1] KECKLER S W,DALLY W J,KHAILANY B,et al.GPUS and the future of parallel computing[J].IEEE Computer,2011,44(9):7-17.
[2] MAROWKA A,GAN R.Back to thin-core massively parallel processors[J].IEEE Computer,2011,44(12):49-54.
[3] 刘近光,梁满贵.多核多线程处理器的发展及其软件系统架构[J].微处理机,2007(2):1-7.
[4] 李涛,肖灵芝.面向图形和图像处理的轻核阵列机结构[J]. 西安邮电学院学报,2012,17(3):43-46.
[5] Fan Dongrui,Zhang Hao,Wang Da,et al.Godson-T:an efficient many-core processor exploring thread-level parallelism[J].IEEE Computer Society,2012,32(10):38-47.
[6] LIU C L,LAYLAND J W.Scheduling algorithms for multiprogramming in a hard-real-time environment[J].Journal of the ACM,1973,20(1):46-61.
[7] TSUEI T F,YAMAMOTO W.Queuing simulation model for multiprocessor stems[J].Computer,2003,36(2):58-64.