CN111399913A - 一种基于预取的处理器加速取指方法 - Google Patents

一种基于预取的处理器加速取指方法 Download PDF

Info

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
Application number
CN202010505312.3A
Other languages
English (en)
Other versions
CN111399913B (zh
Inventor
黄凯
金琳莉
蒋小文
王轲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202010505312.3A priority Critical patent/CN111399913B/zh
Publication of CN111399913A publication Critical patent/CN111399913A/zh
Application granted granted Critical
Publication of CN111399913B publication Critical patent/CN111399913B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation 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为低,不进行设定,预取步长不变为定值。
CN202010505312.3A 2020-06-05 2020-06-05 一种基于预取的处理器加速取指方法 Active CN111399913B (zh)

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)

* Cited by examiner, † Cited by third party
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 张维加 一种基于大数据的计算设备的缓存与预取加速方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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