基于spracv8指令集的指令分类多发射方法

文档序号:9667112阅读:843来源:国知局
基于sprac v8指令集的指令分类多发射方法
【技术领域】
[0001] 本发明涉及基于SPRACV8指令集的指令分类多发射方法,属于嵌入式应用领域。
【背景技术】
[0002] RISC结构是单发射处理器体系结构设计的一大进展。单发射结构中流水线设计的 目标,是做到平均每个周期能执行完成一条指令,即IPC= 1,但由于控制相关、数据相关和 资源相关等问题引起的冲突,使得IPC达不到1。通过指令重组、分支预测和前向数据通路 等技术可以提高IPC使之接近于1,但不可能大于或等于1。为了突破这一上限,当前嵌入 式处理器的总体发展趋势是在保持低功耗的前提下,通过创新指令集和流水线架构来提高 处理器的综合性能,适应日益发展的嵌入式系统对于性能的需求。从技术角度,嵌入式处理 器主要从浅流水(流水线级数小于8)往深流水(流水线级数超过8)发展,从单发射架构 往多发射架构发展。所谓多发射即在一个周期内发出多条指令,通过分时复用执行单元或 配置多个执行单元同时进行处理,通过增加寄存器端口同时提交多个执行结果,从而提高 处理指令的效率。
[0003] SPRACV8(ScalableProcessorArchitectureV8)体系结构作为RISC处理器的 经典代表之一,占有十分重要的地位。国产SPRACV8系列处理器面向嵌入式系统,已经成 功应用于数字听写机、指纹识别系统、GPS处理器等。随着技术的发展,市场对高性能处理 器的需求增强,通过多发射技术来提高SPARCV8处理器的性能适应市场的需求,是一种行 之有效的方式。但是目前尚没有针对SPARCV8处理器的多发射方法。

【发明内容】

