发明名称 一种用于微处理器的硬件多线程控制方法及其装置
摘要 一种用于微处理器的硬件多线程控制方法及其装置,涉及微处理器体系结构领域。本发明提出的控制方法包括以下步骤:多线程取指,多线程译码,多线程执行,多线程访存,多线程写回。本发明提出的仿真装置包括:一个硬件多线程取指器件,一个硬件多线程译码器件,一个硬件多线程执行器件,一个硬件多线程访存器件,一个硬件多线程写回器件,一个硬件多线程寄存器组,一个多线程控制器件。此外,本发明针对软件多线程程序,可以通过处理器硬件多线程执行,执行时有效地隐藏了访存延迟,略去了线程切换时线程相关信息的保存与恢复,减少了线程切换的开销;采用流水线技术,使得原来执行一个线程的时间内现在可以并行执行n个线程;通过硬件多线程有效规避了深度流水带来的数据相关性风险,降低了系统的设计复杂性,从硬件上提高了系统的执行效率。
申请公布号 CN101957744B 申请公布日期 2013.07.24
申请号 CN201010512737.3 申请日期 2010.10.13
申请人 北京科技大学 发明人 齐悦;王磊;王惠娟;师立宁;王沁
分类号 G06F9/38(2006.01)I 主分类号 G06F9/38(2006.01)I
代理机构 北京东方汇众知识产权代理事务所(普通合伙) 11296 代理人 刘淑芬
主权项 一种用于微处理器的硬件多线程控制方法,其特征在于包括以下步骤: 1)多线程取指步骤(1001),用于各个线程的指令读取,各个线程的指令地址产生; 其中,多线程取指步骤(1001)包括多线程指令地址控制、多线程指令地址缓存、多线程取指; (1)多线程指令地址控制,用于产生各个线程的指令地址,当某个线程阻塞时,仅阻塞该线程指令地址更新,其它线程指令地址正常更新; (2)多线程指令地址缓存,用于存储n个线程的指令地址; (3)多线程取指,用于将取指逻辑(101)对称划分成n级流水,取出n个硬件线程所对应的软件线程指令; 2)多线程译码步骤(1002),用于对各个硬件线程的指令进行译码,准备好多线程执行步骤(1003)所需要的寄存器数据; 其中,多线程译码步骤(1002)包括多线程译码、多线程寄存器操作数准备、译码部件数据旁路控制; (1)多线程译码,用于将译码逻辑(102)对称划分成n级流水,完成多线程初始化专用指令译码、常规指令译码,当某个线程阻塞时,仅阻塞该线程指令译码,其它线程指令译码正常运行; 所述的多线程初始化专用指令包括:操作码域(901),用于标识该指令,操作数域(902),用于操作目的操作数,操作数域(903),用于操作源操作数; (2)多线程寄存器操作数准备,用于从n个寄存器组中选择对应线程的寄存器组,并读取指令所需操作数; (3)译码部件数据旁路控制,用于将数据旁路的数据提供给指令译码的某个流水阶段; 3)多线程执行步骤(1003),用于执行各个线程指令; 其中,多线程执行步骤(1003)包括多线程初始化专用指令执行、线程号缓存、执行部件数据旁路控制、多线程常规指令执行; (1)多线程初始化专用指令执行,用于产生新硬件线程号,新硬件线程号对应于该硬件线程所执行的软件线程; (2)线程号缓存,用于将所述多线程初始化专用指令执行产生的新硬件线程号缓存,使得产生的某新硬件线程号在线程号寄存器序列(502)中的位置与该硬件线程在地址指针寄存器序列(302)、取指部件多线程寄存器序列(303)、译码部件多线程寄存器序列(401)、执行部件多线程寄存器序列(503)、访存部件多线程寄存器序列(601)、写回部件多线程寄存器序列(701)中的位置一致; (3)执行部件数据旁路控制,用于将数据旁路的数据提供给指令执行的某流水阶段; (4)多线程常规指令执行,用于将执行逻辑(103)对称划分成n级流水,完成n个硬件 线程的常规指令执行,当某个线程阻塞时,仅阻塞该线程指令执行,其它线程指令执行正常运行; 4)多线程访存步骤(1004),用于将访存逻辑(104)对称划分成n级流水,各个线程的执行结果写入到存储器或者从存储器读入线程需要的数据,当某个线程阻塞时,仅阻塞该线程数据访存,其它线程数据访存正常运行; 5)多线程写回步骤(1005),用于各个线程的执行结果写回到寄存器组; 其中,多线程写回步骤(1005)将写回逻辑(105)对称划分成n级流水,当某个线程阻塞时,仅阻塞该线程数据写回,其它线程数据写回正常运行,多线程写回步骤(1005)包括多线程写回数据控制、多线程写回寄存器地址控制; (1)多线程写回数据控制,用于待写回寄存器数据的准备和输出; (2)多线程写回寄存器地址控制,用于待写回寄存器地址的准备和输出。
地址 100083 北京市海淀区学院路30号