CN103984637A - 一种指令处理系统及方法 - Google Patents
一种指令处理系统及方法 Download PDFInfo
- Publication number
- CN103984637A CN103984637A CN201310755250.1A CN201310755250A CN103984637A CN 103984637 A CN103984637 A CN 103984637A CN 201310755250 A CN201310755250 A CN 201310755250A CN 103984637 A CN103984637 A CN 103984637A
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 127
- 238000012545 processing Methods 0.000 title claims abstract description 15
- 230000015654 memory Effects 0.000 claims abstract description 112
- 238000003672 processing method Methods 0.000 claims abstract description 30
- 238000003860 storage Methods 0.000 claims description 144
- 230000008569 process Effects 0.000 claims description 88
- 239000000872 buffer Substances 0.000 claims description 84
- 230000007704 transition Effects 0.000 claims description 41
- 238000013519 translation Methods 0.000 claims description 32
- 230000014616 translation Effects 0.000 claims description 32
- 230000008878 coupling Effects 0.000 claims description 31
- 238000010168 coupling process Methods 0.000 claims description 31
- 238000005859 coupling reaction Methods 0.000 claims description 31
- 238000005520 cutting process Methods 0.000 claims description 27
- 230000008859 change Effects 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 13
- 238000007792 addition Methods 0.000 claims description 8
- 230000003139 buffering effect Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 23
- 102100028952 Drebrin Human genes 0.000 description 17
- 101000838600 Homo sapiens Drebrin Proteins 0.000 description 17
- 230000000052 comparative effect Effects 0.000 description 15
- 230000001186 cumulative effect Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000013011 mating Effects 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003760 hair shine Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 206010011224 Cough Diseases 0.000 description 1
- 206010047700 Vomiting Diseases 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- 230000008673 vomiting Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address 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、当匹配结果显示所述分支指令的目标指令在速度高的存储器中未存储有时,主动表控制速度低的存储器提供该分支指令的目标指令。
可选的,在所述系统中,所述扫描器中包含一个加法器,用于对分支源指令本身在某一层次存储器对应的块内偏移量与分支转移距离中对应该层次存储器块内偏移量的部分相加,产生进位输出;当所述分支转移距离为正数或零时,若所述分支转移距离对应该层次存储器块内偏移量以外部分为全‘0’,且所述进位输出为‘0’,则所述分支目标位于该层次存储器中所述分支源指令所在的指令块中;当所述分支转移距离为负数时,若所述分支转移距离对应该层次存储器块内偏移量以外部分为全‘1’,且所述进位输出为‘1’,则所述分支目标位于所述分支源指令所在的指令块中。
可选的,在所述系统中,所述加法器还进一步对分支源指令本身在某一层次存储器对应的块内偏移量以外部分中的最低两位与分支转移距离中的相应两位相加,判断所述分支目标是否位于该层次存储器中所述分支源指令所在的指令块顺序地址的前一个或下一个指令块中。
可选的,在所述系统中,虚实地址转换模块(TLB)位于主动表对应的存储器以外,使得所述主动表对应的存储器及更高层次存储器均根据虚拟地址寻址,而更低层次存储器均根据物理地址寻址;当分支源指令的目标指令尚未存储在主动表对应的存储器中时,该目标指令的地址经虚实地址转换模块转换得到物理地址后被送往更低层次存储器获取相应指令。
可选的,在所述系统中,虚实地址转换模块(TLB)位于主动表对应的存储器以内,使得所述主动表对应的存储器及更高层次存储器被虚实地址转换模块分为两部分;其中:第一部分较高层次存储器均根据虚拟地址寻址,第二部分较低层次存储器均根据物理地址寻址;当分支源指令的目标指令尚未存储在较高层次存储器中时,该目标指令的地址经虚实地址转换模块转换得到物理地址后被送往较低层次存储器获取相应指令。
可选的,在所述系统中,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;扫描器根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,将所述被审查指令标记为间接分支指令,等到处理器执行到该指令时并产生后续指令地址时,将该后续指令地址送到虚实地址转换模块转换为物理地址后,再送到主动表转换为循迹地址对存储器寻址。
可选的,在所述系统中,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;所述主动表中存储了指令块的物理地址对应的虚拟地址,每个物理地址对应至少一个虚拟地址;主动表输出被审查指令对应的虚拟地址到扫描器;扫描器根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,扫描器根据接收到的虚拟地址计算后续指令的虚拟地址,并送到主动表匹配得到物理地址转换为循迹地址对存储器寻址。
可选的,在所述系统中,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;所述主动表中存储了数据块的物理地址对应的虚拟地址,每个物理地址对应至少一个虚拟地址;主动表输出当前数据访问指令上一次数据地址的虚拟地址到扫描器;所述系统还包含一个数据引擎;所述数据引擎根据当前数据访问指令上一次数据的物理地址计算本次数据地址;当所述本次数据地址与所述上一次数据地址位于相同页面时,将所述本次数据地址转换为循迹地址直接对存储器寻址;当所述本次数据地址与所述上一次数据地址位于不同页面时,数据引擎根据接收到的虚拟地址计算本次数据的虚拟地址,并送到主动表匹配得到物理地址转换为循迹地址对存储器寻址。
可选的,在所述方法中,在根据地址变化量从原地址计算新地址时,可以设定一个地址边界;若地址变化量在该地址边界以外的部分均为‘0’,且原地址及地址变化量在该边界以内的部分相加没有进位输出,则新地址与原地址位于同一个地址边界内。
可选的,在所述方法中,包含至少两个层次的存储器,存储器的层次越高则速度越块;轨道表与最高层次存储器的行一一对应,主动表与最低层次存储器的行一一对应,所述方法包括:根据地址变化的范围,选择不同的存储器寻址方式及虚实地址转换方式。
可选的,在所述方法中,在计算分支源指令的分支目标地址的同时,确定该分支目标所在的位置;若所述分支目标地址与所述分支源指令本身地址在某一层次存储器对应的块内偏移量以外部分相同,则所述分支目标位于该层次存储器中所述分支源指令所在的指令块中。
可选的,在所述方法中,当所述分支目标地址与所述分支源指令本身地址在某一层次存储器对应的块内偏移量以外部分不同时,根据所述部分中的最低两位判断所述分支目标是否位于该层次存储器中所述分支源指令所在的指令块顺序地址的前一个或后一个指令块中。
可选的,在所述方法中,主动表对应的存储器及更高层次存储器均根据虚拟地址寻址,而更低层次存储器均根据物理地址寻址;当分支源指令的目标指令尚未存储在主动表对应的存储器中时,该目标指令的地址经虚实地址转换得到物理地址后被送往更低层次存储器获取相应指令。
可选的,在所述方法中,主动表对应的存储器及更高层次存储器被分为两部分;其中:第一部分较高层次存储器均根据虚拟地址寻址,第二部分较低层次存储器均根据物理地址寻址;当分支源指令的目标指令尚未存储在较高层次存储器中时,该目标指令的地址经虚实地址转换得到物理地址后被送往较低层次存储器获取相应指令。
可选的,在所述方法中,主动表对应的存储器及更高层次存储器均根据物理地址寻址;根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,将所述被审查指令标记为间接分支指令,等到处理器执行到该指令时并产生后续指令地址时,将该后续指令地址送到虚实地址转换模块转换为物理地址后,再送到主动表转换为循迹地址对存储器寻址。
可选的,在所述方法中,定义一种新的直标间类型,用于表示所述后续指令的地址与所述被审查指令地址位于不同页面的被审查指令,使得该被审查指令在第一次被执行时按间接分支指令处理,之后按直接分支指令处理。
可选的,在所述方法中,主动表对应的存储器及更高层次存储器均根据物理地址寻址,并记录了每个指令块物理地址对应的虚拟地址;每个物理地址对应至少一个虚拟地址;根据被审查指令的物理地址计算其后续指令的地址;当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;当所述后续指令的地址与所述被审查指令地址位于不同页面时,根据接收到的虚拟地址计算后续指令的虚拟地址,并根据虚拟地址和物理地址对应关系转换为物理地址后再转换为循迹地址对存储器寻址。
可选的,在所述方法中,主动表对应的存储器及更高层次存储器均根据物理地址寻址,并记录了每个指令块物理地址对应的虚拟地址;每个物理地址对应至少一个虚拟地址;根据当前指令的物理地址计算后续指令的地址;当所述后续指令的地址与所述当前指令地址位于相同页面时,将所述后续指令的地址转换为循迹地址直接对存储器寻址;当所述后续指令的地址与所述当前指令地址位于不同页面时,根据接收到的虚拟地址计算后续指令的虚拟地址,并根据虚拟地址和物理地址对应关系转换为物理地址后再转换为循迹地址对存储器寻址。
在本发明提供的指令处理系统及方法中,通过指令控制器根据轨道表中存储的分支指令的目标指令的循迹地址,控制存储速度低的存储器向存储速度高的存储器提供指令,即能够根据分支指令的目标指令的循迹地址,预先/尽早向存储速度高的存储器提供指令,从而当处理器需要这些指令时,存储速度高的存储器及时地向处理器提供所需的指令,进而保证了处理器的运行速度。
附图说明
图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-aliasing table)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使用。具体操作过程可以参考前述实施例,在此不再赘述。
根据本发明技术方案和构思,还可以有其他任何合适的改动。对于本领域普通技术人员来说,所有这些替换、调整和改进都应属于本发明所附权利要求的保护范围。
Claims (44)
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.如权利要求14所述的指令处理系统,其特征在于,所述扫描器中包含一个加法器,用于对分支源指令本身在某一层次存储器对应的块内偏移量与分支转移距离中对应该层次存储器块内偏移量的部分相加,产生进位输出;
当所述分支转移距离为正数或零时,若所述分支转移距离对应该层次存储器块内偏移量以外部分为全‘0’,且所述进位输出为‘0’,则所述分支目标位于该层次存储器中所述分支源指令所在的指令块中;
当所述分支转移距离为负数时,若所述分支转移距离对应该层次存储器块内偏移量以外部分为全‘1’,且所述进位输出为‘1’,则所述分支目标位于所述分支源指令所在的指令块中。
29.如权利要求28所述的指令处理系统,其特征在于,所述加法器还进一步对分支源指令本身在某一层次存储器对应的块内偏移量以外部分中的最低两位与分支转移距离中的相应两位相加,判断所述分支目标是否位于该层次存储器中所述分支源指令所在的指令块顺序地址的前一个或下一个指令块中。
30.如权利要求2所述的指令处理系统,其特征在于,虚实地址转换模块(TLB)位于主动表对应的存储器以外,使得所述主动表对应的存储器及更高层次存储器均根据虚拟地址寻址,而更低层次存储器均根据物理地址寻址;
当分支源指令的目标指令尚未存储在主动表对应的存储器中时,该目标指令的地址经虚实地址转换模块转换得到物理地址后被送往更低层次存储器获取相应指令。
31.如权利要求2所述的指令处理系统,其特征在于,虚实地址转换模块位于主动表对应的存储器以内,使得所述主动表对应的存储器及更高层次存储器被虚实地址转换模块分为两部分;其中:第一部分较高层次存储器均根据虚拟地址寻址,第二部分较低层次存储器均根据物理地址寻址;
当分支源指令的目标指令尚未存储在较高层次存储器中时,该目标指令的地址经虚实地址转换模块转换得到物理地址后被送往较低层次存储器获取相应指令。
32.如权利要求2所述的指令处理系统,其特征在于,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;
扫描器根据被审查指令的物理地址计算其后续指令的地址;
当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;
当所述后续指令的地址与所述被审查指令地址位于不同页面时,将所述被审查指令标记为间接分支指令,等到处理器执行到该指令时并产生后续指令地址时,将该后续指令地址送到虚实地址转换模块转换为物理地址后,再送到主动表转换为循迹地址对存储器寻址。
33.如权利要求2所述的指令处理系统,其特征在于,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;
所述主动表中存储了指令块的物理地址对应的虚拟地址,每个物理地址对应至少一个虚拟地址;主动表输出被审查指令对应的虚拟地址到扫描器;
扫描器根据被审查指令的物理地址计算其后续指令的地址;
当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;
当所述后续指令的地址与所述被审查指令地址位于不同页面时,扫描器根据接收到的虚拟地址计算后续指令的虚拟地址,并送到主动表匹配得到物理地址转换为循迹地址对存储器寻址。
34.如权利要求2所述的指令处理系统,其特征在于,所述主动表对应的存储器及更高层次存储器均根据物理地址寻址;
所述主动表中存储了数据块的物理地址对应的虚拟地址,每个物理地址对应至少一个虚拟地址;主动表输出当前数据访问指令上一次数据地址的虚拟地址到扫描器;
所述系统还包含一个数据引擎;所述数据引擎根据当前数据访问指令上一次数据的物理地址计算本次数据地址;
当所述本次数据地址与所述上一次数据地址位于相同页面时,将所述本次数据地址转换为循迹地址直接对存储器寻址;
当所述本次数据地址与所述上一次数据地址位于不同页面时,数据引擎根据接收到的虚拟地址计算本次数据的虚拟地址,并送到主动表匹配得到物理地址转换为循迹地址对存储器寻址。
35.如权利要求19所述的指令处理方法,其特征在于,在根据地址变化量从原地址计算新地址时,可以设定一个地址边界;若地址变化量在该地址边界以外的部分均为‘0’,且原地址及地址变化量在该边界以内的部分相加没有进位输出,则新地址与原地址位于同一个地址边界内。
36.如权利要求19所述的指令处理方法,其特征在于,包含至少两个层次的存储器,存储器的层次越高则速度越块;
轨道表与最高层次存储器的行一一对应,主动表与最低层次存储器的行一一对应,所述方法包括:根据地址变化的范围,选择不同的存储器寻址方式及虚实地址转换方式。
37.如权利要求36所述的指令处理方法,其特征在于,在计算分支源指令的分支目标地址的同时,确定该分支目标所在的位置;
若所述分支目标地址与所述分支源指令本身地址在某一层次存储器对应的块内偏移量以外部分相同,则所述分支目标位于该层次存储器中所述分支源指令所在的指令块中。
38.如权利要求37所述的指令处理方法,其特征在于,当所述分支目标地址与所述分支源指令本身地址在某一层次存储器对应的块内偏移量以外部分不同时,根据所述部分中的最低两位判断所述分支目标是否位于该层次存储器中所述分支源指令所在的指令块顺序地址的前一个或后一个指令块中。
39.如权利要求36所述的指令处理方法,其特征在于,主动表对应的存储器及更高层次存储器均根据虚拟地址寻址,而更低层次存储器均根据物理地址寻址;
当分支源指令的目标指令尚未存储在主动表对应的存储器中时,该目标指令的地址经虚实地址转换得到物理地址后被送往更低层次存储器获取相应指令。
40.如权利要求36所述的指令处理方法,其特征在于,主动表对应的存储器及更高层次存储器被分为两部分;其中:第一部分较高层次存储器均根据虚拟地址寻址,第二部分较低层次存储器均根据物理地址寻址;
当分支源指令的目标指令尚未存储在较高层次存储器中时,该目标指令的地址经虚实地址转换得到物理地址后被送往较低层次存储器获取相应指令。
41.如权利要求36所述的指令处理方法,其特征在于,主动表对应的存储器及更高层次存储器均根据物理地址寻址;
根据被审查指令的物理地址计算其后续指令的地址;
当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;
当所述后续指令的地址与所述被审查指令地址位于不同页面时,将所述被审查指令标记为间接分支指令,等到处理器执行到该指令时并产生后续指令地址时,将该后续指令地址送到虚实地址转换模块转换为物理地址后,再送到主动表转换为循迹地址对存储器寻址。
42.如权利要求41所述的指令处理方法,其特征在于,定义一种新的直标间类型,用于表示所述后续指令的地址与所述被审查指令地址位于不同页面的被审查指令,使得该被审查指令在第一次被执行时按间接分支指令处理,之后按直接分支指令处理。
43.如权利要求36所述的指令处理方法,其特征在于,主动表对应的存储器及更高层次存储器均根据物理地址寻址,并记录了每个指令块物理地址对应的虚拟地址;每个物理地址对应至少一个虚拟地址;
根据被审查指令的物理地址计算其后续指令的地址;
当所述后续指令的地址与所述被审查指令地址位于相同页面时,根据所述被审查指令的循迹地址将所述后续指令的地址转换为循迹地址直接对存储器寻址;
当所述后续指令的地址与所述被审查指令地址位于不同页面时,根据接收到的虚拟地址计算后续指令的虚拟地址,并根据虚拟地址和物理地址对应关系转换为物理地址后再转换为循迹地址对存储器寻址。
44.如权利要求36所述的指令处理方法,其特征在于,主动表对应的存储器及更高层次存储器均根据物理地址寻址,并记录了每个指令块物理地址对应的虚拟地址;每个物理地址对应至少一个虚拟地址;
根据当前指令的物理地址计算后续指令的地址;
当所述后续指令的地址与所述当前指令地址位于相同页面时,将所述后续指令的地址转换为循迹地址直接对存储器寻址;
当所述后续指令的地址与所述当前指令地址位于不同页面时,根据接收到的虚拟地址计算后续指令的虚拟地址,并根据虚拟地址和物理地址对应关系转换为物理地址后再转换为循迹地址对存储器寻址。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310755250.1A CN103984637A (zh) | 2013-02-07 | 2013-12-31 | 一种指令处理系统及方法 |
US14/766,452 US20150370569A1 (en) | 2013-02-07 | 2014-01-29 | Instruction processing system and method |
PCT/CN2014/071794 WO2014121737A1 (en) | 2013-02-07 | 2014-01-29 | Instruction processing system and method |
JP2015556389A JP6467605B2 (ja) | 2013-02-07 | 2014-01-29 | 命令処理システムと方法 |
EP14748511.4A EP2954406A4 (en) | 2013-02-07 | 2014-01-29 | COMMAND PROCESSING SYSTEM AND METHOD |
KR1020157024402A KR20150119004A (ko) | 2013-02-07 | 2014-01-29 | 명령 처리 시스템 및 방법 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310049989.0 | 2013-02-07 | ||
CN201310049989 | 2013-02-07 | ||
CN201310755250.1A CN103984637A (zh) | 2013-02-07 | 2013-12-31 | 一种指令处理系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103984637A true CN103984637A (zh) | 2014-08-13 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410022576.8A Active CN103984526B (zh) | 2013-02-07 | 2014-01-14 | 一种指令处理系统及方法 |
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 (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器系统和方法 |
CN111461326A (zh) * | 2020-03-31 | 2020-07-28 | 中科寒武纪科技股份有限公司 | 计算神经网络的方法、装置、板卡及计算机可读存储介质 |
Families Citing this family (9)
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 |
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
CN109960186B (zh) * | 2017-12-25 | 2022-01-07 | 紫石能源有限公司 | 控制流程的处理方法、装置、电子设备和存储介质 |
KR102266342B1 (ko) * | 2019-05-27 | 2021-06-16 | 고려대학교 산학협력단 | 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치 |
CN112416436B (zh) * | 2020-12-02 | 2023-05-09 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
CN112416437B (zh) * | 2020-12-02 | 2023-04-21 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
CN112579373B (zh) * | 2020-12-08 | 2022-10-11 | 海光信息技术股份有限公司 | 用于分支预测器的验证方法、系统、设备以及存储介质 |
CN114090079B (zh) * | 2021-11-16 | 2023-04-21 | 海光信息技术股份有限公司 | 串操作方法、串操作装置以及存储介质 |
Family Cites Families (11)
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 |
US20020099910A1 (en) * | 2001-01-23 | 2002-07-25 | Shah Emanuel E. | High speed low power cacheless computer system |
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 |
EP2517100B1 (en) * | 2009-12-25 | 2018-09-26 | Shanghai Xinhao Micro-Electronics Co. Ltd. | High-performance cache system and method |
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 |
CN102841865B (zh) * | 2011-06-24 | 2016-02-10 | 上海芯豪微电子有限公司 | 高性能缓存系统和方法 |
-
2013
- 2013-12-31 CN CN201310755250.1A patent/CN103984637A/zh active Pending
-
2014
- 2014-01-14 CN CN201410022576.8A patent/CN103984526B/zh active Active
- 2014-01-29 US US14/766,452 patent/US20150370569A1/en not_active Abandoned
- 2014-01-29 WO PCT/CN2014/071794 patent/WO2014121737A1/en active Application Filing
- 2014-01-29 KR KR1020157024402A patent/KR20150119004A/ko not_active Application Discontinuation
- 2014-01-29 JP JP2015556389A patent/JP6467605B2/ja active Active
- 2014-01-29 EP EP14748511.4A patent/EP2954406A4/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器系统和方法 |
CN111461326A (zh) * | 2020-03-31 | 2020-07-28 | 中科寒武纪科技股份有限公司 | 计算神经网络的方法、装置、板卡及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20150119004A (ko) | 2015-10-23 |
WO2014121737A1 (en) | 2014-08-14 |
US20150370569A1 (en) | 2015-12-24 |
EP2954406A4 (en) | 2016-12-07 |
EP2954406A1 (en) | 2015-12-16 |
JP2016511887A (ja) | 2016-04-21 |
CN103984526A (zh) | 2014-08-13 |
CN103984526B (zh) | 2019-08-20 |
JP6467605B2 (ja) | 2019-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103984637A (zh) | 一种指令处理系统及方法 | |
CN102841865B (zh) | 高性能缓存系统和方法 | |
CN102110058B (zh) | 一种低缺失率、低缺失惩罚的缓存方法和装置 | |
US9785443B2 (en) | Data cache system and method | |
CN101470670B (zh) | 具有扇区功能的高速缓冲存储器 | |
CN102855121B (zh) | 分支处理方法与系统 | |
CN105718241B (zh) | 一种基于sparc v8体系结构的分类式混合分支预测系统 | |
CN104978282A (zh) | 一种缓存系统和方法 | |
CN102306093B (zh) | 实现现代处理器间接转移预测的装置及方法 | |
CN100478918C (zh) | 微处理器中分段高速缓存的设计方法及分段高速缓存 | |
CN103513957A (zh) | 高性能缓存系统和方法 | |
CN100390756C (zh) | 一种将储存数据重新导向的虚拟集合高速缓存 | |
CN104424129A (zh) | 基于指令读缓冲的缓存系统和方法 | |
US9753855B2 (en) | High-performance instruction cache system and method | |
CN104731718A (zh) | 一种缓存系统和方法 | |
CN104679480A (zh) | 一种指令集转换系统和方法 | |
CN103838550A (zh) | 一种分支处理系统和方法 | |
CN103176914B (zh) | 一种低缺失率、低缺失惩罚的缓存方法和装置 | |
CN105814549B (zh) | 具有主高速缓存器和溢出fifo高速缓存器的高速缓存器系统 | |
CN106201913A (zh) | 一种基于指令推送的处理器系统和方法 | |
US11301250B2 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
CN102662869A (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
CN101008922A (zh) | 面向异构多核体系的段页式存储空间管理方法 | |
CN104657285A (zh) | 一种数据缓存系统和方法 | |
CN104424128A (zh) | 变长指令字处理器系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140813 |