CN110990062B - 一种指令预取过滤方法 - Google Patents
一种指令预取过滤方法 Download PDFInfo
- Publication number
- CN110990062B CN110990062B CN201911184479.8A CN201911184479A CN110990062B CN 110990062 B CN110990062 B CN 110990062B CN 201911184479 A CN201911184479 A CN 201911184479A CN 110990062 B CN110990062 B CN 110990062B
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache
- prefetching
- cache line
- page
- 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
- 238000001914 filtration Methods 0.000 title claims abstract description 69
- 238000000034 method Methods 0.000 title claims abstract description 21
- 239000000872 buffer Substances 0.000 claims abstract description 34
- 239000013598 vector Substances 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
Images
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/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种指令预取过滤方法,在指令缓存和下一级存储***之间设置指令预取过滤装置,所述指令预取过滤装置包括若干条目的过滤缓冲,其中,每个条目的过滤缓冲对应一个基本页面,用于记录并追踪所述基本页面中已装入指令缓存的Cache行;每次指令流预取时直接查询所述指令预取过滤装置,以检验所预取的Cache行是否已经在指令缓存中,然后根据查询结果决定是否向下一级存储***发出指令预取请求。本发明可以避免指令预取查询与其他指令缓存相关操作争用端口,提升指令缓存利用率,进而提升处理器性能。
Description
技术领域
本发明涉及现代微处理器设计技术领域,特别是涉及一种指令预取过滤方法。
背景技术
现代高性能处理器中指令缓存是一种关键资源,取指流水线的设计主要围绕指令缓存进行。为提高指令缓存利用率,减少取指查询缺失,常采用指令预取技术将即将要用到的指令Cache行提前装入到指令缓存中。发出预取请求前首先要确定预取的Cache行是否已经在指令缓存中,因此需要使用预取地址查询指令缓存,若要预取的Cache行已被装入则不用发出预取请求。
高性能处理器中指令缓存容量较大,常采用定制阵列实现,指令Tag和指令数据因作用不同而划分为两个阵列,但读写端口数均有限。由于取指查询处于指令流水线关键路径上,每个周期都需要取指查询,而且高性能处理器通常要求指令数据的读取在1个周期内完成,因此取指查询常设置有专用端口,以保证取指查询不被干扰或者打断。除取指查询之外,指令缓存还要能同时处理一致性请求、预取查询、指令装填(写)、刷新等操作,这些操作相对取指查询而言不频繁,因此共用1个端口。为保证正常完成指令缓存的功能,预取查询的处理优先级最低,因此当出现指令缓存端口冲突时,可能无法发出预取请求,从而无法充分利用预取提升指令缓存的命中率。
综上所述,指令预取的处理受限于指令缓存的端口数,当和其他高优先级的请求冲突时不得不放弃预取。由于逻辑实现代价和物理实现开销方面的考虑,为指令Cache增设端口的做法并不合算。
发明内容
本发明所要解决的技术问题是提供一种指令预取过滤方法,避免预取查询与其他指令缓存操作争用端口,提升指令缓存利用率,进而提升处理器性能。
本发明解决其技术问题所采用的技术方案是:提供一种指令预取过滤方法,在指令缓存和下一级存储***之间设置指令预取过滤装置,所述指令预取过滤装置包括若干条目的过滤缓冲,其中,每个条目的过滤缓冲对应一个基本页面,用于记录并追踪所述基本页面中已装入指令缓存的Cache行;每次预取时直接查询所述指令预取过滤装置,以检验所预取的Cache行是否已经在指令缓存中,然后根据查询结果决定是否向下一级存储***发出指令预取请求。
所述每个条目的过滤缓冲设置有效位、虚拟页面基址、物理页面基址、进程号和线程号;每个条目的过滤缓冲还设置Cache行有效位向量作为页面中已装入的Cache行的指示标记,基本页面中的Cache行与有效位指示向量一一对应。
当触发指令预取时,使用预取页面基址查询所述指令预取过滤装置,若命中表示该页面已被装入,此时再用页内偏移值查看Cache行有效位向量,若该Cache行已被装入,不用发出预取,否则发出预取;若不命中,则该Cache行不在指令缓存中,发出预取;当预取发出时,根据之前的查询结果更新所述指令预取过滤装置的状态,若命中则将命中条目对应偏移处的Cache行有效位置起,否则分配一个新的过滤缓冲条目并置起对应位置的Cache行有效位,表示该Cache行已被装入。
在指令预取查询不命中时,预取目标所在基本页面尚未被装入,若操作***使用基本页面,且所述指令预取过滤装置缓冲深度和指令流TLB条目数相同时,利用指令预取过滤装置的查询结果进行指令流页表预取;若操作***使用大页或者指令预取过滤缓冲深度小于指令流TLB条目数时,使用所述指令预取过滤装置的预取查询结果作为触发指令流页表条目预取的条件。
若取指查询缺失,当指令缓存发起向下一级存储***的取指请求时,使用缺失的取指地址查询所述指令预取过滤装置,若命中则将命中条目对应偏移处的Cache行有效位置起,否则分配一个新的过滤缓冲条目并将对应位置的Cache行有效位进行标记,表示该Cache行已被装入。
每当装填指令缓存引发Cache行淘汰时,使用被淘汰的Cache行地址查询所述指令预取过滤装置,将命中页面中对应的Cache行有效位清0。
每当有刷新请求时,同步刷新所述指令预取过滤装置;对于指令缓存刷新,若是全刷新,则将所述指令预取过滤缓冲条目全部置无效;若是指令Cache行刷新,则使用刷新地址查询所述指令预取过滤装置,命中且对应的Cache行有效时,将其有效位清0,否则不做任何操作;对于指令流TLB刷新,使用刷新地址查询所述指令预取过滤装置,将命中页面的有效位清0。
每当有Cache一致性置无效请求时,使用该一致性请求地址同时查询指令缓存和所述指令预取过滤装置,命中指令缓存时,将命中的Cache行置无效,同时将指令预取过滤装置的命中条目中对应的Cache行有效位置无效;若不命中指令缓存时,不做任何操作。
有益效果
由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明可以实时追踪指令缓存中已装入的Cache行状态,解耦指令预取查询对指令缓存的依赖,因此可以方便地进行预取查询,过滤冗余预取,防止预取受到其他指令缓存操作的干扰而无法发出,从而提升指令缓存利用率。指令预取查询结果还可指导指令流页表条目的预取,以降低指令流缺页次数,进一步提升处理器性能。另外,本发明按照基本页面组织管理,页内只对应一个有效位向量,虽然和指令缓存的同步操作存在一些开销,但实现较为简单。
附图说明
图1是本发明中指令预取过滤装置在***中的位置示意图;
图2是本发明中指令预取过滤装置的查询流程图;
图3是本发明中指令预取过滤装置指导指令流TLB预取的示意图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明的实施方式涉及一种指令预取过滤方法,在指令缓存和下一级存储***之间设置指令预取过滤装置,所述指令预取过滤装置和指令缓存以及下一级存储***交互密切,其在***中的位置如图1所示。所述指令预取过滤装置以基本页面为单位进行组织管理,设置有若干条目的过滤缓冲。每个条目的过滤缓冲对应一个基本页面,用于记录并追踪所述基本页面中已装入指令缓存的Cache行,整个指令预取过滤装置记录了所有已装入指令缓存的Cache行。所述指令预取过滤装置采用全相联结构,每次预取时直接查询该指令预取过滤装置,以检验所预取的Cache行是否已经在指令缓存中,然后根据查询结果决定是否向二级Cache或者下一级存储体发出指令预取请求。
本实施方式中的指令预取过滤装置的过滤缓冲条目内容的设置如表1所示。每个条目的过滤缓冲均设置有效位,表示当前页面是否已被装入;每个条目的过滤缓冲记录有所装入页面的虚拟页面基址、进程号、线程号、物理页面基址等信息,以便预取查询、指令缓存淘汰查询、刷新查询和Cache一致性请求查询时的命中判断;每个条目的过滤缓冲还设置有Cache行有效位向量ValidVec作为页面中已装入的Cache行的指示标记,基本页面包含多少个Cache行,有效位指示向量就有多少位,且和Cache行一一对应。假设基本页面大小为4KB,Cache行大小为128B,则Cache行有效位向量ValidVec共有32位。
表1指令预取过滤装置的过滤缓冲条目内容表
所述指令预取过滤装置的查询判断流程如图2所示,首先根据查询请求携带的地址类型进行相应的命中判断。若是虚地址则需比较虚页面基址VPageTag、进程号UPN和线程号Tid,若是物理地址则只需比较物理页面基址PPageTag,若以上内容匹配且条目有效,则为命中。若不命中,则所查询的Cache行一定不在指令缓存中,若命中则需根据页内偏移值在命中条目中查询Cache行有效位向量ValidVec,若对应位置的Cache行有效位标记有效,则所查询的Cache行在指令缓存中,否则说明该Cache行尚未装入指令缓存。
预取请求成功发向下一级存储***后,需要将预取的Cache行登记到所述指令预取过滤装置中。根据之前的查询结果,若不命中所述指令预取过滤装置的预取请求则要新分配一个缓冲条目。此时若有空闲条目则可以直接分配,否则使用LRU算法淘汰一个条目。缓冲条目分配后,填写预取Cache行的虚页面地址、进程号、线程号、物理页面地址(物理页面地址通过查询指令TLB获得),置起有效位,并将ValidVec中相应位置的Cache行有效位置起。若预取查询命中过滤缓冲,则直接将命中条目ValidVec中相应位置的Cache行有效位置起,表示该Cache行已被装入。
所述指令预取过滤装置的预取查询结果可用于指导指令流页表条目的预取,如图3所示。当指令预取查询不命中时,说明对应的基本页面没有装入所述指令预取过滤装置中。若操作***使用的就是基本页面,且所述指令预取过滤装置缓冲深度和指令流TLB条目数相同,则后续取指访问所预取的Cache行时,必定发生缺页异常。这种情况下,所述指令预取过滤装置不仅追踪已装入的指令缓存行,且记录了已装入的指令流页表条目,因此可以使用所述指令预取过滤装置的预取查询结果,进行指令流页表条目的预取。当操作***使用大页模式时,一个页表条目可能对应多个基本页面。当指令预取查询不命中时,虽然对应的基本页面没有装入所述指令预取过滤装置,但不代表对应的页表没有装入指令流TLB中,后续取指访问所预取的Cache行时不一定会发生缺页异常,但仍可使用所述指令预取过滤装置的预取查询结果,作为触发指令流页表条目预取的条件。
由此可见,对于预取查询过滤缓冲不命中的情况,预取Cache行所在的基本页面尚未被装入,此时可以根据具体需要和实现,利用指令预取过滤装置的查询结果进行页面预取,以降低指令流缺页次数,进一步提升处理器性能。
由于指令预取过滤缓冲追踪记录指令缓存中所有已装入的Cache行,因此当影响指令缓存状态的操作(包括装填、淘汰、一致性置无效请求以及刷新)执行时,要同步更新指令预取过滤缓冲,时刻保证二者状态一致。因此运行时所述指令预取过滤装置和指令缓存始终保持同步,实时指示指令缓存中已装入的Cache行。指令缓存和指令预取过滤装置之间的同步操作包括,取指缺失登记、淘汰Cache行同步、刷新同步和Cache一致性同步操作。
每当取指查询缺失时,该Cache行不在指令缓存中,也一定不在指令预取过滤装置中。当指令缓存发起向下级存储***的取指请求时,使用缺失的取指地址查询所述指令预取过滤装置,若命中则将命中条目的ValidVec对应偏移处的Cache行有效位置起,否则分配一个新的过滤缓冲条目并将ValidVec中对应位置的Cache行有效位置1,表示该Cache行已被装入。分配时若有空闲条目则可直接分配,否则使用LRU算法替换一个条目。
每当装填指令缓存引发Cache行淘汰时,使用被淘汰的Cache行物理地址查询所述指令预取过滤装置,此时一定命中,将命中页面中ValidVec对应的Cache行有效位清0。
每当有Cache一致性置无效请求时,使用该一致性请求地址同时查询指令缓存和所述指令预取过滤装置,来自下一级存储***的Cache一致性请求均使用物理地址。命中指令缓存时,将命中的Cache行置无效,此时也必定命中所述指令预取过滤装置,将命中条目中ValidVec对应的Cache行有效位置无效;否则若不命中指令缓存时,不做任何操作。
每当有刷新请求时,无论是指令缓存刷新或者指令流TLB刷新,同步刷新所述指令预取过滤装置,刷新一般采用虚地址。对于指令缓存刷新,若是全刷新,则将所述指令预取过滤缓冲条目全部置无效;若是指令Cache行刷新,则使用刷新地址查询所述指令预取过滤装置,命中且对应的Cache行有效时,将其有效位清0,否则不做任何操作。对于指令流TLB刷新,使用刷新地址查询所述指令预取过滤装置,大页模式下可能命中多个页面,将所有命中页面的有效位清0。
不难发现,本发明可以实时追踪指令缓存中已装入的Cache行状态,解耦指令预取查询对指令缓存的依赖,因此可以方便地进行预取查询,过滤冗余预取,防止预取受到其他指令缓存操作的干扰而无法发出,从而提升指令缓存利用率。指令预取查询结果还可指导指令流页表条目的预取,以降低指令流缺页次数,进一步提升处理器性能。另外,本发明按照基本页面组织管理,页内只对应一个有效位向量,虽然和指令缓存的同步操作存在一些开销,但实现较为简单。
Claims (8)
1.一种指令预取过滤方法,其特征在于,在指令缓存和下一级存储***之间设置指令预取过滤装置,所述指令预取过滤装置包括若干条目的过滤缓冲,其中,每个条目的过滤缓冲对应一个基本页面,用于记录并追踪所述基本页面中已装入指令缓存的Cache行;每次预取时直接查询所述指令预取过滤装置,以检验所预取的Cache行是否已经在指令缓存中,然后根据查询结果决定是否向下一级存储***发出指令预取请求。
2.根据权利要求1所述的指令预取过滤方法,其特征在于,所述每个条目的过滤缓冲设置有效位、虚拟页面基址、物理页面基址、进程号和线程号;每个条目的过滤缓冲还设置Cache行有效位向量作为页面中已装入的Cache行的指示标记,基本页面中的Cache行与有效位指示向量一一对应。
3.根据权利要求1所述的指令预取过滤方法,其特征在于,当触发指令预取时,使用预取页面基址查询所述指令预取过滤装置,若命中表示该页面已被装入,此时再用页内偏移值查看Cache行有效位向量,若该Cache行已被装入,不用发出预取,否则发出预取;若不命中,则该Cache行不在指令缓存中,发出预取;当预取发出时,根据之前的查询结果更新所述指令预取过滤装置的状态,若命中则将命中条目对应偏移处的Cache行有效位置起,否则分配一个新的过滤缓冲条目并置起对应位置的Cache行有效位,表示该Cache行已被装入。
4.根据权利要求3所述的指令预取过滤方法,其特征在于,在指令预取查询不命中时,预取目标所在基本页面尚未被装入,若操作***使用基本页面,且所述指令预取过滤装置缓冲深度和指令流TLB条目数相同时,利用指令预取过滤装置的查询结果进行指令流页表预取;若操作***使用大页或者指令预取过滤缓冲深度小于指令流TLB条目数时,使用所述指令预取过滤装置的预取查询结果作为触发指令流页表条目预取的条件。
5.根据权利要求1所述的指令预取过滤方法,其特征在于,若取指查询缺失,当指令缓存发起向下一级存储***的取指请求时,使用缺失的取指地址查询所述指令预取过滤装置,若命中则将命中条目对应偏移处的Cache行有效位置起,否则分配一个新的过滤缓冲条目并将对应位置的Cache行有效位进行标记,表示该Cache行已被装入。
6.根据权利要求1所述的指令预取过滤方法,其特征在于,每当装填指令缓存引发Cache行淘汰时,使用被淘汰的Cache行地址查询所述指令预取过滤装置,将命中页面中对应的Cache行有效位清0。
7.根据权利要求1所述的指令预取过滤方法,其特征在于,每当有刷新请求时,同步刷新所述指令预取过滤装置;对于指令缓存刷新,若是全刷新,则将所述指令预取过滤缓冲条目全部置无效;若是指令Cache行刷新,则使用刷新地址查询所述指令预取过滤装置,命中且对应的Cache行有效时,将其有效位清0,否则不做任何操作;对于指令流TLB刷新,使用刷新地址查询所述指令预取过滤装置,将命中页面的有效位清0。
8.根据权利要求1所述的指令预取过滤方法,其特征在于,每当有Cache一致性置无效请求时,使用该一致性请求地址同时查询指令缓存和所述指令预取过滤装置,命中指令缓存时,将命中的Cache行置无效,同时将指令预取过滤装置的命中条目中对应的Cache行有效位置无效;若不命中指令缓存时,不做任何操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911184479.8A CN110990062B (zh) | 2019-11-27 | 2019-11-27 | 一种指令预取过滤方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911184479.8A CN110990062B (zh) | 2019-11-27 | 2019-11-27 | 一种指令预取过滤方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990062A CN110990062A (zh) | 2020-04-10 |
CN110990062B true CN110990062B (zh) | 2023-03-28 |
Family
ID=70087542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911184479.8A Active CN110990062B (zh) | 2019-11-27 | 2019-11-27 | 一种指令预取过滤方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990062B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3811140B2 (ja) * | 2003-05-12 | 2006-08-16 | 株式会社日立製作所 | 情報処理装置 |
US7707396B2 (en) * | 2006-11-17 | 2010-04-27 | International Business Machines Corporation | Data processing system, processor and method of data processing having improved branch target address cache |
CN102446087B (zh) * | 2010-10-12 | 2014-02-26 | 无锡江南计算技术研究所 | 指令预取方法与预取装置 |
CN104252425B (zh) * | 2013-06-28 | 2017-07-28 | 华为技术有限公司 | 一种指令缓存的管理方法和处理器 |
-
2019
- 2019-11-27 CN CN201911184479.8A patent/CN110990062B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110990062A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314647B2 (en) | Methods and systems for managing synonyms in virtually indexed physically tagged caches | |
US11360905B2 (en) | Write merging on stores with different privilege levels | |
US10248572B2 (en) | Apparatus and method for operating a virtually indexed physically tagged cache | |
US10019369B2 (en) | Apparatuses and methods for pre-fetching and write-back for a segmented cache memory | |
US10380030B2 (en) | Caching of virtual to physical address translations | |
US20030217230A1 (en) | Preventing cache floods from sequential streams | |
US9524232B2 (en) | Inter-core cooperative TLB prefetchers | |
US20030200404A1 (en) | N-way set-associative external cache with standard DDR memory devices | |
US20160140042A1 (en) | Instruction cache translation management | |
EP1196850A1 (en) | Techniques for improving memory access in a virtual memory system | |
US6175906B1 (en) | Mechanism for fast revalidation of virtual tags | |
EP2866148B1 (en) | Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device | |
US7117312B1 (en) | Mechanism and method employing a plurality of hash functions for cache snoop filtering | |
US7325102B1 (en) | Mechanism and method for cache snoop filtering | |
EP0752662A1 (en) | Method and apparatus for tagging a multi-way associative cache | |
US10853262B2 (en) | Memory address translation using stored key entries | |
US20140289469A1 (en) | Processor and control method of processor | |
US20220398198A1 (en) | Tags and data for caches | |
US10831673B2 (en) | Memory address translation | |
CN110990062B (zh) | 一种指令预取过滤方法 | |
JPH086852A (ja) | キャッシュ制御方法 | |
CN111198827B (zh) | 页表预取方法及装置 | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
WO2000045270A1 (en) | Techniques for improving memory access in a virtual memory system |
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 |