【技术实现步骤摘要】
一种缓存系统和方法
本专利技术涉及计算机,通讯及集成电路领域。
技术介绍
在包含流水线的处理器系统中,通常会因为缓存缺失(CacheMiss)、控制冒险(ControlHazard)、数据冒险(DataHazard)等因素使得流水线暂停,从而影响处理器系统的性能。缓存缺失一般分为三类状况:强制缺失、冲突缺失和容量缺失。采用组相联缓存结构并增加缓存的路组数可以降低冲突缺失,但受制于功耗及速度限制(如因为多路组相联缓存结构要求将所有路组由同一索引寻址的内容及标签同时读出并比较),路组数难以超过一定数目。现有的缓存预取技术通常以一定的代价可以解决一部分冲突缺失和容量缺失问题,但强制缺失依然是不可避免的。此外,新的缓存结构,如:牺牲缓存、跟踪缓存以及预取等都能在一定程度上改善缓存缺失问题。然而,随着日渐扩大的处理器/存储器速度鸿沟,缓存缺失已成为制约现代处理器性能提升的最严重瓶颈。由执行分支指令引起的控制冒险是流水线性能损失的又一大原因。在处理分支指令时,传统处理器无法提前知道分支指令之后执行是哪一条指令,而是需要等到分支指令完成后(或至少等到执行该分支指令时产生是否发生 ...
【技术保护点】
一种缓存方法,其特征在于,根据存储在缓存系统中的程序流(program flow)信息调度(schedule)指令的发射(issue);所述程序流信息包含指令顺序(sequence)信息及指令距离(distance)信息; 根据所述指令顺序及距离信息,确定指令发射的时间点,从而实现指令多发射。
【技术特征摘要】
1.一种缓存方法,其特征在于,根据存储在缓存系统中的程序流信息调度指令的发射;所述程序流信息包含指令顺序信息及指令距离信息;所述指令距离指的是一条指令之后第一条与该指令存在寄存器相关性的指令,和该指令之前最后一条与该指令存在寄存器相关性的指令之间的距离;处理器系统包含主流水线和提前流水线;根据程序流信息中的指令顺序信息及指令距离信息,确定指令发射的时间点,提前将所需执行周期数较多的指令发射到提前流水线中,使得各种指令的完成时间点尽可能一致,从而实现指令多发射。2.如权利要求1所述的缓存方法,其特征在于,存储在指令存储器中的指令包含了所述程序流信息的部分或全部;或者从指令中提取出所述程序流信息并存储在程序流信息存储器中。3.如权利要求2所述的缓存方法,其特征在于,所述指令存储器是指令缓存或指令读缓冲;所述程序流信息存储器是轨道表或轨道读缓冲;所述轨道表含有复数条轨道,每条轨道对应一级缓存中的一个一级指令块;所述轨道读缓冲中存储了指令读缓冲中指令块对应的轨道,每条轨道对应指令读缓冲中的一个指令块。4.如权利要求3所述的缓存方法,其特征在于,处理器系统包含主流水线和提前流水线;根据存储在指令存储器或程序流信息存储器中的指令顺序以及指令距离,提前将指令发射到提前流水线中。5.如权利要求4所述的缓存方法,其特征在于,根据提前从指令存储器或程序流信息存储器中读出指令类型,提前发射所需执行周期数较多的指令。6.如权利要求5所述的缓存方法,其特征在于,将指令至少分为两类:类型‘1’指令,即执行时所需周期数较多的指令;和类型‘0’指令,即执行时所需周期数较少的指令;且在提前流水线中执行类型‘1’指令;在主流水线中执行类型‘0’指令;和根据程序流信息中的类型信息,提前在提前流水线中发射类型‘1’指令;或者,将指令至少分为三类:类型‘s’指令,即执行时所需周期数多的指令但不会和后续指令产生寄存相关性的指令;类型‘1’指令,即执行时所需周期数较多的指令且可能会和后续指令产生寄存相关性的指令,和类型‘0’指令,即执行时所需周期数较少的指令;且在提前流水线中执行类型‘1’指令;在主流水线中执行类型‘0’指令;和根据类型‘1’指令和类型‘0’指令的数目差,将类型‘s’指令视为类型‘1’指令或类型‘0’指令,从而平衡主流水线和提前流水线中执行的指令的数目;根据程序流信息中的类型信息,提前在提前流水线中发射类型‘1’指令和视为类型‘1’的类型‘s’指令。7.如权利要求6所述的缓存方法,其特征在于,类型‘1’指令包括数据读取指令、分支指令。8.如权利要求7所述的缓存方法,其特征在于,类型‘1’指令还包括数据存储指令、乘法指令和除法指令。9.如权利要求6所述的缓存方法,其特征在于,类型‘s’指令包括数据存储指令。10.如权利要求6所述的缓存方法,其特征在于,通过提前将类型‘1’指令在提前流水线中发射,使得所述类型‘1’指令的执行结果能早于后续指令获取该结果的时间点,从而消除所述类型‘1’指令造成的执行延迟。11.如权利要求6所述的缓存方法,其特征在于,对从更低层次存储器填充到一级指令缓存的指令进行扫描,提取出所述程序流信息的部分或全部。12.如权利要求11所述的缓存方法,其特征在于,所述提取出的信息包括:类型信息,用于区分该指令是类型‘1’指令还是类型‘0’指令,或用于区分该指令是类型‘1’指令、类型‘0’指令还是类型‘s’指令;指令类型,用于区分该指令是数据访问指令还是分支指令,或是其他指令。13.如权利要求11所述的缓存方法,其特征在于,当所述指令是分支指令时,所述提取出的信息进一步包括:所述分支指令的分支目标指令地址信息;所述地址信息是指令地址或缓存地址;当所述指令是数据访问指令时,所述提取出的信息进一步包括:所述数据访问指令所访问的数据的地址信息;所述地址信息是数据地址或缓存地址。14.如权利要求13所述的缓存方法,其特征在于,将提取出的信息存储在轨道表中;所述轨道表由轨迹点构成,一个轨迹点是轨道表中的一个表项;每个轨迹点对应至少一条指令;所述轨道表中至少包含了填充到一级指令缓存中的所有分支指令对应的分支点及所有数据访问指令对应的数据点;所述分支点还进一步包含所述分支指令的分支转移结果;所述数据点还进一步包含:所述数据访问指令的数据步长,或步长指针;所述数据步长就是数据访问指令前后两次执行时对应的数据地址的差值;所述步长指针就是该数据访问指令对应的数据步长在步长表中的地址值;所述数据访问指令所处的状态;根据所述状态确定数据点中的数据步长或步长指针是否有效,以及确定数据点中的数据地址信息对应的是本次数据还是下次数据。15.如权利要求13所述的缓存方法,其特征在于,通过将数据访问指令的前一次访问数据的数据地址和数据步长相加,得到下一次访问数据的预测数据地址后再转换为预测缓存地址;或通过将前一次访问数据的缓存地址和数据步长相加,得到下一次访问数据的预测缓存地址;以及根据所述预测缓存地址提前保证相应数据已经被存储在一级数据缓存中。16.如权利要求15所述的缓存方法,其特征在于,根据所述预测缓存地址提前将相应数据读出;当数据流水线执行数据访问指令时,判断预测缓存地址是否正确;若正确,则处理器系统继续后续操作;若不正确,则根据实际缓存地址重新获取相应数据后,处理器核再继续后续操作。17.如权利要求16所述的缓存方法,其特征在于,所述判断预测缓存地址是否正确的方法是,当数据流水线执行数据访问指令时:计算得到实际数据地址并转换为实际缓存地址后,将所述实际缓存地址和预测缓存地址比较;或者计算得到实际数据地址后,将所述实际数据地址和从预测缓存地址转换得到的预测数据地址比较;或者将此时的基地址寄存器值和预测数据地址减去地址偏移量得到的值比较;或者将此时的分支判别字和计算预测数据地址时的分支判别字比较;所述分支判别字由该数据访问指令之后连续复数个反向跳转的分支点的上一次分支判断构成;若比较结果为相等,则所述预测缓存地址是正确的;若比较结果为不相等,则所述预测缓存地址是错误的。18.如权利要求14所述的缓存方法,其特征在于,在所述步长表中存储了数据访问指令在不同循环层次下的相应数据步长;且根据数据访问指令之后的连续若干个反向跳转的分支指令的分支转移结果构成的分支判别字,从该数据访问指令对应的这些数据步长中读出该分支判别字对应的循环层次下的数据步长;根据所述数据访问指令前一次访问数据的地址信息和所述数据步长产生下一次访问数据的地址信息。19.如权利要求14所述的缓存方法,其特征在于,在所述步长表中存储了数据访问指令对应不同的反向跳转的分支指令的相应数据步长;且当反向跳转的分支指令的分支转移发生时,读出步长表中该分支指令对应的所有数据步长,并根据所述数据步长对应的数据访问指令前一次访问数据的地址信息和所述数据步长产生所述数据访问指令的下一次访问数据的地址信息。20.如权利要求14所述的缓存方法,其特征在于,所述方法包含:一个主循迹器和一个数据循迹器;所述主循迹器和数据循迹器结构相同,均由寄存器、增量器和选择器组成;所述方法还包含:一个主循迹器读指针;所述主循迹器读指针是主循迹器中寄存器的输出,用于对指令寻址,并向主流水线提供类型‘0’指令;一个数据循迹器读指针;所述数据循迹器读指针是数据循迹器中寄存器的输出,用于对指令和轨迹点寻址,并向数据流水线提供类型‘1’指令;且所述数据循迹器读指针与主循迹器读指针指向相同指令,或所述数据循迹器读指针领先于所述主循迹器读指针;通过对主循迹器读指针或数据循迹器读指针增‘1’,使其指向下一指令或轨迹点。21.如权利要求20所述的缓存方法,其特征在于,...
【专利技术属性】
技术研发人员:林正浩,
申请(专利权)人:上海芯豪微电子有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。