1、1多线程微处理器指令双发射结构的设计与实现摘要:单线程性能是处理器设计中需要考虑的重要因素.基于 T2 设计并实现了单线程双发射结构,以开发单线程的指令级并行、提高单线程性能;并对此结构搭建了完备的验证平台,通过加速比对改善前后的两种结构进行了性能评估,评估结果表明,本文设计并实现的单线程双发射结构能够有效提高单线程的性能. 关键词:微处理器;单线程性能;指令级并行;双发射;性能评估 中图分类号:TP332 文献标识码:A Design and Implementation of Multi-thread Processors Instruction Dual-issue Structure
2、ZHU Cheng-bo, SUN Cai-xia, WANG Yong-wen (College of Computer, National Univ of Defense Technology, Changsha, Hunan 410073, China) Abstract: The performance of the single thread is an important element in the processor design. In this paper, multi-thread dual-issue structure in T2 was modified to su
3、pport single-thread dual-issue, which would improve the performance of a single thread. The results show that the designed structure achieves the expected functions, and is able to improve the performance of a single thread. 2Key words: microprocessor chips; performance of a single thread; instructi
4、on level parallelism; dual-issue; performance evaluation 目前的主流高性能微处理器大多是在开发指令级并行性的同时开发线程级并行,如 IBM 公司的 BlueGene PowerPC A2 处理器1采用 4 线程双发射体系结构,POWER7 处理器2采用 4 线程 6 发射体系结构,Sun 公司的 SPARC T4 处理器3采用 8 线程双发射体系结构.这样的微体系结构能够提高处理器的实用效率.另外通过实现多发射开发指令级并行,在单线程性能上也有很大的提升. T2 微处理器核采用多线程体系结构,硬件支持 8 个线程4.其总体结构如图 1 所
5、示.其中 IFU 为取指部件;EXU0 和 EXU1 为两个整数运算部件,执行除了整数乘除法外的所有整数运算;FGU 为浮点运算部件,执行所有的浮点运算和整数乘除法;LSU 为访存部件,执行所有的 load 和store 操作;TLU 为中断和异常处理部件;MMU 为存储管理部件;Gasket为接口部件;IRF0 和 IRF1 为整数寄存器文件,FRF 为浮点寄存器文件. T2 中,8 个线程分为两组,线程组内使用细粒度多线程,线程组间采用同时多线程,单周期每个线程组挑选一个线程发射一条指令,即单线程单发射执行.虽然 T2 的整体性能和其他主流处理器相当,但是单线程性能低.图 2 给出了 T2
6、 和 Xeon 微处理器5在单线程环境下运行串行程序的响应时间, T2 的响应时间是 Xeon 的几十倍. 为了提高 T2 的单线程性能,本文对其多线程双发射结构进行了改造,使其支持单线程双发射,以开发指令级并行.在搭建的软件模拟平台上对3单线程双发射结构进行了性能评估.结果表明,设计并实现的单线程双发射结构能有效提高单线程的性能. 1 指令双发射的结构设计 图 3 所示为指令双发射结构图.双发射结构从指令 buffer 开始到指令执行部件结束,覆盖流水线的 P 站和 D 站,其中发射单元覆盖 P 站,译码单元覆盖 D 站. 1.1 发射单元的设计 图 4 所示为发射单元结构图.发射单元覆盖功
7、能流水线的 P 站,从指令 buffer 开始到译码单元结束.发射单元的设计包括两线程组 TG0 和 TG1的线程组内调度策略、两线程组间调度策略、译码部件、指令控制部件的设计6.通过线程组内调度策略在 TG0 和 TG1 中各挑选一个线程,然后再通过线程组间调度策略选择 TG0 或 TG1 中的一个线程组发射两条指令,或选择 TG0 和 TG1 中的一个线程各发射一条指令,最后通过指令控制部件决定指令能否发射. 1.1.1 线程组内调度策略 线程组内使用细粒度多线程调度策略7,从每个线程组处于准备状态的线程中挑选一个线程.TG0 和 TG1 的挑选过程是完全独立的,采用LRP(Least R
8、ecently Picked)算法实现8,以 TG0 实现 LRP 算法为例,如表 1 所示.其中 pick0, pick1, pick2 和 pick3 分别代表挑选了 0, 1, 2 和 3 线程,使用 1 个 8 位的 lrp 值来表示 LRP 状态,每两位表示 1个线程,lrp1:0的值表示的是刚刚挑选过的线程,lrp3:2次之,lrp7:6的值表示的是最久没有被挑选的线程.lrp 的初值为4“00011011”,则第一次 pick0,相应的 lrp 的值变为“01101100” ,第二次 pick1,那么 lrp 的值变成“10110001” ,第三次 pick2,lrp 的值变成“
9、11000110”,第四次 pick3,lrp 的值变成“00011011”. 2 MANOUSOPOULOS S, MORETO M, GIOIOSA R, et al. Characterizing thread placement in the IBM POWER7 processorC/Proceedings of 2012 IEEE International Symposium on Workload Characterization. New York: IEEE, 2012: 4-6. 3 ORACLE Corporation. SPARCT4processorR/OL. Re
10、dwood Shores, CA: Oracle Corporation, 2011. http:/ us/products/servers-storage/servers/sparc-enterprise/t-series/sparc-t4-processor-ds-497205.pdf. 4 ORACLE Corporation. OpensparcT2processorR/OL. Redwood Shores, CA: Oracle Corporation, 2007. http:/ technetwork/systems/opensparc/opensparc-t2-page-1446
11、157.html. 5 INTEL Corporation. Intel Xeon processorR/OL. Santa Clara, CA: Intel Corporation, 2010. http:/www. Xeon/index.htm. 6 HENNESSY J L, PATTERSON D A. Computer architecture: a quantitative approachM. San Francisco, CA: Morgan Kaufmann Publishers, 2006. 57 张民选, 王永文. 高性能微处理器技术与结构M. 长沙:国防科学技术大学出
12、版社,2004. ZHANG Min-xuan, WANG Yong-wen. Technology and structure of high performance microprocessor M. Changsha: National University of Defense Technology Press, 2004. (In Chinese) 8 MANJIKIAN N, ROTH J. Multithreading and interprocessor communication in a dual-issue pipelined processorC/Proceedings
13、 of 2008 Joint 6th International IEEE Northeast Workshop on Circuits and Systems and TAISA Conference. New York: IEEE, 2008: 33-36. 9 OLUKOTUN K, HAMMOND L. The future of microprocessorsJ.QUEUE-Multiprocessors, 2005,3(7): 26-29. 10孙彩霞, 张民选. 使用取值策略控制同时多线程处理器中个体线程的性能J. 计算机学报, 2008, 31(2): 309-317. SUN
14、 Cai-xia, ZHANG Min-xuan. Using instruction fetch policy to control performance of a thread in SMT processorsJ. Chinese Journal of Computers, 2008, 31(2): 309-317.(In Chinese) 11WANG Yong-wen, ZHENG Qian-bing, DOU Qiang, et al. Low power design for a multi-core multi-thread microprocessorC/Proceedin
15、gs of International Symposium on Energy-aware Computing and Networking. Washington, DC: IEEE 6Computer Society, 2010: 351-356. 12路放, 安红,梁博,等. OpenSMT:一个同时多线程处理器模拟器的设计与实现J. 计算机科学,2006, 33(1): 158-163. LU Fang, AN Hong, LIANG Bo, et al. OpenSMT: the design and implementation of a simulator for simulta
16、neous multithreading processor architectureJ. Computer Science, 2006, 33(1): 158-163.(In Chinese) 13刘星江, 王慧. 一种基于 Verilog 的验证平台搭建及应用J. 信息安全与通信保密, 2013(1): 43-45. LIU Xing-jiang, WANG Hui. Building-up and application of testbench based on verilogJ. Information Security and Communications Privacy, 201
17、3(1): 43-45.(In Chinese) 14高秋红. 时序电路的功能验证方法和技术研究D. 北京:北京交通大学, 2006. GAO Qiu-hong. The study on functional verification methods and technologies for sequential circuitsD. Beijing: Beijing Jiaotong University, 2006.(In Chinese) 15陈海燕, 郭阳, 陈吉华, 等. 集成电路计算机辅助设计与验证实践M.长沙:国防科学技术大学出版社,2010. CHEN Hai-yan, GU
18、O Yang, CHEN Ji-hua, et al. Integrated circuit computer aided design and verification in practice. M. Changsha: National University of Defense Technology Press, 72010.(In Chinese) 16罗莉, 何鸿君, 窦强, 等. 覆盖率驱动的芯片功能验证设计与实现J. 计算机工程与科学, 2013, 35(1): 36-40. LUO Li, HE Hong-jun, DOU Qiang, et al. Design and implementation of coverage-driven chip function verification J. Computer Engineering & Science, 2013, 35(1): 36-40.(In Chinese)