文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.01.003
中文引用格式: 周佳佳,李涛,黄小康. 多核同时多线程处理器的线程调度器设计[J].电子技术应用,2016,42(1):19-21.
英文引用格式: Zhou Jiajia,Li Tao,Huang Xiaokang. Design of a thread scheduler in a simultaneous multi-threaded muti-core processor[J].Application of Electronic Technique,2016,42(1):19-21.
0 引言
随着并行技术的不断发展,如何更好地提高处理器的并行处理性能成为处理器设计者们急需解决的热点问题。传统处理器通过开发指令级并行(Instruction Level Parallelism,ILP)[1]来提高处理器的性能,但由于应用程序自身的ILP很低、硬件的复杂度及功耗等众多因素的影响导致处理器的性能不高。因此设计者们把目光纷纷投向更高层次的并行-线程级并行(Thread Level Parallelism,简称TLP)[1-2]。
同时多线程最先由美国加州大学的Tullsen等人在1995年开始研究,并提出了基本的SMT[3-4]处理器模型。主要原理是通过资源竞争和资源动态共享的方式使所有的执行单元同时活跃,充分利用TLP和ILP来提高处理器的资源利用率。
目前的商用处理器采用的技术主要是同时多线程和片上多处理器技术,例如Intel的P4处理器[5]的Hyper-thread技术实现同时执行两个线程,IBM的Power5处理器[6]每个芯片有两个内核,每个内核可以同时执行两个线程。SUN的Niagara处理器[7]每个芯片有8个内核,每个内核可以同时执行4个线程。我国的龙芯2号处理器[8]也采用了超标量与同时多线程技术来设计。
本文在多核处理器[9-11]的基础上提出了一种采用同时多线程技术[3-4]的线程调度器[12]设计。与Niagara处理器相比,本文中的多线程处理器拥有16个核,每个内核一共具有8个线程,最大可以同时执行4个线程,并且可以在高低线程之间快速切换,减少了因为线程中遇到长周期指令所造成的资源浪费,同时也提高了处理器的利用效率。
1 整体硬件结构
时钟共享多线程处理器是一种适用于图形和图像处理的并行阵列机。该阵列机支持MIMD(Multiple Instruction Stream Multiple Data Stream)运行模式、分布式指令并行模式和流处理运行模式这三种工作模式,同时还具有异步执行、核间通信以及线程间通信的机制。
这种结构的阵列机由16个处理单元(Processing Element,PE)互连构成一个4×4的二维阵列,还包括1个前端处理器、4个协处理器、2个调度器及2个存储管理。系统的整体结构如图1所示。
2 线程调度器功能描述
线程调度器完成的功能描述如下:
(1)监测预处理模块,当外部需要给线程加载指令或数据时响应预处理模块;
(2)当线程发生阻塞时负责切换线程,并产生PE某一个线程的启动信息,其中包括启动有效信号、 起始PC值、启动的线程号;
(3)线程之间的同步处理,负责监视需要同步的线程是否同步结束;
(4)当外部需要重新配置某一个线程的指令或数据时负责停止该线程,产生pe_stop信号;
(5)给外部提供三个8位的寄存器,分别为线程启动信息寄存器、线程结束信息寄存器、线程断点信息寄存器。
3 同时多线程设计方案
同时多线程技术最大的优点在于增加很少的面积,就能够获得很高的资源利用率,即用较小的成本换取较大的并行性能,充分地挖掘了线程级的并行。
本文基于时钟共享多线程处理器提出的线程调度器支持八个线程,最多可以同时执行四个线程。这四个线程同时执行各自的程序。每个线程拥有各自独立的取指单元、译码单元、指令存储和数据存储。而其他的资源,如各个执行单元和地址流水线,则是八个线程共享。
在每一个时钟周期的上升沿,每个PE最多有八条流水线在执行,且最多可输出四条流水线结果,这四条流水线产生的结果属于不同的线程组,每个线程组都拥有高低两个线程。因此在某一组中若有一个线程陷入阻塞状态,则可以切换至组内的另一线程来执行程序,可以有效隐藏线程由于等待过程所造成的延迟,提高处理器整体的工作效率。
4 线程调度器详细设计
4.1 线程管理器的总体结构
该调度器由信息处理模块、状态控制模块、寄存器模块、PE控制模块四大部分构成,各模块的连接关系如图2所示。
线程调度器的工作流程为:信息处理模块接收来自预处理模块的配置信息、指令、数据及加载结束信号,判断是否需要启动该线程。线程启动之后状态控制模块中对应的线程状态机发生跳转,同时寄存器模块实时记录该线程的PC值。当接收到译码模块的阻塞信息时停止当前运行的线程且切换线程,PE控制模块负责产生新线程的启动信息。当线程运行结束后,信息处理模块负责记录线程的结束信息。
4.2 线程调度器的工作模式
线程调度器拥有五种工作模式:启动模式、阻塞工作模式、同步模式、断点模式和重配置模式。
启动模式线程接收来自预处理模块的线程启动信息配置要启动的线程,将对应的线程ID号和PC值发送给PE来执行。
阻塞工作模式表示当某一线程遇到阻塞,则切换到其线程组内的另一线程上来执行。若是两个都阻塞,则先解除阻塞的线程先执行。
同步模式下对需要同步的几个线程进行等待处理,并判断是否达到同步。若达到,则解除同步模式,开始正常执行;若没有达到,则继续等待。
断点模式是用来方便处理器进行调试错误的一种工作模式。当程序计数器PC遇到断点时,该线程停止工作,保存工作信息以待调试检查。
重配置模式是对线程进行重新配置,根据上层的需要对线程要执行的程序内容进行添加或更改。
4.3 线程状态转移关系
如图3所示,为线程调度器中线程的状态转移图。
其中各个状态说明如下:
(1)IDLE:空闲状态。当线程启动信号有效时(th_start=1),则状态跳转到RUN运行状态;
(2)RUN:运行状态。当线程位于此状态时,表示线程正在执行,遇到阻塞或等待跳转到WAIT状态;
(3)BREAK:断点状态。当线程的断点数据收集结束(th_break_end=1)时,状态跳转到RUN运行状态;
(4)WAIT:等待状态。当线程发生重配置(th_recfg=1)时,则状态跳转到IDLE初始状态;当线程阻塞解除(th_blk_fns=1)时状态跳转到RUN运行状态;
(5)SYN:同步状态。线程位于该状态下,遇到同步解除(th_syn_fns=1)信号,跳转到READY状态;
(6)READY:准备状态。表示线程处于一个随时可以启动的状态,当线程被选中时(th0_hit=1),则状态跳转到RUN运行状态。
5 仿真结果分析和比较
本文采用Xilinx公司的ISE14.4工具对硬件电路进行了综合,选用Xilinx公司型号为XC7V2000t-2fhg1761的FPGA,设计电路的最高频率可以到达431.816 MHz。
在完成功能仿真和综合的同时,本文还进行了简单的性能分析。测试在8个PE上进行,采用图像处理中的边缘检测算法,分别对32×32、64×64以及128×64的图像进行测试,最后得到的结果如表1所示。另外根据性能提升计算公式(1)[12]可以得出整体处理器的性能提升百分比如表2所示。
可以看出,对于比较小的图像,过多的线程会导致整体运算速度变慢。这是因为此时图像整体运算时间比较短,线程切换所造成的延时会在整体时间中占据比较大的比例。而对于更大的图像,同时多线程技术则对处理器的性能提升影响比较大。对于多核同时多线程处理器而言,八个线程的线程调度器设计会使处理器得到更高的性能提升,充分体现了同时多线程技术的优点。
6 总结
本文通过对时钟共享多线程处理器架构的深入研究,采用同时多线程技术设计和实现了处理器的核心部件——线程调度器。通过在处理器的多个线程上运行图像处理算法,得到处理器的加速比最大为69.25%,充分提高了多核处理器的性能。并对所设计的硬件电路进行了全面仿真验证,综合和仿真结果表明电路的功能正确,工作频率为431.816 MHz,达到了时钟共享多线程处理器的需求。
参考文献
[1] THEO U,BORUT R,JURIJ S.Multithreaded processors[J].The Computer Journal,2002,45(3):320-348.
[2] BRUNIE N,COLLANGE S,DIAMOS G.Simultaneous branch and warp interweaving for sustained GPU performance[C].Computer Architecture(ISCA),2012:49-60.
[3] 刘权胜,杨洪斌,吴悦.同时多线程技术[J].计算机工程与设计,2008,29(4):963-967.
[4] EGGERS S J,EMER J S,LEVY H M,et al.Simultaneous multithreading:A platform fornext-generation processors[J].IEEE Micro,1997,17(5):12-19.
[5] 张云.解析超线程技术[J].甘肃联合大学学报,2007,21(4):99-101.
[6] Frank Soltis.Power5对i系列意味着什么[J].中国经济和信息化,2004,20(6):A2-A3.
[7] POONACHA K.Niagara:a 32-way multithreaded sparc processor[J].Mirco,IEEE,2005,25(2):21-29.
[8] 李祖松,许先超,胡伟武,等.龙芯2号处理器的同时多线程设计[J].计算机学报,2009,32(11):2266-2273.
[9] 黄虎才.多态阵列处理器的并行计算研究[D].西安:西安邮电大学,2014.
[10] 李涛,杨婷,易学渊.萤火虫2:一种多态并行机的硬件体系结构[J].计算机工程与科学,2014,12(2):191-200.
[11] 李涛,肖灵芝.面向图形和图像处理的轻核阵列机结构[J].西安邮电学院学报,2012,17(3):41-47.
[12] 钱博文,李涛,韩俊刚,等.多态并行处理器中的线程管理器设计[J].电子技术应用,2014(2):30-32.