基于寄存器访问标记的相关处理装置和方法

文档序号:8223437阅读:207来源:国知局
基于寄存器访问标记的相关处理装置和方法
【技术领域】
[0001] 本发明属于处理器体系结构设计领域,涉及处理器流水线设计中对于指令相关问 题的检测及解决。
【背景技术】
[0002] 现代微处理器设计中,为了在执行时大幅提高指令的处理效率,都采用指令的流 水线设计结构。指令的流水执行使得指令的读写操作并不在同一个流水段完成,因此程序 执行时会经常遇到寄存器写后读相关的问题,这是典型的数据相关问题。数据相关在处理 器设计中发生的频率非常高。一般的处理器设计中都通过硬件数据通路来解决数据相关, 而随着流水线深度的增加,相关问题越来越多的依赖编译器来解决,给编译器的设计带来 了很大的难度。
[0003] 传统的数据相关的硬件处理方法是,比较译码当前指令的源寄存器索引SrcO和 Srcl与流水线中已经流水的指令的目的索引Dest是否相等,以此来判定当前指令与流水 线中正在执行的指令是否发生相关。这种检测方法虽然可行,但是比较繁琐复杂。如果流 水线较长或者操作数较多,相关检测逻辑将占用很大的资源,也会带来很大的功耗问题。另 夕卜,由于指令集的增加,各类指令由于功能的差异,指令的执行周期被划分成不同的流水线 长度,又导致了指令的写后写相关以及写写资源相关问题。传统的处理器设计中对于这两 种相关的检测方法仅限于索引号的对比,而解决方法只能靠停顿流水线,不能有效提高流 水线执行效率。

【发明内容】

[0004] 为了克服现有技术的不足,本发明提供一种指令数据相关检测和解决相关的处理 装置和方法,来解决传统方法中基于源、目的索引比较的方法导致相关检测电路复杂度高、 结构扩展性差的问题;同时,通过硬件对指令相关的高效解决办法,降低处理器编译器设计 的复杂度。
[0005] 本发明解决其技术问题所采用的技术方案是:一种寄存器访问标记的指令相关处 理装置,包括标记寄存器组或标记寄存器、标记表和标记分配单元。
[0006] 所述标记寄存器组或标记寄存器与处理器内体系结构寄存器组或寄存器一一对 应;标记寄存器组或标记寄存器的数量设置取决于处理器内部划分的寄存器组或寄存器 的数量;每个体系结构寄存器都对应一个标记寄存器;
[0007] 所述标记寄存器用于对处理器内的体系结构寄存器进行标记,当指令需要写回体 系结构寄存器时,在目的寄存器对应的标记寄存器上写入一个标记;被标记的寄存器表示 该寄存器的数值将要被执行单元内的指令修改;
[0008] 所述标记表包含一个独立的标记和一组可分配标记;所述独立的标记的表明体系 结构寄存器可用;该独立标记不会被标记分配单元分配给指令,该标记在指令执行结束写 回寄存器时;所述标记表中可分配的标记用来表明体系结构寄存器不可用;
[0009] 所述标记分配单元为需要写入体系结构寄存器的指令分配一个标记;标记分配单 元从标记表中选择分配给指令的标记,标记分配单元为当前译码的指令分配的标记与流水 线内其他指令分配的标记不相同,指令携带分配的标记进入流水线执行单元。
[0010] 对所述指令相关处理装置的一种改进是针对多指令流多数据流(MMD)或有多条 指令流水线的处理器体系结构,包括诸如并行指令(一条指令编码中含有常规指令中多条 指令的操作,典型指令如TI公司的C3X系列)、超长指令字(VLIW)体系结构等。所述装置 针对多指令流或多流水线的改进为:
[0011] 标记表中包含一个独立的标记和多组可分配标记;多组可分配标记与处理器内并 发执行的流水线一一对应,可分配标记的组数量与处理器内并发执行的数量相等;标记分 配单元每次分配多个标记,为当前各指令操作分配的标记不相同,而且分配的标记和进入 执行流水线的所有指令操作分配的标记各不相同。
[0012] 本发明还提供一个用于数据相关处理的方法,包括以下步骤:
[0013] 步骤1、对当前进入译码阶段的指令或指令包,根据当前指令或指令包中源操作数 寄存器对应的寄存器索引,从对应标记寄存器组中读取源操作数的标记状态;
[0014] 步骤2、检测指令或指令包所有源操作数是否和当前流水线中流水的指令发生数 据相关,如果当前指令或指令包的源操作数寄存器的结果全部可用,即源操作数寄存器的 标记为寄存器可用,将指令或指令包中的部分或全部指令译码并送入执行流水线,转步骤 4 ;否则,至少有一个源操作数标记为不可用,产生数据相关,转步骤3 ;
[0015] 步骤3、返回指令执行结果数据,同时返回指令携带的标记;将指令携带的标记和 源操作数寄存器的标记进行比较,如果两者标记相同,表示源操作数的数据可以通过前向 通路数据获得;如果指令中发生相关的源操作数都可以通过前向通路解决,该指令的相关 可以解除,转步骤4 ;否则,当前指令停顿,之前的指令在流水线中继续执行,转步骤2 ;
[0016] 步骤4、为送入执行单元的当前指令分配一个标记,指令携带分配的标记进入执行 单元流水段;如果是MMD结构或多条并行流水线的处理器结构,标记分配单元为进入每个 进入流水线的指令分配一个标记;
[0017] 步骤5、对指令的目的寄存器进行标记,将步骤4中为指令分配的标记写入指令的 目的寄存器对应的标记寄存器中;
[0018] 步骤6、在指令执行结束,将结果数据写入目的寄存器后,将目的寄存器对应的标 记寄存器上的标记清除。
[0019] 所述步骤6中,将各个流水段上执行结束的指令携带的标记和指令要写回的目的 寄存器的标记进行比较,选择标记相同的流水段内的指令执行结果,作为写回目的寄存器 的结果数据;其它所携带标记与目的寄存器的标记不相同的指令,其执行结果不被写回; 结果数据写入目的寄存器后,将目的寄存器对应的标记寄存器上的标记清除。
[0020] 本发明的有益效果是:提出了一种对于通用寄存器组进行标记的方法,完全替代 了传统处理器设计中,通过对比源索引和目的索引来判断寄存器读后写数据相关的方法, 有效提高了执行效率。有以下几个优点:
[0021] 1.相关检测逻辑不需要流水段内的每一条指令的信息,只需要在指令译码阶段读 取源操作数的标记寄存器,进行简单的逻辑判断得到指令的相关情况。尤其对于具有流水 线较深的结构,大幅度降低了硬件设计的复杂度。
[0022] 2.简化了操作数前向数据通路的设计。不需要对写回指令的索引进行逐个比较, 只要选择与源操作数标记匹配的指令的结果数据作为前向通路的数据。
[0023] 3.对于多周期指令的处理器结构,在写回逻辑上增加少量处理逻辑,解决指令的 写后写和写写资源相关。
[0024] 4.对SMD和MMD结构,本发明提出的方法也能适用。这两种结构的指令或指令 包具有多个目的寄存器,而且进入流水线的指令或指令包也包括多个源操作数,因此传统 相关处理方法的逻辑复杂度也指数增长。而本发明的结构和方法仅仅关注源操作数寄存器 的标记,即使指令操作数数量增加,导致的相关处理逻辑的增加也仅仅是一种线性的增加, 只需要对增加的源操作数复制一份相关处理的逻辑即可。因而本发明的结构和方法有效降 低了硬件实现的复杂度。
【附图说明】
[0025] 图1是本发明相关处理的结构示意
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1