CN116521577B - 对分支预测失败的指令缓存快速处理的芯片系统及方法 - Google Patents
对分支预测失败的指令缓存快速处理的芯片系统及方法 Download PDFInfo
- Publication number
- CN116521577B CN116521577B CN202310799174.8A CN202310799174A CN116521577B CN 116521577 B CN116521577 B CN 116521577B CN 202310799174 A CN202310799174 A CN 202310799174A CN 116521577 B CN116521577 B CN 116521577B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- processor
- buffer
- branch prediction
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000015654 memory Effects 0.000 claims description 45
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000026676 system process Effects 0.000 description 3
- 238000012300 Sequence Analysis Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了对分支预测失败的指令缓存快速处理的芯片系统及方法,属于计算机技术领域,包括处理器、数据缓存器、一级缓存、二级缓存;一级缓存和数据缓存器同时与处理器连接,用于接收处理器发出的分支预测失败信号和PC寻址信号;正在处理的PC,当指示分支预测失败时,一级缓存立即停止从一级缓存取指令操作,同时向处理器返回无效结果后续处理;PC已经写入数据缓存器,当指示分支预测失败时,直接从数据缓存器中移除;处理器发出的PC寻址,直接作为查询一级缓存的地址,下一个周期即可返回给处理器数据。本发明提供对分支预测失败的指令缓存快速处理的芯片系统及方法,减少了一级缓存对分支预测失败的PC寻址信号的处理时间。
Description
技术领域
本发明涉及计算机的技术领域,更具体的,涉及对分支预测失败的指令缓存快速处理的芯片系统及方法。
背景技术
现代的超标量多核处理器架构中,CPU的时钟工作频率都在1Ghz以上,而对应的缓存数据和指令的存储器却运行在较低速的工作时钟,如果CPU从这些低速存储器上进行数据的读写,将大大限制了CPU的工作性能。为了提高整个芯片系统性能,在CPU和外部存储器之间设计一个cache部件,来解决CPU访问数据和指令的工作频率问题,是一个通用的设计方案。多核处理器架构通常采用多级Cache结构,一级Cache设计为ICache与DCache,二级cache设计为多核共享cache。为便于描述,一级Cache撰写为L1-cache,二级Cache撰写为L2-cache。
L1-Cache是最靠近CPU的存储器,CPU访问L1-cache花费的时间越少,系统执行程序的性能就越高。芯片执行程序时,CPU会不断地向L1-cache发送指令寻址请求。L1-cache接收到寻址指令请求后,如果命中L1-cache,则读出L1-cache中的数据返回给CPU,如果miss,则读取L2-cache数据返回给CPU。由于CPU在对指令进行分支预测时,会出现分支预测失败情况,当L1-cache接收到分支预测失败信号时,需要终止该PC对应的指令寻址操作和返回无效数据。
现有技术中带有cache部件内核设计的简单结构设计图如图1所示,由于L1-cache处理一个PC取指令时间不能够和CPU执行一个PC保持同步,因此设计一个FIFO单元用来缓存CPU发送过来的PC,CPU执行指令时所有的取指PC都将写入FIFO,L1-cache要处理的PC都从该FIFO中读出。系统的执行过程描述如下:芯片系统执行程序时,CPU向缓存L1-cache发送取指令PC并写入FIFO。当FIFO非空时,L1-cache从FIFO中读取CPU缓存的PC,在L1-cache中进行地址匹配。如果从FIFO中读出的PC命中L1-cache,则将L1-cache中的指令数据返回给CPU。如果PC命中L1-cache为miss时,L1-cache将读取L2-cache缓存,将L2-cache的数据返回给CPU。当CPU执行指令具有数据相关性时,只有CPU接收到之前PC的指令数据后,CPU才可以继续执行后续指令,给L1-cache发送后续的取指令PC。同时CPU还向L1-cache输出Branch_FAIL信号,它是CPU的一个分支预测失败信号,指示CPU发送给L1-cache之前的一个PC是无效的,L1-cache不应该向CPU返回有效的指示信号和数据。L1-Cache在接收到Branch_FAIL信号后,必须对该信号之前的一个PC做失效处理,失效PC查询L1-cache的数据或者读L2-cache数据不能返回给CPU。
针对现有技术的L1-cache设计,对CPU和L1-cache部件的工作过程,时序分析图如图2所示,此时序图中,FIFO的写入和读出为一个时钟周期,PC查询L1-cache命中并返回给CPU数据也为一个时钟周期(理想情况下)。从这个时序图来看,当前的设计存在一些不足。
首先,当L1-cache接收到CPU发送的Branch_FAIL有效时,表示该信号的前一个PC是一个分支预测失败信号,CPU需要无效前一个PC。L1-Cache在处理时需要kill掉该PC,但是应该被kill的PC已经被写入了FIFO,后续L1-cache仍然需要从FIFO中读出,并处理该失效的PC,造成了L1-cache处理资源浪费。在T3周期Branch_FAIL有效,指示PC1为一个分支预测失败PC,L1-cache将不会给CPU返回PC1的指令数据。如果L1-cache不处理PC1,在T4周期就可以读出PC2并处理,那么L1-cache对PC2的处理可以提前2个周期。
其次,L1-cache处理PC的latency理想情况下为三个时钟周期,会给系统性能带来降低。以图2为例,CPU在T1周期给cache输出PC0,在T4周期才得到PC0的指令数据,耗费了三个时钟周期。由于后续计算PC3地址输出依赖前面PC0的指令结果,从图2中看出,由于L1-cache的处理延时,CPU流水线中间会出现停止状态,降低了CPU执行效率。
发明内容
本发明为实现对分支预测失败的指令缓存的快速处理,而提供对分支预测失败的指令缓存快速处理的芯片系统及方法。
为解决上述技术问题,本发明的技术方案如下:
根据本公开的第一方面,本发明提供对分支预测失败的指令缓存快速处理的芯片系统,包括处理器、数据缓存器、一级缓存、二级缓存;
所述一级缓存和二级缓存为位于处理器与主内存之间的缓冲存储器;所述数据缓存器用于对处理器发送过来的PC寻址信号进行缓存;
所述一级缓存和数据缓存器同时与处理器连接,用于接收处理器发出的分支预测失败信号和PC寻址信号;
当分支预测失败指示的PC寻址信号在数据缓存器时,数据缓存器的写指针回退,同时移除该PC寻址信号;
当分支预测失败指示的PC寻址信号没有进入数据缓存器且正在被一级缓存处理时,则一级缓存停止对该PC寻址信号的处理,且不再向处理器返回该PC寻址信号对应的数据和有效信号;
处理器发出分支预测失败信号Branch_FAIL,一级缓存和数据缓存器同时和它连接,当分支预测失败指示的PC在数据缓存器时,数据缓存器的写指针回退,同时移除该PC;当分支预测失败指示的PC没有进入数据缓存器,且当前正在被一级缓存处理时,则一级缓存需要停止对该PC的处理,且不可以向处理器返回该数据和有效信号,最大限度的降低分支预测失败给系统带来的影响;
处理器发出PC寻址信号,同时和一级缓存和数据缓存器连接;当数据缓存器为空时,处理器发出的PC直接查询一级缓存,且PC不写入数据缓存器,该PC查询一级缓存后的指令数据在下一个周期即可返回给处理器;当数据缓存器为非空时,数据缓存器设计为FAST-THROUGH读出输出模式;其顶端单元的数据值总是在其输出端口,使用数据缓存器输出端口的PC直接查询一级缓存,该PC查询一级缓存后的指令数据在下一个周期即可返回给处理器;这样,PC查询一级缓存最快一个周期就可以返回给处理器指令数据。
进一步,所述数据缓存器采用单元宽度和深度可配置的数据缓存器。
进一步,所述数据缓存器采用支持对已写入的数据进行回写移除操作且支持在回写的同周期写入新数据的数据缓存器。
优选的,所述数据缓存器采用FIFO存储器,用于缓存寻址PC。
进一步,所述数据缓存器采用的FIFO存储器为单端口的同步FIFO存储器,其使用寄存器搭建。
进一步,所述处理器内部设有程序计数器,用于存储将取指令的内存地址,处理器根据程序计数器中存储的将取指令的内存地址从缓冲存储器中取出指令。
根据本公开的第二方面,本发明提供对分支预测失败的指令缓存快速处理的方法,该方法采用前述对分支预测失败的指令缓存快速处理的芯片系统来实施;
所述对分支预测失败的指令缓存快速处理的方法包括以下步骤:
一级缓存和数据缓存器同时与处理器连接,接收处理器发出的分支预测失败信号和PC寻址信号;
当分支预测失败指示的PC寻址信号在数据缓存器时,数据缓存器的写指针回退,同时移除该PC寻址信号;
当分支预测失败指示的PC寻址信号没有进入数据缓存器且正在被一级缓存处理时,则一级缓存停止对该PC寻址信号的处理,且不再向处理器返回该PC寻址信号对应的数据和有效信号;
可见,本技术方案提供了一种一级缓存对分支预测失败PC取指的快速处理设计:正在处理的PC,当指示分支预测失败时,一级缓存立即停止后续处理;PC已经写入数据缓存器,当指示分支预测失败时,直接从数据缓存器中移除;
对于处理器分支预测失败的寻址PC,如果已经写入数据缓存器,则直接在数据缓存器中移除该PC单元,免去一级缓存继续对分支预测失败PC的处理;如果分支预测失败的寻址PC没有写入数据缓存器,则一级缓存在处理该寻址PC时,立即停止从一级缓存取指令操作,同时向处理器返回无效结果,降低了一级缓存对分支预测失败的寻址PC的时间处理;这样处理后,一级缓存硬件电路系统对于分支预测失败的处理,降低了时间资源的消耗。
进一步,当数据缓存器为空时,处理器发出的PC寻址信号直接查询一级缓存,且PC寻址信号不写入数据缓存器,该PC寻址信号查询一级缓存后的指令数据在下一个周期返回给处理器;当数据缓存器为非空时,数据缓存器设置为FAST-THROUGH读出输出模式,其顶端单元的数据值总是在其输出端口,使用数据缓存器输出端口的PC寻址信号直接查询一级缓存,该PC寻址信号查询一级缓存后的指令数据在下一个周期返回给处理器;
简而言之,就是处理器发出的PC寻址,直接作为查询一级缓存地址,下一个周期即可返回给处理器数据;
对发送给一级缓存的寻址PC,当数据缓存器为空时,直接使用处理器发出的寻址PC,如果命中,则下一个周期返回给处理器指令数据;当数据缓存器为非空时,数据缓存器设计为FAST-THROUGH读输出模式,使用数据缓存器输出端口的寻址PC直接查询一级缓存,该寻址PC查询一级缓存后的指令数据在下一个周期即可返回给处理器。
与现有技术相比,本发明技术方案的有益效果是:
一、本发明技术方案中,对于处理器分支预测失败的寻址PC,如果已经写入数据缓存器,则直接在数据缓存器中移除该PC单元,免去了一级缓存继续对分支预测失败PC的处理;如果分支预测失败的寻址PC没有写入数据缓存器,则一级缓存在处理该寻址PC时,立即停止从一级缓存取指令操作,同时向处理器返回无效结果,降低了一级缓存对分支预测失败的寻址PC的时间处理;这样处理后,一级缓存硬件电路系统对于分支预测失败的处理,降低了时间资源的消耗;
二、本发明技术方案中,对发送给一级缓存的寻址PC,当数据缓存器为空时,直接使用处理器发出的寻址PC,如果命中,则下一个周期返回给处理器指令数据;当数据缓存器为非空时,数据缓存器设计为FAST-THROUGH读输出模式,使用数据缓存器输出端口的寻址PC直接查询一级缓存,该寻址PC查询一级缓存后的指令数据在下一个周期即可返回给处理器;
三、本发明技术方案中,缓存寻址PC的数据缓存器,支持FAST-THROUGH读出输出模式,一级缓存想读取数据缓存器数据时,将提前一个周期得到数据缓存器的PC值;这样一级缓存处理数据缓存器读出的寻址PC时,将减少一个周期。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的芯片系统的结构设计示意图;
图2为图1所示的现有技术中的芯片系统的时序图;
图3为本发明的对分支预测失败的指令缓存快速处理的芯片系统的结构设计示意图;
图4为本发明的对分支预测失败的指令缓存快速处理的芯片系统的时序图;
图5为本发明的对分支预测失败的指令缓存快速处理的方法的流程图;
图中标记说明:
11、CPU;12、FIFO;13、L1-cache;14、L2-cache;
1、处理器;2、数据缓存器;3、一级缓存;4、二级缓存。
具体实施方式
为了更好地了解本发明的目的、结构及功能,下面结合附图和具体较佳实施例对本发明的技术方案做进一步详细的描述。
本发明的描述中,需要理解的是,术语“左侧”、“右侧”、“上部”、“下部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,“第一”、“第二”等并不表示零部件的重要程度,因此不能理解为对本发明的限制。实施例中采用的具体尺寸只是为了举例说明技术方案,并不限制本发明的保护范围。对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
除非另有明确的规定和限定,术语“安装”、“设置”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
以下对本发明技术方案涉及到的英文名称做出解释:
CPU为处理器,L1-cache为一级缓存,L2-cache为二级缓存,FIFO为先进先出数据缓存器,Branch_FAIL为分支预测失败信号,FAST-THROUGH读出输出模式为快速通过读出输出模式,PC为程序计数器;
L1-cache包括Data Cache和Instruction Cache,Data Cache为数据缓存,Instruction Cache为指令缓存,二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了CPU效能。
实施例1:
如图3-4所示,本发明提供一种技术方案:对分支预测失败的指令缓存快速处理的芯片系统,包括处理器1、数据缓存器2、一级缓存3、二级缓存4;
所述一级缓存3和二级缓存4为位于处理器1与主内存之间的缓冲存储器;所述数据缓存器2用于对处理器1发送过来的PC寻址信号进行缓存;
所述一级缓存3和数据缓存器2同时与处理器1连接,用于接收处理器1发出的分支预测失败信号和PC寻址信号;
当分支预测失败指示的PC寻址信号在数据缓存器2时,数据缓存器2的写指针回退,同时移除该PC寻址信号;
当分支预测失败指示的PC寻址信号没有进入数据缓存器2且正在被一级缓存3处理时,则一级缓存3停止对该PC寻址信号的处理,且不再向处理器1返回该PC寻址信号对应的数据和有效信号;
具体的,请参阅图3,处理器1发出分支预测失败信号Branch_FAIL,一级缓存3和数据缓存器2同时和它连接,当分支预测失败指示的PC在数据缓存器2时,数据缓存器2的写指针回退,同时移除该PC;当分支预测失败指示的PC没有进入数据缓存器2,且当前正在被一级缓存3处理时,则一级缓存3需要停止对该PC的处理,且不可以向处理器1返回该数据和有效信号,最大限度的降低分支预测失败给系统带来的影响;
处理器1发出PC寻址信号,同时和一级缓存3和数据缓存器2连接;当数据缓存器2为空时,处理器1发出的PC直接查询一级缓存3,且PC不写入数据缓存器2,该PC查询一级缓存3后的指令数据在下一个周期即可返回给处理器1;当数据缓存器2为非空时,数据缓存器2设计为FAST-THROUGH读出输出模式;其顶端单元的数据值总是在其输出端口,使用数据缓存器2输出端口的PC直接查询一级缓存3,该PC查询一级缓存3后的指令数据在下一个周期即可返回给处理器1;这样,PC查询一级缓存3最快一个周期就可以返回给处理器1指令数据。
实施例2:
在实施例1的基础上,参考图3-4,所述数据缓存器2采用单元宽度和深度可配置的数据缓存器。
进一步,所述数据缓存器2采用支持对已写入的数据进行回写移除操作且支持在回写的同周期写入新数据的数据缓存器。
优选的,所述数据缓存器2采用FIFO存储器,用于缓存寻址PC。
进一步,所述数据缓存器2采用的FIFO存储器为单端口的同步FIFO存储器,其使用寄存器搭建。
进一步,所述数据缓存器2采用的FIFO存储器支持FAST-THROUGH读出输出模式。
进一步,所述处理器1内部设有程序计数器,用于存储将取指令的内存地址,处理器1根据程序计数器中存储的将取指令的内存地址从缓冲存储器中取出指令。
实施例3:
如图3-5所示,本发明还提供一种技术方案:对分支预测失败的指令缓存快速处理的方法,该方法采用前述对分支预测失败的指令缓存快速处理的芯片系统来实施;
所述对分支预测失败的指令缓存快速处理的方法包括以下步骤:
一级缓存3和数据缓存器2同时与处理器1连接,接收处理器1发出的分支预测失败信号和PC寻址信号;
当分支预测失败指示的PC寻址信号在数据缓存器2时,数据缓存器2的写指针回退,同时移除该PC寻址信号;
当分支预测失败指示的PC寻址信号没有进入数据缓存器2且正在被一级缓存3处理时,则一级缓存3停止对该PC寻址信号的处理,且不再向处理器1返回该PC寻址信号对应的数据和有效信号;
可见,本实施例的技术方案提供了一种一级缓存对分支预测失败PC取指的快速处理设计:正在处理的PC,当指示分支预测失败时,一级缓存3立即停止后续处理;PC已经写入数据缓存器2,当指示分支预测失败时,直接从数据缓存器2中移除;
对于处理器1分支预测失败的寻址PC,如果已经写入数据缓存器2,则直接在数据缓存器2中移除该PC单元,免去一级缓存3继续对分支预测失败PC的处理;如果分支预测失败的寻址PC没有写入数据缓存器2,则一级缓存3在处理该寻址PC时,立即停止从一级缓存3取指令操作,同时向处理器1返回无效结果,降低了一级缓存3对分支预测失败的寻址PC的时间处理;这样处理后,一级缓存3硬件电路系统对于分支预测失败的处理,降低了时间资源的消耗。
实施例4:
在实施例3的基础上,参考图3-5,
当数据缓存器2为空时,处理器1发出的PC寻址信号直接查询一级缓存3,且PC寻址信号不写入数据缓存器2,该PC寻址信号查询一级缓存3后的指令数据在下一个周期返回给处理器1;
当数据缓存器2为非空时,数据缓存器2设置为FAST-THROUGH读出输出模式,其顶端单元的数据值总是在其输出端口,使用数据缓存器2输出端口的PC寻址信号直接查询一级缓存3,该PC寻址信号查询一级缓存3后的指令数据在下一个周期返回给处理器1;
简而言之,就是处理器1发出的PC寻址,直接作为查询一级缓存3地址,下一个周期即可返回给处理器1数据;
对发送给一级缓存3的寻址PC,当数据缓存器2为空时,直接使用处理器1发出的寻址PC,如果命中,则下一个周期返回给处理器1指令数据;当数据缓存器2为非空时,数据缓存器2设计为FAST-THROUGH读输出模式,使用数据缓存器2输出端口的寻址PC直接查询一级缓存3,该寻址PC查询一级缓存3后的指令数据在下一个周期即可返回给处理器1。
请参阅图4,图4为本发明的时序图,以下结合时序图对本发明的技术方案进行进一步解释:
1、一级缓存对分支预测失败的处理:
请参阅图4,在T3周期,PC2完成写入数据缓存器2操作,在T4时刻,CPU发出的Branch_FAIL指示PC2为分支预测失败的PC;数据缓存器2接收到Branch_FAIL有效时,数据缓存器2将会对PC2进行数据的回写移除操作,这样一级缓存3从数据缓存器2中取数据时将不会得到PC2,免去了继续对分支预测失败PC2的处理。
2、一级缓存对PC查询的快速处理:
请参阅图4,在T1周期,处理器1发出PC0的指令寻址,在T2周期,一级缓存3即可返回PC0的指令数据INST0;在一级缓存3完成miss操作后T6周期,处理器1发出PC3的指令寻址,在T7周期一级缓存3即可返回PC3的指令数据INST3。从处理器1发出寻址PC到接收返回数据,只有一个周期,这是处理器1查询PC最快的一种读取数据方式。
3、对缓存PC的FIFO存储器的设计:
3-1、该数据缓存器2的单元宽度和深度可配置,针对不同寻址宽度的处理器1,和一次处理PC个数能力,来配置数据缓存器2的深度和宽度。
3-2、该数据缓存器2支持对已写入数据缓存器2数据的回写移除操作,在回写的同周期,支持接受对新数据进行写入;
请参阅图4,在T3周期写入PC2,在T4周期,PC3和Branch_FAIL同时有效时,数据缓存器2会对PC2进行回写移除,同时将PC3写入数据缓存器2。
3-3、该数据缓存器2为单端口同步FIFO设计,使用寄存器搭建;数据缓存器2非空时,其顶端单元的数据值总是在其输出端口,并可以使用;FIFO存储器支持FAST-THROUGH读出输出模式,一级缓存3想读取FIFO存储器的数据时,将提前一个周期得到FIFO存储器的PC值;这样一级缓存3处理FIFO存储器读出的寻址PC时,将减少一个周期;
请参阅图4,PC3在T4周期被写入,T5为一级缓存3处理miss后的最后一个周期;在T6周期,直接使用数据缓存器2中的顶端单元PC3查询一级缓存3,并在下一个周期给处理器1返回了指令数据。
对比例:
请参阅图1-2,图1为现有技术中的芯片系统的结构设计示意图,图2为图1所示的现有技术中的芯片系统的时序图;
现有技术中带有cache部件内核设计的简单结构设计图如图1所示,由于L1-cache13处理一个PC取指令时间不能够和CPU11执行一个PC保持同步,因此设计一个FIFO12单元用来缓存CPU11发送过来的PC,CPU11执行指令时所有的取指PC都将写入FIFO12,L1-cache13要处理的PC都从该FIFO12中读出。系统的执行过程描述如下:芯片系统执行程序时,CPU11向缓存L1-cache13发送取指令PC并写入FIFO12。当FIFO12非空时,L1-cache13从FIFO12中读取CPU11缓存的PC,在L1-cache13中进行地址匹配。如果从FIFO12中读出的PC命中L1-cache13,则将L1-cache13中的指令数据返回给CPU11。如果PC命中L1-cache13为miss时,L1-cache13将读取L2-cache14缓存,将L2-cache14的数据返回给CPU11。当CPU11执行指令具有数据相关性时,只有CPU11接收到之前PC的指令数据后,CPU11才可以继续执行后续指令,给L1-cache13发送后续的取指令PC。同时CPU11还向L1-cache13输出Branch_FAIL信号,它是CPU11的一个分支预测失败信号,指示CPU11发送给L1-cache13之前的一个PC是无效的,L1-cache13不应该向CPU11返回有效的指示信号和数据。L1-Cache在接收到Branch_FAIL信号后,必须对该信号之前的一个PC做失效处理,失效PC查询L1-cache13的数据或者读L2-cache数据不能返回给CPU11。
针对现有技术的L1-cache13设计,对CPU11和L1-cache13部件的工作过程,时序分析图如图2所示,此时序图中,FIFO12的写入和读出为一个时钟周期,PC查询L1-cache13命中并返回给CPU11数据也为一个时钟周期(理想情况下)。从这个时序图来看,当前的设计存在一些不足。
首先,当L1-cache13接收到CPU11发送的Branch_FAIL有效时,表示该信号的前一个PC是一个分支预测失败信号,CPU11需要无效前一个PC。L1-Cache在处理时需要kill掉该PC,但是应该被kill的PC已经被写入了FIFO12,后续L1-cache13仍然需要从FIFO12中读出,并处理该失效的PC,造成了L1-cache13处理资源浪费。在T3周期Branch_FAIL有效,指示PC1为一个分支预测失败PC,L1-cache13将不会给CPU11返回PC1的指令数据。如果L1-cache13不处理PC1,在T4周期就可以读出PC2并处理,那么L1-cache13对PC2的处理可以提前2个周期。
其次,L1-cache13处理PC的latency理想情况下为三个时钟周期,会给系统性能带来降低。以图2为例,CPU11在T1周期给cache输出PC0,在T4周期才得到PC0的指令数据,耗费了三个时钟周期。由于后续计算PC3地址输出依赖前面PC0的指令结果,从图2中看出,由于L1-cache13的处理延时,CPU11流水线中间会出现停止状态,降低了CPU11执行效率。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.对分支预测失败的指令缓存快速处理的芯片系统,其特征在于:包括处理器(1)、数据缓存器(2)、一级缓存(3)、二级缓存(4);
所述一级缓存(3)和二级缓存(4)为位于处理器(1)与主内存之间的缓冲存储器;所述数据缓存器(2)用于对处理器(1)发送过来的PC寻址信号进行缓存;
所述一级缓存(3)和数据缓存器(2)同时与处理器(1)连接,用于接收处理器(1)发出的分支预测失败信号和PC寻址信号;
当分支预测失败指示的PC寻址信号在数据缓存器(2)时,数据缓存器(2)的写指针回退,同时移除该PC寻址信号;
当分支预测失败指示的PC寻址信号没有进入数据缓存器(2)且正在被一级缓存(3)处理时,则一级缓存(3)停止对该PC寻址信号的处理,且不再向处理器(1)返回该PC寻址信号对应的数据和有效信号。
2.根据权利要求1所述的对分支预测失败的指令缓存快速处理的芯片系统,其特征在于,所述数据缓存器(2)采用单元宽度和深度可配置的数据缓存器。
3.根据权利要求1所述的对分支预测失败的指令缓存快速处理的芯片系统,其特征在于,所述数据缓存器(2)采用支持对已写入的数据进行回写移除操作且支持在回写的同周期写入新数据的数据缓存器。
4.根据权利要求1-3任一项所述的对分支预测失败的指令缓存快速处理的芯片系统,其特征在于,所述数据缓存器(2)采用FIFO存储器。
5.根据权利要求4所述的对分支预测失败的指令缓存快速处理的芯片系统,其特征在于,所述数据缓存器(2)采用的FIFO存储器为单端口的同步FIFO存储器,其使用寄存器搭建。
6.根据权利要求4所述的对分支预测失败的指令缓存快速处理的芯片系统,其特征在于,所述数据缓存器(2)采用的FIFO存储器支持FAST-THROUGH读出输出模式。
7.根据权利要求1所述的对分支预测失败的指令缓存快速处理的芯片系统,其特征在于,所述处理器(1)内部设有程序计数器,用于存储将取指令的内存地址,处理器(1)根据程序计数器中存储的将取指令的内存地址从缓冲存储器中取出指令。
8.对分支预测失败的指令缓存快速处理的方法,其特征在于,采用如权利要求1-7任一项所述对分支预测失败的指令缓存快速处理的芯片系统来实施;
所述对分支预测失败的指令缓存快速处理的方法包括以下步骤:
一级缓存(3)和数据缓存器(2)同时与处理器(1)连接,接收处理器(1)发出的分支预测失败信号和PC寻址信号;
当分支预测失败指示的PC寻址信号在数据缓存器(2)时,数据缓存器(2)的写指针回退,同时移除该PC寻址信号;
当分支预测失败指示的PC寻址信号没有进入数据缓存器(2)且正在被一级缓存(3)处理时,则一级缓存(3)停止对该PC寻址信号的处理,且不再向处理器(1)返回该PC寻址信号对应的数据和有效信号。
9.根据权利要求8所述的对分支预测失败的指令缓存快速处理的方法,其特征在于,当数据缓存器(2)为空时,处理器(1)发出的PC寻址信号直接查询一级缓存(3),且PC寻址信号不写入数据缓存器(2),该PC寻址信号查询一级缓存(3)后的指令数据在下一个周期返回给处理器(1)。
10.根据权利要求8所述的对分支预测失败的指令缓存快速处理的方法,其特征在于,当数据缓存器(2)为非空时,数据缓存器(2)设置为FAST-THROUGH读出输出模式,其顶端单元的数据值总是在其输出端口,使用数据缓存器(2)输出端口的PC寻址信号直接查询一级缓存(3),该PC寻址信号查询一级缓存(3)后的指令数据在下一个周期返回给处理器(1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310799174.8A CN116521577B (zh) | 2023-07-03 | 2023-07-03 | 对分支预测失败的指令缓存快速处理的芯片系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310799174.8A CN116521577B (zh) | 2023-07-03 | 2023-07-03 | 对分支预测失败的指令缓存快速处理的芯片系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116521577A CN116521577A (zh) | 2023-08-01 |
CN116521577B true CN116521577B (zh) | 2023-10-13 |
Family
ID=87392535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310799174.8A Active CN116521577B (zh) | 2023-07-03 | 2023-07-03 | 对分支预测失败的指令缓存快速处理的芯片系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521577B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648287B (zh) * | 2024-01-30 | 2024-05-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种片上数据处理系统、方法、服务器及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132391A (ja) * | 1998-10-23 | 2000-05-12 | Nec Corp | 分岐予測機構 |
CN106843816A (zh) * | 2017-01-23 | 2017-06-13 | 青岛朗思信息科技有限公司 | 一种分支预测控制方法及装置 |
CN114116016A (zh) * | 2022-01-27 | 2022-03-01 | 广东省新一代通信与网络创新研究院 | 指令预取方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器系统和方法 |
US11403103B2 (en) * | 2020-04-14 | 2022-08-02 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with multi-step ahead branch predictor and having a fetch-target queue between the branch predictor and instruction cache |
-
2023
- 2023-07-03 CN CN202310799174.8A patent/CN116521577B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132391A (ja) * | 1998-10-23 | 2000-05-12 | Nec Corp | 分岐予測機構 |
CN106843816A (zh) * | 2017-01-23 | 2017-06-13 | 青岛朗思信息科技有限公司 | 一种分支预测控制方法及装置 |
CN114116016A (zh) * | 2022-01-27 | 2022-03-01 | 广东省新一代通信与网络创新研究院 | 指令预取方法及装置 |
Non-Patent Citations (1)
Title |
---|
一种缓存数据流信息的处理器前端设计;刘炳涛;王达;叶笑春;张浩;范东睿;张志敏;;计算机研究与发展(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116521577A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5226130A (en) | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency | |
US7073043B2 (en) | Multiprocessor system supporting multiple outstanding TLBI operations per partition | |
US6067616A (en) | Branch prediction device with two levels of branch prediction cache | |
US5694568A (en) | Prefetch system applicable to complex memory access schemes | |
US7647518B2 (en) | Replay reduction for power saving | |
US5809530A (en) | Method and apparatus for processing multiple cache misses using reload folding and store merging | |
US5185871A (en) | Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions | |
US7383415B2 (en) | Hardware demapping of TLBs shared by multiple threads | |
US7617378B2 (en) | Multiprocessor system with retry-less TLBI protocol | |
US8806177B2 (en) | Prefetch engine based translation prefetching | |
US9886385B1 (en) | Content-directed prefetch circuit with quality filtering | |
US8145848B2 (en) | Processor and method for writeback buffer reuse | |
EP1555617B1 (en) | Microprocessor with variable latency stack cache | |
US8327077B2 (en) | Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines | |
EP1555616A2 (en) | Microprocessor and apparatus for performing speculative load operation from a stack memory cache | |
EP0795820A2 (en) | Combination prefetch buffer and instructions cache | |
EP1555611A2 (en) | Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache | |
CN116521577B (zh) | 对分支预测失败的指令缓存快速处理的芯片系统及方法 | |
US5649137A (en) | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency | |
US20080141002A1 (en) | Instruction pipeline monitoring device and method thereof | |
CN116521578A (zh) | 一种提高指令缓存预取执行效率的芯片系统及方法 | |
US6389527B1 (en) | Microprocessor allowing simultaneous instruction execution and DMA transfer | |
US6393523B1 (en) | Mechanism for invalidating instruction cache blocks in a pipeline processor | |
US9405690B2 (en) | Method for storing modified instruction data in a shared cache | |
US20080140993A1 (en) | Fetch engine monitoring device and method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |