CN103984526A - 一种指令处理系统及方法 - Google Patents

一种指令处理系统及方法 Download PDF

Info

Publication number
CN103984526A
CN103984526A CN201410022576.8A CN201410022576A CN103984526A CN 103984526 A CN103984526 A CN 103984526A CN 201410022576 A CN201410022576 A CN 201410022576A CN 103984526 A CN103984526 A CN 103984526A
Authority
CN
China
Prior art keywords
address
instruction
branch
storer
tracking
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410022576.8A
Other languages
English (en)
Other versions
CN103984526B (zh
Inventor
林正浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Original Assignee
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Xinhao Bravechips Micro Electronics Co Ltd filed Critical Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Priority to CN201410022576.8A priority Critical patent/CN103984526B/zh
Priority to JP2015556389A priority patent/JP6467605B2/ja
Priority to US14/766,452 priority patent/US20150370569A1/en
Priority to KR1020157024402A priority patent/KR20150119004A/ko
Priority to PCT/CN2014/071794 priority patent/WO2014121737A1/en
Priority to EP14748511.4A priority patent/EP2954406A4/en
Publication of CN103984526A publication Critical patent/CN103984526A/zh
Application granted granted Critical
Publication of CN103984526B publication Critical patent/CN103984526B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本发明提供了一种指令处理系统及方法。使用本发明提供方法或应用本发明提供的系统,通过对轨道表的循迹,可以在处理器执行指令前,将所述指令填充到所述处理器能直接访问的高速存储器中,几乎使所述处理器每次都能在所述高速存储器中获取到需要的指令,消除或掩盖缓存缺失造成的等待时间,从而提高指令处理系统的性能。

Description

一种指令处理系统及方法
技术领域
本发明涉及计算机架构技术领域,特别涉及一种指令处理系统。
背景技术
在当今的计算机架构中,处理器是其核心设备,所述处理器包括通用处理器(General Processor)、中央处理器(CPU)、微控制器(MCU)、数字信号处理器(DSP)、图像处理器(GPU)、片上系统(SOC)、专用集成电路(ASIC)等。通过所述处理器的运行,能够解决各类计算工作。通常的,处理器在运行的过程中需要读取并执行大量的指令,由此,便需要一存储器对这些指令予以存储。
现有的指令处理系统通常包括一处理器及多级存储器系统,所述多级存储器系统通常包括多个存取速度不同的存储器。以一二级存储器系统为例,其包括第一存储器及第二存储器,其中,所述第一存储器的速度比第二存储器的速度快,但是,所述第一存储器的存储空间/面积/容量将比所述第二存储器的存储空间/面积/容量小。
对于上述的指令处理系统而言,当处理器需要指令时,其会首先向第一存储器请求获取该指令,因为第一存储器的存取速度更快,能够更好地与所述处理器匹配。但是,由于第一存储器的存储空间有限,其有可能没有存储所述处理器需要的指令,则此时,所述第一存储器就会向第二存储器请求获取该指令。对于一个二级存储器系统而言,所需的指令必然会存储在所述第二存储器中,但是,由于所述第二存储器的存取速度相对较慢,这样的一个指令获取过程往往导致处理器的运行速度减慢。
通常的,指令分为分支指令与非分支指令,对于非分支指令而言,根据其前后指令的时间/空间相关性,往往能够预先存储在第一存储器中;但是,对于分支指令,由于其将发生一个无序的转移/跳转过程,因此难以预先存储在第一存储器中。
由此,对于现有的指令处理系统而言,往往将出现第一存储器无法及时地向处理器提供所需指令的情况,特别的,当涉及到分支指令相关的指令(通常指,发生分支转移时,分支指令的目标指令;未发生分支转移时,分支指令的下一指令)时,这一问题将变得十分突出。
发明内容
本发明的目的在于提供一种指令处理系统及方法,以解决现有技术中第一存储器/存取速度最快的存储器无法及时地向处理器提供所需指令的问题。
为解决上述技术问题,本发明提供了一种指令处理系统,所述指令处理系统包括:m个存取速度不同的存储器,所述m个存取速度不同的存储器均用以存储指令;指令控制器,所述指令控制器包括轨道表,所述轨道表存储速度最高存储器中存储的分支指令的目标指令的循迹地址,所述分支指令的目标指令存储在所述m个存取速度不同的存储器中的至少一个存储器中;所述指令控制器用以根据所述轨道表中存储的分支指令的目标指令的循迹地址,控制存储速度低的存储器向存储速度高的存储器提供指令;其中,所述m为大于等于2的自然数。
可选的,在所述的指令处理系统中,还包括主动表,所述主动表存储速度最低存储器中存储的指令的块地址,及所述速度最低存储器中存储的指令在另外m-1个存储器中存储有时,在该另外m-1个存储器中的循迹地址。
可选的,在所述的指令处理系统中,所述分支指令的目标指令的循迹地址包括行号和列号;所述分支指令的目标指令的块地址经主动表匹配后,得到所述循迹地址中的行号;所述分支指令的目标指令在指令块中的偏移量为循迹地址中的列号。
可选的,在所述的指令处理系统中,所述指令控制器还包括循迹器,所述循迹器根据轨道表中存储的分支指令的目标指令的循迹地址,提前移动并指向第一层分支指令,并从轨道表中读出该第一层分支指令的目标指令的循迹地址;当所述循迹器发现该目标指令的循迹地址对应速度最高的存储器时,则从所述速度最高的存储器向处理器提供指令;当所述循迹器发现该目标指令的循迹地址对应速度最高的存储器以外的m-1个存储器时,所述m-1个存储器提前向处理器和/或所述速度最高的存储器提供指令。
可选的,在所述的指令处理系统中,所述循迹器包括一个寄存器、一个增量器及一个选择器,其中,所述寄存器中存储了第一层分支指令的循迹地址,该循迹地址被用于在轨道表中寻址以读出对应的目标指令的循迹地址;所述增量器用以得到第一层分支指令段的下一个分支指令的循迹地址;所述选择器用以选出第一层分支指令的目标指令的循迹地址及第一层分支指令段的下一个分支指令的循迹地址中的一个,并将选出的循迹地址存储到所述寄存器中。
可选的,在所述的指令处理系统中,所述指令控制器还包括预测器,所述预测器用以获取所述循迹器指向的分支指令段之后的分支指令段。
可选的,在所述的指令处理系统中,所述预测器用以获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段,其中,n为自然数。
可选的,在所述的指令处理系统中,所述预测器包括2n个寄存器、一个增量器及一个选择器,其中,所述增量器用以得到所述第n层分支指令段中分支指令的循迹地址,所述2n个寄存器分别用以存储第n层分支指令段中分支指令的循迹地址,所述选择器用以选出向所述轨道表寻址的分支指令的循迹地址,以得到所述分支指令的目标指令的循迹地址。
可选的,在所述的指令处理系统中,只使用所述预测器中部分寄存器,从而记录少于n层的若干层分支指令的循迹地址,以调整预测的深度;或者不使用任何寄存器,从而在功能上关闭预测器。
可选的,在所述的指令处理系统中,所述指令控制器包括预测循迹器,所述预测循迹器用以获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段,其中,n为自然数。
可选的,在所述的指令处理系统中,所述预测循迹器包括2n+1-2个寄存器、一个增量器及n+1层选择器,其中,所述增量器用以得到所述第n层分支指令段中分支指令的循迹地址,所述2n+1-2个寄存器分别用以存储从第1层到第n层分支指令段中分支指令的循迹地址,所述n+1层选择器用于根据分支指令的分支转移是否发生的信息依次裁剪不会被执行的分支指令段对应的循迹地址。
可选的,在所述的指令处理系统中,经所述裁剪后输出的循迹地址指向第一层分支指令;根据所述循迹地址能够从轨道表中读出该第一层分支指令的目标指令的循迹地址;根据该目标指令的循迹地址,能够从所述速度最高的存储器向处理器提供指令。
可选的,在所述的指令处理系统中,只使用所述预测循迹器中部分寄存器,从而记录少于n层的若干层分支指令的循迹地址,以调整预测的深度;或者不使用其中2n+1-4个寄存器,从而只实现提前移动并指向第一层分支指令的功能。
可选的,在所述的指令处理系统中,还包括扫描器,所述扫描器用以计算存储器提供的指令中的分支指令的目标指令的块地址,并将所述分支指令的目标指令的块地址送到主动表进行匹配,以得到对应的循迹地址。
可选的,在所述的指令处理系统中,当匹配结果显示所述分支指令的目标指令在速度高的存储器中未存储有时,主动表控制速度低的存储器提供该分支指令的目标指令。
可选的,在所述的指令处理系统中,还包括第一缓冲存储器,所述第一缓冲存储器用以暂存速度低的存储器向速度最高的存储器提供的指令。
可选的,在所述的指令处理系统中,所述第一缓冲存储器包括2n+1-3个寄存器及2n-2个选择器,其中,2n+1-3个寄存器用以存储从第1层到第n-1层的分支指令段,2n-2个选择器用以选出向速度最高的存储器输出的分支指令段。
可选的,在所述的指令处理系统中,还包括第二缓冲存储器,所述第二缓冲存储器用以暂存未被选出向速度最高的存储器输出的分支指令段;所述循迹器通过循迹地址匹配的方式在所述第二缓冲存储器中查找速度最高的存储器及第一缓冲存储器中未包含的指令。
本发明还提供了一种指令处理方法,其中,所使用的轨道表及存储速度最高的存储器行行一一对应,所述指令处理方法包括:步骤10、根据轨道表中存储的分支指令的目标指令的循迹地址,控制存储速度低的存储器向存储速度高的存储器提供指令。
可选的,在所述的指令处理方法中,在步骤10之前还包括:步骤9、通过对分支指令的目标指令的块地址的匹配,得到所述目标指令对应的循迹地址中的行号;所述目标指令在指令块中的偏移量为所述目标指令对应的循迹地址中的列号。
可选的,在所述的指令处理方法中,所述步骤10包括:步骤10A、根据轨道表中存储的分支指令的目标指令的循迹地址,提前找到第一层分支指令,并从轨道表中读出该第一层分支指令的目标指令的循迹地址;当该目标指令的循迹地址对应速度最高的存储器时,则从所述速度最高的存储器向处理器提供指令;当该目标指令的循迹地址对应速度最高的存储器以外的m-1个存储器时,所述m-1个存储器提前向处理器和/或所述速度最高的存储器提供指令。
可选的,在所述的指令处理方法中,所述步骤10还包括:步骤10B、获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段。
可选的,在所述的指令处理方法中,所述步骤10包括:步骤10A、获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段。
可选的,在所述的指令处理方法中,所述步骤10还包括:步骤10B、根据分支指令的分支转移是否发生的信息依次裁剪不会被执行的分支指令段对应的循迹地址。
可选的,在所述的指令处理方法中,所述步骤10还包括:步骤10C、经所述裁剪后输出的循迹地址指向第一层分支指令;根据所述循迹地址能够从轨道表中读出该第一层分支指令的目标指令的循迹地址;根据该目标指令的循迹地址,能够从所述速度最高的存储器向处理器提供指令。
可选的,在所述的指令处理方法中,所述步骤9包括:步骤9A、计算存储器提供的指令中的分支指令的目标指令的块地址,并通过对所述分支指令的目标指令的块地址的匹配,得到所述目标指令对应的循迹地址中的行号;所述目标指令在指令块中的偏移量为所述目标指令对应的循迹地址中的列号。
可选的,在所述的指令处理方法中,所述步骤9还包括:步骤9B、当匹配结果显示所述分支指令的目标指令在速度高的存储器中未存储有时,主动表控制速度低的存储器提供该分支指令的目标指令。
可选的,在所述的指令处理系统中,指令控制器还包括循迹器,所述循迹器以该读指针值作为循迹地址对轨道表和速度最高的存储器寻址,读出轨迹点内容并据此更新读指针值,同时读出指令供处理器执行。
可选的,在所述的指令处理系统中,当指令控制器从所述轨道表的轨迹点中读出的指令类型显示为间接分支指令时,由处理器执行该指令并产生分支目标地址后,再转换为循迹地址。
可选的,在所述的指令处理系统中,处理器产生的所述间接分支目标地址被主动表转换为循迹地址并存储在轨道表的相应轨迹点中;当循迹器读指针再次指向该轨迹点时,当作直接分支点猜测执行,并将处理器此时产生的分支目标地址与该轨迹点中循迹地址对应的指令地址进行比较;若两者相等,则该猜测是正确的,可以继续后续操作;若两者不等,则该猜测是错误的,用所述处理器产生的分支目标地址转换为循迹地址,再进行后续操作。
可选的,在所述的指令处理系统中,根据分支目标指令或数据位于存储器层次的不同,轨道表的轨迹点中存储了不同格式的循迹地址;不同格式的循迹地址对应不同层次的存储器;根据主动表中存储的信息,可以对不同层次缓存的循迹地址进行转换。
可选的,在所述的指令处理系统中,所述指令处理系统中使用的地址格式包括指令地址、数据地址和循迹地址。
可选的,在所述的指令处理系统中,数据访问指令对应的轨迹点中存储了循迹地址和数据步长(stride)。
可选的,在所述的指令处理系统中,当指令控制器从所述轨道表的轨迹点中读出的是对应速度较低的存储器的循迹地址时,该循迹地址被送到主动表转换为对应速度较高的存储器的循迹地址并填回轨道表的该的轨迹点中,同时将对应的指令块或数据块从速度较低的存储器存储到速度较高的存储器中。
可选的,在所述的指令处理系统中,当速度最低存储器中一个存储块对应的顺序地址的前一存储块或后一存储块已经存储在所述速度最低存储器中时,主动表中还存储了该存储块对应的所述前一存储块或后一存储块在所述速度最低存储器中的存储位置信息。
可选的,在所述的指令处理系统中,当指令或数据地址位于速度最低存储器中当前存储块的前一存储块或后一存储块中时,可以根据存储在主动表中的所述前一存储块或后一存储块的位置信息,直接在速度最低存储器中找到该指令或数据。
可选的,在所述的指令处理系统中,当一个存储块被替换或填充时,若可以确定该存储块的前一存储块或后一存储块的位置,则将所述前一存储块或后一存储块的位置信息存储在主动表中该存储块对应的前一存储块位置或后一存储块位置中,并相应地将该存储块的位置信息存储在主动表中所述前一存储块对应的后一存储块位置中,或将该存储块的位置信息存储在主动表中所述后一存储块对应的前一存储块位置中。
可选的,在所述的指令处理系统中,当一个存储块被替换或填充时,根据主动表中该存储块对应的所述前一存储块或后一存储块的位置信息,将所述前一存储块对应的后一存储块的位置信息清除,以及将所述后一存储块对应前一存储块的位置信息清除。
可选的,在所述的指令处理系统中,在所述扫描器中对分支目标指令地址进行边界判断;根据所述判断结果,对位于不同位置的分支目标指令给予不同格式的地址;或所述指令处理系统还包含一个数据引擎,在所述数据引擎中对数据访问指令的下次数据地址进行边界判断;根据所述判断结果,对位于不同位置的下次数据给予不同格式的地址。
可选的,在所述的指令处理系统中,若分支目标指令地址位于分支源指令在至少一个层次存储器的同一存储块中,则以该分支目标指令在这些层次的存储器中的较高层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令循迹地址中的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
可选的,在所述的指令处理系统中,在所述扫描器中:若分支目标指令地址位于分支源指令在某一层次存储器中所在存储块的前一或后一存储块中,则以该分支目标指令在该层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令所在存储块的前一或后一存储块的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
可选的,在所述的指令处理系统中,在所述扫描器中还包含一个加法器,用于对分支源指令本身在某一层次存储器对应的块内偏移量与分支转移距离中对应所述层次存储器块内偏移量的部分相加,产生进位输出;当所述分支转移距离为正数或零时,若所述分支转移距离对应所述层次存储器块内偏移量以外部分为全‘0’,且所述进位输出为‘0’,则所述分支目标位于该层次存储器中所述分支源指令所在的指令块中;当所述分支转移距离为负数时,若所述分支转移距离对应所述层次存储器块内偏移量以外部分为全‘1’,且所述进位输出为‘1’,则所述分支目标位于所述分支源指令所在的指令块中。
可选的,在所述的指令处理系统中,所述加法器还进一步对分支源指令本身在某一层次存储器对应的块内偏移量以外部分中的低位与分支转移距离中的相应位相加,判断所述分支目标是否位于该层次存储器中所述分支源指令所在的指令块顺序地址的前一个或后一个指令块中。
可选的,在所述的指令处理系统中,若下次数据地址位于本次数据在至少一个层次存储器的同一存储块中,则以该下次数据在这些层次的存储器中的较高层次存储器循迹地址作为该下次数据的循迹地址,且以该本次数据的循迹地址中的DBNX作为该下次数据的循迹地址中的DBNX,以该下次数据中对应所述层次存储器的DBNY部分作为该下次数据的循迹地址中的DBNY。
可选的,在所述的指令处理系统中,在所述数据引擎中:若下次数据地址位于本次数据在某一层次存储器中所在存储块的前一或后一存储块中,则以该下次数据在该层次存储器循迹地址作为该下次数据的循迹地址,且以该本次数据所在存储块的前一或后一存储块的DBNX作为该下次数据的循迹地址中的DBNX,以该下次数据中对应所述层次存储器的DBNY部分作为该下次数据的循迹地址中的DBNY。
可选的,在所述的指令处理系统中,在所述数据引擎中还包含一个加法器,用于对本次数据本身在某一层次存储器对应的块内偏移量与数据步长中对应所述层次存储器块内偏移量的部分相加,产生进位输出;当所述数据步长为正数或零时,若所述数据步长对应所述层次存储器块内偏移量以外部分为全‘0’,且所述进位输出为‘0’,则所述下次数据位于该层次存储器中所述本次数据所在的数据块中;当所述数据步长为负数时,若所述数据步长对应所述层次存储器块内偏移量以外部分为全‘1’,且所述进位输出为‘1’,则所述下次数据位于所述本次数据所在的数据块中。
可选的,在所述的指令处理系统中,所述加法器还进一步对本次数据本身在某一层次存储器对应的块内偏移量以外部分中的低位与数据步长中的相应位相加,判断所述下次数据是否位于该层次存储器中所述本次数据所在的数据块顺序地址的前一个或后一个数据块中。
可选的,在所述的指令处理系统中,每个层次的数据存储器还对应一个数据循迹地址转换模块;所述数据循迹地址转换模块的行与该层次数据存储器中的数据块一一对应,其中每行存储了对应该层次数据存储器中数据块所在的更低层次存储器中的数据块号及相应的子块号,从而可以将所述层次数据循迹地址中的块号转换为所述更低层次数据循迹地址中的块号,并将该子块号与所述层次的数据循迹地址中的块内偏移量合并构成所述更低层次的数据循迹地址中的块内偏移量。
可选的,在所述的指令处理系统中,指令和数据共享速度较低的存储器,且在主动表中存储了速度最低的存储器中的指令块和数据块的块地址。
可选的,在所述的指令处理系统中,虚实地址转换模块(TLB)位于主动表对应的存储器以外的层次中,使得所述主动表对应的存储器及更高层次存储器均根据虚拟地址寻址,而更低层次存储器均根据物理地址寻址;当分支源指令的目标指令尚未存储在主动表对应的存储器中时,该目标指令的地址经虚实地址转换模块转换得到物理地址后被送往更低层次存储器获取相应指令;或当下次数据尚未存储在主动表对应的存储器中时,该下次数据的地址经虚实地址转换模块转换得到物理地址后被送往更低层次存储器获取相应数据。
可选的,在所述的指令处理系统中,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;虚实地址转换模块位于处理器、扫描器或数据引擎与主动表之间的路径上。
可选的,在所述的指令处理系统中,对于由扫描器或数据引擎产生的虚拟地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址;对于由处理器产生的间接分支目标指令地址或数据地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址从存储器中获取相应指令或数据提供给处理器使用,并填充到最高层次存储器中。
可选的,在所述的指令处理系统中,在所述虚实地址转换模块中的每项还存储了连续虚拟地址的前一或后一页面的物理页面地址在虚实地址转换模块中的位置信息;若根据物理地址直接计算得到的分支目标指令地址或下次数据地址位于分支源指令或本次数据所在页面的前一或后一页面,则根据所述前一或后一页面的位置信息从虚实地址转换模块中找到相应物理页面地址构成该分支目标指令或下次数据的物理地址,再送主动表转换为循迹地址。
可选的,在所述的指令处理系统中,扫描器根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面但不在同一存储块中时,根据所述被审查指令的物理地址,在主动表中将所述后续指令的地址转换为循迹地址直接对存储器寻址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,将所述被审查指令标记为间接分支指令(直标间指令类型),等到处理器执行到该指令时并产生后续指令地址时,将该后续指令地址送到虚实地址转换模块转换为物理地址后,再送到主动表转换为循迹地址对存储器寻址。
可选的,在所述的指令处理系统中,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;所述主动表除主体部分外,还包含一个抗混叠表;所述抗混叠表中的每行存储一个虚页号及该虚页号对应的物理地址页号在主动表主体部分中所在的一个块号;当主动表中某个指令块或数据块的物理地址对应的虚拟地址多于一个时,所述主动表的主体部分中存储了该指令块或数据块的物理地址及其对应的一个虚拟地址,而其他虚拟地址中的虚页号及对应的块号则存储在抗混叠表中。
可选的,在所述的指令处理系统中,处理器、扫描器或数据引擎输出的虚拟地址在主动表中与主体部分及抗混叠表中的虚拟地址匹配时,输出虚拟地址及虚页号匹配结果;所述匹配结果包括:虚拟地址匹配成功,或虚拟地址匹配不成功且虚页号匹配成功,或虚页号匹配不成功;处理器、扫描器或数据引擎输出的物理地址在主动表中与主体部分中的物理地址匹配时,输出物理地址及物理地址页号匹配结果;所述匹配结果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址页号匹配成功,或物理地址页号匹配不成功。
可选的,在所述的指令处理系统中,主动表输出扫描器中被审查指令对应的虚拟地址到扫描器;扫描器根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面时,扫描器将计算得到的所述地址送主动表转换为循迹地址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,扫描器根据接收到的虚拟地址计算后续指令的虚拟地址,并送到主动表匹配得到相应物理地址,再转换为循迹地址。
可选的,在所述的指令处理系统中,主动表输出数据引擎中本次数据循迹地址对应的虚拟地址到数据引擎;对于数据访问指令,数据引擎根据本次数据地址和数据步长计算下次数据地址;当所述下次数据的地址与所述本次数据的地址位于相同页面时,数据引擎将计算得到的所述地址送主动表转换为循迹地址;当所述下次数据的地址与所述本次数据的地址位于不同页面时,数据引擎根据接收到的虚拟地址计算下次数据的虚拟地址,并送到主动表匹配得到相应物理地址,再转换为循迹地址。
可选的,在所述的指令处理方法中,根据循迹地址对轨道表和速度最高的存储器寻址,读出轨迹点内容并据此更新读指针值,同时读出指令供处理器执行。
可选的,在所述的指令处理方法中,轨道表中控制流(control flow)信息以二叉树形式存在,其中每个分支点对应一条分支指令。
可选的,在所述的指令处理方法中,所述二叉树是完整的二叉树,包含了相邻分支点之间的路径信息,从而可以由一令分支点出发到达其两个分叉上各一个相邻的后续分支点。
可选的,在所述的指令处理方法中,对于间接分支指令,由处理器执行该指令并产生分支目标地址后,再转换为循迹地址。
可选的,在所述的指令处理方法中,对于无条件分支指令,以其分支目标循迹地址作为后续指令循迹地址;对于条件分支指令,根据处理器核执行该条件分支指令产生的分支转移是否发生的信息选择其下一指令循迹地址或分支目标循迹地址中的一个作为后续指令循迹地址。
可选的,在所述的指令处理方法中,处理器产生的所述间接分支目标地址被转换为循迹地址并存储在轨道表的相应轨迹点中;当再次指向该轨迹点时,当作直接分支点猜测执行,并将处理器此时产生的分支目标地址与该轨迹点中循迹地址对应的指令地址进行比较;若两者相等,则该猜测是正确的,可以继续后续操作;若两者不等,则该猜测是错误的,用所述处理器产生的分支目标地址转换为循迹地址,再进行后续操作。
可选的,在所述的指令处理方法中,根据分支目标指令或数据位于存储器层次的不同,轨道表的轨迹点中存储了不同格式的循迹地址;不同格式的循迹地址对应不同层次的存储器;可以对不同层次缓存的循迹地址进行转换。
可选的,在所述的指令处理方法中,使用的地址格式包括指令地址、数据地址和循迹地址。
可选的,在所述的指令处理方法中,数据访问指令对应的轨迹点中存储了循迹地址和数据步长。
可选的,在所述的指令处理方法中,当从所述轨道表的轨迹点中读出的是对应速度较低的存储器的循迹地址时,该循迹地址被转换为对应速度较高的存储器的循迹地址并填回轨道表的该的轨迹点中,同时将对应的指令块或数据块从速度较低的存储器存储到速度较高的存储器中。
可选的,在所述的指令处理方法中,当速度最低存储器中一个存储块对应的顺序地址的前一存储块或后一存储块已经存储在所述速度最低存储器中时,主动表中存储了该存储块对应的所述前一存储块或后一存储块在所述速度最低存储器中的存储位置信息。
可选的,在所述的指令处理方法中,当指令或数据地址位于速度最低存储器中当前存储块的前一存储块或后一存储块中时,可以根据存储在主动表中的所述前一存储块或后一存储块的位置信息,直接在速度最低存储器中找到该指令或数据。
可选的,在所述的指令处理方法中,当一个存储块被替换或填充时,若可以确定该存储块的前一存储块或后一存储块的位置,则将所述前一存储块或后一存储块的位置信息存储在主动表中该存储块对应的前一存储块位置或后一存储块位置中,并相应地将该存储块的位置信息存储在主动表中所述前一存储块对应的后一存储块位置中,或将该存储块的位置信息存储在主动表中所述后一存储块对应的前一存储块位置中。
可选的,在所述的指令处理方法中,当一个存储块被替换或填充时,根据主动表中该存储块对应的所述前一存储块或后一存储块的位置信息,将所述前一存储块对应的后一存储块的位置信息清除,以及将所述后一存储块对应前一存储块的位置信息清除。
可选的,在所述的指令处理方法中,对分支目标指令地址进行边界判断;根据所述判断结果,对位于不同位置的分支目标指令给予不同格式的地址;或对数据访问指令的下次数据地址进行边界判断;根据所述判断结果,对位于不同位置的下次数据给予不同格式的地址。
可选的,在所述的指令处理方法中,若分支目标指令地址位于分支源指令在至少一个层次存储器的同一存储块中,则以该分支目标指令在这些层次的存储器中的较高层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令循迹地址中的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
可选的,在所述的指令处理方法中,若分支目标指令地址位于分支源指令在某一层次存储器中所在存储块的前一或后一存储块中,则以该分支目标指令在该层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令所在存储块的前一或后一存储块的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
可选的,在所述的指令处理方法中,若下次数据地址位于本次数据在至少一个层次存储器的同一存储块中,则以该下次数据在这些层次的存储器中的较高层次存储器循迹地址作为该下次数据的循迹地址,且该下次数据的循迹地址中的DBNX等于该本次数据的循迹地址中的DBNX,该下次数据的循迹地址中的DBNY等于该下次数据中对应所述层次存储器的DBNY部分。
可选的,在所述的指令处理方法中,若下次数据地址位于本次数据在某一层次存储器中所在存储块的前一或后一存储块中,则以该下次数据在该层次存储器循迹地址作为该下次数据的循迹地址,且该下次数据的循迹地址中的DBNX等于该本次数据所在存储块的前一或后一存储块的DBNX,该下次数据的循迹地址中的DBNY等于该下次数据中对应所述层次存储器的DBNY部分。
可选的,在所述的指令处理方法中,还记录了较高层次存储器中每个数据块在较低层次存储器中所在的存储块信息;根据所述信息,可以将对应较高层次存储器的数据循迹地址转换为对应较低层次存储器的数据循迹地址。
可选的,在所述的指令处理方法中,指令和数据共享速度较低的存储器,且在主动表中存储了速度最低的存储器中的指令块和数据块的块地址。
可选的,在所述的指令处理方法中,主动表对应的存储器及更高层次存储器均根据虚拟地址寻址,而更低层次存储器均根据物理地址寻址;当分支源指令的目标指令尚未存储在主动表对应的存储器中时,该目标指令的虚拟地址经虚实地址转换为物理地址后被送往更低层次存储器获取相应指令;或当下次数据尚未存储在主动表对应的存储器中时,该下次数据的虚拟地址转换为物理地址后被送往更低层次存储器获取相应数据。
可选的,在所述的指令处理方法中,主动表对应的存储器及更高层次存储器均根据物理地址寻址;对于由扫描器或数据引擎产生的虚拟地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址;对于由处理器产生的间接分支目标指令地址或数据地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址从存储器中获取相应指令或数据提供给处理器使用,并填充到最高层次存储器中。
可选的,在所述的指令处理方法中,还记录了连续虚拟地址的前一或后一页面的物理页面地址的位置信息;若根据物理地址直接计算得到的分支目标指令地址或下次数据地址位于分支源指令或本次数据所在页面的前一或后一页面,则根据所述前一或后一页面的位置信息中找到相应物理页面地址构成该分支目标指令或下次数据的物理地址,再送主动表转换为循迹地址。
可选的,在所述的指令处理方法中,根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面但不在同一存储块中时,根据所述被审查指令的物理地址,在主动表中将所述后续指令的地址转换为循迹地址直接对存储器寻址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,将所述被审查指令标记为间接分支指令(直标间指令类型),等到处理器执行到该指令时并产生后续指令地址时,将该后续指令地址转换为物理地址后,再送到主动表转换为循迹地址对存储器寻址。
可选的,在所述的指令处理方法中,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;所述主动表除主体部分外,还包含一个抗混叠表;所述抗混叠表中的每行存储一个虚页号及该虚页号对应的物理地址页号在主动表主体部分中所在的一个块号;当主动表中某个指令块或数据块的物理地址对应的虚拟地址多于一个时,所述主动表的主体部分中存储了该指令块或数据块的物理地址及其对应的一个虚拟地址,而其他虚拟地址中的虚页号及对应的块号则存储在抗混叠表中。
可选的,在所述的指令处理方法中,处理器、扫描器或数据引擎输出的虚拟地址在主动表中与主体部分及抗混叠表中的虚拟地址匹配时,输出虚拟地址及虚页号匹配结果;所述匹配结果包括:虚拟地址匹配成功,或虚拟地址匹配不成功且虚页号匹配成功,或虚页号匹配不成功;处理器、扫描器或数据引擎输出的物理地址在主动表中与主体部分中的物理地址匹配时,输出物理地址及物理地址页号匹配结果;所述匹配结果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址页号匹配成功,或物理地址页号匹配不成功。
可选的,在所述的指令处理方法中,在扫描器中,若所述目标指令物理地址与分支源指令物理地址位于同一指令块,则直接输出分支源指令对应的块号;若所述目标指令物理地址与分支源指令物理地址位于同一页面中的不同指令块,则所述目标指令物理地址被送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则输出匹配成功项的块号;若物理地址匹配不成功,则根据该物理地址从更低层次存储器中获取相应指令块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号;在数据引擎中,若所述下次数据物理地址与本次数据物理地址位于同一数据块,则直接输出本次数据对应的块号;若所述下次数据物理地址与本次数据物理地址位于同一页面中的不同数据块,则所述下次数据物理地址被送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则输出匹配成功项的块号;若物理地址匹配不成功,则根据该物理地址从更低层次存储器中获取相应数据块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号。
可选的,在所述的指令处理方法中,对于处理器、扫描器或数据引擎输出的虚拟地址:若在主动表的主体部分中与虚拟地址匹配成功,则输出匹配成功项对应的块号;若在主动表的主体部分中与虚拟地址匹配不成功但与虚页号匹配成功,则读出匹配成功项中的物理地址页号,与所述虚拟地址中的标签低位合并构成物理地址,再送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则输出匹配成功项的块号;若物理地址匹配不成功,则根据该物理地址从更低层次存储器中获取相应指令块或数据块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号;若在主动表的主体部分中与虚页号匹配不成功,则由操作系统提供该虚页号对应的物理地址页号;所述物理地址页号与所述虚拟地址中的标签低位合并构成物理地址,再送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则将所述虚页号及匹配成功项的块号填充到抗混叠表的可用行中,并输出该块号;若物理地址匹配不成功,则该物理地址从更低层次存储器中获取相应指令块或数据块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号。
可选的,在所述的指令处理方法中,根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面时,将计算得到的所述地址送主动表转换为循迹地址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,根据被审查指令的虚拟地址计算后续指令的虚拟地址,并送到主动表匹配得到相应物理地址,再转换为循迹地址。
可选的,在所述的指令处理方法中,对于数据访问指令,根据本次数据地址和数据步长计算下次数据地址;当所述下次数据的地址与所述本次数据的地址位于相同页面时,将计算得到的所述地址送主动表转换为循迹地址;当所述下次数据的地址与所述本次数据的地址位于不同页面时,根据本次数据的虚拟地址计算下次数据的虚拟地址,并送到主动表匹配得到相应物理地址,再转换为循迹地址。
在本发明提供的指令处理系统及方法中,通过指令控制器根据轨道表中存储的分支指令的目标指令的循迹地址,控制存储速度低的存储器向存储速度高的存储器提供指令,即能够根据分支指令的目标指令的循迹地址,预先/尽早向存储速度高的存储器提供指令,从而当处理器需要这些指令时,存储速度高的存储器及时地向处理器提供所需的指令,进而保证了处理器的运行速度。
附图说明
图1是本发明实施例的指令处理系统的一框结构示意图;
图2是本发明实施例的指令处理系统的另一框结构示意图;
图3是本发明实施例的预测器的一框结构示意图;
图4A~4D是本发明实施例的分支指令与分支指令段的树型关系示意图;
图4E是本发明实施例的预测器中四个寄存器值的变化情况示意图;
图5是本发明实施例的预测循迹器的一框结构示意图;
图6是本发明实施例的缓冲的一框结构示意图;
图7是本发明实施例的带暂存的另一缓冲的一框结构示意图;
图8是本发明实施例的指令处理系统的另一框结构示意图;
图9是本发明所述的计算和查找分支目标指令的结构图;
图10A是本发明所述主动表中一个表项的结构示意图;
图10B是本发明所述轨道表中一个表项的内容示意图;
图11是本发明实施例的分支指令地址和分支目标指令地址示意图,
图12是扫描器计算分支目标地址的结构图;
图13是本发明所述为数据访问指令预先准备数据的一个实施例
图14是TLB在处理器和主动表之间的结构图;
图15是本发明所述虚实地址转换的另一实现方式结构图;
图16是本发明所述虚实地址转换的另一结构图;
图17是本发明所述计算分支目标地址的另一结构图;
图18是本发明所述虚实地址转换的另一结构图;
图19是本发明所述指令格式示意图;
图20,其为本发明所述完整系统的一个实施例。
具体实施方式
以下结合附图和具体实施例对本发明提出的指令处理系统及方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
请参考图1,其为本发明实施例的指令处理系统的一框结构示意图。如图1所示,所述指令处理系统包含一个处理器10、一个主动表11、一个扫描器12、一个轨道表13、一个相关表14、一个循迹器15、一个一级缓存16(即第一存储器、也即存储速度最高的存储器)和一个二级缓存17(即第二存储器、也即存储速度次高的存储器、在此也即存储速度最低的存储器)。应当理解的是,这里列出各种部件的目的是为了便于描述,还可以包含其他部件,而某些部件可以被省略。这里的各种部件可以分布在多个系统中,可以是物理上存在的或是虚拟的,可以是硬件实现(如:集成电路)、软件实现或由硬件和软件组合实现。
在这里,存储器的层次指的是存储器与处理器10之间的接近程度。越接近处理器10的层次越高。此外,一个高层次的存储器(如一级缓存16)通常比低层次的存储器(如二级缓存17)速度快但容量小。“最接近处理器的存储器”指的是在存储层次中离处理器最近、通常也是速度最快的存储器,如本实施例中的一级缓存16。此外,本发明中的各个层次的存储器具有包含关系,即层次较低的存储器含有层次较高的存储器中的全部存储内容。
在本发明中,分支指令指的是任何适当的能导致处理器10改变执行流(如:非按顺序执行一条指令)的指令形式。分支源指一条进行分支操作的指令(即:分支指令),分支源地址可以是分支指令本身的指令地址;分支目标指的是分支指令造成的分支转移所转向的目标指令,分支目标地址可以指当分支指令的分支转移成功发生时转移进入的地址,也就是分支目标指令的指令地址;当前指令可以指当前正在被处理器核执行或获取的指令;当前指令块可以指含有当前正被处理器执行的指令的指令块。
在本发明中,轨道表13中的行与一级缓存16中的存储块一一对应。轨道表13含有复数个轨迹点。一个轨迹点是轨道表中的一个表项,可含有至少一条指令的信息,比如指令类型信息、分支目标地址等。轨迹点的循迹地址就是该轨迹点本身的轨道表地址,且所述循迹地址由一个行号和一个列号构成。轨迹点的循迹地址与该轨迹点所代表指令的指令地址相对应;而分支指令轨迹点(即:分支点)中含有该分支指令的分支目标指令在轨道表中的循迹地址,且该循迹地址与该分支目标指令的指令地址相对应。
为便于表示,可以用BN表示循迹地址,用BNX表示循迹地址中的行号,并用BNY表示循迹地址中的列号。这样,BNX就对应指令所在存储块的位置(存储块的行号),而BNY就对应指令在其所在存储块中的位置(偏移量)。相应地,每个BN(包含BNX及BNY)也对应轨道表13中的一个轨迹点,即可以根据一个BN从轨道表13中找到对应的轨迹点。进一步地,为了便于描述,用BN1表示对应一级缓存的循迹地址,用BN2表示对应二级缓存的循迹地址。
当一个轨迹点对应的指令是分支指令(即该轨迹点中的指令类型信息表示对应的指令为分支指令)时,该轨迹点中还存储了以循迹地址形式表示的该分支指令的分支目标指令在存储器(一级缓存16或二级缓存17)中的位置信息。根据该循迹地址,也可以在轨道表13中找到该分支目标指令对应的轨迹点的位置。即对于轨道表13的分支点而言,其轨道表地址就是其分支源地址对应的循迹地址,其轨道表内容中包含了其分支目标地址对应的循迹地址。
在本实施例中,主动表11中的表项与二级缓存17中的存储块一一对应,每个表项对应一个BN2X,指明了该主动表行对应的二级缓存存储块存储在二级缓存17中的位置,并形成了BN2X与二级缓存存储块的对应关系。主动表11中的每个表项存储了一个二级缓存存储块的块地址。此外,主动表11中的每个表项还包含了该二级缓存存储块是否全部或部分存储在一级缓存16中的信息。当一个二级缓存存储块全部或部分存储在一级缓存16中时,该二级缓存指令块对应的主动表11表项中存储了对应一级缓存存储块的块号(即BN1中的BN1X)。这样,当用一个指令地址在主动表11中进行匹配时,可以得到匹配成功项中存储的BN1X,或得到匹配成功项对应的BN2X,或得到匹配不成功的结果。
扫描器12对从二级缓存17送往一级缓存16的指令进行审查,一旦发现某条指令是分支指令,即计算该分支指令的分支目标地址。例如,将分支指令所在指令块的块地址、该分支指令在指令块中的偏移量和分支转移距离三者相加得到分支目标地址。
可以将扫描器12计算得到的分支目标指令地址与主动表11中存储的存储块行地址匹配。若匹配成功,且对应的BN1X存在,则表示该分支目标指令已经存储在一级缓存16中,则主动表11输出该BN1X送往轨道表13。若匹配成功,但对应的BN1X不存在,则表示该分支目标指令已经存储在二级缓存17中,但尚未存储在一级缓存16中,则主动表11输出该BN2X送往轨道表13。若匹配不成功,则表示该分支目标指令尚未存储在一级缓存16及二级缓存17中,此时,将该分支目标指令地址通过总线18送往外部存储器,同时在主动表11中分配一个表项存储对应块地址,输出该BN2X送往轨道表13,并将外部存储器送来的对应指令块填充到二级缓存17中与该BN2X对应存储块中。
当一个指令块从二级缓存17输出写入一级缓存16的一个存储块中的同时,在轨道表13中相应行中建立对应的轨道。对于该指令块中的分支指令,其分支目标指令地址经主动表11匹配输出一个BN1X或BN2X,而该分支目标指令在其指令块中的位置(即该分支目标指令地址的偏移量部分)就是对应的BN1Y或BN2Y。这样,就得到了对应该分支目标指令的循迹地址(BN1或BN2),并将该循迹地址作为轨迹点内容存储到所述分支指令对应的轨迹点中。如此可以建立对应整个指令块的一条轨道。这样,在本实施例中,轨道表13的轨迹点内容中的循迹地址可以是BN1,也可以是BN2,分别对应指令块已存储在一级缓存16和二级缓存17中的情况。
在本发明中,循迹器15由一个寄存器21、一个增量器22和一个选择器23构成。寄存器21中存储的是循迹地址,其输出为循迹器15的读指针19,该读指针19指向轨道表13中的一个轨迹点。当根据读指针19从轨道表13中读出的指令类型为非分支指令类型时,保持寄存器21中循迹地址的BNX部分不变,而BNY部分则通过增量器22增一后送往选择器23。由于此时表示分支转移是否发生的TAKEN信号20无效,因此选择器23选择缺省输入,即该增一后的BNY写回寄存器21,使得读指针19移动并指向下一个轨迹点。
如此移动读指针19直到指向一个分支指令,即读指针19的值为分支源指令的循迹地址,并从轨道表13读出该分支源指令的分支目标指令循迹地址送往选择器23,而选择器23的另一个输入依然是读指针19输出经增一后的循迹地址(即指向该分支点之后的轨迹点的循迹地址)。
这样,循迹器15的读指针19从处理器10当前执行的指令对应的轨迹点开始,提前移动到该轨迹点之后的第一个分支点。由于轨道表13的轨迹点内容中包含的循迹地址根据对应目标指令所在存储器位置的不同可以是BN1或BN2,因此根据该目标指令循迹地址可以在存储器(一级缓存16或二级缓存17)中找到该目标指令。
当读出循迹器15的读指针19指向的轨迹点内容为BN2时,该BN2经总线30被送到二级缓存17以找到对应指令块,按之前所述方法将该指令块填充到一级缓存16中,同时在轨道表11中建立对应该指令块的轨道,并将轨道表中读指针19指向的轨迹点内容由原来的BN2替换为对应的BN1。
当处理器10执行到该分支指令时产生TAKEN信号20。若TAKEN信号20表示该分支转移没有发生,则选择器23选择读指针19增一后的循迹地址写回寄存器21,继续移动读指针19沿当前轨道继续移动到下一个分支点,而处理器10输出指令地址偏移量从读指针19指向的一级缓存16的存储块中读取相应的后续指令。
若TAKEN信号20表示该分支转移发生,则选择器23选择轨道表13输出的分支目标指令循迹地址写入寄存器21,使得读指针19同时指向轨道表13中该分支目标指令对应的轨迹点及一级缓存16中该分支目标指令。此时,可以根据读指针19输出的循迹地址BN1直接在一级缓存16找到该分支目标指令;从而输出该分支目标指令供处理器10执行。此后,读指针19按之前所述方法沿该新的当前轨道继续移动到下一个分支点,而处理器10输出指令地址偏移量从读指针19指向的一级缓存16的存储块中读取相应的后续指令。
这样,当处理器10需要读取指令时,对应指令已经存储在一级缓存16中或正在往一级缓存16填充,从而掩盖缓存缺失造成的全部或部分等待时间,提高指令处理系统的性能。
需要说明的是,可以在轨道表13中每条轨道的最后一个轨迹点之后增加一个结束轨迹点,该结束轨迹点的类型为必定发生的分支转移,该结束轨迹点内容中的BNX就是该轨道对应的指令块的下一个指令块在轨道表13中的行号(BNX),该结束轨迹点中的BNY为‘0’。这样,一旦循迹器15从该轨道的最后一个分支点开始移动,则会指向结束轨迹点,从而转移至下一指令块。
在本发明中,相关表14记录了轨道表13中轨道之间的相互关系,如记录了对于轨道表13中的一条轨道,以该轨道为分支目标的分支源所在轨道的信息。这样,可以选择轨道表13中没有分支目标的轨道进行替换,或对于某条轨道被替换时,可以更改相应分支源中的内容(即分支目标循迹地址),防止所述相应分支源轨迹点中的内容指向错误的分支目标轨迹点。
此外,还可以将本实施例所述结构扩展到具有m层存储器(缓存)的指令处理系统中,其中m为大于等于2的自然数。对于图1实施例而言,m等于2。
在图1实施例中,若二级缓存17向一级缓存16填充指令块的时延很长,可以通过提前找到更多层分支指令的目标指令循迹地址,更早地将对应的目标指令从二级缓存17填充到一级缓存16中,使得处理器10需要读取相应指令时,这些指令已经存储在一级缓存16中,从而更好地掩盖缓存缺失造成的等待时间。
在本发明所述的指令处理系统中,还可以包括一个预测器。所述预测器用以获取循迹器指向的分支指令段之后的分支指令段,即所述预测器用以获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段,其中,n为自然数。
请参考图2,其为本发明实施例的指令处理系统的另一框结构示意图。如图2所示,所述指令处理系统除了包含一个处理器10、一个主动表11、一个扫描器12、一个轨道表13、一个相关表14、一个循迹器15、一个一级缓存16和一个二级缓存17以外,还包含了一个预测器24和一个缓冲25。
在本实施例中,轨道表13可以同时根据两个循迹地址输出对应的两个轨迹点的内容。其中一个循迹地址来源于循迹器15的读指针19,另一个循迹地址来源于预测器24输出的总线26。
预测器24获取第一层分支指令段之后的第n层分支指令段,并通过总线26向轨道表13输出所述第一层分支指令段之后的第n层分支指令段的循迹地址。若所述循迹地址是BN2,则可以根据该BN2提前从二级缓存17中读出对应指令块并暂存到缓冲25中;若所述循迹地址是BN1,则不需要额外操作。此外,缓冲25中还保存了每个存储在缓冲25中的指令段对应的BN值。在此,每个指令段有且仅有一个分支指令,具体的,将每个分支指令及其之前的直到前一个分支指令为止的指令(不包含所述前一个分支指令)归为一个指令段。由于循迹器或预测器的输出指针都停止在分支指令,因此为便于说明,在下文中,“指令段的循迹地址”等同于“指令段中分支指令的循迹地址”,且下文中的“分支指令段”、“下一指令段”和“目标指令段”均属于这里定义的“指令段”。
这样,使用预测器24,可以提前将循迹器15读指针19指向的分支指令之后的n层分支指令的分支目标指令块存储在一级缓存16或缓冲25中,并根据处理器10执行读指针19指向的分支指令的执行结果将缓冲25中的一些指令块填充到一级缓冲16中。
具体地,请参考图3,其为本发明实施例的预测器的一框结构示意图。在本实施例中,预测器24获取第一层分支指令段之后的第二层分支指令段的循迹地址,即n等于2。
在本实施例中,预测器24包含一个增量器27,一个选择器28,一个控制逻辑29和四个寄存器。其中,控制逻辑29接收处理器10送来的TAKEN信号20及当前处理器正在执行的指令是否为分支指令的BRANCH信号40(即,BRANCH信号40表示了TAKEN信号20是否有效),产生控制信号分别用于控制寄存器的写入及选择器28。寄存器101和寄存器102的输入来源于增量器27,寄存器103和寄存器104的输入来源于轨道表13,这四令寄存器的输出都被送到选择器28。选择器28的输出通过总线26向轨道表13输出所述第一层分支指令段之后的第一层分支指令段的循迹地址。
具体地,寄存器101和寄存器102用于存放当前分支指令的下一指令段的下一指令段地址及当前分支指令的目标指令段的下一指令段地址、寄存器103和寄存器104用于存放当前分支指令的下一指令段的目标指令段地址及当前分支指令的目标指令段的目标指令段地址。
以下结合图4A~4E对预测器的工作过程进行说明。图4A~图4D为本发明实施例分支指令与分支指令段的树型关系示意图。其中,节点‘A’是一个指令段,‘A’的左子节点‘B’为‘A’的下一指令段、右子节点‘C’为‘A’的目标指令段。同样地,‘B’的左子节点‘D’为‘B’的下一指令段、右子节点‘E’为‘B’的目标指令段;‘C’的左子节点‘F’为‘C’的下一指令段、右子节点‘G’为‘C’的目标指令段;‘D’的左子节点‘H’为‘D’的下一指令段、右子节点‘I’为‘D’的目标指令段;‘E’的左子节点‘J’为‘E’的下一指令段、右子节点‘K’为‘E’的目标指令段;‘J’的左子节点‘Q’为‘J’的下一指令段、右子节点‘R’为‘J’的目标指令段;‘K’的左子节点‘S’为‘K’的下一指令段、右子节点‘T’为‘K’的目标指令段。
此外,图4A~4D中的三角标记对应预测器24中的相应寄存器,表示该寄存器中存储的是哪个指令段对应的循迹地址。图4E为本发明实施例的预测器中四个寄存器值的变化情况示意图。其中,每一列对应预测器24中的一个寄存器,即第1列对应寄存器101、第2列对应寄存器102、第3列对应寄存器103、第4列对应寄存器104;每一行对应了图4A~图4D中一次更新。
首先,以当前指令段为‘A’为例开始运行,此时,‘A’的循迹地址被存储到寄存器101中。如图4E第一行所示。
之后,可以根据存储在寄存器101中的‘A’的循迹地址从轨道表13中读出‘A’的目标指令段‘C’的循迹地址,并存储在寄存器103中,同时使用增量器27对‘A’的循迹地址累加,以得到‘A’的下一指令段‘B’的循迹地址,并存储在寄存器101中。如图4A及图4E第二行所示。
之后,可以根据存储在寄存器103中的‘C’的循迹地址从轨道表13中读出‘C’的目标指令段‘G’的循迹地址,并存储在寄存器104中,同时使用增量器27对‘C’的循迹地址累加,以得到‘C’的下一指令段‘F’的循迹地址,并存储在寄存器102中。还可以根据存储在寄存器101中的‘B’的循迹地址从轨道表13中读出‘B’的目标指令段‘E’的循迹地址,并存储在寄存器103中,同时使用增量器27对‘B’的循迹地址累加,以得到‘B’的下一指令段‘D’的循迹地址,并存储在寄存器101中。如图4B及图4E第三行所示。这样,就完成了预测器24中四个寄存器值的产生,这四个寄存器的值分别对应了A’中分支指令之后第二层分支指令段的循迹地址。
回到图3,当处理器10执行‘A’中的分支指令产生TAKEN信号20时,控制逻辑29根据TAKEN信号20的值产生相应的控制信号对这四个寄存器值进行更新。以TAKEN信号20表示该分支转移没有发生为例,控制逻辑29控制选择器28选择寄存器101和寄存器103中的循迹地址为输出,以产生后续指令段的循迹地址,并丢弃存储在寄存器102和寄存器104中的‘F’、‘G’对应的循迹地址。
具体地,可以根据存储在寄存器103中的‘E’的循迹地址从轨道表13中读出‘E’的目标指令段‘K’的循迹地址,并存储在寄存器104中,同时使用增量器27对‘E’的循迹地址累加,以得到‘E’的下一指令段‘J’的循迹地址,并存储在寄存器102中。还可以根据存储在寄存器101中的‘D’的循迹地址从轨道表13中读出‘D’的目标指令段‘I’的循迹地址,并存储在寄存器103中,同时使用增量器27对‘D’的循迹地址累加,以得到‘D’的下一指令段‘H’的循迹地址,并存储在寄存器101中。如图4C及图4E第四行所示。这样,就根据‘A’中分支指令执行结果完成了预测器24中四个寄存器值的更新,即这四个寄存器的值分别对应了‘B’中分支指令之后第二层分支指令段的循迹地址。
之后,再以处理器10执行‘B’中分支指令产生TAKEN信号20表示该分支转移发生为例,控制逻辑29控制选择器28选择寄存器102和寄存器104中的循迹地址为输出,以产生后续指令段的循迹地址,并丢弃存储在寄存器101和寄存器103中的‘H’、‘I’对应的循迹地址。
具体地,可以根据存储在寄存器102中的‘J’的循迹地址从轨道表13中读出‘J’的目标指令段‘R’的循迹地址,并存储在寄存器103中,同时使用增量器27对‘J’的循迹地址累加,以得到‘J’的下一指令段‘Q’的循迹地址,并存储在寄存器101中。还可以根据存储在寄存器104中的‘K’的循迹地址从轨道表13中读出‘K’的目标指令段‘T’的循迹地址,并存储在寄存器104中,同时使用增量器27对‘K’的循迹地址累加,以得到‘K’的下一指令段‘S’的循迹地址,并存储在寄存器102中。如图4D及图4E第五行所示。这样,就根据‘B’中分支指令执行结果完成了预测器24中四个寄存器值的更新,即这四个寄存器的值分别对应了‘E’中分支指令之后第二层分支指令段的循迹地址。
在上述运行过程中,预测器24比循迹器15提前指向两层以后的指令段,一旦发现所述指令段的循迹地址是BN2,就通过总线30从二级缓存17中读出对应指令块存储到缓冲25中。缓冲25则根据TAKEN信号20选择指令块填充到一级缓存16中,同时将轨道表13中相应分支点内容中的BN2替换为BN1,使得循迹器15的读指针指向该分支点时,读出的目标指令循迹地址是BN1。这样,如果所述指令段从二级缓存17填充到缓冲25及从缓冲25填充到一级缓存16的时间不超过所述填充开始直至处理器执行到该指令段之间的时间差,则处理器所需的指令段(下一指令段和目标指令段)都已存储在一级缓存16中,无论处理器10执行该分支点对应的分支指令是否发生分支转移,都可以从一级缓存16中读取下一条指令,避免了缓存缺失。否则,处理器所需的指令段虽然尚未存储在一级缓存16,但已经在填充过程中,依然能掩盖部分因缓存缺失造成的等待时间。
在本发明中,也可以采用一个预测循迹器实现循迹器15及预测器24的功能。请参考图5,其为本发明实施例的预测循迹器的一框结构示意图。其中,预测循迹器31由预测部分32和裁剪部分33构成,轨道表13只需要根据一个循迹地址输出对应轨迹点内容,即只需要一个读端口。裁剪部分33输出读指针19以实现循迹器15的功能。预测部分32获取第一层分支指令段之后的第二层分支指令段的循迹地址(即n等于2)以实现预测器24的功能。预测部分32的结构及工作过程与前述实施例中的预测器24相同,在此不再赘述。
裁剪部分33包含寄存器105、寄存器106、选择器34、选择器35、选择器36和选择器37。其中选择器34和选择器35分别接收预测部分32中四个寄存器存储的第一层分支指令段之后的第二层分支指令段的循迹地址,并根据TAKEN信号20对这些循迹地址做减半裁剪,并将裁剪后的保留的循迹地址分别存储到寄存器105和寄存器106中。由于分支指令段的下一指令段与该分支指令段循迹地址中的BNX相同且都是BN1X,因此只需要将目标指令段循迹地址中可能出现的BN2X替换为BN1X即可。当缓冲25将存储在其中的指令段(对应BN2)填充到一级缓存16时,可以按一定的替换策略分配一个BN1以供存储该指令段。因此,当选择器35输出的循迹地址是BN2时,则选择器37选择来源于总线44的所述新分配的BN1作为其输出;当选择器35输出的循迹地址是BN1时,则该循迹地址经寄存器106暂存经选择器37选择作为其输出。选择器36则根据TAKEN信号20从寄存器105中存储的循迹地址及选择器37输出的循迹地址中选择一个作为读指针19送往一级缓存16以找到对应指令块供处理器10读取。
同样以图4A~图4E所述情况为例,按之前所述方法完成预测部分32中四个寄存器值的产生,如图4B及图4E第三行所示。此时裁剪部分33从左往右的四个输入分别为‘D’、‘F’、‘E’及‘G’的循迹地址。此时,裁剪部分33中的寄存器105保存了‘B’的循迹地址,寄存器106保存了‘C’的循迹地址,而读指针19的值为‘A’的循迹地址。
当处理器10执行‘A’中分支指令产生TAKEN信号20表示分支转移没有发生时,选择器36选择来源于寄存器105的输入‘B’并作为读指针19的值输出送往一级缓存16以找到对应指令块供处理器10读取,裁剪丢弃了‘C’的循迹地址。同时,裁剪部分33中的选择器34选择来源于寄存器101的输入‘D’并写入寄存器105,选择器35选择来源于寄存器103的输入‘E’并写入寄存器106。这样,保留了‘B’的后续指令段的循迹地址,裁剪丢弃了‘C’的后续指令段的循迹地址。而预测部分32按之前所述方法完成四个寄存器值的更新,如图4C及图4E第四行所示。此时裁剪部分33从左往右的四个输入分别为‘H’、‘J’、‘I’及‘K’的循迹地址。
当处理器10执行‘B’中分支指令产生TAKEN信号20表示分支转移发生时,裁剪部分33中的选择器34选择来源于寄存器102的输入‘J’并写入寄存器105,选择器35选择来源于寄存器104的输入‘K’并写入寄存器106。这样,保留了‘E’的后续指令段的循迹地址,裁剪丢弃了‘D’的后续指令段的循迹地址。同时,选择器36选择来源于寄存器106的输入‘E’并作为读指针19的值输出送往一级缓存16以找到对应指令块供处理器10读取,裁剪丢弃了‘D’的循迹地址。而预测部分32按之前所述方法完成四个寄存器值的更新,如图4D及图4E第五行所示。
这样,预测循迹器31同时实现了循迹器15和预测器24的功能。
在本发明中,缓冲25具有与预测循迹器31近似的结构。请参考图6,其为本本发明实施例的缓冲的一框结构示意图。为了清晰起见,图6中省略了部分模块。在本实施例中,缓冲25包含用于存储指令块的寄存器202、寄存器203、寄存器204、寄存器205和寄存器206,以及选择器38和选择器39。其中,寄存器202存储了预测部分32中寄存器102对应的指令段所在的指令块,寄存器203存储了预测部分32中寄存器103对应的指令段所在的指令块,寄存器204存储了预测部分32中寄存器104对应的指令段所在的指令块,寄存器205存储了裁剪部分33中寄存器105对应的指令段所在的指令块,寄存器206存储了裁剪部分33中寄存器106对应的指令段所在的指令块。由于预测部分32中寄存器101循迹地址对应的指令段就是处理器10正在执行的指令段,而该指令必定已经存储在一级缓存16中,因此在缓冲25中不需要有存储对应寄存器101循迹地址的指令段的寄存器。同理,只要处理器10产生TAKEN信号20,无论分支转移是否发生,寄存器202中的指令块都被写入寄存器205中。
选择器38的功能与裁剪部分33中的选择器35类似,同样受TAKEN信号20控制。当选择器35选择来源于寄存器103的循迹地址时,选择器38相应选择来源于寄存器203的指令块;当选择器35选择来源于寄存器104的循迹地址时,选择器38相应选择来源于寄存器204的指令块。选择器39的功能与裁剪部分33中的选择器36类似,同样受TAKEN信号20控制。当选择器36选择来源于寄存器105的循迹地址时,选择器39相应选择来源于寄存器205的指令块;当选择器36选择来源于寄存器106的循迹地址时,选择器39相应选择来源于寄存器206的指令块。
这样,缓冲25中存储的指令块就可以随处理器10执行各个分支指令的结果依次被裁剪,最后裁剪剩余的指令块是必定会被处理器10执行的指令块,而该指令块则被填充到一级缓存16中。
需要说明的是,在本发明中,缓冲25并不是必须的。当指令处理系统中不包含缓冲25时,根据预测器通过总线30输出的BN2直接将二级缓存17中对应指令块填充到一级缓存16中,并将轨道表13中相应分支点内容由BN2替换为BN1。当指令处理系统中包含缓冲25时,虽然依然需要从二级缓存17中读出同样数量的指令块,但只有确定会被执行的指令块才会从缓冲25填充到一级缓存16中,因此减少了一级缓存16的替换,由此减少了数据污染(即无用指令块占用一级缓存存储块),相应地提高了指令处理系统的性能。
此外,还可以将缓冲25中被裁剪丢弃的指令块暂存在另一个缓冲中,以便在下次可能需要时能较快地被获取。请参考图7,其为本发明实施例的带暂存的另一缓冲的一框结构示意图。在本实施例中,缓冲25的结构与功能与图6实施例中的相同,在此不再赘述。然而,在本实施例中,缓冲25中被裁剪丢弃的指令块被送往另一个缓冲41暂存。由于缓冲41容量较小,且与缓冲25距离接近,因此,一旦再次需要将被裁剪丢弃的指令块填充到缓冲25时,可以先在缓冲41中进行查找匹配,若匹配成功,则可以直接将该指令块读出并通过总线42送往缓冲25,避免了从二级缓存17读取指令块的较长时延,也减少了对二级缓存的访问次数。缓冲41的具体组织结构可以是任何合适的结构,如先入先出缓冲、全相联结构、组相联结构等。
根据本发明所述技术方案,可以将上述实施例所述的结构扩展到具有更多层存储器(缓存)的指令处理系统中。请参考图8,其为本发明实施例的指令处理系统的另一框结构示意图。本实施例中的m等于3,对于其他数值m的情况,也可以以此类推。
在本实施例中,所述指令处理系统除了包含一个处理器10、一个主动表11、一个扫描器12、一个轨道表13、一个相关表14、一个预测循迹器31、一个一级缓存16和一个二级缓存17,还包含一个三级缓存45、一个第二扫描器46。其中,预测循迹器31也可以被如图2实施例中的预测器24及循迹器15代替。一级缓存16、二级缓存17及三级缓存45共同构成了具有包含关系的三级存储系统(即,m等于3)。
主动表11对应于最外层的缓存(三级缓存45),即主动表11中的表项与三级缓存45中的存储块一一对应,每个表项对应一个BN3X,指明了该主动表行对应的三级缓存存储块存储在三级缓存45中的位置,并形成了BN3X与三级缓存存储块的对应关系。主动表11中的每个表项存储了一个三级缓存存储块的块地址。此外,主动表11中的每个表项还包含了该三级缓存存储块是否全部或部分存储在一级缓存16及二级缓存17中的信息。当一个三级缓存存储块全部或部分存储在一级缓存16中时,该三级缓存指令块对应的主动表11表项中存储了对应一级缓存存储块的块号(即BN1中的BN1X)。同样地,当一个三级缓存存储块全部或部分存储在二级缓存17中时,该三级缓存指令块对应的主动表11表项中存储了对应二级缓存存储块的块号(即BN2中的BN2X)。这样,当用一个指令地址在主动表11中进行匹配时,可以得到匹配成功项中存储的BN1X或BN2X,或得到匹配成功项对应的BN3X,或得到匹配不成功的结果。
扫描器46对从三级缓存45送往二级缓存17的指令进行审查,一旦发现某条指令是分支指令,即计算该分支指令的分支目标地址,并将该分支目标地址与主动表11中存储的存储块行地址匹配。若匹配成功,且对应的BN2X存在,则表示该分支目标指令已经存储在二级缓存17中,不需要进行额外操作。若匹配成功,但对应的BN2X不存在,则表示该分支目标指令已经存储在三级缓存45中,但尚未存储在二级缓存17中,则主动表11通过总线47输出该BN3X送往三级缓存45以将包含该分支目标指令的指令块从三级缓存45填充到二级缓存17中。若匹配不成功,则表示该分支目标指令尚未存储在二级缓存17及三级缓存45中,此时,将该分支目标指令地址通过总线18送往外部存储器,同时在主动表11中分配一个表项存储对应块地址,并将外部存储器送来的对应指令块填充到三级缓存45中与该BN3X对应存储块中,同时将该指令块填充到二级缓存17中。这样,无论匹配结果如何,所有从三级缓存45填充到二级缓存17的指令块中分支指令的分支目标指令所在的指令块都被填充到二级缓存17中。
扫描器12则如之前实施例所述对从二级缓存17送往一级缓存16的指令进行审查,一旦发现某条指令是分支指令,即计算该分支指令的分支目标地址,并将该分支目标地址与主动表11中存储的存储块行地址匹配。由于二级缓存17的指令块中分支指令的分支目标指令所在的指令块都已经被填充到二级缓存17中,因此该匹配必定成功。此时,若匹配存在对应的BN1X,则表示该分支目标指令已经存储在一级缓存16中,主动表11输出该BN1X送往轨道表13作为对应分支点内容中的行号,该分支目标指令在其所在指令块中的偏移量就是对应分支点内容中的列号。若不存在对应的BN1X,则表示该分支目标指令已经存储在二级缓存17中,但尚未存储在一级缓存16中,则主动表11输出该BN2X送往轨道表13作为对应分支点内容中的行号,该分支目标指令在其所在指令块中的偏移量就是对应分支点内容中的列号。由此可以按之前实施例所述方法建立正在被填充的指令块对应的轨道。
这样,在本实施例中,轨道表13的轨迹点内容中的循迹地址可以是BN1,也可以是BN2,分别对应指令块存储在一级缓存16和二级缓存17中的情况。预测循迹器31根据从轨道表13中读出的内容控制缓存系统向处理器10提供指令的过程与之前实施例所述相同,在此不再赘述。
与之前实施例相比,本实施例的扫描器46能更早地发现从三级缓存45填充到二级缓存17的指令块中的分支指令,并将对应的分支目标指令填充到二级缓存17中,从而掩盖了三级缓存45向二级缓存17提供指令块的时延。采用相同的方法,还可以扩展到具有更多层缓存的指令处理系统中,进一步掩盖更外层存储器(缓存)向内层存储器(缓存)提供指令块的时延,从而更好地提高指令处理系统的性能。
在本发明中,还可以根据地址变化的范围,选择不同的缓存(存储器)寻址方式及虚实地址转换方式。例如,两条地址连续的指令之间的地址变化范围等于‘1’个字,而分支指令(以下为清晰起见,称为“分支源指令”)与其分支目标指令之间的地址变化范围等于分支转移距离。以一级缓存为例,同一个一级指令块中的指令对应的指令块地址相同,缓存循迹地址中的BN1X也相同,因此在前一指令循迹地址BN1已知的情况下,不必进行主动表匹配,直接得到后一指令的BN1X;对于其他情况,则可能需要进行主动表匹配。类似地,同一个页面中的指令对应的虚拟地址相同,物理地址也相同,因此在前一指令的物理地址已知的情况下,不必进行虚实地址转换模块或快表(TLB)匹配,直接得到后一指令的物理地址;对于其他情况,则可能需要进行TLB匹配。
为了便于描述,在之后的实施例中均以两层缓存(一级缓存和二级缓存)为例进行说明。本发明技术方案也可以应用在更多缓存层次中,具体方法可以参考图8实施例,在本说明书中不再赘述。
请参考图9,其为本发明所述的计算和查找分支目标指令的结构图。根据本发明技术方案,可以用扫描器12计算得到目标指令地址并判断目标指令地址所在位置,然后将相关信息写入轨道表中,以便处理器执行到该指令时使用。
在本实施例中,用于虚地址(virtual address)和实地址(physical address)转换的快表(TLB)位于二级缓存17与更低层次存储器(如:三级缓存45)之间,所以本例中的所有地址都是虚地址。
在本实施例中,所述结构图除了包含一个处理器10,一个主动表91、一个扫描器12、一个轨道表13、一个相关表14、一个循迹器15、一个一级缓存16和一个二级缓存17,还包含一个第一多选器911、第二多选器912和一个存储器902。其中,循迹器15也可以被如图2实施例中的预测器24代替。在此,为了便于说明,将存储器902作为一个独立模块,使其可以用主动表匹配以外的其他方式寻址。此时存储器902和主动表91共同实现前述实施例中的主动表(如图1中的主动表11)的功能。在之后的实施例中,存储器902也被作为一个独立的模块。
主动表91中的表项及存储器902的表项与二级缓存17中的存储块均一一对应,每个表项对应一个BN2X,指明了该主动表行对应的二级缓存存储块存储在二级缓存17中的位置,并形成了BN2X与二级缓存存储块的对应关系。具体地,请参考图10A,其为本发明所述主动表中一个表项的结构示意图。主动表91中的每个表项存储了一个二级缓存存储块的块地址77及其有效位。由于不同程序可以有相同的虚地址,所以主动表中的每个表项还可以包含该虚拟地址对应的线程号(TID)。
存储器902的每个表项中包含了该二级存储块是否全部或部分存储在一级缓存16中的信息。在本实施例中,二级缓存17的一行中的二级指令块对应4个一级指令缓存中的一级指令块,所以主动表91的每个表项还要包含存储一级块号BN1X的存储域(如存储域60、61、62和63),每个存储域包含一个有效位(valid bit),用于表明存储在该存储块中的一级块号BN1X是否有效。除此之外,每个表项中的存储域64存储了当前二级指令块的前一个二级指令块(previous line)的BN2X信息,每个表项中的存储域65存储了当前二级指令块的下一个二级指令块(next line)的BN2X信息,这两个存储块都各有一个有效位用于表明存储在该存储域中的二级块号BN2X是否有效。
再回到图9,循迹器15则由寄存器21、增量器22和选择器23组成,其读指针19(即寄存器21的输出)指向轨道表13中处理器10当前执行的指令之后的第一个分支点,并读出轨迹点内容。请参考图10B,其为本发明所述轨道表中一个表项的内容示意图。轨道表13的表项格式为686或688。686由三部分构成:格式(TYPE),二级块号(BN2X)及二级块内偏移(BN2Y)。其中格式中含指令类型地址,包括非分支指令、直接分支指令、间接分支指令。格式中还包含地址类型,其在686格式中是二级缓存地址BN2。688的格式也由三部分构成:格式(TYPE),一级块号(BN1X)及一级块内偏移(BN1Y)。688格式中指令类型与686的相同,但是地址类型在688中固定为一级缓存地址BN1。
在本发明中,循迹器15读指针19上的BN1被用于对轨道表13寻址以读出轨迹点内容,该BN1还被用于对一级缓存16寻址以读出相应指令供处理器10执行。具体地,循迹器15读指针19指向的轨迹点内容被读出经总线30送往选择器23。若所述轨迹点内容中的指令类型显示该指令不是分支指令,则增量器22的对寄存器21输出的BN1Y值增一,选择器23受TAKEN信号20(此时值为‘0’)控制选择来源于寄存器21的BN1X值和来源于增量器22的增一后的BN1Y作为新的BN1输出送回寄存器21。此时无论BRANCH信号40为何值,寄存器21均更新,使得下一周期寄存器21的值增一,即读指针19指向下一个轨迹点。如此重复,直至读指针19指向一个分支点。也可以是寄存器21的更新受处理器10的状态控制,如当处理器10内停流水线时不更新。
若所述轨迹点内容中的指令类型显示该指令为条件分支指令,则选择器23根据处理器10执行该分支源指令时产生的表示分支转移是否发生的TAKEN信号20进行选择。寄存器21等待BRANCH信号40值为‘1’(即处理器10执行到该分支源指令,此时的TAKEN信号20是有效的)时再更新。此时,若TAKEN信号20的值为‘1’,表示分支转移发生,选择器23选择轨道表13输出的BN1更新寄存器21,即读指针19指向分支目标指令对应的轨迹点。若TAKEN信号20的值为‘0’,表示分支转移没有发生,则选择来源于寄存器21的BN1X值和来源于增量器22增一后的BN1Y作为新的BN1更新寄存器21,即读指针19指向下一个轨迹点。
当循迹器15的读指针指向轨道表13中的一个表项时,先判断该分支源指令是直接分支指令(direct branch)还是间接分支指令(indirect branch)。在此先以直接分支指令为例进行说明。
在本实施例中,一个二级指令块包含4个一级指令块,那么BN2Y的高两位为子块号。每个二级指令块的一个子块相当于一个一级指令块。那么,可以根据子块号来对二级指令块中的一级指令块。例如,子块号“00”对应存储域60,子块号“01”对应存储域61,其余依此类推。
当循迹器15的读指针19指向轨道表13中的一个表项时,通过总线30读出存储在该表项中的值,若发现存储在该表项中的值为一个二级缓存循迹地址(BN2X和BN2Y),则将BN2X作为行地址,BN2Y作为列地址经总线30和多选器901查找存储器902中对应表项,检查存储在该表项中的一级块号BN1X是否有效,以备计算该分支源指令的分支目标指地址时使用。若存储在存储器902对应表项中的一级块号BN1X有效,则表明对应的分支目标指令已经存储在一级缓存16中,将存储在存储器902对应表项中的一级块号BN1X经总线910和多选器911写进轨道表13由循迹器15的读指针19指向的表项中,同时将存储在轨道表13对应表项中的BN2Y值更新为去掉子块号得到的BN1Y值。因此,当处理器10执行到该分支源指令时,可以根据存储在轨道表13对应表项中的一级循迹地址BN1直接从一级缓存16中读取指令,供处理器10使用。若存储在存储器902对应表项中的一级块号BN1X无效,表明对应的分支目标指令没有存储在一级缓存16中,则根据总线30中的二级缓存循迹地址BN2X和BN2Y将包含分支目标指令的二级指令子块从二级缓存17中填充进由置换逻辑提供的BN1X确定的一级缓存16中,等处理器10执行到该条指令时,可以从一级缓存16中直接读取指令供处理器10使用。同时,将由替换逻辑产生的BN1X和总线30中的BN2Y去掉子块号后的BN1Y一起写进轨道表13由循迹器15的读指针19指向的表项中,并将存储器902中对应表项的BN1X值置为有效。与此同时,还要根据总线30中的二级块号BN2X将存储在主动表91中对应的标签读出,送到扫描器12的寄存器中,以备计算该分支源指令的分支目标指令地址时使用,并且将由置换逻辑确定的BN1X存储在扫描器12的寄存器中,以备把计算得到的该二级指令子块中的分支目标地址写入轨道表时,将其作为分支源地址指向轨道表13的某一行中。
当循迹器15的读指针19指向轨道表13中的一个表项时,通过总线30读出存储在该表项中的值,发现该分支源指令是一条间接分支指令,此时由处理器10计算分支目标指令地址,然后经总线908和多选器912送到主动表91中进行匹配。若匹配成功,表明分支目标指令存储在二级缓存17中,此时将匹配成功的BN2X经总线903和多选器901送到存储器902中查找到对应行,将计算得到的分支目标指令的BN2Y经总线905和多选器901送到存储器902中查找到对应列。若存储在该表项中的BN1X值有效,则操作与前述相似。不同点是需要立即由该BN1X值和计算得到的分支目标指令的BN1Y值将存储在一级缓存16中的指令取出送给处理器10使用。若存储在存储器902中对应表项的值无效,则操作与前述相似。不同点时需要立即由该BN2值将二级缓存17中包含该分支目标指令的二级指令子块填充到替换策略确定的一级缓存16中,同时也将该一级块号BN1X及计算得到的分支目标指令的BN1Y写入轨道表13该间接分支指令对应的表项中,同时还要将该分支目标指令送到处理器10中,供处理器10使用。
若匹配不成功,表明分支目标指令不在二级缓存17中,根据计算得到的分支目标地址从更低层次的存储器中取出,填充到由替换策略确定的二级缓存块中,后续操作与前述一致。
为了便于描述,在之后的实施例中,若无特别说明,“分支源指令”均为直接分支指令。
当二级缓存17中的一个二级指令子块填充进一级缓存16中时,扫描器12对从二级缓存17送往一级缓存16的二级指令子块进行审查,当发现该二级指令子块中的某条指令是分支指令,即计算该分支源指令的分支目标地址。
为了降低功耗即减少主动表91的访问次数,在此采用判断分支目标指令所在位置是否超出一级指令块边界、二级指令块边界及二级指令块的下一二级指令块边界的方法来降低访问主动表91的频率。
当扫描器12计算分支目标指令地址时,分支目标所在位置有如下几种情况。
情况1,当分支目标地址和分支源地址在同一个一级指令块中时,即分支目标指令和分支源指令有相同的BN1X。此时,将存储在扫描器中的BN1X和计算得到的BN1Y合并为BN1经总线907和多选器911写进由扫描器12中暂存的BN1X和扫描器12中分支源指令本身的BN1Y经总线922指向的轨道表13的表项中,待执行到该分支源指令时,处理器10可以直接从一级缓存16中直接读取指令供处理器10使用。
情况2,当分支目标地址和分支源地址在同一个二级指令块中时,即分支目标指令和分支源指令有相同的BN2X。此时,将存储在扫描器中的BN2X和计算得到的BN2Y(即分支目标地址中的低位部分)合并为BN2经总线905和多选器901查找存储器902中的对应表项。若存储器902中对应表项中的BN1X值有效,则将该BN1X值和计算得到的BN2Y值去掉子块号后得到的BN1Y合并成BN1经总线910和多选器911写进由扫描器12中暂存的BN1X和扫描器12中分支源指令本身的BN1Y经总线922指向的轨道表13的表项中。若存储器902中对应表项中的BN1X值无效,则将该BN2经总线910和多选器911写进由扫描器12中暂存的BN1X和扫描器12中分支源指令本身的BN1Y经总线922指向的轨道表13的表项中。后续操作与前述一致。
情况3,当分支目标地址在分支源地址的前一个二级指令块或后一个二级指令块中时,将BN2经总线905和多选器901送到存储器902中查找对应表项的前一个或者后一个二级指令块的BN2X,然后将该BN2X经总线910读出和计算得到的分支目标指令的BN2Y一起再指向存储器902的另一个表项中。若该表项中的BN1X值有效,则将该BN1X值和计算得到的BN2Y值去掉子块号后得到的BN1Y合并成BN1经总线910和多选器911写进由扫描器12中暂存的BN1X和扫描器12中分支源指令本身的BN1Y经总线922指向的轨道表13的表项中。若存储器902中对应表项中的BN1X值无效,则将该表项对应的BN2X和计算得到的分支目标指令BN2Y拼接成BN2经总线910和多选器911写进由扫描器12中暂存的BN1X和扫描器12中分支源指令本身的BN1Y经总线922指向的轨道表13的表项中。后续操作与前述一致。
情况4,当分支目标地址在分支源地址的前一个二级指令块或后一个二级指令块之外时,将计算得到的分支目标指令地址经总线907和多选器912送到主动表91中匹配。若匹配成功,后续操作与前述一致。若匹配不成功,根据计算得到的分支目标地址从更低层次的存储器中取出相应指令块填充到由替换策略确定的二级缓存块中,后续操作与前述一致。
为了便于说明,在本实施例中,将指令地址分成四部分。具体地,请参考图11,其为本发明实施例的指令地址和分支转移距离示意图。指令地址的低位表示该指令在一级指令块中的位置(即该指令地址的偏移量部分50),就是对应的BN1Y;指令地址的中间段用于表明一级指令块在二级指令块中的位置(即该指令地址的子块号51),所以子块号51和偏移量50就构成了BN2Y54。子块号51的高一位52用于判断分支目标地址是否超出了分支源地址的下一二级指令块所在位置。指令地址的高位53用于与主动表91中对应的标签进行匹配,得到匹配信息。在指令地址的4个部分衔接处产生三个边界。相应地,将分支目标地址也分成三部分,低位55对应BN1Y,中间部分56对应子块号,高位部分57对应指令地址高位53。
在本实施例中,将分支源指令地址与分支转移距离相加可以得到分支目标地址。在相加的过程中,加法器中与上述边界对应处有三个进位信号。如果分支转移距离在任意一个边界的以上部分都是“0”且该边界处的加法器进位为“0”,表明分支目标地址在对应的边界内,否则就超出了该边界。如果分支转移距离在任意一个边界的以上部分都是“1”且该边界处的加法器进位为“1”,表明分支目标地址在对应的边界内,否则就超出了该边界。
具体地,请参考图12,其为本发明所述扫描器计算分支目标地址的结构图。在本实施例中,所述结构图包含第一寄存器1201、第二寄存器1202、第三寄存器1203、第四寄存器1204、第五寄存器1205、增量器1206、多进位输出加法器1207。
在本实施例中,总线907用于将分支目标地址传送到缓存系统的其他模块。总线907中还包含用于判别地址格式的控制信号。
将分支源地址(1201,1202,1203)与分支转移距离(57,56,55)相加,从加法器中从三个边界上提取进位信号,根据上述方法分别求得表示三个分支目标在边界内的’界内’信号,该三个信号用优先权逻辑使得有效的代表最小数据块的’界内’信号会使得代表更大的数据块的界内信号无效。该最小界内信号被放上总线907以表明地址格式。
若根据上述方法判断出分支目标地址在分支源指令所在一级指令块中时,,将存储在扫描器12中的BN1X经总线1214和计算得到的BN1Y经总线1212拼接成BN1经总线907写进由扫描器12中暂存的BN1X和扫描器12中被扫描的分支源指令本身的BN1Y经总线922指向的轨道表13的表项中,待执行到该分支源指令时,处理器10可以直接从一级缓存16中直接读取指令供处理器10使用。
若判断出分支目标指令在当前分支源指令所在的二级指令块内,则将总线1213,总线1211和总线1212的值拼接成一个BN2地址经总线907送到存储器902中,后续操作与前述图9例一致。
若判断出分支目标指令在当前分支源指令所在的二级指令块的下一个二级指令块内,则将总线1213,总线1211,总线1212拼接成BN2地址经总线907送到存储器902中,查找下一二级指令块相关信息,后续操作与前述图9例一致。
若判断出分支目标指令在前分支源指令所在的二级指令块的下一个二级指令块外,将总线1210,总线1211和总线1212拼接成分支目标地址(PC),经总线907送到主动表91中,后续操作与前述图9例一致。可以根据分支转移距离的符号位判断分支目标地址是在当前分支源地址之前还是之后。
在本发明中,上述技术方案也可以被应用在数据缓存中。请参考图13,其为本发明所述为数据访问指令预先准备数据的一个实施例。在本实施例中只显示了与数据相关的部分,省略了图9中与指令相关的部分。其中,处理器10,主动表91、相关表14、循迹器15、第二多选器912和存储器902均与图9实施例相同。而本实施例中的两层缓存均是数据缓存:一级数据缓存116和二级数据缓存117。此外,数据引擎112对于数据缓存的作用则相当于扫描器12对于指令缓存的作用,且用一个三输入多选器1101代替了四输入的第一多选器901。
在本实施例中,一级数据缓存116中的存储块(即一级数据块)由DBN1X指向;而二级数据缓存117中的存储块(即二级数据块)与主动表91中的表项一一对应,由同一个DBN2X指向。与图9实施例类似,二级数据缓存117中包含了一级数据缓存116中的所有数据,而一个二级数据块可以对应若干个一级数据块。特别地,在本实施例中以一个二级数据块可以对应四个一级数据块。与图9实施例类似,所述一级数据块的DBN1X和二级数据块的DBN2X的对应关系也被存储在存储器902中。这样,可以根据DBN2Y在存储器902中由DBN2X指向的行中找到对应的DBN1X,该DBN1X和DBN2Y的低位部分(即DBN1Y)共同构成DBN1,从而将DBN2转换为DBN1。此外,在本实施例中还包含一个存储器1102。存储器1102的行与一级数据缓存116的一级数据块一一对应,其中每行存储了对应一级数据块所在的二级数据块号及该BN1X在该BN2X中对应的子块号,从而可以将DBN1X转换为DBN2X,并将该子块号与总线30送来的DBN1Y合并构成DBN2Y。
在本实施例中,轨道表13的轨迹点中的指令类型除了分支指令(对应分支点)之外,还包括数据访问指令(对应数据点)。与分支点类似,数据点格式1188由四部分构成:格式(TYPE),一级数据块号(DBN1X)、一级块内偏移(DBN1Y)和数据步长(stride)。其中格式中的数据访问指令类型还可以被进一步分为数据读取指令和数据存储指令。所述数据步长就是处理器10前后两次执行同一数据访问指令时对应的数据地址的差值。
数据引擎112中包含数据步长计算模块,用于对处理器10前后两次执行同一数据访问指令时对应的数据地址相减,得到的差值就是数据步长。根据该数据步长可以预测处理器10以后再次执行该数据访问指令时可能的预测数据地址。在本实施例中,所述预测数据地址所在的一级数据块均被事先填充到一级数据缓存116中。对于数据读取指令,还可以进一步地读出所述预测数据地址对应的数据放上总线125,这样当处理器10执行到该数据读取指令时可以不必访问一级数据缓存116,直接从总线125上得到该数据。对于数据存储指令,则可以将处理器10执行该指令时输出的数据暂存到一个写缓冲(图13中没有显示)中,等待一级数据缓存116空闲时再写入相应位置。下面以数据读取指令为例进行说明。
当循迹器15的读指针19指向该数据点时,根据总线30上读出的数据点内容中的DBN1(即DBN1X和DBN1Y),可以直接对一级数据缓存116寻址读出相应数据放上总线125准备好供处理器10使用。同时总线30上的DBN1及数据步长也被送到数据引擎112。在数据引擎112中可以采用与之前实施例中判断分支目标指令是否位于同一个一级/二级指令块类似的方法判断预测数据地址与本次数据地址的位置关系。具体地,可以将本次数据地址对应的BN1Y与数据步长相加,并根据是否有进位输出进行判断。下面以数据步长为正数为例进行说明,对于其他情况,可以参考图9实施例中操作,在此不再赘述。
与图12实施例类似,数据引擎112还包含一个加法器用于计算DBN1Y或DBN2Y与数据步长的相应部分之和,并判断数据步长相应的高位部分是否为‘0’,以及加法器的结果是否超出边界。具体地,若数据步长中超出DBN1Y的高位部分为全‘0’,且对应DBN1Y的加法没有进位输出,则表示该预测数据地址与本次数据地址位于同一个一级数据块中,此时,可以用本次数据地址对应的DBN1X与加法器计算得到的DBN1Y共同构成DBN1经总线1107、第一多选器911填回轨道表13的该数据点中(该数据点由原读出时的循迹器指针19经延迟后指向),以替换原来的内容。
若对应DBN1Y的加法有进位输出,则表示该预测数据地址与本次数据地址位于不同的一级数据块中。数据引擎112通过总线1121将本次数据地址的DBN1X送到存储器1102读出相应的DBN2X和子块号并通过总线1123送回数据引擎112。所述子块号与总线30送来的DBN1Y合并构成DBN2Y与数据步长相加。若数据步长中超出DBN2Y的高位部分为全‘0’,且对应DBN2Y的加法没有进位输出,则表示该预测数据地址与本次数据地址位于同一个二级数据块中,此时,数据引擎112将总线1123送来的本次数据地址对应的DBN2X和加法器计算得到的DBN2Y共同构成DBN2放上总线1107并经多选器1101送到存储器902中按前例方法转换为DBN1经总线910、第一多选器911填回轨道表13的该数据点中,以替换原来的内容。
若数据步长中超出DBN1Y的高位部分为全‘0’,且对应DBN2Y的加法有进位输出,但在更高位上没有进位输出,表示该预测数据地址位于本次数据地址对应的二级数据块的下一二级数据块中,此时,数据引擎112将总线1123送来的DBN2X放上总线1107并经多选器1101送到存储器902中按前例方法读出下一二级数据块的DBN2并经总线906、第一多选器911送回存储器902转换为DBN1经总线910、第一多选器911填回轨道表13的该数据点中,以替换原来的内容。
若对应DBN2Y的加法在更高位上也有进位输出,则表示该预测数据地址位于本次数据地址对应的二级数据块的下一二级数据块以外的位置。此时,数据引擎112将总线1123送来的本次数据地址对应的DBN2X经总线1107送到主动表91读出对应的二级数据块地址,再经总线920送回数据引擎112,与总线1123送来的子块号及总线30送来的DBN1Y合并得到的DBN2Y共同构成为本次数据地址。之后,将本次数据地址加上数据步长得到预测数据地址,并通过总线1107、第二多选器912送到主动表91匹配。若匹配成功,则得到匹配成功项对应的DBN2X,后续操作如前所述,最终将DBN1填回轨道表13的该数据点中,以替换原来的内容。若匹配不成功,则通过总线18向更低层次存储器输出该预测数据地址以获取相应数据块,后续操作如前所述,最终将DBN1填回轨道表13的该数据点中,以替换原来的内容。
这样,当循迹器15的读指针19再次指向该数据点时,从总线30上读出的数据点内容包含的已经是DBN1,根据该DBN1直接对一级数据缓存116寻址读出相应数据放上总线125准备好供处理器10使用。当处理器10执行到该数据访问指令并产生数据地址时,该数据地址经总线908被送到数据引擎112中与所述预测数据地址进行比较,若比较结果相等,则处理器10直接读取所述已经准备好的数据。若比较结果不相等,则表示该预测数据地址是错误的。此时,该数据地址经总线908被送到主动表91中匹配,后续操作如前所述,从而将正确数据提供给处理器10使用。
如此重复上述过程,可以使得处理器10执行数据访问指令之前,进行数据地址预测,并将相应数据预先填充到一级数据缓存116中,从而减少数据缓存缺失。由于在处理器10再次执行到该数据访问指令时,相应数据已经被放上总线125准备好,因此进一步减少了数据缓存命中时的访问时间。
以下考虑在二级缓存内进行虚拟地址向物理地址映射的实施例。请参考图14,其为虚实转换块表TLB放置在处理器和主动表之间的结构图。在本实施例中,所述结构图除了包含一个处理器10,一个主动表91、一个扫描器12、一个轨道表13、一个相关表14、一个循迹器15、一个一级缓存16和一个二级缓存17,一个多选器911和一个存储器902外,还包含一个TLB1301。
在本实施例中,由于TLB位于处理器10和主动表91之间,所以,主动表91中存储的二级指令块地址是实地址,二级缓存17和一级缓存16的寻址地址也都是实地址,处理器10计算的地址为虚地址,在TLB1301中完成虚实地址转换。
当循迹器15的读指针19指向轨道表13中的一个表项时,表项内容被从总线30读出,如该指令为间接分支指令且指令格式为BN2时,循迹器15停留在该表项,等待处理器10计算分支目标地址。处理器核送出BRANCH信号20以通知系统总线908上地址为有效的虚拟分支目标地址。该地址被送往TLB1301映射为相应的物理地址后送往主动表18。主动表将其映射为相应的BN2后经总线903,多选器901送往存储器902匹配为相应的BN1。如该BN1无效,则如前例以该BN2中的块地址BN2X部分在二级缓存17中寻址读取相应二级缓存子存储块填入一级缓存,所填入的一级缓存块的块号BN1被相应填入存储器902。如上述物理地址在主动表18中未获得匹配,则以该物理地址向低层存储器读取指令块填充由二级替换逻辑指向的二级缓存块,及填充由一级替换逻辑指向的一级缓存块。同时将该一级缓存块的块号BN1填入存储器902中由该二级缓存块号BN2X指向的表项中由二级缓存子块号(即物理地址中相当于BN2Y高位的部分)指向的一级块号域。若上述虚拟地址在TLB1301中未匹配,则产生TLB未命中(miss)信号请求操作系统处理。
存储器902中由上述BN2指向的BN1X与物理地址中的低位BN1Y拼接成BN1存入轨道表13中仍由读指针19指向的,原来存放间接分支目标BN2地址的表项。该表项经总线30读出,经判别其格式为BN1,若其分支类型为无条件分支或分支类型为有条件分支且处理器10输出的分支判断信号40为‘进行分支’,则此BN1被存入寄存器21,出现在总线19上,控制一级缓存16读出相应分支目标指令供处理器10执行。若其分支类型为有条件分支但处理器10输出的分支判断信号40为‘不分支’,则增量器22的输出被存入寄存器21,出现在总线19上,控制一级缓存16读出上述分支源指令的顺序下一指令供处理器10执行。
下一次执行到同一间接分支指令时,总线30上的指令类型为间接分支指令但地址格式为BN1,此时若根据分支类型或处理器10的分支判断进行分支,则可选择将该BN1放上总线19,控制一级缓存16读出相应分支目标指令供处理器10猜测执行,其后并根据该分支目标指令的类型继续猜测执行。由处理器10产生的分支目标虚拟地址经上述映射过程产生的准确BN1被与从轨道表中读出的猜测BN1比较,若相同则继续执行;若不同则将猜测执行的指令及中间结果清除,并将映射所得的准确BN1存入分支源表项,循迹器由此开始执行。
当循迹器15的读指针19指向轨道表13中的一个表项时,表项内容被从总线30读出,如该指令为直接分支指令时,该分支目标地址BN2或BN1已经是正确的地址,可依前例处理。
当二级缓存子块向一级缓存器填充的过程中,其中的指令被扫描器12审查以提取信息填充轨道表13中与一级缓存块相应的轨道。其中分支指令的分支目标由扫描器12负责计算。由于从主动表91中读出的块地址是实地址,所以在扫描器12中计算分支目标地址时需要判断该地址是否超出了TLB的页面(分支目标与分支源不在同一页面)。可以将地址依页面大小分成高位的页面外部分和低位的页面内部分。计算分支目标指令时,可以如前以分支偏移量在页面外部分是否为全‘0’或全‘1’以及在页面边界上的加法器进位判断分支目标是否超出了页面。其中分支目标与分支源同处同一页面内的处理与图9例中相同,在此不再赘述。如果分支目标地址超出了页面,则扫描器12经总线907送出的PC地址有可能是错误的,因为实地址页号不一定连续。所以在分支目标超出页面的情况下要有机制防止错误。以下的数种方式都可以防止上述错误。
第一种方式可以在图14的实施例中直接实施。其方式是当扫描器12在计算一条直接分支指令的分支目标,发现其分支目标超出页面时,将该分支指令的类型转为间接分支,地址格式定为BN2,直接将其写入轨道表13中该直接分支指令的相应表项,而不需查找存储器902以将地址换算成BN1。当该表项被从总线30读出时,被作为一条间接分支指令处理,由处理器10负责计算其分支地址。计算所得的虚地址如前例在TLB1301中映射成实地址,最后在存储器902中映射成BN1存回轨道表中该表项。此后操作与前例相同,即以该表项中BN1地址猜测执行并由处理器10产生的准确分支目标地址验证。
可以进一步优化这种方式,即定义一种新的指令类型以代表上述直接分支指令在轨道表中的相应表项被标记为间接分支的情况,在此称为直标间类型(Direct-Marked-As-Indirect,DMAI)。当直标间BN2-类型从总线30读出时,其猜测执行及地址验证过程与上例同。其后当其分支目标地址被转换为BN1类型后,直标间BN1类型从总线30读出时,系统不对其进行地址验证,而是将该表项视为直接分支类型执行。
第二种方式是在图14的基础上将主动表18中的每个表项中除原有的实地址外增添与实地址相应的虚地址及线程号(TID),请见图15。
请参考图15,其为本发明所述虚实地址转换的另一实现方式结构图。在本实施例中,主动表91包含存储物理地址(PA)的存储块1501,存储虚拟地址(VA)的存储块1502,存储线程号(TID)的存储块1503。TLB1301除了存储现有技术存储的物理地址(PA)和虚拟地址(VA)外,还包含存储物理地址前一页面号在TLB中的索引地址的存储块1510和存储下一页面号在TLB中的索引地址的存储块1511。其他需要的结构如图14中所示。此外,在本实施例中采用与前述类似的方法判断分支目标地址是否在当前页面内。
当由总线30上的BN2X对主动表91寻址时,存储在存储器1501和存储器1502中对应的物理地址和虚拟地址被读出,分别经总线1505和总线1504送到扫描器12中。这样,扫描器除了可以按前例方法直接计算分支目标物理地址以外,还可以根据该虚拟地址计算分支目标虚拟地址。
若扫描器12中计算出的分支目标地址在当前页面内,则将计算得到的分支目标地址经总线1506、多选器1508和总线1509送到主动表91的存储器1501中匹配,后续操作与前述一致。
若扫描器12中计算出的分支目标地址在当前页面的相邻页面内,则将计算得到的分支目标地址经总线1506、多选器1508和总线1509送到主动表91的存储器1501中匹配,并将地址类型按图12例同样方式标出是在下一个或者上一个页面内,读出匹配的该表项中的1510或1511,然后根据1510或1511的值查找TLB1301中的对应行,后续操作与前述一致。
若扫描器12中计算出的分支目标地址不在当前页面内,则将计算得到的分支目标虚地址经总线1512送到TLB1301中匹配。若匹配成功,将对应的分支目标物理地址经总线1507、多选器1508和总线1509送到主动表91中匹配,后续操作与前述一致。若TLB1301匹配不成功或者存储器1501匹配不成功,后续操作与前述一致。
第三种方式请参考图16,其为本发明所述虚实地址转换的另一结构图。主动表91除了包含存储物理地址的存储块1601外,还包含存储指向TLB对应行的指针(PT)的存储块1602,且没有包含存储虚拟地址的存储块,其他结构与图15所述结构相同。
当由总线30上的BN2X对主动表91寻址时,存储在存储器1601中的对应物理地址经总线1505被送到扫描器12中。当计算得到的分支目标地址在当前页面内,操作与前述一致。当计算得到的分支目标地址超出了当前页面,那么根据总线BN2X的值读出存储在存储器1602中的指针经总线1605指向TLB1301中的相应行,将存储在TLB1301该行中的虚拟地址读出,经总线1604送到扫描器12中计算分支目标地址,然后将计算出的分支目标虚地址经总线1512送到TLB1301中,后续操作与前述一致。
第四种方式请参考图17,其为本发明所述计算分支目标地址的另一结构图。在本实施例中,主动表91包含一个存储虚拟地址的存储块1701和一个存储虚拟地址的存储块1702。存储块1701中存储了虚拟地址及其对应的线程号(TID)。存储块1702的组织形式可以是直接映射、组相联或全相联中的任意一种。在本结构图中不再需要TLB,而是在主动表91中完成虚实地址转换。
当由总线30上的BN2X对主动表91寻址时,存储在存储器1701和存储器1702中虚拟地址和物理地址被读出分别经总线1705和1703送到扫描器12中计算分支目标虚拟地址和分支目标物理地址。若分支目标物理地址没有超出当前页面,则将计算得到的分支目标物理地址经总线1708送到存储器1702中匹配,后续操作与前述一致。若分支目标物理地址超出了当前页面,则将分支目标虚拟地址经总线1506、多选器1508和总线1509送到存储器1701中匹配,若存储器1701或存储器1702中匹配不成功,则按前例处理。这样就可以得到相应分支目标BN2,后续操作与前述一致。
第五种方式请参考图18,其为本发明所述虚实地址转换的另一结构图。在本实施例中,所述结构图与图9类似。不同点在于主动表91中每个表项存储有与二级指令缓存17中对应二级指令块相应的虚地址及实地址的标签部分,每个表项都有一个有效位。存储的虚拟地址中还包含线程号(TID)。主动表的组织方式可以是直接映射也可以是组相联也可以是全相联的方式。此外,以总线1801将主动表91中的实页号送到扫描器12供分支目标地址计算;以总线1803将主动表91中的虚页号及标签低位送到扫描器12供分支目标地址计算。主动表91匹配所用的实页号由扫描器12经总线907直接送入,所用的虚地址由总线1807送入。总线1807有两个来源分别是来自于扫描器12的总线907和来自于处理器10的总线908。
主动表91在本实施例中起到的是与传统缓存系统中标签(TAG)单元以及块表(TLB)相同的作用。图19显示了主动表91中的具体结构与对该主动表寻址的地址格式1900。此例中以直接映射组织方式为例说明,路组方式与全相连方式与此类似。地址格式1900从高位到低位(从左到右)被分为数段,其中1988为线程号,1987为页号(可以是虚地址页号,也可以是实地址页号),1986为标签低位,1987与1986拼接为地址标签,1985为索引位,1984为二级缓存子块号(即BN2Y高位),1983为一级缓存块内偏移BN1Y。其中,标签低位1986,索引位1985,二级缓存子块号1984及一级缓存块内偏移BN1Y无论是虚地址还是实地址都是一样的,所以可以共用。以虚地址寻址时还要使用线程号1988以区别不同线程的相同虚地址。
主动表91中含有主动表存储器1960,由复数个表项构成,其表项与二级缓存块中的存储块一一对应。表项的读取由总线1939(BN2X格式)寻址,表项的写入由二级缓存置换逻辑按置换算法(如LRU)提供地址。每个表项中的1908域为虚地址的线程号,1906域为虚地址页号,1902域为物理地址页号,1904域为标签中低位,为虚、实标签共用部分。即1908、1906与1904拼接构成虚地址标签,1902与1904拼接构成实地址标签。要与主动表91中内容进行比较的虚地址被放上总线1807,要进行比较的实页号被放上总线907。总线1807上的地址包含线程号1988,虚页号1987,标签低位1986及索引位1985,其中索引位用于直接映射或组相连组织形式的主动表的表项寻址,在全相连组织形式中该索引位也被用于与存储器1960的内容比较。因为总线1807上内容来自总线907,所以总线907上有地址的所有域,包括虚页号与实页号,以及二级缓存子块号1984及BN1Y1983。
此外,主动表91中还有一个抗混叠表(anti-aliasingtable)1950,由复数个表项组成。其每个表项中含有存储线程号与虚页号的域1910及含有一个BNX2值的域1912。该BNX2是二级缓存器17中存储的该虚页面内的一个二级缓存块的块号。混叠表1950的读取地址由总线1939提供,其写地址由一个混叠表专用的置换逻辑按置换算法(如LRU)提供。抗混叠表与传统的TLB作用有所不同,其中仅保存混叠时对应同一个物理页号在运行时第二个出现的虚页号及其后的虚页号。此外,还有比较器1922、1924、1926及1928;寄存器1918、1919;以及多选器1932、1934、1936、1938及1940。其中,多选器1932选择比较器1924的输出及该输出经寄存器1919存储后的输出。多选器1934选择主动表1960中实页号1902域与总线1909的输出。多选器1936选择寄存器1918的输出与总线907的输入。多选器1938选择来自于总线1807上索引位1985及来自于抗混叠表中1912域所存储的索引位产生总线1939。多选器1940选择寄存器1918的输出或总线1909的输入放上总线18。
以总线1807上的索引位1985寻址轨道表91的存储器1960中读出与索引位地址相应的一个表项,其中1908,1906,1904,及1902域,分别被送到比较器1922、1924与1926与总线1807上的其他域及总线907上的实页号比较。比较器1922负责将从1908及1906域中读出的线程号及虚地址页号与从总线1807送来的线程号1988及虚地址页号1987进行比较,其比较结果以信号1901送出;如比较相同,其意义为TLB虚地址命中。比较器1924负责将从1904域中读出的标签低位部分与从总线1807送来的虚地址中标签低位部分1986进行比较,其比较结果与1911进行‘与’操作后,从信号1903送出;如结果为‘1’,其意义为缓存虚地址命中。同理,比较器1926负责将多选器1934选择的从1902域中读出的实地址页号与经多选器1936选择的从总线907送来的实地址页号部分1987进行比较,其比较结果从信号1907送出;如比较相同,其意义为TLB实地址命中。因为虚地址标签与实地址标签的低位1986是相同的,所以比较器1924的比较结果经多选器1932选择与信号1907进行‘与’操作后,从信号1905送出,如结果为‘1’,其意义为缓存实地址命中。
现结合图18、图19解释本实施例的操作。当一个二级缓存子块被填进一级缓存时,该块中的指令被扫描器12审查。被审查的指令的类型如前例被填充进轨道表13中与指令相应的表项。如被审查的指令为分支指令,扫描器12计算其分支目标地址。若分支目标指令与分支源指令在相邻的二级缓存块内,其分支目标地址依前例处理。若分支目标超出了上述边界,则扫描器12将实地址或虚地址经总线907送往主动表91匹配以产生相应的BN2地址,供送往存储器902匹配为BN1存储到轨道表13中。此外,主动表91也依其内部储存状态及来自总线907与总线1807的输入决定对二级缓存及主动表本身的操作。其中扫描器12输出的总线907能同时提供用以比较的完整虚地址与实地址页号。其中的实地址页号被直接送往轨道表91与其中的实地址页号匹配,其中的虚地址部分由多选器1806选择后经总线1807送往轨道表与其中的虚地址匹配。多选器1806的另一个输入来自处理器10经总线908送来的分支目标虚地址。
首先,由扫描器12判断是否超出了页面,判断方法如前例所述。如果没有超出页面,则扫描器12将实地址块号1987,标签低位1986,索引位1985放上总线907送往主动表91匹配。此外,二级缓存子块号1984及一级缓存块内偏移1983也被放上总线907经多选器1806放上总线1807备用。索引位1985(BNX2)被多选器1938选择放上总线1939。以总线1939上的BN2X为地址从存储器1960中读出一个表项与总线907及总线1807上的地址匹配。其中,总线907上的实页号1987经多选器1936选择与经多选器1934选择的表项中1902域中的实页号在比较器1926中比较,其结果为1907;总线1807上的标签低位1986被多选器1806选择后放上总线1807与表项中1904域中的标签低位经比较器1924比较后,其结果经多选器1932选择与结果1907进行‘与’操作。当该‘与’操作的结果1905为‘1’时,表明该分支目标指令已存储在二级缓存17中,此时将总线1939上的索引位(即BN2X)以及总线1807上的二级缓存子块号1984拼接经总线903,多选器901送往存储器902以映射相应的BN1X,并将映射所得的BN1X结合总线907上的BN1Y1983如前例写入轨道表13中与该分支源指令相应的表项。如存储器902中无相应的BN1X,则如前例将该BN2X与总线1807上的BN2Y(1984、1983)拼接成BN2写入轨道表13中与该分支源相应的表项。该轨道表13的表项由暂存在扫描器12中的一级缓存中正被写入的一级缓存块号BN1X和该分支源对应的BN1Y经总线922共同指向。此情形称为情形1。
当匹配结果1905为‘0’,而匹配结果1907为‘1’时,表明该分支目标指令尚未存储在二级缓存17中,但是TLB的实页号命中,即实页号已知。此时将总线907上的实页号经多选器1936,1940选择与总线1807上的标签低位1986及索引位1985拼接形成实地址,送往低层存储器读取相应指令块后存入二级缓存17中由二级缓存替换逻辑指定的二级缓存块。并以该二级缓存块的块号BN2X如前例产生BN2写入轨道表13中与该分支源指令相应的表项。此时并以总线907,及总线1807上的地址写入该BN2X指向的主动表存储器160中的相应域。此情形称为情形2。
如果扫描器12判断分支目标地址超出页面,则扫描器12将线程号1988,虚地址块号1987,标签低位1986,索引位1985放上总线907经多选器1806选择经总线1807送往主动表91匹配。此外,二级缓存子块号1984及一级缓存块内偏移1983也被放上总线907经多选器1806选择放上总线1807备用。当匹配结果1903为‘1’时,表明该分支目标指令已存储在二级缓存17中,此时如前例以总线1939上的BN2X以及总线1807上的二级缓存子块号1984在存储器902映射相应的BN1X。亦如前例将BN1,或映射无效时将BN2存入轨道表13中的表项。此情形称为情形3。
当匹配结果1903为‘0’,而匹配结果1901为‘1’时,表明该分支目标指令尚未存储在二级缓存17中,但是TLB的虚页面号命中,即虚页面号已知。因为该命中的表项中的实页号域1902即存有正确的实页号。此时将该命中表项的实页面号经多选器1934,1940选择与总线1807上的标签低位1986及索引位1985拼接形成实地址经总线18送往低层存储器读取相应指令块后,存入二级缓存17中由二级缓存替换逻辑指定的二级缓存块。并以该二级缓存块的块号BN2X如前例写入轨道表13中与该分支源指令相应的表项。并以该二级缓存块的块号BN2X如前例产生BN2写入轨道表13中与该分支源指令相应的表项。此时并以总线907,及总线1807上的地址写入该BN2X指向的主动表存储器160中的相应域。此情形称为情形4。
当匹配结果1903为‘0’,匹配结果1901也为‘0’时,表明该分支目标指令尚未存储在二级缓存17中,且轨道表存储器1960中无相应虚页号。此时,将比较器1924的比较结果(标签低位的比较)暂存于寄存器1919,也将总线18上读出的表项中实页号暂存入寄存器1918备用。仍以总线1939寻址在抗混叠表1950中读出相应表项。表项中的线程号及虚页号域1910与总线1807上的线程号1988及虚页号1987在比较器1928中此较。如该比较结果为命中,则表项中的二级缓存块号(BN2X)域1912经总线1911被送往多选器1938选择为新的索引值1939指向主动表存储器1960。在此新的索引值寻址下,从主动表存储器1960中一个表项中读出其中的实页号域1902经多选器1934选择,与经多选器1936选择的先前暂存于寄存器1918中的实页号比较。并将该比较结果1907与经多选器1932选择的先前暂存于寄存器1919的比较结果相‘与’,如该结果1905为‘1’,则表示从抗混叠表1950中读出的虚页号已有对应的实页号存于主动表存储器1960中,且由于该实页号同一表项中的标签低位域1904与待匹配地址中的标签低位1986相同,表示该指令块已在二级缓存中。此时,只要经总线将总线1939上的BN2X如前经总线903送往存储器902匹配BN1X,然后送到轨道表13中存储即可。这种情形称之为情形5。这样操作避免了混叠(aliasing)与缓存污染(cache pollution)。
如果上述比较结果1905为‘0’,表示含有从总线1807送进的分支目标虚地址对应指令的指令块尚未存储在二级缓存17中。此情形为缓存缺失,称为情形6。此时将经多选器1936,1940选择的暂存于寄存器1918中的物理页号,与总线1807上的标签低位1986及索引位1985拼接为实地址经总线18送往低层存储器读取相应指令块,填入由二级缓存置换逻辑指定的二级存储块。同时,总线1807上的线程号1988、虚页号1987,标签低位1986以及经多选器1934、1940选择的暂存在寄存器1918中的实页号分别被写入主动表存储器1960中与该二级存储块对应表项中的相应域1908,1906,1904及1902。同时,该二级存储块的地址BN2X被放上总线903送往存储器902匹配BN1X,并将其结果(BN1或BN2)送入轨道表13储存。
又或者上述抗混叠表内容与总线1807上虚页号在比较器1928中比较的结果为不命中。则表示没有任何与总线1807上虚页号相应的实页号存储在主动表存储器1960中。此情形等效于传统缓存系统中的TLB缺失,在此称为情形7。此时,处理器产生TLB缺失异常,操作系统按现有技术处理该异常,寻找与总线1807上的虚地址相应的实页号,作TLB填写操作。该实页号从总线1909进入主动表91经多选器1934选择与经多选器1936选择的暂存于寄存器1918的实页号比较。比较结果1907与经多选器1932选择的暂存于寄存器1919的标签低位比较结果作‘与’操作,产生比较结果1905。如该结果为‘1’,表示有复数个线程号、虚页号映射到同一个实页号,即混叠情形,在此称为情形7。此时,将总线1807上的线程号1988与虚页号1987写入抗混叠表1950中由其置换逻辑指定的表项中的1910域。也由多选器1938选择总线1807上的索引域BNX2经总线1939写入抗混叠表1950中的1912域。同时,将总线1939上的索引域1985(BNX2)与总线1807上的二级缓存子块号1984拼接经总线903送往存储器902,如前例匹配BN1X并将结果写入轨道表13。
如上述比较结果1905为‘0’,即表示没有混叠,但含有从总线1807送进的分支目标虚地址对应指令的指令块尚未存储在二级缓存17中。此情形也是类似缓存缺失,称为情形8。此时将经多选器1934,1940选择的来自总线1909的物理页号与总线1807上的标签低位1986及索引位1985拼接为实地址经总线18送往低层存储读取相应指令块,填入由二级缓存置换逻辑指定的二级存储块。同时,总线1807上的线程号1988、虚页号1987,标签低位1986以及经多选器1934、1940选择的总线1919上的实页号分别被写入主动表存储器1960中与该二级存储块对应表项中的相应域1908,1906,1904及1902。同时,该二级存储块的地址BN2X与总线1807上的二级缓存子块号1984拼接后,被放上总线903送往存储器902匹配BN1X,并将其结果送入轨道表13储存。以上8种情形为本实施例在扫描器12对填充至一级缓存的指令扫描产生分支目标地址,当该分支目标地址与分支源不在相邻的二级缓存块中时可能发生的情况。其中,1—2为实地址匹配;3—8为虚地址匹配。
循迹器15的读指针19控制从轨道表13的读端口总线30上读出一个表项内容。当该表项为间接分支类型时,读指针19停留在该表项等待。此时,由处理器10产生的分支目标虚地址,经总线908,多选器1806选择放上总线1807送往主动表中匹配,其匹配过程与上述情形3—8相同。不同点在于此时其相应的分支目标指令即将被执行。由主动表91匹配所得的BN2,如果未能在存储器902中匹配到有效的BN1X分支目标(即分支目标指令尚未存储在一级缓存中),该分支目标所在的二级子缓存块要立刻被填充进一级缓存,其相应的一级缓存块地址被填入轨道表13中以便供处理器10执行。该BN1X也要被存储进902中由该BN2指向的表项以供后续匹配使用。该二级缓存的子缓存块填充一级缓存器时处理方式如上,其中需要用到的该二级子缓存块的对应虚页号,标签低位及实页号由该BN2指向的主动表1960中表项经总线1803及总线1801提供给扫描器12。其他如索引位等可由总线908直接向扫描器12提供,其在图18中为清晰易读并未画出。
当由轨道表输出总线30读出直接分支类型,其地址格式为BN2时,其相应的指令已经至少在二级缓存中,所以不经由主动表91处理,直接将该BN2经总线30,多选器901送往存储器902如前例匹配BN1即可。如果未能在存储器902中匹配到有效的BN1X分支目标(即分支目标指令尚未存储在一级缓存中),其所在的二级子缓存块都要立刻被填充进一级缓存,其填充时处理方式如上,其中需要用到的该二级子缓存块的对应虚页号,标签低位及实页号由BN2指向的主动表1960中表项经总线1803及总线1801提供给扫描器12。其他索引位等可由总线30直接向扫描器12提供。
图18、19以指令缓存为例。数据缓存也可以使用同样的方法和主动表91。与指令缓存的主要不同,是数据缓存由数据引擎代替扫描器12。当从轨道表中读出数据缓存地址DBN1时,即以该地址控制一级数据缓存向处理器10提供数据,并将该DBN1送往数据引擎与读出的表项中含有的步长相加以获得猜测性地址。数据引擎在猜测性读地址(Load address)或写地址(Store address)超出边界时,将相应的实地址或/与虚地址送往主动表91匹配,在主动表中作与图18、19例中相同的操作后产生DBN2送往存储器902匹配DBN1。然后将DBN1或DBN2送往轨道表中存储进原读出的表项。过程相似,在此不再赘述。
请参考图20,其为本发明所述完整系统的一个实施例。在本实施例中的处理器10,主动表91、扫描器12、相关表14、循迹器15、存储器902、一级指令缓存16、一级数据缓存116以及数据引擎112均与图13和图18实施例相同。不同之处在于,本实施例中的二级缓存217是指令和数据共享的二级缓存,其中的二级存储块可以存储指令或数据。相应地,主动表91中存储了二级缓存217中二级存储块对应的块地址,其表项与二级缓存217中的存储块一一对应,用同一个BN2X指向。由于扫描器12输出的目标指令地址和数据引擎112输出的预测数据地址都可能被送到主动表91匹配,因此用一个三输入的多选器1112代替了第二多选器912。又由于扫描器12输出的BN和数据引擎112输出的DBN都可能被送到存储器902或轨道表13,因此用一个五输入的多选器1105代替了四输入的多选器901,用一个三输入的多选器1111代替了二输入的第一多选器911。
在本实施例中,主动表91如图18和图19实施例所述,内部包含了TLB的功能,可以实现虚实地址转换。需要说明的是,虽然在本实施例采用了图18和图19实施例的TLB实现方式。然而,也可以使用前述其他任何一种TLB实现方式,并参考前例对所述结构进行相应改动。此外,为了便于显示,在图20中用总线1120代表了图18实施例中的总线1801和1803。
在本实施例中,当处理器10执行到间接分支指令时和执行数据访问指令且发现预测数据地址不正确时均通过总线908、多选器1112将分支目标地址或数据地址送往主动表91匹配,后续操作如前例所述。而主动表91则根据扫描器12通过907送来的BN2X或数据引擎112通过总线1107送来的DBN2X输出相应的二级指令块地址或二级数据块地址经总线1120送到扫描器12或数据引擎112。除此以外,所有与指令相关的操作过程均与图18和图19中的相同,所有与数据相关的操作过程均与图13、图18或图19中的相同。特别地,在数据引擎112中包含了是否超出页面的判断逻辑。当预测数据地址位于本次数据地址同一个二级数据块或该二级数据块的前一个或后一个数据块时,操作过程如图13所述。当预测数据地址超出该范围时,数据引擎112输出本次数据地址对应DBN2X经总线1107送到主动表91读出对应的虚拟地址/物理地址后再经总线1120送回数据引擎按图19实施例所述方法进行后续操作。其余操作过程均可参考前例进行,在此不再赘述。
此外,在本说明书中轨道表13中的数据点包含的均是DBN1。然而,也可以对所述结构进行修改,使得轨道表13中的数据点可以包含DBN1或DBN2。例如,当预测数据地址对应的数据已经存储在二级数据缓存中,但尚未存储在一级数据缓存中时,可以将相应的DBN2作为轨迹点内容写入该数据点中,等到循迹器15读指针19指向该数据点时,从二级数据缓存读出相应数据块填充到一级数据缓存中,并将相应数据旁路送给处理器10使用。具体操作过程可以参考前述实施例,在此不再赘述。
在本发明所述的边界判断中,可以有多种方法对分支目标指令地址(或下次数据地址)是否位于分支源指令(或本次数据)所在存储块中进行判断。基本地,可以如图12所示,一将分支转移距离中对应BN2Y的部分与分支源指令的BN2Y相加得到的结果中对应BN2Y的部分与其他部分的边界称为CH1。以分支转移距离是正数为例,若分支转移距离在对应BN2Y以外部分为全‘0’,且所述加法在CH1处的进位输出为‘1’,则此时分支目标指令必定位于分支源指令所在二级指令块的后一个二级指令块中。
然而,若分支转移距离在对应BN2Y以外部分中最低位为‘1’时,分支目标指令也有可能位于分支源指令所在二级指令块的后一个二级指令块中。例如,当分支转移距离中,除了对应BN2Y以外部分中最低位为‘1’,其他所有位均为全‘0’时,在CH1处没有进位输出,此时分支目标指令也是位于分支源指令所在二级指令块的后一个二级指令块中。因此,可以将所述CH1处的进位输出和分支转移距离在BN2Y以外部分中最低位共同作为判断分支目标指令是否位于分支源指令所在二级指令块的后一个二级指令块的依据。所述方法也可以被应用到分支转移距离为负数的情况中。
进一步地,扩展到更多层次缓存的情况中,可以对分支源指令本身在某一层次缓存对应的块内偏移量(如BN1Y、BN2Y……)以外部分中的低位与分支转移距离中的相应位相加,判断所述分支目标是否位于该层次缓存中所述分支源指令所在的指令块的前一或后一个指令块中。类似地,还可以对本次数据本身在某一层次缓存对应的块内偏移量(如DBN1Y、DBN2Y……)以外部分中的低位与数据步长中的相应位相加,判断所述下次数据是否位于该层次缓存中所述本次数据所在的数据块顺序地址的前一个或后一个数据块中。
在本发明中,扫描器对被填充到高层次缓存中的指令提取出指令类型,并对分支指令计算分支目标地址,其实质是提取存在于程序中的控制流(controlflow)信息。所述提取的控制流信息至少包括指令类型。对于分支指令,其提取的对应控制流信息中还包含了分支目标指令地址,该指令地址在主动表中被映射为循迹地址(即缓存器地址)。所述控制流信息以类型与循迹地址的方式被存储在轨道表中。轨道表的分支点本身对应分支源指令的循迹地址,其中存储了分支目标指令的循迹地址,且分支源指令的顺序下一条指令所在的位置已经隐含在轨道表的组织形式中,因此构成了分支源指令的后续指令的两个可能的分叉。根据本发明技术方案,当循迹器读指针指向的轨迹点中的指令类型为非分支指令时,读指针移向顺序下一个轨迹点;当循迹器读指针指向的轨迹点中的指令类型为无条件分支指令时,读指针移向分支目标轨迹点;当循迹器读指针指向的轨迹点中的指令类型为条件分支指令时,根据处理器产生的TAKEN信号,读指针移向顺序下一个轨迹点或分支目标轨迹点。循迹器读指针可以从任何一个分支点出发,根据轨迹点类型和/或处理器对分支点的执行情况,到达其顺序地址后续指令中的第一个分支点或其分支目标指令及其后指令中的第一个分支点。因此,在轨道表中的控制流信息以二叉树形式存在,其中每个分支点对应一条分支指令。所述二叉树是完整的二叉树,包含了相邻分支点之间的路径信息,从而可以由一个分支点出发到达其两个分叉上各一个相邻的后续分支点。
此外,图13实施例中的存储器902与图9实施例中存储器902类似,其中每行除了包含一级数据块的DBN1X和二级数据块的DBN2X的对应关系外,还包含了每个DBN2X的前一个二级数据块或后一个二级数据块在主动表91中的位置信息。这样,可以如图9实施例那样,当下次数据地址位于本次数据地址所在二级数据块的前一个或后一个数据块时,由所述本次数据地址所在二级数据块的块号作为寻址地址对存储器902寻址,读出存储在其中的前一个或后一个数据块号,从而减少主动表匹配次数。
进一步地,根据本发明技术方案,当主动表中存储连续地址的前一存储块(指令块或数据块)和后一存储块的位置信息时,不但可以根据该信息找到分支源指令或本次数据所在存储块的前一或后一存储块中的分支目标指令或下次数据,还可以重复相同方法若干次,以找到位于更远位置的存储块中的分支目标指令或下次数据,减少主动表匹配次数。例如,如图9实施例中,若扫描器根据其中加法器的计算结果(即进位输出情况),发现分支目标指令位于分支源指令所在指令块之后连续地址的第二个指令块,则扫描器输出所述分支源指令对应的BN2X对主动表寻址,读出对应的后一指令块的BN2X,再根据该后一指令块的BN2X对主动表寻址,读出该后一指令块的后一指令块的BN2X,即分支源指令所在指令块之后连续地址的第二个指令块,从而用两次寻址的方式避免了主动表中的匹配。对于分支目标指令离分支源指令更远的情况,只要两者之间所有指令块的所述前一或后一指令块位置信息均存在且有效,即可通过多次寻址的方式,最终从主动表中读出分支目标指令对应的BN2X。对于更多层缓存的情况,以及对于数据缓存,也可以用类似方法操作,在此不再赘述。此外,在本发明所述的虚实地址转换模块,或包含虚实地址转换关系的主动表中,也可以用同样方法找到更远的页面(如前一页面的前一页面,或后一页面的后一页面),具体操作在此不再赘述。
在本发明中,对于间接分支指令,可以等待处理器执行到该指令时产生分支目标指令地址,再将该地址送往主动表转换为循迹地址,或将该地址经TLB转换后送往主动表转换为循迹地址。由于在本发明中,不同格式的循迹地址对应不同层次的缓存,其中的BNX对应相应层次缓存中的一个存储块,BNY对应该存储块中的一个存储单元,因此,循迹地址就是缓存地址。即,可以根据循迹地址直接在相应层次的缓存中找到对应的指令,从而避免了标签匹配。然而,也可以增加一个额外的专用模块,由该专用模块生成间接分支目标指令地址。例如,若间接分支目标地址是由寄存器值加上立即数产生,则可以由该专用模块从处理器获取寄存器堆中相应寄存器值,并由扫描器将提取到的间接分支指令中的立即数送到该专用模块,由该专用模块对两者相加,从而得到间接分支目标地址。或者,可以在该专用模块中包含寄存器堆的副本,当处理器中的寄存器堆有寄存器更新时,同时更新该副本中的相应寄存器,因此,只需要将扫描器提取到的间接分支指令中的立即数送到该专用模块,即可计算间接分支目标地址。由此,所有分支指令的分支目标地址均不由处理器产生。
在本发明中,根据分支目标指令或下次数据位于缓存层次的不同,轨道表中的轨迹点内容包含的循迹地址也不同。以分支点为例,当其分支目标指令位于一级缓存中时,则该分支点中包含的循迹地址为BN1;当其分支目标指令位于二级缓存中时,则该分支点中包含的循迹地址为BN2;当其分支目标指令位于其他层次缓存时,也可以此类推。数据点中循迹地址的情况也类似。此外,由于本发明提前将分支目标指令或下次数据至少填充到最低层次的缓存中,因此轨迹点中只包含能直接对各层次缓存寻址的循迹地址(BN或DBN),而不会包含主存储器地址(如指令地址PC或数据地址)。扫描器输出的地址则可以是循迹地址或指令地址,而数据引擎输出的地址也可以是循迹地址或数据地址。以图9实施例中的扫描器12为例,其通过总线907输出的可以是BN1、BN2或分支目标指令地址。具体地,当分支目标指令位于分支源指令同一个一级指令块中时,扫描器12通过总线907直接输出分支目标指令对应的BN1,用于写入轨道表13;当分支目标指令位于分支源指令同一个二级指令块中的不同一级指令块时,扫描器12通过总线907输出BN2,用于到存储器902中转换为分支目标指令对应的BN1后再写入轨道表13;当分支目标指令位于分支源指令所在二级指令块的前一或后一个二级指令块时,扫描器12通过总线907输出BN2,用于到主动表91中读出所述前一或后一个二级指令块的BN2X再如前例得到分支目标指令对应的BN1后再写入轨道表13;对于其他情况,扫描器12则通过总线907输出计算得到的分支目标指令地址到主动表91匹配,并如前例得到对应的BN1后再写入轨道表13。因此,扫描器12在完成对分支目标指令所在位置判断后,可以产生一个地址类型号,所述地址类型号用于表示总线907上的是哪一类地址,从而控制相应模块进行后续操作。例如,在本实施例中,可以用一个2位的地址类型号表示上述4种情况。总线907在输出所述循迹地址或分支目标地址的同时,也输出该地址类型号到主动表91、存储器902、轨道表13等相关模块。这样,即可用同一总线907传送不同类型的地址,以减少总线的数目。
对于本发明中其他实施例,则可以用更多位数的地址类型号代表更多种情况。例如,对于图17实施例,总线1506上的地址格式除了BN1和BN2(包含同一个二级指令块和前一或后一个二级指令块三种情况)外,还可以是虚拟地址或物理地址,因此共6种情况,可以用3位的地址类型号表示。对于更多层次缓存(即有更多种循迹地址)的情况,以及数据引擎输出的地址情况,均可按此类推,在此不再赘述。
此外,根据本发明技术方案,当分支目标指令地址或下次数据地址位于分支源指令地址或本次数据地址同一页面中时,还可以有更灵活的方法实现TLB转换。下面依然以图15实施例为例进行说明,对于数据也可以此类推。在图15实施例中,主动表91分别通过总线1505和1504输出分支源指令的物理地址和虚拟地址到扫描器12,供扫描器12计算分支目标指令的物理地址和虚拟地址时使用。
当扫描器12中如前例计算分支目标指令物理地址时,若发现分支目标指令地址位于分支源地址同一页面中,则扫描器12通过总线1506输出分支目标指令物理地址经选择器1508、总线1509到主动表91与存储在其中的物理地址匹配,后续操作与前述一致。
若发现分支目标指令地址位于分支源地址所在页面的上一个或于一个页面中,则扫描器12通过总线1512输出主动表91送来的分支源指令物理地址中的物理地址页号经选择后到TLB1301与存储在其中的物理地址页号匹配。若物理地址页号匹配成功,则以匹配成功项中存储块1510或1511中存储的上一个或下一个页面所在行号为寻址地址,对TLB1301寻址找到所述上一个或下一个页面所在的行,并从中读出物理地址页号经总线1507送出并被选择器1508选择后,与扫描器12通过总线1506输出的标签低位合并构成物理地址,经总线1509到主动表91与存储在其中的物理地址匹配,后续操作与前述一致。若物理地址页号匹配不成功,则填充TLB等后续操作与前述一致,
若发现分支目标指令地址不在分支源地址所在页面及其上一个或下一个页面中,则扫描器12通过总线1512输出计算得到的分支目标指令虚拟地址中的虚页号经选择后到TLB1301与存储在其中的虚页号匹配,后续操作与前述一致。
在图19实施例中,抗混叠表1950的域1910中存储了虚页号,该虚页号与域1912中的BN2X指向的主动表行中的物理地址页号构成一对虚实地址对(该主动表行中的虚页号和物理地址页号本身也构成一对虚实地址对,因此多个虚页面对应一个物理地址页面),使得包含抗混叠表1950的主动表91能够实现TLB的功能。进一步地,在域1910中还可以存储相应的标签低位(对应域1904中的标签低位),构成二级存储块虚拟地址,使得一旦在抗混叠表1950中匹配成功,即可直接找到对应的二级指令块,而不需要如图19实施例那样读出物理地址页号、构成二级指令块物理地址后再匹配。
在本发明中,如图20所示,指令和数据可以共享二级缓存217,并各自有独立的一级缓存(如一级指令缓存16和一级数据缓存116)。此时,在主动表91中存储了二级缓存中各个存储块包含的指令块或数据块的块地址,且在二级缓存217中,无论指令还是数据均采用BN2格式的循迹地址。由于在存储器902中存储了从BN2转换为一级缓存循迹地址(BN1或DBN1)的对应关系,因此轨道表13中的轨迹点包含的循迹地址可以是BN1、DBN1或BN2,且所述BN2可以按前例所述方法被转换BN1或DBN1。对于更多层次缓存的情况,无论有多少层次的低层次缓存是指令和数据共享的缓存,均可以采用同样方法确定循迹地址,并将低层次缓存对应的循迹地址转换为高层次缓存对应的循迹地址。
根据本发明技术方案和构思,还可以有其他任何合适的改动。对于本领域普通技术人员来说,所有这些替换、调整和改进都应属于本发明所附权利要求的保护范围。

Claims (81)

1.一种指令处理系统,其特征在于,包括:
m个存取速度不同的存储器,所述m个存取速度不同的存储器均用以存储指令;
指令控制器,所述指令控制器包括轨道表,所述轨道表存储速度最高存储器中存储的分支指令的目标指令的循迹地址,所述分支指令的目标指令存储在所述m个存取速度不同的存储器中的至少一个存储器中;所述指令控制器用以根据所述轨道表中存储的分支指令的目标指令的循迹地址,控制存储速度低的存储器向存储速度高的存储器提供指令;
其中,所述m为大于等于2的自然数。
2.如权利要求1所述的指令处理系统,其特征在于,还包括主动表,所述主动表存储速度最低存储器中存储的指令的块地址,及所述速度最低存储器中存储的指令在另外m-1个存储器中存储有时,在该另外m-1个存储器中的循迹地址。
3.如权利要求2所述的指令处理系统,其特征在于,所述分支指令的目标指令的循迹地址包括行号和列号;所述分支指令的目标指令的块地址经主动表匹配后,得到所述循迹地址中的行号;所述分支指令的目标指令在指令块中的偏移量为循迹地址中的列号。
4.如权利要求3所述的指令处理系统,其特征在于,所述指令控制器还包括循迹器,所述循迹器根据轨道表中存储的分支指令的目标指令的循迹地址,提前移动并指向第一层分支指令,并从轨道表中读出该第一层分支指令的目标指令的循迹地址;
当所述循迹器发现该目标指令的循迹地址对应速度最高的存储器时,则从所述速度最高的存储器向处理器提供指令;
当所述循迹器发现该目标指令的循迹地址对应速度最高的存储器以外的m-1个存储器时,所述m-1个存储器提前向处理器和/或所述速度最高的存储器提供指令。
5.如权利要求4所述的指令处理系统,其特征在于,所述循迹器包括一个寄存器、一个增量器及一个选择器,其中,所述寄存器中存储了第一层分支指令的循迹地址,该循迹地址被用于在轨道表中寻址以读出对应的目标指令的循迹地址;所述增量器用以得到第一层分支指令段的下一个分支指令的循迹地址;所述选择器用以选出第一层分支指令的目标指令的循迹地址及第一层分支指令段的下一个分支指令的循迹地址中的一个,并将选出的循迹地址存储到所述寄存器中。
6.如权利要求4所述的指令处理系统,其特征在于,所述指令控制器还包括预测器,所述预测器用以获取所述循迹器指向的分支指令段之后的分支指令段。
7.如权利要求6所述的指令处理系统,其特征在于,所述预测器用以获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段,其中,n为自然数。
8.如权利要求7所述的指令处理系统,其特征在于,所述预测器包括2n个寄存器、一个增量器及一个选择器,其中,所述增量器用以得到所述第n层分支指令段中分支指令的循迹地址,所述2n个寄存器分别用以存储第n层分支指令段中分支指令的循迹地址,所述选择器用以选出向所述轨道表寻址的分支指令的循迹地址,以得到所述分支指令的目标指令的循迹地址。
9.如权利要求8所述的指令处理系统,其特征在于,在所述预测器中,只使用部分寄存器,从而记录少于n层的若干层分支指令的循迹地址,以调整预测的深度;或者不使用任何寄存器,从而在功能上关闭预测器。
10.如权利要求2所述的指令处理系统,其特征在于,所述指令控制器包括预测循迹器,所述预测循迹器用以获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段,其中,n为自然数。
11.如权利要求10所述的指令处理系统,其特征在于,所述预测循迹器包括2n+1-2个寄存器、一个增量器及n+1层选择器,其中,所述增量器用以得到所述第n层分支指令段中分支指令的循迹地址,所述2n+1-2个寄存器分别用以存储从第1层到第n层分支指令段中分支指令的循迹地址,所述n+1层选择器用于根据分支指令的分支转移是否发生的信息依次裁剪不会被执行的分支指令段对应的循迹地址。
12.如权利要求11所述的指令处理系统,其特征在于,经所述裁剪后输出的循迹地址指向第一层分支指令;根据所述循迹地址能够从轨道表中读出该第一层分支指令的目标指令的循迹地址;根据该目标指令的循迹地址,能够从所述速度最高的存储器向处理器提供指令。
13.如权利要求11所述的指令处理系统,其特征在于,在所述预测循迹器中,只使用部分寄存器,从而记录少于n层的若干层分支指令的循迹地址,以调整预测的深度;或者不使用其中2n+1-4个寄存器,从而只实现提前移动并指向第一层分支指令的功能。
14.如权利要求3所述的指令处理系统,其特征在于,还包括扫描器,所述扫描器用以计算存储器提供的指令中的分支指令的目标指令的块地址,并将所述分支指令的目标指令的块地址送到主动表进行匹配,以得到对应的循迹地址。
15.如权利要求14所述的指令处理系统,其特征在于,当匹配结果显示所述分支指令的目标指令在速度高的存储器中未存储有时,主动表控制速度低的存储器提供该分支指令的目标指令。
16.如权利要求1所述的指令处理系统,其特征在于,还包括第一缓冲存储器,所述第一缓冲存储器用以暂存速度低的存储器向速度最高的存储器提供的指令。
17.如权利要求16所述的指令处理系统,其特征在于,所述第一缓冲存储器包括2n+1-3个寄存器及2n-2个选择器,其中,2n+1-3个寄存器用以存储从第1层到第n-1层的分支指令段,2n-2个选择器用以选出向速度最高的存储器输出的分支指令段。
18.如权利要求17所述的指令处理系统,其特征在于,还包括第二缓冲存储器,所述第二缓冲存储器用以暂存未被选出向速度最高的存储器输出的分支指令段;所述循迹器通过循迹地址匹配的方式在所述第二缓冲存储器中查找速度最高的存储器及第一缓冲存储器中未包含的指令。
19.一种指令处理方法,其特征在于,所使用的轨道表及存储速度最高的存储器行行一一对应,所述方法包括:
步骤10、根据轨道表中存储的分支指令的目标指令的循迹地址,控制存储速度低的存储器向存储速度高的存储器提供指令。
20.如权利要求19所述的指令处理方法,其特征在于,在步骤10之前还包括:步骤9、通过对分支指令的目标指令的块地址的匹配,得到所述目标指令对应的循迹地址中的行号;所述目标指令在指令块中的偏移量为所述目标指令对应的循迹地址中的列号。
21.如权利要求20所述的指令处理方法,其特征在于,所述步骤10包括:步骤10A、根据轨道表中存储的分支指令的目标指令的循迹地址,提前找到第一层分支指令,并从轨道表中读出该第一层分支指令的目标指令的循迹地址;
当该目标指令的循迹地址对应速度最高的存储器时,则从所述速度最高的存储器向处理器提供指令;
当该目标指令的循迹地址对应速度最高的存储器以外的m-1个存储器时,所述m-1个存储器提前向处理器和/或所述速度最高的存储器提供指令。
22.如权利要求21所述的指令处理方法,其特征在于,所述步骤10还包括:
步骤10B、获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段。
23.如权利要求20所述的指令处理方法,其特征在于,所述步骤10包括:步骤10A、获取第一层分支指令段之后的第n层分支指令段,并控制存储速度低的存储器向存储速度高的存储器提供尚未存储在所述存储速度高的存储器中的第n层分支指令段。
24.如权利要求23所述的指令处理方法,其特征在于,所述步骤10还包括:步骤10B、根据分支指令的分支转移是否发生的信息依次裁剪不会被执行的分支指令段对应的循迹地址。
25.如权利要求24所述的指令处理方法,其特征在于,所述步骤10还包括:步骤10C、经所述裁剪后输出的循迹地址指向第一层分支指令;根据所述循迹地址能够从轨道表中读出该第一层分支指令的目标指令的循迹地址;根据该目标指令的循迹地址,能够从所述速度最高的存储器向处理器提供指令。
26.如权利要求20所述的指令处理方法,其特征在于,所述步骤9包括:
步骤9A、计算存储器提供的指令中的分支指令的目标指令的块地址,并通过对所述分支指令的目标指令的块地址的匹配,得到所述目标指令对应的循迹地址中的行号;所述目标指令在指令块中的偏移量为所述目标指令对应的循迹地址中的列号。
27.如权利要求26所述的指令处理方法,其特征在于,所述步骤9还包括:
步骤9B、当匹配结果显示所述分支指令的目标指令在速度高的存储器中未存储有时,主动表控制速度低的存储器提供该分支指令的目标指令。
28.如权利要求3所述的指令处理系统,其特征在于,指令控制器还包括循迹器,所述循迹器以该读指针值作为循迹地址对轨道表和速度最高的存储器寻址,读出轨迹点内容并据此更新读指针值,同时读出指令供处理器执行。
29.如权利要求1所述的指令处理系统,其特征在于,当指令控制器从所述轨道表的轨迹点中读出的指令类型显示为间接分支指令时,由处理器执行该指令并产生分支目标地址后,再转换为循迹地址。
30.如权利要求29所述的指令处理系统,其特征在于,处理器产生的所述间接分支目标地址被主动表转换为循迹地址并存储在轨道表的相应轨迹点中;
当循迹器读指针再次指向该轨迹点时,当作直接分支点猜测执行,并将处理器此时产生的分支目标地址与该轨迹点中循迹地址对应的指令地址进行比较;
若两者相等,则该猜测是正确的,可以继续后续操作;
若两者不等,则该猜测是错误的,用所述处理器产生的分支目标地址转换为循迹地址,再进行后续操作。
31.如权利要求2所述的指令处理系统,其特征在于,根据分支目标指令或数据位于存储器层次的不同,轨道表的轨迹点中存储了不同格式的循迹地址;不同格式的循迹地址对应不同层次的存储器;
根据主动表中存储的信息,可以对不同层次缓存的循迹地址进行转换。
32.如权利要求31所述的指令处理系统,其特征在于,当指令控制器从所述轨道表的轨迹点中读出的是对应速度较低的存储器的循迹地址时,该循迹地址被送到主动表转换为对应速度较高的存储器的循迹地址并填回轨道表的该的轨迹点中,同时将对应的指令块或数据块从速度较低的存储器存储到速度较高的存储器中。
33.如权利要求2所述的指令处理系统,其特征在于,当速度最低存储器中一个存储块对应的顺序地址的前一存储块或后一存储块已经存储在所述速度最低存储器中时,主动表中还存储了该存储块对应的所述前一存储块或后一存储块在所述速度最低存储器中的存储位置信息。
34.如权利要求33所述的指令处理系统,其特征在于,当指令或数据地址位于速度最低存储器中当前存储块的前一存储块或后一存储块中时,可以根据存储在主动表中的所述前一存储块或后一存储块的位置信息,直接在速度最低存储器中找到该指令或数据。
35.如权利要求14所述的指令处理系统,其特征在于,在所述扫描器中对分支目标指令地址进行边界判断;根据所述判断结果,对位于不同位置的分支目标指令给予不同格式的地址;或
所述指令处理系统还包含一个数据引擎,在所述数据引擎中对数据访问指令的下次数据地址进行边界判断;根据所述判断结果,对位于不同位置的下次数据给予不同格式的地址。
36.如权利要求35所述的指令处理系统,其特征在于,若分支目标指令地址位于分支源指令在至少一个层次存储器的同一存储块中,则以该分支目标指令在这些层次的存储器中的较高层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令循迹地址中的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
37.如权利要求36所述的指令处理系统,其特征在于,在所述扫描器中
若分支目标指令地址位于分支源指令在某一层次存储器中所在存储块的前一或后一存储块中,则以该分支目标指令在该层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令所在存储块的前一或后一存储块的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
38.如权利要求36所述的指令处理系统,其特征在于:在所述扫描器中还包含一个加法器,用于对分支源指令本身在某一层次存储器对应的块内偏移量与分支转移距离中对应所述层次存储器块内偏移量的部分相加,产生进位输出;
当所述分支转移距离为正数或零时,若所述分支转移距离对应所述层次存储器块内偏移量以外部分为全‘0’,且所述进位输出为‘0’,则所述分支目标位于该层次存储器中所述分支源指令所在的指令块中;
当所述分支转移距离为负数时,若所述分支转移距离对应所述层次存储器块内偏移量以外部分为全‘1’,且所述进位输出为‘1’,则所述分支目标位于所述分支源指令所在的指令块中。
39.如权利要求38所述的指令处理系统,其特征在于,所述加法器还进一步对分支源指令本身在某一层次存储器对应的块内偏移量以外部分中的低位与分支转移距离中的相应位相加,判断所述分支目标是否位于该层次存储器中所述分支源指令所在的指令块顺序地址的前一个或后一个指令块中。
40.如权利要求36所述的指令处理系统,其特征在于,若下次数据地址位于本次数据在至少一个层次存储器的同一存储块中,则以该下次数据在这些层次的存储器中的较高层次存储器循迹地址作为该下次数据的循迹地址,且以该本次数据的循迹地址中的DBNX作为该下次数据的循迹地址中的DBNX,以该下次数据中对应所述层次存储器的DBNY部分作为该下次数据的循迹地址中的DBNY。
41.如权利要求40所述的指令处理系统,其特征在于,在所述数据引擎中:
若下次数据地址位于本次数据在某一层次存储器中所在存储块的前一或后一存储块中,则以该下次数据在该层次存储器循迹地址作为该下次数据的循迹地址,且以该本次数据所在存储块的前一或后一存储块的DBNX作为该下次数据的循迹地址中的DBNX,以该下次数据中对应所述层次存储器的DBNY部分作为该下次数据的循迹地址中的DBNY。
42.如权利要求40所述的指令处理系统,其特征在于:在所述数据引擎中还包含一个加法器,用于对本次数据本身在某一层次存储器对应的块内偏移量与数据步长中对应所述层次存储器块内偏移量的部分相加,产生进位输出;
当所述数据步长为正数或零时,若所述数据步长对应所述层次存储器块内偏移量以外部分为全‘0’,且所述进位输出为‘0’,则所述下次数据位于该层次存储器中所述本次数据所在的数据块中;
当所述数据步长为负数时,若所述数据步长对应所述层次存储器块内偏移量以外部分为全‘1’,且所述进位输出为‘1’,则所述下次数据位于所述本次数据所在的数据块中。
43.如权利要求42所述的指令处理系统,其特征在于,所述加法器还进一步对本次数据本身在某一层次存储器对应的块内偏移量以外部分中的低位与数据步长中的相应位相加,判断所述下次数据是否位于该层次存储器中所述本次数据所在的数据块顺序地址的前一个或后一个数据块中。
44.如权利要求3所述的指令处理系统,其特征在于,每个层次的数据存储器还对应一个数据循迹地址转换模块;所述数据循迹地址转换模块的行与该层次数据存储器中的数据块一一对应,其中每行存储了对应该层次数据存储器中数据块所在的更低层次存储器中的数据块号及相应的子块号,从而可以将所述层次数据循迹地址中的块号转换为所述更低层次数据循迹地址中的块号,并将该子块号与所述层次的数据循迹地址中的块内偏移量合并构成所述更低层次的数据循迹地址中的块内偏移量。
45.如权利要求3所述的指令处理系统,其特征在于,指令和数据共享速度较低的存储器,且在主动表中存储了速度最低的存储器中的指令块和数据块的块地址。
46.如权利要求2所述的指令处理系统,其特征在于,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;
虚实地址转换模块位于处理器、扫描器或数据引擎与主动表之间的路径上。
47.如权利要求46所述的指令处理系统,其特征在于:
对于由扫描器或数据引擎产生的虚拟地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址;
对于由处理器产生的间接分支目标指令地址或数据地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址从存储器中获取相应指令或数据提供给处理器使用,并填充到最高层次存储器中。
48.如权利要求2所述的指令处理系统,其特征在于,在所述虚实地址转换模块中的每项还存储了连续虚拟地址的前一或后一页面的物理页面地址在虚实地址转换模块中的位置信息;
若根据物理地址直接计算得到的分支目标指令地址或下次数据地址位于分支源指令或本次数据所在页面的前一或后一页面,则根据所述前一或后一页面的位置信息从虚实地址转换模块中找到相应物理页面地址构成该分支目标指令或下次数据的物理地址,再送主动表转换为循迹地址。
49.如权利要求35所述的指令处理系统,其特征在于,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;
所述主动表除主体部分外,还包含一个抗混叠表;所述抗混叠表中的每行存储一个虚页号及该虚页号对应的物理地址页号在主动表主体部分中所在的一个块号;
当主动表中某个指令块或数据块的物理地址对应的虚拟地址多于一个时,所述主动表的主体部分中存储了该指令块或数据块的物理地址及其对应的一个虚拟地址,而其他虚拟地址中的虚页号及对应的块号则存储在抗混叠表中。
50.如权利要求49所述的指令处理系统,其特征在于,处理器、扫描器或数据引擎输出的虚拟地址在主动表中与主体部分及抗混叠表中的虚拟地址匹配时,输出虚拟地址及虚页号匹配结果;所述匹配结果包括:虚拟地址匹配成功,或虚拟地址匹配不成功且虚页号匹配成功,或虚页号匹配不成功;
处理器、扫描器或数据引擎输出的物理地址在主动表中与主体部分中的物理地址匹配时,输出物理地址及物理地址页号匹配结果;所述匹配结果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址页号匹配成功,或物理地址页号匹配不成功。
51.如权利要求20所述的指令处理方法,其特征在于,根据循迹地址对轨道表和速度最高的存储器寻址,读出轨迹点内容并据此更新读指针值,同时读出指令供处理器执行。
52.如权利要求19所述的指令处理方法,其特征在于,轨道表中控制流(control flow)信息以二叉树形式存在,其中每个分支点对应一条分支指令。
53.如权利要求52所述的指令处理方法,其特征在于,所述二叉树是完整的二叉树,包含了相邻分支点之间的路径信息,从而可以由一个分支点出发到达其两个分叉上各一个相邻的后续分支点。
54.如权利要求19所述的指令处理方法,其特征在于,对于间接分支指令,由处理器执行该指令并产生分支目标地址后,再转换为循迹地址。
55.如权利要求19所述的指令处理方法,其特征在于,对于无条件分支指令,以其分支目标循迹地址作为后续指令循迹地址;
对于条件分支指令,根据处理器核执行该条件分支指令产生的分支转移是否发生的信息选择其下一指令循迹地址或分支目标循迹地址中的一个作为后续指令循迹地址。
56.如权利要求55所述的指令处理方法,其特征在于,处理器产生的所述间接分支目标地址被转换为循迹地址并存储在轨道表的相应轨迹点中;
当再次指向该轨迹点时,当作直接分支点猜测执行,并将处理器此时产生的分支目标地址与该轨迹点中循迹地址对应的指令地址进行比较;
若两者相等,则该猜测是正确的,可以继续后续操作;
若两者不等,则该猜测是错误的,用所述处理器产生的分支目标地址转换为循迹地址,再进行后续操作。
57.如权利要求19所述的指令处理方法,其特征在于,根据分支目标指令或数据位于存储器层次的不同,轨道表的轨迹点中存储了不同格式的循迹地址;不同格式的循迹地址对应不同层次的存储器;
可以对不同层次缓存的循迹地址进行转换。
58.如权利要求57所述的指令处理方法,其特征在于,使用的地址格式包括指令地址、数据地址和循迹地址。
59.如权利要求57所述的指令处理方法,其特征在于,数据访问指令对应的轨迹点中存储了循迹地址和数据步长。
60.如权利要求57所述的指令处理方法,其特征在于,当从所述轨道表的轨迹点中读出的是对应速度较低的存储器的循迹地址时,该循迹地址被转换为对应速度较高的存储器的循迹地址并填回轨道表的该的轨迹点中,同时将对应的指令块或数据块从速度较低的存储器存储到速度较高的存储器中。
61.如权利要求19所述的指令处理方法,其特征在于,当速度最低存储器中一个存储块对应的顺序地址的前一存储块或后一存储块已经存储在所述速度最低存储器中时,主动表中存储了该存储块对应的所述前一存储块或后一存储块在所述速度最低存储器中的存储位置信息。
62.如权利要求61所述的指令处理方法,其特征在于,当指令或数据地址位于速度最低存储器中当前存储块的前一存储块或后一存储块中时,可以根据存储在主动表中的所述前一存储块或后一存储块的位置信息,直接在速度最低存储器中找到该指令或数据。
63.如权利要求61所述的指令处理方法,其特征在于,当一个存储块被替换或填充时,若可以确定该存储块的前一存储块或后一存储块的位置,则将所述前一存储块或后一存储块的位置信息存储在主动表中该存储块对应的前一存储块位置或后一存储块位置中,并相应地将该存储块的位置信息存储在主动表中所述前一存储块对应的后一存储块位置中,或将该存储块的位置信息存储在主动表中所述后一存储块对应的前一存储块位置中。
64.如权利要求61所述的指令处理方法,其特征在于,当一个存储块被替换或填充时,根据主动表中该存储块对应的所述前一存储块或后一存储块的位置信息,将所述前一存储块对应的后一存储块的位置信息清除,以及将所述后一存储块对应前一存储块的位置信息清除。
65.如权利要求19所述的指令处理方法,其特征在于,对分支目标指令地址进行边界判断;根据所述判断结果,对位于不同位置的分支目标指令给予不同格式的地址;或
对数据访问指令的下次数据地址进行边界判断;根据所述判断结果,对位于不同位置的下次数据给予不同格式的地址。
66.如权利要求65所述的指令处理方法,其特征在于,若分支目标指令地址位于分支源指令在至少一个层次存储器的同一存储块中,则以该分支目标指令在这些层次的存储器中的较高层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令循迹地址中的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
67.如权利要求66所述的指令处理方法,其特征在于:
若分支目标指令地址位于分支源指令在某一层次存储器中所在存储块的前一或后一存储块中,则以该分支目标指令在该层次存储器循迹地址作为该分支目标指令的循迹地址,且以该分支源指令所在存储块的前一或后一存储块的BNX作为该分支目标指令循迹地址中的BNX,以该分支目标指令地址中对应所述层次存储器的BNY部分作为该分支目标指令循迹地址中的BNY。
68.如权利要求65所述的指令处理方法,其特征在于,若下次数据地址位于本次数据在至少一个层次存储器的同一存储块中,则以该下次数据在这些层次的存储器中的较高层次存储器循迹地址作为该下次数据的循迹地址,且该下次数据的循迹地址中的DBNX等于该本次数据的循迹地址中的DBNX,该下次数据的循迹地址中的DBNY等于该下次数据中对应所述层次存储器的DBNY部分。
69.如权利要求68所述的指令处理方法,其特征在于:
若下次数据地址位于本次数据在某一层次存储器中所在存储块的前一或后一存储块中,则以该下次数据在该层次存储器循迹地址作为该下次数据的循迹地址,且该下次数据的循迹地址中的DBNX等于该本次数据所在存储块的前一或后一存储块的DBNX,该下次数据的循迹地址中的DBNY等于该下次数据中对应所述层次存储器的DBNY部分。
70.如权利要求65所述的指令处理方法,其特征在于,还记录了较高层次存储器中每个数据块在较低层次存储器中所在的存储块信息;
根据所述信息,可以将对应较高层次存储器的数据循迹地址转换为对应较低层次存储器的数据循迹地址。
71.如权利要求19所述的指令处理方法,其特征在于,指令和数据共享速度较低的存储器,且在主动表中存储了速度最低的存储器中的指令块和数据块的块地址。
72.如权利要求19所述的指令处理方法,其特征在于,主动表对应的存储器及更高层次存储器均根据虚拟地址寻址,而更低层次存储器均根据物理地址寻址;
当分支源指令的目标指令尚未存储在主动表对应的存储器中时,该目标指令的虚拟地址经虚实地址转换为物理地址后被送往更低层次存储器获取相应指令;或
当下次数据尚未存储在主动表对应的存储器中时,该下次数据的虚拟地址转换为物理地址后被送往更低层次存储器获取相应数据。
73.如权利要求19所述的指令处理方法,其特征在于,主动表对应的存储器及更高层次存储器均根据物理地址寻址;
对于由扫描器或数据引擎产生的虚拟地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址;
对于由处理器产生的间接分支目标指令地址或数据地址,经虚实地址转换模块转换得到物理地址后被送往主动表转换为循迹地址从存储器中获取相应指令或数据提供给处理器使用,并填充到最高层次存储器中。
74.如权利要求65所述的指令处理方法,其特征在于,还记录了连续虚拟地址的前一或后一页面的物理页面地址的位置信息;
若根据物理地址直接计算得到的分支目标指令地址或下次数据地址位于分支源指令或本次数据所在页面的前一或后一页面,则根据所述前一或后一页面的位置信息中找到相应物理页面地址构成该分支目标指令或下次数据的物理地址,再送主动表转换为循迹地址。
75.如权利要求73所述的指令处理方法,其特征在于:
根据被审查指令的物理地址计算其后续指令的地址;
当所述后续指令的地址与所述被审查指令地址位于相同页面但不在同一存储块中时,根据所述被审查指令的物理地址,在主动表中将所述后续指令的地址转换为循迹地址直接对存储器寻址;
当所述后续指令的地址与所述被审查指令地址位于不同页面时,将所述被审查指令标记为间接分支指令(直标间指令类型),等到处理器执行到该指令时并产生后续指令地址时,将该后续指令地址转换为物理地址后,再送到主动表转换为循迹地址对存储器寻址。
76.如权利要求65所述的指令处理方法,其特征在于,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;
所述主动表除主体部分外,还包含一个抗混叠表;所述抗混叠表中的每行存储一个虚页号及该虚页号对应的物理地址页号在主动表主体部分中所在的一个块号;
当主动表中某个指令块或数据块的物理地址对应的虚拟地址多于一个时,所述主动表的主体部分中存储了该指令块或数据块的物理地址及其对应的一个虚拟地址,而其他虚拟地址中的虚页号及对应的块号则存储在抗混叠表中。
77.如权利要求76所述的指令处理方法,其特征在于,处理器、扫描器或数据引擎输出的虚拟地址在主动表中与主体部分及抗混叠表中的虚拟地址匹配时,输出虚拟地址及虚页号匹配结果;所述匹配结果包括:虚拟地址匹配成功,或虚拟地址匹配不成功且虚页号匹配成功,或虚页号匹配不成功;
处理器、扫描器或数据引擎输出的物理地址在主动表中与主体部分中的物理地址匹配时,输出物理地址及物理地址页号匹配结果;所述匹配结果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址页号匹配成功,或物理地址页号匹配不成功。
78.如权利要求77所述的指令处理方法,其特征在于,在扫描器中,若所述目标指令物理地址与分支源指令物理地址位于同一指令块,则直接输出分支源指令对应的块号;若所述目标指令物理地址与分支源指令物理地址位于同一页面中的不同指令块,则所述目标指令物理地址被送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则输出匹配成功项的块号;若物理地址匹配不成功,则根据该物理地址从更低层次存储器中获取相应指令块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号;
在数据引擎中,若所述下次数据物理地址与本次数据物理地址位于同一数据块,则直接输出本次数据对应的块号;若所述下次数据物理地址与本次数据物理地址位于同一页面中的不同数据块,则所述下次数据物理地址被送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则输出匹配成功项的块号;若物理地址匹配不成功,则根据该物理地址从更低层次存储器中获取相应数据块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号。
79.如权利要求77所述的指令处理方法,其特征在于,对于处理器、扫描器或数据引擎输出的虚拟地址:
若在主动表的主体部分中与虚拟地址匹配成功,则输出匹配成功项对应的块号;
若在主动表的主体部分中与虚拟地址匹配不成功但与虚页号匹配成功,则读出匹配成功项中的物理地址页号,与所述虚拟地址中的标签低位合并构成物理地址,再送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则输出匹配成功项的块号;若物理地址匹配不成功,则根据该物理地址从更低层次存储器中获取相应指令块或数据块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号;
若在主动表的主体部分中与虚页号匹配不成功,则由操作系统提供该虚页号对应的物理地址页号;所述物理地址页号与所述虚拟地址中的标签低位合并构成物理地址,再送到主动表的主体部分中与物理地址匹配;若物理地址匹配成功,则将所述虚页号及匹配成功项的块号填充到抗混叠表的可用行中,并输出该块号;若物理地址匹配不成功,则该物理地址从更低层次存储器中获取相应指令块或数据块,填充到主动表对应的存储器中按替换算法分配的存储块中,并将所述虚拟地址及物理地址填充到主动表的主体部分中该存储块对应的行中,同时输出该存储块对应的块号。
80.如权利要求76所述的指令处理方法,其特征在于:
根据被审查指令的物理地址计算其后续指令的地址;
当所述后续指令的地址与所述被审查指令地址位于相同页面时,将计算得到的所述地址送主动表转换为循迹地址;
当所述后续指令的地址与所述被审查指令地址位于不同页面时,根据被审查指令的虚拟地址计算后续指令的虚拟地址,并送到主动表匹配得到相应物理地址,再转换为循迹地址。
81.如权利要求76所述的指令处理方法,其特征在于:
对于数据访问指令,根据本次数据地址和数据步长计算下次数据地址;
当所述下次数据的地址与所述本次数据的地址位于相同页面时,将计算得到的所述地址送主动表转换为循迹地址;
当所述下次数据的地址与所述本次数据的地址位于不同页面时,根据本次数据的虚拟地址计算下次数据的虚拟地址,并送到主动表匹配得到相应物理地址,再转换为循迹地址。
CN201410022576.8A 2013-02-07 2014-01-14 一种指令处理系统及方法 Active CN103984526B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201410022576.8A CN103984526B (zh) 2013-02-07 2014-01-14 一种指令处理系统及方法
JP2015556389A JP6467605B2 (ja) 2013-02-07 2014-01-29 命令処理システムと方法
US14/766,452 US20150370569A1 (en) 2013-02-07 2014-01-29 Instruction processing system and method
KR1020157024402A KR20150119004A (ko) 2013-02-07 2014-01-29 명령 처리 시스템 및 방법
PCT/CN2014/071794 WO2014121737A1 (en) 2013-02-07 2014-01-29 Instruction processing system and method
EP14748511.4A EP2954406A4 (en) 2013-02-07 2014-01-29 COMMAND PROCESSING SYSTEM AND METHOD

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201310049989.0 2013-02-07
CN201310049989 2013-02-07
CN2013100499890 2013-02-07
CN201410022576.8A CN103984526B (zh) 2013-02-07 2014-01-14 一种指令处理系统及方法

Publications (2)

Publication Number Publication Date
CN103984526A true CN103984526A (zh) 2014-08-13
CN103984526B CN103984526B (zh) 2019-08-20

Family

ID=51276520

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310755250.1A Pending CN103984637A (zh) 2013-02-07 2013-12-31 一种指令处理系统及方法
CN201410022576.8A Active CN103984526B (zh) 2013-02-07 2014-01-14 一种指令处理系统及方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310755250.1A Pending CN103984637A (zh) 2013-02-07 2013-12-31 一种指令处理系统及方法

Country Status (6)

Country Link
US (1) US20150370569A1 (zh)
EP (1) EP2954406A4 (zh)
JP (1) JP6467605B2 (zh)
KR (1) KR20150119004A (zh)
CN (2) CN103984637A (zh)
WO (1) WO2014121737A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109960186A (zh) * 2017-12-25 2019-07-02 北京创昱科技有限公司 控制流程的处理方法、装置、电子设备和存储介质
CN112416436A (zh) * 2020-12-02 2021-02-26 海光信息技术股份有限公司 信息处理方法、信息处理装置和电子设备
CN112416437A (zh) * 2020-12-02 2021-02-26 海光信息技术股份有限公司 信息处理方法、信息处理装置和电子设备
CN112579373A (zh) * 2020-12-08 2021-03-30 海光信息技术股份有限公司 用于分支预测器的验证方法、系统、设备以及存储介质
CN114090079A (zh) * 2021-11-16 2022-02-25 海光信息技术股份有限公司 串操作方法、串操作装置以及存储介质
CN117971318A (zh) * 2024-03-28 2024-05-03 北京微核芯科技有限公司 取数指令猜测不相关错误的预测方法和装置
CN117971318B (zh) * 2024-03-28 2024-07-02 北京微核芯科技有限公司 取数指令猜测不相关错误的预测方法和装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050092B (zh) * 2013-03-15 2018-05-01 上海芯豪微电子有限公司 一种数据缓存系统及方法
US9805194B2 (en) * 2015-03-27 2017-10-31 Intel Corporation Memory scanning methods and apparatus
CN106201913A (zh) * 2015-04-23 2016-12-07 上海芯豪微电子有限公司 一种基于指令推送的处理器系统和方法
US10606599B2 (en) * 2016-12-09 2020-03-31 Advanced Micro Devices, Inc. Operation cache
KR102266342B1 (ko) * 2019-05-27 2021-06-16 고려대학교 산학협력단 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치
CN111461326B (zh) * 2020-03-31 2022-12-20 中科寒武纪科技股份有限公司 一种基于设备内存的指令寻址方法及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099910A1 (en) * 2001-01-23 2002-07-25 Shah Emanuel E. High speed low power cacheless computer system
CN102110058A (zh) * 2009-12-25 2011-06-29 上海芯豪微电子有限公司 一种低缺失率、低缺失惩罚的缓存方法和装置
CN102841865A (zh) * 2011-06-24 2012-12-26 上海芯豪微电子有限公司 高性能缓存系统和方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086852A (ja) * 1994-06-22 1996-01-12 Hitachi Ltd キャッシュ制御方法
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
JP3983482B2 (ja) * 2001-02-02 2007-09-26 株式会社ルネサステクノロジ 高速ディスプレースメント付きpc相対分岐方式
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US9021240B2 (en) * 2008-02-22 2015-04-28 International Business Machines Corporation System and method for Controlling restarting of instruction fetching using speculative address computations
US20110320787A1 (en) * 2010-06-28 2011-12-29 Qualcomm Incorporated Indirect Branch Hint
US8458447B2 (en) * 2011-06-17 2013-06-04 Freescale Semiconductor, Inc. Branch target buffer addressing in a data processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099910A1 (en) * 2001-01-23 2002-07-25 Shah Emanuel E. High speed low power cacheless computer system
CN102110058A (zh) * 2009-12-25 2011-06-29 上海芯豪微电子有限公司 一种低缺失率、低缺失惩罚的缓存方法和装置
US20110238917A1 (en) * 2009-12-25 2011-09-29 Shanghai Xin Hao Micro Electronics Co. Ltd. High-performance cache system and method
CN102841865A (zh) * 2011-06-24 2012-12-26 上海芯豪微电子有限公司 高性能缓存系统和方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109960186A (zh) * 2017-12-25 2019-07-02 北京创昱科技有限公司 控制流程的处理方法、装置、电子设备和存储介质
CN112416436A (zh) * 2020-12-02 2021-02-26 海光信息技术股份有限公司 信息处理方法、信息处理装置和电子设备
CN112416437A (zh) * 2020-12-02 2021-02-26 海光信息技术股份有限公司 信息处理方法、信息处理装置和电子设备
CN112416437B (zh) * 2020-12-02 2023-04-21 海光信息技术股份有限公司 信息处理方法、信息处理装置和电子设备
CN112416436B (zh) * 2020-12-02 2023-05-09 海光信息技术股份有限公司 信息处理方法、信息处理装置和电子设备
CN112579373A (zh) * 2020-12-08 2021-03-30 海光信息技术股份有限公司 用于分支预测器的验证方法、系统、设备以及存储介质
CN112579373B (zh) * 2020-12-08 2022-10-11 海光信息技术股份有限公司 用于分支预测器的验证方法、系统、设备以及存储介质
CN114090079A (zh) * 2021-11-16 2022-02-25 海光信息技术股份有限公司 串操作方法、串操作装置以及存储介质
CN117971318A (zh) * 2024-03-28 2024-05-03 北京微核芯科技有限公司 取数指令猜测不相关错误的预测方法和装置
CN117971318B (zh) * 2024-03-28 2024-07-02 北京微核芯科技有限公司 取数指令猜测不相关错误的预测方法和装置

Also Published As

Publication number Publication date
CN103984526B (zh) 2019-08-20
EP2954406A1 (en) 2015-12-16
JP2016511887A (ja) 2016-04-21
US20150370569A1 (en) 2015-12-24
KR20150119004A (ko) 2015-10-23
WO2014121737A1 (en) 2014-08-14
EP2954406A4 (en) 2016-12-07
CN103984637A (zh) 2014-08-13
JP6467605B2 (ja) 2019-02-13

Similar Documents

Publication Publication Date Title
CN103984526A (zh) 一种指令处理系统及方法
CN102841865B (zh) 高性能缓存系统和方法
CN102110058B (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
CN101470670B (zh) 具有扇区功能的高速缓冲存储器
CN102855121B (zh) 分支处理方法与系统
US9785443B2 (en) Data cache system and method
CN105718241B (zh) 一种基于sparc v8体系结构的分类式混合分支预测系统
CN104978282A (zh) 一种缓存系统和方法
CN102306093B (zh) 实现现代处理器间接转移预测的装置及方法
CN100478918C (zh) 微处理器中分段高速缓存的设计方法及分段高速缓存
CN103513957A (zh) 高性能缓存系统和方法
CN104424129A (zh) 基于指令读缓冲的缓存系统和方法
US9753855B2 (en) High-performance instruction cache system and method
CN104731718A (zh) 一种缓存系统和方法
CN104679480A (zh) 一种指令集转换系统和方法
CN103176914B (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
CN103838550A (zh) 一种分支处理系统和方法
CN104679481A (zh) 一种指令集转换系统和方法
CN103207772B (zh) 一种优化实时任务wcet的指令预取内容选取方法
CN106201913A (zh) 一种基于指令推送的处理器系统和方法
CN104424128A (zh) 变长指令字处理器系统和方法
CN104424132A (zh) 高性能指令缓存系统和方法
CN103514107B (zh) 高性能数据缓存系统和方法
JP4254954B2 (ja) データ処理装置
CN101419543B (zh) 预测高速寄存器的存取位置的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 201203 501, No. 14, Lane 328, Yuqing Road, Pudong New Area, Shanghai

Patentee after: SHANGHAI XINHAO MICROELECTRONICS Co.,Ltd.

Address before: 200092, B, block 1398, Siping Road, Shanghai, Yangpu District 1202

Patentee before: SHANGHAI XINHAO MICROELECTRONICS Co.,Ltd.