CN117453435A - 缓存数据读取方法、装置、设备及存储介质 - Google Patents
缓存数据读取方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117453435A CN117453435A CN202311764013.1A CN202311764013A CN117453435A CN 117453435 A CN117453435 A CN 117453435A CN 202311764013 A CN202311764013 A CN 202311764013A CN 117453435 A CN117453435 A CN 117453435A
- Authority
- CN
- China
- Prior art keywords
- instruction
- wake
- queue
- data
- refill
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000000903 blocking effect Effects 0.000 claims description 10
- 230000002618 waking effect Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 25
- 238000012545 processing Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 101150015860 MC1R gene Proteins 0.000 description 1
- 102100034216 Melanocyte-stimulating hormone receptor Human genes 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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)
- 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)
Abstract
本申请提供了一种缓存数据读取方法、装置、电子设备及计算机可读存储介质,包括:在确定处理器的访存指令在一级缓存中未命中的情况下,控制访存指令从二级缓存的流水线队列的起始数据位进入流水线队列;在间隔第一数量的数据位后,获取访存指令在二级缓存的命中结果;若结果为命中,则立即通过二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过二级缓存获取重填数据,将访存指令作为重填指令由重填队列发出。本申请整个过程无需读取流水线状态和重填队列请求的状态,仅需基于请求自身的状态实时计算唤醒指令提前发出时刻,因此复杂度极低,降低了电路的成本和功耗,同时能够保证唤醒时机的准确。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种缓存数据读取方法、装置、电子设备及计算机可读存储介质。
背景技术
现代处理器中一般设有三级缓存:一级缓存L1、二级缓存L2和三级缓存L3,当处理器的访存指令访问一级缓存L1未命中时,二级缓存L2则需要将访存指令所请求的数据重填至一级缓存L1中,以保证数据访问的正常进行。
目前,若等到二级缓存L2重填数据至一级缓存L1后,再唤醒处理器对一级缓存L1的访问,则访问过程会产生较长时间的延时,为了降低该延时,可以由二级缓存L2读取自身流水线队列和重填请求队列中的请求状态,基于该请求状态计算出提前发送唤醒请求的时刻,将唤醒请求提前发出,即提前唤醒处理器对一级缓存L1的访问,并非等待重填完成后再唤醒,从而降低了访问延时。
但是,上述过程中,由于流水线队列和唤醒请求队列状态繁多,导致计算提前发出时刻具有极高的复杂度,使得实现电路的成本和功耗较高,若为了降低复杂度而减少考虑的状态数,又会导致准确率和覆盖率下降。
发明内容
本申请实施例提供一种缓存数据读取方法、装置、电子设备及计算机可读存储介质,以解决相关技术中的问题。
第一方面,本申请实施例提供了一种缓存数据读取方法,所述方法包括:
在确定处理器的访存指令在一级缓存中未命中的情况下,控制所述访存指令从所述二级缓存的流水线队列的起始数据位进入所述流水线队列;所述流水线队列包括顺序排列的多个数据位;
在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果;
若所述命中结果为命中,则立即通过所述二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出;
其中,所述唤醒指令用于唤醒通过所述访存指令从所述一级缓存中读数据的操作;所述重填指令用于将所述重填数据写入所述一级缓存供所述访存指令读取。
第二方面,本申请实施例提供了一种缓存数据读取装置,所述装置包括:
入队模块,用于在确定处理器的访存指令在一级缓存中未命中的情况下,控制所述访存指令从所述二级缓存的流水线队列的起始数据位进入所述流水线队列;所述流水线队列包括顺序排列的多个数据位;
判断模块,用于在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果;
出队模块,用于若所述命中结果为命中,则立即通过所述二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出;
其中,所述唤醒指令用于唤醒通过所述访存指令从所述一级缓存中读数据的操作;所述重填指令用于将所述重填数据写入所述一级缓存供所述访存指令读取。
第三方面,本申请实施例还提供了一种电子设备,包括处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现所述第一方面的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行所述第一方面的方法。
本申请实施例中,在确定处理器的访存指令在一级缓存中未命中的情况下,控制访存指令从起始数据位进入流水线队列;并在间隔第一数量的数据位后,获取访存指令在所述二级缓存的命中结果;若所述命中结果为命中,则立即通过二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过二级缓存获取重填数据,将访存指令作为重填指令由重填队列发出。本申请通过二级缓存简洁明了的多级流水线队列架构实现了对访存指令的管理,基于流水线队列的架构和指令在流水线中各个处理时机的设计,可以达到对发出唤醒请求的固定提前量的精确且稳定的控制,保证了唤醒指令的准确率和覆盖率。整个过程无需读取流水线各级请求的状态,以及基于重填队列请求的状态实时计算提前发出时刻,因此复杂度极低,降低了电路的成本和功耗。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施场景架构图;
图2是本申请实施例提供的一种缓存数据读取方法的步骤流程图;
图3是本申请实施例提供的一种缓存数据读取方法的具体步骤流程图;
图4是本申请实施例提供的一种缓存数据读取装置的框图;
图5是本发明实施例提供的一种电子设备的框图;
图6是本发明另一个实施例的另一种电子设备的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
参照图1,图1是本申请实施例提供的一种实施场景架构图,现代处理器为了提升执行效率,减少处理器与内存的交互,可以在处理器上集成多级缓存架构,常见的架构为图1的三级缓存结构,包括:一级缓存L1、二级缓存L2和三级缓存L3。一级缓存L1是最接近处理器的缓存,它容量最小,速度最快;二级缓存L2的容量更大一些,但速度相对一级缓存L1要慢一些,二级缓存L2就是一级缓存L1的缓冲器,二级缓存L2的作用就是存储那些处理器处理时需要用到,但一级缓存L1又无法存储的数据;三级缓存L3的容量最大,同时也是速度最慢的一级,三级缓存L3和内存可以看作是二级缓存L2的缓冲器。
当处理器运作时,处理器会根据访存指令首先去一级缓存L1寻找所需要的数据,之后去二级缓存L2,之后再去三级缓存L3,如果三级缓存都没找到它需要的数据,则从内存里获取数据。寻找的路径越长,耗时越长,所以如果要非常频繁的获取某些数据,保证这些数据在一级缓存L1里,这样速度将非常快。其中,访存指令是从内存的指定地址获取数据,或往内存中的指定地址存储数据的指令。
具体的,二级缓存L2可以采用5级流水线架构,即包含一个具有5个顺序排列的数据位的流水线队列,每个数据位对应一个流水线时刻,不同数据位对应的流水线时刻不同,请求用于从流水线队列的初始数据位进入流水线,并随着时间的迁移,改变所处的数据位;二级缓存L2还可以包括唤醒队列和重填队列,重填队列用于发送重填请求至一级缓存L1,以从二级缓存L2中,将访存请求所需要读取,但未在一级缓存L1中存储的数据,重填入一级缓存L1中;唤醒队列用于发送唤醒请求至一级缓存L1,以唤醒处理器基于访存指令访问一级缓存L1的动作。
图2,是本申请实施例提供的一种缓存数据读取方法的步骤流程图,如图2所示,该方法可以包括:
步骤101、在确定处理器的访存指令在一级缓存中未命中的情况下,控制所述访存指令从所述二级缓存的流水线队列的起始数据位进入所述流水线队列;所述流水线队列包括顺序排列的多个数据位。
在本申请实施例中,参照图1,处理器通过访存指令读取数据,是按照一级缓存L1、二级缓存L2、三级缓存L3、内存的顺序依次进行读取的。处理器的访存指令在一级缓存L1中未命中,是指该访存指令所请求读取的数据未在一级缓存L1中存储,此时一级缓存L1可以将访存指令传递至二级缓存L2,以确定二级缓存L2是否存有该数据,若存有,则寻求让二级缓存L2将该数据重填进一级缓存L1中。
具体的,二级缓存L2可以采用多级流水线架构,即包含一个具有多个顺序排列的数据位的流水线队列,每个数据位对应一个流水线时刻,不同数据位对应的流水线时刻不同,流水线队列的作用是接收和发出指令,并按照时序维护指令的状态。访存指令具体可以从流水线队列的起始数据位(S1)进入流水线。
步骤102、在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果。
在本申请实施例中,访存指令从流水线队列的起始数据位(S1)进入二级缓存的流水线后,需要进一步查看二级缓存中是否具有访存指令请求读取的数据,判断是否存在该数据的过程可以理解为判断访存指令在二级缓存中的命中结果,命中结果包括命中或未命中,命中代表二级缓存中具有访存指令请求读取的数据;未命中代表二级缓存中未存有访存指令请求读取的数据。
具体的,判断访存指令在二级缓存中的命中结果需要遍历二级缓存中的数据,因此需要花费一定的时长,该时长是固定的,参照图1,本申请实施例可以在访存指令从流水线队列的起始数据位(S1)进入流水线后,间隔第一数量的数据位(间隔2个数据位)后,再获取访存指令在二级缓存的命中结果(在S3数据位对应的时刻获取命中结果),由于获得了命中结果,且命中结果包括命中或未命中。因此本申请实施例后续可以根据命中结果执行响应的指令控制操作。
需要说明的是,间隔第一数量的数据位(图1为间隔2个数据位),是指等待判断访存指令在二级缓存中的命中结果的操作执行所需的时长,由于该时长是固定的,并且二级缓存的流水线队列中数据位表征时刻,因此该时长可以换算为第一数量的数据位,从起始数据位(S1)起间隔第一数量的数据位,表征在访存指令进入二级缓存的流水线后,等待判断是否命中的执行过程完成,从而获得访存指令在二级缓存中的命中结果。
步骤103、若所述命中结果为命中,则立即通过所述二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出。
其中,所述唤醒指令用于唤醒通过所述访存指令从所述一级缓存中读数据的操作;所述重填指令用于将所述重填数据写入所述一级缓存供所述访存指令读取。
在本申请实施例中,命中结果为命中,表征二级缓存中具有访存指令请求读取的数据,因此一级缓存寻求让二级缓存将该数据重填进一级缓存中,并且,二级缓存发出的唤醒指令可以唤醒在一级缓存中未命中的访存指令,唤醒后,访存指令可以从一级缓存中快速读取到数据,这样处理器的访存指令即可正常实现读取数据的功能。
但是,若等到二级缓存重填数据至一级缓存后,再唤醒访存指令对一级缓存的访问,则已重填完成的数据需等待访存指令的唤醒,整个过程会产生较长时间的延时(即重填数据后,唤醒访存指令需要花费一定时间,访存指令仍需数个周期才能真正读取到重填数据),为了降低该延时,本申请实施例可以控制二级缓存,让其在发出重填指令之前就提前先发出唤醒指令,并且确保该提前量固定且准确。
为了实现该目的,参照图1,本申请实施例针对命中结果为命中的情况,可以在获取到该命中结果的时刻(数据位S3对应的时刻),由二级缓存立即生成唤醒指令并由唤醒队列发出至一级缓存,以及在获取到该命中结果的时刻(数据位S3对应的时刻)间隔第二数量的数据位(间隔2个数据位)后,在数据位S5对应的时刻获取访存指令请求读取的重填数据,并在数据位S5对应的时刻将该访存指令作为重填指令由重填队列发出至一级缓存,其中重填指令携带了重填数据。
需要说明的是,间隔第二数量的数据位是指等待第二数量的数据位所表征的时长,该等待时长是二级缓存读取到重填数据所花费的时长,该等待时长是固定的,因此该时长可以换算为第二数量的数据位,从获取到该命中结果的时刻(数据位S3对应的时刻)间隔第二数量的数据位(间隔2个数据位),表征等待二级缓存获取重填数据的过程。
由于一级缓存在数据位S3对应的时刻就接收到了唤醒指令,因此可以提前开始执行访存指令的唤醒,而一级缓存针对后续接收到的重填,可以立即进行重填数据的读取,因此无需再等待访存指令的唤醒所花费的时间开销,显著节省了访存指令读取过程的延时。
例如,参照图1,命中结果为命中的情况下,唤醒请求的实际发送时机是数据位S3对应的时刻,重填请求由于要在重填队列中等待一个数据位表征的时长(确保位于重填队列出口处的重填请求及时发出,降低重填队列堵塞的几率),因此重填请求实际的发出时机为数据位S6(未绘出)对应的时刻,可见,本申请图1实施例可以保证针对每个重填请求,都有一个提前三个数据位的唤醒请求发出。
本申请实施例通过二级缓存简洁明了的多级流水线队列架构实现了对访存指令的管理,并基于获取命中结果所花费的固定时长以及获取重填数据所花费的固定时长,基于流水线队列,设计了在一个固定的数据位获取访存指令的命中结果和发送唤醒请求,以及在另一固定的数据位获取重填数据和将重填请求通过重填队列发出;基于流水线队列的架构和指令在流水线中各个处理时机的设计,可以达到对发出唤醒请求的固定提前量的精确且稳定的控制,保证了访存指令读取过程的准确率和覆盖率。整个过程无需读取流水线各级请求的状态,以及基于重填队列请求的状态实时计算提前发出时刻,因此复杂度极低,降低了电路的成本和功耗。
综上,本申请实施例中,在确定处理器的访存指令在一级缓存中未命中的情况下,控制访存指令从起始数据位进入流水线队列;并在间隔第一数量的数据位后,获取访存指令在所述二级缓存的命中结果;若所述命中结果为命中,则立即通过二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过二级缓存获取重填数据,将访存指令作为重填指令由重填队列发出。本申请通过二级缓存简洁明了的多级流水线队列架构实现了对访存指令的管理,基于流水线队列的架构和指令在流水线中各个处理时机的设计,可以达到对发出唤醒请求的固定提前量的精确且稳定的控制,保证了唤醒指令的准确率和覆盖率。整个过程无需读取流水线各级请求的状态,以及基于重填队列请求的状态实时计算提前发出时刻,因此复杂度极低,降低了电路的成本和功耗。
图3是本申请实施例提供的一种缓存数据读取方法的具体步骤流程图,如图3所示,该方法可以包括:
步骤201、在确定处理器的访存指令在一级缓存中未命中的情况下,控制所述访存指令从所述二级缓存的流水线队列的起始数据位进入所述流水线队列;所述流水线队列包括顺序排列的多个数据位。
该步骤具体可以参照上述步骤101,此处不做赘述。
步骤202、在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果。
该步骤具体可以参照上述步骤102,此处不做赘述。
可选的,所述流水线队列包括5个顺序排列的数据位,每个所述数据位对应一个流水线时刻,不同所述数据位对应的流水线时刻不同;步骤202具体可以包括:
子步骤2021、在间隔2个数据位后,获取所述访存指令在所述二级缓存的命中结果。
在本申请实施例中,参照图1,在一种实施场景中,流水线队列可以包括5个顺序排列的数据位:数据位S1-数据位S5,基于对判断访存指令在二级缓存中的命中结果所需耗费时长的分析,发现该判断过程耗费连续2个数据位所表征的时长,因此本申请设计指令的处理时机为:从起始数据位(S1)起间隔2个数据位即可获取命中结果,这表征在访存指令进入二级缓存的流水线后,等待判断是否命中的执行过程完成,从而获得访存指令在二级缓存中的命中结果。
步骤203、若所述命中结果为命中,则立即通过所述二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出。
其中,所述唤醒指令用于唤醒通过所述访存指令从所述一级缓存中读数据的操作;所述重填指令用于将所述重填数据写入所述一级缓存供所述访存指令读取。
该步骤具体可以参照上述步骤103,此处不做赘述。
可选的,所述流水线队列包括5个顺序排列的数据位,每个所述数据位对应一个流水线时刻,不同所述数据位对应的流水线时刻不同;步骤203具体可以包括:
子步骤2031、在间隔2个数据位后,通过所述二级缓存获取所述重填数据。
在本申请实施例中,参照图1,在一种实施场景中,流水线队列可以包括5个顺序排列的数据位:数据位S1-数据位S5,基于对二级缓存获取重填数据所需耗费时长的分析,发现该获取过程耗费连续2个数据位所表征的时长,因此本申请设计指令的处理时机为:从获取到该命中结果的时刻(数据位S3对应的时刻)间隔2个数据位即可获得重填数据,表征流水线中的指令等待二级缓存获取重填数据的过程。
可选的,所述方法还可以包括:
步骤204、若所述命中结果为未命中,则控制所述访存指令脱离所述流水线队列,并在等待三级缓存重填所述二级缓存后,控制所述访存指令从所述起始数据位进入所述流水线队列,同时通过所述二级缓存生成唤醒指令并由唤醒队列发出;以及在间隔所述第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出。
在本申请实施例中,命中结果为未命中,表征二级缓存中未存有访存指令请求读取的数据,此时需要查看三级缓存中是否具有该数据,若三级缓存中存有该数据,则让三级缓存将该数据重填至二级缓存中,再让二级缓存将该数据重填至一级缓存,以供访存指令读取;若三级缓存中未存有该数据,则从内存中读取该数据重填至三级缓存,再由三级缓存将该数据重填至二级缓存中,最后让二级缓存将该数据重填至一级缓存,以供访存指令读取。
具体的,在命中结果为未命中时,由于需要等待三级缓存将数据重填至二级缓存,因此可以先控制访存指令脱离流水线队列以等待三级缓存的重填完成。参照图1,在等待三级缓存重填二级缓存后,再控制访存指令重新从起始数据位进入所述流水线队列,同时通过所述二级缓存生成唤醒指令并由唤醒队列发出(进入唤醒队列以及发出唤醒指令的时刻为数据位S1对应的时刻);以及在间隔第二数量的数据位后(间隔2个数据位),通过二级缓存获取重填数据,将访存指令作为重填指令由重填队列发出。
例如,参照图1,命中结果为未命中的情况下,唤醒请求的实际发送时机是数据位S1对应的时刻,重填请求由于要在重填队列中等待一个数据位表征的时长(确保位于重填队列出口处的重填请求及时发出,降低重填队列堵塞的几率),因此重填请求实际的发出时机为数据位S4对应的时刻,可见,本申请图1实施例可以保证针对每个重填请求,都有一个提前三个数据位的唤醒请求发出。
可选的,在控制所述访存指令脱离所述流水线队列之后,所述方法还可以包括:
步骤205、控制所述访存指令进入缺失状态寄存器进行等待。
在等待三级缓存重填所述二级缓存后之后,所述方法还可以包括:
步骤206、从所述缺失状态寄存器中提取所述访存指令,并进入步骤201。
在步骤205-206中,访存指令脱离二级缓存的流水线后,可以进入缺失状态寄存器(MSHR,Miss-status Handling Registers)进行等待,缺失状态寄存器是用来记录每一项未完成的事务的寄存器,记录的信息包括失效地址、关键字信息以及未完成执行的指令等。一旦三级缓存对二级缓存重填完成后,缺失状态寄存器中的访存指令即可重新执行。重新执行的访存指令可以重新由起始数据位进入二级缓存的流水线队列。
可选的,通过所述二级缓存生成唤醒指令并由唤醒队列发出的过程,具体可以通过以下子步骤实现:
子步骤A1、通过所述二级缓存生成所述唤醒指令,并将所述唤醒指令添加至所述唤醒队列。
子步骤A2、在所述唤醒指令之前排有其他唤醒指令的情况下,等待所述其他唤醒指令发出后,将所述唤醒指令从所述唤醒队列中发出。
子步骤A3、在所述唤醒指令之前未排有其他唤醒指令的情况下,直接将所述唤醒指令从所述唤醒队列中发出。
在本申请实施例中,针对子步骤A1-A3,唤醒队列的入队策略,包括:针对在二级缓存中命中的访存指令,其对应的唤醒指令在起始数据位起间隔第一数量的数据位后进行入队(入队时机为图1流水线队列的数据位S3);针对在二级缓存中未命中的访存指令,其对应的唤醒指令在起始数据位即进行入队(入队时机为图1流水线队列的数据位S1)。
而对于唤醒队列的出队策略,可以采用始终可以出队(如果队列为空,可以在当前数据位进行出队),具体为在所述唤醒指令之前排有其他唤醒指令的情况下,等待所述其他唤醒指令发出后,将所述唤醒指令从所述唤醒队列中发出。而在所述唤醒指令之前未排有其他唤醒指令的情况下,直接将所述唤醒指令从所述唤醒队列中发出,从而提升唤醒队列对唤醒指令的发送效率。
需要说明的是,唤醒请求进入唤醒队列后无需再等待一个数据位。
可选的,将所述访存指令作为重填指令由重填队列发出的过程,具体可以通过以下子步骤实现:
子步骤B1、将所述重填指令在所述重填队列中等待一个数据位后再发出。
在本申请实施例中,将所述重填指令在重填队列中等待一个数据位后再发出,其目的是确保位于重填队列出口处的重填请求及时发出,降低重填队列堵塞的几率。
例如,参照图1,命中结果为命中的情况下,重填请求在数据位S5进入重填队列,由于重填请求要在重填队列中等待一个数据位表征的时长,因此重填请求实际的发出时机为数据位S6(未绘出)对应的时刻。
可选的,二级缓存包括多个不同的端口,每个所述端口具有对应的流水线队列、重填队列以及唤醒队列;通过所述二级缓存生成唤醒指令并由唤醒队列发出的过程,具体可以通过以下子步骤实现:
子步骤C1、通过所述二级缓存生成唤醒指令,并确定所述流水线队列的当前数据位中待发送唤醒指令的候选端口。
子步骤C2、按照预设的仲裁策略,从所有所述候选端口中选取允许发送唤醒指令的目标端口。
子步骤C3、通过与所述目标端口对应的目标唤醒队列,发送与所述目标端口对应的目标唤醒指令,并阻塞其余端口对唤醒指令的发送。
在本申请实施例中,针对子步骤C1-C3,二级缓存可以包括多个不同的端口,每个端口具有对应的流水线队列、重填队列以及唤醒队列,不同端口的流水线队列、重填队列以及唤醒队列不同。
对于二级缓存具有多个端口,而一级缓存只有一个端口的情况,会存在某一时刻二级缓存的多个端口都分别要发送唤醒请求至一级缓存,而一级缓存同时只能收取一个唤醒请求,这就导致二级缓存的某一端口1成功发送唤醒请求后(其余端口则需等待),后续三个数据位后,由于端口竞争,不一定是该端口1发送重填请求至一级缓存(可能是其他端口发送了重填请求),这就导致端口发送的唤醒请求和重填请求不同步,影响访存请求读取过程的稳定性。
为了解决该问题,本申请实施例可以在通过二级缓存生成唤醒指令时,确定流水线队列的当前数据位(当前时刻)中待发送唤醒指令的所有候选端口,之后可以按照预设的仲裁策略,从所有候选端口中选取允许发送唤醒指令的目标端口。选出目标端口后,发送与目标端口对应的目标唤醒指令,阻塞其余端口对唤醒指令的发送。
需要说明的是,仲裁策略可以有多种实现形式,如一种实现形式可以随机选取所有候选端口中的一个候选端口作为目标端口。另一种实现形式可以以轮询的形式选取目标端口,如当前时刻由端口1作为目标端口发送唤醒请求,下一时刻若候选端口中具有端口2,则由端口2作为目标端口发送唤醒请求(若候选端口中不具有端口2但具有端口3,则由端口3作为目标端口发送唤醒请求,以此类推);再下一时刻若候选端口中具有端口3,则由端口3作为目标端口发送唤醒请求(若候选端口中不具有端口3但具有端口4,则由端口4作为目标端口发送唤醒请求,以此类推)。
基于子步骤C1-C3,在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出的过程,具体可以通过以下子步骤实现:
子步骤D1、在间隔第二数量的数据位后,继续由选择的目标端口作为发送重填指令的端口,通过所述目标端口对应的重填队列,发送与所述目标端口对应的目标重填指令,并阻塞其余端口对重填指令的发送。
进一步的,由于通过仲裁策略选定了目标端口进行唤醒指令的发送,则在间隔第二数量的数据位后,继续由该目标端口发送目标重填指令,从而阻塞其余端口对重填指令的发送。这样可以保证二级缓存中每个端口对唤醒指令和重填指令的精准发送,并保证发送的唤醒指令的提前量稳定且准确,每个端口的对唤醒指令和重填指令的发送是一个独立过程,不受其余端口的影响。
需要说明的是,实现对除目标端口之外其余端口的阻塞,可以通过设置一个掩码(mask)来实现,掩码中,将目标端口之外的其余端口对应的有效位覆盖为0即可。
综上,相关技术中,由二级缓存读取自身流水线队列和重填请求队列中的请求状态,基于该请求状态计算出提前发送唤醒请求的时刻,将唤醒请求提前发出,这种方式需要分析25×2×2×2×16=524,288种以上状态,有着极高的复杂度,因而实现时只能采取简化方案,从而降低了覆盖率和准确率。而本申请实施例仅需基于请求自身的状态实时计算提前发出时刻,整个过程无需读取流水线请求的状态,因此复杂度极低,降低了电路的成本和功耗。例如,图1示例中,本申请实施例的方案可以为所有在一级缓存中未命中的访存请求的读取降低3个数据位的延迟。特别地,对于在一级缓存中未命中但在二级缓存中命中的请求,其延迟只有10个数据位,因此降低3个数据位的延时是非常可观的收益。
综上所述,本申请实施例中,在确定处理器的访存指令在一级缓存中未命中的情况下,控制访存指令从起始数据位进入流水线队列;并在间隔第一数量的数据位后,获取访存指令在所述二级缓存的命中结果;若所述命中结果为命中,则立即通过二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过二级缓存获取重填数据,将访存指令作为重填指令由重填队列发出。本申请通过二级缓存简洁明了的多级流水线队列架构实现了对访存指令的管理,基于流水线队列的架构和指令在流水线中各个处理时机的设计,可以达到对发出唤醒请求的固定提前量的精确且稳定的控制,保证了唤醒指令的准确率和覆盖率。整个过程无需读取流水线各级请求的状态,以及基于重填队列请求的状态实时计算提前发出时刻,因此复杂度极低,降低了电路的成本和功耗。
图4是本申请实施例提供的一种缓存数据读取装置的框图,该装置包括:
入队模块301,用于在确定处理器的访存指令在一级缓存中未命中的情况下,控制所述访存指令从所述二级缓存的流水线队列的起始数据位进入所述流水线队列;所述流水线队列包括顺序排列的多个数据位;
判断模块302,用于在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果;
出队模块303,用于若所述命中结果为命中,则立即通过所述二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出;
其中,所述唤醒指令用于唤醒通过所述访存指令从所述一级缓存中读数据的操作;所述重填指令用于将所述重填数据写入所述一级缓存供所述访存指令读取。
可选的,所述装置还包括:
脱离模块,用于若所述命中结果为未命中,则控制所述访存指令脱离所述流水线队列;
重进入模块,用于在等待三级缓存重填所述二级缓存后,控制所述访存指令从所述起始数据位进入所述流水线队列,同时通过所述二级缓存生成唤醒指令并由唤醒队列发出;
重填模块,用于在间隔所述第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出。
可选的,所述装置还包括:
等待模块,用于控制所述访存指令进入缺失状态寄存器进行等待;
提取模块,用于从所述缺失状态寄存器中提取所述访存指令,并进入控制所述访存指令从所述起始数据位进入所述流水线队列,同时生成唤醒指令并由唤醒队列发出的步骤。
可选的,所述出队模块303,包括:
添加子模块,用于通过所述二级缓存生成所述唤醒指令,并将所述唤醒指令添加至所述唤醒队列;
第一判断子模块,用于在所述唤醒指令之前排有其他唤醒指令的情况下,等待所述其他唤醒指令发出后,将所述唤醒指令从所述唤醒队列中发出;
第二判断子模块,用于在所述唤醒指令之前未排有其他唤醒指令的情况下,直接将所述唤醒指令从所述唤醒队列中发出。
可选的,所述出队模块303,包括:
发送子模块,用于将所述重填指令在所述重填队列中等待一个数据位后再发出。
可选的,所述流水线队列包括5个顺序排列的数据位,每个所述数据位对应一个流水线时刻,不同所述数据位对应的流水线时刻不同;
所述判断模块302,包括:
第一间隔子模块,用于在间隔2个数据位后,获取所述访存指令在所述二级缓存的命中结果;
所述出队模块303,包括:
第二间隔子模块,用于在间隔2个数据位后,通过所述二级缓存获取所述重填数据。
可选的,所述二级缓存包括多个不同的端口,每个所述端口具有对应的流水线队列、重填队列以及唤醒队列;
所述出队模块303,包括:
候选子模块,用于通过所述二级缓存生成唤醒指令,并确定所述流水线队列的当前数据位中待发送唤醒指令的候选端口;
仲裁子模块,用于按照预设的仲裁策略,从所有所述候选端口中选取允许发送唤醒指令的目标端口;
第一阻塞子模块,用于通过与所述目标端口对应的目标唤醒队列,发送与所述目标端口对应的目标唤醒指令,并阻塞其余端口对唤醒指令的发送。
可选的,所述出队模块303,包括:
第二阻塞子模块,用于在间隔第二数量的数据位后,继续由选择的目标端口作为发送重填指令的端口,通过所述目标端口对应的重填队列,发送与所述目标端口对应的目标重填指令,并阻塞其余端口对重填指令的发送。
综上,本申请实施例中,在确定处理器的访存指令在一级缓存中未命中的情况下,控制访存指令从起始数据位进入流水线队列;并在间隔第一数量的数据位后,获取访存指令在所述二级缓存的命中结果;若所述命中结果为命中,则立即通过二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过二级缓存获取重填数据,将访存指令作为重填指令由重填队列发出。本申请通过二级缓存简洁明了的多级流水线队列架构实现了对访存指令的管理,基于流水线队列的架构和指令在流水线中各个处理时机的设计,可以达到对发出唤醒请求的固定提前量的精确且稳定的控制,保证了唤醒指令的准确率和覆盖率。整个过程无需读取流水线各级请求的状态,以及基于重填队列请求的状态实时计算提前发出时刻,因此复杂度极低,降低了电路的成本和功耗。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供了一种缓存数据读取装置,包括有存储器,以及一个以上的程序,其中一个以上程序存储于存储器中,且经配置以由一个以上处理器执行所述一个以上程序包含用于进行上述一个或多个实施例中所述的方法。
图5是根据一示例性实施例示出的一种电子设备600的框图。例如,电子设备600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图5,电子设备600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/ O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604用于存储各种类型的数据以支持在电子设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,多媒体等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件606为电子设备600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。
多媒体组件608包括在所述电子设备600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的分界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或多媒体模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610用于输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/ O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到电子设备600的打开/关闭状态,组件的相对定位,例如所述组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616用于便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于实现本申请实施例提供的方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。例如,所述非临时性存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图6是根据一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器。参照图6,电子设备700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本申请实施例提供的方法。
电子设备700还可以包括一个电源组件726被配置为执行电子设备700的电源管理,一个有线或无线网络接口750被配置为将电子设备700连接到网络,和一个输入输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述实施例所述的方法。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (11)
1.一种缓存数据读取方法,其特征在于,所述方法包括:
在确定处理器的访存指令在一级缓存中未命中的情况下,控制所述访存指令从所述二级缓存的流水线队列的起始数据位进入所述流水线队列;所述流水线队列包括顺序排列的多个数据位;
在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果;
若所述命中结果为命中,则立即通过所述二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出;
其中,所述唤醒指令用于唤醒通过所述访存指令从所述一级缓存中读数据的操作;所述重填指令用于将所述重填数据写入所述一级缓存供所述访存指令读取。
2.根据权利要求1所述的缓存数据读取方法,其特征在于,所述方法还包括:
若所述命中结果为未命中,则控制所述访存指令脱离所述流水线队列;
在等待三级缓存重填所述二级缓存后,控制所述访存指令从所述起始数据位进入所述流水线队列,同时通过所述二级缓存生成唤醒指令并由唤醒队列发出;
在间隔所述第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出。
3.根据权利要求2所述的缓存数据读取方法,其特征在于,在所述控制所述访存指令脱离所述流水线队列之后,所述方法还包括:
控制所述访存指令进入缺失状态寄存器进行等待;
在等待三级缓存重填所述二级缓存后,所述方法还包括:
从所述缺失状态寄存器中提取所述访存指令,并进入控制所述访存指令从所述起始数据位进入所述流水线队列,同时生成唤醒指令并由唤醒队列发出的步骤。
4.根据权利要求1或2所述的缓存数据读取方法,其特征在于,所述通过所述二级缓存生成唤醒指令并由唤醒队列发出,包括:
通过所述二级缓存生成所述唤醒指令,并将所述唤醒指令添加至所述唤醒队列;
在所述唤醒指令之前排有其他唤醒指令的情况下,等待所述其他唤醒指令发出后,将所述唤醒指令从所述唤醒队列中发出;
在所述唤醒指令之前未排有其他唤醒指令的情况下,直接将所述唤醒指令从所述唤醒队列中发出。
5.根据权利要求1或2所述的缓存数据读取方法,其特征在于,所述将所述访存指令作为重填指令由重填队列发出,包括:
将所述重填指令在所述重填队列中等待一个数据位后再发出。
6.根据权利要求1所述的缓存数据读取方法,其特征在于,所述流水线队列包括5个顺序排列的数据位,每个所述数据位对应一个流水线时刻,不同所述数据位对应的流水线时刻不同;
所述在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果,包括:
在间隔2个数据位后,获取所述访存指令在所述二级缓存的命中结果;
所述在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,包括:
在间隔2个数据位后,通过所述二级缓存获取所述重填数据。
7.根据权利要求1或2所述的缓存数据读取方法,其特征在于,所述二级缓存包括多个不同的端口,每个所述端口具有对应的流水线队列、重填队列以及唤醒队列;
所述通过所述二级缓存生成唤醒指令并由唤醒队列发出,包括:
通过所述二级缓存生成唤醒指令,并确定所述流水线队列的待发送唤醒指令的候选端口;
按照预设的仲裁策略,从所有所述候选端口中选取允许发送唤醒指令的目标端口;
通过与所述目标端口对应的目标唤醒队列,发送与所述目标端口对应的目标唤醒指令,并阻塞其余端口对唤醒指令的发送。
8.根据权利要求7所述的缓存数据读取方法,其特征在于,所述在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出,包括:
在间隔第二数量的数据位后,继续由选择的目标端口作为发送重填指令的端口,通过所述目标端口对应的重填队列,发送与所述目标端口对应的目标重填指令,并阻塞其余端口对重填指令的发送。
9.一种缓存数据读取装置,其特征在于,所述装置包括:
入队模块,用于在确定处理器的访存指令在一级缓存中未命中的情况下,控制所述访存指令从所述二级缓存的流水线队列的起始数据位进入所述流水线队列;所述流水线队列包括顺序排列的多个数据位;
判断模块,用于在间隔第一数量的数据位后,获取所述访存指令在所述二级缓存的命中结果;
出队模块,用于若所述命中结果为命中,则立即通过所述二级缓存生成唤醒指令并由唤醒队列发出,以及在间隔第二数量的数据位后,通过所述二级缓存获取重填数据,将所述访存指令作为重填指令由重填队列发出;
其中,所述唤醒指令用于唤醒通过所述访存指令从所述一级缓存中读数据的操作;所述重填指令用于将所述重填数据写入所述一级缓存供所述访存指令读取。
10.一种电子设备,其特征在于,包括:处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311764013.1A CN117453435B (zh) | 2023-12-20 | 2023-12-20 | 缓存数据读取方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311764013.1A CN117453435B (zh) | 2023-12-20 | 2023-12-20 | 缓存数据读取方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117453435A true CN117453435A (zh) | 2024-01-26 |
CN117453435B CN117453435B (zh) | 2024-03-15 |
Family
ID=89582142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311764013.1A Active CN117453435B (zh) | 2023-12-20 | 2023-12-20 | 缓存数据读取方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453435B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012788A (zh) * | 2024-04-09 | 2024-05-10 | 北京壁仞科技开发有限公司 | 数据处理器、数据处理方法、电子设备和存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7240160B1 (en) * | 2004-06-30 | 2007-07-03 | Sun Microsystems, Inc. | Multiple-core processor with flexible cache directory scheme |
CN101013361A (zh) * | 2006-02-02 | 2007-08-08 | 国际商业机器公司 | 处理异步流水线的数据高速缓存未命中乱序的装置和方法 |
US20140223143A1 (en) * | 2013-02-06 | 2014-08-07 | International Business Machines Corporation | Load latency speculation in an out-of-order computer processor |
US20160378503A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | Techniques to wake-up dependent instructions for back-to-back issue in a microprocessor |
US10228951B1 (en) * | 2015-08-20 | 2019-03-12 | Apple Inc. | Out of order store commit |
US20190163483A1 (en) * | 2017-11-30 | 2019-05-30 | International Business Machines Corporation | Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor |
US20200057720A1 (en) * | 2018-08-14 | 2020-02-20 | Texas Instruments Incorporated | Prefetch management in a hierarchical cache system |
US20200065260A1 (en) * | 2018-08-27 | 2020-02-27 | Qualcomm Incorporated | Method, apparatus, and system for reducing pipeline stalls due to address translation misses |
US20200257632A1 (en) * | 2019-02-11 | 2020-08-13 | International Business Machines Corporation | Processor pipeline management during cache misses |
US20210124589A1 (en) * | 2019-10-23 | 2021-04-29 | Texas Instruments Incorporated | Event handling in pipeline execute stages |
CN114063923A (zh) * | 2021-11-17 | 2022-02-18 | 海光信息技术股份有限公司 | 数据读取方法、装置、处理器及电子设备 |
CN114327641A (zh) * | 2021-12-31 | 2022-04-12 | 海光信息技术股份有限公司 | 指令预取方法、指令预取装置、处理器及电子设备 |
CN115543938A (zh) * | 2021-06-30 | 2022-12-30 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115934583A (zh) * | 2022-11-16 | 2023-04-07 | 智慧星光(安徽)科技有限公司 | 分级缓存方法、装置及系统 |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
-
2023
- 2023-12-20 CN CN202311764013.1A patent/CN117453435B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7240160B1 (en) * | 2004-06-30 | 2007-07-03 | Sun Microsystems, Inc. | Multiple-core processor with flexible cache directory scheme |
CN101013361A (zh) * | 2006-02-02 | 2007-08-08 | 国际商业机器公司 | 处理异步流水线的数据高速缓存未命中乱序的装置和方法 |
US20140223143A1 (en) * | 2013-02-06 | 2014-08-07 | International Business Machines Corporation | Load latency speculation in an out-of-order computer processor |
US20160378503A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | Techniques to wake-up dependent instructions for back-to-back issue in a microprocessor |
US10228951B1 (en) * | 2015-08-20 | 2019-03-12 | Apple Inc. | Out of order store commit |
US20190163483A1 (en) * | 2017-11-30 | 2019-05-30 | International Business Machines Corporation | Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor |
US20200057720A1 (en) * | 2018-08-14 | 2020-02-20 | Texas Instruments Incorporated | Prefetch management in a hierarchical cache system |
US20200065260A1 (en) * | 2018-08-27 | 2020-02-27 | Qualcomm Incorporated | Method, apparatus, and system for reducing pipeline stalls due to address translation misses |
US20200257632A1 (en) * | 2019-02-11 | 2020-08-13 | International Business Machines Corporation | Processor pipeline management during cache misses |
US20210124589A1 (en) * | 2019-10-23 | 2021-04-29 | Texas Instruments Incorporated | Event handling in pipeline execute stages |
CN115543938A (zh) * | 2021-06-30 | 2022-12-30 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114063923A (zh) * | 2021-11-17 | 2022-02-18 | 海光信息技术股份有限公司 | 数据读取方法、装置、处理器及电子设备 |
CN114327641A (zh) * | 2021-12-31 | 2022-04-12 | 海光信息技术股份有限公司 | 指令预取方法、指令预取装置、处理器及电子设备 |
CN115934583A (zh) * | 2022-11-16 | 2023-04-07 | 智慧星光(安徽)科技有限公司 | 分级缓存方法、装置及系统 |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012788A (zh) * | 2024-04-09 | 2024-05-10 | 北京壁仞科技开发有限公司 | 数据处理器、数据处理方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117453435B (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10783364B2 (en) | Method, apparatus and device for waking up voice interaction function based on gesture, and computer readable medium | |
RU2637474C2 (ru) | Способ и устройство для управления фоновым приложением и терминальным устройством | |
WO2019024642A1 (zh) | 进程控制方法、装置、存储介质以及电子设备 | |
CN117453435B (zh) | 缓存数据读取方法、装置、设备及存储介质 | |
RU2663212C2 (ru) | Способ и устройство для запуска режима экономии энергии | |
CN111404836B (zh) | 数据传输控制方法、装置、控制中心、服务器及介质 | |
EP3112979A1 (en) | Method and device for waking up mcu | |
CN111966410B (zh) | 启动处理方法、装置、电子设备及存储介质 | |
US9678868B2 (en) | Method and device for optimizing memory | |
CN107608714B (zh) | 字节对齐方法、装置及计算机可读存储介质 | |
CN109062625B (zh) | 应用程序加载的方法、装置及可读存储介质 | |
CN107608744B (zh) | 一种应用进程管理方法及其装置、移动终端 | |
CN110910884B (zh) | 一种唤醒检测方法、装置和介质 | |
CN115469816B (zh) | 存储器的读写切换方法、装置、设备及存储介质 | |
CN107704489B (zh) | 读写超时的处理方法、装置及计算机可读存储介质 | |
CN117573573B (zh) | 缓存请求的处理方法、装置、设备及存储介质 | |
CN113360254A (zh) | 任务调度方法及系统 | |
CN117573572A (zh) | 重填数据的处理方法、装置、设备及存储介质 | |
CN110417987B (zh) | 一种操作响应方法、装置、设备和可读存储介质 | |
CN117111857B (zh) | 读取数据信息的方法、装置、设备及存储介质 | |
CN111240590A (zh) | 脏数据擦除方法、脏数据擦除装置及电子设备 | |
CN116679985B (zh) | 循环分支指令的处理方法、系统、装置、设备及存储介质 | |
CN111208910A (zh) | 一种云端联想方法和相关装置 | |
WO2023240453A1 (zh) | 网络切换方法及装置、存储介质 | |
CN111290851B (zh) | 一种信息处理方法、设备及存储介质 |
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 |