CN108845831A - 一种分支处理方法与系统 - Google Patents
一种分支处理方法与系统 Download PDFInfo
- Publication number
- CN108845831A CN108845831A CN201810382188.9A CN201810382188A CN108845831A CN 108845831 A CN108845831 A CN 108845831A CN 201810382188 A CN201810382188 A CN 201810382188A CN 108845831 A CN108845831 A CN 108845831A
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- address
- processor core
- storage device
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 238000003860 storage Methods 0.000 claims description 45
- 230000015654 memory Effects 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 6
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 3
- 238000013507 mapping Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种适用于电子计算机/微处理器的分支处理方法,其特征是根据处理器核提供的指令地址提供顺序指令,由BTB映射所述指令地址以提供分支目标指令,由处理器核产生的分支判断选择上述两支指令中的一支指令供处理器核执行,因此没有分支损失;也不使用分支预测,排除了分支预测错误导致的处理器性能损失。
Description
技术领域
本发明涉及电子计算机和微处理器领域。
背景技术
控制相关(control hazards)也称为分支(Branch),是处理器流水线性能损失的一大原因。当前的主流微处理器使用分支预测(branch prediction)的方式以消除分支损失。图1是现有微处理器处理条件分支方式的实施例。其中101是分支目标缓冲器(BranchTarget Buffer,BTB),105是指令缓存,108是处理器核。典型的BTB中存储分支指令地址与相应的分支目标指令地址,以及其分支预测。BTB 101中存储的复数条分支指令地址与108产生的指令地址106相比较。如有匹配,根据匹配的BTB行中存储的分支预测102,输出控制信号103以控制选择器104。如分支预测为分支,104选择BTB匹配行中的分支目标地址向105提供。如无匹配,或有匹配但分支预测为不分支,104选择106上的顺序地址向105提供。指令缓存105根据分支目标或顺序地址经总线107提供分支目标或顺序指令供处理器核108执行。如此消除了分支的损失。
但分支预测有无法避免的预测错误。如处理器核执行分支指令产生的分支判断(branch decision)与分支预测不相同,则必须清除处理器流水线中产生分支判断的流水线段之前各流水线段的处理结果,从分支判断选择的一支指令开始重新执行,导致性能损失。
发明内容
本发明针对现有技术的不足,提出一种分支处理方法与系统,其特征是提供分支目标及顺序两支指令由处理器核产生的分支判断选择一支指令供处理器核执行,因此没有分支损失;也不使用分支预测,因此完全排除了分支预测错误导致的处理器性能损失。
本发明中由处理器核提供指令地址,该指令地址寻址存储装置提供顺序指令,该指令地址也与BTB中存储的分支指令地址比较。由BTB根据匹配结果直接提供分支目标指令。或由BTB根据匹配结果提供分支目标指令地址,该分支目标指令地址寻址存储装置,由存储装置提供分支目标地址。处理器核产生的分支判断选择顺序指令或分支目标指令供处理器核执行。当执行无条件分支指令时,分支判断经分支指令译码生成。当执行条件分支指令时,分支判断经分支指令译码结合执行分支指令或之前指令产生的结果生成。
有益效果
本发明消除了分支预测导致的性能损失,节省了分支预测装置所占据的芯片面积与消耗的功耗。
附图说明
虽然该发明可以以多种形式的修改和替换来扩展,说明书中也列出了一些具体的实施图例并进行详细阐述。应当理解的是,发明者的出发点不是将该发明限于所阐述的特定实施例,正相反,发明者的出发点在于保护所有基于由本权利声明定义的精神或范围内进行的改进、等效转换和修改。
图1是现有以分支预测处理分支的实施例。
图2是本发明所述以分支判断处理分支的实施例。
图3是本发明所述以分支判断处理分支的另一个实施例。
图4是本发明所述以分支判断处理分支的另一个实施例。
图5是本发明所述以分支判断处理分支的另一个实施例。
具体实施方式
图2是本发明所述以分支判断处理分支的实施例。此实施例中,115是存储分支指令地址/分支目标指令对的BTB,105是指令存储器(memory),116是选择器,108是处理器核。处理器核108产生分支判断110以控制选择器116。108产生指令地址106。106寻址指令存储器105,105提供顺序指令111。106也与BTB 115中存储的分支指令地址比较。如果115中的一个分支指令地址与指令地址106匹配,则BTB 115提供与该分支指令地址相应的分支目标指令112。
在送出分支指令的地址后,108经指令地址106送出分支指令后第一条指令的地址(顺序地址)以寻址指令存储器105,105经总线111送出提供分支指令后第一条指令。如果BTB115中有分支指令地址与106上分支指令地址匹配,此时BTB115经总线112输出分支目标指令。因此选择器116的两个输入112及111上有分支目标指令,及分支指令后第一条指令(fall-through指令),等待处理器核产生的分支判断110的选择。
当分支判断110值为‘不分支’时,116选择分支指令后第一条指令111经总线107提供给108执行。106继续提供后续顺序地址(此时为分支指令后两条指令的地址),寻址指令存储器105,105提供顺序指令。
当分支判断110值为‘分支’时,116选择分支目标指令112经总线107提供给108执行。处理器核108在执行分支指令时同时计算分支指令后第一条指令(顺序指令)的地址。106提供分支目标指令后第一条指令的地址,寻址指令存储器105,105提供分支目标指令后第一条指令。之后,106提供分支目标指令后的顺序指令地址(此时为分支目标后两条指令地址),寻址指令存储器105提供分支目标指令的后续指令。
如此,本发明同时向处理器核提供一个分支的两支指令,以分支判断做选择,实现无损分支。本发明不依靠分支预测,避免了分支预测带来的损失(mis-predictionpenalty)。
当处理器108译码经107送入的指令发现该指令是分支指令,而相应的分支指令地址在BTB 115中未获得匹配的情形为BTB缺失。BTB缺失时如分支判断110为‘不分支’,则控制选择器116选择顺序指令111供处理器核108执行。BTB缺失时如分支判断110为‘分支’,则处理器108经指令地址106送出分支目标指令地址以寻址指令存储器105。105经111提供分支目标指令,此时选择器116要选择111送往处理器核108执行。并且在BTB 115中建立该分支指令地址/分支目标指令对。之后,处理器108经指令地址106送出分支目标地址的后续地址,寻址指令存储器105向108提供指令。
也就是说,当分支判断110为‘不分支’时,处理器核108提供的指令地址106为顺序指令地址(包括分支指令地址)。当分支判断110为‘分支’且BTB115匹配命中时,所述指令地址106为分支目标指令的后续指令的地址。当分支判断110为‘分支’且BTB匹配不命中时,所述指令地址106为分支目标指令的地址。这里顺序指令地址是由前一指令地址加一条指令的字节数。当指令译码为非分支指令,或是条件分支指令但分支条件不满足时,分支判断为‘不分支’。当指令译码为无条件分支指令,或是条件分支指令且分支条件满足时,分支判断为‘分支’。
图3是本发明所述以分支判断处理分支的另一个实施例。此实施例中,101是存储分支指令地址/分支目标指令地址对(pair)的BTB,125是具有两个读口(read port)的指令存储器,116是选择器,108是处理器核。108产生指令地址106,106寻址指令存储器125的第一个读口,该第一读口提供顺序指令111。106也与101中的分支指令地址比较。
如果101中的一个分支指令地址与指令地址106匹配,则BTB 101提供相应的分支目标指令地址。该分支目标指令地址寻址指令存储器125的第二个读口,经该第二读口提供相应的分支目标指令112。此时106提供分支指令后第一条指令的地址,寻址指令存储器125的第一读口,该第一读口提供分支指令后第一条指令111。处理器核108也产生分支判断110以控制选择器116。如110的值为‘不分支’,则116选择分支指令后第一条指令111经总线107提供给108执行。如110值为‘分支’,则116选择分支目标指令112经总线107提供给108执行。
本实施例中指令地址106以及分支判断110的产生方式与图2实施例中产生方式相同。本实施例中发生BTB缺失时的处理方式也与图2实施例中处理方式相同。
图4是本发明所述以分支判断处理分支的另一个实施例。此实施例中,101是存储分支指令地址/分支目标指令地址对的BTB,105是指令存储器,118是指令缓冲器(buffer),204与116是选择器,113是加法器,108是处理器核。指令缓冲器118是一个存储器,有读写控制及地址寻址。由于指令缓冲器118仅提供顺序指令,其存储的指令地址空间连续,在一个较小的范围中,因此118容量可以较小,比如仅容纳一个指令行或指令块已可满足本发明的要求。
指令存储器105是另一个分立的存储器,由另外的读写控制及地址寻址。105负责提供分支目标指令,其地址空间要求较大,因此需要较118更大的存储容量。BTB101中存储分支指令地址及其相应的分支目标指令对。处理器核108产生指令地址106,106寻址指令缓冲器118,118通过总线111提供顺序指令。106也与101中存储的分支指令地址比较。
如果101存储中的一个分支指令地址与指令地址106匹配,则BTB 101提供与该分支指令地址对应的分支目标指令地址,也控制选择器204选择BTB101提供的分支目标指令地址。该分支目标指令地址寻址指令存储器105,105通过总线112提供相应的分支目标指令。此时106提供分支指令后第一条指令地址,寻址指令缓冲器118,118通过总线111提供分支指令后第一条指令。处理器核108也产生分支判断110以控制选择器116。
如110的值为‘不分支’,则116选择总线111上的分支指令后第一条指令经总线107提供给处理器核108执行。此后106上的地址为分支指令后第二条指令的地址,控制指令缓冲器118提供分支指令后第二条指令。如果分支指令后第一条指令不是分支指令,此时的分支判断110的值为‘不分支’,控制选择器116选择118提供的分支指令后第二条指令供处理器核108执行。如此顺序执行指令缓冲器中的分支指令的后续指令。
如110的值为‘分支’,则116选择总线112上的分支目标指令经总线107提供给108执行。同时指令存储器105提供分支目标指令所在的指令行,存入指令缓冲器118。此后106上的地址为分支目标指令后第一条指令的地址,控制指令缓冲器118提供分支目标指令后第一条指令。如果分支目标指令本身不是分支指令,此时的分支判断110的值为‘不分支’,控制选择器116选择118提供的分支目标指令后第一条指令供处理器核108执行。如此顺序执行指令缓冲器118中的分支目标指令的后续指令。
如BTB101中存储的分支指令地址没有与106上的分支指令地址匹配,选择器204选择总线106上的地址。此时因为分支判断110的值为‘分支’,但BTB没有匹配,处理器核108产生经总线106送出的地址为分支目标指令地址。该分支目标指令地址寻址指令存储器105经总线112提供分支目标指令所在的指令行。值为‘分支’的分支判断控制选择器116选择总线112上的分支目标指令经总线107供处理器核108执行。同时将112上的指令行存入指令缓冲器118。也将分支指令地址/分支目标指令地址对存入BTB101供以后使用。此后处理器核108产生经总线106送出分支目标指令后第一条指令的地址,读取118中指令,由此时值为‘不分支’的分支判断110控制的选择器116选择,供处理器核108处理。如此顺序执行指令缓冲器118中的分支目标指令的后续指令。
加法器113将指令地址106上的地址中的行地址部分加上一个指令行中的字节数,得到顺序下一行的行地址。当指令地址中的块内偏移地址指向指令缓冲器118最后一条指令,使118提供该指令到处理器核108执行时,选择器204选择加法器113输出的顺序下一行的地址以寻址指令存储器105。105提供顺序下一行指令供存入指令缓冲器118。之后,指令地址106寻址118向处理器核108提供顺序下一行的指令供执行。
本实施例中指令地址106以及分支判断110的产生方式与图2实施例中产生方式相同。本实施例中发生BTB缺失时的处理方式也与图2实施例中处理方式类似。但是发生BTB缺失时,以此时处理器核输出的地址总线106上的分支目标指令地址经选择器204寻址指令存储器105。选择器116则仍由分支判断110控制,选择指令存储器105提供的分支目标指令。即选择器116任何时候都由分支判断110控制。
一个典型的处理器核流水线有五个流水线段,取指(I)段,译码段(D),执行段(E),访存段(M),以及写回段(W)。分支判断通常可以在D段或E段产生。以上三个实施例都是基于分支判断在D段产生的假设,或者说分支判断产生得足够早,可以选择分支指令后的两支指令中的一支供处理器核处理。在图4的实施例中,处理器核108产生顺序地址,在产生分支指令地址后产生分支指令后一条指令的地址。此后如分支判断的值为‘不分支’,则108产生分支指令后第二条指令的地址。如分支判断的值为‘分支’,则108产生分支目标指令后第一条指令的地址。
图5是本发明所述以分支判断处理分支的另一个实施例。图5是分支判断在E段产生的实施例,或者说是分支判断产生得不够早,需要对两支指令都做部分处理后,由分支判断选择两个部分处理结果中的一个供处理器核进一步处理的实施例。
此实施例中,101是存储分支指令地址/分支目标指令地址对的BTB,105是指令存储器,118是指令缓冲器(buffer),113是加法器,204与116是选择器,117及119是指令译码器,128是不带指令译码器的处理器核。128产生指令地址经总线106输出,总线106上的指令地址寻址指令缓冲器118,118提供顺序指令111,111由指令译码器117译码。值为‘不分支’的分支判断110选择117的指令译码结果供处理器核128执行。
总线106上的指令地址顺序指向下一条指令,控制指令缓冲器118送出相应指令供译码器117译码。如果BTB 101中的分支指令地址与总线106上的指令地址匹配,BTB101除匹配时送出对应的分支目标指令地址外,在下一周期送出分支目标指令后第一条指令的地址。在分支判断产生时,控制使总线106上地址为上述两个地址中的一个的后续地址。具体地说,当分支判断值为‘不分支’时,总线106上指令地址为分支指令后第三条指令的地址;当分支判断值为‘分支’时,总线106上指令地址为分支目标指令后第二条指令的地址。控制选择器116的分支判断总线110则在其值为‘分支’时,继续保留该为‘分支’的值一个周期。之后才由新的分支判断决定110上的值。
总线106上的地址也与101中的存储分支指令地址比较。如果101中的一个分支指令地址与指令地址106匹配,则BTB 101提供相应的分支目标指令地址,也控制选择器204选择BTB101提供的分支目标指令地址。该分支目标指令地址寻址指令存储器105,105提供相应的分支目标指令112,112由指令译码器119译码。此时106提供分支指令后第一条指令地址,寻址指令缓冲器108,118提供分支指令后第一条指令111,111由指令译码器117译码。处理器核128也产生分支判断110以控制选择器116。
如分支判断110为‘不分支’,则116选择分支指令后第一条指令111经指令译码器117译码的结果经总线207提供给128执行。此后,处理器核128经总线106提供分支指令后第二条指令等后续指令的地址,寻址指令缓冲器118,提供顺序指令经译码器117译码后,由选择器116选择,经总线207供处理器核128处理。
如分支判断110为‘分支’,则选择器116选择分支目标指令112经指令译码器119译码的结果经总线207提供给128执行。同时指令存储器105提供分支目标指令所在的指令行,存入指令缓冲器118。此后,处理器核128经总线106提供分支指令后第二条指令等后续指令的地址,寻址指令缓冲器118,提供顺序指令经译码器117译码BTB101送出分支目标指令后第一条指令的地址,寻址指令存储器105,提供分支指令后第一条指令经译码器119译码。此时110上值保留为‘分支’,控制选择器116选择译码器119的译码结果经总线207送给处理器核128处理。之后,如110上值为‘不分支’,则控制选择器116选择来自指令缓冲器118,经指令译码器117译码的指令(此时为分支目标指令后的顺序指令)供处理器核处理。
其他的操作与图4实施例相同。本实施例是以指令译码器为例,但是也可以将其扩展为包含其他处理器核功能的流水线段。将处理器核128中的流水线划分为前端流水线及后端流水线。称产生分支判断的流水线段之前的流水线段为前端流水线,称从分支判断流水线段开始的流水线段为后端流水线。处理器核128中为‘分支’及‘不分支’两组指令各安排一个前端流水线段,由分支判断选择两个前端流水线段输出的两个中间结果,将被选择的中间结果送到处理器核中的后端流水线执行。
在这种组织形式中,图5中的117是一个前端流水线,119是另一个前端流水线,128是后端流水线,而其他模块的功能如同上述同样。后端流水线128产生的分支判断110控制选择器116选择前端流水线117或119输出的中间结果,送到后端流水线128执行。如分支判断110为‘不分支’,则116选择分支指令后第一条指令及后第二条指令111经前端流水线117的中间结果经总线207提供给128执行。如分支判断110为‘分支’(连续两个周期),则选择器116选择分支目标指令及分支目标后第一条指令112经前端流水线119的中间结果经总线207提供给128执行。同时指令存储器105提供分支目标指令所在的指令行,存入指令缓冲器118。
本实施例中发生BTB缺失时的处理方式也与图4实施例中处理方式相同。本实施例由分支判断,以控制选择两个指令译码器(或前端流水线)产生的两个指令译码结果中的一个供处理器核(或后端流水线)执行的缓存组织方式是基于图4实施例的缓存组织方式举例说明。也可以以图2及图3实施例或其他缓存组织方式,提供分支指令后第一条指令以及分支目标指令至两个独立的指令译码器(或前端流水线),由分支判断选择两个译码结果(中间结果)中的一个供处理器核(后端流水线)执行。
可以进一步结合图2与图4或图5的实施例,在BTB中存储分支目标指令地址以及分支目标指令后第一条指令的地址。如此,当处理器核经106提供的指令与BTB中存储的分支指令地址匹配时,BTB提供分支目标指令,也提供分支目标指令后第一条指令的地址以寻址第二存储器,之后第二存储器105提供分支指令后第一条指令。同时106上的顺序地址寻址指令读缓冲118中的顺序指令。处理器核产生的分支判断110控制选择器116。
如110上值为‘分支’,116选择来自BTB或第二存储器105的分支目标一支的指令供处理器核108处理,也使106上地址从来自BTB的分支目标指令后第一条指令开始做增量作为后续地址。所述增量可以是一条指令的字节数。同时也将第二存储器105输出的指令行存入指令缓冲器118供后续地址读取。
如110上值为‘不分支’,116选择来自指令缓冲器118的顺序一支的指令供处理器核108处理,也使106上地址做增量作为后续地址。所述增量可以是一条指令的字节数。其余模块功能,操作等与上述图4、图5实施例相同,不再赘述。
本发明的实施例,从图2到图5,包括上述结合图与图4或图5的实施例,都不使用分支预测。图3至图5是由处理器核(或后端流水线)提供顺序指令地址寻址一个存储器以提供顺序指令;由分支目标缓冲器(BTB)匹配顺序指令,提供与顺序指令地址中的分支指令地址对应的分支目标指令地址寻址一个存储器提供分支目标指令;由处理器核(或后端流水线)执行指令产生的分支判断选择顺序指令或分支目标指令供处理器核(后端流水线)执行。不论是顺序执行,或是分支跳转,都没有分支损失(branch penalty)。因为没有分支预测,也就没有预测错误(mis-prediction)带来的损失。图2实施例则由BTB直接提供分支目标指令,其余与图3至图5相同。
虽然本发明的实施例仅仅对本发明的结构特征和/或方法过程进行了描述,但本发明的权利要求并不只局限与所述特征和过程。所述特征和过程只是实现本发明权利要求的几种例子。应当理解的是,上述实施例中列出的多个部件只是为了便于描述,还可以包含其他部件,或某些部件可以被组合或省去。所述多个部件可以分布在多个系统中,可以是物理存在的或虚拟的,也可以用硬件实现(如集成电路)、用软件实现或由软硬件组合实现。
根据对上述较优的实施例的说明,无论本领域的技术发展有多快,也无论将来可能取得何种目前尚不易预测的进展,本发明均可以由本领域普通技术人员根据本发明的原理对相应的参数、配置进行相适应的替换、调整和改进,所有这些替换、调整和改进都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种分支(Branch)处理方法,其特征是提供分支指令后的分支目标及顺序两支指令由处理器核产生的分支判断选择一支指令供处理器核执行;
分支目标缓冲器BTB中成对存储分支指令地址、以及相应的分支目标指令地址;
由处理器核提供指令地址,该指令地址寻址第一存储装置,由第一存储装置提供顺序指令;
该指令地址也与分支目标缓冲器(BTB)中存储的分支指令地址匹配,如处理器核指令地址与BTB中存储的一条分支指令地址匹配,则BTB提供与该分支指令地址对应的分支目标指令地址;
该分支目标指令地址寻址第二存储装置,由第二存储装置提供分支目标指令;
如果处理器核产生的分支判断为‘不分支’,选择第一存储装置提供的顺序指令供处理器核处理;
如果处理器核产生的分支判断为‘分支’,选择第二存储装置提供的分支目标指令供处理器核处理。
2.根据权利要求1所述的分支处理方法,其特征在于如果处理器核提供的指令在BTB中没有匹配,而处理器核产生的相应分支判断为‘分支’,则以处理器核此时产生的分支目标指令地址寻址第二存储装置;
第二存储装置输出分支目标指令;
值为‘分支’的分支判断选择第二存储装置提供的分支目标指令供处理器处理;以及
将分支指令地址/分支目标指令地址对存入BTB。
3.根据权利要求1所述的分支处理方法,其特征在于所述第一存储装置与第二存储装置为同一存储装置的第一及第二读口;
该第一读口由独立的地址寻址;以及
该第二读口由另一个独立的地址寻址。
4.根据权利要求1所述的分支处理方法,其特征在于所述第一存储装置与第二存储装置为复数个分立的存储装置;
该第一存储装置由独立的地址寻址;以及
该第二存储装置由另一个独立的地址寻址。
5.根据权利要求4所述的分支处理方法,其特征在于所述第一存储装置能存储复数条指令;
当处理器核产生的分支判断为分支时,由第二存储装置输出的复数条指令存入第一存储装置。
6.根据权利要求5所述的分支处理方法,其特征在于将处理器核提供的指令地址中的指令行地址,与一个指令行中含有的字节数相加得到顺序下一指令行的指令行地址;
当指令行地址中的块内偏移地址指向第一存储装置中最后一条指令时,以所述顺序下一指令行的行地址寻址第二存储装置,由第二存储装置提供顺序下一指令行,将该指令行存入第一存储装置。
7.根据权利要求1所述的分支处理方法,其特征在于具有两个独立的指令译码器;
第一指令译码器译码由处理器核提供指令地址寻址第一存储装置所提供的顺序指令;
第二指令译码器译码第二存储装置所提供的指令;
如果处理器核产生的分支判断为‘不分支’,选择第一指令译码器提供的顺序指令供处理器核处理;
如果处理器核产生的分支判断为‘分支’,选择第二指令译码器提供的分支目标指令供处理器处理。
8.根据权利要求1所述的分支处理方法,其特征在于将处理器流水线分为前端流水线及后端流水线,前端流水线是产生分支判断的流水线段之前的处理器核流水线,后端流水线是从产生分支判断的流水线段开始的处理器核流水线段;
处理器核具有两组前端流水线以及一组后端流水线;
第一组前端流水线处理由第一存储装置提供的顺序指令;
第二组前端流水线处理由第二存储装置提供的指令;
如果处理器核产生的分支判断为‘不分支’,选择第一组前端流水线的输出供后端流水线处理;
如果处理器核产生的分支判断为‘分支’,选择第二组前端流水线提供的输出供后端流水线处理。
9.一种分支(Branch)处理方法,其特征是提供分支指令后的分支目标及顺序两支指令由处理器核产生的分支判断选择一支指令供处理器核执行;
分支目标缓冲器BTB中成对存储分支指令地址、以及相应的分支目标指令;
由处理器核提供指令地址,该指令地址寻址第一存储装置,由第一存储装置提供顺序指令;
该指令地址也与分支目标缓冲器(BTB)中存储的分支指令地址匹配,如处理器核指令地址与BTB中存储的一条分支指令地址匹配,则BTB提供与该分支指令地址对应的分支目标指令;
如果处理器核产生的分支判断为‘不分支’,选择第一存储装置提供的顺序指令供处理器核处理;
如果处理器核产生的分支判断为‘分支’,选择BTB提供的分支目标指令供处理器核处理。
10.根据权利要求9所述的分支处理方法,其特征在于分支目标缓冲器BTB中除成对存储分支指令地址、以及相应的分支目标指令外,还存储相应的分支目标指令后一条指令的地址;
由处理器核提供指令地址,该指令地址寻址第一存储装置,由第一存储装置提供顺序指令;
该指令地址也与分支目标缓冲器(BTB)中存储的分支指令地址匹配,如处理器核指令地址与BTB中存储的一条分支指令地址匹配,则BTB提供与该分支指令地址对应的分支目标指令,也提供分支目标指令后一条指令的地址以寻址第二存储器提供分支目标指令后第一条指令;
如果处理器核产生的分支判断为‘不分支’,选择第一存储装置提供的顺序指令供处理器核处理;
如果处理器核产生的分支判断为‘分支’,选择BTB提供的分支目标指令或第二存储器提供的分支目标指令后第一条指令供处理器核处理,在BTB提供的分支目标指令后一条指令的地址上做增量作为处理器核提供的指令地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710282065 | 2017-04-13 | ||
CN2017102820653 | 2017-04-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108845831A true CN108845831A (zh) | 2018-11-20 |
Family
ID=63792312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810382188.9A Pending CN108845831A (zh) | 2017-04-13 | 2018-04-13 | 一种分支处理方法与系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108845831A (zh) |
WO (1) | WO2018188657A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117198B (zh) * | 2009-12-31 | 2015-07-15 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
CN102855121B (zh) * | 2011-06-29 | 2017-04-19 | 上海芯豪微电子有限公司 | 分支处理方法与系统 |
CN102662640B (zh) * | 2012-04-12 | 2015-04-01 | 苏州睿云智芯微电子有限公司 | 双重分支目标缓冲器和分支目标处理系统及处理方法 |
CN103838550B (zh) * | 2012-11-26 | 2018-01-02 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
-
2018
- 2018-04-13 CN CN201810382188.9A patent/CN108845831A/zh active Pending
- 2018-04-13 WO PCT/CN2018/083053 patent/WO2018188657A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2018188657A1 (zh) | 2018-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103838550B (zh) | 一种分支处理系统和方法 | |
KR100988955B1 (ko) | 멀티스레디드 프로세서에서 레지스터 파일 포트 감소를위한 방법 및 장치 | |
EP1550032B1 (en) | Method and apparatus for thread-based memory access in a multithreaded processor | |
JP3784766B2 (ja) | 多ポート統合キャッシュ | |
CN102855121B (zh) | 分支处理方法与系统 | |
US20050066152A1 (en) | Method and apparatus for processing data in a reconfigurable manner | |
CA2253560C (en) | Method relating to handling of conditional jumps in a multi-stage pipeline arrangement | |
EP2650778A1 (en) | Method and apparatus for token triggered multithreading | |
US7822925B2 (en) | Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions | |
JPH02224023A (ja) | 命令ストリーム機能を有するプロセサ制御型インターフェイス | |
US10114795B2 (en) | Processor in non-volatile storage memory | |
CN109783411A (zh) | 一种基于fpga的flash阵列控制方法及控制器 | |
TWI511077B (zh) | 下一指令類型欄位 | |
WO2014188073A1 (en) | Memory unit for emulated shared memory architectures | |
US20200257531A1 (en) | Apparatus having processing pipeline with first and second execution circuitry, and method | |
US6799264B2 (en) | Memory accelerator for ARM processor pre-fetching multiple instructions from cyclically sequential memory partitions | |
CN108845831A (zh) | 一种分支处理方法与系统 | |
US20180188973A1 (en) | Processor in non-volatile storage memory | |
US9507600B2 (en) | Processor loop buffer | |
US8631173B2 (en) | Semiconductor device | |
KR101076815B1 (ko) | 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템 | |
CN107783785A (zh) | 一种没有分支预测损失的分支处理方法与系统 | |
JP2006502489A (ja) | 並行処理する機能ユニットを有するデータ処理装置 | |
US8046569B2 (en) | Processing element having dual control stores to minimize branch latency | |
JP4560705B2 (ja) | データ処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 201203 501, No. 14, Lane 328, Yuqing Road, Pudong New Area, Shanghai Applicant after: SHANGHAI XINHAO MICROELECTRONICS Co.,Ltd. Address before: 200092 B building, 1398 Siping Road, Yangpu District, Shanghai 1202 Applicant before: SHANGHAI XINHAO MICROELECTRONICS Co.,Ltd. |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181120 |