一种基于sparcv8处理器的存储器精确陷阱控制结构与方法_3

文档序号:9471249阅读:来源:国知局
致主存数据的校验错误,因此即便流水线继续推进也不会产生陷阱而造成影响。然而,对于STB/STH类型操作,指令流水线必须停下来等待,直到write buffer中之前缓存的STW/STD操作(如果存在)全部执行完、该STB/STH操作执行完、以及它的错误信号返回给流水线时,也就是在经历步骤②和步骤③之后,流水线才开始推进。这样,由STB/STH操作导致的写错误就属于一个精确陷讲,处理器当前的PC能够准确表征该store指令,从而极大的方便了陷阱的处理。
[0039]如图4所示,本发明为实现精确陷阱而进行的流水线控制结构改进;其中,整个流水线的推进信号holdn包括指令访问的推进信号iholdn和数据访问的推进信号dholdn,只有当holdn为高时,指令流水线才能推进,继续执行新指令。iholdn信号只有在指令Cache命中时才为高,否则一直要等到缺失的取指操作完成的ready信号有效时才能变为高。dholdn信号分为load操作和store操作两种情况,对于load操作,dholdn的控制逻辑与iholdn类似,只有在数据Cache命中时才为高,否则一直要等到缺失的load操作完成的ready信号有效时才能变为高;对于store操作,本发明实现了精细化的控制,即如果是STW/STD类型的写访问,则不需停顿流水线,dholdn始终为高,如果是STB/STH类型的写访问,为了防止其写操作导致延迟陷阱,必须控制dholdn信号只有等到该store操作完成的ready信号有效时才变为高,从而才能推进流水线的执行。
[0040]本优选实例中,分别以各种写操作访问外部主存储器的过程为例进行说明,如图5所示。对于任意一个32位的数据都采用8位的ECC编码,如图5中a图所示,某个时刻STB操作想要将主存数据“AABBCXDD”中的字节“BB”更新成“EE”,虽然这种数据位的更新可以直接完成,但ECC编码位的更新却无法直接进行,因为它是对整个数据字的校验编码,任何一个数据位的改变都会导致编码值的变化。因此,这时就必须先将原始数据和编码值都读出来(步骤①),然后进行步骤②的校验,如果检测出该数据有错,尤其是无法纠正的位于其它字节上的错误,则就需要将该错误信号反馈给流水线以进行错误处理,如果检测数据正确,则按照步骤③修改对应字节的数据位,然后对修改后的数据“AAEECCDD”进行编码(步骤④),最后才能将得到的新编码值“ZW”进行写入,即步骤⑤。如图5中b图所示,STH操作是更新半字的写操作,与STB的过程完全一致,也需要对原始数据进行读出和校验,如果校验出错,也将错误信号反馈给流水线。如图5中c图所示,然而,对于STW/STD操作,它们都直接更新整个数据字,即便原始数据有错误也不影响它本次的更新操作,因此这时就无需读出原有数据进行校验,从而不会产生错误信号。本发明正是基于STB/STH操作与STW/STD操作是否产生主存储器访问错误这一事实来分别进行流水线的停顿控制,一方面实现了 STB/STH写操作错误的精确陷阱,另一方面对STW/STD操作仍然保留write buffer缓存控制功能,使其访存操作能与流水线执行指令并行起来,从而不至于对处理器的性能造成明显的损失。
[0041 ] 本发明的内容已经成功应用于一种兼容SPARC V8架构的处理器中,并且以该处理器作为主控单元设计实现了多款SoC芯片。本发明将存储器写操作错误所导致的延迟陷阱实现成了一种精确陷阱,使陷阱处理更加容易,同时它也从根本上消除了系统宕机的隐患,保证系统能稳定可靠的运转,而执行性能也没有受到明显影响。整个设计结构非常清晰、控制逻辑也很简单,可实施性较强。
【主权项】
1.一种基于SPARCV8处理器的存储器精确陷阱控制方法,其特征在于,SPARCV8处理器中指令流水线执行推进时,根据SPARCV8处理器发出的写操作访问需求,执行如下操作; 当前存储指令为单字或者双字的写操作缓存在写缓存器write buffer中,同时允许流水线继续推进; 当前存储指令为字节或者半字的写操作时,流水线推进停顿;若在写缓存器writebuffer中没有缓存其它的写操作时,则进行主存储器的访问;否则,在写缓存器writebuffer处理完所有缓存的写操作之后,再访问主存储器;等待该字节或者半字类型的写操作对主存储器的访问完成后再继续推进; 其中,在处理字节或半字类型的写操作时,流水线一直处于等待状态,没有执行新的指令,当该写操作出现无法纠正的错误时,将产生的错误信号传递给流水线,SPARCV8处理器的当前PC能够准确对应发出该写操作的存储指令,从而产生的是一个精确陷阱,并对其进行对应处理。2.根据权利要求1所述的一种基于SPARCV8处理器的存储器精确陷阱控制方法,其特征在于,在写缓存器write buffer进行缓存控制时,SPARCV8处理器流水线的执行,和对主存的写操作独立并行。3.—种基于SPARCV8处理器的存储器精确陷阱控制结构,其特征在于,包括取值选择器,级联的第一 Load操作选择器和第二 Load操作选择器,级联的第一 Store操作选择器和第二 Store操作选择器,以及用于产生控制整个流水线的推进信号holdn的与门,推进信号holdn分别控制流水线各级间的寄存器; 所述的取值选择器的低电位输入端连接取值操作访问完成的ready信号,高电位输入端连接高电位信号,选择控制端连接指令Cache命中信号,输出端输出指令访问的推进信号 iholdn ; 所述的第一 Load操作选择器的低电输入端连接load操作访问完成的ready信号,高电位输入端连接高电位信号,选择控制端连接数据Cache命中信号,连接第二 Load操作选择器的高电位输入端;所述的第二 Load操作选择器的低电位输入端连接高电位信号,高电位输入端连接第一 Load操作选择器的输出端,选择控制端连接Load操作信号; 所述的第一 Store操作选择器的低电输入端连接第二 Load操作选择器的输出端,高电位输入端连接store操作访问完成的ready信号,选择控制端连接字节/半字节类型的写操作信号;所述的第二 Store操作选择器的低电输入端连接第一 Store操作选择器的输出端,高电位输入端连接高电位信号,选择控制端连接单字节/双字节类型的写操作信号,输出端输出数据访问的推进信号dholdn ; 所述的与门的输入端分别连接指令访问的推进信号iholdn和数据访问的推进信号dholdnο4.根据权利要求3所述的一种基于SPARCV8处理器的存储器精确陷阱控制结构,其特征在于,取值操作访问完成的ready信号,load操作访问完成的ready信号,以及store操作访问完成的ready信号均由外部主存储器的访问接口连接输入。
【专利摘要】本发明提供一种既实现精确陷阱又不完全禁用write?buffer的写缓存功能的,在提高系统可靠性的同时避免系统性能受到明显的损失方法的,基于SPARCV8处理器的存储器精确陷阱控制结构与方法;所述的方法在SPARCV8处理器中指令流水线执行推进时,根据SPARCV8处理器发出的写操作访问需求,执行如下操作;当前存储指令为单字或者双字的写操作缓存在写缓存器write?buffer中,同时允许流水线继续推进;当前存储指令为字节或者半字的写操作时,流水线推进停顿;若在写缓存器write?buffer中没有缓存其它的写操作时,则进行主存储器的访问;否则,在写缓存器write?buffer处理完所有缓存的写操作之后,再访问主存储器;等待该字节或者半字类型的写操作对主存储器的访问完成后再继续推进。
【IPC分类】G06F11/07, G06F12/08
【公开号】CN105224412
【申请号】CN201510617153
【发明人】裴茹霞, 肖建青, 张洵颖, 李红桥, 张丽娜, 崔媛媛
【申请人】中国航天科技集团公司第九研究院第七七一研究所
【公开日】2016年1月6日
【申请日】2015年9月24日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1