CN102831078B - 一种cache中提前返回访存数据的方法 - Google Patents
一种cache中提前返回访存数据的方法 Download PDFInfo
- Publication number
- CN102831078B CN102831078B CN201210274732.0A CN201210274732A CN102831078B CN 102831078 B CN102831078 B CN 102831078B CN 201210274732 A CN201210274732 A CN 201210274732A CN 102831078 B CN102831078 B CN 102831078B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- return
- next stage
- returned
- 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
Abstract
一种cache中提前返回访存数据的方法,其流程为:(1)在核发出访存请求;(2)第一遍走cache流水线,发现cache不命中,则会向下一级cache或者存控发送读请求;(3)下一级cache和存控执行读操作,返回数据给cache;(4)将数据返回给核;(5)将响应返回的数据填充到cache。本发明能够大大提高访存速度、减小硬件开销。
Description
技术领域
本发明主要涉及到多核微处理器中的cache流水线设计领域,特指一种cache中提前返回访存数据的方法。
背景技术
在现代微处理器设计中,它的存储系统往往采用cache来减小访存延迟。在cache处理的访存指令中,主要包括load和store两类指令,其中处理器的执行对load类指令的延迟更加敏感。cache中如果load命中,则很快就能返回数据,如果不命中,则会有较长的延时。在高效微处理器设计中,为了使命中的访存指令早点返回,往往采用较短流水线,不命中的指令需要多次通过流水线才能完成,而多遍执行将导致不命中访存指令的执行时间过长。
如图1所示,为现有技术中cache不命中时的操作流程:1.核发出访存请求;2.第一遍走cache流水线,如发现cache不命中,就向下一级cache或者存控发送读请求;3.下一级cache和存控执行读操作,返回数据给cache;4.将响应返回的数据填充到cache;5.完成填充后,访存指令再走一遍流水线,直到命中,读取cache中的数据;6.将数据返回给核。
即,当第一遍发生不命中,就向存控(存储控制器)或者下一级cache发送读请求,随后如果没有空闲的Cache行,则发生替换;选择Cache中已经存在的一个Cache行写回内存,然后等存控或者下一级cache返回数据后,对cache进行填充,填充完以后重走流水线读出/写入数据,然后将数据或者Ack返回给核。在短流水线的cache中,不命中的访存请求至少走了三遍流水线,导致Cache不命中的访存延迟很大。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够大大提高访存速度、减小硬件开销的cache中提前返回访存数据的方法。
为解决上述技术问题,本发明采用以下技术方案:
一种cache中提前返回访存数据的方法,其流程为:
(1)在核发出访存请求;
(2)第一遍走cache流水线,发现cache不命中,则会向下一级cache或者存控发送读请求;
(3)下一级cache和存控执行读操作,返回数据给cache;
(4)将数据返回给核;
(5)将响应返回的数据填充到cache。
作为本发明的进一步改进:
首先在Cache中设置缓冲区MB,该缓冲区MB是一个CAM结构,它包含一个ID号和控制信息两个域;当核向cache发出访存请求时,会将没有命中的指令存放在缓冲区MB中,同时被存储的还有指令流经流水线所记录的需要返回的控制信息,它的ID域是cache向下一级cache发出的请求的ID号;
所述步骤(3)中,下一级cache的响应报文返回时,会根据响应报文的ID号查找缓冲区MB,从中读出缓冲区MB中的对应ID的控制信息,将响应报文的数据和读出的控制信息拼合成返回报文,返回给核。
与现有技术相比,本发明的优点在于:本发明的cache中提前返回访存数据的方法,原理简单、操作简便,能够解决不命中指令的执行时间过长的问题,从而大大提高了访存速度、减小了硬件开销。
附图说明
图1是现有技术中cache不命中时的操作流程示意图。
图2是本发明的流程示意图。
图3是本发明中cache返回报文的组装示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图2所示,当cache不命中时,本发明cache中提前返回访存数据的方法的流程为:
1.在核发出访存请求;
2.第一遍走cache流水线,发现cache不命中,则会向下一级cache或者存控发送读请求;
3.下一级cache和存控执行读操作,返回数据给cache;
4.将数据返回给核;
5.将响应返回的数据填充到cache。
即,当访存指令流经第一遍流水线时,记录响应的地址及控制信息,当数据从存控(MCU)或者下一级Cache返回时,会将数据立即返回给发出访问请求的核,而后将数据填充到cache。这样,就在数据/Ack返回过程中避免了后面的两遍流水线,从而大大提高了访存速度。在该数据返回,一直到数据填充到Cache中的时间段内,后续的指令需要修正其控制信息。
在具体应用实例中,本发明的具体流程为:
1、在Cache中设置缓冲区MB,该缓冲区MB是一个CAM结构,它包含一个ID号和控制信息两个域。核向cache发出访存请求时,会将没有命中的指令存放在缓冲区MB中,同时被存储的还有该指令流经流水线所记录的需要返回的控制信息,其ID域是cache向下一级cache发出的请求的ID号。
2、当下一级cache的响应报文返回时,会根据响应报文的ID号查找缓冲区MB,从中读出缓冲区MB中的对应ID的控制信息,将响应报文的数据和读出的控制信息拼合成返回报文,返回给核。
3、等待合适的时机将响应报文的数据填充到Cache。
如图3所示,为本发明具体应用实例中cache返回报文的组装示意图。在缓冲区MB中设置了CAM,在CAM中存放发出请求的ID号和cache返回报文所需要的控制信息。当下一级cache返回ID为2的响应报文时,会根据ID号读出控制信息control2,再与响应报文中的数据data2拼装成cache返回报文,将该报文返回给核。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (2)
1.一种cache中提前返回访存数据的方法,其特征在于,流程为:
(1)核发出访存请求;
(2)第一遍经过cache流水线,发现cache不命中,则会向下一级cache或者存储控制器发送读请求;当访存指令流经第一遍流水线时,记录响应的地址及控制信息;
(3)下一级cache和存控执行读操作,返回数据给cache;
(4)将数据返回给核;
(5)将响应返回的数据填充到cache。
2.根据权利要求1所述的cache中提前返回访存数据的方法,其特征在于:
首先在cache中设置缓冲区MB,该缓冲区MB是一个CAM结构,它包含一个ID号和控制信息两个域;当核向cache发出访存请求时,会将没有命中的指令存放在缓冲区MB中,同时被存储的还有指令流经流水线所记录的需要返回的控制信息,它的ID域是cache向下一级cache发出的请求的ID号;
所述步骤(3)中,下一级cache的响应报文返回时,会根据响应报文的ID号查找缓冲区MB,从中读出缓冲区MB中的对应ID的控制信息,将响应报文的数据和读出的控制信息拼合成返回报文,返回给核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210274732.0A CN102831078B (zh) | 2012-08-03 | 2012-08-03 | 一种cache中提前返回访存数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210274732.0A CN102831078B (zh) | 2012-08-03 | 2012-08-03 | 一种cache中提前返回访存数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102831078A CN102831078A (zh) | 2012-12-19 |
CN102831078B true CN102831078B (zh) | 2015-08-26 |
Family
ID=47334224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210274732.0A Active CN102831078B (zh) | 2012-08-03 | 2012-08-03 | 一种cache中提前返回访存数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102831078B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302374B (zh) | 2015-06-26 | 2019-08-16 | 深圳市中兴微电子技术有限公司 | 一种用于提高表项访问带宽和原子性操作的装置及方法 |
CN110889147B (zh) * | 2019-11-14 | 2022-02-08 | 中国人民解放军国防科技大学 | 一种利用填充缓存抵御Cache边信道攻击的方法 |
CN113778526B (zh) * | 2021-11-12 | 2022-02-22 | 北京微核芯科技有限公司 | 一种基于Cache的流水线的执行方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386526A (en) * | 1991-10-18 | 1995-01-31 | Sun Microsystems, Inc. | Cache memory controller and method for reducing CPU idle time by fetching data during a cache fill |
CN1252143A (zh) * | 1997-12-22 | 2000-05-03 | 皇家菲利浦电子有限公司 | 附加寄存器减少超高速缓存再充填期间的cpu空闲周期 |
US6526485B1 (en) * | 1999-08-03 | 2003-02-25 | Sun Microsystems, Inc. | Apparatus and method for bad address handling |
CN101013401A (zh) * | 2006-02-03 | 2007-08-08 | 国际商业机器公司 | 用于预取数据线的方法和处理器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080189487A1 (en) * | 2007-02-06 | 2008-08-07 | Arm Limited | Control of cache transactions |
-
2012
- 2012-08-03 CN CN201210274732.0A patent/CN102831078B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386526A (en) * | 1991-10-18 | 1995-01-31 | Sun Microsystems, Inc. | Cache memory controller and method for reducing CPU idle time by fetching data during a cache fill |
CN1252143A (zh) * | 1997-12-22 | 2000-05-03 | 皇家菲利浦电子有限公司 | 附加寄存器减少超高速缓存再充填期间的cpu空闲周期 |
US6526485B1 (en) * | 1999-08-03 | 2003-02-25 | Sun Microsystems, Inc. | Apparatus and method for bad address handling |
CN101013401A (zh) * | 2006-02-03 | 2007-08-08 | 国际商业机器公司 | 用于预取数据线的方法和处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN102831078A (zh) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103856567B (zh) | 基于Hadoop分布式文件系统的小文件存储方法 | |
CN103136121B (zh) | 一种固态盘的缓存管理方法 | |
CN101996250B (zh) | 一种基于Hadoop的海量流数据存储和查询方法及系统 | |
CN103678169B (zh) | 一种高效利用固态盘缓存的方法和系统 | |
US11210229B2 (en) | Method, device and computer program product for data writing | |
CN102831088A (zh) | 基于混合存储器的数据迁移方法和装置 | |
CN103885728A (zh) | 一种基于固态盘的磁盘缓存系统 | |
WO2012174888A1 (zh) | 一种分布式缓存系统中的数据写入及读取方法及装置 | |
CN102207916A (zh) | 一种基于指令预取的多核共享存储器控制设备 | |
CN104765575A (zh) | 信息存储处理方法 | |
CN102521419A (zh) | 分级存储的实现方法和系统 | |
CN102158349A (zh) | 一种日志管理装置及方法 | |
CN101344812B (zh) | 一种基于嵌入式系统的磁盘动态电源管理方法 | |
CN102831078B (zh) | 一种cache中提前返回访存数据的方法 | |
CN103916459A (zh) | 一种大数据归档存储系统 | |
CN104391653A (zh) | 一种基于数据块的高速缓存设计方法 | |
CN109117386A (zh) | 一种网络远程读写二级存储的系统及方法 | |
CN102779098B (zh) | 混合缓存的协同式自适应预取方法、装置和系统 | |
CN102841894A (zh) | 一种文件分配表的数据存储方法 | |
CN103150268A (zh) | 一种cdp中的块级数据捕获方法 | |
CN105260139A (zh) | 一种磁盘管理方法以及系统 | |
CN102929935A (zh) | 一种基于事务的大容量数据读写方法 | |
CN101221465A (zh) | 用于降低硬盘功耗的数据缓冲区实现方法 | |
CN102521161B (zh) | 一种数据的缓存方法、装置和服务器 | |
CN102567248A (zh) | 一种避免双端口存储器访问冲突的控制电路与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |