CN111399913A - 一种基于预取的处理器加速取指方法 - Google Patents
一种基于预取的处理器加速取指方法 Download PDFInfo
- Publication number
- CN111399913A CN111399913A CN202010505312.3A CN202010505312A CN111399913A CN 111399913 A CN111399913 A CN 111399913A CN 202010505312 A CN202010505312 A CN 202010505312A CN 111399913 A CN111399913 A CN 111399913A
- Authority
- CN
- China
- Prior art keywords
- buffer
- prefetch
- request
- memory
- address
- 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 28
- 239000000872 buffer Substances 0.000 claims abstract description 105
- 230000015654 memory Effects 0.000 claims abstract description 41
- 230000006870 function Effects 0.000 claims abstract description 8
- 238000012935 Averaging Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 2
- 230000037430 deletion Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 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
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)
- Advance Control (AREA)
Abstract
本发明涉及存储器领域,公开了一种基于预取的处理器加速取指方法,首先确定Buffer的位宽和数量,再通过Buffer实现预取,以使存储器在未被访问,即空闲时,Buffer能自动改变地址,发起对存储器的读请求,进而将新的未来可能用到的数据读入Buffer,减少未来处理器取指的等待时间。本发明简单高效,与一般利用Buffer的做法相比,本发明的Buffer还能实现位宽协调的作用。
Description
技术领域
本发明涉及存储器领域,尤其涉及一种基于预取的处理器加速取指方法。
背景技术
处理器和存储器作为集成电路的重要组成部分,对系统的性能有着重要影响。而随着工艺和技术的进步,处理器和存储器之间的频率差异日渐增大,导致处理器对存储器的访问存在延迟,如CPU从Flash中取指时,往往需等待一段时间。这一现象在高频条件下尤为严重,成为提升芯片整体性能的重要阻碍。
为了缓解处理器高频取指和存储器慢速访问之间的矛盾,即达到处理器访问存储器时加速的目的,Cache(高速缓冲存储器/缓存)和Buffer(缓冲)因其可被快速访问的特点得到了广泛应用。
Cache和Buffer都由SRAM(Static Random-Access Memory,静态随机存取存储器)构成。虽然SRAM不能在掉电时保存数据,但访问速度很快。同时需要注意,SRAM成本较高,这也是它不能成为大容量主存的原因之一。
对于Cache,一般容量越大,性能越好,仅当容量超过一定值,才会有容量越大、性能越低的情况;对于Buffer,并非如此,一般只需根据实际情况取合适大小即可,增大容量对性能提升影响不明显,还会增大硬件开销。一般而言,Buffer中的数据会在短时间内被访问,而Cache则作为一个数据的长期容器,其中的数据不一定非要被立刻访问。相较而言,Cache的使用更加复杂,除了大小的设定,包括块容量和整体容量,还需要进行映射结构、替换策略的选择。对于Cache,若数据第一次读入后再也用不到了,则效果较差;对于Buffer,只要数据被用到一次,就是成功的。
虽然Cache和Buffer从物理上看都为SRAM,但通常二者并不通用,分别用于不同的加速策略。前者一般用于为预取,主要针对处理器的顺序取指;后者多用于分支缓存,主要针对指令跳转的情况。
目前针对不同的应用场景,存在的预取方法较多。在部分利用Cache进行实现的方法中,由于Cache的特性,至少需要确定大小、映射结构及替换算法等要素,此过程会比较复杂,或是通过多次改变配置进行测试结果的比较,或是利用一些附加模块实现自适应的配置,这自然会增加算法的复杂性及系统开销。在利用Buffer实现的方法中,部分利用代码控制预取的开关,则当未运行到开启预取的代码之前,处理器取指仍可能需要较长的等待时间,部分结合了一些其他领域的知识,如机器学习,也有的方法提供多模式、自适应选择算法的预取,这些方法虽然取得了较好的效果,但都增加了许多模块,大大增加系统的复杂性与开销。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提出一种基于预取的处理器加速取指方法,其具体技术方案如下。
一种基于预取的处理器加速取指方法,包括如下步骤:步骤一,通过比较总线和存储器的位宽,取二者相比较大的位宽来作为Buffer的位宽,根据处理器的取指存在跳转情况,取2个Buffer,即Buffer0和Buffer1;步骤二,协调总线和存储器的位宽,将存储器中取出的数据存放在Buffer中,所述Buffer再根据偏移地址确定返回的数据,进行选择性预取,当预取使能位prefetch_en为高,拼接总线和存储器的位宽并预取,反之只进行预取操作。
进一步的,在预取操作的过程中对所述Buffer进行内容有效性判断,具体为:为Buffer设置有效位,当Buffer为空或发生缺失时,有效位为低;当对存储器发起新的读取数据请求,将数据写入Buffer,有效位为高;当连续两次访问同一个Buffer且两次地址不匹配,根据顺序取指的假设得到第二次对Buffer的访问为缺失,同时另一个Buffer中的数据失效。
进一步的,在预取操作的过程中对所述Buffer进行请求命中的判断,具体为:当Buffer内容有效且Buffer地址与请求地址匹配,则对Buffer的访问为命中;反之发生Buffer的缺失。
进一步的,当对Buffer的访问未命中,则以当前请求地址向存储器发起访问,处理完该次请求后,若无新的缺失请求,且预取功能未被关闭、相邻Buffer内容有效位为低,则请求地址以设定的步长递增,读出存储器中的下一数据存入Buffer。
进一步的,所述预取通过状态机实现,具体为:
在任意状态,都优先检查是否有新的请求到来且未命中,此时下一状态为Buffer缺失的读,然后根据预取功能的开启及Buffer的有效位确定是否递增地址,向存储器发起新的请求,并将数据读入Buffer;
当预取步长为奇数,2个Buffer分别存奇数与偶数地址的数据,对于地址确定的请求,访问的Buffer是确定的,地址比较时只需根据最后一位地址是0或1进行Buffer的地址比较;
当预取步长为偶数,请求的地址同时与2个Buffer的地址进行比较,若缺失,则2个Buffer的内容都更新,此时总是将目标数据从存储器读出后存入Buffer0,并在没有新的缺失请求的条件下更新Buffer1。
进一步的,所述预取步长由使能位step_adapt控制的自适应改变,所述使能位step_adapt协同参数N、X一起配置;若使能位step_adapt为高,记录N次访问内未命中Buffer的次数,并记录N次访问的第一和最后一次的请求地址,若未命中次数大于X次,计算两个地址的差值,并除以N,向下取整作为新的预取步长,这亦即取N次访问中(N-1)个地址的差值并求平均;若使能位step_adapt为低,不进行设定,预取步长不变为定值。
有益效果:
本发明简单高效,与一般利用Buffer的做法相比,本发明的Buffer还能实现位宽协调的作用。
附图说明
图1为本发明的确定Buffer的大小的方法框图;
图2为本发明的Buffer的作用示意图;
图3为本发明的判断Buffer内容有效性的示意图;
图4为本发明的预取状态机示意图;
图5为本发明的预取流程图;
图6为本发明的确定预取步长示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步详细说明。
如图1所示,一种基于预取的处理器加速取指方法,首先确定Buffer的大小和数量,具体为:考虑到性能与开销,比较存储器和总线的位宽,取二者相比较大的位宽为一个Buffer的大小;因Buffer数量过少则替换频率高,效果不明显,数量增多也并不必定导致性能的提升,但一定增加开销,同时考虑到处理器的取指会存在跳转情况,进而造成预取内容的浪费,故取2个,即Buffer0和Buffer1。
如图2所示,Buffer可在实现位宽协调的基础上,选择性实现预取;因总线和存储器位宽不一致,使用时需协调二者的位宽,如总线位宽为32比特,存储器位宽为128比特,二者位宽不一致,从存储器中取出的数据不能直接返回给总线,应先存放在Buffer中,再根据偏移地址确定返回的数据,当预取使能位prefetch_en为高,Buffer可进一步发挥预取的作用。
如图3所示,在预取过程中,为Buffer设置有效位,当Buffer为空或发生缺失时,有效位为低,当对存储器发起新的读取请求,将数据写入Buffer,有效位为高;当连续两次访问同一个Buffer且两次地址不同,由顺序取指的假设可知,第二次对Buffer的访问必为缺失,同时另一个Buffer中的数据也会失效;当Buffer内容有效且Buffer地址与请求地址匹配,则为Buffer的命中,否则发生Buffer的缺失;当请求未命中Buffer,需以当前的请求地址向存储器发起访问,处理完此次请求后,若无新的缺失请求,且预取功能未被关闭、相邻Buffer内容无效,则地址以设定的步长递增,读出存储器中的下一数据存入Buffer。
如图4所示,所述预取通过状态机实现,具体为:
在任意状态,都优先检查是否有新的请求到来且未命中,此时下一状态为Buffer缺失的读,之后根据预取功能的开启及Buffer的有效位确定是否递增地址,向存储器发起新的请求,并将数据读入Buffer。
若预取步长为奇数,如1,显然两个Buffer分别存奇数与偶数地址的数据,对于一个地址确定的请求,访问的Buffer是确定的,故地址比较时,无需同时与两个Buffer的地址进行比较,只需根据最后一位地址是0或1进行某一Buffer的地址比较。
如图5所示,当预取步长为偶数,请求的地址需同时与两个Buffer的地址进行比较,若缺失,则两个Buffer的内容都需要更新,此时总是将目标数据从存储器读出后存入Buffer0,并在没有新的缺失请求的条件下更新Buffer1。
如图6所示,一种由使能位step_adapt控制的自适应改变预取步长的方法,所述使能位step_adapt需协同两位参数N、X一起配置;若使能位step_adapt为高,需记录N次访问内未命中Buffer的次数,并记录N次访问的第一和最后一次的请求地址,若未命中次数大于X次,计算两个地址的差值,并除以N,向下取整作为新的预取步长,这亦相当于取N次访问中(N-1)个地址的差值并求平均;若使能位step_adapt为低,不进行设定,预取步长不变为定值。
Claims (6)
1.一种基于预取的处理器加速取指方法,其特征在于,包括如下步骤:步骤一,通过比较总线和存储器的位宽,取二者相比较大的位宽来作为Buffer的位宽,根据处理器的取指存在跳转情况,取2个Buffer,即Buffer0和Buffer1;步骤二,协调总线和存储器的位宽,将存储器中取出的数据存放在Buffer中,所述Buffer再根据偏移地址确定返回的数据,进行选择性预取,当预取使能位prefetch_en为高,拼接总线和存储器的位宽并预取,反之只进行预取操作。
2.如权利要求1所述的一种基于预取的处理器加速取指方法,其特征在于,在预取操作的过程中对所述Buffer进行内容有效性判断,具体为:为Buffer设置有效位,当Buffer为空或发生缺失时,有效位为低;当对存储器发起新的读取数据请求,将数据写入Buffer,有效位为高;当连续两次访问同一个Buffer且两次地址不匹配,根据顺序取指的假设得到第二次对Buffer的访问为缺失,同时另一个Buffer中的数据失效。
3.如权利要求2所述的一种基于预取的处理器加速取指方法,其特征在于,在预取操作的过程中对所述Buffer进行请求命中的判断,具体为:当Buffer内容有效且Buffer地址与请求地址匹配,则对Buffer的访问为命中;反之发生Buffer的缺失。
4.如权利要求3所述的一种基于预取的处理器加速取指方法,其特征在于,当对Buffer的访问未命中,则以当前请求地址向存储器发起访问,处理完该次请求后,若无新的缺失请求,且预取功能未被关闭、相邻Buffer内容有效位为低,则请求地址以设定的步长递增,读出存储器中的下一数据存入Buffer。
5.如权利要求4所述的一种基于预取的处理器加速取指方法,其特征在于,所述预取通过状态机实现,具体为:
在任意状态,都优先检查是否有新的请求到来且未命中,此时下一状态为Buffer缺失的读,然后根据预取功能的开启及Buffer的有效位确定是否递增地址,向存储器发起新的请求,并将数据读入Buffer;
当预取步长为奇数,2个Buffer分别存奇数与偶数地址的数据,对于地址确定的请求,访问的Buffer是确定的,地址比较时只需根据最后一位地址是0或1进行Buffer的地址比较;
当预取步长为偶数,请求的地址同时与2个Buffer的地址进行比较,若缺失,则2个Buffer的内容都更新,此时总是将目标数据从存储器读出后存入Buffer0,并在没有新的缺失请求的条件下更新Buffer1。
6.如权利要求5所述的一种基于预取的处理器加速取指方法,其特征在于,所述预取步长由使能位step_adapt控制的自适应改变,所述使能位step_adapt协同参数N、X一起配置;若使能位step_adapt为高,记录N次访问内未命中Buffer的次数,并记录N次访问的第一和最后一次的请求地址,若未命中次数大于X次,计算两个地址的差值,并除以N,向下取整作为新的预取步长,这亦即取N次访问中(N-1)个地址的差值并求平均;若使能位step_adapt为低,不进行设定,预取步长不变为定值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010505312.3A CN111399913B (zh) | 2020-06-05 | 2020-06-05 | 一种基于预取的处理器加速取指方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010505312.3A CN111399913B (zh) | 2020-06-05 | 2020-06-05 | 一种基于预取的处理器加速取指方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111399913A true CN111399913A (zh) | 2020-07-10 |
CN111399913B CN111399913B (zh) | 2020-09-01 |
Family
ID=71431921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010505312.3A Active CN111399913B (zh) | 2020-06-05 | 2020-06-05 | 一种基于预取的处理器加速取指方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111399913B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1413953A2 (en) * | 2002-10-22 | 2004-04-28 | Fujitsu Limited | Instruction prefetch method and apparatus for conditional branch instructions |
CN101013401A (zh) * | 2006-02-03 | 2007-08-08 | 国际商业机器公司 | 用于预取数据线的方法和处理器 |
CN100359464C (zh) * | 2002-04-09 | 2008-01-02 | 智慧第一公司 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
CN101548266A (zh) * | 2006-12-08 | 2009-09-30 | 高通股份有限公司 | 用于低复杂性指令预取系统的方法和设备 |
CN104320448A (zh) * | 2014-10-17 | 2015-01-28 | 张维加 | 一种基于大数据的计算设备的缓存与预取加速方法和装置 |
-
2020
- 2020-06-05 CN CN202010505312.3A patent/CN111399913B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100359464C (zh) * | 2002-04-09 | 2008-01-02 | 智慧第一公司 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
EP1413953A2 (en) * | 2002-10-22 | 2004-04-28 | Fujitsu Limited | Instruction prefetch method and apparatus for conditional branch instructions |
CN101013401A (zh) * | 2006-02-03 | 2007-08-08 | 国际商业机器公司 | 用于预取数据线的方法和处理器 |
CN101548266A (zh) * | 2006-12-08 | 2009-09-30 | 高通股份有限公司 | 用于低复杂性指令预取系统的方法和设备 |
CN104320448A (zh) * | 2014-10-17 | 2015-01-28 | 张维加 | 一种基于大数据的计算设备的缓存与预取加速方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111399913B (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102369500B1 (ko) | 데이터 처리장치에서의 적응형 예비 인출 | |
US7917701B2 (en) | Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation | |
US6219760B1 (en) | Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line | |
US9292447B2 (en) | Data cache prefetch controller | |
US6560679B2 (en) | Method and apparatus for reducing power consumption by skipping second accesses to previously accessed cache lines | |
CN109918131B (zh) | 一种基于非阻塞指令cache的指令读取方法 | |
CN115617712A (zh) | 一种基于组相联高速缓存Cache的LRU替换算法 | |
CN114925001A (zh) | 处理器、页表预取方法、电子设备 | |
CN111639042B (zh) | 一种预取buffer数据一致性的处理方法及装置 | |
CN111399913B (zh) | 一种基于预取的处理器加速取指方法 | |
CN112711383B (zh) | 用于电力芯片的非易失性存储读取加速方法 | |
CN115563031A (zh) | 指令高速缓存的预取控制方法、装置、芯片及存储介质 | |
CN114625674A (zh) | 预驱指令架构与预驱指令架构的预取方法 | |
US9645825B2 (en) | Instruction cache with access locking | |
JP5116275B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
US6742102B2 (en) | Microprocessor and cache controlling method | |
CN111475203B (zh) | 一种用于处理器的指令读取方法以及相应的处理器 | |
US6904500B2 (en) | Cache controller | |
CN111198827B (zh) | 页表预取方法及装置 | |
KR100481943B1 (ko) | 시간적·공간적 지역성을 향상시키고 플레쉬 메모리장치로의 접근 횟수를 줄이는 플레쉬 메모리 시스템 및데이터 억세스 방법 | |
JP4037806B2 (ja) | キャッシュメモリ装置 | |
JPH0477344B2 (zh) | ||
CN116700794A (zh) | 一种获取待执行指令的方法及系统 | |
CN116627335A (zh) | 一种低功耗eFlash的读取加速系统 | |
KR100456215B1 (ko) | 블럭 버퍼링을 사용하는 캐쉬 메모리 장치 및 그 제어방법 |
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 |