[0004] 本发明解决的技术问题是:克服现有技术的不足,提供基于SPRACV8指令集的指 令分类多发射方法,实现了指令的并行执行,提高了SPRACV8处理器的性能。
[0005] 本发明的技术解决方案是:基于SPRACV8指令集的指令分类多发射方法,包括如 下步骤:
[0006] (1)将SPRACV8处理器划分为取指、译码、执行、访存、写回五个流水级,将SPRAC V8指令划分为分支指令、乘除法指令、加载存储指令和其他指令四类,五个流水级之间通过 公共数据总线连接,在取指级增加n-1条取指通路,在译码级增加n-1个译码单元,在译码 级和执行级之间加入η组保留站,每组保留站与一类指令相对应;在执行级和访存级之间 加入重排序缓冲区;根据待执行指令的类别在执行级加入对应的执行单元,所述执行单元 包括加法器、移位器、乘法器/除法器和算术逻辑单元;η为自然数,η大于等于1小于8 ;
[0007] (2)取指级从指令缓存中同时取回η条指令,并通过公共数据总线将这η条指令分 别发送给译码级η个译码单元,同时取指级将这η条指令在指令缓存中的顺序存放在重排 序缓冲区;
[0008] (3)译码级η个译码单元对这η条指令进行并行译码,译码的同时分别对每条指令 进行跳转指令判断,将判断后得到的待执行指令对应的操作、源地址、目的地址或操作数通 过公共数据总线发送给该指令相应的保留站;
[0009] (4)各保留站根据指令地址对操作数进行预取,并判断各条指令之间是否存在相 关冲突,对于存在相关冲突的指令,将其放在下一周期执行,将不存在相关冲突的m条指令 分别通过公共数据总线发送给指令对应的执行单元执行,m为自然数,m小于等于η;
[0010] (5)执行单元对m条指令并行执行后,分别将运算结果通过公共数据总线发送给 重排序缓冲区;存在相关冲突的指令所在的保留站可通过公共数据总线从重排序缓冲区读 取本周期指令的执行结果,作为下一周期指令执行时的操作数;
[0011] (6)重排序缓冲区判断这m条指令是否按序排在存在相关冲突的指令之前,如果 是,则将m条指令的执行结果通过公共数据总线同时写回对应的存储器或寄存器,否则,将 按序排在相关冲突指令之前的指令执行结果同时提交,按序排在后面的指令等待存在相关 冲突的指令执行之后写回对应的存储器或寄存器,从而实现了SPRACV8处理器的多发射。
[0012] 所述步骤(3)中译码级η个译码单元对这η条指令进行并行译码,译码的同时分 别对每条指令进行跳转指令判断的实现方式为:
[0013] (2. 1)译码级通过公共数据总线从重排序缓冲区中读出这η条指令在指令缓存中 的顺序,将所述η条指令按顺序进行标识;
[0014] (2. 2)在译码时判断每一条指令是否是跳转指令,如果第i个指令是跳转指令,且 i小于等于n-3,则将按序排在第i+Ι个指令后面的指令全部清除不再向保留站分配,同时 将跳转的目标地址反馈给取指级,第i+2个指令之前的所有指令为待执行指令;如果第i 个指令是跳转指令,且i等于n-2,则将第η个指令清除不再向保留站分配,同时将跳转的 目标地址反馈给取指级,第η个指令之前的所有指令为待执行指令;i为自然数,i= 1,2, 3,......,n_2 〇
[0015] 所述步骤(4)中保留站判断各条指令之间是否存在相关冲突的方法为:
[0016] (3. 1)各保留站通过公共数据总线从重排序缓冲区中读出所存放指令的顺序;
[0017] (3. 2)每个保留站对所存放的指令进行分析,如果所存放的指令需要用到按序排 在前面指令的运算结果,则该指令存在相关冲突,否则,不存在相关冲突。
[0018] 所述步骤(6)中,如果多个指令的写目的寄存器或存储器相同,则只需要将按序 排在最后的指令的结果写入相应的寄存器或存储器,前面指令的结果被忽略。
[0019] 本发明与现有技术相比,具有如下有益效果:
[0020] (1)本发明是对指令分类之后实现的多发射方法,根据待执行指令的情况增加执 行单元,执行单元的面积增加较小,例如仅加入一个加法器和一个移位器,就能够实现四发 射结构,从而用较小的面积代价换取较好的性能提升效果;
[0021] (2)本发明设计了包括保留站、公共数据总线(⑶B,CommonDataBus)和重排序 缓冲区的动态执行核结构,采用顺序发射-乱序执行-顺序提交的机制,在不打乱指令发射 和提交顺序的前提下,充分利用指令间潜在的并行性,从而提高指令的执行效率。
[0022] (3)本发明通过加入保留站同时实现操作数预取和相关冲突的检测和处理,解决 了单发射结构变换到多发射结构的一大难点一一多指令相关冲突问题,保证了处理器基本 功能的正确性,同时可以通过公共数据总线快速取回前面指令的执行结果供后续指令使 用,提高了相关冲突处理效率;
[0023] (4)本发明对于并行指令写回的写相关冲突问题,仅写入按序排在最后的指令的 执行结果,避免了多次写造成的资源和时间浪费。
【附图说明】
[0024] 图1为本发明基于的SPRACV8处理器五级流水结构图;
[0025] 图2为利用本发明方法实现的四发射五级流水处理器结构图;
[0026] 图3为本发明保留站的结构;
[0027] 图4为本发明重排序缓冲区的结构。
[0028] 图5为本发明的具体实现流程图;
【具体实施方式】
[0029] 本发明涉及嵌入式应用领域,特别针对应用SPARCV8指令集的多发射处理器结 构,通过分析指令的执行过程,对指令分类处理,根据功能需要配置处理单元。
[0030] 本发明实现的是基于国产SPRACV8系列处理器的多发射方法,该方法首先将 SPRACV8处理器划分为五级流水结构,如图1所示,五级流水分别是取指级、译码级、执行 级、访存级和写回级,五级之间通过数据总线和控制总线传递数据和控制信息。本发明方法 通过分析指令的执行过程将SPARCV8指令按照功能划分为四个类别(分支跳转指令、加载 /存储指令、乘/除法指令和其他类指令),分别通过不同的功能单元(依次对应移位器、加 法器、乘/除法器和算术逻辑部件)处理,并且将对分支指令的处理提前到译码级完成,各 类指令在各个流水级执行的操作如表1所示。
[0031] 表 1
[0032]
[0033] 如图5所示,本发明方法包括如下步骤:
[0034] (1)建立SPRACV8处理器多发射结构,将SPRACV8处理器划分为取指、译码、执 行、访存、写回五个流水级,将SPRACV8指令划分为分支指令,乘除法指令,加载存储指令和 其他指令四类,五个流水级之间通过公共数据总线连接,在取指级增加n-1条取指通路,在 译码级增加n-1个译码单元,在译码级和执行级之间加入η组保留站,每组保留站与一类指 令相对应;在执行级和访存级之间加入重排序缓冲区;根据待执行指令的类别在执行级加 入对应的执行单元,所述执行单元包括加法器、移位器、乘法器/除法器和算术逻辑单元;η 为自然数,η大于等于1小于8 ;
[0035] (2)取指级从指令缓存中同时取回η条指令,并通过公共数据总线将这η条指令分 别发送给译码级η个译码单元,同时取指级将这η条指令在指令缓存中的顺序存放在重排 序缓冲区;
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1